:root {
  /* Abstractions */
  --color-bg: var(--bg-base);
  --color-bg-overlay: var(--bg-overlay);
  --color-bg-elevated: var(--bg-elevated);
  --color-text: var(--text-primary);
  --color-text-reversed: var(--text-on-primary);
  --color-text-subtle: var(--text-secondary);
  --color-link: var(--brand-base);
  --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-primary: var(--brand-base);
  --color-secondary: var(--brand-subtle);
  --color-negative: var(--text-error);
  /* --color-positive: var(--green-call); */
  --color-positive: oklch(0.6917 0.1494 134.9);

  /* 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%);

  /* Layout */
  --height-title-bar: 3.1rem;

  /* Spacing */
  --space-s-m: clamp(1rem, 0.6854rem + 1.3423vi, 1.625rem);
  --space-3xs: clamp(0.25rem, 0.25rem + 0vi, 0.25rem);
  --space-3xs-2xs: clamp(0.25rem, 0.1871rem + 0.2685vi, 0.375rem);
  --space-g: var(--space-s-m);
  --space-g-half: calc(var(--space-g) / 2);
  --space-g-quarter: calc(var(--space-g) / 4);

  --gutter: var(--space-g);
  --gutter-half: var(--space-g-half);
  --gutter-quarter: var(--space-g-quarter);
  --space-r: var(--space-m-l);

  /* Radius */
  --radius: 4px;
  --radius-s: var(--radius);
  --radius-m: 8px;
  --radius-l: 1em;

  /* Animation */
  --duration-hover: 200ms;
  --duration-sm: 100ms;
  --duration-md: 400ms;
  --ease-emphasis: linear(
    0,
    0.0025 1.75%,
    0.0099 3.55%,
    0.0341 6.4%,
    0.0738 9.06%,
    0.1281 11.41%,
    0.194 13.37%,
    0.2714 14.97%,
    0.5443 18.34%,
    0.6604 20.61%,
    0.7167 22.4%,
    0.7653 24.59%,
    0.8083 27.28%,
    0.8448 30.42%,
    0.8833 35.06%,
    0.9155 40.62%,
    0.9421 47.24%,
    0.9633 54.99%,
    0.9795 64.01%,
    0.9909 74.43%,
    0.9977 86.37%,
    1
  );
  --ease-pop: cubic-bezier(0.16, 1, 0.3, 1);
  --ease-out-expo: cubic-bezier(0.16, 1, 0.3, 1);
  --ease-out-back: cubic-bezier(0.34, 1.56, 0.64, 1);

  @media (prefers-color-scheme: dark) {
    /* Abstractions */
    --color-bg: var(--zinc-800);
    --color-bg-overlay: var(--zinc-700);
    --color-bg-elevated: var(--zinc-600);
    --color-text: var(--zinc-100);
    --color-text-reversed: var(--zinc-900);
    --color-text-subtle: var(--zinc-300);
    --color-link: var(--blue-300);
    --color-border-light: var(--zinc-800);
    --color-border: var(--zinc-700);
    --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(--blue-400);
    --color-secondary: var(--zinc-700);
    --color-negative: var(--red-900);
    --color-positive: var(--green-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%);
  }
}

* {
  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);
}
