@font-face{font-family:Space Grotesk;font-style:normal;font-weight:300 700;font-display:swap;src:url(../media/32687112bd2dd8db-s.cfdd66c2.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:300 700;font-display:swap;src:url(../media/28868e710e86be81-s.p.c30238d4.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:300 700;font-display:swap;src:url(../media/0c89a48fa5027cee-s.p.4564287c.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Space Grotesk Fallback;src:local(Arial);ascent-override:89.71%;descent-override:26.62%;line-gap-override:0.0%;size-adjust:109.69%}.space_grotesk_ad2b35a9-module__vBZepW__className{font-family:Space Grotesk,Space Grotesk Fallback;font-style:normal}.space_grotesk_ad2b35a9-module__vBZepW__variable{--font-space-grotesk:"Space Grotesk","Space Grotesk Fallback"}
:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f3f6f7;--bg-accent:#fef3e2;--surface:#fff;--surface-muted:#eef3f6;--ink:#0f172a;--muted:#475569;--border:#d7e2ea;--accent:#0e7490;--accent-strong:#0b4f6c;--accent-warm:#f59e0b;--shadow-lg:0 40px 80px -60px #0f172a80;--shadow-sm:0 10px 30px -20px #0f172a66}*{box-sizing:border-box}body{min-height:100vh;font-family:var(--font-space-grotesk),sans-serif;color:var(--ink);background:radial-gradient(circle at top left,var(--bg-accent),transparent 45%),radial-gradient(circle at 70% 10%,#e9f5f7,transparent 35%),var(--bg);margin:0}button{font:inherit}main.page{flex-direction:column;gap:32px;max-width:900px;margin:0 auto;padding:48px 24px 96px;display:flex}.hero{justify-content:center;align-items:center;display:flex;position:relative}.hero h1{letter-spacing:.08em;margin:0;font-size:clamp(1.8rem,4vw,2.4rem);font-weight:700}.note{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-sm);border-radius:999px;padding:12px 18px;font-size:.9rem}.commute-card,.empty-card{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-lg);border-radius:28px;flex-direction:column;gap:20px;padding:28px;display:flex}.empty-card h2{margin:0;font-size:1.4rem}.empty-card p{color:var(--muted);margin:0}.commute-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;display:flex}.commute-route{grid-template-columns:1fr auto 1fr;align-items:center;gap:16px;display:grid}.route-block{background:var(--surface-muted);border:1px solid var(--border);border-radius:18px;flex-direction:column;gap:6px;min-width:180px;padding:12px 16px;display:flex}.route-label{text-transform:uppercase;letter-spacing:.12em;color:var(--muted);font-size:.75rem}.route-station{font-size:1rem;font-weight:600}.route-arrow{color:var(--accent-strong);font-size:1.6rem}.commute-meta{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;display:flex}.direction-card{background:var(--surface-muted);border:1px solid var(--border);border-radius:999px;align-items:center;gap:12px;padding:10px 16px;font-size:.95rem;display:flex}.direction-label{color:var(--muted);text-transform:uppercase;letter-spacing:.08em;font-size:.8rem}.direction-value{font-weight:600}.direction-tag{color:#9a5b00;background:#f59e0b26;border-radius:999px;padding:4px 10px;font-size:.75rem;font-weight:600}.swap-button{border:1px solid var(--border);background:var(--surface);cursor:pointer;box-shadow:var(--shadow-sm);border-radius:999px;padding:10px 14px;font-weight:600;transition:transform .2s,border-color .2s,box-shadow .2s}.swap-button:hover{border-color:var(--accent);transform:translateY(-1px)}.button-primary,.button-secondary,.button-ghost{font:inherit;cursor:pointer;border:1px solid #0000;border-radius:999px;padding:10px 18px;font-weight:600;transition:transform .2s,box-shadow .2s}.button-primary{background:var(--accent);color:#fff;box-shadow:var(--shadow-sm)}.button-primary:disabled{opacity:.5;cursor:not-allowed;box-shadow:none}.button-secondary{background:var(--surface);border-color:var(--border)}.button-ghost{color:var(--muted);background:0 0}.button-primary:hover,.button-secondary:hover{transform:translateY(-1px)}.modal-backdrop{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:40;background:#0f172a66;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.modal-card{background:var(--surface);border:1px solid var(--border);width:min(560px,100%);box-shadow:var(--shadow-lg);border-radius:28px;flex-direction:column;gap:20px;padding:24px;display:flex}.modal-header{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.modal-header h2{margin:0;font-size:1.4rem}.modal-header p{color:var(--muted);margin:6px 0 0}.modal-body{gap:16px;display:grid}.modal-actions{justify-content:flex-end;gap:12px;display:flex}.station-field{flex-direction:column;gap:8px;display:flex}.station-label{color:var(--muted);font-size:.85rem}.station-input{position:relative}.station-input input{border:1px solid var(--border);width:100%;font:inherit;background:var(--surface);border-radius:14px;padding:12px 14px}.station-results{background:var(--surface);border:1px solid var(--border);max-height:220px;box-shadow:var(--shadow-sm);z-index:10;border-radius:14px;gap:4px;padding:6px;display:grid;position:absolute;top:calc(100% + 6px);left:0;right:0;overflow-y:auto}.station-option{text-align:left;cursor:pointer;font:inherit;background:0 0;border:none;border-radius:10px;padding:10px 12px}.station-option:hover,.station-option:focus{background:#0e74901a;outline:none}.station-empty{color:var(--muted);padding:10px 12px;font-size:.9rem}.departures-section{flex-direction:column;gap:16px;display:flex}.direction-control-wrapper{flex-direction:column;gap:6px;display:flex}.direction-control{background:var(--surface);border:1px solid var(--border);border-radius:999px;justify-content:space-between;align-items:center;gap:12px;padding:10px 10px 10px 20px;display:flex}.direction-source{color:var(--muted);text-align:center;font-size:.75rem}.direction-route{color:inherit;cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:8px;padding:0;font-family:inherit;font-size:.95rem;display:flex}.direction-from,.direction-to{font-weight:600}.direction-arrow-small{color:var(--accent-strong);font-weight:600}.direction-swap-button{border:1px solid var(--border);background:var(--surface-muted);cursor:pointer;border-radius:999px;padding:8px 14px;font-size:.85rem;font-weight:600;transition:transform .2s,border-color .2s}.direction-swap-button:hover{border-color:var(--accent);transform:translateY(-1px)}.departures-card{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-lg);border-radius:28px;flex-direction:column;gap:16px;padding:24px;display:flex}.departures-header{justify-content:space-between;align-items:center;gap:12px;display:flex}.departures-title{margin:0;font-size:1.1rem}.departures-updated{color:var(--muted);font-size:.8rem}.departures-warning{color:#9a5b00;background:#f59e0b1f;border:1px solid #f59e0b4d;border-radius:12px;padding:10px 14px;font-size:.85rem}.departures-loading{text-align:center;color:var(--muted);padding:24px;font-size:.95rem}.departures-empty{text-align:center;padding:24px}.departures-empty p{color:var(--muted);margin:0;font-size:.95rem}.departures-error{text-align:center;padding:24px}.departures-error-title{margin:0 0 8px;font-size:1rem;font-weight:600}.departures-error-message{color:var(--muted);margin:0;font-size:.9rem}.departures-list{flex-direction:column;gap:2px;display:flex}.departure-row{background:var(--surface-muted);text-align:left;width:100%;color:inherit;border:none;border-radius:12px;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;padding:12px 14px;display:grid}.departure-row--clickable{cursor:pointer;transition:transform .15s,box-shadow .15s}.departure-row--clickable:hover{box-shadow:var(--shadow-sm);transform:translateY(-1px)}.departure-row--disrupted{background:#f59e0b14}.departure-row--cancelled{background:#ef444414}.departure-time-block{align-items:center;gap:8px;display:flex}.departure-scheduled{font-size:1rem;font-weight:600}.departure-scheduled--cancelled{color:var(--muted);text-decoration:line-through}.departure-estimated{color:var(--accent-strong);font-size:1rem;font-weight:600}.departure-delay{color:#9a5b00;background:#f59e0b26;border-radius:6px;padding:2px 6px;font-size:.75rem;font-weight:600}.departure-cancelled-badge{color:#b91c1c;background:#ef444426;border-radius:6px;padding:2px 6px;font-size:.75rem;font-weight:600}.departure-train{align-items:center;gap:6px;font-size:.9rem;font-weight:500;display:flex}.departure-operator{color:var(--muted);font-size:.85rem}.departure-train-id{font-weight:600}.departure-reason{color:#9a5b00;grid-column:1/-1;margin-top:4px;font-size:.8rem}.departure-track{flex-direction:column;align-items:center;gap:2px;min-width:50px;display:flex}.departure-track-label{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-size:.7rem}.departure-track-value{font-size:1rem;font-weight:600}.disruption-banner{background:#f59e0b1f;border:1px solid #f59e0b59;border-radius:18px;flex-direction:column;display:flex}.disruption-banner-toggle{cursor:pointer;text-align:left;width:100%;font:inherit;background:0 0;border:none;justify-content:space-between;align-items:center;gap:8px;padding:12px 18px;display:flex}.disruption-banner-title{color:#9a5b00;font-size:.9rem;font-weight:600}.disruption-banner-chevron{color:#9a5b00;font-size:.65rem}.disruption-banner-list{color:#7a4a00;flex-direction:column;gap:10px;margin:0;padding:0 18px 14px;font-size:.85rem;list-style:none;display:flex}.disruption-banner-item{flex-direction:column;gap:2px;display:flex}.disruption-banner-header{font-weight:600}.disruption-banner-time{color:#9a5b00;opacity:.8;font-weight:400}.disruption-banner-details{white-space:pre-line;margin:0;font-size:.82rem;line-height:1.45}.next-departure-alert{background:#f59e0b1a;border:1px solid #f59e0b59;border-radius:16px;flex-direction:column;gap:8px;padding:14px 16px;display:flex}.next-departure-alert--cancelled{background:#ef444414;border-color:#ef44444d}.next-departure-alert-headline{margin:0;font-size:.95rem;font-weight:600}.next-departure-alert-subtitle{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:0;font-size:.8rem}.next-departure-alternatives{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.next-departure-alternative{border:1px solid var(--border);background:var(--surface);cursor:pointer;text-align:left;border-radius:12px;align-items:center;gap:12px;width:100%;padding:10px 14px;transition:transform .15s,border-color .15s;display:flex}.next-departure-alternative:hover{border-color:var(--accent);transform:translateY(-1px)}.alternative-time{font-weight:700}.alternative-train{flex:1;font-size:.9rem}.alternative-operator--other{color:var(--accent-strong);font-size:.85rem;font-weight:600}.alternative-track{color:var(--muted);font-size:.8rem}.departures-footer{flex-wrap:wrap;justify-content:center;align-items:center;gap:12px;display:flex}.push-toggle{border:1px solid var(--border);background:var(--surface);cursor:pointer;border-radius:999px;padding:10px 18px;font-weight:600;transition:transform .2s,border-color .2s}.push-toggle:hover{border-color:var(--accent);transform:translateY(-1px)}.push-toggle--on{border-color:var(--accent);background:#0e74901a}.push-toggle--denied{border:1px solid var(--border);color:var(--muted);border-radius:999px;padding:10px 18px;font-size:.9rem}.train-search{align-items:center;display:flex;position:absolute;top:50%;right:0;transform:translateY(-50%)}.train-search-toggle{border:1px solid var(--border);background:var(--surface);cursor:pointer;width:44px;height:44px;box-shadow:var(--shadow-sm);border-radius:999px;font-size:1.1rem;transition:transform .2s,border-color .2s}.train-search-toggle:hover{border-color:var(--accent);transform:translateY(-1px)}.train-search-form{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-sm);z-index:30;border-radius:18px;gap:8px;padding:10px;display:flex;position:absolute;top:calc(100% + 8px);right:0}.train-search-form input{border:1px solid var(--border);font:inherit;background:var(--surface);border-radius:12px;width:130px;padding:10px 12px}.train-modal-backdrop{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:50;background:#0f172a66;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.train-modal-sheet{background:var(--surface);border:1px solid var(--border);width:min(900px,100%);height:88dvh;box-shadow:var(--shadow-lg);border-bottom:none;border-radius:28px 28px 0 0;flex-direction:column;animation:.3s ease-out train-sheet-up;display:flex;position:relative;overflow:hidden}@keyframes train-sheet-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}.train-modal-handle{background:var(--border);border-radius:999px;flex-shrink:0;width:48px;height:5px;margin:12px auto 4px}.train-modal-close{border:1px solid var(--border);background:var(--surface);cursor:pointer;z-index:10;border-radius:999px;width:36px;height:36px;font-size:.9rem;position:absolute;top:16px;right:16px}.train-modal-status{text-align:center;color:var(--muted);padding:48px 24px}.train-info-panel{flex-direction:column;flex-shrink:0;gap:14px;padding:8px 24px 16px;display:flex}.train-info-header{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:12px;padding-right:44px;display:flex}.train-info-title{align-items:baseline;gap:8px;display:flex}.train-info-ident{font-size:1.3rem;font-weight:700}.train-info-updated{color:var(--muted);font-size:.8rem}.train-segment{grid-template-columns:1fr auto 1fr;align-items:center;gap:12px;display:grid}.train-segment-block{background:var(--surface-muted);border:1px solid var(--border);border-radius:18px;flex-direction:column;gap:4px;padding:10px 14px;display:flex}.train-segment-label{text-transform:uppercase;letter-spacing:.12em;color:var(--muted);font-size:.7rem}.train-segment-station{font-size:.95rem;font-weight:600}.train-segment-times{align-items:center;gap:8px;font-size:.95rem;display:flex}.train-time--realtime{color:var(--accent-strong);font-weight:600}.train-time--cancelled{color:var(--muted);text-decoration:line-through}.train-segment-track{color:var(--muted);border:1px solid var(--border);background:var(--surface);border-radius:6px;margin-left:auto;padding:2px 8px;font-size:.78rem;font-weight:600}.train-inbound{color:#5b21b6;background:#8b5cf61a;border:1px solid #8b5cf64d;border-radius:12px;padding:8px 12px;font-size:.82rem}.train-warnings{flex-wrap:wrap;gap:8px;display:flex}.train-warning{color:#9a5b00;background:#f59e0b1f;border:1px solid #f59e0b4d;border-radius:999px;padding:6px 12px;font-size:.8rem}.train-map-wrapper{flex:1;min-height:0}.train-map{width:100%;height:100%}.train-map-loading,.train-map-empty{height:100%;color:var(--muted);background:var(--surface-muted);justify-content:center;align-items:center;display:flex}@media (max-width:700px){main.page{padding:32px 16px 72px}.commute-route{grid-template-columns:1fr}.route-arrow{display:none}.modal-header{flex-direction:column;align-items:flex-start}.departure-row{grid-template-columns:auto 1fr auto;gap:8px}.departure-time-block{flex-wrap:wrap}.train-segment{grid-template-columns:1fr;gap:8px}.train-segment .direction-arrow-small{display:none}.train-modal-sheet{height:92dvh}}
