:root{--bg:#f3f2ee;--surface:#fbfaf8;--ink:#141414;--muted:#5b5f63;--rule:#dcdad4;--grid:#1414140f;--line-red:#0f5552;--line-teal:#1f2c3d;--line-amber:#4a7337;--line-indigo:#8a5a36;--ok:#4a7337;--board-bg:#1a2433;--board-cell:#243246;--board-text:#f3f2ee;--board-dim:#8fa0b5;--font-display:"Bricolage Grotesque", system-ui, sans-serif;--font-body:"Instrument Sans", system-ui, sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, Menlo, monospace;--topbar-h:72px;--track-y:40px;--track-zone:112px;--gutter:88px;--pad:32px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#121821;--surface:#1a2230;--ink:#f3f2ee;--muted:#a3a9b1;--rule:#2a3442;--grid:#f3f2ee0f;--line-red:#4fa39c;--line-teal:#d9d7d0;--line-amber:#8fb56f;--line-indigo:#c48b5c;--ok:#8fb56f;--board-bg:#0c1118;--board-cell:#18202c;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--bg:#121821;--surface:#1a2230;--ink:#f3f2ee;--muted:#a3a9b1;--rule:#2a3442;--grid:#f3f2ee0f;--line-red:#4fa39c;--line-teal:#d9d7d0;--line-amber:#8fb56f;--line-indigo:#c48b5c;--ok:#8fb56f;--board-bg:#0c1118;--board-cell:#18202c;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}@media (width<=720px){:root{--track-y:28px;--track-zone:84px;--gutter:20px;--pad:20px;--topbar-h:60px}}@media (height<=720px){:root{--pad:16px;--track-y:28px;--track-zone:84px}.ticket__media{max-height:15vh}}*,:before,:after{box-sizing:border-box}html,body{height:100%}body{background:var(--bg);color:var(--ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased;margin:0;font-size:17px;line-height:1.6;overflow:hidden}h1,h2,h3{font-family:var(--font-display);margin:0;line-height:1.05}p{margin:0}a{color:inherit}img{max-width:100%;display:block}:focus-visible{outline:3px solid var(--line-red);outline-offset:3px}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.skip-link{z-index:100;background:var(--ink);color:var(--bg);font-family:var(--font-mono);padding:8px 14px;position:absolute;top:-60px;left:16px}.skip-link:focus{top:12px}.icon{flex-shrink:0;width:1.1em;height:1.1em}.icon--stroke{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round}.icon--arrow{transition:transform .2s}.btn{border:2px solid var(--ink);background:var(--surface);color:var(--ink);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.04em;box-shadow:4px 4px 0 var(--ink);align-items:center;gap:.5em;padding:12px 20px;font-size:14px;font-weight:600;text-decoration:none;transition:transform .15s,box-shadow .15s;display:inline-flex}.btn:hover{box-shadow:6px 6px 0 var(--ink);transform:translate(-2px,-2px)}.btn:hover .icon--arrow{transform:translate(3px)}.btn:active{box-shadow:2px 2px 0 var(--ink);transform:translate(2px,2px)}.btn--solid{background:var(--line-red);color:var(--bg)}.btn--small{box-shadow:3px 3px 0 var(--ink);padding:8px 14px;font-size:12px}.topbar{z-index:50;height:var(--topbar-h);background:color-mix(in srgb, var(--bg) 88%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:2px solid var(--ink);align-items:center;gap:28px;padding:0 24px;display:flex;position:fixed;inset:0 0 auto}.roundel{flex-shrink:0;place-items:center;width:48px;height:48px;text-decoration:none;display:grid;position:relative}.roundel__ring{border:7px solid var(--line-red);border-radius:50%;transition:transform .4s;position:absolute;inset:4px}.roundel:hover .roundel__ring{transform:rotate(180deg)scale(1.08)}.roundel__bar{background:var(--ink);color:var(--bg);font-family:var(--font-mono);letter-spacing:.08em;padding:1px 6px;font-size:12px;font-weight:600;position:relative}.routemap{flex:1;max-width:640px;margin:0 auto;padding-bottom:14px}.routemap ol{justify-content:space-between;margin:0;padding:0;list-style:none;display:flex;position:relative}.routemap ol:before,.routemap ol:after{content:"";border-radius:2px;height:4px;position:absolute;top:5px;left:7px}.routemap ol:before{background:var(--rule);right:7px}.routemap ol:after{width:calc((100% - 14px) * var(--progress,0));background:var(--line-red);transition:width .5s cubic-bezier(.6,0,.2,1)}.routemap__stop{z-index:1;position:relative}.routemap__stop a{text-decoration:none;display:block}.routemap__dot{background:var(--surface);border:3px solid var(--rule);border-radius:50%;width:14px;height:14px;transition:border-color .3s,transform .3s;display:block}.routemap__stop.is-passed .routemap__dot{border-color:var(--line-red)}.routemap__stop.is-active .routemap__dot{background:var(--line-red);transform:scale(1.35)}.routemap__stop a:hover .routemap__dot{transform:scale(1.35)}.routemap__label{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.06em;color:var(--muted);white-space:nowrap;font-size:11px;position:absolute;top:20px;left:50%;transform:translate(-50%)}.routemap__stop.is-active .routemap__label{color:var(--ink);font-weight:600}.topbar__right{align-items:center;gap:14px;display:flex}.clock{font-family:var(--font-mono);background:var(--board-bg);color:var(--board-text);border-radius:3px;padding:4px 8px;font-size:15px;font-weight:600}.clock__colon{animation:2s step-end infinite blink}.theme-toggle{border:2px solid var(--ink);background:var(--surface);width:38px;height:38px;color:var(--ink);cursor:pointer;border-radius:50%;place-items:center;display:grid}.theme-toggle svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;width:18px;height:18px}@media (width<=720px){.topbar{gap:14px;padding:0 16px}.roundel{width:40px;height:40px}.routemap{padding-bottom:0}.routemap__label,.clock{display:none}}.route{overscroll-behavior-x:contain;scroll-behavior:smooth;scrollbar-width:thin;scrollbar-color:var(--ink) transparent;height:100dvh;display:flex;position:relative;overflow:auto hidden}.station{width:100vw;height:100%;padding:calc(var(--topbar-h) + var(--pad)) var(--gutter) var(--track-zone);flex-direction:column;flex:none;justify-content:safe center;display:flex;position:relative;overflow:hidden auto}.station--wide{width:auto;min-width:100vw}.station__body{min-width:0}.station:before{content:"";left:0;right:0;bottom:var(--track-y);background:var(--station-color);height:8px;position:absolute}.hero:before{left:calc(var(--gutter) + 10px)}.terminus:before{right:calc(var(--gutter) + 4px)}.terminus:after{content:"";right:var(--gutter);bottom:calc(var(--track-y) - 14px);background:var(--ink);width:8px;height:36px;position:absolute}.station__head{left:calc(var(--gutter) + 40px);bottom:calc(var(--track-y) + 4px);z-index:1;background:var(--bg);border:2px solid var(--ink);align-items:center;gap:12px;padding:6px 14px 6px 8px;display:flex;position:absolute;transform:translateY(50%)}.station__marker{background:var(--surface);border:5px solid var(--ink);z-index:1;border-radius:50%;width:30px;height:30px;position:absolute;top:50%;left:-46px;transform:translateY(-50%)}.station__code{font-family:var(--font-mono);letter-spacing:.1em;background:var(--station-color);color:var(--bg);padding:0 8px;font-size:12px;font-weight:600;line-height:20px;display:inline-block}.station__name{letter-spacing:-.02em;font-size:clamp(20px,2.4vw,28px);font-weight:800}.section-lede{max-width:60ch;color:var(--muted);margin-bottom:clamp(16px,3.5vh,36px)}@media (width>=1000px){.hero .station__body{grid-template:"name board""tagline board""actions board"1fr/minmax(0,1fr) minmax(0,1fr);align-items:start;column-gap:clamp(32px,5vw,80px);display:grid}.hero .board{grid-area:board;align-self:center}.hero .hero__name{grid-area:name;margin-top:0}.hero .hero__tagline{grid-area:tagline}.hero .hero__actions{grid-area:actions}}.board{background:var(--board-bg);max-width:760px;box-shadow:0 0 0 2px var(--ink), 10px 10px 0 var(--line-red);border-radius:6px;padding:14px}.board__row{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.12em;color:var(--board-dim);justify-content:space-between;gap:12px;font-size:12px;display:flex}.board__row--head{margin-bottom:10px}.board__row--foot{margin-top:10px}.board__row--foot>span:first-child{color:#8fb56f;align-items:center;gap:8px;display:inline-flex}.board__platform{color:var(--board-text)}.pulse{background:#8fb56f;border-radius:50%;width:8px;height:8px;animation:2s infinite pulse;box-shadow:0 0 #8fb56f99}.flapboard{perspective:400px;grid-template-columns:repeat(18,minmax(0,1fr));gap:3px;display:grid}.flap{aspect-ratio:3/4.2;background:var(--board-cell);color:var(--board-text);font-family:var(--font-mono);transform-origin:50%;border-radius:3px;place-items:center;font-size:clamp(11px,1.8vw,30px);font-weight:600;animation:90ms ease-out flip;display:grid;position:relative}.flap:after{content:"";background:#000000b3;height:1px;position:absolute;top:50%;left:0;right:0}.flap--blank{color:#0000}.hero__name{letter-spacing:-.045em;margin-top:clamp(24px,5vh,56px);font-size:clamp(44px,min(9vw,14vh),148px);font-weight:800;line-height:.92}.hero__name-part{display:block}.hero__tagline{max-width:54ch;color:var(--muted);margin-top:clamp(16px,3vh,28px);font-size:clamp(17px,1.6vw,20px)}.hero__actions{flex-wrap:wrap;gap:16px;margin-top:clamp(20px,4vh,36px);display:flex}.about{grid-template-columns:1.4fr 1fr;align-items:start;gap:48px;max-width:1160px;display:grid}.about__text p{font-size:clamp(18px,1.8vw,22px);line-height:1.55}.about__text p+p{color:var(--muted);margin-top:20px}.facts{border:2px solid var(--ink);background:var(--surface);grid-template-columns:1fr 1fr;gap:0;margin:0;display:grid}.fact{border-bottom:2px solid var(--ink);padding:16px}.fact:nth-child(odd){border-right:2px solid var(--ink)}.fact:nth-last-child(-n+2){border-bottom:0}.fact dt{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.1em;color:var(--muted);font-size:11px}.fact dd{font-family:var(--font-display);margin:4px 0 0;font-size:20px;font-weight:600}@media (width<=860px){.about{grid-template-columns:1fr}}.tickets{grid-auto-flow:column;grid-auto-columns:min(420px, calc(100vw - 2 * var(--gutter) - 32px));gap:32px;padding-bottom:8px;display:grid}.ticket{--stub:88px;grid-template-columns:var(--stub) 1fr;background:var(--surface);border:2px solid var(--ink);box-shadow:6px 6px 0 var(--ink);transition:transform .2s,box-shadow .2s;display:grid;position:relative}.ticket:hover{box-shadow:9px 9px 0 var(--ink);transform:translate(-3px,-3px)}.ticket:before,.ticket:after{content:"";left:calc(var(--stub) - 11px);background:var(--bg);border:2px solid var(--ink);z-index:1;border-radius:50%;width:20px;height:20px;position:absolute}.ticket:before{clip-path:inset(50% 0 0);top:-12px}.ticket:after{clip-path:inset(0 0 50%);bottom:-12px}.ticket__stub{border-right:2px dashed var(--ink);font-family:var(--font-mono);flex-direction:column;align-items:center;gap:2px;padding:20px 8px;display:flex}.ticket__plat-label{text-transform:uppercase;letter-spacing:.14em;color:var(--muted);font-size:10px}.ticket__plat{font-size:38px;font-weight:600;line-height:1}.status{text-transform:uppercase;letter-spacing:.08em;writing-mode:vertical-rl;border:2px solid;margin-top:auto;padding:3px 6px;font-size:10px;font-weight:600;transform:rotate(180deg)}.status--shipped{color:var(--ok)}.status--building{color:var(--line-amber);animation:1.6s step-end infinite blink}.status--planned{color:var(--muted)}.ticket__main{flex-direction:column;min-width:0;padding:20px;display:flex}.ticket__media{aspect-ratio:2;border:2px solid var(--ink);background:var(--bg);max-height:18vh;margin-bottom:18px;overflow:hidden}.ticket__media img,.route-art{object-fit:cover;width:100%;height:100%;display:block}.ticket__title{letter-spacing:-.01em;font-size:26px;font-weight:800}.ticket__summary{color:var(--muted);margin-top:8px;font-size:16px}.ticket__tech{flex-wrap:wrap;gap:6px;margin:16px 0 0;padding:0;list-style:none;display:flex}.ticket__tech li{font-family:var(--font-mono);border:1.5px solid var(--rule);border-radius:99px;padding:2px 8px;font-size:12px}.ticket__links{flex-wrap:wrap;gap:12px;margin-top:auto;padding-top:20px;display:flex}.ticket--reserved{box-shadow:none;background:0 0;border-style:dashed}.ticket--reserved:hover{box-shadow:none;transform:none}.ticket__main--reserved{text-align:center;background:repeating-linear-gradient(-45deg, transparent 0 14px, color-mix(in srgb, var(--line-amber) 14%, transparent) 14px 28px);justify-content:center;align-items:center;min-height:240px}.reserved__title{font-family:var(--font-display);font-size:22px;font-weight:800}.reserved__note{color:var(--muted);max-width:30ch;margin-top:6px}.lines{gap:clamp(20px,4vh,40px);display:grid}.line__badge{align-items:center;gap:12px;margin-bottom:clamp(8px,2vh,18px);display:inline-flex}.line__code{background:var(--line-color);width:36px;height:36px;color:var(--bg);font-family:var(--font-mono);border-radius:50%;place-items:center;font-weight:600;display:grid}.line__name{font-family:var(--font-display);font-size:20px;font-weight:600}.line__stops{flex-wrap:wrap;row-gap:24px;margin:0;padding:0;list-style:none;display:flex}.line__stop{flex:none;min-width:140px;padding:30px 16px 0 0;position:relative}@media (width<=720px),(height<=720px){.lines .line__code{width:28px;height:28px;font-size:14px}.line__name{font-size:17px}.line__stop{padding-top:26px}.line__label{font-size:13px}}@media (width<=720px){.line__stop{min-width:92px;padding-right:8px}.line__stops{row-gap:12px}}.line__stop:before{content:"";background:var(--line-color);height:6px;position:absolute;top:9px;left:0;right:0}.line__stop:last-child:before{width:20px;right:auto}.line__stop.is-learning:before{background:repeating-linear-gradient(90deg, var(--line-color) 0 10px, transparent 10px 16px)}.line__dot{background:var(--surface);border:4px solid var(--ink);border-radius:50%;width:20px;height:20px;position:absolute;top:2px;left:0}.line__stop.is-learning .line__dot{border-style:dashed;border-color:var(--line-color)}.line__label{font-family:var(--font-mono);font-size:14px;font-weight:500}.line__stop.is-learning .line__label{color:var(--muted)}.journey{grid-auto-columns:minmax(240px,320px);grid-auto-flow:column;gap:40px;margin:0;padding:0;list-style:none;display:grid}.journey__item{border-top:2px solid var(--ink);padding-top:32px;position:relative}.journey__item:before{content:"";background:var(--surface);border:3px solid var(--line-indigo);border-radius:50%;width:16px;height:16px;position:absolute;top:-9px;left:0}.journey__when{font-family:var(--font-mono);color:var(--line-indigo);margin-bottom:8px;font-size:14px;font-weight:600}.journey__title{font-size:22px;font-weight:600}.journey__where{font-family:var(--font-mono);color:var(--muted);margin-top:4px;font-size:13px}.journey__note{margin-top:8px}@media (width<=640px){.journey{grid-auto-columns:calc(100vw - 2 * var(--gutter) - 48px)}}.terminus__big{font-family:var(--font-display);letter-spacing:-.035em;margin-bottom:clamp(16px,3vh,28px);font-size:clamp(36px,min(7vw,10vh),92px);font-weight:800;line-height:.98}.terminus__big span{color:var(--line-red)}.connections{grid-template-columns:repeat(auto-fill,minmax(min(100%,240px),1fr));gap:20px;max-width:1080px;margin:0;padding:0;list-style:none;display:grid}.connection{border:2px solid var(--ink);background:var(--surface);box-shadow:5px 5px 0 var(--ink);grid-template-rows:auto auto;grid-template-columns:auto 1fr;align-items:center;column-gap:14px;padding:20px;text-decoration:none;transition:transform .15s,box-shadow .15s,background .15s;display:grid}.connection .icon{grid-row:span 2;width:32px;height:32px}.connection:hover{box-shadow:8px 8px 0 var(--line-red);transform:translate(-3px,-3px)}.connection__name{font-family:var(--font-display);font-size:22px;font-weight:800;line-height:1.1}.connection__handle{font-family:var(--font-mono);color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.footer{border-top:2px solid var(--ink);max-width:1080px;font-family:var(--font-mono);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-top:clamp(24px,5vh,48px);padding-top:20px;font-size:13px;display:flex}.footer a{text-decoration:none}.footer a:hover{text-decoration:underline}.footer__tape{text-transform:uppercase;letter-spacing:.2em;color:#f3f2ee;background:#0f5552;padding:4px 14px;font-weight:600;box-shadow:inset 0 0 0 2px #141414}@keyframes flip{0%{filter:brightness(.6);transform:rotateX(-80deg)}to{filter:none;transform:rotateX(0)}}@keyframes blink{50%{opacity:.25}}@keyframes pulse{70%{box-shadow:0 0 0 8px #8fb56f00}to{box-shadow:0 0 #8fb56f00}}@media (pointer:coarse){.route{scroll-snap-type:x proximity}.station{scroll-snap-align:start}}@media (prefers-reduced-motion:reduce){.route{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}}
