/* Source: src/index.css, src/components/ui, src/lib/consist.js and the
   installed Tailwind theme, surveyed 2026-11-05. Existing UI values preserved.
   Raw palette and component dimensions live here; views use semantic roles. */
:root {
  /* Owner-selected primary, 2026-11-05. Other brand steps are derived. */
  --brand-primary: #ff5631;
  --brand-50: color-mix(in srgb, var(--brand-primary) 5%, var(--pure-white));
  --brand-100: color-mix(in srgb, var(--brand-primary) 10%, var(--pure-white));
  --brand-200: color-mix(in srgb, var(--brand-primary) 25%, var(--pure-white));
  --brand-300: color-mix(in srgb, var(--brand-primary) 45%, var(--pure-white));
  --brand-400: color-mix(in srgb, var(--brand-primary) 75%, var(--pure-white));
  --brand-500: var(--brand-primary);
  --brand-600: color-mix(in srgb, var(--brand-primary) 80%, var(--pure-black));
  --brand-700: color-mix(in srgb, var(--brand-primary) 60%, var(--pure-black));
  --brand-800: color-mix(in srgb, var(--brand-primary) 40%, var(--pure-black));
  --brand-900: color-mix(in srgb, var(--brand-primary) 25%, var(--pure-black));
  --amber-100: oklch(96.2% 0.059 95.617);
  --amber-200: oklch(92.4% 0.12 95.746);
  --amber-300: oklch(87.9% 0.169 91.605);
  --amber-400: oklch(82.8% 0.189 84.429);
  --amber-50: oklch(98.7% 0.022 95.277);
  --amber-500: oklch(76.9% 0.188 70.08);
  --amber-600: oklch(66.6% 0.179 58.318);
  --amber-700: oklch(55.5% 0.163 48.998);
  --amber-800: oklch(47.3% 0.137 46.201);
  --amber-900: oklch(41.4% 0.112 45.904);
  --amber-950: oklch(27.9% 0.077 45.635);
  --emerald-100: oklch(95% 0.052 163.051);
  --emerald-200: oklch(90.5% 0.093 164.15);
  --emerald-300: oklch(84.5% 0.143 164.978);
  --emerald-400: oklch(76.5% 0.177 163.223);
  --emerald-50: oklch(97.9% 0.021 166.113);
  --emerald-500: oklch(69.6% 0.17 162.48);
  --emerald-600: oklch(59.6% 0.145 163.225);
  --emerald-700: oklch(50.8% 0.118 165.612);
  --emerald-800: oklch(43.2% 0.095 166.913);
  --emerald-900: oklch(37.8% 0.077 168.94);
  --emerald-950: oklch(26.2% 0.051 172.552);
  --indigo-300: oklch(78.5% 0.115 274.713);
  --indigo-400: oklch(67.3% 0.182 276.935);
  --orange-400: oklch(75% 0.183 55.934);
  --red-100: oklch(93.6% 0.032 17.717);
  --red-200: oklch(88.5% 0.062 18.334);
  --red-300: oklch(80.8% 0.114 19.571);
  --red-400: oklch(70.4% 0.191 22.216);
  --red-50: oklch(97.1% 0.013 17.38);
  --red-500: oklch(63.7% 0.237 25.331);
  --red-600: oklch(57.7% 0.245 27.325);
  --red-700: oklch(50.5% 0.213 27.518);
  --red-800: oklch(44.4% 0.177 26.899);
  --red-900: oklch(39.6% 0.141 25.723);
  --red-950: oklch(25.8% 0.092 26.042);
  --sky-300: oklch(82.8% 0.111 230.318);
  --sky-400: oklch(74.6% 0.16 232.661);
  --sky-500: oklch(68.5% 0.169 237.323);
  --slate-400: oklch(70.4% 0.04 256.788);
  --violet-300: oklch(81.1% 0.111 293.571);
  --violet-400: oklch(70.2% 0.183 293.541);
  --yellow-300: oklch(90.5% 0.182 98.111);
  --zinc-100: oklch(96.7% 0.001 286.375);
  --zinc-200: oklch(92% 0.004 286.32);
  --zinc-300: oklch(87.1% 0.006 286.286);
  --zinc-400: oklch(70.5% 0.015 286.067);
  --zinc-50: oklch(98.5% 0 none);
  --zinc-500: oklch(55.2% 0.016 285.938);
  --zinc-600: oklch(44.2% 0.017 285.786);
  --zinc-700: oklch(37% 0.013 285.805);
  --zinc-800: oklch(27.4% 0.006 286.033);
  --zinc-900: oklch(21% 0.006 285.885);
  --zinc-950: oklch(14.1% 0.005 285.823);
  --pure-white: oklch(1 0 0);
  --pure-black: oklch(0 0 0);
  --typeface-body: "Inter", ui-sans-serif, system-ui, sans-serif;
  --typeface-display: var(--typeface-body);
  --typeface-code: "JetBrains Mono", ui-monospace, monospace;
  --space-unit: 0.25rem;
  --lh-tight: 1.25;
  --lh-snug: 1.375;
  --lh-normal: 1.5;
  --fs-micro: 0.5625rem;
  --fs-tiny: 0.625rem;
  --fs-caption: 0.6875rem;
  --fs-control: 0.8rem;
  --fs-xs: 0.75rem;
  --fs-sm: 0.875rem;
  --fs-base: 1rem;
  --fs-lg: 1.125rem;
  --fs-xl: 1.25rem;
  --fs-2xl: 1.5rem;
  --fs-3xl: 1.875rem;
  --fs-4xl: 2.25rem;
  --fs-5xl: 3rem;
  --rounded-sm: calc(var(--radius) * 0.6);
  --rounded-md: calc(var(--radius) * 0.8);
  --rounded-lg: var(--radius);
  --rounded-xl: calc(var(--radius) * 1.4);
  --rounded-full: 9999px;
  --rounded-chip: 3px;
  --rounded-swatch: 2px;
  --control-sm: 28px;
  --control-md: 32px;
  --control-lg: 36px;
  --control-touch: 44px;
  --radius-control: min(var(--rounded-md), 12px);
  --radius-control-xs: min(var(--rounded-md), 10px);
  --switch-height: 18.4px;
  --switch-small-height: 14px;
  --switch-thumb-shift: calc(100% - 2px);
  --tabs-padding: 3px;
  --tabs-trigger-height: calc(100% - 1px);
  --tabs-underline-offset: -5px;
  --tooltip-arrow-shift: calc(-50% - 2px);
  --drawer-max-height: 58dvh;
  --note-max-width: 34ch;
  --duration-fast: 150ms;
  --duration-base: 150ms;
  --motion-ease: cubic-bezier(0.4, 0, 0.2, 1);
  --map-control-surface: color-mix(in oklch, var(--background) 80%, transparent);
  --tooltip-background: rgba(15,17,24,0.92);
  --tooltip-foreground: #e2e8f0;
  --tooltip-border: rgba(255,255,255,0.08);
  --tooltip-padding-x: 9px;
  --tooltip-padding-y: 6px;
  --tooltip-radius: 8px;
  --elevation-2xs: 0 1px rgb(0 0 0 / 0.05);
  --elevation-xs: 0 1px 2px 0 rgb(0 0 0 / 0.05);
  --elevation-sm: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
  --elevation-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
  --elevation-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
  --elevation-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);
  --elevation-2xl: 0 25px 50px -12px rgb(0 0 0 / 0.25);
  --elevation-inner: inset 0 2px 4px 0 rgb(0 0 0 / 0.05);
  --elevation-button: none;
  --bg: var(--background);
  --surface: var(--card);
  --surface-muted: var(--muted);
  --surface-sunken: var(--background);
  --line: var(--border);
  --line-strong: var(--input);
  --fg: var(--foreground);
  --fg-muted: var(--muted-foreground);
  --fg-subtle: var(--muted-foreground);
  --fg-inverse: var(--primary-foreground);
  --primary-hover: color-mix(in oklch, var(--primary) 80%, transparent);
  --primary-soft: color-mix(in oklch, var(--primary) 15%, transparent);
  --primary-fg: var(--primary-foreground);
  --primary-gradient: none;
  --secondary-hover: color-mix(in oklch, var(--secondary), var(--foreground) 5%);
  --accent-hover: var(--accent);
  --accent-soft: var(--accent);
  --accent-fg: var(--accent-foreground);
  --accent-gradient: none;
  --danger: var(--destructive);
  --danger-soft: color-mix(in oklch, var(--destructive) 15%, transparent);
  --danger-fg: var(--pure-white);
  --success: var(--live);
  --success-soft: color-mix(in oklch, var(--live) 15%, transparent);
  --warning: var(--amber-700);
  --warning-soft: var(--amber-50);
  --focus: var(--ring);
  --coach-loco: var(--red-500);
  --coach-1a: var(--amber-300);
  --coach-2a: var(--sky-300);
  --coach-3a: var(--sky-500);
  --coach-ec: var(--amber-300);
  --coach-cc: var(--sky-400);
  --coach-sl: var(--indigo-400);
  --coach-2s: var(--indigo-300);
  --coach-gs: var(--slate-400);
  --coach-pc: var(--orange-400);
  --coach-eog: var(--zinc-500);
  --coach-slr: var(--zinc-500);
  --coach-dmc: var(--violet-400);
  --coach-tc: var(--violet-300);
  --coach-fc: var(--yellow-300);

}

