/* Chosen Solutions — design tokens
   Register: product · Strategy: restrained
   Seed: oklch(0.300 0.096 140) (impeccable palette.mjs seed-179, deep moss green)
   Light mode is the default ("sunlight"); dark mode via prefers-color-scheme,
   overridable with [data-theme="light"|"dark"] on :root. */

:root {
  /* ---- color: light ---- */
  --bg: oklch(1 0 0);                      /* pure white — no hidden warmth */
  --surface: oklch(0.965 0.004 140);       /* cards, panels */
  --surface-2: oklch(0.935 0.006 140);     /* sidebars, toolbars, code wells */
  --ink: oklch(0.235 0.02 140);            /* body text, >=7:1 on bg */
  --muted: oklch(0.46 0.015 140);          /* secondary text, >=4.5:1 */
  --line: oklch(0.885 0.008 140);          /* hairline borders */

  --primary: oklch(0.42 0.1 140);          /* moss green — actions, selection */
  --primary-hover: oklch(0.37 0.1 140);
  --primary-ink: oklch(1 0 0);             /* white text on primary fills */
  --primary-tint: oklch(0.955 0.022 140);  /* selected row / soft badge bg */

  --accent: oklch(0.86 0.12 85);           /* sunlight amber — quotes, highlights */
  --accent-ink: oklch(0.32 0.06 85);       /* dark text on pale accent fill */

  --success: oklch(0.55 0.13 150);
  --warning: oklch(0.55 0.13 75); /* dark ochre — white pill text must pass 4.5:1 */
  --danger: oklch(0.55 0.19 25);
  --info: oklch(0.55 0.12 240);
  --on-status: oklch(1 0 0);               /* white text on status fills */

  /* ---- typography ---- */
  --font-sans: "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;
  --font-serif: "Newsreader", Georgia, "Times New Roman", serif; /* quotes/editorial voice — always italic */
  --font-mono: "JetBrains Mono", ui-monospace, "Cascadia Code", monospace;
  /* fixed rem scale, ratio 1.2 */
  --text-xs: 0.694rem;
  --text-sm: 0.833rem;
  --text-base: 1rem;
  --text-md: 1.2rem;
  --text-lg: 1.44rem;
  --text-xl: 1.728rem;
  --text-2xl: 2.074rem;
  --text-3xl: 2.488rem;
  --leading-tight: 1.25;
  --leading-body: 1.6;
  --tracking-display: -0.02em;
  --measure: 70ch;

  /* ---- spacing (4px base) ---- */
  --space-1: 0.25rem;
  --space-2: 0.5rem;
  --space-3: 0.75rem;
  --space-4: 1rem;
  --space-6: 1.5rem;
  --space-8: 2rem;
  --space-12: 3rem;
  --space-16: 4rem;
  --space-24: 6rem;

  /* ---- shape ---- */
  --radius-sm: 6px;
  --radius-md: 10px;
  --radius-lg: 14px;
  --radius-pill: 999px;
  --shadow-sm: 0 1px 2px oklch(0.235 0.02 140 / 0.08);
  --shadow-md: 0 2px 8px oklch(0.235 0.02 140 / 0.1);

  /* ---- z-index (semantic) ---- */
  --z-dropdown: 100;
  --z-sticky: 200;
  --z-modal-backdrop: 300;
  --z-modal: 310;
  --z-toast: 400;
  --z-tooltip: 500;

  /* ---- motion ---- */
  --ease-out: cubic-bezier(0.25, 1, 0.5, 1); /* ease-out-quart */
  --dur-fast: 150ms;
  --dur-base: 200ms;
  --dur-slow: 250ms;

  color-scheme: light;
  background: var(--bg);
  color: var(--ink);
}

@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --bg: oklch(0.11 0 0);
    --surface: oklch(0.16 0.006 140);
    --surface-2: oklch(0.2 0.008 140);
    --ink: oklch(0.93 0.008 140);
    --muted: oklch(0.7 0.012 140);
    --line: oklch(0.28 0.01 140);

    --primary: oklch(0.68 0.11 142);
    --primary-hover: oklch(0.74 0.11 142);
    --primary-ink: oklch(0.13 0.03 142);   /* dark text on the lighter green */
    --primary-tint: oklch(0.22 0.035 142);

    --accent: oklch(0.82 0.12 85);
    --accent-ink: oklch(0.2 0.05 85);

    --success: oklch(0.72 0.13 150);
    --warning: oklch(0.78 0.13 75);
    --danger: oklch(0.68 0.17 25);
    --info: oklch(0.72 0.11 240);
    --on-status: oklch(0.13 0 0);

    --shadow-sm: 0 1px 2px oklch(0 0 0 / 0.4);
    --shadow-md: 0 2px 8px oklch(0 0 0 / 0.45);

    color-scheme: dark;
  }
}

:root[data-theme="dark"] {
  --bg: oklch(0.11 0 0);
  --surface: oklch(0.16 0.006 140);
  --surface-2: oklch(0.2 0.008 140);
  --ink: oklch(0.93 0.008 140);
  --muted: oklch(0.7 0.012 140);
  --line: oklch(0.28 0.01 140);

  --primary: oklch(0.68 0.11 142);
  --primary-hover: oklch(0.74 0.11 142);
  --primary-ink: oklch(0.13 0.03 142);
  --primary-tint: oklch(0.22 0.035 142);

  --accent: oklch(0.82 0.12 85);
  --accent-ink: oklch(0.2 0.05 85);

  --success: oklch(0.72 0.13 150);
  --warning: oklch(0.78 0.13 75);
  --danger: oklch(0.68 0.17 25);
  --info: oklch(0.72 0.11 240);
  --on-status: oklch(0.13 0 0);

  --shadow-sm: 0 1px 2px oklch(0 0 0 / 0.4);
  --shadow-md: 0 2px 8px oklch(0 0 0 / 0.45);

  color-scheme: dark;
}

@media (prefers-reduced-motion: reduce) {
  :root {
    --dur-fast: 0ms;
    --dur-base: 0ms;
    --dur-slow: 0ms;
  }
}
