/* DemandCast tokens.css · v1.0.0 · the ONE token source (Stage A rulings, 30 Jul 2026)
   Every surface imports or aliases this file.
   Rule: after migration, any raw colour/size/shadow outside this file is a defect.

   PALETTE RECONCILIATION (ruled): the DASHBOARD set wins.
   - ink #111756 and canvas #f2f4fb are canon; marketing's #11123c / #f2f3f9 retire.
   - Reds re-ruled in review: red-500 #FF3838, red-600 #DC0000; the shipped #fb3138,
     #e60816 and marketing #ef3038 all retire.
   - Marketing keeps warm paper #fffefa (now core: --dc-paper-warm) and consumes the
     rest as aliases via marketing-aliases.css (--ink, --canvas, --red, --red-dark,
     --paper, --navy-950 → --dc-navy). navy-950 #080844 is retired.
   - Light mode only: no dark theme; dark surfaces are semantic (law 6).

   CHANNEL PALETTE: the TEN-channel set below is ratified project law (Chris,
   2026-07-30). It supersedes the former fixed four (sea #5865D6, rail #C08A12,
   events #C026D3); air #4038C4 carries over unchanged. #5865D6 survives as the
   generic accent --dc-blue-500 (focus rings, gauges), no longer a channel. */
:root {
  color-scheme: light;
  /* ---- primitives ---- */
  --dc-ink: #111756;
  --dc-indigo: #171271;
  --dc-indigo-400: #0FA3B1;
  --dc-navy: #10295d;
  --dc-slate: #3a4079;
  --dc-muted: #5f6791;            /* ruled: darkened from #68709d for AA on canvas */
  --dc-line: #dce1f1;
  --dc-canvas: #f2f4fb;
  --dc-paper: #ffffff;
  --dc-paper-warm: #fffefa;       /* marketing surfaces */
  --dc-red-500: #FF3838;          /* demand heat core · large/bold text only */
  --dc-red-600: #DC0000;          /* demand deep · CTA ground · AA 5.2:1 */
  --dc-orange: #FF8F00;
  --dc-amber: #FBC02D;
  --dc-green: #2b9a63;
  --dc-green-text: #1f7a4d;
  --dc-plum: #9d174d;             /* danger family · never demand */
  --dc-plum-tint: #fdeef4;
  --dc-amber-text: #8a5b00;
  --dc-amber-tint: #fdf3dd;
  --dc-green-tint: #e6f4ec;
  --dc-indigo-tint: #eef0fb;
  /* ---- legacy values preserved for marketing continuity ---- */
  --dc-blue-500: #5865d6;         /* generic accent + focus ring (ex-sea) */
  --dc-blue-300: #aeb8ef;
  --dc-red-400: #ff5a60;          /* gradient start on CTAs */
  --dc-line-strong: #cfd4e8;      /* input borders */
  --dc-soft: #f7f8fc;             /* chip + tile fill */
  --dc-green-600: #1f8c58;
  --dc-sidebar-w: 270px;
  /* ---- channels (main / dark stroke / tint fill) ---- */
  --dc-ch-sea: #008BFF;        --dc-ch-sea-dark: #0D63B8;        --dc-ch-sea-tint: #D6EBFF;
  --dc-ch-air: #4038C4;        --dc-ch-air-dark: #2A2489;        --dc-ch-air-tint: #E2E0F8;
  --dc-ch-rail: #123D1C;       --dc-ch-rail-accent: #266210;     --dc-ch-rail-tint: #DEEAD8;
  --dc-ch-coach: #2A7C13;      --dc-ch-coach-dark: #1E5A0E;      --dc-ch-coach-tint: #E0EFDA;
  --dc-ch-tours: #FF3483;      --dc-ch-tours-dark: #C21A5F;      --dc-ch-tours-tint: #FFDCEA;
  --dc-ch-events: #F6850C;     --dc-ch-events-dark: #B85E04;     --dc-ch-events-tint: #FDE7CD;
  --dc-ch-weather: #0FA3B1;    --dc-ch-weather-dark: #0B6E78;    --dc-ch-weather-tint: #D3F1F4;
  --dc-ch-hotels: #DF301C;     --dc-ch-hotels-dark: #A32313;     --dc-ch-hotels-tint: #FBE3DF;
  --dc-ch-traffic: #C08A12;    --dc-ch-traffic-dark: #8A620A;    --dc-ch-traffic-tint: #F5E8C8;
  --dc-ch-hyperlocal: #8140DC; --dc-ch-hyperlocal-accent: #5E2BA8; --dc-ch-hyperlocal-tint: #EBE3F9;
  /* Display tones (Chris 2026-09-01): map Places pins + sentinel pulse. */
  --dc-ch-places: #3A86FF;     --dc-ch-places-tint: #DCEAFF;
  --dc-ch-sentinel: #92003A;   --dc-ch-sentinel-tint: #F3DCE4;
  /* ---- demand heat ramp (the only legal tint source for demand) ---- */
  --dc-heat-0: #eef1f9;  /* quiet · index ≤19 */
  --dc-heat-1: #ffddd5;  /* low · 20–39 */
  --dc-heat-2: #ff9d8c;  /* building · 40–69 */
  --dc-heat-3: #FF3838;  /* busy · 70–84 · white text ≥700 */
  --dc-heat-4: #DC0000;  /* peak · 85–100 */
  /* ---- semantic ---- */
  --dc-surface-canvas: var(--dc-canvas);
  --dc-surface-paper: var(--dc-paper);
  --dc-surface-raised: var(--dc-paper);
  --dc-surface-inverse: var(--dc-indigo);       /* app world panels, sidebar */
  --dc-surface-inverse-marketing: var(--dc-navy);
  --dc-canvas-glow: radial-gradient(1100px 460px at 82% 8%, rgba(255, 56, 56, .08), transparent 62%);
  --dc-text-primary: var(--dc-ink);
  --dc-text-secondary: var(--dc-muted);
  --dc-text-on-dark: #ffffff;
  --dc-text-on-dark-2: rgba(255, 255, 255, .72);
  --dc-text-demand: var(--dc-red-600);
  --dc-border-line: var(--dc-line);
  --dc-border-focus: var(--dc-indigo);
  --dc-interactive-cta: var(--dc-red-600);
  --dc-interactive-link: var(--dc-indigo);
  --dc-interactive-hover: rgba(23, 18, 113, .06);
  --dc-interactive-active: rgba(23, 18, 113, .10);
  --dc-interactive-disabled-text: #a3aacb;
  --dc-interactive-disabled-ground: #eef0f9;
  --dc-status-positive: var(--dc-green);
  --dc-status-positive-text: var(--dc-green-text);
  --dc-status-warning: var(--dc-amber);
  --dc-status-info: var(--dc-indigo);
  --dc-status-danger: var(--dc-plum);
  --dc-veil-weekend: rgba(16, 41, 93, .05);
  /* ---- elevation (indigo tinted, never black) ---- */
  --dc-e1: 0 1px 2px rgba(17, 23, 86, .06);
  --dc-e2: 0 8px 24px rgba(17, 23, 86, .10);
  --dc-e3: 0 20px 48px rgba(16, 41, 93, .18);
  /* ---- radius ---- */
  --dc-r-0: 0; --dc-r-sm: 8px; --dc-r-md: 12px; --dc-r-lg: 16px; --dc-r-xl: 22px; --dc-r-pill: 999px;
  /* ---- space · 4px scale ---- */
  --dc-s-1: 4px; --dc-s-2: 8px; --dc-s-3: 12px; --dc-s-4: 16px; --dc-s-5: 20px;
  --dc-s-6: 24px; --dc-s-8: 32px; --dc-s-10: 40px; --dc-s-12: 48px; --dc-s-16: 64px;
  /* ---- motion ---- */
  --dc-t-fast: 120ms; --dc-t-base: 200ms; --dc-t-slow: 320ms;
  --dc-ease-out: cubic-bezier(.2, .7, .2, 1);
  --dc-ease-in-out: cubic-bezier(.4, 0, .2, 1);
  /* ---- type (Manrope everywhere · Georgia lede on marketing only) ---- */
  --dc-font: 'Manrope', system-ui, sans-serif;
  --dc-font-lede-marketing: Georgia, serif;
  --dc-font-email: Helvetica, Arial, sans-serif;
  /* type scale · ≥1200 (768+: display 36/h1 28/h2 21 · phone: 30/24/19) */
  --dc-fs-display: 44px; --dc-lh-display: 1.09; --dc-ls-display: -0.02em;
  --dc-fs-h1: 32px; --dc-lh-h1: 1.18; --dc-ls-h1: -0.015em;
  --dc-fs-h2: 24px; --dc-lh-h2: 1.25;
  --dc-fs-h3: 19px; --dc-lh-h3: 1.35;
  --dc-fs-h4: 16px; --dc-lh-h4: 1.5;
  --dc-fs-h5: 14px; --dc-lh-h5: 1.45;
  --dc-fs-lede: 19px; --dc-lh-lede: 1.58;
  --dc-fs-body: 15px; --dc-lh-body: 1.6;
  --dc-fs-body-sm: 13.5px; --dc-lh-body-sm: 1.5;
  --dc-fs-caption: 12.5px; --dc-lh-caption: 1.45;
  --dc-fs-label: 11.5px; --dc-ls-label: 0.08em; /* caps labels · weight 800 */
}
