@font-face{font-family:FDTB-ADEFAO\+IBMPlexSans-Italic;src:url(/assets/fonts/adefao-ibmplexsans-italic.ttf)format("truetype");font-display:block}@font-face{font-family:FDTB-VLTGNY\+IBMPlexSans-Medium;src:url(/assets/fonts/vltgny-ibmplexsans-medium.ttf)format("truetype");font-display:block}@font-face{font-family:FDTB-FNWOXE\+IBMPlexSans-Medium;src:url(/assets/fonts/fnwoxe-ibmplexsans-medium.ttf)format("truetype");font-display:block}@font-face{font-family:FDTB-QOEXQI\+IBMPlexSans-Italic;src:url(/assets/fonts/qoexqi-ibmplexsans-italic.ttf)format("truetype");font-display:block}@font-face{font-family:FDTB-UKDQUA\+PTSans-NarrowBold;src:url(/assets/fonts/ukdqua-ptsans-narrowbold.ttf)format("truetype");font-display:block}@font-face{font-family:FDTB-EMBYEG\+PTSans-Narrow;src:url(/assets/fonts/embyeg-ptsans-narrow.ttf)format("truetype");font-display:block}@font-face{font-family:FDTB-EMBYEG\+IBMPlexSans-Light;src:url(/assets/fonts/embyeg-ibmplexsans-light.ttf)format("truetype");font-display:block}@font-face{font-family:FDTB-EMBYEG\+IBMPlexSansCondensed-Medium;src:url(/assets/fonts/embyeg-ibmplexsanscondensed-medium.ttf)format("truetype");font-display:block}@font-face{font-family:FDTB-OJEGOM\+Barlow-Medium;src:url(/assets/fonts/ojegom-barlow-medium.ttf)format("truetype");font-display:block}@font-face{font-family:FDTB-OJEGOM\+Barlow-ExtraBold;src:url(/assets/fonts/ojegom-barlow-extrabold.ttf)format("truetype");font-display:block}@font-face{font-family:FDTB-OJEGOM\+Barlow-BoldItalic;src:url(/assets/fonts/ojegom-barlow-bolditalic.ttf)format("truetype");font-display:block}@font-face{font-family:FDTB-ZKMPMQ\+IBMPlexSansSemiCondensed-Regular;src:url(/assets/fonts/zkmpmq-ibmplexsanssemicondensed-regular.ttf)format("truetype");font-display:block}@font-face{font-family:FDTB-ZKMPMQ\+IBMPlexSans-SemiBoldItalic;src:url(/assets/fonts/zkmpmq-ibmplexsans-semibolditalic.ttf)format("truetype");font-display:block}@font-face{font-family:FDTB-ZKMPMQ\+Barlow-Bold;src:url(/assets/fonts/zkmpmq-barlow-bold.ttf)format("truetype");font-display:block}@font-face{font-family:FDTB-QOEXQI\+IBMPlexSans-Bold;src:url(/assets/fonts/qoexqi-ibmplexsans-bold.ttf)format("truetype");font-display:block}@font-face{font-family:FDTB-ALHFAO\+IBMPlexSans-Regular;src:url(/assets/fonts/alhfao-ibmplexsans-regular.ttf)format("truetype");font-display:block}@font-face{font-family:FDTB-ALHFAO\+IBMPlexSans-SemiBold;src:url(/assets/fonts/alhfao-ibmplexsans-semibold.ttf)format("truetype");font-display:block}@font-face{font-family:FDTB-KNFNKU\+Barlow-Regular;src:url(/assets/fonts/knfnku-barlow-regular.ttf)format("truetype");font-display:block}@font-face{font-family:FDTB-KNFNKU\+CircularStd-Bold;src:url(/assets/fonts/knfnku-circularstd-bold.ttf)format("truetype");font-display:block}@font-face{font-family:FDTB-KNFNKU\+IBMPlexSansCondensed-Bold;src:url(/assets/fonts/knfnku-ibmplexsanscondensed-bold.ttf)format("truetype");font-display:block}@font-face{font-family:FDTB-UKDQUA\+IBMPlexSans-BoldItalic;src:url(/assets/fonts/ukdqua-ibmplexsans-bolditalic.ttf)format("truetype");font-display:block}@font-face{font-family:FDTB-UKDQUA\+IBMPlexSans-MediumItalic;src:url(/assets/fonts/ukdqua-ibmplexsans-mediumitalic.ttf)format("truetype");font-display:block}@font-face{font-family:FDTJ-ZXZFDA\+PTSans-NarrowBold;src:url(/assets/fonts/zxzfda-ptsans-narrowbold.ttf)format("truetype");font-display:block}@font-face{font-family:FDTJ-YGNZPC\+PTSans-Narrow;src:url(/assets/fonts/ygnzpc-ptsans-narrow.ttf)format("truetype");font-display:block}@font-face{font-family:FDTJ-ARKGRY\+PTSans-Regular;src:url(/assets/fonts/arkgry-ptsans-regular.ttf)format("truetype");font-display:block}@font-face{font-family:FDTJ-KTIOBE\+PTSans-Bold;src:url(/assets/fonts/ktiobe-ptsans-bold.ttf)format("truetype");font-display:block}@font-face{font-family:FDTJ-WTKING\+PlusJakartaSans-Regular;src:url(/assets/fonts/wtking-plusjakartasans-regular.ttf)format("truetype");font-display:block}@font-face{font-family:FDTJ-TRWQXM\+PTSans-Italic;src:url(/assets/fonts/trwqxm-ptsans-italic.ttf)format("truetype");font-display:block}:root{color:#102236;font-synthesis:none;text-rendering:optimizelegibility;background:#e8eef3;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}html,body,#root{width:100%;height:100%;margin:0;overflow:hidden}button,input,select{font:inherit}button{cursor:pointer}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.app-shell{grid-template-rows:72px minmax(0,1fr);height:100%;display:grid}.topbar{z-index:1000;color:#fff;background:#071a2b;grid-template-columns:190px minmax(150px,220px) minmax(240px,620px) 150px;justify-content:space-between;align-items:center;gap:16px;padding:0 24px;display:grid;box-shadow:0 8px 26px #071a2b2e}.brand{color:inherit;align-items:center;gap:12px;text-decoration:none;display:flex}.brand-mark{color:#fff;background:linear-gradient(145deg,#1fb6aa,#13776f);border-radius:13px;place-items:center;width:40px;height:40px;font-weight:900;display:grid;box-shadow:inset 0 1px #ffffff59}.brand strong,.brand small{display:block}.brand strong{letter-spacing:.01em;font-size:16px}.brand small{color:#9db0bf;margin-top:2px;font-size:11px}.area-picker select{color:#e8f2f6;background:#122b3e;border:1px solid #294255;border-radius:12px;outline:none;width:100%;height:40px;padding:0 34px 0 12px}.area-picker select:focus{border-color:#42c8bb;box-shadow:0 0 0 3px #42c8bb2e}.search-box{justify-self:center;width:min(100%,620px);position:relative}.search-box input{color:#f8fafc;background:#122b3e;border:1px solid #294255;border-radius:14px;outline:none;width:100%;height:44px;padding:0 44px;transition:border-color .2s,box-shadow .2s}.search-box input::placeholder{color:#91a4b2}.search-box input:focus{border-color:#42c8bb;box-shadow:0 0 0 3px #42c8bb2e}.search-box__icon{z-index:2;color:#8da3b3;font-size:25px;position:absolute;top:7px;left:15px;transform:rotate(-20deg)}.search-box__busy{border:2px solid #527083;border-top-color:#3dd1c2;border-radius:50%;width:16px;height:16px;animation:.7s linear infinite spin;position:absolute;top:14px;right:15px}.search-results{background:#fff;border:1px solid #dce5eb;border-radius:16px;width:100%;max-height:min(440px,100vh - 120px);margin:0;padding:8px;list-style:none;position:absolute;top:50px;overflow-y:auto;box-shadow:0 20px 50px #091e2d3d}.search-results button{text-align:left;color:#173047;background:0 0;border:0;border-radius:11px;align-items:center;gap:11px;width:100%;padding:10px;display:flex}.search-results button:hover,.search-results button:focus{background:#edf7f6;outline:none}.search-results strong,.search-results small{display:block}.search-results strong{font-size:14px}.search-results small{color:#667c8e;white-space:nowrap;text-overflow:ellipsis;max-width:400px;margin-top:3px;font-size:12px;overflow:hidden}.result-icon{color:#fff;background:#0f766e;border-radius:10px;flex:0 0 34px;place-items:center;width:34px;height:34px;font-size:12px;font-weight:800;display:grid}.result-icon--route{background:#2563eb}.result-icon--shelter{background:#8b5cf6}.result-icon--corridor{background:#ea580c}.result-icon--network-line{background:#0f766e}.result-icon--network-place{background:#7c3aed}.connection-status{justify-self:end;align-items:center;gap:10px;display:flex}.connection-status>span{background:#f59e0b;border-radius:50%;width:10px;height:10px;box-shadow:0 0 0 5px #f59e0b21}.connection-status strong,.connection-status small{display:block}.connection-status strong{font-size:13px}.connection-status small{color:#90a5b4;margin-top:3px;font-size:11px}.status--connected>span{background:#35d399;box-shadow:0 0 0 5px #35d39921}.status--mock>span{background:#60a5fa;box-shadow:0 0 0 5px #60a5fa21}.status--offline>span{background:#ef4444}.map-shell,.map-canvas{width:100%;height:100%;min-height:0;position:relative}.map-shell{overflow:hidden}.map-canvas{z-index:0;background:#dce5e8}.leaflet-control-attribution{font-size:10px!important}.leaflet-control-zoom{border:0!important;margin-top:84px!important;box-shadow:0 6px 20px #112b3a2b!important}.leaflet-control-zoom a{color:#153044!important;width:36px!important;height:36px!important;line-height:34px!important}.map-mode-switch{z-index:705;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#fffffff0;border:1px solid #ffffffbf;border-radius:15px;gap:4px;padding:5px;display:flex;position:absolute;top:18px;left:18px;box-shadow:0 12px 35px #0c2b3b26}.map-mode-switch button{color:#4d6476;background:0 0;border:0;border-radius:10px;align-items:center;gap:7px;min-width:max-content;height:38px;padding:0 12px;font-size:12px;font-weight:800;display:flex}.map-mode-switch button:hover,.map-mode-switch button:focus-visible{color:#0f766e;outline-offset:1px;outline:2px solid #8bd8d0}.map-mode-switch button.active{color:#fff;background:#0b645e;box-shadow:0 4px 12px #0f766e3d}.map-mode-switch span{font-size:17px}.transit-map{background:#f2f0e9;width:100%;height:100%;position:relative;overflow:hidden}.transit-map__canvas{touch-action:none;cursor:grab;-webkit-user-select:none;user-select:none;width:100%;height:100%;display:block}.transit-map__canvas:active{cursor:grabbing}.transit-map__background{fill:#f2f0e9}.transit-place-labels,.transit-place-label{pointer-events:none}.transit-place-label.has-halo{paint-order:stroke fill;stroke:#fff;stroke-width:.16em;stroke-linejoin:round}.transit-place-caption{cursor:pointer;outline:none}.transit-place-caption__hit{fill:#0000;stroke:#0000;stroke-width:.8px;rx:3;pointer-events:all;vector-effect:non-scaling-stroke}.transit-place-caption:hover .transit-place-caption__hit,.transit-place-caption.is-selected .transit-place-caption__hit{fill:#0f766e24;stroke:#0f766e}.transit-map__rail-status{z-index:10;color:#425866;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffffeb;border:1px solid #d9e4e5;border-radius:12px;align-items:center;gap:8px;padding:9px 12px;font-size:10px;font-weight:700;display:flex;position:absolute;bottom:18px;right:18px;box-shadow:0 8px 24px #0c2b3b1f}.transit-map__rail-status>span{background:#94a3b8;border-radius:50%;flex:none;width:8px;height:8px}.transit-map__rail-status>span.is-estimated{background:#eab308;box-shadow:0 0 0 4px #eab30829}.transit-map__zoom{z-index:12;background:#fff;border:1px solid #dce5e8;border-radius:12px;display:grid;position:absolute;bottom:58px;right:18px;overflow:hidden;box-shadow:0 8px 24px #0c2b3b24}.transit-map__zoom button{color:#1f3d50;background:#fff;border:0;place-items:center;width:38px;height:36px;font-size:21px;font-weight:500;display:grid}.transit-map__zoom button+button{border-top:1px solid #e4ebee}.transit-map__zoom button:hover,.transit-map__zoom button:focus-visible{color:#0f766e;background:#eef9f8;outline:none}.transit-trace{cursor:pointer;outline:none}.transit-trace__hit,.transit-trace__selection{fill:none;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}.transit-trace__hit{stroke:#0000;stroke-width:14px;pointer-events:stroke}.transit-trace__selection{stroke:#0f766e;stroke-width:7px;opacity:.2;pointer-events:none}.transit-line{fill:none;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}.transit-line--bus-casing{stroke:#fff;stroke-width:5px}.transit-line--bus{stroke-width:2.4px}.transit-line--rail-casing{stroke:#fff;stroke-width:7px}.transit-line--rail{stroke-width:4.2px}.transit-line--rail-dash{stroke:#fff;stroke-width:1.4px;stroke-dasharray:7 7}.transit-landmark{cursor:pointer;outline:none}.transit-landmark__hit{fill:#0000;stroke:#0000;stroke-width:.8px;pointer-events:all;vector-effect:non-scaling-stroke}.transit-landmark:hover .transit-landmark__hit,.transit-landmark:focus .transit-landmark__hit,.transit-landmark.is-selected .transit-landmark__hit{fill:#0f766e24;stroke:#0f766e}.transit-landmark__outer{fill:#111827}.transit-landmark__inner,.transit-landmark__casing{fill:#fff}.transit-landmark__station-part{stroke:none}.transit-links{pointer-events:none}.transit-link{fill:none;stroke:#191b1c;stroke-linecap:butt}.transit-landmark__outline{fill:#191b1c}.transit-landmark__casing-path{fill:#fff}.transit-landmark__terminus{stroke:none}.transit-landmark__core{fill:#fff}.transit-map__loading{color:#425866;justify-content:center;align-items:center;gap:10px;font-size:12px;font-weight:600;display:flex;position:absolute;inset:0}.transit-map__loading>span{border:2px solid #cbd5e1;border-top-color:#0f766e;border-radius:50%;width:14px;height:14px;animation:.8s linear infinite transit-spin}@keyframes transit-spin{to{transform:rotate(360deg)}}.map-note{z-index:8;color:#475569;background:#ffffffeb;border:1px solid #e2e8f0;border-radius:10px;margin:0 12px 8px;padding:8px 12px;font-size:11px;line-height:1.5;position:relative}.transit-vehicle{cursor:pointer}.transit-vehicle:focus{outline:none}.transit-vehicle__body{fill:#0d766f;stroke:#fff;stroke-width:1.2px}.transit-vehicle--delayed .transit-vehicle__body{fill:#d97706!important}.transit-vehicle--stale{opacity:.65}.transit-vehicle--stale .transit-vehicle__body{fill:#64748b!important}.transit-vehicle.is-selected .transit-vehicle__body{stroke-width:1.8px}.transit-vehicle__pulse{fill:#0f766e29;stroke:#0f766e;stroke-width:.8px;animation:1.5s ease-out infinite transit-pulse}.transit-train{cursor:pointer}.transit-train rect{fill:#3156a3;stroke:#fff;stroke-width:1px}.transit-train circle{fill:#fff}.transit-train--delayed{opacity:.8}.transit-train--stale{opacity:.55}.transit-vehicle__hit,.transit-train .transit-train__hit{fill:#0000;stroke:#0000;pointer-events:all}.network-filter-stack{display:contents}.network-mode-panel,.network-line-panel{z-index:700;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#ffffffed;border:1px solid #ffffffbf;border-radius:16px;align-items:center;gap:9px;max-width:calc(100% - 580px);padding:8px 9px 8px 14px;display:flex;position:absolute;left:50%;transform:translate(-50%);box-shadow:0 12px 35px #0c2b3b26}.network-mode-panel{top:18px}.network-line-panel{max-width:calc(100% - 400px);top:70px}.network-line-panel .corridor-scroll button{align-items:center;gap:7px;display:inline-flex}.network-line-panel .corridor-scroll i{border-radius:50%;width:9px;height:9px;box-shadow:0 0 0 1px #10223629}.corridor-panel__label{color:#687d8c;letter-spacing:.08em;text-transform:uppercase;padding-right:4px;font-size:11px;font-weight:800}.corridor-scroll{overscroll-behavior-inline:contain;scrollbar-width:none;flex:1;gap:6px;min-width:0;scroll-padding-inline:8px;display:flex;overflow-x:auto}.corridor-scroll::-webkit-scrollbar{display:none}.corridor-scroll button{color:#395267;background:#f8fafb;border:1px solid #dce6eb;border-radius:10px;flex:none;min-width:max-content;padding:8px 11px;font-size:12px;font-weight:700}.corridor-scroll button b{color:#8498a7;margin-left:5px;font-size:10px}.corridor-scroll button.active{color:#fff;background:#0f766e;border-color:#0f766e}.corridor-scroll button.active b{color:#bff5ef}.map-actions{z-index:700;gap:8px;display:grid;position:absolute;top:18px;right:18px}.map-actions button{color:#17354b;background:#fffffff5;border:1px solid #e1e8ec;border-radius:14px;justify-content:center;align-items:center;width:46px;height:46px;display:flex;box-shadow:0 7px 20px #0c2b3b24}.map-actions button:hover,.map-actions button:focus{color:#0f766e;border-color:#80cdc5;outline:none}.map-actions span{font-size:22px;font-style:normal}.map-actions em{display:none}.layer-menu{z-index:710;background:#fff;border:1px solid #dce5eb;border-radius:15px;gap:10px;min-width:220px;padding:15px;display:grid;position:absolute;top:76px;right:76px;box-shadow:0 18px 45px #0c2b3b33}.layer-menu strong{color:#183347;font-size:13px}.layer-menu label{color:#4d6476;align-items:center;gap:9px;font-size:13px;display:flex}.layer-menu label.is-disabled{color:#9aa8b1}.layer-menu input{accent-color:#0f766e;width:17px;height:17px}.corridor-legend{border-top:1px solid #e4ebef;gap:8px;padding-top:10px;display:grid}.corridor-legend small{color:#758896;letter-spacing:.06em;text-transform:uppercase;font-size:10px;font-weight:800}.corridor-legend>div{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px 10px;display:grid}.corridor-legend span{color:#4d6476;align-items:center;gap:6px;font-size:11px;font-weight:700;display:flex}.corridor-legend i{border:2px solid #fff;border-radius:50%;width:11px;height:11px;display:block;box-shadow:0 0 0 1px #1022362e}.map-summary{z-index:600;color:#51687a;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffffe6;border-radius:12px;align-items:center;gap:8px;padding:8px 12px;font-size:11px;display:flex;position:absolute;bottom:17px;left:18px;box-shadow:0 7px 20px #0c2b3b1f}.network-attribution{z-index:590;color:#64748b;text-align:right;text-shadow:0 1px #fff;justify-items:end;gap:2px;max-width:min(52vw,620px);font-size:9px;display:grid;position:absolute;bottom:12px;right:18px}.transit-map-unavailable{color:#284254;background:#edf2f2;place-items:center;width:100%;height:100%;padding:24px;display:grid}.transit-map-unavailable>div{background:#fff;border:1px solid #d4e1e2;border-radius:20px;width:min(480px,100%);padding:28px;box-shadow:0 18px 50px #0c2b3b1f}.transit-map-unavailable strong{color:#102f42;font-size:20px}.transit-map-unavailable p{color:#607686;font-size:13px;line-height:1.6}.transit-map-unavailable button{color:#fff;background:#0f766e;border:0;border-radius:10px;padding:10px 14px;font-weight:750}.map-summary span+span:before{content:"·";color:#a3b1bb;margin-right:8px}.map-summary b{color:#163449}.map-summary .stream-warning{color:#b45309}.detail-modal{z-index:900;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#071a2b5c;place-items:center;padding:24px;animation:.18s ease-out modal-fade-in;display:grid;position:absolute;inset:0}.detail-sheet{background:#fffffffa;border:1px solid #fffc;border-radius:20px;outline:none;width:min(430px,100%);max-height:calc(100% - 24px);padding:24px;animation:.25s ease-out slide-up;position:relative;overflow-y:auto;box-shadow:0 24px 70px #0823325c}.detail-sheet__close{color:#617687;background:#eef3f5;border:0;border-radius:10px;place-items:center;width:32px;height:32px;font-size:22px;display:grid;position:absolute;top:13px;right:13px}.detail-sheet__eyebrow{color:#597082;letter-spacing:.08em;text-transform:uppercase;align-items:center;gap:7px;margin-bottom:9px;font-size:11px;font-weight:800;display:flex}.detail-sheet h2{color:#0d263a;letter-spacing:-.02em;max-width:calc(100% - 36px);margin:0;font-size:22px}.detail-sheet__lead{color:#597082;margin:8px 0 19px;font-size:13px;line-height:1.5}.detail-grid{grid-template-columns:1fr 1fr;gap:9px;display:grid}.detail-grid>div,.detail-list{background:#f1f6f7;border-radius:12px;padding:11px 12px}.detail-grid small,.detail-grid strong,.detail-list small,.detail-list strong{display:block}.detail-grid small,.detail-list small{color:#758896;margin-bottom:4px;font-size:10px}.detail-grid strong,.detail-list strong{color:#1b3a4f;font-size:12px;line-height:1.4}.detail-list+.detail-list,.detail-list+.detail-grid{margin-top:9px}.detail-sheet__timestamp,.detail-sheet__muted{color:#647a89;margin:13px 1px 0;font-size:11px}.detail-sheet__timestamp--warning{color:#9a5c08}.departure-board{gap:10px;margin-top:13px;display:grid}.schedule-notice{color:#854d0e;background:#fffbeb;border:1px solid #fde68a;border-radius:12px;gap:3px;padding:10px 12px;font-size:11px;display:grid}.schedule-notice span{line-height:1.4}.departure-group{background:#f1f6f7;border-radius:12px;padding:10px 12px}.departure-group>div{color:#1b3a4f;justify-content:space-between;gap:12px;font-size:11px;display:flex}.departure-group ul{border-top:1px solid #dce7e9;gap:6px;margin:8px 0 0;padding:8px 0 0;list-style:none;display:grid}.departure-group li{color:#526b7a;grid-template-columns:44px 1fr;gap:8px;font-size:11px;display:grid}.departure-group time{color:#0f766e;font-weight:850}.service-chips{flex-wrap:wrap;gap:6px;margin-top:7px;display:flex}.service-chips span{border:2px solid #fff;border-radius:999px;justify-content:center;align-items:center;min-width:34px;height:25px;padding:0 9px;font-size:11px;font-weight:850;display:inline-flex;box-shadow:0 0 0 1px #1022361a}.service-hours{gap:7px;margin-top:7px;display:grid}.service-hours>div{grid-template-columns:auto 1fr;align-items:center;gap:9px;display:grid}.service-hours span{border:2px solid #fff;border-radius:999px;justify-content:center;align-items:center;min-width:40px;height:24px;padding:0 8px;font-size:10px;font-weight:850;display:inline-flex;box-shadow:0 0 0 1px #1022361a}.service-hours strong{font-size:11px}.poi-context{color:#647a89;margin:2px 0 8px;font-size:10px;display:block}.poi-list{gap:7px;display:grid}.poi-list>div{border-top:1px solid #dfe9eb;justify-content:space-between;align-items:baseline;gap:12px;padding-top:7px;display:flex}.poi-list span{color:#647a89;white-space:nowrap;font-size:10px}.freshness-dot{background:#22c55e;border-radius:50%;width:8px;height:8px}.freshness-dot--delayed{background:#f59e0b}.freshness-dot--stale{background:#ef4444}.route-swatch{border-radius:3px;width:10px;height:10px}.bus-marker,.train-marker{place-items:center;display:grid}.train-arrow{transform-origin:50%;background:#3156a3;border:3px solid #fff;border-radius:7px 9px 9px 7px;width:28px;height:17px;display:block;position:relative;box-shadow:0 3px 10px #0a254a59}.train-arrow:before{content:"";border-top:4px solid #0000;border-bottom:4px solid #0000;border-left:6px solid #3156a3;width:0;height:0;position:absolute;top:3px;right:-7px}.train-arrow:after{content:"";background:#fff;border-radius:50%;width:4px;height:4px;position:absolute;bottom:-5px;right:4px;box-shadow:-12px 0 #fff}.rail-station-tooltip{color:#294457!important;background:#ffffffe0!important;border:1px solid #d7e0e4!important;padding:2px 5px!important;font-size:9px!important;font-weight:750!important;box-shadow:0 2px 6px #0c2b3b1f!important}.bus-dot{background:#0f766e;border:3px solid #fff;border-radius:50%;width:17px;height:17px;display:block;box-shadow:0 3px 10px #00000040}.bus-dot--delayed{background:#d97706}.bus-dot--stale{opacity:.68;filter:grayscale(.55);background:#64748b}.toast{z-index:750;color:#28544f;background:#f0fdfa;border:1px solid #cfe5e2;border-radius:12px;align-items:center;gap:14px;padding:11px 14px;font-size:12px;display:flex;position:absolute;top:130px;left:50%;transform:translate(-50%);box-shadow:0 10px 25px #0c2b3b29}.toast--warning{color:#854d0e;background:#fffbeb;border-color:#fde68a}.toast button{color:inherit;background:0 0;border:0;font-weight:800}.loading-screen,.error-screen{color:#dfeaf0;background:#071a2b;place-content:center;justify-items:center;height:100%;display:grid}.loading-screen p,.error-screen p{color:#91a6b5}.loading-line{background:#1a3447;border-radius:9px;width:180px;height:4px;margin-top:28px;overflow:hidden}.loading-line:after{content:"";border-radius:inherit;background:#2cc5b6;width:45%;height:100%;animation:1.2s ease-in-out infinite loading;display:block}.error-screen h1{margin:24px 0 0}.error-screen button{color:#fff;background:#0f766e;border:0;border-radius:10px;padding:10px 16px;font-weight:700}@keyframes spin{to{transform:rotate(360deg)}}@keyframes loading{0%{transform:translate(-110%)}to{transform:translate(330%)}}@keyframes slide-up{0%{opacity:0;transform:translateY(16px)}}@keyframes modal-fade-in{0%{opacity:0}}@keyframes transit-pulse{0%{opacity:.85;transform:scale(.7)}to{opacity:0;transform:scale(1.35)}}@media (width<=1180px) and (width>=901px){.topbar{grid-template-columns:150px 170px minmax(220px,1fr) 120px;gap:10px;padding:0 14px}.map-mode-switch button{justify-content:center;width:40px;min-width:40px;padding:0;font-size:0}.map-mode-switch button span{font-size:17px}.network-mode-panel,.network-line-panel{max-width:calc(100% - 360px)}}@media (width<=900px){.app-shell{grid-template-rows:64px 1fr}.topbar{grid-template-columns:42px minmax(90px,130px) 1fr 36px;gap:7px;padding:0 9px}.brand>span:last-child{display:none}.brand-mark{width:38px;height:38px}.connection-status{justify-content:center}.connection-status>div{display:none}.search-box input{border-radius:12px;height:40px}.area-picker select{height:38px;padding-left:8px;font-size:11px}.map-mode-switch{justify-content:center;top:10px;left:10px;right:10px}.map-mode-switch button{flex:1;justify-content:center}.network-filter-stack{z-index:700;right:10px;bottom:calc(10px + env(safe-area-inset-bottom,0px));pointer-events:none;flex-direction:column;gap:4px;min-width:0;display:flex;position:absolute;left:10px}.network-filter-stack .network-mode-panel,.network-filter-stack .network-line-panel{pointer-events:auto;width:100%;max-width:none;padding:7px 8px;position:static;transform:none}.corridor-panel__label{flex:none;padding-right:0;font-size:9px}.corridor-scroll{width:100%}.map-actions{top:70px;bottom:auto;right:10px}.map-actions button{width:44px;height:44px}.layer-menu{top:70px;bottom:auto;right:62px}.map-summary{bottom:calc(116px + env(safe-area-inset-bottom,0px));max-width:calc(100% - 20px);left:10px}.map-summary .stream-warning{display:none}.network-attribution{right:10px;bottom:calc(154px + env(safe-area-inset-bottom,0px));max-width:calc(100% - 20px)}.detail-modal{place-items:end center;padding:0}.detail-sheet{width:100%;max-height:min(72vh,620px);padding-bottom:max(24px, env(safe-area-inset-bottom));border-bottom:0;border-left:0;border-right:0;border-radius:22px 22px 0 0}.leaflet-control-zoom{display:none}.toast{justify-content:space-between;width:calc(100% - 74px);top:70px;left:10px;transform:none}.transit-map__rail-status{right:10px;bottom:calc(154px + env(safe-area-inset-bottom,0px));max-width:58%}.transit-map__zoom{top:70px;bottom:auto;right:64px}}@media (width<=900px) and (height<=560px){.map-actions{display:flex;top:66px}.layer-menu{top:116px}.map-summary,.network-attribution,.transit-map__rail-status{display:none}.transit-map__zoom{top:116px;right:10px}.toast{width:calc(100% - 64px);top:116px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
