/* ==========================================================================
   tokens.css — the single source of design truth.
   Owned by the lead. Components must never declare a raw colour, font stack,
   duration, or easing curve; read these tokens instead.
   ========================================================================== */

@font-face {
  font-family: 'Archivo';
  src: url('../fonts/archivo-latin-var.woff2') format('woff2-variations');
  font-weight: 400 700;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
    U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
    U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'JetBrains Mono';
  src: url('../fonts/jetbrains-mono-latin-var.woff2') format('woff2-variations');
  font-weight: 400 700;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
    U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
    U+2212, U+2215, U+FEFF, U+FFFD;
}

:root {
  /* ---- ground: paper ---------------------------------------------------- */
  --paper: #f3f1ec;
  --paper-2: #e9e6dd;
  --paper-3: #ddd9ce;
  --ink: #121210;
  --ink-2: #4a4843;
  --ink-3: #767368;
  --rule: #d3cec2;

  /* ---- ground: night ---------------------------------------------------- */
  --night: #0c0d0c;
  --night-2: #171916;
  --night-3: #060706;
  --snow: #f5f4ef;
  --snow-2: #a3a79d;
  --snow-3: #7c8078;
  --rule-night: #292c27;

  /* ---- the display ------------------------------------------------------ */
  --lcd: #b0af9c;
  --lcd-hi: #c0bfad;
  --lcd-dim: #9f9d8e;
  --lcd-seg: #16180f;
  --lcd-seg-off: rgba(22, 24, 15, 0.05);
  --lcd-seg-off-strong: rgba(22, 24, 15, 0.085);
  --backlight: #b9e05a;
  --backlight-field: #a8cf55;
  --backlight-glow: rgba(185, 224, 90, 0.4);

  /* ---- the object's own printed colours (sampled from Casio renders) ---- */
  --casio-blue: #025ea9;
  --step-gold: #c29d59;
  --wr-red: #97191a;
  --button-steel: #c9cbcd;
  --resin: #1a1b1b;
  --resin-hi: #34363a;

  /* ---- signal / status -------------------------------------------------- */
  --signal: #1e50d2;
  --signal-hover: #1740ad;
  --signal-ink: #ffffff;
  --alert: #b23417;
  --ok: #2f6d3f;

  /* ---- ground-scoped aliases (default: paper) --------------------------- */
  --bg: var(--paper);
  --bg-2: var(--paper-2);
  --bg-3: var(--paper-3);
  --fg: var(--ink);
  --fg-2: var(--ink-2);
  --fg-3: var(--ink-3);
  --rule-c: var(--rule);
  --signal-c: var(--signal);
  --alert-c: var(--alert);
  --shadow-c: rgba(18, 18, 16, 0.14);

  /* ---- type ------------------------------------------------------------- */
  --font-display: 'Archivo', 'Helvetica Neue', Helvetica, Arial, sans-serif;
  --font-mono: 'JetBrains Mono', ui-monospace, 'SF Mono', SFMono-Regular,
    Menlo, Consolas, monospace;

  --fs-display: clamp(2.85rem, 10.5vw, 8.25rem);
  --fs-h1: clamp(2.1rem, 6.4vw, 4.35rem);
  --fs-h2: clamp(1.72rem, 4.3vw, 3.05rem);
  --fs-h3: clamp(1.24rem, 2.5vw, 1.72rem);
  --fs-h4: clamp(1.06rem, 1.6vw, 1.22rem);
  --fs-lead: clamp(1.12rem, 2.15vw, 1.42rem);
  --fs-body: clamp(1rem, 0.94rem + 0.28vw, 1.125rem);
  --fs-small: 0.9375rem;
  --fs-micro: 0.75rem;
  --fs-nano: 0.6875rem;

  --lh-tight: 0.94;
  --lh-snug: 1.12;
  --lh-head: 1.16;
  --lh-body: 1.62;

  --ls-display: -0.035em;
  --ls-head: -0.022em;
  --ls-label: 0.13em;

  --measure: 62ch;
  --measure-tight: 46ch;

  /* ---- space ------------------------------------------------------------ */
  --s-1: 0.25rem;
  --s-2: 0.5rem;
  --s-3: 0.75rem;
  --s-4: 1rem;
  --s-5: 1.25rem;
  --s-6: 1.5rem;
  --s-8: 2rem;
  --s-10: 2.5rem;
  --s-12: 3rem;
  --s-14: 3.5rem;
  --s-16: 4rem;
  --s-20: 5rem;
  --s-24: 6rem;
  --s-32: 8rem;

  --gutter: clamp(1.25rem, 5vw, 3.5rem);
  --band-y: clamp(4rem, 10vw, 8.5rem);
  --band-y-tight: clamp(2.75rem, 6vw, 5rem);

  --w-prose: var(--measure);
  --w-content: 71rem;   /* 1136px */
  --w-wide: 90rem;      /* 1440px */

  /* ---- form ------------------------------------------------------------- */
  --r-sm: 4px;
  --r-md: 10px;
  --r-lg: 18px;
  --r-xl: 28px;
  --r-pill: 999px;
  --hairline: 1px;
  --tap: 44px;

  --shadow-1: 0 1px 2px var(--shadow-c);
  --shadow-2: 0 2px 6px var(--shadow-c), 0 12px 28px -12px var(--shadow-c);
  --shadow-3: 0 4px 14px var(--shadow-c), 0 32px 64px -24px var(--shadow-c);

  /* ---- motion ----------------------------------------------------------- */
  --dur-1: 120ms;
  --dur-2: 220ms;
  --dur-3: 400ms;
  --dur-4: 700ms;
  --ease-out: cubic-bezier(0.2, 0.8, 0.25, 1);
  --ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
  --ease-snap: cubic-bezier(0.16, 1, 0.3, 1);

  /* ---- layering --------------------------------------------------------- */
  --z-base: 0;
  --z-sticky: 40;
  --z-nav: 60;
  --z-overlay: 80;
  --z-toast: 90;

  color-scheme: light;
}

/* --------------------------------------------------------------------------
   Ground scoping. Components author against --fg / --bg / --rule-c and are
   automatically correct inside either band.
   -------------------------------------------------------------------------- */

.band--paper {
  --bg: var(--paper);
  --bg-2: var(--paper-2);
  --bg-3: var(--paper-3);
  --fg: var(--ink);
  --fg-2: var(--ink-2);
  --fg-3: var(--ink-3);
  --rule-c: var(--rule);
  --signal-c: var(--signal);
  --alert-c: var(--alert);
  --shadow-c: rgba(18, 18, 16, 0.14);
  background: var(--bg);
  color: var(--fg);
}

.band--night {
  --bg: var(--night);
  --bg-2: var(--night-2);
  --bg-3: var(--night-3);
  --fg: var(--snow);
  --fg-2: var(--snow-2);
  --fg-3: var(--snow-3);
  --rule-c: var(--rule-night);
  --signal-c: #86a8ff;
  --alert-c: #ff8f70;
  --shadow-c: rgba(0, 0, 0, 0.6);
  background: var(--bg);
  color: var(--fg);
  color-scheme: dark;
}
