@layer base {
  html, body {
    --font-sans: system-ui;
    --font-serif: ui-serif, serif;
    --font-mono: ui-monospace, monospace;
    --font-handwriting: "Shantell", -apple-system, BlinkMacSystemFont, Aptos, Roboto, "Segoe UI", Helvetica, Arial, sans-serif;
    --hover-color: var(--color-ink-light);
    --hover-size: 0.15rem;
    --hover-filter: brightness(1);

    -moz-osx-font-smoothing: grayscale;
    -webkit-font-smoothing: antialiased;
    -webkit-text-size-adjust: none;

    color: var(--color-text);
    font-family: var(--font-sans);
    line-height: 1.4;
    overflow: unset;
    scroll-behavior: auto;
    text-rendering: optimizeLegibility;
    text-size-adjust: none;
  }

  body {
    background: var(--color-body);

    &.theme--red {
      --lch-theme: var(--lch-red);
      --color-theme-dark: var(--color-red-dark);
      --color-theme: var(--color-red);
      --color-theme-light: var(--color-red-light);
      --color-theme-lighter: var(--color-red-lighter);
      --color-theme-lightest: var(--color-red-lightest);
      --color-body: var(--color-red-body);

      @media (prefers-color-scheme: dark) {
        --color-canvas: var(--color-red-canvas);
      }
    }

    &.theme--orange {
      --lch-theme: var(--lch-orange);
      --color-theme-dark: var(--color-orange-dark);
      --color-theme: var(--color-orange);
      --color-theme-light: var(--color-orange-light);
      --color-theme-lighter: var(--color-orange-lighter);
      --color-theme-lightest: var(--color-orange-lightest);
      --color-body: var(--color-orange-body);

      @media (prefers-color-scheme: dark) {
        --color-canvas: var(--color-orange-canvas);
      }
    }

    &.theme--green {
      --lch-theme: var(--lch-green);
      --color-theme-dark: var(--color-green-dark);
      --color-theme: var(--color-green);
      --color-theme-light: var(--color-green-light);
      --color-theme-lighter: var(--color-green-lighter);
      --color-theme-lightest: var(--color-green-lightest);
      --color-body: var(--color-green-body);

      @media (prefers-color-scheme: dark) {
        --color-canvas: var(--color-green-canvas);
      }
    }

    &.theme--blue {
      --lch-theme: var(--lch-blue);
      --color-theme-dark: var(--color-blue-dark);
      --color-theme: var(--color-blue);
      --color-theme-light: var(--color-blue-light);
      --color-theme-lighter: var(--color-blue-lighter);
      --color-theme-lightest: var(--color-blue-lightest);
      --color-body: var(--color-blue-body);

      @media (prefers-color-scheme: dark) {
        --color-canvas: var(--color-blue-canvas);
      }
    }

    &.theme--purple {
      --lch-theme: var(--lch-purple);
      --color-theme-dark: var(--color-purple-dark);
      --color-theme: var(--color-purple);
      --color-theme-light: var(--color-purple-light);
      --color-theme-lighter: var(--color-purple-lighter);
      --color-theme-lightest: var(--color-purple-lightest);
      --color-body: var(--color-purple-body);

      @media (prefers-color-scheme: dark) {
        --color-canvas: var(--color-purple-canvas);
      }
    }
  }


  a:not([class]) {
    --hover-size: 0;

    color: var(--color-link);
    text-decoration: underline;
    text-decoration-skip-ink: auto;
  }

  :is(a, button, input, textarea, .switch, .hover-container) {
    --outline-size: max(2px, 0.08em);

    caret-color: var(--color-link);
    text-decoration: none;
    touch-action: manipulation;
    transition: box-shadow 150ms ease, outline-offset 150ms ease, background-color 150ms ease, opacity 150ms ease, filter 150ms ease;

    /* Hover */
    @media (any-hover: hover) {
      &:where(:not(:active):hover) {
        box-shadow: 0 0 0 var(--hover-size) var(--hover-color);
      }
    }

    /* Keyboard navigation */
    &:where(:not(:active)):focus-visible {
      outline-width: var(--outline-size);
      outline-color: var(--outline-color, currentColor);
      outline-offset: var(--outline-offset, calc(var(--outline-size) * 2));
    }

    &:where(:focus-visible):active {
      outline: 0;
    }

    /* Pressing */
    &:focus:not(:focus-visible) {
      --outline-offset: 0;
    }

    /* Disabled */
    &:where([disabled]):not(:hover):not(:active) {
      cursor: not-allowed;
      opacity: 0.5;
    }
  }

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

  :where(ul, ol):where([role="list"]) {
    margin: 0;
    padding: 0;
    list-style: none;
  }

  /* Printing */
  @page {
    margin: 1in;
  }

  @media print {
    .no-print {
      display: none;
    }
  }

  /* Turbo */
  turbo-frame {
    display: contents;
  }

  /* Nicer scrollbars on Chrome 29+. This is intended for Windows machines, but */
  /* there's not a way to target Windows using CSS, so Chrome on Mac will have */
  /* slightly thinner scrollbars than normal. #C1C1C1 is the default color on Macs. */
  @media screen and (-webkit-min-device-pixel-ratio:0) and (min-resolution:.001dpcm) {
    * {
      scrollbar-color: #C1C1C1 transparent;
      scrollbar-width: thin;
    }
  }
}
