:root {
  color-scheme: light dark;
  --color-paper: oklch(98.6% 0.005 250); --color-paper-2: oklch(96.2% 0.008 252); --color-paper-3: oklch(93% 0.011 252);
  --color-ink: oklch(21% 0.028 262); --color-ink-2: oklch(36% 0.022 260); --color-muted: oklch(50% 0.018 258);
  --color-rule: oklch(90% 0.009 252); --color-rule-2: oklch(83% 0.012 252);
  --color-graphite: oklch(21% 0.024 262); --color-graphite-2: oklch(26.5% 0.026 262);
  --color-graphite-ink: oklch(93% 0.010 250); --color-graphite-muted: oklch(69% 0.022 256);
  --color-accent: oklch(52% 0.19 258); --color-accent-2: oklch(76% 0.13 254); --color-accent-wash: oklch(95% 0.028 256);
  --color-accent-ink: oklch(98.6% 0.005 250); --color-accent-deep: oklch(43% 0.2 262); --color-accent-edge: oklch(39% 0.16 260);
  --color-focus: oklch(52% 0.19 258);
  --color-glyph-1: oklch(89% 0.025 254); --color-glyph-2: oklch(81% 0.045 255); --color-glyph-3: oklch(70% 0.085 256);
  --color-glyph-4: oklch(60% 0.13 257); --color-glyph-5: var(--color-accent-deep);
  --color-graphite-glyph-1: oklch(33% 0.03 262); --color-graphite-glyph-2: oklch(41% 0.05 260); --color-graphite-glyph-3: oklch(53% 0.1 258);
  --color-key-face: oklch(99.4% 0.003 250); --color-key-edge: oklch(80% 0.016 254);
  --color-selection: oklch(88% 0.06 256);

  --font-display: "Familjen Grotesk", system-ui, sans-serif;
  --font-body: "IBM Plex Sans", system-ui, sans-serif;
  --font-outlier: "JetBrains Mono", ui-monospace, monospace;

  --text-xs: 0.75rem; --text-sm: 0.8125rem; --text-base: 1rem; --text-md: 1.0625rem; --text-lg: 1.125rem;
  --text-h3: 1.375rem; --text-h2: clamp(1.75rem, 1.35rem + 1.4vw, 2.5rem); --text-h1: clamp(2.5rem, 1.5rem + 3.8vw, 4.5rem);

  --space-2xs: 4px; --space-xs: 8px; --space-sm: 12px; --space-md: 16px; --space-lg: 24px;
  --space-xl: 32px; --space-2xl: 48px; --space-3xl: 72px; --space-4xl: 96px;
  --container: 1200px; --gutter: clamp(16px, 4vw, 40px);

  --radius-card: 8px; --radius-input: 6px; --radius-pill: 999px;
  --cell-w: 8px; --cell-h: 16px; --cut: 8px; --cut-l: 16px;
  --rule-hair: 1px;
  --shadow-card: 0 1px 2px oklch(21% 0.028 262 / 0.06);
  --shadow-key: 0 3px 0 0 var(--color-key-edge), 0 6px 8px -4px oklch(21% 0.028 262 / 0.28), inset 0 1px 0 oklch(100% 0 0 / 0.9);
  --shadow-key-accent: 0 3px 0 0 var(--color-accent-edge), 0 6px 8px -4px oklch(30% 0.12 260 / 0.45), inset 0 1px 0 oklch(100% 0 0 / 0.22);
  --shadow-key-press: inset 0 1px 2px oklch(21% 0.028 262 / 0.14);
  --tracking-display: -0.028em; --display-weight: 600;

  --dur-micro: 120ms; --dur-short: 200ms; --dur-med: 360ms;
  --ease-out: cubic-bezier(0.2, 0.7, 0.2, 1); --ease-in-out: cubic-bezier(0.6, 0, 0.3, 1);
}

@media (prefers-color-scheme: dark) {
  :root {
    --color-paper: oklch(17% 0.02 262); --color-paper-2: oklch(20% 0.022 262); --color-paper-3: oklch(23% 0.024 262);
    --color-ink: oklch(94% 0.01 250); --color-ink-2: oklch(81% 0.016 254); --color-muted: oklch(67% 0.02 256);
    --color-rule: oklch(28% 0.022 260); --color-rule-2: oklch(36% 0.024 258);
    --color-graphite: oklch(12.5% 0.02 262); --color-graphite-2: oklch(19% 0.024 262);
    --color-graphite-ink: oklch(92% 0.01 250); --color-graphite-muted: oklch(66% 0.022 256);
    --color-accent: oklch(68% 0.16 256); --color-accent-2: oklch(80% 0.11 254); --color-accent-wash: oklch(26% 0.05 258);
    --color-accent-ink: oklch(15% 0.03 262); --color-accent-deep: oklch(78% 0.14 254); --color-accent-edge: oklch(48% 0.15 260);
    --color-focus: oklch(74% 0.15 256);
    --color-glyph-1: oklch(27% 0.03 260); --color-glyph-2: oklch(35% 0.05 259); --color-glyph-3: oklch(47% 0.09 258);
    --color-glyph-4: oklch(59% 0.13 257); --color-glyph-5: oklch(78% 0.14 254);
    --color-graphite-glyph-1: oklch(25% 0.03 262); --color-graphite-glyph-2: oklch(33% 0.05 260); --color-graphite-glyph-3: oklch(52% 0.1 258);
    --color-key-face: oklch(25% 0.022 260); --color-key-edge: oklch(11% 0.02 262);
    --color-selection: oklch(36% 0.08 258);
    --shadow-card: 0 1px 2px oklch(5% 0.02 262 / 0.5);
    --shadow-key: 0 3px 0 0 var(--color-key-edge), 0 6px 10px -4px oklch(5% 0.02 262 / 0.6), inset 0 1px 0 oklch(100% 0 0 / 0.07);
    --shadow-key-accent: 0 3px 0 0 var(--color-accent-edge), 0 6px 10px -4px oklch(5% 0.02 262 / 0.6), inset 0 1px 0 oklch(100% 0 0 / 0.25);
    --shadow-key-press: inset 0 1px 3px oklch(5% 0.02 262 / 0.6);
  }
}
