:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--canvas:#0b0c10;--card:#15171d;--raised:#1d2028;--sunken:#0e1014;--line:#262a34;--line-soft:#1c1f27;--edge:inset 0 1px 0 #ffffff0d;--lift:0 1px 2px #0006, 0 10px 28px -14px #000000b3;--ink:#f3f4f6;--ink-2:#a3a8b4;--ink-3:#6c7282;--accent:#5b8cff;--accent-ink:#fff;--accent-soft:#5b8cff26;--good:#3ddc97;--warn:#f0b429;--bad:#ff5d62;--good-soft:#3ddc9721;--warn-soft:#f0b42924;--bad-soft:#ff5d6224;--live:#3ddc97;--sans:-apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, Roboto, sans-serif;--num:ui-rounded, -apple-system, "SF Pro Rounded", system-ui, sans-serif;--r-sm:10px;--r:18px;--r-lg:26px;--gutter:16px;--safe-t:env(safe-area-inset-top,0px);--safe-b:env(safe-area-inset-bottom,0px);--tabbar:58px}@media (prefers-color-scheme:light){:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--canvas:#f2f3f6;--card:#fff;--raised:#f6f7f9;--sunken:#e9ebef;--line:#dfe2e8;--line-soft:#eceef2;--edge:inset 0 0 0 1px #0f141e0a;--lift:0 1px 2px #0f141e0f, 0 10px 24px -16px #0f141e40;--ink:#12141a;--ink-2:#555b68;--ink-3:#8a90a0;--accent:#2f6bff;--accent-soft:#2f6bff1a;--good:#0f9f63;--warn:#b7791f;--bad:#d93a3f;--good-soft:#0f9f631a;--warn-soft:#b7791f1f;--bad-soft:#d93a3f1a;--live:#0f9f63}}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{background:var(--canvas);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;overscroll-behavior-y:none;margin:0;font-size:16px;line-height:1.4}button,input,select{font:inherit;color:inherit}button{cursor:pointer;background:0 0;border:0;padding:0}a{color:inherit;text-decoration:none}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.num{font-family:var(--num);font-variant-numeric:tabular-nums}.app{min-height:100dvh;padding-bottom:calc(var(--tabbar) + var(--safe-b))}.screen{max-width:640px;padding:calc(var(--safe-t) + 12px) var(--gutter) 28px;margin:0 auto}.screen.flush{padding-left:0;padding-right:0}.top{align-items:center;gap:10px;min-height:44px;margin-bottom:10px;display:flex}.top h1{letter-spacing:-.02em;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;margin:0;font-size:28px;font-weight:750;overflow:hidden}.top h1.small{font-size:19px;font-weight:700}.icon-btn{background:var(--raised);width:40px;height:40px;color:var(--ink);border-radius:999px;flex:none;place-items:center;display:inline-grid}.icon-btn svg{width:20px;height:20px}.icon-btn.accent{background:var(--accent);color:var(--accent-ink)}.tabbar{z-index:1000;padding:6px 12px calc(6px + var(--safe-b));background:color-mix(in srgb, var(--canvas) 86%, transparent);-webkit-backdrop-filter:blur(18px)saturate(1.4);border-top:1px solid var(--line-soft);justify-content:center;gap:4px;display:flex;position:fixed;bottom:0;left:0;right:0}.tabbar a{max-width:140px;color:var(--ink-3);border-radius:12px;flex:1;justify-items:center;gap:2px;padding:6px 0;font-size:11px;font-weight:600;display:grid}.tabbar a svg{width:22px;height:22px}.tabbar a.active{color:var(--ink)}.tabbar a.active svg{color:var(--accent)}.card{background:var(--card);border-radius:var(--r);box-shadow:var(--edge), var(--lift);overflow:hidden}.stack{gap:14px;display:grid}.section-title{letter-spacing:.04em;text-transform:uppercase;color:var(--ink-3);margin:22px 4px 8px;font-size:13px;font-weight:650}.muted{color:var(--ink-2)}.faint{color:var(--ink-3)}.small{font-size:13px}.badge{--c:#1f8a70;--t:#fff;background:var(--c);min-width:30px;height:26px;color:var(--t);font-family:var(--num);letter-spacing:-.01em;white-space:nowrap;border-radius:7px;flex:none;justify-content:center;align-items:center;gap:3px;padding:0 7px;font-size:14px;font-weight:800;display:inline-flex}.badge svg{opacity:.9;width:13px;height:13px}.badge.tram{border-radius:999px}.badge.metro{border-radius:6px}.badge.lg{border-radius:9px;min-width:40px;height:34px;padding:0 10px;font-size:18px}.badge.lg.tram{border-radius:999px}.chain{flex-wrap:wrap;align-items:center;gap:4px;min-width:0;display:flex}.chain .sep{color:var(--ink-3);font-size:12px}.walk-chip{color:var(--ink-2);align-items:center;gap:2px;font-size:12px;font-weight:600;display:inline-flex}.walk-chip svg{width:15px;height:15px}.live-dot{background:var(--live);border-radius:50%;flex:none;width:8px;height:8px;display:inline-block;position:relative}.live-dot:after{content:"";border:2px solid var(--live);opacity:0;border-radius:50%;animation:2s ease-out infinite pulse;position:absolute;inset:-4px}.live-dot.off{background:var(--ink-3)}.live-dot.off:after{display:none}@keyframes pulse{0%{opacity:.7;transform:scale(.5)}to{opacity:0;transform:scale(1.4)}}@media (prefers-reduced-motion:reduce){.live-dot:after{animation:none}}.pill{white-space:nowrap;border-radius:999px;align-items:center;gap:6px;padding:3px 9px;font-size:12px;font-weight:700;display:inline-flex}.pill svg{width:13px;height:13px}.pill.ok{background:var(--good-soft);color:var(--good)}.pill.warn{background:var(--warn-soft);color:var(--warn)}.pill.bad{background:var(--bad-soft);color:var(--bad)}.pill.neutral{background:var(--raised);color:var(--ink-2)}.feed-line{color:var(--ink-3);align-items:center;gap:8px;margin:0 4px 12px;font-size:12px;display:flex}.commute{display:block}.commute-head{align-items:center;gap:10px;padding:14px 16px 10px;display:flex}.commute-head .name{flex:1;min-width:0}.commute-head h2{text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:17px;font-weight:700;overflow:hidden}.commute-head .route{color:var(--ink-3);text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.dir-toggle{background:var(--sunken);border-radius:999px;flex:none;padding:3px;display:inline-flex}.dir-toggle button{color:var(--ink-3);border-radius:999px;padding:5px 11px;font-size:12px;font-weight:700}.dir-toggle button.on{background:var(--raised);color:var(--ink);box-shadow:var(--edge)}.hero{grid-template-columns:auto 1fr;align-items:center;gap:4px 16px;padding:4px 16px 14px;display:grid}.hero .when{grid-row:span 2;justify-items:start;line-height:1;display:grid}.hero .when .label{color:var(--ink-3);text-transform:uppercase;letter-spacing:.04em;margin-bottom:4px;font-size:12px;font-weight:650}.hero .when .value{font-family:var(--num);font-variant-numeric:tabular-nums;letter-spacing:-.03em;font-size:44px;font-weight:800}.hero .when .value small{color:var(--ink-2);letter-spacing:0;margin-left:3px;font-size:18px;font-weight:700}.hero .when.now .value{color:var(--good)}.hero .what{min-width:0}.hero .detail{color:var(--ink-2);min-width:0;font-size:13px}.hero .detail b{color:var(--ink);font-weight:650}.hero .detail .approach{margin-top:0}.hero .arrive-line{color:var(--ink-3);margin-top:3px;font-size:13px}.approach{color:var(--ink-2);align-items:center;gap:6px;margin-top:4px;font-size:12px;display:flex}.track{align-items:center;gap:3px;display:inline-flex}.track i{background:var(--ink-3);opacity:.6;border-radius:50%;width:5px;height:5px}.track .veh{background:var(--c,var(--accent));opacity:1;width:9px;height:9px}.track .me{border:2px solid var(--ink);opacity:1;background:0 0;width:9px;height:9px}.banner{border-radius:var(--r-sm);align-items:flex-start;gap:10px;margin:0 12px 12px;padding:10px 12px;font-size:13px;line-height:1.35;display:flex}.banner svg{flex:none;width:18px;height:18px;margin-top:1px}.banner b{font-weight:700}.banner.bad{background:var(--bad-soft);color:var(--ink)}.banner.bad svg{color:var(--bad)}.banner.warn{background:var(--warn-soft);color:var(--ink)}.banner.warn svg{color:var(--warn)}.banner.info{background:var(--raised);color:var(--ink-2)}.options{border-top:1px solid var(--line-soft)}.option{text-align:left;border-bottom:1px solid var(--line-soft);grid-template-columns:62px 1fr auto;align-items:center;gap:10px;width:100%;padding:10px 16px;display:grid}.option:last-child{border-bottom:0}.option .leave{font-family:var(--num);font-variant-numeric:tabular-nums;font-size:17px;font-weight:750}.option .leave small{color:var(--ink-3);font-size:11px;font-weight:600;display:block}.option .arrive{text-align:right;font-family:var(--num);font-variant-numeric:tabular-nums;font-size:15px;font-weight:650}.option .arrive small{color:var(--ink-3);font-size:11px;font-weight:600;display:block}.option.bad .chain,.option.bad .leave{opacity:.55}.option.selected{background:var(--accent-soft)}.option .flag{vertical-align:-3px;width:16px;height:16px;margin-left:4px}.option .flag.bad{color:var(--bad)}.option .flag.warn{color:var(--warn)}.legs{padding:6px 16px 14px}.leg{grid-template-columns:52px 22px 1fr;gap:0 8px;min-height:34px;display:grid}.leg .t{font-family:var(--num);font-variant-numeric:tabular-nums;text-align:right;padding-top:7px;font-size:14px;font-weight:700}.leg .t s{color:var(--ink-3);font-size:11px;font-weight:600;display:block}.leg .rail{justify-content:center;display:flex;position:relative}.leg .rail:before{content:"";background:var(--c,var(--line));border-radius:2px;width:4px;position:absolute;top:0;bottom:0}.leg.walk .rail:before{border-left:3px dotted var(--ink-3);background:0 0;width:0}.leg .rail .dot{background:var(--card);border:3px solid var(--c,var(--ink-3));border-radius:50%;width:12px;height:12px;margin-top:10px;position:relative}.leg .body{min-width:0;padding:6px 0 10px}.leg .body .stop-name{font-weight:650}.leg .body .sub{color:var(--ink-2);font-size:13px}.leg .body .sub svg{vertical-align:-3px;width:15px;height:15px}.leg .body .ride-head{align-items:center;gap:8px;margin:6px 0 2px;display:flex}.leg .body .ride-head .headsign{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:14px;font-weight:600;overflow:hidden}.delay{font-family:var(--num);font-variant-numeric:tabular-nums;font-size:12px;font-weight:700}.delay.late{color:var(--warn)}.delay.early{color:var(--good)}.alert{text-align:left;border-bottom:1px solid var(--line-soft);width:100%;padding:12px 14px;display:block}.alert:last-child{border-bottom:0}.alert .alert-head{align-items:flex-start;gap:10px;display:flex}.alert .alert-head svg{flex:none;width:18px;height:18px;margin-top:2px}.alert.major .alert-head svg{color:var(--bad)}.alert.minor .alert-head svg{color:var(--warn)}.alert.info .alert-head svg{color:var(--ink-3)}.alert .title{font-size:14px;font-weight:650}.alert .desc{color:var(--ink-2);white-space:pre-line;margin-top:8px;font-size:13px}.alert .desc a{color:var(--accent)}.map-wrap{background:var(--sunken);height:42vh;min-height:260px;max-height:460px;position:relative}.map-wrap.tall{height:55vh}.map{position:absolute;inset:0}.map-float{z-index:500;top:calc(var(--safe-t) + 10px);pointer-events:none;align-items:center;gap:8px;display:flex;position:absolute;left:12px;right:12px}.map-float>*{pointer-events:auto}.map-float .icon-btn{background:var(--card);box-shadow:var(--lift)}.map-float .title-chip{background:var(--card);min-width:0;box-shadow:var(--lift);text-overflow:ellipsis;white-space:nowrap;border-radius:999px;flex:1;padding:9px 14px;font-size:15px;font-weight:700;overflow:hidden}.sheet{z-index:600;border-radius:var(--r-lg) var(--r-lg) 0 0;background:var(--canvas);padding:14px var(--gutter) 28px;max-width:640px;margin-top:-18px;margin-left:auto;margin-right:auto;position:relative}.leaflet-container{background:var(--sunken);font:inherit}@media (prefers-color-scheme:dark){.leaflet-tile-pane{filter:invert()hue-rotate(180deg)brightness(.9)contrast(.85)saturate(.6)}}.leaflet-control-attribution{background:color-mix(in srgb, var(--card) 70%, transparent)!important;color:var(--ink-3)!important;font-size:9px!important}.leaflet-control-attribution a{color:var(--ink-2)!important}.leaflet-control-zoom{display:none}.mk{position:relative}.mk-vehicle{--c:#1f8a70;--t:#fff;place-items:center;width:30px;height:30px;display:grid}.mk-vehicle .body{z-index:1;background:var(--c);min-width:26px;height:26px;color:var(--t);font-family:var(--num);border:2px solid var(--card);border-radius:999px;place-items:center;padding:0 4px;font-size:12px;font-weight:800;display:grid;position:relative;box-shadow:0 2px 6px #00000059}.mk-vehicle .arrow{z-index:0;position:absolute;inset:-7px}.mk-vehicle .arrow:before{content:"";border-left:6px solid #0000;border-right:6px solid #0000;border-bottom:9px solid var(--c);position:absolute;top:0;left:50%;transform:translate(-50%)}.mk-vehicle.dim{opacity:.45}.mk-vehicle.focus .body{border-color:var(--ink);transform:scale(1.2)}.mk-vehicle.off .body{border-color:var(--bad);box-shadow:0 0 0 3px var(--bad-soft), 0 2px 6px #00000059}.mk-stop{background:var(--card);border:3px solid var(--c,var(--ink));border-radius:50%;width:12px;height:12px}.mk-stop.small{border-width:2px;width:8px;height:8px}.mk-place{background:var(--ink);border:4px solid var(--card);border-radius:50%;width:20px;height:20px;box-shadow:0 2px 6px #00000059}.mk-place.dest{background:var(--accent);border-radius:5px}.mk-warn{background:var(--bad);color:#fff;border:2px solid var(--card);width:26px;height:26px;box-shadow:0 0 0 6px var(--bad-soft);border-radius:50%;place-items:center;display:grid}.mk-warn svg{width:14px;height:14px}.mk-me{background:var(--accent);width:16px;height:16px;box-shadow:0 0 0 6px var(--accent-soft);border:3px solid #fff;border-radius:50%}.list{background:var(--card);border-radius:var(--r);box-shadow:var(--edge), var(--lift);overflow:hidden}.row{text-align:left;border-bottom:1px solid var(--line-soft);align-items:center;gap:12px;width:100%;min-height:52px;padding:10px 14px;display:flex}.row:last-child{border-bottom:0}.row .main{flex:1;min-width:0}.row .main .t1{text-overflow:ellipsis;white-space:nowrap;font-weight:650;overflow:hidden}.row .main .t2{color:var(--ink-3);text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.row .end{text-align:right;flex:none}.row .mins{font-family:var(--num);font-variant-numeric:tabular-nums;font-size:20px;font-weight:800}.row .mins small{color:var(--ink-2);margin-left:2px;font-size:12px;font-weight:650}.chev{width:16px;height:16px;color:var(--ink-3);flex:none}.line-grid{flex-wrap:wrap;gap:8px;display:flex}.segmented{background:var(--sunken);border-radius:12px;gap:3px;margin-bottom:12px;padding:3px;display:flex}.segmented button{min-width:0;color:var(--ink-3);text-overflow:ellipsis;white-space:nowrap;border-radius:9px;flex:1;padding:8px 10px;font-size:13px;font-weight:650;overflow:hidden}.segmented button.on{background:var(--card);color:var(--ink);box-shadow:var(--edge), var(--lift)}.field{gap:6px;margin-bottom:14px;display:grid}.field>label,.field>.label{color:var(--ink-2);margin-left:4px;font-size:13px;font-weight:650}.input{border:1px solid var(--line);background:var(--card);border-radius:14px;outline:none;width:100%;height:48px;padding:0 14px;font-size:16px}.input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.search{position:relative}.search svg{width:18px;height:18px;color:var(--ink-3);pointer-events:none;position:absolute;top:50%;left:14px;transform:translateY(-50%)}.search .input{padding-left:42px}.btn{background:var(--raised);height:48px;color:var(--ink);border-radius:14px;justify-content:center;align-items:center;gap:8px;padding:0 18px;font-weight:700;display:inline-flex}.btn svg{width:18px;height:18px}.btn.primary{background:var(--accent);color:var(--accent-ink)}.btn.danger{background:var(--bad-soft);color:var(--bad)}.btn.danger.armed{background:var(--bad);color:#fff}.btn.block{width:100%}.btn.small{border-radius:11px;height:36px;padding:0 12px;font-size:14px}.btn:disabled{opacity:.5;cursor:default}.place-chosen{background:var(--card);border:1px solid var(--line);text-align:left;border-radius:14px;align-items:center;gap:12px;width:100%;min-height:56px;padding:8px 8px 8px 14px;display:flex}.place-chosen .main{flex:1;min-width:0}.place-chosen .t1{text-overflow:ellipsis;white-space:nowrap;font-weight:650;overflow:hidden}.place-chosen .t2{color:var(--ink-3);font-size:12px}.place-results{margin-top:6px}.place-icon{background:var(--raised);width:34px;height:34px;color:var(--ink-2);border-radius:10px;flex:none;place-items:center;display:grid}.place-icon svg{width:18px;height:18px}.swap{justify-content:center;margin:-6px 0 8px;display:flex}.days{gap:5px;display:flex}.days button{background:var(--sunken);height:38px;color:var(--ink-3);border-radius:10px;flex:1;font-size:13px;font-weight:700}.days button.on{background:var(--accent);color:var(--accent-ink)}.window{background:var(--card);border:1px solid var(--line);border-radius:14px;gap:10px;margin-bottom:10px;padding:12px;display:grid}.window .times{align-items:center;gap:8px;display:flex}.window .times .input{flex:1;height:40px}.switch-row{background:var(--card);border:1px solid var(--line);border-radius:14px;align-items:center;gap:12px;margin-bottom:12px;padding:12px 14px;display:flex}.switch-row .main{flex:1}.switch-row .t2{color:var(--ink-3);font-size:13px}.switch{background:var(--sunken);border:1px solid var(--line);border-radius:999px;flex:none;width:50px;height:30px;transition:background .15s;position:relative}.switch:after{content:"";background:#fff;border-radius:50%;width:24px;height:24px;transition:transform .15s;position:absolute;top:2px;left:2px;box-shadow:0 1px 3px #0000004d}.switch.on{background:var(--good);border-color:var(--good)}.switch.on:after{transform:translate(20px)}.error-text{color:var(--bad);margin:6px 4px;font-size:13px}.empty{text-align:center;padding:36px 20px}.empty .art{background:var(--accent-soft);width:72px;height:72px;color:var(--accent);border-radius:22px;place-items:center;margin:0 auto 14px;display:grid}.empty .art svg{width:36px;height:36px}.empty h2{margin:0 0 6px;font-size:19px}.empty p{max-width:320px;color:var(--ink-2);margin:0 auto 18px;font-size:14px}.skeleton{background:linear-gradient(90deg, var(--raised), var(--line-soft), var(--raised));background-size:200% 100%;border-radius:8px;height:16px;animation:1.4s linear infinite shimmer}@keyframes shimmer{to{background-position:-200% 0}}.spacer{height:12px}.prose{color:var(--ink-2);padding:12px 14px;font-size:14px}.prose p{margin:0 0 8px}.prose p:last-child{margin:0}.prose a{color:var(--accent)}code.device{background:var(--sunken);word-break:break-all;color:var(--ink);border-radius:10px;margin:8px 0;padding:10px 12px;font-size:12px;display:block}
/*$vite$:1*/