html,body{margin:0;width:100%;height:100%;overflow:hidden}#map{position:absolute;inset:0}.maplibregl-ctrl-bottom-right,.maplibregl-ctrl-bottom-left{display:none}.loading{position:fixed;inset:0;z-index:60;display:grid;place-items:center;background:var(--ground);color:var(--ink);transition:opacity .6s var(--ease),visibility 0s linear .6s}.loading.done{opacity:0;visibility:hidden;pointer-events:none}.loading-inner{display:grid;gap:18px;justify-items:start;padding:0 var(--edge);width:min(100%,520px)}.loading-wordmark{font-size:var(--kicker-size);font-weight:700;letter-spacing:var(--kicker-track);text-transform:uppercase}.loading-wordmark span{color:var(--ink-soft);font-weight:600}.loading-line{font-family:var(--font-display);font-size:clamp(32px,6vw,52px);line-height:1.05;letter-spacing:-.02em;font-weight:500}.loading-line em{color:var(--accent);font-weight:500}.loading-bar{position:relative;width:100%;height:1px;background:var(--hairline);overflow:hidden}.loading-bar:after{content:"";position:absolute;inset:0 auto 0 0;width:28%;background:var(--accent);animation:loading-run 1.6s var(--ease) infinite}@keyframes loading-run{0%{transform:translate(-100%)}to{transform:translate(360%)}}.error-message{display:grid;gap:12px;justify-items:start;width:min(100% - 48px,460px)}.error-message h2{font-family:var(--font-display);font-size:36px;font-weight:500;line-height:1.05;letter-spacing:-.02em}.error-message p{color:var(--ink-soft);font-size:14px}.error-message a{min-height:var(--hit);display:inline-flex;align-items:center;padding:0 18px;border-radius:999px;background:var(--accent);color:var(--accent-ink);font-weight:600}.maplibregl-canvas:focus-visible{outline-offset:-3px;outline-color:var(--ink-faint)}.status-chip,.map-tools,.attribution,.toast{background:var(--surface);border:1px solid var(--hairline);box-shadow:var(--shadow)}.brand{position:fixed;z-index:10;left:var(--edge);top:22px;width:max-content;max-width:min(520px,calc(100vw - 2 * var(--edge)));pointer-events:none;isolation:isolate}.brand:before{content:"";position:absolute;inset:-48px -200px -70px -48px;z-index:-1;background:radial-gradient(ellipse 100% 100% at 22% 26%,#ecebe6f0,#ecebe6cc 42%,#ecebe600);pointer-events:none}.wordmark{display:flex;align-items:center;height:44px;font-size:var(--kicker-size);font-weight:700;letter-spacing:var(--kicker-track);text-transform:uppercase;line-height:1}.wordmark a{position:relative;pointer-events:auto;display:inline-flex;gap:.5em;align-items:baseline;border-radius:4px}.wordmark a:after{content:"";position:absolute;inset:-17px -6px}.wordmark span{color:var(--ink-soft);font-weight:600}.brand-intro,.brand-context{display:grid;grid-template-rows:1fr;transition:grid-template-rows var(--t-slow) var(--ease),opacity var(--t-base) var(--ease),visibility 0s}.brand-intro-inner,.brand-context-inner{min-height:0;overflow:hidden;padding:0 4px 6px 0;margin:0 -4px -6px 0}.brand[data-compact=false] .brand-context,.brand[data-compact=true] .brand-intro{grid-template-rows:0fr;opacity:0;visibility:hidden;transition:grid-template-rows var(--t-slow) var(--ease),opacity var(--t-fast) var(--ease),visibility 0s linear var(--t-slow)}.headline{font-family:var(--font-display);font-weight:500;font-size:clamp(44px,4.6vw,68px);line-height:1.02;letter-spacing:-.028em;color:var(--ink);font-optical-sizing:auto;margin-top:2px}.headline em{font-style:italic;color:var(--accent);font-weight:500;letter-spacing:-.02em}.live{display:flex;flex-wrap:wrap;align-items:baseline;margin-top:12px;font-size:13px;font-weight:500;color:var(--ink-soft);font-variant-numeric:tabular-nums;letter-spacing:.005em}.live-status{display:none}.live>span:first-child{color:var(--ink);font-weight:700}.live-sep{margin:0 .6em;color:var(--ink-faint)}.context-title{font-family:var(--font-display);font-weight:500;font-size:30px;line-height:1.08;letter-spacing:-.02em;color:var(--ink);margin-top:2px;overflow-wrap:anywhere}.context-title.swap{animation:context-swap var(--t-base) var(--ease)}@keyframes context-swap{0%{opacity:0;transform:translateY(4px)}}.context-title .route-badge{min-width:36px;height:28px;margin:0 .12em;font-size:16px;vertical-align:.14em;letter-spacing:0}.context-sub{margin-top:6px;font-size:13px;font-weight:500;color:var(--ink-soft)}.status-chip{position:fixed;z-index:10;top:22px;right:var(--edge);height:44px;display:flex;align-items:center;gap:2px;padding:0 4px 0 16px;border-radius:var(--radius);white-space:nowrap}.status{display:inline-flex;align-items:center;gap:8px;margin-right:10px;padding-right:12px;border-right:1px solid var(--hairline);height:20px;font-size:12px;font-weight:600;color:var(--ink-soft);cursor:help}.status-main{color:var(--ink)}.toplink{display:inline-flex;align-items:center;gap:6px;height:36px;padding:0 14px;border-radius:var(--radius-sm);font-size:13px;font-weight:600;color:var(--ink);transition:background var(--t-fast) var(--ease)}.toplink .ic{width:16px;height:16px}.toplink:hover{background:var(--wash)}.toplink[aria-pressed=true]{background:var(--ink);color:var(--paper)}.map-tools{position:fixed;z-index:10;right:var(--edge);top:50%;transform:translateY(-50%);padding:4px;border-radius:var(--radius)}.tools-body{display:flex;flex-direction:column;align-items:center}.tool{position:relative;display:grid;place-items:center;width:44px;height:44px;border-radius:var(--radius-sm);color:var(--ink);transition:background var(--t-fast) var(--ease),color var(--t-fast) var(--ease)}.tool .ic{width:20px;height:20px}.tool:hover{background:var(--wash)}.tool[aria-pressed=true]{background:var(--ink);color:var(--paper)}#perspective[aria-pressed=true]{background:var(--wash-strong);color:var(--ink)}.tool-rule{width:22px;height:1px;margin:3px 0;background:var(--hairline)}.tools-toggle,.tool-compact,.tool-rule-compact{display:none}.tool[data-tip]:after{content:attr(data-tip);position:absolute;right:calc(100% + 14px);top:50%;transform:translate(4px,-50%);padding:6px 10px;border-radius:8px;background:var(--ink);color:var(--paper);font-size:12px;font-weight:600;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity var(--t-fast) var(--ease),transform var(--t-fast) var(--ease)}@media(hover:hover){.tool[data-tip]:hover:after,.tool[data-tip]:focus-visible:after{opacity:1;transform:translateY(-50%)}}.attribution{position:fixed;z-index:9;right:var(--edge);bottom:20px;display:flex;align-items:center;gap:12px;height:28px;padding:0 12px;border-radius:var(--radius-sm);font-size:11px;font-weight:500;color:var(--ink-soft);background:#faf9f6d1;box-shadow:none;white-space:nowrap}.attribution a,.attribution-link{font-size:11px;font-weight:500;color:var(--ink-soft);border-radius:4px;transition:color var(--t-fast) var(--ease)}.attribution a:hover,.attribution-link:hover{color:var(--ink);text-decoration:underline;text-underline-offset:2px}.attribution-link{padding:0}.attribution a,.attribution-link{position:relative}.attribution a:after,.attribution-link:after{content:"";position:absolute;inset:-16px -8px -4px}.tiny-compass{display:inline-flex;align-items:center;gap:2px;font-weight:700;color:var(--ink)}.tiny-compass svg{width:11px;height:11px;transition:transform var(--t-fast) linear}.scale{display:inline-flex;align-items:center;gap:7px;font-variant-numeric:tabular-nums}.scale-line{display:block;height:5px;width:40px;border:1px solid var(--ink-soft);border-top:0}.toast{position:fixed;z-index:11;left:50%;top:80px;transform:translate(-50%);width:max-content;max-width:min(460px,calc(100vw - 2 * var(--edge)));padding:10px 16px;border-radius:var(--radius-sm);font-size:13px;font-weight:500;color:var(--ink);animation:toast-in var(--t-base) var(--ease)}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,-6px)}}.brand,.search,.map-tools,.bottom-center,.selection,.attribution,.status-chip>.status,.status-chip>a,.toast{transition:opacity var(--t-base) var(--ease),visibility 0s,transform var(--t-base) var(--ease)}.observing .brand,.observing .search,.observing .map-tools,.observing .bottom-center,.observing .selection,.observing .attribution,.observing .toast,.observing .status-chip>.status,.observing .status-chip>a{opacity:0;visibility:hidden;pointer-events:none;transition:opacity var(--t-base) var(--ease),visibility 0s linear var(--t-base)}.observing .status-chip{padding:0;background:transparent;border-color:transparent;box-shadow:none}.observing #observe{color:var(--ink);height:44px;padding:0 18px;background:var(--surface);border:1px solid var(--hairline);box-shadow:var(--shadow)}.observing #observe:hover{background:var(--paper)}.stop-label{padding:4px 8px;border-radius:6px;border:1px solid var(--hairline);background:var(--surface);color:var(--ink);font-size:11px;font-weight:600;white-space:nowrap;pointer-events:none}.search{--search-w: clamp(320px, 30vw, 440px);position:fixed;z-index:14;top:22px;left:calc(50% - var(--search-w) / 2);width:var(--search-w)}.search-field{position:relative;display:flex;align-items:center;gap:10px;height:44px;padding:0 8px 0 14px;margin:0;border-radius:12px;background:var(--surface);border:1px solid var(--hairline);box-shadow:var(--shadow);color:var(--ink-soft);transition:border-color var(--t-fast) var(--ease),box-shadow var(--t-fast) var(--ease)}.search-field:hover{border-color:#c4c0b6}.search-field:focus-within{border-color:var(--ink);background:var(--surface-solid);box-shadow:var(--shadow-sheet)}.search-field input{flex:1;min-width:0;height:100%;border:0;background:transparent;font:inherit;font-size:14px;font-weight:500;color:var(--ink);outline:none;text-overflow:ellipsis}.search-field input::placeholder{color:var(--ink-soft);opacity:1}.search-field input::-webkit-search-cancel-button,.search-field input::-webkit-search-decoration{-webkit-appearance:none;display:none}.search-field:focus-visible,.search-field input:focus-visible{outline:none}.search-kbd{display:grid;place-items:center;width:24px;height:24px;margin-right:4px;border:1px solid var(--hairline);border-bottom-width:2px;border-radius:6px;font-family:var(--font-ui);font-size:12px;font-weight:600;color:var(--ink-soft)}.search-field:focus-within .search-kbd,.search.has-query .search-kbd{display:none}.search-clear{display:grid;place-items:center;width:36px;height:36px;border-radius:8px;color:var(--ink-soft)}.search-clear:hover{background:var(--wash);color:var(--ink)}.search-sheet{display:flex;flex-direction:column;margin-top:8px;max-height:min(580px,calc(100dvh - 160px));border-radius:var(--radius);background:var(--surface-solid);border:1px solid var(--hairline);box-shadow:var(--shadow-sheet);overflow:hidden;animation:sheet-in var(--t-base) var(--ease)}@keyframes sheet-in{0%{opacity:0;transform:translateY(-6px)}}.mode-tabs{display:flex;gap:6px;padding:12px 14px 10px;border-bottom:1px solid var(--hairline)}.chip{height:32px;padding:0 14px;border-radius:999px;border:1px solid var(--hairline);font-size:12.5px;font-weight:600;color:var(--ink);transition:background var(--t-fast) var(--ease),color var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease)}.chip:hover{background:var(--wash)}.chip.active{background:var(--ink);border-color:var(--ink);color:var(--paper)}.sheet-scroll{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding-bottom:8px;scrollbar-width:thin;scrollbar-color:var(--hairline) transparent}.sheet-group>.kicker{padding:14px 18px 6px}.sheet-group[hidden]{display:none}.line-item,.place-item{display:flex;align-items:center;gap:12px;width:calc(100% - 12px);min-height:52px;margin:0 6px;padding:8px 12px;border-radius:10px;text-align:left;transition:background var(--t-fast) var(--ease)}.line-item:hover,.place-item:hover,.line-item:focus-visible,.place-item:focus-visible{background:var(--wash)}.line-item:focus-visible,.place-item:focus-visible{outline-offset:-2px}.line-item.selected{background:var(--wash-strong)}.line-item .route-badge{width:48px;min-width:48px;padding:0}.line-description{display:grid;gap:2px;min-width:0;flex:1}.line-description strong{font-size:14px;font-weight:600;line-height:1.25;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.line-description small{font-size:12px;font-weight:500;color:var(--ink-soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.line-item .selected-mark{width:8px;height:8px;border-radius:50%;background:var(--accent);flex:none}.place-pin{display:grid;place-items:center;width:40px;height:26px;color:var(--ink)}.place-pin .ic{width:18px;height:18px}.empty-lines{display:grid;gap:6px;justify-items:start;padding:22px 18px 16px}.empty-lines strong{font-size:15px;font-weight:700}.empty-lines span{color:var(--ink-soft);font-size:13px}.empty-lines button{margin-top:8px;min-height:40px;padding:0 16px;border-radius:10px;border:1px solid var(--hairline);font-weight:600}.empty-lines button:hover{background:var(--wash)}.bottom-center{--bar-w: min(720px, calc(100vw - 2 * (340px + var(--edge) + 16px)));position:fixed;z-index:10;left:50%;bottom:calc(20px + var(--safe-bottom));width:max(var(--bar-w),480px);transform:translate(-50%)}.time-dock{position:relative}.time-bar{display:flex;align-items:center;gap:4px;height:52px;padding:4px 6px 4px 4px;border-radius:var(--radius);background:var(--surface);border:1px solid var(--hairline);box-shadow:var(--shadow)}.time-play{display:grid;place-items:center;flex:none;width:40px;height:40px;border-radius:50%;background:var(--ink);color:var(--paper);transition:background var(--t-fast) var(--ease),transform var(--t-fast) var(--ease)}.time-play:hover:not(:disabled){background:#2c2b29}.time-play:active:not(:disabled){transform:scale(.95)}.time-play:disabled{opacity:.4}.time-play .ic{width:18px;height:18px;stroke-width:2}.time-play .play-triangle{fill:currentColor;stroke-width:1.5}.time-reading{display:grid;gap:1px;align-content:center;flex:none;min-width:78px;height:44px;padding:0 8px;border-radius:var(--radius-sm);text-align:left;transition:background var(--t-fast) var(--ease)}.time-reading:hover{background:var(--wash)}.time-reading[aria-expanded=true]{background:var(--wash-strong)}#sim-time{font-size:20px;font-weight:700;line-height:1.05;letter-spacing:-.01em;font-variant-numeric:tabular-nums}#playback-label{font-size:11px;font-weight:600;color:var(--ink-soft);line-height:1.1;white-space:nowrap}.day-track{position:relative;flex:1;min-width:0;height:44px;display:flex;align-items:center;padding:0 4px}.day-track:before{content:"";position:absolute;left:12px;right:12px;top:50%;height:12px;margin-top:-6px;pointer-events:none;background:linear-gradient(var(--ink-faint),var(--ink-faint)) 25% 50% / 1px 12px no-repeat,linear-gradient(var(--ink-faint),var(--ink-faint)) 50% 50% / 1px 12px no-repeat,linear-gradient(var(--ink-faint),var(--ink-faint)) 75% 50% / 1px 12px no-repeat;opacity:.55}#day-slider{position:relative;appearance:none;-webkit-appearance:none;width:100%;height:44px;margin:0;background:transparent;cursor:pointer;--p: var(--day-progress, 40%)}#day-slider:disabled{cursor:default;opacity:.5}#day-slider::-webkit-slider-runnable-track{height:4px;border-radius:2px;background:linear-gradient(to right,var(--ink) 0 var(--p),var(--hairline) var(--p) 100%)}#day-slider::-moz-range-track{height:4px;border-radius:2px;background:linear-gradient(to right,var(--ink) 0 var(--p),var(--hairline) var(--p) 100%)}#day-slider::-webkit-slider-thumb{appearance:none;-webkit-appearance:none;width:18px;height:18px;margin-top:-7px;border-radius:50%;border:3px solid var(--paper);background:var(--accent);box-shadow:0 0 0 1px var(--accent),0 2px 6px #16161647;transition:transform var(--t-fast) var(--ease)}#day-slider::-moz-range-thumb{width:12px;height:12px;border-radius:50%;border:3px solid var(--paper);background:var(--accent);box-shadow:0 0 0 1px var(--accent),0 2px 6px #16161647}#day-slider:hover::-webkit-slider-thumb,.time-dock[data-scrubbing=true] #day-slider::-webkit-slider-thumb{transform:scale(1.12)}#day-slider:focus-visible{outline:none}#day-slider:focus-visible::-webkit-slider-thumb{box-shadow:0 0 0 1px var(--accent),0 0 0 5px #c8412c47}.time-sync{display:inline-flex;align-items:center;gap:7px;flex:none;height:36px;padding:0 12px;border-radius:var(--radius-sm);border:1px solid var(--hairline);font-size:12.5px;font-weight:600;white-space:nowrap;transition:background var(--t-fast) var(--ease),color var(--t-fast) var(--ease)}.time-sync .ic{width:16px;height:16px}.time-sync:hover:not(:disabled){background:var(--wash)}.time-sync[aria-pressed=true]{background:var(--ink);border-color:var(--ink);color:var(--paper)}.time-speed{flex:none;min-width:44px;height:36px;padding:0 8px;border-radius:var(--radius-sm);font-size:14px;font-weight:700;font-variant-numeric:tabular-nums;transition:background var(--t-fast) var(--ease)}.time-speed:hover:not(:disabled){background:var(--wash)}.time-dock:not([data-ready=true]) .time-bar{opacity:.6}.time-details{position:absolute;left:0;right:0;bottom:calc(100% + 8px);display:grid;gap:6px;padding:14px 16px 16px;border-radius:var(--radius);background:var(--surface-solid);border:1px solid var(--hairline);box-shadow:var(--shadow-sheet);animation:sheet-in var(--t-base) var(--ease)}.time-reference{font-family:var(--font-display);font-size:22px;font-weight:500;line-height:1.15;letter-spacing:-.01em}.time-note{font-size:12.5px;line-height:1.5;color:var(--ink-soft);max-width:62ch}.selection{position:fixed;z-index:12;left:var(--edge);bottom:calc(20px + var(--safe-bottom));width:340px;max-height:calc(100dvh - 190px);display:flex;flex-direction:column;padding:16px 16px 14px;border-radius:var(--radius);background:var(--surface-solid);border:1px solid var(--hairline);box-shadow:var(--shadow-sheet);overflow:hidden;transition:opacity var(--t-base) var(--ease),transform var(--t-base) var(--ease),visibility 0s}.selection.hidden{display:flex!important;opacity:0;visibility:hidden;transform:translateY(12px);pointer-events:none;transition:opacity var(--t-fast) var(--ease),transform var(--t-fast) var(--ease),visibility 0s linear var(--t-fast)}.selection-close{position:absolute;top:8px;right:8px;display:grid;place-items:center;width:36px;height:36px;border-radius:10px;color:var(--ink-soft)}.selection-close:hover{background:var(--wash);color:var(--ink)}.sel-head{display:flex;align-items:center;gap:12px;padding-right:36px}.sel-title{display:grid;gap:4px;min-width:0}.sel-title h2{font-size:17px;font-weight:700;line-height:1.2;letter-spacing:-.01em;overflow-wrap:anywhere}.sel-title .toward{font-weight:500;color:var(--ink-soft)}.sel-trip{display:flex;align-items:center;gap:10px;margin-top:14px;font-size:12px;font-weight:600;color:var(--ink-soft);font-variant-numeric:tabular-nums}.trip-bar{position:relative;flex:1;height:3px;border-radius:2px;background:var(--hairline)}.trip-bar i{position:absolute;inset:0 auto 0 0;width:0;border-radius:2px;background:var(--route-color, var(--ink));transition:width var(--t-slow) var(--ease)}.timeline-label{margin:16px 0 6px}.timeline{position:relative;overflow-y:auto;min-height:0;scrollbar-width:thin}.stop-row{position:relative;display:grid;grid-template-columns:18px minmax(0,1fr) auto;column-gap:10px;align-items:start;min-height:38px;padding:8px 0 6px}.stop-row:before{content:"";position:absolute;left:8px;top:0;bottom:0;width:2px;background:var(--route-color, var(--ink));opacity:.35}.stop-row:first-child:before{top:16px}.stop-row:last-child:before{bottom:auto;height:16px}.stop-row:only-child:before{display:none}.stop-dot{position:relative;z-index:1;width:10px;height:10px;margin:4px 0 0 4px;border-radius:50%;background:var(--surface-solid);border:2px solid var(--route-color, var(--ink))}.stop-row.is-next .stop-dot{width:14px;height:14px;margin:2px 0 0 2px;background:var(--route-color, var(--ink));box-shadow:0 0 0 3px var(--surface-solid)}.stop-row.is-last .stop-dot{border-radius:3px}.stop-name{display:grid;gap:2px;min-width:0;font-size:13.5px;font-weight:500;line-height:1.3;color:var(--ink)}.stop-name b{font-weight:inherit;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.stop-row.is-next .stop-name b{font-weight:700}.stop-name small{font-size:12px;font-weight:500;color:var(--ink-soft)}.stop-time{font-size:13.5px;font-weight:600;line-height:1.3;font-variant-numeric:tabular-nums;color:var(--ink)}.stop-row.is-gap{min-height:30px;padding:4px 0}.stop-row.is-gap:before{opacity:.35;background:repeating-linear-gradient(to bottom,var(--route-color, var(--ink)) 0 3px,transparent 3px 7px);top:0;bottom:0}.stop-row.is-gap .stop-dot{display:none}.stop-row.is-gap .stop-name{grid-column:2 / 4;font-size:12px;color:var(--ink-soft)}.sel-actions{display:grid;grid-template-columns:auto 1fr;gap:8px;margin-top:14px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 18px;border-radius:var(--radius-sm);font-size:13.5px;font-weight:700;white-space:nowrap;transition:background var(--t-fast) var(--ease),color var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease)}.btn-primary{background:var(--accent);color:var(--accent-ink)}.btn-primary:hover{background:var(--accent-deep)}.btn-primary.is-following{background:var(--ink)}.btn-primary:focus-visible{outline-color:var(--ink)}.btn-secondary{border:1px solid var(--hairline);color:var(--ink)}.btn-secondary:hover{background:var(--wash);border-color:#c4c0b6}.sheet-handle{display:none;place-items:center;width:calc(100% + 32px);height:36px;margin:0 -16px 2px;color:var(--ink-faint)}.sheet-handle span{width:36px;height:4px;border-radius:2px;background:var(--hairline);transition:background var(--t-fast) var(--ease)}.sheet-handle:hover span{background:var(--ink-faint)}dialog{width:min(560px,calc(100vw - 32px));max-height:min(740px,calc(100dvh - 32px));padding:0;margin:auto;border:1px solid var(--hairline);border-radius:var(--radius);background:var(--surface-solid);color:var(--ink);box-shadow:var(--shadow-sheet);overflow:hidden}dialog[open]{display:flex;flex-direction:column;animation:dialog-in var(--t-base) var(--ease)}dialog::backdrop{background:#16161657;animation:fade-in var(--t-base) var(--ease)}@keyframes dialog-in{0%{opacity:0;transform:translateY(10px) scale(.985)}}@keyframes fade-in{0%{opacity:0}}.dialog-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:24px 20px 16px 28px;border-bottom:1px solid var(--hairline)}.dialog-head h2{margin-top:10px;font-family:var(--font-display);font-weight:500;font-size:32px;line-height:1.08;letter-spacing:-.02em}.dialog-close{display:grid;place-items:center;flex:none;width:var(--hit);height:var(--hit);border-radius:var(--radius-sm);color:var(--ink);transition:background var(--t-fast) var(--ease)}.dialog-close:hover{background:var(--wash)}.dialog-body{display:grid;gap:14px;padding:18px 28px 26px;overflow-y:auto;overscroll-behavior:contain;font-size:14px;line-height:1.6;color:var(--ink-soft)}.dialog-body>p:first-child{color:var(--ink)}.dialog-data{font-size:12.5px;line-height:1.6;padding:12px 14px;border-radius:var(--radius-sm);background:var(--wash)}.data-links{border-top:1px solid var(--hairline)}.data-link{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:48px;border-bottom:1px solid var(--hairline);font-size:14px;font-weight:600;color:var(--ink);transition:color var(--t-fast) var(--ease)}.data-link:hover{color:var(--accent)}.fine-print{font-size:12px;line-height:1.6;color:var(--ink-soft)}.fine-print a{text-decoration:underline;text-underline-offset:2px}@media(max-width:1239px){.selection{bottom:calc(20px + 52px + 12px + var(--safe-bottom));max-height:calc(100dvh - 250px)}}@media(max-width:1339px){.tiny-compass{display:none}}@media(max-width:1239px)and (min-width:1100px){.bottom-center{--bar-w: min(720px, calc(100vw - 2 * (230px + var(--edge) + 16px)))}.scale{display:none}}@media(max-width:1179px){.status-detail{display:none}}@media(max-width:1099px){.bottom-center{--bar-w: min(720px, calc(100vw - 2 * var(--edge)))}.attribution{bottom:calc(20px + 52px + 10px + var(--safe-bottom))}.status-chip>.status{display:none}.status-chip{padding-left:4px}}@media(max-width:580px),(max-width:950px)and (max-height:550px){:root{--edge: 12px}.kicker{font-size:11px}.tools-toggle,.tool-compact,.tool-rule-compact{display:grid}.tool-rule-compact{display:block}.map-tools{top:calc(12px + var(--safe-top));transform:none;padding:4px}.tools-body{display:none}body.tools-open .tools-body{display:flex;margin-top:2px;padding-top:4px;border-top:1px solid var(--hairline);animation:sheet-in var(--t-fast) var(--ease)}.tool[data-tip]:after{display:none}.toplink#observe,.status-chip>a{display:none}.observing .map-tools{display:none}.observing #observe{display:inline-flex;position:fixed;top:calc(12px + var(--safe-top));right:var(--edge)}.kbd-hint,.search-kbd{display:none}.search{top:calc(12px + var(--safe-top))}.status-chip{display:none}.live-status{display:inline-flex;align-items:center;flex-basis:100%;gap:7px;margin-top:7px;font-size:11px;font-weight:600;color:var(--ink-soft)}.brand{top:calc(80px + var(--safe-top));max-width:calc(100vw - 2 * var(--edge))}.wordmark{height:28px}.brand-intro,.brand-context,.brand[data-compact=false] .brand-context,.brand[data-compact=true] .brand-intro{transition:opacity var(--t-base) var(--ease),visibility 0s linear var(--t-base)}.brand:before{inset:-80px -120px -60px -40px}.headline{font-size:clamp(30px,9.2vw,40px)}.live{margin-top:10px;font-size:12.5px}.context-title{font-size:28px}.toast{top:auto;bottom:calc(8px + 52px + 12px + var(--safe-bottom));max-width:calc(100vw - 2 * var(--edge))}.attribution{bottom:calc(8px + 52px + 8px + var(--safe-bottom));right:8px;height:24px;gap:10px}body:has(#selection:not(.hidden)) .attribution{display:none}.time-sync,.time-speed,.selection-close{height:44px}.selection-close{width:44px;top:4px;right:4px}.time-speed{min-width:44px}.tiny-compass{display:none}.bottom-center{left:8px;right:8px;bottom:calc(8px + var(--safe-bottom));width:auto;transform:none}.time-sync span{display:none}.time-sync{width:40px;padding:0;justify-content:center}.time-reading{min-width:64px}.btn{padding:0 14px;gap:6px;font-size:13px}.chip{height:36px}.search-sheet{width:calc(100vw - 2 * var(--edge));max-height:min(560px,62dvh)}.line-item,.place-item{min-height:56px}}@media(max-width:580px)and (min-height:551px){.search{left:var(--edge);right:calc(var(--edge) + 52px + 8px);width:auto}.selection{left:8px;right:8px;width:auto;bottom:calc(8px + 52px + 8px + var(--safe-bottom));max-height:min(50dvh,420px);padding:0 16px 14px}.sheet-handle{display:grid}.selection-close{top:22px;right:6px;width:var(--hit);height:var(--hit)}.sel-head{padding-right:44px}.selection[data-collapsed=true] .sel-trip,.selection[data-collapsed=true] .timeline-label,.selection[data-collapsed=true] .timeline{display:none}.btn{min-height:var(--hit)}}@media(max-width:580px)and (min-height:551px)and (max-height:700px){.context-sub,.sel-trip{display:none}.selection{max-height:min(46dvh,300px);padding-bottom:12px}.timeline-label{margin-top:12px}.stop-row:nth-child(n+3){display:none}}@media(max-width:359px)and (min-height:551px){.status-chip,.attribution .scale{display:none}.live{font-size:12px}.live-sep{margin:0 .4em}.btn-secondary .ic{display:none}}@media(max-width:950px)and (max-height:550px){.search{--search-w: min(300px, 38vw);top:calc(10px + var(--safe-top))}.brand{top:calc(10px + var(--safe-top));max-width:calc(50vw - var(--search-w) / 2 - 2 * var(--edge))}.map-tools{top:calc(10px + var(--safe-top))}.headline{font-size:28px}.live-sep-lines,#live-lines,.context-sub{display:none}.selection{left:8px;width:296px;bottom:8px;max-height:calc(100dvh - 92px);padding:12px 14px}.sel-trip{display:none}.timeline-label{margin-top:10px}.stop-row{min-height:34px;padding:6px 0 4px}.stop-row:nth-child(n+3){display:none}.bottom-center{left:50%;right:auto;width:min(440px,100vw - 2 * 232px);min-width:400px;transform:translate(-50%);bottom:calc(8px + var(--safe-bottom))}body:has(#selection:not(.hidden)) .bottom-center{left:316px;right:8px;width:auto;min-width:0;transform:none}.attribution .tiny-compass,.attribution .scale{display:none}.attribution{bottom:calc(8px + var(--safe-bottom));right:8px}.toast{bottom:calc(8px + 52px + 8px + var(--safe-bottom))}}.vehicle-labels{--pin-accent: var(--accent, #c8412c);--pin-ink-dark: var(--ink, #161616);--pin-paper: var(--paper, #faf9f6);--pin-hairline: var(--hairline, #d8d5cd);position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:2}.vehicle-pin{--pin-color: #2f5f7a;--pin-ink: #fff;position:absolute;left:0;top:0;width:0;height:0;margin:0;padding:0;border:0;background:none;overflow:visible;pointer-events:none;cursor:pointer;will-change:transform;font:700 11px/1 Manrope,system-ui,sans-serif;font-variant-numeric:tabular-nums;letter-spacing:.01em;transition:opacity .24s ease-out}.pin-badge{position:absolute;left:0;bottom:5px;transform:translate(-50%);box-sizing:border-box;min-width:22px;height:20px;padding:0 6px;display:grid;place-items:center;border-radius:6px;background:var(--pin-color);color:var(--pin-ink);white-space:nowrap;pointer-events:auto;box-shadow:0 0 0 1.5px #fff,0 1px 4px #16161638;transition:min-width .2s ease-out,height .2s ease-out,box-shadow .2s ease-out}.pin-badge:after{content:"";position:absolute;left:50%;bottom:-3.5px;width:7px;height:7px;box-sizing:border-box;background:var(--pin-color);border-right:1.5px solid #fff;border-bottom:1.5px solid #fff;transform:translate(-50%) rotate(45deg);border-bottom-right-radius:1.5px;z-index:-1}.pin-num{position:relative;z-index:1}.vehicle-pin.is-metro .pin-badge{border-radius:11px;min-width:26px}.vehicle-pin:focus-visible{outline:none}.vehicle-pin:focus-visible .pin-badge{box-shadow:0 0 0 1.5px #fff,0 0 0 3.5px var(--pin-ink-dark)}.vehicle-pin.is-selected{z-index:3}.vehicle-pin.is-selected .pin-badge{min-width:26px;height:24px;font-size:12px;box-shadow:0 0 0 2px #fff,0 0 0 4px var(--pin-accent),0 3px 10px #16161642}.vehicle-pin.is-selected .pin-badge:after{border-right-color:#fff;border-bottom-color:#fff;bottom:-4px;width:8px;height:8px}.pin-next{position:absolute;left:calc(100% + 9px);bottom:0;display:flex;flex-direction:column;justify-content:center;gap:3px;min-height:24px;max-width:210px;padding:5px 10px 6px;box-sizing:border-box;border-radius:8px;background:var(--pin-paper);color:var(--pin-ink-dark);border:1px solid var(--pin-hairline);box-shadow:0 1px 6px #1616161f;text-align:left;pointer-events:none}.vehicle-pin.next-left .pin-next{left:auto;right:calc(100% + 9px)}.pin-next small{font:600 10.5px/1 Manrope,system-ui,sans-serif;letter-spacing:.14em;text-transform:uppercase;color:var(--pin-accent);white-space:nowrap}.pin-next strong{font:650 12.5px/1.15 Manrope,system-ui,sans-serif;letter-spacing:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media(prefers-reduced-motion:reduce){.vehicle-pin,.pin-badge{transition:none}}.maplibregl-map .map-district{font:600 11px/1 Manrope,system-ui,sans-serif;letter-spacing:.14em;text-transform:uppercase;white-space:nowrap;color:var(--map-ink-soft, #5e5b55);pointer-events:none;user-select:none;-webkit-text-stroke:3px var(--map-ground, #ecebe6);paint-order:stroke fill;text-shadow:0 0 4px var(--map-ground, #ecebe6),0 0 8px var(--map-ground, #ecebe6),0 0 12px var(--map-ground, #ecebe6);transition:opacity .25s ease-out;will-change:opacity}.maplibregl-map .map-station{font:600 11px/1 Manrope,system-ui,sans-serif;letter-spacing:.01em;white-space:nowrap;color:var(--map-ink, #161616);pointer-events:none;user-select:none;-webkit-text-stroke:3px var(--map-ground, #ecebe6);paint-order:stroke fill;text-shadow:0 0 4px var(--map-ground, #ecebe6),0 0 8px var(--map-ground, #ecebe6);opacity:var(--o, 0);transition:opacity .25s ease-out}.maplibregl-map .map-station[data-hidden="1"]{opacity:0}.maplibregl-map .map-station[data-hub="1"]{font-weight:700}.maplibregl-map .map-landmark{display:flex;flex-direction:column;align-items:center;padding:0;margin:0;border:0;background:none;box-shadow:none;cursor:pointer;font:600 12px/1.15 Manrope,system-ui,sans-serif;letter-spacing:.02em;color:var(--map-ink, #161616);-webkit-text-stroke:3px var(--map-paper, #faf9f6);paint-order:stroke fill;text-shadow:0 0 2px var(--map-paper, #faf9f6),0 0 4px var(--map-paper, #faf9f6),0 0 8px var(--map-paper, #faf9f6);transition:opacity .25s ease-out;-webkit-tap-highlight-color:transparent}.maplibregl-map .map-landmark__name{white-space:nowrap;padding:3px 2px}.maplibregl-map .map-landmark__leader{position:relative;display:block;width:1px;height:var(--lead, 20px);background:linear-gradient(transparent,var(--map-ink, #161616));transition:height .2s ease-out}.maplibregl-map .map-landmark__leader:after{content:"";position:absolute;left:-2.5px;bottom:-2.5px;width:6px;height:6px;box-sizing:border-box;border-radius:50%;background:var(--map-ink, #161616);border:1.5px solid var(--map-paper, #faf9f6)}.maplibregl-map .map-landmark:hover .map-landmark__name,.maplibregl-map .map-landmark:focus-visible .map-landmark__name{text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}.maplibregl-map .map-landmark:focus-visible{outline:2px solid var(--map-accent, #c8412c);outline-offset:2px;border-radius:4px}@media(prefers-reduced-motion:reduce){.maplibregl-map .map-district,.maplibregl-map .map-station,.maplibregl-map .map-landmark,.maplibregl-map .map-landmark__leader{transition:none}}
