:root{--font-sans:"Inter", system-ui, -apple-system, "Segoe UI", sans-serif;--font-pixel:"Silkscreen", "Inter", monospace;--bg:#0b1020;--bg-map:#0e1526;--fg:#e8ebf3;--fg-muted:#9aa3b8;--rule:#263047;--zone-fill:#05081461;--zone-stroke:#e8ebf329;--station-fill:#0e1526;--station-stroke:#f2f4f9;--sign-bg:#131a2e;--sign-fg:#f2f4f9;--board-bg:#05070f;--board-fg:#f2f4f9;--board-muted:#8b95ad;--exit-bg:#ffd400;--exit-fg:#111318;--accent:#0079c2;--neon:#00e5ff;--shadow:0 10px 40px #00000080;--radius:10px;--gutter:16px;--max:1280px}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}body{background:var(--bg);color:var(--fg);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;margin:0;font-size:16px;line-height:1.5;overflow-x:hidden}a{color:inherit}.skip{background:var(--exit-bg);color:var(--exit-fg);z-index:100;border-radius:6px;padding:8px 12px;position:absolute;top:8px;left:-999px}.skip:focus{left:8px}.pixel-frame{box-shadow:0 0 0 3px var(--fg), 0 0 0 6px var(--bg), 0 0 0 8px #e8ebf340;border-radius:0}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}.map-section{border-bottom:1px solid var(--rule);background:#05080f}.map-section[data-orientation=horizontal]{height:320vh}.map-section[data-orientation=horizontal] .map-sticky{height:100vh;padding:0;position:sticky;top:0}.map-section[data-orientation=horizontal] .map{width:calc(100% - 2 * var(--gutter));position:absolute;bottom:14%;left:50%;transform:translate(-50%)}.map-section[data-orientation=vertical] .map-sticky{padding:8px var(--gutter) 190px}.map-sticky{position:relative;overflow:hidden}.city{pointer-events:none;position:absolute;inset:0;overflow:hidden}.city-layer{will-change:transform;position:absolute;bottom:0;left:0}.city-canvas{image-rendering:pixelated;image-rendering:crisp-edges;display:block}.city-lights{transition:opacity .6s ease-out;position:absolute;top:0;left:0}.city-layer.fx{left:0}.map{z-index:1;width:100%;max-width:1700px;margin:0 auto;position:relative}.map svg{width:100%;height:auto;font-family:var(--font-sans);display:block;overflow:visible}.map-hint{z-index:1;color:var(--fg);white-space:nowrap;background:#050814b3;border:1px solid #e8ebf333;margin:0;padding:6px 14px;font-size:13px;transition:opacity .4s;position:absolute;top:18px;left:50%;transform:translate(-50%)}.map-section[data-orientation=vertical] .map-hint{margin:0 0 12px;display:inline-block;position:static;transform:none}.map-hint[data-hidden=true]{opacity:0}.zone rect{fill:var(--zone-fill);stroke:var(--zone-stroke);stroke-dasharray:6 6}.zone .zone-name{fill:var(--fg);font-family:var(--font-pixel);letter-spacing:.04em;paint-order:stroke;stroke:#050814d9;stroke-width:4px;stroke-linejoin:round;font-size:15px}.zone .zone-years{fill:var(--fg);paint-order:stroke;stroke:#050814d9;stroke-width:3px;stroke-linejoin:round;font-size:12px;font-weight:600}.line{fill:none;stroke-width:10px;stroke-linecap:round;stroke-linejoin:round}.line-casing{fill:none;stroke:#05080f;stroke-width:14px;stroke-linecap:round;stroke-linejoin:round}.spur{fill:none;stroke:var(--fg-muted);stroke-width:4px;stroke-dasharray:8 6;stroke-linecap:round}.depot rect{fill:#050814d9;stroke:var(--fg-muted);stroke-width:3px}.depot text{fill:#c3cad9;font-size:11.5px}.depot .depot-name{fill:var(--fg);font-size:12.5px;font-weight:600}.station{cursor:pointer;outline:none}.station .connector{stroke:var(--station-stroke);stroke-width:6px;stroke-linecap:round}.station .stop{fill:var(--station-fill);stroke:var(--station-stroke);stroke-width:3.5px;transition:r .15s}.station:hover .stop,.station:focus-visible .stop{r:10}.station:focus-visible .hit{stroke:var(--accent);stroke-width:2px;stroke-dasharray:4 3}.station .hit{fill:#0000;stroke:none}.station text{paint-order:stroke;stroke:#050814e6;stroke-width:3px;stroke-linejoin:round}.station .company{fill:var(--fg);font-size:14px;font-weight:700}.station .title{fill:#c3cad9;font-size:11.5px}.station .years{fill:#c3cad9;letter-spacing:.02em;font-size:11px;font-weight:500}.station .badge rect{fill:var(--station-fill);stroke-width:3px}.station .badge text{fill:var(--fg);text-anchor:middle;font-size:10.5px;font-weight:800}.station.is-active .company{fill:var(--accent)}.terminus .ring{fill:none;stroke:var(--neon);stroke-width:3px;opacity:0}.terminus .here{fill:var(--neon);font-family:var(--font-pixel);letter-spacing:.08em;text-transform:uppercase;paint-order:stroke;stroke:#050814e6;stroke-width:3px;font-size:10px}.train-group{shape-rendering:crispedges}.train-glow{fill:var(--neon);opacity:.22}.train-beam{fill:#ffe66d29}.pillar{fill:#0a0f1e}.pillar-cap{fill:#141a2c}.pillar-lit{fill:#232c45}@keyframes pulse{0%{r:14;opacity:.9}to{r:34;opacity:0}}.terminus .ring{animation:2.2s ease-out infinite pulse}@media (prefers-reduced-motion:reduce){.terminus .ring{opacity:.6;animation:none}}.map-section[data-orientation=vertical] .map{max-width:560px}.header{isolation:isolate;background:linear-gradient(90deg,#3b1d4f,#050915);position:relative}.header-sky{z-index:-1;pointer-events:none;position:absolute;inset:0;overflow:hidden}.header-sky canvas{position:absolute;top:0;left:0}.sign{max-width:var(--max);padding:32px var(--gutter) 28px;margin:0 auto}.sign-summary{color:#d5dae6;text-shadow:0 1px 6px #050814cc}.sign-board{background:var(--sign-bg);color:var(--sign-fg);box-shadow:0 0 0 3px var(--fg), 0 0 0 6px var(--bg), 0 0 0 8px #e8ebf340, var(--shadow);border-radius:0;overflow:hidden}.sign-main{grid-template-columns:auto 1fr auto;align-items:center;gap:20px;padding:24px 28px 20px;display:grid}.sign-badge{border:4px solid var(--neon);width:76px;height:64px;font-family:var(--font-pixel);text-align:center;border-radius:0;place-items:center;padding:0 4px;font-weight:800;line-height:1;display:grid}.sign-badge small{color:var(--fg-muted);font-size:12px;display:block}.sign-badge b{font-size:17px}.sign-name{font-family:var(--font-pixel);letter-spacing:.01em;margin:0;font-size:clamp(22px,3.6vw,40px);font-weight:700;line-height:1.1}.sign-location{text-align:right;color:var(--fg-muted);white-space:nowrap;font-size:14px}.sign-location b{color:var(--fg);font-size:16px;display:block}.sign-strip{background:var(--fg);color:var(--bg);justify-content:space-between;align-items:center;gap:16px;padding:10px 28px;font-size:14px;font-weight:600;display:flex}.sign-strip .headline{text-align:center;font-family:var(--font-pixel);letter-spacing:.04em;text-transform:uppercase;flex:1;font-size:13px}.sign-strip .prev,.sign-strip .next{color:var(--bg);opacity:.75;white-space:nowrap;font-weight:500}.sign-summary{max-width:820px;color:var(--fg-muted);text-align:center;margin:20px auto 0;font-size:16px}.sign-tools{justify-content:center;gap:10px;margin-top:14px;display:flex}.chip-btn{border:1px solid var(--rule);color:var(--fg-muted);font:inherit;cursor:pointer;background:0 0;border-radius:999px;padding:5px 12px;font-size:13px}.chip-btn:hover{color:var(--fg);border-color:var(--fg)}.panel{background:var(--board-bg);width:min(480px,100%);color:var(--board-fg);z-index:50;box-shadow:var(--shadow);visibility:hidden;transition:transform .35s cubic-bezier(.2,.8,.2,1);position:fixed;inset:0 0 0 auto;overflow-y:auto;transform:translate(100%)}.panel[aria-hidden=false]{visibility:visible;transform:translate(0)}.scrim{z-index:40;background:#00000059;position:fixed;inset:0}.panel-head{border-bottom:1px solid #ffffff1f;align-items:flex-start;gap:14px;padding:22px 22px 16px;display:flex}.panel-badge{border:4px solid var(--accent);width:48px;height:48px;font-family:var(--font-pixel);border-radius:0;flex:none;place-items:center;font-size:16px;font-weight:800;display:grid}.panel-title{font-family:var(--font-pixel);margin:0;font-size:18px;font-weight:700;line-height:1.2}.panel-company{color:var(--board-muted);margin:4px 0 0;font-size:14px}.panel-close{color:var(--board-fg);cursor:pointer;background:#ffffff14;border:0;border-radius:50%;width:36px;height:36px;margin-left:auto;font-size:20px}.panel-body{padding:18px 22px 40px}.panel-meta{flex-wrap:wrap;gap:8px;margin-bottom:16px;display:flex}.line-chip{color:#fff;border-radius:999px;align-items:center;gap:6px;padding:4px 10px;font-size:12px;font-weight:700;display:inline-flex}.line-chip i{opacity:.85;background:#fff;border-radius:50%;width:8px;height:8px}.panel h3{letter-spacing:.12em;text-transform:uppercase;color:var(--board-muted);margin:18px 0 8px;font-size:12px}.panel p{color:#dbe2f0;margin:0}.panel ul{color:#dbe2f0;margin:0;padding-left:18px}.panel li+li{margin-top:6px}.stack{flex-wrap:wrap;gap:6px;display:flex}.stack span{border:1px solid #ffffff2e;border-radius:6px;padding:3px 8px;font-size:12px}.projects a{color:var(--board-fg);text-decoration:underline;-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent);margin:0 10px 6px 0;display:inline-block}.panel-nav{justify-content:space-between;gap:10px;margin-top:26px;display:flex}.panel-nav button{color:var(--board-fg);font:inherit;cursor:pointer;background:0 0;border:1px solid #ffffff2e;border-radius:8px;flex:1;padding:10px}.panel-nav button:disabled{opacity:.35;cursor:default}@media (max-width:760px){.panel{border-radius:16px 16px 0 0;width:100%;max-height:85vh;inset:auto 0 0;transform:translateY(100%)}.panel[aria-hidden=false]{transform:translateY(0)}.sign-main{grid-template-columns:auto 1fr;gap:14px;padding:18px 18px 14px}.sign-location{text-align:left;grid-column:1/-1}.sign-strip{flex-wrap:wrap;justify-content:center;row-gap:6px;padding:10px 14px}.sign-strip .headline{flex:1 0 100%;order:-1;font-size:11px}.sign-strip .prev,.sign-strip .next{font-size:12px}.sign{padding:20px var(--gutter) 22px}.sign-summary{font-size:15px}}.legend{max-width:var(--max);padding:48px var(--gutter);margin:0 auto}.section-title{letter-spacing:.14em;text-transform:uppercase;color:var(--fg-muted);margin:0 0 6px;font-size:12px}.section-heading{font-family:var(--font-pixel);letter-spacing:.01em;margin:0 0 24px;font-size:24px;font-weight:700}.legend-grid{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:16px;display:grid}.legend-card{border:2px solid var(--rule);background:var(--bg);border-radius:0;padding:14px 16px 16px}.legend-card .bar{border-radius:4px;height:8px;margin-bottom:12px}.legend-card h3{align-items:center;gap:8px;margin:0 0 8px;font-size:15px;display:flex}.legend-card h3 .code{border:3px solid;border-radius:50%;place-items:center;width:22px;height:22px;font-size:11px;font-weight:800;display:grid}.legend-card .stack span{border-color:var(--rule);color:var(--fg)}.legend-card.edu{border-style:dashed}.legend-card.edu p{color:var(--fg-muted);margin:0;font-size:14px}.legend-card.edu b{color:var(--fg);margin-bottom:2px;display:block}.exits{max-width:var(--max);padding:8px var(--gutter) 64px;margin:0 auto}.exit-grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px;display:grid}.exit{background:var(--exit-bg);color:var(--exit-fg);font-family:var(--font-pixel);border-radius:0;align-items:center;gap:14px;padding:14px 16px;font-weight:700;text-decoration:none;transition:transform .15s;display:flex;box-shadow:0 3px #00000040}.exit:hover{transform:translateY(-2px)}.exit .num{background:var(--exit-fg);width:40px;height:40px;color:var(--exit-bg);border-radius:0;place-items:center;font-size:18px;display:grid}.exit small{font-family:var(--font-sans);opacity:.75;font-size:12px;font-weight:500;display:block}.exit .arrow{margin-left:auto;font-size:22px}.footer-note{color:var(--fg-muted);text-align:center;margin:28px 0 0;font-size:13px}.footer-note a{color:var(--fg-muted)}
