:root {
  /* Abstractions */
  --color-bg: #ffffff;
  --color-text: #000000;
  --color-text-reversed: #ffffff;
  --color-text-subtle: var(--zinc-500);
  --color-link: var(--blue-600);
  --color-link-hover: var(--blue-800);
  --color-border-light: var(--zinc-100);
  --color-border: var(--zinc-200);
  --color-border-dark: var(--zinc-400);
  --color-selected: var(--blue-100);
  --color-selected-dark: var(--blue-300);
  --color-highlight: var(--yellow-200);

  /* Accent colors */
  --color-jfcs: #8a0054;
  --color-primary: var(--purple-600);
  --color-secondary: var(--zinc-200);
  --color-negative: var(--red-600);
  --color-positive: var(--green-600);
  --color-alert-fg: var(--orange-500);
  --color-alert-bg: var(--yellow-200);
  --color-error: var(--red-100);
  --color-error-bg: var(--red-100);
  --color-notice: var(--blue-200);
  --color-success: var(--green-200);
  --color-unobtrusive-background: var(--purple-100);

  /* SVG color values */
  --color-filter-text: invert(0);
  --color-filter-text-reversed: invert(1);
  --color-filter-negative: invert(22%) sepia(85%) saturate(1790%)
    hue-rotate(339deg) brightness(105%) contrast(108%);
  --color-filter-positive: invert(44%) sepia(89%) saturate(409%)
    hue-rotate(89deg) brightness(94%) contrast(97%);

  @media (prefers-color-scheme: dark) {
    /* Abstractions */
    --color-bg: var(--zinc-950);
    --color-text: #ffffff;
    --color-text-reversed: #000000;
    --color-text-subtle: var(--zinc-400);
    --color-link: var(--blue-300);
    --color-link-hover: var(--blue-200);
    --color-border-light: var(--zinc-900);
    --color-border: var(--zinc-800);
    --color-border-dark: var(--zinc-600);
    --color-selected: var(--blue-950);
    --color-selected-dark: var(--blue-800);
    --color-highlight: var(--yellow-900);

    /* Accent colors */
    --color-primary: var(--purple-400);
    --color-secondary: var(--zinc-800);
    --color-negative: var(--red-500);
    --color-positive: var(--green-900);
    --color-error: var(--red-400);
    --color-error-bg: var(--red-800);
    --color-unobtrusive-background: var(--indigo-600);

    /* SVG color values */
    --color-filter-text: invert(1);
    --color-filter-text-reversed: invert(0);
    --color-filter-negative: invert(15%) sepia(65%) saturate(2067%)
      hue-rotate(339deg) brightness(102%) contrast(97%);
    --color-filter-positive: invert(23%) sepia(62%) saturate(554%)
      hue-rotate(91deg) brightness(93%) contrast(91%);
  }

  --container-width: 80rem;
}

* {
  border-color: var(--color-border);
  scrollbar-color: #c1c1c1 transparent;
  scrollbar-width: thin;
}

html {
  scroll-behavior: smooth;
}

body {
  background-color: var(--color-bg);
  color: var(--color-text);
  font-synthesis-weight: none;
  overscroll-behavior: none;
  text-rendering: optimizelegibility;
}

.turbo-progress-bar {
  background-color: var(--color-primary);
}

::selection {
  background-color: var(--color-selected);
}

a {
  color: var(--color-link);
  cursor: pointer;

  &:not(.btn) {
    text-decoration: underline;

    &:hover {
      color: var(--color-link-hover);
    }
  }

  &.link--uncolored {
    color: var(--color-text);
  }
}

h1 {
  font-size: var(--text-xl);
  font-weight: var(--font-bold);
  margin-block-end: var(--size-4);
}

h2 {
  font-size: var(--text-lg);
  font-weight: var(--font-semibold);
}

h3 {
  font-weight: var(--font-semibold);
}

ol {
  /* `inside` means that the numbers are inside the bounding box, so it's easy to make them line up */
  list-style: decimal inside;
}

@media (prefers-color-scheme: dark) {
  select {
    background-color: rgb(0 0 0 / 100%);
  }
}