:root {
  --radius: 0.625rem;
  --background: var(--pure-white);
  --foreground: var(--zinc-950);
  --card: var(--pure-white);
  --card-foreground: var(--zinc-950);
  --popover: var(--pure-white);
  --popover-foreground: var(--zinc-950);
  --primary: var(--brand-primary);
  --primary-foreground: var(--zinc-950);
  --secondary: var(--zinc-100);
  --secondary-foreground: var(--zinc-900);
  --muted: var(--zinc-100);
  --muted-foreground: var(--zinc-500);
  --accent: var(--zinc-100);
  --accent-foreground: var(--zinc-900);
  --destructive: var(--red-600);
  --border: var(--zinc-200);
  --input: var(--zinc-200);
  --ring: var(--brand-primary);
  --live: var(--emerald-600);
}

.dark,
[data-theme="dark"] {
  --background: var(--zinc-950);
  --foreground: var(--zinc-50);
  --card: var(--zinc-900);
  --card-foreground: var(--zinc-50);
  --popover: var(--zinc-900);
  --popover-foreground: var(--zinc-50);
  --primary: var(--brand-primary);
  --primary-foreground: var(--zinc-950);
  --secondary: var(--zinc-800);
  --secondary-foreground: var(--zinc-50);
  --muted: var(--zinc-800);
  --muted-foreground: var(--zinc-400);
  --accent: var(--zinc-800);
  --accent-foreground: var(--zinc-50);
  --destructive: var(--red-400);
  --border: oklch(1 0 0 / 10%);
  --input: oklch(1 0 0 / 15%);
  --ring: var(--brand-primary);
  --live: var(--emerald-400);
}
:root { color-scheme: light; }
.dark, [data-theme="dark"] {
  color-scheme: dark;
  --warning: var(--amber-400);
  --warning-soft: color-mix(in oklch, var(--amber-400) 15%, transparent);
}

