:root{--bg:#101719;--panel:#192326;--ink:#eef4ed;--muted:#9baeb0;--lime:#c9f481;--border:#324044}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:14px 'DM Sans',sans-serif}header{height:94px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:55px;padding:0 5%}.brand{display:flex;align-items:center;gap:12px;font-size:35px;color:var(--lime);text-decoration:none}.brand span{font-size:13px;line-height:1.15;letter-spacing:2px;color:var(--ink);font-weight:700}.edition{font-size:11px;letter-spacing:2px}.edition small{letter-spacing:0;color:var(--muted);line-height:2}#health{margin-left:auto;border:1px solid var(--border);padding:10px 16px;border-radius:30px;font-size:12px;color:#ffc88a}#health.fresh{color:var(--lime)}main{max-width:1600px;margin:auto;padding:40px 5%}.intro{display:flex;justify-content:space-between;align-items:center;margin-bottom:40px}.eyebrow{font-size:10px;letter-spacing:2.1px;font-weight:700;color:var(--lime);margin:0 0 16px}h1,h2,strong{font-family:'Space Grotesk',sans-serif}h1{font-size:clamp(38px,4.8vw,72px);line-height:1.05;letter-spacing:-3px;margin:0}h1 em{font-style:normal;color:var(--lime)}.intro>p{color:var(--muted);line-height:1.9}.intro>p span{color:var(--ink)}.metrics{display:grid;grid-template-columns:1fr 1fr 1fr;border:1px solid var(--border);border-radius:12px;margin-bottom:24px;overflow:hidden}.metrics article{padding:24px 28px;border-right:1px solid var(--border)}label{display:block;font-size:10px;letter-spacing:1.3px;color:var(--muted);margin-bottom:12px}.metrics strong{display:block;font-size:38px;font-weight:500;margin-bottom:8px}.metrics strong.unavailable{font-size:29px;color:var(--muted)}small,.note{font-size:11px;color:var(--muted);line-height:1.7}.panel{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:25px;min-width:0}h2{font-size:23px;font-weight:500;letter-spacing:-.5px;margin:0 0 12px}.panel>p{color:var(--muted);line-height:1.6}.panel>.eyebrow{color:var(--lime)}.panel-title{display:flex;align-items:center;justify-content:space-between;gap:12px}.map-layout{display:grid;grid-template-columns:minmax(0,2.5fr) minmax(270px,1fr);gap:24px}.map-panel{padding:25px 0 0;overflow:hidden}.map-panel .panel-title{padding:0 25px 12px}#map{height:490px;background:#243236}.map-caption{font-size:10px;color:var(--muted);padding:12px 20px}.leaflet-container{font-family:'DM Sans',sans-serif}.leaflet-tile-pane{filter:saturate(.45)}button,select{background:var(--lime);color:#142018;border:0;border-radius:6px;padding:10px 14px;font:600 12px 'DM Sans',sans-serif;cursor:pointer}button:hover{background:#ddffab}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #76c9fc;outline-offset:3px}hr{border:0;border-top:1px solid var(--border);margin:25px 0}#station strong{font-size:36px;color:var(--lime)}#station p{color:var(--muted)}#sourceTime{font-size:11px;color:var(--muted)}.arrival{display:flex;justify-content:space-between;padding:12px 0;border-bottom:1px solid var(--border);gap:12px}.arrival span{font-size:12px}.arrival b{white-space:nowrap;color:var(--lime);font-size:12px}.analytics{display:grid;grid-template-columns:1.1fr 1fr;gap:24px;margin:24px 0}.heat{display:grid;grid-template-columns:28px repeat(24,1fr);gap:3px;margin-top:25px}.cell{min-height:17px;border-radius:2px}.day,.tick{font-size:9px;color:var(--muted);align-self:center}.tick{grid-column:span 4}.legend{display:flex;justify-content:flex-end;align-items:center;gap:10px;font-size:10px;color:var(--muted);margin-top:18px}.legend span{width:100px;height:6px;background:linear-gradient(90deg,#263b38,#c9f481)}.calendar{display:grid;grid-template-columns:25px repeat(31,1fr);gap:3px;margin-top:25px}.calendar .cell{min-height:12px}.calendar .empty{background:transparent}.ask{display:grid;grid-template-columns:1fr 1.5fr;gap:40px}.ask p{color:var(--muted);line-height:1.7}.input-row{display:flex;gap:8px}input{background:var(--bg);border:1px solid var(--border);padding:14px;color:var(--ink);border-radius:6px;width:100%;min-width:0}footer{display:flex;gap:16px;color:var(--muted);font-size:10px;padding:28px 0}footer a{color:var(--lime)}footer span{margin-left:auto}@media(max-width:850px){header{gap:20px}.edition{display:none}.intro{display:block}.intro>p{margin-top:25px}.metrics{grid-template-columns:1fr}.metrics article{border-bottom:1px solid var(--border)}.map-layout,.analytics,.ask{grid-template-columns:1fr}#map{height:420px}footer{flex-wrap:wrap}h1{letter-spacing:-1.5px}.heat{gap:2px}.panel{padding:18px}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
.train-icon{background:#8ee5ff;border:2px solid #0f242a;border-radius:6px;color:#10252c;display:grid;place-items:center;box-shadow:0 0 0 5px #8ee5ff25;font:bold 12px sans-serif}.movement-key{display:flex;gap:10px;align-items:center;padding:12px 25px;color:#8ee5ff;font-size:11px}.movement-key input{width:auto}.movement-key label{margin:0;color:#8ee5ff;letter-spacing:0;font-size:11px}.movement-key small{margin-left:auto}
.network{margin-bottom:24px}.routes,.feeds{display:flex;flex-wrap:wrap;gap:8px}.route-chip{padding:8px 12px;background:#28413d;border:1px solid #426358;border-radius:7px;color:var(--lime);font-size:12px}.feeds{margin-top:14px;color:var(--muted);font-size:10px;gap:16px}.train-icon svg{display:block}.panel h3{font-size:14px;color:var(--lime);margin-top:22px}button{transition:background .2s,transform .2s}button:active{transform:scale(.97)}

.insights{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}.insights strong{font-size:28px;color:var(--lime)}.insights p{color:var(--muted);font-size:11px}@media(max-width:850px){.insights{grid-template-columns:1fr}}

.intro{margin-bottom:24px}h1{font-size:clamp(32px,3.5vw,52px)}.feeds{display:grid;grid-template-columns:repeat(2,1fr)}.feeds div{display:flex;justify-content:space-between;gap:16px;padding:10px;border-bottom:1px solid var(--border)}details{margin-top:18px}summary{cursor:pointer;color:var(--muted);font-size:12px}.route-chip.selected{background:var(--lime);color:var(--bg)}.pipeline{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin:24px 0}.pipeline span{padding:14px 18px;border:1px solid var(--border);border-radius:8px}.pipeline b{color:var(--lime)}#pipelineState.running:before{content:'● ';color:var(--lime);animation:heartbeat 2s ease-in-out infinite}@keyframes heartbeat{50%{opacity:.35}}@media(prefers-reduced-motion:reduce){#pipelineState.running:before{animation:none}}

/* Motion is confined to editorial UI; map geometry and camera are unchanged. */
@keyframes titleReveal{from{opacity:0;transform:translateY(16px);filter:blur(5px)}to{opacity:1;transform:none;filter:none}}
@keyframes titleGlow{0%,100%{color:#c9f481}50%{color:#a1d7ff}}
.intro h1{animation:titleReveal .8s cubic-bezier(.2,.7,.2,1) both}.intro h1 em{animation:titleGlow 8s ease-in-out infinite}.intro .eyebrow{animation:titleReveal .65s both}.analytics .panel,.ask,.insights article{animation:titleReveal .7s both}.analytics .panel:nth-child(2){animation-delay:.12s}.panel h2{transition:color .25s}.panel:hover h2{color:#d7e8ed}.train-icon.paused{background:#adbac3;box-shadow:0 0 0 3px #adbac322}
@media(prefers-reduced-motion:reduce){.intro h1,.intro h1 em,.intro .eyebrow,.analytics .panel,.ask,.insights article{animation:none}}

.publication-dates{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.publication-dates span{display:block;font-size:11px;opacity:.7;margin-bottom:8px}.publication-dates strong{display:block;font-size:18px;font-weight:600}#publicationStatus>p{font-size:12px;line-height:1.6}#publicationStatus>small{display:block;font-size:11px;opacity:.7}.publication-panel{margin-top:18px}@media(max-width:760px){.publication-dates{grid-template-columns:1fr;gap:16px}}

.page-tabs{display:flex;gap:32px;align-items:center;background:#fff;padding:0 5%;border-bottom:1px solid #e0e7ed;min-height:70px}.page-tabs a{color:#285b83;text-decoration:none;font-size:15px;padding:24px 0 19px;border-bottom:3px solid transparent}.page-tabs a[aria-current="page"]{border-color:#285b83}.page-tabs a:focus-visible{outline:3px solid #008c91;outline-offset:5px}@media(max-width:600px){.page-tabs{gap:20px}.page-tabs a{font-size:13px}}
