:root{font-family:DM Sans,sans-serif;color:#293e35;background:#f2f0e8;font-synthesis:none;font-weight:400;--paper: #f2f0e8;--forest: #293e35;--moss: #78866a;--leaf: #c4d29b;--muted: #8a8c7f;--line: #dbddd0;--glass: rgba(252, 252, 247, .88)}*{box-sizing:border-box}body{margin:0;-webkit-font-smoothing:antialiased}button,input,a{-webkit-tap-highlight-color:transparent}button,input{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer;color:inherit}button{transition:background .18s,transform .18s}button:active{transform:scale(.96)}button:focus-visible,a:focus-visible{outline:2px solid #6a8350;outline-offset:4px}button svg,svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}a{color:inherit;text-decoration:none}#app{max-width:1800px;margin:auto;min-height:100svh;display:flex;flex-direction:column}.header{height:108px;display:flex;align-items:center;justify-content:space-between;margin:0 5%;border-bottom:1px solid var(--line);position:relative;z-index:2}.wordmark{font-family:Manrope,sans-serif;font-size:32px;font-weight:800;letter-spacing:-1.8px;display:flex;align-items:center;gap:11px}.brand-icon{font-family:DM Sans;display:flex;align-items:center;justify-content:center;width:34px;height:39px;background:var(--forest);color:var(--paper);font-size:29px;letter-spacing:-2px;border-radius:9px 9px 9px 1px;padding-bottom:7px}.brand-dot{font-size:11px;letter-spacing:0;align-self:flex-start;margin-top:9px;margin-left:-7px}.header-caption{font-size:10px;letter-spacing:2.2px;margin-left:-80px;font-weight:550}.connection-button{display:flex;align-items:center;gap:9px;border:1px solid #d6d9ca;padding:10px 14px;border-radius:30px;background:transparent;font-size:12px}.connection-button svg{width:13px;height:13px;margin-left:10px}.status-dot{width:6px;height:6px;background:#a0a58a;border-radius:50%}.is-live .status-dot{background:#6b9156}.experience{position:relative;flex:1;min-height:760px;max-height:1100px;height:calc(100svh - 170px);isolation:isolate}.scene-wrap{position:absolute;inset:0;overflow:hidden;z-index:-1}#scene{width:100%;height:100%;display:block;touch-action:none}#scene-error{position:absolute;left:45%;top:45%;max-width:260px;font-size:14px}.intro{position:absolute;top:57px;left:5%;width:330px;pointer-events:none}.intro>*{pointer-events:auto}.eyebrow{display:flex;align-items:center;gap:8px;font-size:9px;letter-spacing:1.7px;font-weight:600}.tiny-sun{font-size:19px;color:#87946a;line-height:1}.edition{margin-left:12px;color:#939987;font-size:9px;letter-spacing:1.1px}h1{font-family:Manrope,sans-serif;font-size:49px;line-height:1.15;letter-spacing:-2.6px;margin:22px 0 17px;font-weight:500}h1 span{font-family:Georgia,serif;font-style:italic;font-weight:400;color:#718663}p{font-size:13px;color:#7e8476;line-height:1.8}.intro p{margin:0 0 29px}.stop-search{max-width:290px}.stop-search label,#key-form label{font-size:9px;letter-spacing:1.5px;font-weight:600;display:block;margin-bottom:9px}.input-wrap{display:flex;align-items:center;border:1px solid #d7dbcd;border-radius:9px;background:#fffff966;height:48px;padding:0 6px 0 13px}.input-wrap>svg{width:17px;height:17px;color:#8a9580}.input-wrap input{width:100%;min-width:0;border:0;outline:none;background:transparent;padding:12px 11px;font-size:13px;font-weight:500;color:var(--forest)}.input-wrap:focus-within{border-color:#819370;box-shadow:0 0 0 3px #81937015}.input-wrap button{width:34px;height:34px;flex-shrink:0;border:0;border-radius:6px;background:var(--forest);color:#f5f5eb;display:grid;place-items:center}.input-wrap button svg{width:17px}#search-help{font-size:10px;color:#929887;margin-top:9px}#search-help span{float:right;font-size:13px}.scene-note{position:absolute;top:58px;right:5%;display:flex;align-items:flex-start;gap:9px;font-size:11px;color:#89917f;line-height:1.6}.scene-note strong{font-size:12px;color:#4e614e;font-weight:500}.note-dot{width:6px;height:6px;background:#9aa67f;border-radius:100%;margin-top:5px}.departure-card{position:absolute;bottom:43px;left:5%;width:328px;border:1px solid rgba(255,255,255,.8);border-radius:15px;padding:21px;background:var(--glass);box-shadow:0 7px 30px #4f5a3410;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.stop-heading{display:flex;align-items:center;gap:12px}.bus-icon{display:grid;place-items:center;width:37px;height:41px;border-radius:9px;background:#e9eddf;color:#5f7652}.bus-icon svg{width:23px;height:23px}h2{font-family:Manrope;font-size:16px;letter-spacing:-.5px;margin:0 0 4px;font-weight:700}.stop-meta{display:flex;gap:6px;align-items:center;color:#8a9280;font-size:9px}.stop-meta>span:first-child{color:#60784f;font-size:9px;font-weight:600}#refresh-button{margin-left:auto;width:30px;height:34px;display:grid;place-items:center;background:transparent;border:0;color:#8b9680}#refresh-button svg{width:16px}.departure-labels{display:flex;justify-content:space-between;font-size:8px;letter-spacing:1px;color:#909782;margin-top:25px;margin-bottom:9px;font-weight:500}#data-badge{display:flex;align-items:center;gap:4px;letter-spacing:.7px;font-size:7px}#data-badge i{width:4px;height:4px;background:#a6ab92;border-radius:50%}#data-badge.live{color:#60834e}#data-badge.live i{background:#789d62}.departure{display:flex;align-items:center;gap:10px;padding:12px 0;border-bottom:1px solid #e5e8db}.route{background:#e9efdf;border-radius:5px;min-width:37px;height:28px;display:grid;place-items:center;font-size:13px;font-weight:650;color:#597347}.departure:first-child .route{background:var(--forest);color:#eff1e8}.destination{font-size:12px;font-weight:500;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.destination small{display:block;color:#9a9e90;font-size:9px;font-weight:400;margin-top:2px}.arrival{font-family:Manrope;font-weight:650;font-size:19px;white-space:nowrap;letter-spacing:-.8px}.arrival small{font-family:DM Sans;font-size:9px;font-weight:400;letter-spacing:0;color:#8a9480;margin-left:3px}.realtime-wave{display:inline-block;margin-right:4px;color:#899c6d;font-size:13px;transform:rotate(-45deg)}.departure-footer{display:flex;align-items:center;justify-content:space-between;margin-top:16px;gap:5px}.departure-footer>span{color:#9a9e90;font-size:8px}.departure-footer button{border:0;background:transparent;padding:0;font-size:9px;white-space:nowrap;color:#5e7253}.departure-footer button span{font-size:14px;margin-left:3px}.status-message{font-size:10px;margin:12px 0 0;line-height:1.5;color:#a4774a}.scene-toolbar{position:absolute;bottom:50px;right:5%;display:flex;align-items:center;gap:3px;border:1px solid #e2e3d7;border-radius:30px;padding:5px;background:#fafbf375;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.round-button{width:36px;height:36px;border:0;background:transparent;border-radius:50%;display:grid;place-items:center;color:#64765a}.round-button:hover{background:#e1e7d5}.round-button svg{width:17px;height:17px}.toolbar-divider{height:18px;width:1px;background:#dce1d1;margin:0 5px}.view-hint{position:absolute;bottom:62px;left:59%;transform:translate(-50%);display:flex;align-items:center;gap:8px;color:#939b87;font-size:10px;white-space:nowrap}.view-hint svg{width:16px;height:16px}.season-stamp{position:absolute;right:6%;bottom:145px;display:flex;align-items:center;gap:10px;transform:rotate(-8deg);color:#9ea889}.season-stamp svg{width:37px;height:37px;stroke-width:1}.season-stamp span{font-size:8px;letter-spacing:1.3px;line-height:1.7}.page-footer{height:62px;display:flex;align-items:center;justify-content:space-between;margin:0 5%;border-top:1px solid var(--line);font-size:8px;letter-spacing:1.5px;color:#919884;flex-shrink:0}.page-footer a{font-size:9px;letter-spacing:.2px}.page-footer a span{margin-left:7px}.footer-time{font-variant-numeric:tabular-nums}dialog{width:min(440px,calc(100% - 32px));border:1px solid #dce1d1;background:#f9faf2;border-radius:20px;padding:37px;color:var(--forest);box-shadow:0 20px 100px #23332125}dialog::backdrop{background:#2c3b3445;-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px)}dialog h2{font-size:27px;font-weight:500;margin-top:20px;letter-spacing:-1px}dialog p{font-size:12px;line-height:1.8}.dialog-close-form{position:absolute;top:12px;right:13px}.dialog-close-form button{border:0;background:transparent;width:32px;height:32px;font-size:24px;color:#88937c}#key-form{margin-top:25px}#key-form input{width:100%;height:46px;border:1px solid #d5ddc9;border-radius:7px;background:#edf0e5;padding:12px;outline-color:#84976d;color:var(--forest)}#key-form small{display:block;font-size:10px;color:#929a86;line-height:1.6;margin:8px 0 20px}.primary-button{display:flex;justify-content:space-between;align-items:center;width:100%;height:45px;background:var(--forest);color:#f4f5ea;border:0;border-radius:7px;padding:12px 15px;font-size:12px}.key-link{display:block;font-size:11px;text-align:center;margin:20px 0}.demo-button{display:block;margin:auto;background:transparent;border:0;color:#939b86;font-size:10px}.loading #refresh-button svg{animation:spin 1s linear infinite}.empty-departures{font-size:12px;padding:19px 0;color:#87917d;line-height:1.7}@keyframes spin{to{transform:rotate(360deg)}}@media(min-width:1500px){.intro{top:80px}.departure-card{bottom:65px}.scene-toolbar{bottom:72px}.view-hint{bottom:84px}.season-stamp{bottom:175px}h1{font-size:57px}}@media(max-width:1100px)and (min-width:701px){.header{height:90px}.header-caption{display:none}.intro{width:260px;top:45px}h1{font-size:41px}.intro p{font-size:11px}.stop-search{max-width:250px}.departure-card{width:290px;padding:17px}.experience{min-height:760px}.scene-note{font-size:10px}.view-hint{left:64%}.season-stamp{display:none}}@media(max-width:700px){.header{height:75px;margin:0 6%}.wordmark{font-size:27px}.brand-icon{width:28px;height:32px;font-size:24px;border-radius:7px 7px 7px 1px;padding-bottom:5px}.brand-dot{font-size:9px}.header-caption{display:none}.connection-button{font-size:10px;padding:9px 11px}.connection-button svg{margin-left:2px}.experience{height:auto;max-height:none;min-height:930px;aspect-ratio:9/19}.intro{left:6%;top:29px;width:88%}.eyebrow{font-size:8px;letter-spacing:1.4px}.edition{font-size:8px;margin-left:auto}h1{font-size:39px;letter-spacing:-1.8px;line-height:1.15;margin:18px 0 12px}h1 br{display:none}h1{max-width:300px}.intro p{font-size:11px;line-height:1.65;margin-bottom:20px}.intro p br{display:none}.stop-search{max-width:none}.stop-search label{display:none}.input-wrap{height:44px;background:#f6f6edaa}.input-wrap input{font-size:12px}#search-help{font-size:9px}.scene-note{top:330px;left:6%;right:auto;font-size:9px;line-height:1.5}.scene-note strong{font-size:10px}.scene-wrap{inset:265px 0 275px}.departure-card{width:88%;left:6%;bottom:40px;padding:18px 21px}.stop-heading h2{font-size:16px}.departure-labels{margin-top:20px}.departure{padding:9px 0}.departure-footer{margin-top:13px}.scene-toolbar{right:6%;bottom:377px;padding:3px;gap:0}.round-button{width:31px;height:31px}.scene-toolbar #sound-button,.toolbar-divider,.season-stamp{display:none}.view-hint{left:50%;bottom:352px;font-size:9px}.scene-note{top:294px}.page-footer{margin:0 6%;height:60px;font-size:7px}.page-footer>span:first-child{display:none}.page-footer a{font-size:8px}.page-footer .footer-time{font-size:7px}.scene-wrap #scene-error{left:15%;top:40%}}@media(max-width:370px){h1{font-size:34px}.departure-card{padding:17px}.stop-meta{font-size:8px}.experience{min-height:900px}.scene-toolbar{bottom:369px}.view-hint{bottom:340px}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;animation-duration:.01ms!important;transition-duration:.01ms!important}}@media(max-width:700px){.experience{height:auto;min-height:0;aspect-ratio:9/16}.intro{top:22px}h1{font-size:33px;max-width:100%;margin:15px 0 17px;line-height:1.15}h1 br{display:initial}.intro p{display:none}.input-wrap{height:42px}.scene-wrap{inset:170px 0 250px}.scene-note{top:216px}.departure-card{bottom:15px;padding:15px 19px}.departure-labels{margin-top:16px}.departure{padding:7px 0}.departure-footer{margin-top:12px}.scene-toolbar{bottom:282px}.view-hint{bottom:259px;font-size:8px}}@media(max-width:370px){.experience{min-height:640px}.scene-wrap{inset:170px 0 250px}.scene-toolbar{bottom:280px}.view-hint{bottom:257px}h1{font-size:30px}}@media(max-width:700px){.scene-wrap{inset:205px 0 260px}.view-hint{display:none}.scene-toolbar{bottom:290px}.scene-note{display:none}}.header-actions{display:flex;align-items:center;gap:12px}.lighting-control{display:flex;align-items:center;gap:7px;color:#71816a}.lighting-control svg{width:16px;height:16px}.lighting-control select{font:inherit;font-size:11px;color:inherit;background:transparent;border:0;padding:10px 18px 10px 0;cursor:pointer;outline-offset:3px}.intro{top:48px;width:310px}h1{margin:0 0 26px}.scene-wrap{inset:85px calc(5% + 348px) 0 2%}.departure-card{inset:50% 5% auto auto;transform:translateY(-50%)}.scene-toolbar{right:calc(5% + 370px);bottom:38px}.page-footer a{margin-right:auto}.page-footer .footer-time{margin-left:auto}@media(min-width:1500px){.intro{top:60px}.departure-card{bottom:auto}.scene-toolbar{bottom:50px}}@media(min-width:701px)and (max-width:1100px){.departure-card{width:280px;right:4%}.scene-wrap{inset:150px calc(4% + 290px) 0 0}.scene-toolbar{right:calc(4% + 306px)}.intro{width:270px}h1{font-size:38px;line-height:1.14;margin-bottom:20px}.intro .stop-search{max-width:245px}}@media(max-width:700px){.header-actions{gap:9px}.lighting-control{gap:3px}.lighting-control select{font-size:9px;padding-right:0;max-width:73px}.lighting-control svg{width:13px;height:13px}.header .connection-button{padding:9px 8px}.header .connection-button svg{display:none}.intro{top:25px;width:88%}h1{font-size:33px;margin:0 0 17px}.scene-wrap{inset:150px 0 260px}.departure-card{transform:none;inset:auto 6% 15px;width:auto}.scene-toolbar{right:6%;bottom:290px}.experience{min-height:0}.page-footer a,.page-footer .footer-time{display:block}}@media(max-width:370px){.experience{min-height:640px}h1{font-size:30px}.header-actions{gap:6px}.connection-button{font-size:9px}.lighting-control svg{display:none}}:root[data-night=true]{color-scheme:dark;--paper: #15212c;--forest: #e5edda;--moss: #a0b093;--leaf: #c4d29b;--muted: #a3afa6;--line: #34434c;--glass: rgba(28, 43, 54, .93);background:#15212c;color:#e5edda}html,body{transition:background-color .8s,color .8s}html[data-night=true] body{background:#15212c}html[data-night=true] .brand-icon{background:#c3d5ad;color:#1d3029}html[data-night=true] h1 span{color:#b6cb9c}html[data-night=true] .connection-button{border-color:#41534f;color:#d4ddcf}html[data-night=true] .lighting-control{color:#b0c1b7}html[data-night=true] .lighting-control option{background:#1b2c36;color:#dce6d5}html[data-night=true] .input-wrap{background:#1c2d36;border-color:#41554f}html[data-night=true] .input-wrap>svg{color:#9eafa0}html[data-night=true] .input-wrap button{background:#b8cda4;color:#213829}html[data-night=true] #search-help{color:#9aa99d}html[data-night=true] .departure-card{border-color:#3b4c54;box-shadow:0 8px 35px #07101735}html[data-night=true] .bus-icon{background:#2e443e;color:#bdd1a5}html[data-night=true] .stop-meta,html[data-night=true] .destination small,html[data-night=true] .arrival small{color:#a7b6a9}html[data-night=true] .stop-meta>span:first-child{color:#bdcfa9}html[data-night=true] .departure-labels,html[data-night=true] #data-badge{color:#a3b5a7}html[data-night=true] .departure{border-color:#354b49}html[data-night=true] .route{background:#30493e;color:#bed2aa}html[data-night=true] .departure:first-child .route{background:#bbd0a3;color:#243a2d}html[data-night=true] .departure-footer>span{color:#9cafa2}html[data-night=true] .departure-footer button{color:#c0d3a9}html[data-night=true] #refresh-button{color:#adbeab}html[data-night=true] .scene-toolbar{background:#1c303aab;border-color:#3d514e}html[data-night=true] .round-button{color:#c0d0ac}html[data-night=true] .round-button:hover{background:#344c43}html[data-night=true] .toolbar-divider{background:#485b50}html[data-night=true] .page-footer{color:#a2b1a4}html[data-night=true] dialog{background:#1b2c36;color:#e5edda;border-color:#40534e}html[data-night=true] dialog p,html[data-night=true] #key-form small{color:#b0bfae}html[data-night=true] #key-form input{background:#14242c;border-color:#41594e;color:#dfebd9}html[data-night=true] .primary-button{background:#b9cfa4;color:#223b2d}html[data-night=true] .status-message{color:#e3c293}@media(min-width:1101px){.intro{width:350px}}@media(min-width:1500px){.intro{width:410px}}.transport-tabs{display:flex;gap:4px;width:max-content;padding:4px;background:#e5e9dc;border-radius:9px;margin-bottom:17px}.transport-tabs button{display:flex;align-items:center;gap:7px;min-height:34px;padding:6px 11px;border:0;border-radius:6px;background:transparent;color:#7b8a72;font-size:11px}.transport-tabs button svg{width:16px;height:16px}.transport-tabs button[aria-pressed=true]{background:#fafbf4;color:#344f3c;box-shadow:0 1px 5px #506a3510}.intro h1{font-size:43px;line-height:1.12;margin-bottom:20px}.intro{top:35px}.rail-tracks[hidden]{display:none}.rail-tracks{border-top:1px solid var(--line);padding-top:13px;margin-top:9px}.track-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:9px;font-size:8px;letter-spacing:1.3px;color:#8a9781}.track-heading button{font-size:9px;letter-spacing:0;border:0;background:transparent;color:#718463;padding:3px}.track-heading button[aria-pressed=true]{color:#3f6343}.track-buttons{display:grid;grid-template-columns:repeat(10,minmax(0,1fr));gap:4px}.track-buttons button{height:25px;border:1px solid #d9e0cf;background:transparent;border-radius:4px;padding:0;font-size:10px;color:#8c9782}.track-buttons button.has-service{background:#e6eddc;color:#4f7350}.track-buttons button[aria-pressed=true]{background:#526f4c;color:#f0f3e8;border-color:#526f4c}.rail-view .departure-card{width:350px}.rail-view .scene-wrap{right:calc(5% + 370px);top:135px}.rail-view #departures{max-height:308px;overflow-y:auto;scrollbar-width:thin;scrollbar-color:#b7c6a4 transparent}.rail-view .departure{gap:7px;padding:10px 0}.rail-view .route{font-size:10px;min-width:43px;padding:0 5px}.rail-view .destination{font-size:11px}.rail-view .arrival{font-size:16px}.rail-view .arrival small{font-size:8px}.rail-view .stop-meta{font-size:8px;gap:4px}.track-cell{min-width:28px;text-align:center;color:#627e58;font-size:12px}.track-cell strong{display:block;font-weight:600}.track-cell small{display:block;letter-spacing:.7px;font-size:6px;margin-top:2px;color:#95a08b}.rail-view .departure-labels{margin-top:19px}.rail-view .scene-toolbar{right:calc(5% + 390px)}html[data-night=true] .transport-tabs{background:#263b3d}html[data-night=true] .transport-tabs button{color:#a8b8a1}html[data-night=true] .transport-tabs button[aria-pressed=true]{background:#415b4c;color:#e0ebd0}html[data-night=true] .track-buttons button{border-color:#40574c;color:#9daf99}html[data-night=true] .track-buttons button.has-service{background:#304d3c;color:#c6d8ad}html[data-night=true] .track-buttons button[aria-pressed=true]{background:#b4c99c;color:#283e2c}html[data-night=true] .track-heading,html[data-night=true] .track-cell{color:#b4c9a4}html[data-night=true] .track-heading button{color:#bdd3a8}html[data-night=true] .track-cell small{color:#a5b69c}@media(min-width:701px)and (max-width:1100px){.intro h1{font-size:34px}.intro{top:28px}.transport-tabs button{font-size:10px;padding:6px 9px}.rail-view .departure-card{width:300px;right:4%}.rail-view .scene-wrap{right:calc(4% + 310px);top:175px}.rail-view .scene-toolbar{right:calc(4% + 320px)}.rail-view .stop-heading{gap:7px}.rail-view .stop-meta{font-size:7px}.rail-view .stop-meta span:last-child{max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}@media(max-width:700px){.intro{top:23px}.intro h1{font-size:28px;line-height:1.12;margin-bottom:12px}.transport-tabs{margin-bottom:10px;padding:3px}.transport-tabs button{min-height:30px;padding:5px 10px;font-size:10px}.transport-tabs button svg{width:14px;height:14px}.scene-wrap{top:205px}.rail-view .experience{min-height:1000px;height:auto;max-height:none;aspect-ratio:auto}.rail-view .departure-card{width:auto;left:6%;right:6%;bottom:15px}.rail-view .scene-wrap{inset:213px 0 452px}.rail-view .scene-toolbar{right:6%;bottom:466px}.rail-view #departures{max-height:207px}.rail-view .departure-labels{margin-top:17px}.rail-view .track-buttons{gap:4px}.rail-view .stop-meta{font-size:8px}}.rail-live-status[hidden]{display:none}.rail-live-status{font-size:9px;color:#869578;margin:0 0 8px;padding:6px 8px;background:#e8eedf;border-radius:5px;line-height:1.5}.rail-live-status.streaming{color:#4c7650}.destination small.position-known{color:#5f8051}html[data-night=true] .rail-live-status{background:#2a403b;color:#bdcfae}html[data-night=true] .destination small.position-known{color:#bed49f}@media(max-width:700px){.rail-view .scene-wrap,.rail-view .scene-toolbar{bottom:500px}}.timetable-tabs[hidden]{display:none}.timetable-tabs{display:flex;gap:4px;padding:3px;border-radius:7px;background:#e8edde;margin-top:19px}.timetable-tabs button{display:flex;align-items:center;justify-content:center;gap:12px;flex:1;min-height:31px;padding:5px 8px;border:0;border-radius:5px;background:transparent;color:#849079;font-size:11px}.timetable-tabs button span{font-size:13px}.timetable-tabs button[aria-pressed=true]{background:#fafbf4;color:#395d43;box-shadow:0 1px 4px #33492b0a}.rail-view .timetable-tabs+.departure-labels{margin-top:14px}.rail-view .arrival.arrived{font-size:11px;letter-spacing:-.2px}.rail-view .arrival.arrived small{display:block;font-size:9px;margin:3px 0 0;text-align:right}html[data-night=true] .timetable-tabs{background:#293e3c}html[data-night=true] .timetable-tabs button{color:#a4b49c}html[data-night=true] .timetable-tabs button[aria-pressed=true]{background:#405a49;color:#e0eacf}@media(max-width:700px){.rail-view .experience{min-height:1040px}.rail-view .scene-wrap,.rail-view .scene-toolbar{bottom:540px}.timetable-tabs{margin-top:16px}}@media(max-width:700px){.rail-view .scene-toolbar{bottom:558px}}.arrival-history{padding:14px 0 6px;font-size:8px;letter-spacing:1.2px;color:#86947b}html[data-night=true] .arrival-history{color:#a9bba0}#scene{-webkit-tap-highlight-color:transparent}.search-toggle,.track-select{display:none}.local-clock{margin-left:auto;color:var(--forest);font-size:11px;font-weight:500;font-variant-numeric:tabular-nums;white-space:nowrap;letter-spacing:0}.track-tooltip[hidden]{display:none}.track-tooltip{position:fixed;z-index:5;top:10px;left:10px;width:min(270px,calc(100% - 20px));padding:10px 12px;border:1px solid var(--line);border-radius:9px;background:var(--glass);color:var(--forest);box-shadow:0 4px 16px #15212c12;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);font-size:11px;line-height:1.5;pointer-events:none}.track-tooltip strong{display:block;font-size:12px;margin-bottom:4px}.track-tooltip div+div{margin-top:4px}.departure-card,.rail-view .departure-card{display:flex;flex-direction:column;height:clamp(280px,58svh,540px);max-height:calc(100svh - 180px);padding:16px;overflow:hidden}.stop-heading{flex-shrink:0;gap:8px}.stop-heading>div{flex:1;min-width:0}.stop-heading h2{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#refresh-button{margin-left:0;flex-shrink:0}.rail-view .stop-heading .bus-icon{display:none}.rail-view .track-select:not([hidden]){display:block;width:84px;height:34px;min-width:0;flex-shrink:0;border:1px solid var(--line);border-radius:6px;background:var(--paper);color:var(--forest);font:inherit;font-size:10px;padding:4px}.rail-view .departure-labels{display:none}#departures,.rail-view #departures{flex:1;min-height:0;max-height:none;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin}.timetable-tabs{flex-shrink:0;margin-top:8px;margin-bottom:6px}.timetable-tabs button{min-height:28px}.rail-live-status{flex-shrink:0}.departure-footer{flex-shrink:0;gap:4px 8px;flex-wrap:wrap}.status-message{flex-shrink:0}.metro-view .route{background:#f7ddcd;color:#a44720}.metro-view .departure:first-child .route{background:#d96128;color:#fff6e8}html[data-night=true] .metro-view .route{background:#593d30;color:#ffbf91}html[data-night=true] .metro-view .departure:first-child .route{background:#ee8245;color:#16212b}.metro-view #sound-button,.metro-view .toolbar-divider{display:none}@media(max-width:700px){html,body{height:100%;overflow:hidden}#app{height:100dvh;min-height:0;overflow:hidden}.header{height:56px;min-height:56px;margin:0 16px;gap:12px}.wordmark{font-size:22px;letter-spacing:-1.2px;gap:8px}.brand-icon{width:24px;height:28px;font-size:22px;padding-bottom:4px}.brand-dot{font-size:8px;margin-top:5px;margin-left:-5px}.header-actions{gap:8px}.lighting-control{gap:4px}.lighting-control svg{display:block;width:14px;height:14px}.lighting-control select{min-height:44px;max-width:76px;font-size:10px;padding:8px 0}.header .connection-button{min-height:36px;padding:8px;font-size:9px;gap:6px}.experience,.rail-view .experience{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto 30dvh minmax(0,1fr);height:auto;min-height:0;max-height:none;aspect-ratio:auto;flex:1;padding:8px 0;gap:8px}.intro{position:relative;inset:auto;grid-row:1;width:auto;margin:0 16px;display:grid;grid-template-columns:1fr auto 36px;align-items:center;gap:6px;pointer-events:auto}.intro h1{display:none}.transport-tabs{grid-column:1;grid-row:1;margin:0;padding:3px;gap:2px;border-radius:8px}.transport-tabs button{min-height:34px;padding:6px 8px;gap:6px;font-size:10px}.transport-tabs button svg{width:14px;height:14px}.transport-detail{display:none}.search-toggle{display:grid;place-items:center;grid-column:3;grid-row:1;width:36px;height:36px;border:1px solid var(--line);border-radius:50%;background:transparent;color:var(--forest)}.search-toggle svg{width:18px;height:18px}.search-toggle[aria-expanded=true]{background:var(--forest);color:var(--paper)}.intro .stop-search{display:none;position:absolute;top:calc(100% + 8px);left:0;right:0;z-index:5;max-width:none;margin:0;padding:8px;background:var(--paper);border:1px solid var(--line);border-radius:10px;box-shadow:0 6px 18px #23332115}.intro.search-open .stop-search{display:block}.input-wrap{height:48px;background:var(--glass)}.input-wrap input{font-size:16px}.input-wrap button{width:40px;height:40px}#search-help{font-size:10px;margin-top:8px}.scene-wrap,.rail-view .scene-wrap{position:relative;inset:auto;grid-row:2;align-self:stretch;z-index:1;width:100%;height:100%;min-height:0;background:var(--paper)}.scene-toolbar,.rail-view .scene-toolbar{position:relative;inset:auto;grid-column:2;grid-row:1;justify-self:end;margin:0;padding:2px;gap:0;border-color:var(--line);background:var(--glass)}.round-button{width:32px;height:32px}.round-button svg{width:14px;height:14px}.departure-card,.rail-view .departure-card{position:relative;inset:auto;grid-row:3;transform:none;width:auto;min-width:0;margin:0 16px;padding:12px 16px;align-self:stretch;min-height:0;overflow:hidden;display:flex;flex-direction:column;height:auto;max-height:none}#departures,.rail-view #departures{flex:1;min-height:0;max-height:none;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin}.stop-heading{flex-shrink:0;gap:8px}.stop-heading>div{flex:1;min-width:0}.stop-heading h2{font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bus-icon{width:30px;height:34px;flex-shrink:0}#refresh-button{margin-left:0;flex-shrink:0}.rail-view .track-select:not([hidden]){display:block;width:80px;min-width:0;height:34px;flex-shrink:0;border:1px solid var(--line);border-radius:6px;background:var(--paper);color:var(--forest);font:inherit;font-size:10px;padding:4px}.rail-view .departure-labels,.rail-view .rail-tracks{display:none}.timetable-tabs{flex-shrink:0;margin-top:8px;margin-bottom:6px}.timetable-tabs button{min-height:28px}.rail-live-status{flex-shrink:0;font-size:8px;margin-bottom:4px;padding:3px 6px}.departure-footer{flex-shrink:0;margin-top:6px;flex-wrap:wrap;gap:2px 8px}.local-clock{font-size:10px}.track-tooltip{top:6px;left:6px;padding:6px 8px;font-size:10px;max-width:calc(100% - 12px)}.status-message{flex-shrink:0;margin-top:4px;font-size:9px;line-height:1.3;max-height:2.6em;overflow:auto}.rail-view .stop-heading .bus-icon{display:none}.rail-view .stop-meta{font-size:8px;flex-wrap:wrap}.rail-view .stop-heading>div{min-width:0}.rail-view .track-buttons{gap:4px}.track-buttons button{height:32px}.page-footer{height:28px;min-height:28px;margin:0 16px;padding:4px 0;gap:8px;flex-wrap:nowrap;letter-spacing:0}.page-footer a{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.page-footer .footer-time{margin-left:0}}@media(max-width:380px){.transport-tabs button svg{display:none}}@media(max-width:480px){.intro{gap:4px}.transport-tabs button{padding:6px 2px;gap:0}.transport-tabs button svg{display:none}.intro .round-button{width:28px}}@media(max-width:700px)and (max-height:500px){.header{height:44px;min-height:44px}.experience,.rail-view .experience{grid-template-rows:auto 30dvh minmax(0,1fr);padding:4px 0;gap:4px}.departure-card,.rail-view .departure-card{padding:8px 12px}.timetable-tabs{margin-top:4px;margin-bottom:4px;padding:2px}.timetable-tabs button{min-height:24px;padding:2px 8px}.rail-live-status{display:none}.departure-labels{margin-top:4px;margin-bottom:4px}.page-footer{height:20px;min-height:20px;padding:2px 0}}@media(min-width:600px)and (max-width:700px)and (max-height:500px){.experience,.rail-view .experience{grid-template-columns:minmax(0,1fr) minmax(280px,1fr);grid-template-rows:auto minmax(0,1fr)}.intro{grid-column:1/-1}.scene-wrap,.rail-view .scene-wrap{grid-column:1;grid-row:2}.departure-card,.rail-view .departure-card{grid-column:2;grid-row:2;margin-right:16px;margin-left:0}}.scene-loading[hidden]{display:none}.scene-loading{position:absolute;inset:0;z-index:2;display:flex;align-items:center;justify-content:center;gap:10px;background:var(--paper);color:var(--forest);font-size:12px}.scene-loading-spinner{width:20px;height:20px;border:2px solid var(--line);border-top-color:var(--forest);border-radius:50%;animation:spin .8s linear infinite}.scene-toolbar button:disabled,#refresh-button:disabled{opacity:.45;cursor:default}
