colleges.js
Version:
A module that gives data about colleges around the world
659 lines (555 loc) • 20.2 kB
CSS
:root {
--va-border-width: 2px;
--va-border-color: var(--va-text-normal);
--va-font-size-ratio: 1;
--va-font-size-00: calc(0.5rem * var(--va-font-size-ratio));
--va-font-size-0: calc(0.75rem * var(--va-font-size-ratio));
--va-font-size-1: calc(1rem * var(--va-font-size-ratio));
--va-font-size-2: calc(1.1rem * var(--va-font-size-ratio));
--va-font-size-3: calc(1.25rem * var(--va-font-size-ratio));
--va-font-size-4: calc(1.5rem * var(--va-font-size-ratio));
--va-font-size-5: calc(2rem * var(--va-font-size-ratio));
--va-font-size-6: calc(2.5rem * var(--va-font-size-ratio));
--va-font-size-7: calc(3rem * var(--va-font-size-ratio));
--va-font-size-8: calc(3.5rem * var(--va-font-size-ratio));
--va-space-ratio: 1;
--va-space-000: calc(-0.5rem * var(--va-space-ratio));
--va-space-00: calc(-0.25rem * var(--va-space-ratio));
--va-space-1: calc(0.25rem * var(--va-space-ratio));
--va-space-2: calc(0.5rem * var(--va-space-ratio));
--va-space-3: calc(0.75rem * var(--va-space-ratio));
--va-space-4: calc(1rem * var(--va-space-ratio));
--va-space-5: calc(1.25rem * var(--va-space-ratio));
--va-space-6: calc(1.5rem * var(--va-space-ratio));
--va-space-7: calc(1.75rem * var(--va-space-ratio));
--va-space-8: calc(2rem * var(--va-space-ratio));
--va-space-9: calc(3rem * var(--va-space-ratio));
--va-space-10: calc(4rem * var(--va-space-ratio));
--va-space-11: calc(5rem * var(--va-space-ratio));
--va-space-12: calc(7.5rem * var(--va-space-ratio));
--va-space-13: calc(10rem * var(--va-space-ratio));
--va-space-14: calc(15rem * var(--va-space-ratio));
--va-space-15: calc(20rem * var(--va-space-ratio));
--va-color-primary: mediumvioletred;
--va-color-foreground: black;
--va-color-background: white;
--va-background-primary: var(--va-color-background);
--va-text-normal: var(--va-color-foreground);
--va-text-weak: color-mix(in srgb, var(--va-text-normal) 20%, transparent);
--va-surface-primary: color-mix(
in srgb,
var(--va-background-primary) 80%,
transparent
);
--va-surface-primary-alt: color-mix(
in srgb,
var(--va-background-primary) 80%,
var(--va-color-foreground)
);
}
@media (prefers-color-scheme: dark) {
:root {
--va-color-foreground: white;
--va-color-background: black;
}
}
.va-button-group:not(.va-button-group--horizontal) > :not([hidden]) ~ :not([hidden]) {
--tw-space-y-reverse: 0;
margin-top: calc(calc(var(--va-border-width) * -1) * calc(1 - var(--tw-space-y-reverse)));
margin-bottom: calc(calc(var(--va-border-width) * -1) * var(--tw-space-y-reverse));
}
.va-button-group\--horizontal {
display: flex;
}
.va-button-group\--horizontal > :not([hidden]) ~ :not([hidden]) {
--tw-space-x-reverse: 0;
margin-right: calc(calc(var(--va-border-width) * -1) * var(--tw-space-x-reverse));
margin-left: calc(calc(var(--va-border-width) * -1) * calc(1 - var(--tw-space-x-reverse)));
}
.va-button {
--va-button-font-size: var(--va-font-size-1);
--va-button-padding: var(--va-space-3);
--va-button-border-width: var(--va-border-width);
--va-button-border-color: var(--va-border-color);
--va-button-background-color: var(--va-surface-primary);
display: block;
font-weight: 500;
line-height: 1;
padding: var(--va-button-padding);
font-size: var(--va-button-font-size);
text-align: inherit;
background-color: var(--va-button-background-color);
border-style: solid;
border-width: var(--va-button-border-width);
border-color: var(--va-button-border-color);
outline: none;
}
.va-button:hover:not(.va-button:active):not(.va-button\--active) {
background-color: color-mix(in srgb, var(--va-text-normal) 8%, transparent);
}
.va-button:focus-visible {
box-shadow: inset 0 0 0 var(--va-input-border-width);
}
.va-button:active,
.va-button\--active {
color: var(--va-surface-primary);
background-color: var(--va-text-normal);
}
.va-button\--disabled,
.va-button[disabled] {
pointer-events: none;
}
.va-button\--disabled,
.va-button[disabled] {
color: var(--va-text-weak);
}
.va-button\--action {
text-transform: uppercase;
}
.va-card {
--va-card-color: var(--va-text-normal);
--va-card-font-size: var(--va-font-size-1);
--va-card-padding: var(--va-space-3);
--va-card-border-width: var(--va-border-width);
--va-card-border-color: var(--va-border-color);
--va-card-background-color: var(--va-surface-primary)
}
.va-card > :not([hidden]) ~ :not([hidden]) {
--tw-space-y-reverse: 0;
margin-top: calc(calc(var(--va-card-border-width) * -1) * calc(1 - var(--tw-space-y-reverse)));
margin-bottom: calc(calc(var(--va-card-border-width) * -1) * var(--tw-space-y-reverse));
}
.va-card {
color: var(--va-card-color);
background-color: var(--va-card-background-color);
}
.va-card__body {
border-width: 2px;
}
.va-card__body {
padding: var(--va-card-padding);
}
.va-card__body,
.va-card .va-button {
border-width: var(--va-card-border-width);
border-color: var(--va-card-border-color);
}
.va-card__actions {
display: flex;
}
.va-card__actions > :not([hidden]) ~ :not([hidden]) {
--tw-space-x-reverse: 0;
margin-right: calc(calc(var(--va-card-border-width) * -1) * var(--tw-space-x-reverse));
margin-left: calc(calc(var(--va-card-border-width) * -1) * calc(1 - var(--tw-space-x-reverse)));
}
.va-card__actions .va-button {
width: 100%;
}
:root {
--va-collapse-font-size: var(--va-font-size-1);
--va-collapse-padding: var(--va-space-3);
--va-collapse-border-width: var(--va-border-width);
--va-collapse-border-color: var(--va-border-color);
--va-collapse-background-color: var(--va-surface-primary);
--va-collapse-caret-width: calc(var(--va-collapse-font-size) / 3);
--va-collapse-tree-indentation: var(--va-space-8);
}
.va-collapse {
--depth: 0;
--space: calc(var(--depth) * var(--va-collapse-tree-indentation));
--offset: calc(var(--va-collapse-caret-width) + var(--va-space-4));
font-size: var(--va-collapse-font-size);
border-style: solid;
border-width: var(--va-collapse-border-width);
border-color: var(--va-collapse-border-color);
}
.va-collapse[open] > summary::before {
transform: rotate(0)
translateY(calc(var(--va-collapse-caret-width) / 2 * -1));
}
.va-collapse > *:not(summary):not(details):not(.va-button) {
padding-left: calc(
var(--va-collapse-caret-width) * 2 + var(--va-collapse-padding) * 2 +
var(--space) - var(--offset)
);
}
.va-collapse summary {
position: relative;
}
.va-collapse summary {
display: block;
}
.va-collapse summary {
cursor: pointer;
}
.va-collapse summary {
font-weight: 500;
}
.va-collapse summary {
line-height: 1;
}
.va-collapse summary {
padding: var(--va-collapse-padding);
padding-left: calc(
var(--va-collapse-caret-width) * 2 + var(--va-collapse-padding) * 2 +
var(--space)
);
text-align: inherit;
background-color: var(--va-collapse-background-color);
outline: none;
}
.va-collapse summary:hover:not(.va-collapse summary:active):not(.va-collapse summary\--active) {
background-color: color-mix(
in srgb,
var(--va-text-normal) 8%,
transparent
);
}
.va-collapse summary:focus-visible {
box-shadow: inset 0 0 0 var(--va-collapse-border-width);
}
.va-collapse summary:active,
.va-collapse summary\--active {
color: var(--va-surface-primary);
background-color: var(--va-text-normal);
}
.va-collapse summary::before {
position: absolute;
}
.va-collapse summary::before {
top: 50%;
}
.va-collapse summary::before {
--tw-translate-y: -50%;
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.va-collapse summary::before {
left: calc(
var(--va-collapse-caret-width) * 2 + var(--va-collapse-padding) * 2 +
var(--space) - var(--offset)
);
width: calc(var(--va-collapse-caret-width) * 2);
height: var(--va-collapse-caret-width);
transform: rotate(-90deg);
transform-origin: center top;
content: '';
background-image: linear-gradient(
45deg,
transparent 50%,
currentColor 50%
),
linear-gradient(135deg, currentColor 50%, transparent 50%);
background-position: 0 0, calc(var(--va-collapse-caret-width) - 0.1px) 0;
background-size: var(--va-collapse-caret-width)
var(--va-collapse-caret-width),
var(--va-collapse-caret-width) var(--va-collapse-caret-width);
background-repeat: no-repeat;
}
.va-collapse .va-button {
padding-left: calc(
var(--va-collapse-caret-width) * 2 + var(--va-collapse-padding) * 2 +
var(--space) + var(--offset) + 10px
);
}
/* Nested */
.va-collapse .va-collapse,
.va-collapse .va-button {
--depth: 1
}
.va-collapse .va-collapse,
.va-collapse .va-button {
width: 100%;
}
.va-collapse .va-collapse,
.va-collapse .va-button {
border-left-width: 0px;
border-right-width: 0px;
}
.va-collapse .va-collapse,
.va-collapse .va-button {
border-bottom-width: 0px;
}
.va-collapse .va-collapse .va-collapse,
.va-collapse .va-collapse .va-button,
.va-collapse .va-button .va-collapse,
.va-collapse .va-button .va-button {
--depth: 2;
}
.va-collapse .va-collapse .va-collapse .va-collapse,
.va-collapse .va-collapse .va-collapse .va-button,
.va-collapse .va-collapse .va-button .va-collapse,
.va-collapse .va-collapse .va-button .va-button,
.va-collapse .va-button .va-collapse .va-collapse,
.va-collapse .va-button .va-collapse .va-button,
.va-collapse .va-button .va-button .va-collapse,
.va-collapse .va-button .va-button .va-button {
--depth: 3;
}
.va-collapse .va-collapse .va-collapse .va-collapse .va-collapse,
.va-collapse .va-collapse .va-collapse .va-collapse .va-button,
.va-collapse .va-collapse .va-collapse .va-button .va-collapse,
.va-collapse .va-collapse .va-collapse .va-button .va-button,
.va-collapse .va-collapse .va-button .va-collapse .va-collapse,
.va-collapse .va-collapse .va-button .va-collapse .va-button,
.va-collapse .va-collapse .va-button .va-button .va-collapse,
.va-collapse .va-collapse .va-button .va-button .va-button,
.va-collapse .va-button .va-collapse .va-collapse .va-collapse,
.va-collapse .va-button .va-collapse .va-collapse .va-button,
.va-collapse .va-button .va-collapse .va-button .va-collapse,
.va-collapse .va-button .va-collapse .va-button .va-button,
.va-collapse .va-button .va-button .va-collapse .va-collapse,
.va-collapse .va-button .va-button .va-collapse .va-button,
.va-collapse .va-button .va-button .va-button .va-collapse,
.va-collapse .va-button .va-button .va-button .va-button {
--depth: 4;
}
.va-collapse .va-collapse .va-collapse .va-collapse .va-collapse .va-collapse,
.va-collapse .va-collapse .va-collapse .va-collapse .va-collapse .va-button,
.va-collapse .va-collapse .va-collapse .va-collapse .va-button .va-collapse,
.va-collapse .va-collapse .va-collapse .va-collapse .va-button .va-button,
.va-collapse .va-collapse .va-collapse .va-button .va-collapse .va-collapse,
.va-collapse .va-collapse .va-collapse .va-button .va-collapse .va-button,
.va-collapse .va-collapse .va-collapse .va-button .va-button .va-collapse,
.va-collapse .va-collapse .va-collapse .va-button .va-button .va-button,
.va-collapse .va-collapse .va-button .va-collapse .va-collapse .va-collapse,
.va-collapse .va-collapse .va-button .va-collapse .va-collapse .va-button,
.va-collapse .va-collapse .va-button .va-collapse .va-button .va-collapse,
.va-collapse .va-collapse .va-button .va-collapse .va-button .va-button,
.va-collapse .va-collapse .va-button .va-button .va-collapse .va-collapse,
.va-collapse .va-collapse .va-button .va-button .va-collapse .va-button,
.va-collapse .va-collapse .va-button .va-button .va-button .va-collapse,
.va-collapse .va-collapse .va-button .va-button .va-button .va-button,
.va-collapse .va-button .va-collapse .va-collapse .va-collapse .va-collapse,
.va-collapse .va-button .va-collapse .va-collapse .va-collapse .va-button,
.va-collapse .va-button .va-collapse .va-collapse .va-button .va-collapse,
.va-collapse .va-button .va-collapse .va-collapse .va-button .va-button,
.va-collapse .va-button .va-collapse .va-button .va-collapse .va-collapse,
.va-collapse .va-button .va-collapse .va-button .va-collapse .va-button,
.va-collapse .va-button .va-collapse .va-button .va-button .va-collapse,
.va-collapse .va-button .va-collapse .va-button .va-button .va-button,
.va-collapse .va-button .va-button .va-collapse .va-collapse .va-collapse,
.va-collapse .va-button .va-button .va-collapse .va-collapse .va-button,
.va-collapse .va-button .va-button .va-collapse .va-button .va-collapse,
.va-collapse .va-button .va-button .va-collapse .va-button .va-button,
.va-collapse .va-button .va-button .va-button .va-collapse .va-collapse,
.va-collapse .va-button .va-button .va-button .va-collapse .va-button,
.va-collapse .va-button .va-button .va-button .va-button .va-collapse,
.va-collapse .va-button .va-button .va-button .va-button .va-button {
--depth: 5;
}
:root {
--va-input-font-size: var(--va-font-size-1);
--va-input-padding: var(--va-space-3);
--va-input-border-width: var(--va-border-width);
--va-input-border-color: var(--va-border-color);
--va-input-background-color: var(--va-surface-primary);
}
.va-input {
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
line-height: 1;
background-color: transparent;
border-style: solid;
border-width: var(--va-input-border-width);
border-color: var(--va-input-border-color);
color: inherit;
padding: calc(var(--va-input-padding) - var(--va-input-border-width) * 2);
outline: none;
}
.va-input[disabled] {
color: var(--va-text-weak);
}
.va-input:not([readonly]):focus,
.va-input:not([readonly]):focus-within {
box-shadow: inset 0 0 0 var(--va-input-border-width);
}
label:has(.va-input) {
display: flex;
}
label:has(.va-input) {
flex-direction: column;
}
label:has(.va-input) {
line-height: 1;
}
label:has(.va-input) {
border-style: solid;
border-width: var(--va-select-border-width);
border-color: var(--va-select-border-color);
font-size: var(--va-font-size-0);
gap: var(--va-space-1);
padding-left: var(--va-input-padding);
padding-right: var(--va-input-padding);
padding-top: calc(var(--va-input-padding) / 1.5);
padding-bottom: calc(var(--va-input-padding) / 1.5);
cursor: text;
}
label:has(.va-input):not(:has(.va-input[readonly])):focus,
label:has(.va-input):not(:has(.va-input[readonly])):focus-within {
box-shadow: inset 0 0 0 var(--va-input-border-width);
}
label:has(.va-input) .va-input {
box-shadow: none ;
font-size: initial;
border: none;
padding: 0;
}
:root {
--va-loading-dots-animation-duration: 1s;
}
.va-loading-dots::after {
display: inline-block;
content: '.';
width: var(--va-space-4);
animation-name: dots;
animation-duration: var(--va-loading-dots-animation-duration);
animation-timing-function: linear;
animation-iteration-count: infinite;
}
@keyframes dots {
50% {
content: '..';
}
100% {
content: '...';
}
}
:root {
--va-select-font-size: var(--va-font-size-1);
--va-select-padding: var(--va-space-3);
--va-select-border-width: var(--va-border-width);
--va-select-border-color: var(--va-border-color);
--va-select-background-color: var(--va-button-background-color);
--va-select-caret-width: calc(var(--va-select-font-size) / 3);
}
.va-select {
position: relative;
cursor: pointer;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
border-radius: 0px;
background-color: transparent;
line-height: 1;
outline: 2px solid transparent;
outline-offset: 2px;
}
.va-select:hover {
background-color: rgb(255 255 255 / 0.05);
}
.va-select:active {
--tw-bg-opacity: 1;
background-color: rgb(255 255 255 / var(--tw-bg-opacity));
--tw-text-opacity: 1;
color: rgb(0 0 0 / var(--tw-text-opacity));
}
.va-select {
background-color: var(--va-select-background-color);
background-image: linear-gradient(45deg, transparent 50%, currentColor 50%),
linear-gradient(135deg, currentColor 50%, transparent 50%);
background-position: calc(
100% - var(--va-select-padding) - var(--va-select-caret-width)
)
calc(1px + 50%),
calc(100% - var(--va-select-padding) - 0.28px) calc(1px + 50%);
background-size: var(--va-select-caret-width) var(--va-select-caret-width),
var(--va-select-caret-width) var(--va-select-caret-width);
background-repeat: no-repeat;
border-style: solid;
border-width: var(--va-select-border-width);
border-color: var(--va-select-border-color);
color: inherit;
font-size: var(--va-select-font-size);
padding-top: var(--va-select-padding);
padding-right: calc(
var(--va-select-caret-width) * 2 + var(--va-select-padding) * 2
);
padding-bottom: var(--va-select-padding);
padding-left: var(--va-select-padding);
text-align: inherit;
}
.va-select option:disabled {
color: red;
}
.va-select-group:has(> .va-select) {
position: relative;
}
.va-select-group:has(> .va-select) label {
pointer-events: none;
}
.va-select-group:has(> .va-select) label {
position: absolute;
}
.va-select-group:has(> .va-select) label {
top: 0px;
}
.va-select-group:has(> .va-select) label {
left: 0px;
}
.va-select-group:has(> .va-select) label {
font-size: var(--va-font-size-0);
padding-left: calc(
var(--va-select-padding) + var(--va-select-border-width)
);
padding-top: calc(var(--va-select-padding) / 1.5);
}
.va-select-group:has(> .va-select) .va-select {
padding-top: calc(
var(--va-select-padding) + var(--va-font-size-0) * 1.15
);
padding-bottom: calc(var(--va-select-padding) / 1.5);
}
.va-table {
--va-table-font-size: var(--va-font-size-1);
--va-table-padding: var(--va-space-3);
--va-table-border-width: var(--va-border-width);
--va-table-border-color: var(--va-border-color);
--va-table-background-color: var(--va-surface-primary);
width: 100%
}
.va-table > :not([hidden]) ~ :not([hidden]) {
--tw-divide-y-reverse: 0;
border-top-width: calc(2px * calc(1 - var(--tw-divide-y-reverse)));
border-bottom-width: calc(2px * var(--tw-divide-y-reverse));
}
.va-table {
border-width: 2px;
font-size: var(--va-table-font-size);
border-color: var(--va-table-border-color);
border-width: var(--va-table-border-width);
background-color: var(--va-table-background-color);
}
.va-table * {
border-color: var(--va-table-border-color);
border-width: var(--va-table-border-width);
}
.va-table tr > :not([hidden]) ~ :not([hidden]) {
--tw-divide-x-reverse: 0;
border-right-width: calc(2px * var(--tw-divide-x-reverse));
border-left-width: calc(2px * calc(1 - var(--tw-divide-x-reverse)));
}
.va-table thead {
border-bottom-width: 2px;
}
.va-table tbody > :not([hidden]) ~ :not([hidden]) {
--tw-divide-y-reverse: 0;
border-top-width: calc(2px * calc(1 - var(--tw-divide-y-reverse)));
border-bottom-width: calc(2px * var(--tw-divide-y-reverse));
}
.va-table td,
.va-table th {
text-align: left;
}
.va-table td,
.va-table th {
vertical-align: top;
}
.va-table td,
.va-table th {
padding: var(--va-table-padding);
}
body {
background-color: var(--va-background-primary);
color: var(--va-text-normal);
}