/* tokens — design constants only: fonts, colors, spacing, radii.
   No selectors that paint anything; every other sheet reads these. */

/* ---- Instrument Sans (self-hosted, variable) ---- */
@font-face{
  font-family:"Instrument Sans"; font-style:normal; font-weight:400 700; font-display:swap;
  src:url("/assets/instrument-sans-latin-wght-normal-cd04b9a7.woff2") format("woff2-variations");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122,U+2212;
}
@font-face{
  font-family:"Instrument Sans"; font-style:italic; font-weight:400 700; font-display:swap;
  src:url("/assets/instrument-sans-latin-wght-italic-7ab87858.woff2") format("woff2-variations");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122,U+2212;
}
@font-face{
  font-family:"Instrument Sans"; font-style:normal; font-weight:400 700; font-display:swap;
  src:url("/assets/instrument-sans-latin-ext-wght-normal-22e1f7d2.woff2") format("woff2-variations");
  unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face{
  font-family:"Instrument Sans"; font-style:italic; font-weight:400 700; font-display:swap;
  src:url("/assets/instrument-sans-latin-ext-wght-italic-bbdf7957.woff2") format("woff2-variations");
  unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;
}

/* ---- IBM Plex Mono (self-hosted, OFL 1.1) — the utility face: kickers,
   fine print, the "coming" badge. Signal scheme, 2026-09-04. ---- */
@font-face{
  font-family:"IBM Plex Mono"; font-style:normal; font-weight:500; font-display:swap;
  src:url("/assets/ibm-plex-mono-latin-500-62c969c7.woff2") format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122,U+2212;
}
@font-face{
  font-family:"IBM Plex Mono"; font-style:normal; font-weight:600; font-display:swap;
  src:url("/assets/ibm-plex-mono-latin-600-ff146818.woff2") format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122,U+2212;
}
@font-face{
  font-family:"IBM Plex Mono"; font-style:normal; font-weight:500; font-display:swap;
  src:url("/assets/ibm-plex-mono-latin-ext-500-3f820b60.woff2") format("woff2");
  unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face{
  font-family:"IBM Plex Mono"; font-style:normal; font-weight:600; font-display:swap;
  src:url("/assets/ibm-plex-mono-latin-ext-600-d0d31521.woff2") format("woff2");
  unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;
}

:root{
  /* SIGNAL (2026-09-04) — retro sci-fi punk. Ultraviolet ground, lavender-white
     ink, one hot accent (signal pink), cyan reserved for the small living
     things: the record light, the kickers. Replaces "studio at night" amber.
     Body text stays 16:1; the character lives in the edges, never the reading. */
  --ink:#ece8ff; --muted:#aaa4c9; --faint:#726c94;
  --vanilla:#0c0a1c; --wash:#141130; --card:#120f29; --line:#2a2650;
  --accent:#ff3d7f;        /* signal pink — buttons, marks, the ledger notes   5.8:1 on --vanilla */
  --accent-soft:#ff7aa8;   /* links + kickers on dark                          8.0:1 */
  --signal:#5ce6ff;        /* cyan — record light, kickers, the "coming" badge 13.2:1 */
  --uv:#3b1e8f;            /* the duotone midtone; gradients and the ribbon */
  /* the hot pink for DARK surfaces that live inside the white tool (the mood
     photo, 2026-09-05). body.app swaps --accent to the deep pink for white;
     these stay hot so a dark component inside the tool can still use them. */
  --accent-hot:#ff3d7f; --accent-hot-soft:#ff7aa8;
  --mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
  --zz-accent:#ff3d7f;     /* logo accent zz on ultraviolet — 5.8:1 */
  --r:2px;                 /* hard corners: the scheme's radius */
  --s1:4px; --s2:8px; --s3:12px; --s4:16px; --s5:24px; --s6:32px; --s7:48px; --s8:88px;
}

/* light surfaces (the tool, bone blocks) swap the accent to a deep pink —
   #ff3d7f on white is 3.4:1 and is banned there; #c9145c is 5.6:1 and white
   text on it is 5.6:1 too, so the same value serves text AND button fills. */
.on-bone, body.app{ --zz-accent:#c9145c; --accent:#c9145c; --accent-soft:#a80e52; }

/* ---- product-UI tokens (dashboard v2, 2026-08-02) ----
   Polaris-informed role naming for the light tool surface: element × tone.
   The lander keeps the studio-at-night vars above; the tool reads these.
   research/dashboard-ux-patterns-2026-08.md has the source patterns. */
:root{
  --ui-bg:#f4f4f2; --ui-surface:#ffffff; --ui-surface-sub:#fcfbfa;
  --ui-ink:#1d1d1b; --ui-body:#4a4a46; --ui-muted:#6e6e68; --ui-faint:#9a978f;
  --ui-line:#e2e2de; --ui-line-soft:#eeede9; --ui-line-strong:#cfcfc9;
  /* tones (bg / border / text triads) */
  --tone-success-bg:#e8f0e5; --tone-success-line:#b9d0b0; --tone-success-ink:#2f5426;
  --tone-warn-bg:#fdf0dd;    --tone-warn-line:#e6c98a;    --tone-warn-ink:#8a5a12;
  --tone-critical-bg:#fbeae5;--tone-critical-line:#e5b8a8;--tone-critical-ink:#7c3a21;
  --tone-info-bg:#e7edf5;    --tone-info-line:#b8c8dd;    --tone-info-ink:#3a5a80;
  /* depth: hairline borders carry structure; shadow is for true overlays only */
  --shadow-rest:0 1px 0 rgba(26,26,26,.06);
  --shadow-pop:0 4px 16px -4px rgba(26,26,26,.18);
  --shadow-modal:0 20px 40px -12px rgba(26,26,26,.3);
  /* radius tiers: cards 10, inputs/buttons 8, chips 4 */
  --r-card:10px; --r-input:8px; --r-chip:4px;
}

/* ---- motion (2026-09-08, design-eng review) ----
   Built-in easings are too weak. Enter/exit → --ease-out; on-screen movement
   → --ease-in-out. Press feedback 160ms, popovers 150ms, modals 200ms. */
:root{
  --ease-out: cubic-bezier(0.23, 1, 0.32, 1);
  --ease-in-out: cubic-bezier(0.77, 0, 0.175, 1);
}
