/* Cachet — design tokens (dark-first)
 * One system, three jobs for color: surfaces stay monochrome,
 * the accent family ONLY ever carries a verdict (verified / unverified / refused).
 * Color = meaning. Nothing here decorates.
 */

:root {
  /* ---- Neutral ramp: warm paper to near-black ink ----
   * The verify surface is a court exhibit: a warm sheet under even light, not
   * an instrument panel. Index rises from paper (the page base) to ink (text).
   * Hue held warm (~28-45), low saturation. Never pure white or pure black. */
  --n-0:  hsl(43 40% 94%);  /* paper, page base (#f6f2ea) */
  --n-1:  hsl(44 50% 97%);  /* surface, a sheet raised off the desk */
  --n-2:  hsl(45 56% 98%);  /* surface-raised */
  --n-3:  hsl(45 60% 99%);  /* surface-overlay, near white */
  --n-4:  hsl(38 22% 80%);  /* hairline border */
  --n-5:  hsl(35 16% 66%);  /* strong border */
  --n-6:  hsl(33 13% 42%);  /* muted text (AA on paper) */
  --n-7:  hsl(30 16% 32%);  /* secondary text */
  --n-8:  hsl(28 19% 24%);  /* secondary-strong */
  --n-9:  hsl(28 22% 16%);  /* primary text, ink */
  --n-10: hsl(30 24% 9%);   /* darkest ink (#1c1814), rare */

  /* ---- The one reserved accent: proofreader oxblood ----
   * Oxblood is the only saturated color on the page, and it only ever marks
   * what needs a human's eyes: a flag, a correction, a no-record. Never
   * celebration. There is deliberately no "verified" color: a confirmed line is
   * unmarked. The absence of oxblood is the pass. A green badge here would be
   * the single most dangerous signal, so there is none. */
  --flag:      hsl(351 56% 31%);          /* #7a2230 */
  --flag-edge: hsl(351 40% 42% / 0.45);   /* oxblood hairline */
  --flag-wash: hsl(351 50% 40% / 0.07);   /* faint oxblood tint behind a flagged line */

  /* ---- Semantic roles ---- */
  --bg:               var(--n-0);
  --surface:          var(--n-1);
  --surface-raised:   var(--n-2);
  --surface-overlay:  var(--n-3);
  --border:           var(--n-4);
  --border-strong:    var(--n-5);
  --text-muted:       var(--n-6);
  --text-secondary:   var(--n-7);
  --text-primary:     var(--n-9);

  /* ---- Type ---- */
  --font-display: "Newsreader", Georgia, "Times New Roman", serif;
  --font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;
  --font-mono: "IBM Plex Mono", ui-monospace, "SF Mono", Menlo, monospace;

  /* Modular scale, 1.25, 16px base */
  --t--1: 0.8rem;
  --t-0:  1rem;
  --t-1:  1.25rem;
  --t-2:  1.563rem;
  --t-3:  1.953rem;
  --t-4:  2.441rem;
  --t-5:  3.052rem;
  --t-display: clamp(2.6rem, 1.4rem + 4.6vw, 4.6rem);

  /* ---- Spacing, 8px base ---- */
  --s-1: 0.25rem;
  --s-2: 0.5rem;
  --s-3: 0.75rem;
  --s-4: 1rem;
  --s-5: 1.5rem;
  --s-6: 2rem;
  --s-7: 3rem;
  --s-8: 4rem;
  --s-9: 6rem;
  --s-10: 8rem;

  /* ---- Radius ---- */
  --r-1: 6px;
  --r-2: 10px;
  --r-3: 14px;
  --r-full: 999px;

  /* ---- Elevation: soft, warm, low. A sheet barely lifting off the desk. ---- */
  --shadow-1: 0 1px 2px hsl(30 25% 25% / 0.06);
  --shadow-2: 0 2px 10px hsl(30 22% 22% / 0.07), 0 1px 2px hsl(30 22% 22% / 0.06);
  --shadow-3: 0 14px 36px hsl(30 22% 20% / 0.10), 0 3px 10px hsl(30 20% 20% / 0.07);

  /* ---- Motion ---- */
  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
  --ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
  --dur-1: 120ms;
  --dur-2: 200ms;
  --dur-3: 320ms;
  --dur-4: 560ms;

  /* ---- Layout ---- */
  --measure: 62ch;
  --container: 1120px;
}