/* Source: the existing static timetable PAGE_CSS in scripts/seo-pages.mjs.
   Legacy page values are preserved, including its domain color key. */
:root {
  --page-background: #09090b;
  --page-panel: #18181b;
  --page-border: #27272a;
  --page-foreground: #f4f4f5;
  --page-muted: #a1a1aa;
  --page-dim: #71717a;
  --page-primary: var(--brand-primary);
  --page-primary-hover: var(--brand-400);
  --page-badge-surface: #ffffff14;
  --page-badge-foreground: #d4d4d8;
  --page-card-surface: #18181b80;
  --page-coach-fallback: #a1a1aacc;
  --page-coach-loco: #ef4444cc;
  --page-coach-first: #fcd34dcc;
  --page-coach-second: #7dd3fccc;
  --page-coach-third: #0ea5e9cc;
  --page-coach-chair: #38bdf8cc;
  --page-coach-sleeper: #818cf8cc;
  --page-coach-second-sitting: #a5b4fccc;
  --page-coach-general: #94a3b8cc;
  --page-coach-pantry: #fb923ccc;
  --page-coach-power: #71717acc;
  --page-coach-driving: #a78bfacc;
  --page-coach-trailer: #c4b5fdcc;
  --page-coach-toy: #fde047cc;
  --page-size-1: 1px;
  --page-size-2: 2px;
  --page-size-3: 3px;
  --page-size-4: 4px;
  --page-size-6: 6px;
  --page-size-7: 7px;
  --page-size-8: 8px;
  --page-size-9: 9px;
  --page-size-10: 10px;
  --page-size-11: 11px;
  --page-size-12: 12px;
  --page-size-13: 13px;
  --page-size-14: 14px;
  --page-size-15: 15px;
  --page-size-16: 16px;
  --page-size-18: 18px;
  --page-size-20: 20px;
  --page-size-24: 24px;
  --page-size-26: 26px;
  --page-size-30: 30px;
  --page-size-40: 40px;
  --page-size-120: 120px;
  --page-size-160: 160px;
  --page-size-420: 420px;
  --page-size-960: 960px;
}

