:root{--ink:#1d2126;--ink-2:#5b6168;--ink-3:#8d9298;--paper:#fcf8f0db;--paper-solid:#fcf8f0;--line:#1d212617;--accent:#ff4b3a;--ok:#2f9b57;--slight:#c98a12;--late:#d7372f;--shadow:0 1px 0 #fff9 inset, 0 18px 40px -18px #46341959, 0 2px 6px #46341914;color:var(--ink);-webkit-font-smoothing:antialiased;font-family:Inter Tight,ui-sans-serif,system-ui,sans-serif}*{box-sizing:border-box}html,body,#root,.app{background:#efe4d0;height:100%;margin:0;overflow:hidden}.app{position:relative}button{font:inherit;color:inherit;cursor:pointer}.brand{z-index:40;background:var(--paper);-webkit-backdrop-filter:blur(14px)saturate(1.2);backdrop-filter:blur(14px)saturate(1.2);box-shadow:var(--shadow);border-radius:18px;width:318px;padding:14px 14px 12px;position:absolute;top:18px;left:18px}.brand-row{align-items:center;gap:12px;display:flex}.logo{border-radius:12px;flex:none;width:40px;height:40px;display:block}.brand h1{letter-spacing:-.02em;margin:0;font-size:19px;font-weight:650}.brand p{color:var(--ink-2);margin:1px 0 0;font-size:12.5px}.chips{flex-wrap:wrap;gap:6px;margin-top:12px;display:flex}.chip{border:1px solid var(--line);background:#ffffffb3;border-radius:999px;align-items:center;gap:6px;padding:5px 9px 5px 7px;font-size:12.5px;font-weight:500;transition:opacity .15s,background .15s,transform .1s;display:inline-flex}.chip:hover{background:#fff}.chip:active{transform:scale(.97)}.chip i{border-radius:3px;width:10px;height:10px}.chip span{color:var(--ink-3);font-variant-numeric:tabular-nums}.chip.off{opacity:.45}.chip.off i{background:var(--ink-3)!important}.status{z-index:40;background:var(--paper);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);box-shadow:var(--shadow);font-variant-numeric:tabular-nums;border-radius:999px;align-items:center;gap:8px;padding:8px 12px;font-size:12.5px;font-weight:500;display:flex;position:absolute;bottom:34px;left:18px}.live{background:var(--ok);border-radius:50%;width:8px;height:8px;animation:2s infinite pulse;box-shadow:0 0 #2f9b5780}.live.bad{background:var(--late);animation:none}@keyframes pulse{70%{box-shadow:0 0 0 7px #2f9b5700}to{box-shadow:0 0 #2f9b5700}}.hint{color:#1d21268c;pointer-events:none;font-size:12px;position:absolute;bottom:40px;left:50%;transform:translate(-50%)}.attrib{color:#1d212680;font-size:10.5px;position:absolute;bottom:10px;left:18px}.loading{color:var(--ink-2);place-items:center;font-size:15px;display:grid;position:absolute;inset:0}.tag{white-space:nowrap;background:var(--paper-solid);border-radius:10px;align-items:center;gap:6px;padding:3px 9px 3px 3px;font-size:12.5px;font-weight:550;display:flex;transform:translateY(-6px);box-shadow:0 6px 16px -6px #281e0a66}.tag-line{color:#fff;text-align:center;border-radius:7px;min-width:26px;padding:2px 7px;font-weight:700}.tag-sub{color:var(--ink-3);font-size:11px;font-weight:500}.stop-tag{white-space:nowrap;background:#fcf8f0eb;border-radius:6px;gap:5px;padding:2px 6px;font-size:11px;font-weight:600;display:flex;box-shadow:0 3px 8px -4px #281e0a66}.stop-tag span{color:var(--ink-2);font-family:JetBrains Mono,ui-monospace,monospace;font-weight:500}.stop-tag.passed{opacity:.55}.stop-tag.next{background:var(--ink);color:#fff}.stop-tag.next span{color:#ffffffb3}.panel{z-index:50;background:var(--paper);-webkit-backdrop-filter:blur(16px)saturate(1.2);backdrop-filter:blur(16px)saturate(1.2);width:360px;box-shadow:var(--shadow);border-radius:20px;flex-direction:column;animation:.28s cubic-bezier(.2,.8,.2,1) slide-in;display:flex;position:absolute;top:18px;bottom:18px;right:18px;overflow:hidden}@keyframes slide-in{0%{opacity:0;transform:translate(16px)}}.panel-head{align-items:center;gap:12px;padding:16px 16px 12px;display:flex}.line-badge{color:#fff;letter-spacing:-.03em;border-radius:14px;place-items:center;min-width:52px;height:52px;padding:0 8px;font-size:22px;font-weight:700;display:grid;box-shadow:0 6px 14px -6px #00000059}.panel-title{flex:1;min-width:0}.eyebrow{text-transform:uppercase;letter-spacing:.06em;color:var(--ink-3);font-size:11.5px;font-weight:600}.panel-title h2{letter-spacing:-.02em;margin:2px 0 0;font-size:19px;font-weight:650;line-height:1.2}.arrow{color:var(--ink-3);font-weight:500}.icon-btn{width:30px;height:30px;color:var(--ink-2);background:#1d21260f;border:none;border-radius:50%;align-self:flex-start;font-size:12px}.icon-btn:hover{background:#1d21261f}.stats{border:1px solid var(--line);background:#ffffff8c;border-radius:14px;grid-template-columns:repeat(3,1fr);margin:0 16px;display:grid}.stats>div{flex-direction:column;padding:10px 12px;display:flex}.stats>div+div{border-left:1px solid var(--line)}.stats label{color:var(--ink-3);font-size:11px;font-weight:500}.stats b{letter-spacing:-.02em;font-variant-numeric:tabular-nums;margin-top:2px;font-size:20px;font-weight:650}.stats small{color:var(--ink-2);font-size:11px}.delay.ok{color:var(--ok)}.delay.slight{color:var(--slight)}.delay.late{color:var(--late)}.delay.early{color:#2b72c2}.stats .delay{font-size:17px;line-height:26px}.follow{border:1px solid var(--line);background:#fff9;border-radius:12px;align-items:center;gap:8px;margin:10px 16px 0;padding:9px 12px;font-size:13px;font-weight:550;display:flex}.follow .dot{border:2px solid var(--ink-3);border-radius:50%;width:8px;height:8px}.follow.on{background:var(--ink);color:#fff;border-color:var(--ink)}.follow.on .dot{border-color:var(--accent);background:var(--accent)}.stops{flex:1;padding:14px 16px 6px;overflow:auto}.stops h3{margin:0 0 8px;font-size:13px;font-weight:650}.muted{color:var(--ink-3);font-size:12.5px;font-weight:500}.stops ol{margin:0;padding:0;list-style:none;position:relative}.stops li{align-items:center;gap:10px;padding:7px 0;font-size:13.5px;display:flex;position:relative}.stops li:before{content:"";background:var(--line);width:2px;position:absolute;top:0;bottom:0;left:5px}.stops li:first-child:before{top:50%}.stops li:last-child:before{bottom:50%}.pip{background:var(--paper-solid);border:2.5px solid;border-radius:50%;flex:none;width:12px;height:12px;position:relative}.stops li.next .stop-name{font-weight:650}.stop-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.times{align-items:baseline;gap:6px;font-family:JetBrains Mono,ui-monospace,monospace;font-size:12.5px;display:flex}.times s{color:var(--ink-3)}.times em{font-family:Inter Tight,sans-serif;font-size:11px;font-style:normal;font-weight:600}.times em.slight{color:var(--slight)}.times em.late{color:var(--late)}.times em.early{color:#2b72c2}.panel-foot{border-top:1px solid var(--line);color:var(--ink-3);justify-content:space-between;padding:10px 16px 12px;font-size:11.5px;display:flex}.mono{font-family:JetBrains Mono,ui-monospace,monospace}.help-btn{color:var(--ink-2);flex:none;align-self:center;margin-left:auto;font-size:15px;font-weight:700}.help-btn.on{background:var(--ink);color:var(--paper-solid)}.faq{flex:1;min-height:0;padding:0 10px 10px;overflow-y:auto}.faq details{border-radius:12px;transition:background .15s}.faq details+details{margin-top:2px}.faq details[open]{background:#ffffff8c}.faq summary{cursor:pointer;border-radius:12px;align-items:flex-start;gap:10px;padding:10px 12px 10px 8px;font-size:14px;font-weight:550;line-height:1.35;list-style:none;display:flex}.faq summary::-webkit-details-marker{display:none}.faq summary:hover{background:#1d21260d}.faq details[open] summary:hover{background:0 0}.faq summary:focus-visible{outline-offset:-2px;outline:2px solid #0b67b280}.faq-emoji{text-align:center;flex:none;width:20px}.faq-q{flex:1}.faq-chev{fill:none;width:12px;height:12px;stroke:var(--ink-3);stroke-width:1.6px;stroke-linecap:butt;stroke-linejoin:miter;flex:none;margin-top:3px;transition:transform .2s cubic-bezier(.2,.8,.2,1)}.faq details[open] .faq-chev{transform:rotate(90deg)}.faq details p{color:var(--ink-2);margin:0;padding:0 12px 12px 38px;font-size:13.5px;line-height:1.6;animation:.18s cubic-bezier(.2,.8,.2,1) rise}@media (width<=720px){.brand{width:auto;right:18px}.hint{display:none}.panel{width:auto;max-height:55%;inset:auto 10px 10px}}.env{border-top:1px solid var(--line);align-items:center;gap:8px;margin-top:10px;padding-top:10px;font-size:12.5px;font-weight:500;display:flex}.env-icon{font-size:15px}.env-text{color:var(--ink-2);font-variant-numeric:tabular-nums;white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.seg{background:#1d21260f;border-radius:999px;padding:2px;display:flex}.seg button{color:var(--ink-2);background:0 0;border:none;border-radius:999px;padding:3px 9px;font-size:11.5px;font-weight:600}.seg button.icon{place-items:center;padding:3px 7px;display:grid}.seg button.on{background:var(--paper-solid);color:var(--ink);box-shadow:0 1px 3px #0000001f}.search{z-index:45;width:min(440px,100vw - 40px);position:absolute;bottom:30px;left:50%;transform:translate(-50%)}.search-box{background:var(--paper);-webkit-backdrop-filter:blur(16px)saturate(1.2);backdrop-filter:blur(16px)saturate(1.2);height:48px;box-shadow:var(--shadow);color:var(--ink-2);border-radius:16px;align-items:center;gap:10px;padding:0 14px;transition:box-shadow .2s;display:flex}.search-box:focus-within{box-shadow:var(--shadow), 0 0 0 3px #0b67b240}.search-box input{font:inherit;color:var(--ink);background:0 0;border:none;outline:none;flex:1;font-size:15px;font-weight:500}.search-box input::placeholder{color:var(--ink-3)}.search-box kbd{border:1px solid var(--line);color:var(--ink-3);border-radius:6px;padding:1px 6px;font-family:JetBrains Mono,monospace;font-size:11px}.search-results{background:var(--paper);-webkit-backdrop-filter:blur(16px)saturate(1.2);backdrop-filter:blur(16px)saturate(1.2);box-shadow:var(--shadow);border-radius:16px;margin:0 0 8px;padding:6px;list-style:none;animation:.18s cubic-bezier(.2,.8,.2,1) rise}@keyframes rise{0%{opacity:0;transform:translateY(6px)}}.search-results li{cursor:pointer;border-radius:10px;align-items:center;gap:10px;padding:9px 10px;font-size:14px;font-weight:500;display:flex}.search-results li.active{background:#0b67b21a}.search-results .pin{color:var(--accent);font-size:10px}.stop-pin{white-space:nowrap;background:var(--accent);color:#fff;border-radius:10px;padding:5px 10px;font-size:13px;font-weight:650;box-shadow:0 8px 20px -8px #78140a99}.hint{font-size:11px;bottom:12px;left:auto;right:18px;transform:none}:root[data-theme=dark]{--ink:#e9ecf2;--ink-2:#b4bccb;--ink-3:#7d879a;--paper:#181e2cd1;--paper-solid:#1d2434;--line:#ffffff17;--shadow:0 1px 0 #ffffff0d inset, 0 18px 40px -18px #000000b3, 0 2px 6px #0000004d}:root[data-theme=dark] .chip{background:#ffffff0d}:root[data-theme=dark] .chip:hover,:root[data-theme=dark] .follow,:root[data-theme=dark] .stats{background:#ffffff0f}:root[data-theme=dark] .seg,:root[data-theme=dark] .icon-btn{background:#ffffff14}:root[data-theme=dark] .faq details[open]{background:#ffffff0f}:root[data-theme=dark] .faq summary:hover{background:#ffffff0d}:root[data-theme=dark] .help-btn.on,:root[data-theme=dark] .follow.on{color:#1d2434;background:#e9ecf2}:root[data-theme=dark] .hint,:root[data-theme=dark] .attrib{color:#e9ecf280}:root[data-theme=dark] .stop-tag{background:#1d2434eb}:root[data-theme=dark] .stop-tag.next{color:#1d2434;background:#e9ecf2}html,body,#root,.app{transition:background .6s}:root[data-theme=dark] body,:root[data-theme=dark] .app{background:#141b2b}@media (width<=900px){.status{bottom:92px}.attrib{display:none}}.attrib a{color:inherit}.line-chip{color:#fff;letter-spacing:-.02em;border-radius:7px;flex:none;place-items:center;min-width:30px;height:24px;padding:0 7px;font-size:13px;font-weight:700;display:grid}.search-results li.is-line{padding-top:7px;padding-bottom:7px}.hit-text,.lf-text{flex-direction:column;min-width:0;line-height:1.25;display:flex}.hit-text small,.lf-text small{color:var(--ink-3);white-space:nowrap;text-overflow:ellipsis;font-size:12px;font-weight:500;overflow:hidden}.line-filter{z-index:44;background:var(--paper);-webkit-backdrop-filter:blur(16px)saturate(1.2);backdrop-filter:blur(16px)saturate(1.2);max-width:min(440px,100vw - 40px);box-shadow:var(--shadow);border-radius:14px;align-items:center;gap:10px;padding:8px 8px 8px 10px;font-size:13.5px;animation:.2s cubic-bezier(.2,.8,.2,1) rise;display:flex;position:absolute;bottom:88px;left:50%;transform:translate(-50%)}.line-filter .lf-text{flex:1}.line-filter .icon-btn{align-self:center}.locate-btn{width:34px;height:34px;color:var(--ink-2);background:0 0;border:none;border-radius:10px;flex:none;place-items:center;margin-right:-6px;transition:background .15s,color .15s,transform .1s;display:grid;position:relative}.locate-btn:hover{color:#2f7cf6;background:#2f7cf61f}.locate-btn:active{transform:scale(.94)}.locate-btn.busy{color:#2f7cf6;cursor:progress}.locate-btn.busy svg{animation:1.1s linear infinite locate-spin}@keyframes locate-spin{to{transform:rotate(360deg)}}.locate-btn:after{content:attr(data-tip);white-space:nowrap;background:var(--ink);color:var(--paper-solid);pointer-events:none;opacity:0;border-radius:8px;padding:5px 9px;font-size:12px;font-weight:600;transition:opacity .15s,transform .15s;position:absolute;bottom:calc(100% + 10px);left:50%;transform:translate(-50%,4px)}.locate-btn:hover:after,.locate-btn:focus-visible:after{opacity:1;transform:translate(-50%)}@media (hover:none){.locate-btn:after,.search-box kbd{display:none}}.search-notice{white-space:nowrap;text-overflow:ellipsis;background:var(--ink);max-width:calc(100vw - 40px);color:var(--paper-solid);box-shadow:var(--shadow);border-radius:12px;padding:8px 12px;font-size:13px;font-weight:550;animation:.2s cubic-bezier(.2,.8,.2,1) rise;position:absolute;bottom:calc(100% + 8px);left:50%;overflow:hidden;transform:translate(-50%)}.view-ctl{z-index:40;-webkit-user-select:none;user-select:none;flex-direction:column;gap:8px;display:flex;position:absolute;bottom:34px;right:18px}.vc-btn{background:var(--paper);-webkit-backdrop-filter:blur(14px)saturate(1.2);backdrop-filter:blur(14px)saturate(1.2);width:46px;height:46px;box-shadow:var(--shadow);color:var(--ink);border:none;border-radius:50%;place-items:center;transition:transform .18s cubic-bezier(.2,.8,.2,1),opacity .2s,background .15s;display:grid;position:relative}.vc-btn:hover{background:var(--paper-solid)}.vc-btn:active{transform:scale(.93)}.vc-compass{touch-action:none;cursor:grab}.vc-compass.dragging{cursor:grabbing;transform:scale(1.08)}.vc-tilt{letter-spacing:-.01em;font-size:13.5px;font-weight:700}.vc-btn:after{content:attr(data-tip);white-space:nowrap;background:var(--ink);color:var(--paper-solid);letter-spacing:0;pointer-events:none;opacity:0;border-radius:8px;padding:5px 9px;font-size:12px;font-weight:600;transition:opacity .15s,transform .15s;position:absolute;top:50%;right:calc(100% + 10px);transform:translate(4px,-50%)}.vc-btn:hover:after,.vc-btn:focus-visible:after{opacity:1;transform:translateY(-50%)}.vc-compass.dragging:after{opacity:0}.hint{bottom:12px}@media (hover:none){.vc-btn:after{display:none}}@media (width<=900px){.view-ctl{bottom:90px;right:12px}.vc-btn{width:44px;height:44px}.vc-compass.is-north{opacity:0;pointer-events:none;transform:scale(.6)}.line-filter{max-width:none;bottom:140px;left:12px;right:66px;transform:none}}.sheet-handle,.head-status{display:none}@media (width<=720px){.panel{transition:transform .28s cubic-bezier(.2,.8,.2,1)}.panel.dragging{transition:none}.sheet-grab{touch-action:none;cursor:grab}.sheet-handle{outline:none;height:20px;margin-bottom:-10px;display:block;position:relative}.sheet-handle:before{content:"";background:var(--ink-3);opacity:.45;border-radius:3px;width:40px;height:5px;position:absolute;top:8px;left:50%;transform:translate(-50%)}.sheet-handle:focus-visible:before{opacity:.9}.panel.collapsed .stats,.panel.collapsed .follow,.panel.collapsed .stops,.panel.collapsed .panel-foot{display:none}.panel.collapsed .panel-head{padding-bottom:14px}.panel.collapsed .line-badge{border-radius:12px;min-width:44px;height:44px;font-size:19px}.panel.collapsed .panel-title h2{white-space:nowrap;text-overflow:ellipsis;font-size:17px;overflow:hidden}.panel.collapsed .head-status{font-variant-numeric:tabular-nums;flex:none;align-items:center;gap:6px;font-size:14px;display:inline-flex}.panel.collapsed .icon-btn{align-self:center}.head-follow{background:var(--accent);border-radius:50%;width:8px;height:8px;animation:2s infinite pulse-red;box-shadow:0 0 #ff4b3a80}@keyframes pulse-red{70%{box-shadow:0 0 0 6px #ff4b3a00}to{box-shadow:0 0 #ff4b3a00}}}html,body{touch-action:pan-x pan-y;overscroll-behavior:none;-webkit-text-size-adjust:100%}
