*{box-sizing:border-box}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/inter-400.woff2) format("woff2")}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/inter-500.woff2) format("woff2")}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/inter-600.woff2) format("woff2")}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/inter-700.woff2) format("woff2")}@font-face{font-family:Hammersmith One;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/hammersmith-one-400.woff2) format("woff2")}:root{--font-ui: "Inter", system-ui, -apple-system, sans-serif;--font-display: "Hammersmith One", "Inter", system-ui, sans-serif;--sky: linear-gradient(to bottom, #0b1120 0%, #131f38 55%, #22324f 100%);--ink: #cfe0ff;--panel-bg: rgba(23, 34, 54, .9);--panel-bg-hover: rgba(38, 54, 84, .96);--panel-border: rgba(120, 150, 200, .32);--panel-border-hover: rgba(150, 180, 230, .55);--card-bg: rgba(20, 28, 46, .88);--card-bg-hover: rgba(28, 40, 64, .92);--card-border: rgba(120, 150, 200, .32);--card-divider: rgba(120, 150, 200, .22);--fab-bg: #1b2a44;--fab-border: #33507f}html,body{margin:0;height:100%;font-family:var(--font-ui);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}body{background:var(--sky)}#boot{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;color:var(--ink)}#boot:before{content:"";position:absolute;width:420px;height:420px;border-radius:50%;background:radial-gradient(circle,color-mix(in srgb,currentColor 9%,transparent) 0%,transparent 65%);animation:boot-breathe 3.4s ease-in-out infinite;pointer-events:none}#boot>*{animation:boot-in .55s ease both}#boot>:nth-child(2){animation-delay:.12s}#boot>:nth-child(3){animation-delay:.24s}.boot-word{margin:0;font-family:var(--font-display);font-size:27px;font-weight:400;letter-spacing:.15em;padding-left:.15em;background:linear-gradient(100deg,var(--ink) 42%,color-mix(in srgb,var(--ink) 30%,white) 50%,var(--ink) 58%) 100% 0 / 300% 100% text;-webkit-background-clip:text;color:transparent;animation:boot-in .55s ease both,boot-sheen 2.6s ease-in-out .8s infinite}.boot-rail{position:relative;width:150px;height:6px;overflow:hidden}.boot-rail:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(circle 2.5px at 3px 50%,color-mix(in srgb,currentColor 55%,transparent) 96%,transparent),radial-gradient(circle 2.5px at calc(100% - 3px) 50%,color-mix(in srgb,currentColor 55%,transparent) 96%,transparent),linear-gradient(color-mix(in srgb,currentColor 18%,transparent) 0,color-mix(in srgb,currentColor 18%,transparent) 0) 50% 50% / calc(100% - 6px) 2px no-repeat}.boot-rail span{position:absolute;inset:1px auto 1px 0;width:54px;border-radius:2px;background:linear-gradient(90deg,color-mix(in srgb,currentColor 80%,transparent) 0 12px,transparent 12px 14px,color-mix(in srgb,currentColor 80%,transparent) 14px 26px,transparent 26px 28px,color-mix(in srgb,currentColor 80%,transparent) 28px 40px,transparent 40px 42px,#e0331e 42px 54px);animation:boot-run 1.6s cubic-bezier(.45,.05,.55,.95) infinite}.boot-sub{font-size:12px;letter-spacing:.04em;opacity:.5}.boot-sub .d{animation:boot-dot 1.4s infinite}.boot-sub .d:nth-child(2){animation-delay:.2s}.boot-sub .d:nth-child(3){animation-delay:.4s}@keyframes boot-run{0%{transform:translate(-56px)}to{transform:translate(152px)}}@keyframes boot-in{0%{opacity:0;transform:translateY(7px)}to{opacity:1;transform:translateY(0)}}@keyframes boot-sheen{0%{background-position:100% 0}60%,to{background-position:0 0}}@keyframes boot-breathe{0%,to{opacity:.55;transform:scale(.94)}50%{opacity:1;transform:scale(1.06)}}@keyframes boot-dot{0%,20%,to{opacity:.25}50%{opacity:1}}@media(prefers-reduced-motion:reduce){#boot:before,#boot>*,.boot-word,.boot-sub .d{animation:none}.boot-word{background:none;color:var(--ink)}.boot-rail span{animation:none;left:50%;transform:translate(-50%)}}#app,#stage{position:fixed;top:0;right:0;bottom:0;left:0}.hud{position:fixed;top:12px;left:12px;right:12px;z-index:10;color:var(--ink);font-size:13px;font-variant-numeric:tabular-nums;display:flex;flex-wrap:wrap;gap:.45rem;align-items:center}.hud strong{position:relative;font-family:var(--font-display);font-size:16px;font-weight:400;letter-spacing:.03em;padding:0 4px 0 1px}.hud strong:after{content:"";position:absolute;left:1px;right:5px;bottom:-4px;height:2px;border-radius:2px;background:var(--line, transparent);opacity:.9}.hud button,.hud select,.hud .livebadge{background:var(--panel-bg);color:var(--ink);border:1px solid var(--panel-border);border-radius:999px;padding:7px 14px;font-size:13px;font-weight:500;line-height:1.15;white-space:nowrap;flex:0 0 auto;cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:background .15s ease,border-color .15s ease,transform .06s ease,color .15s ease}.hud .livebadge.estimating{color:#ffcf80;border-color:#ffb45a80;background:#3c2c14e6;animation:estimating-pulse 1.6s ease-in-out infinite}@keyframes estimating-pulse{0%,to{opacity:1}50%{opacity:.62}}.hud button:hover,.hud select:hover{background:var(--panel-bg-hover);border-color:var(--panel-border-hover);transform:translateY(-1px)}.hud button:active{transform:translateY(1px)}.hud button:focus-visible,.hud select:focus-visible,.recenter-fab:focus-visible{outline:2px solid var(--line, var(--panel-border-hover));outline-offset:2px}.hud button,.hud select,.hud .livebadge{box-shadow:0 2px 10px #00000038}.hud .theme-toggle{margin-left:auto;width:32px;height:32px;padding:0;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:none;backdrop-filter:none}.hud .theme-toggle svg{width:16px;height:16px;flex-shrink:0}.hud select{-webkit-appearance:none;-moz-appearance:none;appearance:none;max-width:230px;text-overflow:ellipsis;padding-right:30px;font-weight:500;-webkit-backdrop-filter:none;backdrop-filter:none}.hud .sel{position:relative;display:inline-flex;flex:0 0 auto}.hud .sel:after{content:"";position:absolute;right:13px;top:50%;width:6px;height:6px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:translateY(-70%) rotate(45deg);opacity:.6;pointer-events:none}.hud .livebadge{display:inline-flex;align-items:center;gap:5px;background:#3a1f28e6;color:#ff6b6b;border-color:#82415080;font-weight:600;letter-spacing:.02em;cursor:default}.recenter-fab{position:fixed;right:14px;bottom:18px;z-index:11;background:var(--fab-bg);color:var(--ink);border:1px solid var(--fab-border);border-radius:999px;padding:10px 18px;font:inherit;font-size:13px;cursor:pointer;box-shadow:0 3px 12px #00000073;opacity:0;transform:translateY(10px);pointer-events:none;transition:opacity .18s ease,transform .18s ease}.recenter-fab.show{opacity:1;transform:translateY(0);pointer-events:auto}.roam-hint{position:fixed;left:50%;bottom:48px;transform:translate(-50%);z-index:11;background:var(--card-bg);color:var(--ink);border:1px solid var(--fab-border);border-radius:999px;padding:8px 16px;font-size:13px;letter-spacing:.02em;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .3s ease}.roam-hint.show{opacity:.92}@media(max-width:560px){.roam-hint{font-size:11px;padding:7px 13px;bottom:46px}}.station-panel{position:fixed;left:14px;bottom:16px;z-index:11;display:none;flex-direction:column;width:282px;max-width:calc(100vw - 28px);padding:12px 14px 10px;background:#080a0ff0;color:#f2d38c;border:1px solid rgba(242,211,140,.38);border-radius:6px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:13px;text-decoration:none;cursor:pointer;box-shadow:0 10px 30px #00000040;transition:border-color .15s ease,background-color .15s ease}.station-panel.show{display:flex;animation:card-in .22s ease}@keyframes card-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.station-panel.show{animation:none}.hud button:hover,.hud select:hover{transform:none}}.station-panel:hover{border-color:#ffdf9abf;background:#0c0f16fa}.station-panel:focus-visible{outline:2px solid #ffdc88;outline-offset:3px}.station-panel .sp-top{display:flex;justify-content:space-between;gap:8px;padding-bottom:5px;color:#f2d38ca6;font-size:9px;letter-spacing:.09em;white-space:nowrap}.station-panel .sp-live{color:#f2d38c}.station-panel .sp-head{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-bottom:1px solid rgba(242,211,140,.28);padding-bottom:7px;font-size:17px;line-height:1.15;letter-spacing:.12em;text-transform:uppercase}.station-panel .sp-line{display:block;padding:9px 0 6px;color:var(--line, #8e9ee0);font-size:10px;font-weight:700;letter-spacing:.1em;text-transform:uppercase}.station-panel .sp-rows{display:flex;flex-direction:column;gap:3px}.station-panel .sp-row{display:grid;grid-template-columns:14px minmax(0,1fr) auto;align-items:center;gap:8px;min-height:19px;line-height:1.15}.station-panel .sp-num{color:#f2d38c99}.station-panel .sp-row.you .sp-num{color:var(--line, #8e9ee0);font-weight:700}.station-panel .sp-row.due .sp-eta{color:#ffdf9d;font-weight:700}.station-panel .sp-dest{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-transform:uppercase}.station-panel .sp-eta{min-width:32px;text-align:right;font-variant-numeric:tabular-nums}.station-panel .sp-empty{padding:7px 0 5px;opacity:.7;font-size:11px;letter-spacing:.05em}.station-panel .sp-cta{display:flex;justify-content:space-between;gap:8px;margin-top:10px;padding-top:8px;border-top:1px solid rgba(242,211,140,.22);color:#f2d38cc7;font-size:9px;letter-spacing:.07em;white-space:nowrap}.station-panel:hover .sp-cta,.station-panel:focus-visible .sp-cta{color:#ffdf9d}.hud #vehid{font-size:12px;opacity:.66;font-variant-numeric:tabular-nums;letter-spacing:.02em}.hud select option:disabled{color:#515b70}.hud .hint{opacity:.7}.hud .credit{position:fixed;left:50%;bottom:20px;transform:translate(-50%);z-index:11;color:inherit;text-decoration:none;border-bottom:1px dotted currentColor;font-size:11px;opacity:.6;white-space:nowrap;pointer-events:auto}.hud .credit:hover{opacity:1}.hud .attr{position:fixed;left:50%;bottom:6px;transform:translate(-50%);font-size:10px;line-height:1.2;opacity:.7;white-space:nowrap;pointer-events:auto}.hud .attr a{color:inherit}@media(max-width:560px){.hud{top:8px;left:8px;right:8px;gap:.3rem .4rem;font-size:12px;flex-wrap:wrap}.hud button:not(.theme-toggle),.hud select,.hud .seg button{padding:4px 8px;font-size:12px}.hud select{max-width:42vw}.hud #share{position:fixed;right:12px;bottom:30px;z-index:11;padding:13px 24px;font-size:15px;border-radius:999px;background:var(--fab-bg);border:1px solid var(--fab-border);box-shadow:0 3px 12px #00000073}.hud #vehid{font-size:11px}.hud .attr{font-size:8px;bottom:4px}.recenter-fab{right:12px;bottom:84px}.station-panel{left:8px;bottom:30px;width:min(282px,calc(100vw - 92px));padding:10px 11px 8px;font-size:11px}.station-panel .sp-head{font-size:14px}}:root[data-theme=blueprint]{--sky: linear-gradient(to bottom, #04122c 0%, #072044 55%, #0a2b58 100%);--ink: #bfe2ff;--panel-bg: rgba(8, 30, 60, .9);--panel-bg-hover: rgba(16, 46, 84, .95);--panel-border: rgba(90, 170, 230, .4);--panel-border-hover: rgba(130, 200, 255, .62);--card-bg: rgba(6, 26, 54, .9);--card-bg-hover: rgba(12, 40, 76, .94);--card-border: rgba(90, 170, 230, .4);--card-divider: rgba(90, 170, 230, .28);--fab-bg: #0a2342;--fab-border: #2f74ab}:root[data-theme=nocturne]{--sky: linear-gradient(to bottom, #03060e 0%, #070c1a 55%, #0c1428 100%);--ink: #e2e0ec;--panel-bg: rgba(14, 18, 34, .92);--panel-bg-hover: rgba(26, 32, 54, .96);--panel-border: rgba(120, 130, 170, .34);--panel-border-hover: rgba(180, 160, 120, .55);--card-bg: rgba(12, 16, 30, .9);--card-bg-hover: rgba(22, 28, 48, .94);--card-border: rgba(120, 130, 170, .32);--card-divider: rgba(120, 130, 170, .22);--fab-bg: #14182e;--fab-border: #3a4368}:root[data-theme=porcelain]{--sky: linear-gradient(to bottom, #e6edf5 0%, #f1f5fa 55%, #fbfcfe 100%);--ink: #2a3340;--panel-bg: rgba(255, 255, 255, .82);--panel-bg-hover: rgba(255, 255, 255, .95);--panel-border: rgba(40, 60, 90, .18);--panel-border-hover: rgba(40, 60, 90, .4);--card-bg: rgba(255, 255, 255, .86);--card-bg-hover: rgba(255, 255, 255, .96);--card-border: rgba(40, 60, 90, .16);--card-divider: rgba(40, 60, 90, .14);--fab-bg: rgba(255, 255, 255, .92);--fab-border: rgba(40, 60, 90, .3)}:root[data-theme=porcelain] .recenter-fab,:root[data-theme=porcelain] .hud #share{box-shadow:0 3px 14px #283c5a38}:root[data-theme=porcelain] .hud .credit{color:var(--ink)}:root[data-theme=porcelain] .hud .livebadge{background:#ffffffd1;color:#d22f3a;border-color:#d22f3a52}:root[data-theme=porcelain] .hud button,:root[data-theme=porcelain] .hud select,:root[data-theme=porcelain] .hud .livebadge{box-shadow:0 2px 10px #283c5a24}