/* Source: existing static timetable layout, migrated without a redesign. */
:root{color-scheme:dark}
*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--page-background);color:var(--page-foreground);font:var(--page-size-15)/1.5 Inter,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
a{color:var(--page-primary)}a:hover{color:var(--page-primary-hover)}
.top{display:flex;align-items:center;justify-content:space-between;gap:var(--page-size-16);max-width:var(--page-size-960);margin:0 auto;padding:var(--page-size-16)}
.brand{display:flex;align-items:center;gap:var(--page-size-8);color:var(--page-foreground);font-weight:600;text-decoration:none}
.mark{display:grid;place-items:center;width:var(--page-size-24);height:var(--page-size-24);border-radius:var(--page-size-6);background:var(--page-primary);color:var(--page-background);font-size:var(--page-size-11);font-weight:900}
.top nav{display:flex;gap:var(--page-size-16);font-size:var(--page-size-13)}.top nav a{color:var(--page-muted);text-decoration:none}.top nav a:hover{color:var(--page-primary)}
main{max-width:var(--page-size-960);margin:0 auto;padding:0 var(--page-size-16)}
.hero{padding:var(--page-size-24) 0 var(--page-size-8)}
.eyebrow{display:flex;flex-wrap:wrap;align-items:center;gap:var(--page-size-8);margin:0;font-size:var(--page-size-13);color:var(--page-muted)}
.eyebrow .num{font:600 var(--page-size-14) ui-monospace,"JetBrains Mono",monospace;color:var(--page-primary)}
.badge{display:inline-flex;align-items:center;gap:var(--page-size-6);padding:var(--page-size-2) var(--page-size-8);border-radius:var(--page-size-6);background:var(--page-badge-surface);color:var(--page-badge-foreground);font-size:var(--page-size-11);letter-spacing:.04em;text-transform:uppercase}
.badge i{width:var(--page-size-8);height:var(--page-size-8);border-radius:50%}
h1{margin:var(--page-size-8) 0 var(--page-size-4);font-size:clamp(var(--page-size-26),5vw,var(--page-size-40));line-height:1.15;letter-spacing:-.02em}
.route{margin:0;color:var(--page-muted)}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(var(--page-size-120),1fr));gap:var(--page-size-8);margin:var(--page-size-20) 0}
.stats div{padding:var(--page-size-10) var(--page-size-12);border-radius:var(--page-size-12);background:var(--page-panel)}
dt{font-size:var(--page-size-10);letter-spacing:.08em;text-transform:uppercase;color:var(--page-dim)}
dd{margin:0;font:600 var(--page-size-18) ui-monospace,"JetBrains Mono",monospace;font-variant-numeric:tabular-nums}dd small{font-size:var(--page-size-11);color:var(--page-muted)}
.cta{display:inline-block;padding:var(--page-size-10) var(--page-size-18);border-radius:var(--page-size-12);background:var(--page-primary);color:var(--page-background);font-weight:700;text-decoration:none}.cta:hover{background:var(--page-primary-hover);color:var(--page-background)}
.card{margin:var(--page-size-16) 0;padding:var(--page-size-16);border:var(--page-size-1) solid var(--page-border);border-radius:var(--page-size-16);background:var(--page-card-surface)}
h2{margin:0 0 var(--page-size-12);font-size:var(--page-size-16)}h2 small{margin-left:var(--page-size-6);font-size:var(--page-size-12);font-weight:400;color:var(--page-dim)}
svg{display:block;width:100%;height:auto;max-height:var(--page-size-420)}
polyline{fill:none;stroke:var(--page-primary);stroke-width:2.5;stroke-linejoin:round;stroke-linecap:round}
circle.stop{fill:var(--page-background);stroke:var(--page-foreground);stroke-width:1.5}circle.end{fill:var(--page-primary);stroke:var(--page-background);stroke-width:2}
.rake{display:flex;gap:var(--page-size-3);margin:0;padding:0 0 var(--page-size-6);list-style:none;overflow-x:auto}
.car{flex:none;min-width:var(--page-size-30);padding:var(--page-size-4) var(--page-size-4);border-radius:var(--page-size-3);background:var(--page-coach-fallback);color:var(--page-background);font:700 var(--page-size-10)/1.2 system-ui,sans-serif;text-align:center}
.car.head{min-width:var(--page-size-40);border-radius:var(--page-size-9) var(--page-size-3) var(--page-size-3) var(--page-size-9)}
.c-LOCO{background:var(--page-coach-loco)}.c-1A,.c-EC{background:var(--page-coach-first)}.c-2A{background:var(--page-coach-second)}.c-3A{background:var(--page-coach-third)}.c-CC{background:var(--page-coach-chair)}.c-SL{background:var(--page-coach-sleeper)}.c-2S{background:var(--page-coach-second-sitting)}.c-GS{background:var(--page-coach-general)}.c-PC{background:var(--page-coach-pantry)}.c-EOG,.c-SLR{background:var(--page-coach-power)}.c-DMC{background:var(--page-coach-driving)}.c-TC{background:var(--page-coach-trailer)}.c-FC{background:var(--page-coach-toy)}
.note{margin:var(--page-size-8) 0 0;font-size:var(--page-size-12);color:var(--page-dim)}
.scroll{overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:var(--page-size-13)}
th{position:sticky;top:0;background:var(--page-panel);font-size:var(--page-size-10);letter-spacing:.08em;text-transform:uppercase;color:var(--page-dim);font-weight:600}
th,td{padding:var(--page-size-7) var(--page-size-8);border-bottom:var(--page-size-1) solid var(--page-border);text-align:left;white-space:nowrap}
td.w{white-space:normal;min-width:var(--page-size-160)}
.t,.num{text-align:right;font-family:ui-monospace,"JetBrains Mono",monospace;font-variant-numeric:tabular-nums}.num{color:var(--page-muted)}
.code{color:var(--page-dim);font-size:var(--page-size-11);font-family:ui-monospace,monospace}
footer{max-width:var(--page-size-960);margin:var(--page-size-24) auto 0;padding:var(--page-size-16) var(--page-size-16) var(--page-size-40);font-size:var(--page-size-12);color:var(--page-dim)}footer a{color:var(--page-muted)}
