/* Igggy design tokens — GENERATED by igggy-design (tokens/generate.mjs). Do not edit.
 * Source of truth: igggy-design/tokens/*.json. To change a value, change it there, run
 * `node tokens/generate.mjs`, then `node bin/sync.mjs` to copy this file into each
 * surface. `node bin/check-drift.mjs` fails when a copy is stale.
 */
:root {
  /* Surfaces (D29: neutral grays) */
  --paper: #FAFAFA;
  --paper-2: #F1F1F1;
  --card: #FFFFFF;
  --surface-elevated: #EEEEEE;

  /* Ink (text tiers). --ink-rgb is for alpha washes: rgba(var(--ink-rgb), 0.04) */
  --ink: #1F1F1F;
  --ink-2: #565656;
  --ink-3: #898989;
  --ink-rgb: 31, 31, 31;

  /* Hairlines */
  --hairline: #E3E3E3;
  --hairline-2: #EBEBEB;
  --rule: rgba(31, 31, 31, 0.055);

  /* The live signal. Ember appears only while something is live (WIRING rule 3) */
  --ember-live: #E8590C;
  --ember-text: #C2410C;
  --graphite: #545454;
  --ink-fade: #B3B3B3;
  --lattice: rgba(31, 31, 31, 0.1);
  --lattice-baseline: rgba(31, 31, 31, 0.22);

  /* Action and status. --accent is a 500 step: rings and accents, never text (WIRING rule 1) */
  --accent: #0A7AFF;
  --accent-text: #054DA4;
  --action: #0062D6;
  --success: #256B3B;
  --success-fill: #256B3B;
  --success-wash: #E6F0E7;
  --error: #A63A2B;
  --error-deep: #8F2F23;
  --error-wash: #F7E7E2;

  /* Families (D26). 100 wash, 500 accent, 600 fill, 700 text; green fills at 700 (X6) */
  --blue-100: #E6EFF9;
  --blue-200: #C3D9F4;
  --blue-300: #8AB8EF;
  --blue-400: #4B97F2;
  --blue-500: #0A7AFF;
  --blue-600: #0062D6;
  --blue-700: #054DA4;
  --blue-800: #0A3970;
  --blue-900: #0C2645;
  --red-100: #F7E7E2;
  --red-200: #EAD0CD;
  --red-300: #DBA69F;
  --red-400: #CF796D;
  --red-500: #CD4E3D;
  --red-600: #A63A2B;
  --red-700: #8F2F23;
  --red-800: #58221B;
  --red-900: #3B1712;
  --green-100: #E6F0E7;
  --green-200: #CFE7D7;
  --green-300: #A4D5B4;
  --green-400: #76C78F;
  --green-500: #49C06F;
  --green-600: #379F58;
  --green-700: #256B3B;
  --green-800: #245634;
  --green-900: #1B3724;

  /* Radii */
  --radius-badge: 4px;
  --radius-panel: 8px;
  --radius-card: 16px;
  --radius-hud: 20px;
  --radius-capsule: 9999px;

  /* Elevation */
  --shadow-card: 0 1px 3px rgba(31, 31, 31, 0.07);
  --shadow-hud: 0 12px 40px rgba(31, 31, 31, 0.14), 0 2px 8px rgba(31, 31, 31, 0.06);

  /* Spacing (D27) */
  --space-2: 2px;
  --space-4: 4px;
  --space-8: 8px;
  --space-12: 12px;
  --space-16: 16px;
  --space-24: 24px;
  --space-32: 32px;
  --space-40: 40px;
  --space-48: 48px;

  /* Layout (D21) */
  --content-max: 900px;
  --reading-max: 620px;
  --gutter: 32px;
  --section-gap: 48px;
  --row-inset: 12px;

  /* Type. System stacks until the web faces are hosted (see type.json webStack) */
  --font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
  --font-serif: ui-serif, "New York", Georgia, "Times New Roman", serif;
  --font-mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;
  --sans: var(--font-sans);
  --serif: var(--font-serif);
  --mono: var(--font-mono);
  --text-micro: 9px;
  --text-eyebrow: 11px;
  --text-caption: 12px;
  --text-label: 13px;
  --text-timer: 13px;
  --text-body: 14px;
  --text-reading: 15px;
  --text-lede: 16px;
  --text-serif-medium: 22px;
  --text-title: 25px;
  --text-serif-large: 28px;
  --text-display: 42px;
  --font-normal: 400;
  --font-medium: 500;
  --font-semibold: 600;

  /* Motion. State commits first; these only decorate it (WIRING rule 4) */
  --hero-curve: cubic-bezier(0.3, 1.18, 0.35, 1);
  --hero-duration: 550ms;
  --settle-stagger: 80ms;
  --micro-duration: 180ms;
  --breathe-period: 8000ms;
  --fetch-loop: 1700ms;
  --ember-pulse: 1600ms;
}
