:root{color-scheme:dark;--bg: #0b1220;--panel: #172033;--panel-2: #1f2b45;--panel-glass: rgba(15, 23, 42, .86);--line: rgba(148, 163, 184, .2);--text: #f8fafc;--text-2: #cbd5e1;--text-3: #94a3b8;--brand: #38bdf8;--brand-ink: #04263a;--brand-soft: rgba(56, 189, 248, .14);--red: #dc2626;--red-ink: #ffffff;--red-soft: rgba(220, 38, 38, .18);--yellow: #facc15;--yellow-ink: #221900;--yellow-soft: rgba(250, 204, 21, .16);--green: #16a34a;--green-ink: #03210e;--green-soft: rgba(22, 163, 74, .2);--ok-text: #4ade80;--warn-text: #fde047;--danger-text: #fca5a5;--shadow: 0 10px 30px rgba(0, 0, 0, .45);--r-sm: 10px;--r-md: 14px;--r-lg: 20px;--font: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;--safe-t: env(safe-area-inset-top, 0px);--safe-b: env(safe-area-inset-bottom, 0px);--ease: cubic-bezier(.23, 1, .32, 1)}@media (prefers-color-scheme: light){:root{color-scheme:light;--bg: #eef2f8;--panel: #ffffff;--panel-2: #f1f5fa;--panel-glass: rgba(255, 255, 255, .92);--line: rgba(15, 23, 42, .13);--text: #0b1220;--text-2: #334155;--text-3: #64748b;--brand: #0369a1;--brand-ink: #ffffff;--brand-soft: rgba(3, 105, 161, .1);--red-soft: rgba(220, 38, 38, .1);--yellow-soft: rgba(202, 138, 4, .16);--green-soft: rgba(22, 163, 74, .14);--ok-text: #15803d;--warn-text: #854d0e;--danger-text: #b91c1c;--shadow: 0 10px 30px rgba(15, 23, 42, .16)}}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font);font-size:16px;line-height:1.45;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;overscroll-behavior:none}h1,h2,h3,p{margin:0}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;border:0;background:none;padding:0;touch-action:manipulation}a{color:var(--brand)}:focus-visible{outline:3px solid var(--brand);outline-offset:2px;border-radius:6px}.num{font-variant-numeric:tabular-nums}.muted{color:var(--text-2)}.faint{color:var(--text-3)}.small{font-size:13px}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.row{display:flex;align-items:center;gap:10px}.col{display:flex;flex-direction:column;gap:10px}.grow{flex:1;min-width:0}.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.page{min-height:100%;display:flex;flex-direction:column;padding:calc(16px + var(--safe-t)) 16px calc(24px + var(--safe-b));max-width:560px;margin:0 auto;gap:16px}.page-head{display:flex;align-items:center;gap:8px;min-height:44px}.page-head h1{font-size:22px;font-weight:800;letter-spacing:-.02em}.brand{display:flex;align-items:center;gap:12px}.brand img{width:52px;height:52px;border-radius:14px}.brand b{font-size:34px;font-weight:850;letter-spacing:-.035em}.hero{flex:1;display:flex;flex-direction:column;justify-content:center;gap:22px;padding:24px 0}.hero h1{font-size:clamp(30px,8.5vw,44px);line-height:1.05;font-weight:850;letter-spacing:-.035em;text-wrap:balance}.hero h1 span{display:block}.hero h1 span:nth-child(2){color:var(--brand)}.hero p{color:var(--text-2);font-size:17px;max-width:34ch}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:52px;padding:0 18px;border-radius:var(--r-md);font-weight:700;font-size:16px;background:var(--panel-2);color:var(--text);border:1px solid var(--line);transition:transform .12s var(--ease),filter .12s;text-decoration:none;user-select:none}.btn:active{transform:scale(.97)}.btn[disabled]{opacity:.5;pointer-events:none}.btn.primary{background:var(--brand);color:var(--brand-ink);border-color:transparent}.btn.danger{background:var(--red);color:var(--red-ink);border-color:transparent}.btn.ghost{background:transparent;border-color:transparent;color:var(--brand)}.btn.sm{min-height:40px;padding:0 12px;font-size:14px;border-radius:var(--r-sm)}.btn.block{width:100%}.btn svg{flex:none}.icon-btn{width:44px;height:44px;display:inline-grid;place-items:center;border-radius:12px;color:var(--text-2);flex:none}.icon-btn:active{background:var(--panel-2)}.field{display:flex;flex-direction:column;gap:6px}.field>label,.label{font-size:13px;font-weight:650;color:var(--text-2)}.input{width:100%;min-height:50px;padding:0 14px;border-radius:var(--r-md);border:1px solid var(--line);background:var(--panel);color:var(--text);outline:none}.input:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}.input::placeholder{color:var(--text-3)}textarea.input{padding:12px 14px;min-height:50px;resize:none}.hint{font-size:13px;color:var(--text-3)}.error-text{font-size:14px;color:var(--danger-text)}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);padding:16px}.card.tight{padding:12px}.notice{display:flex;gap:10px;padding:12px 14px;border-radius:var(--r-md);background:var(--panel-2);border:1px solid var(--line);font-size:14px;color:var(--text-2)}.notice svg{flex:none;margin-top:2px}.notice.warn{background:var(--yellow-soft);color:var(--text)}.notice.bad{background:var(--red-soft);color:var(--text)}.chip{display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 10px;border-radius:999px;font-size:12px;font-weight:700;background:var(--panel-2);color:var(--text-2);white-space:nowrap}.chip.brand{background:var(--brand-soft);color:var(--brand)}.chip.ok{background:var(--green-soft);color:var(--ok-text)}.chip.warn{background:var(--yellow-soft);color:var(--warn-text)}.chip.bad{background:var(--red-soft);color:var(--danger-text)}.chip .dot{width:8px;height:8px;border-radius:50%;background:currentColor}.seg{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:4px;padding:4px;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-md)}.seg button{min-height:40px;border-radius:10px;font-weight:700;font-size:14px;color:var(--text-2);display:inline-flex;align-items:center;justify-content:center;gap:6px}.seg button[aria-pressed=true]{background:var(--panel-2);color:var(--text);box-shadow:inset 0 0 0 1px var(--line)}.badge{min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:var(--brand);color:var(--brand-ink);font-size:12px;font-weight:800;display:inline-grid;place-items:center}.switch{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:48px;width:100%;text-align:left}.switch i{width:46px;height:28px;border-radius:999px;background:var(--panel-2);border:1px solid var(--line);position:relative;flex:none;transition:background .16s}.switch i:after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:var(--text-3);transition:transform .16s var(--ease),background .16s}.switch[aria-checked=true] i{background:var(--brand);border-color:transparent}.switch[aria-checked=true] i:after{transform:translate(18px);background:var(--brand-ink)}.avatar{width:38px;height:38px;border-radius:50%;display:inline-grid;place-items:center;font-weight:800;font-size:14px;color:#0b1220;flex:none;position:relative}.avatar.sm{width:28px;height:28px;font-size:11px}.avatar .pres{position:absolute;right:-2px;bottom:-2px;width:12px;height:12px;border-radius:50%;border:2px solid var(--panel);background:var(--text-3)}.avatar .pres.on{background:#22c55e}.overlay{position:fixed;inset:0;z-index:60;background:#02061799;display:flex;align-items:flex-end;justify-content:center;animation:fade .16s ease-out}.sheet{width:100%;max-width:560px;max-height:calc(100% - 40px - var(--safe-t));overflow:auto;background:var(--panel);border-radius:22px 22px 0 0;padding:8px 16px calc(18px + var(--safe-b));box-shadow:var(--shadow);animation:up .28s var(--ease);display:flex;flex-direction:column;gap:12px;overscroll-behavior:contain}.sheet.full{height:calc(100% - 20px - var(--safe-t));max-height:none}.sheet-head{display:flex;align-items:center;gap:8px;min-height:48px;position:sticky;top:-8px;background:var(--panel);z-index:2;margin:0 -4px;padding:4px}.sheet-head h2{font-size:18px;font-weight:800;letter-spacing:-.01em;flex:1}@media (min-width: 700px){.overlay{align-items:center}.sheet{border-radius:22px;max-height:86%}}.menu{display:flex;flex-direction:column}.menu button{display:flex;align-items:center;gap:12px;min-height:54px;padding:0 6px;border-radius:12px;font-weight:600;text-align:left}.menu button:active{background:var(--panel-2)}.menu button.bad{color:var(--danger-text)}.menu button svg{color:var(--text-3);flex:none}.menu button.bad svg{color:inherit}.menu hr{border:0;border-top:1px solid var(--line);margin:6px 0;width:100%}.toasts{position:fixed;z-index:90;left:0;right:0;top:calc(10px + var(--safe-t));display:flex;flex-direction:column;align-items:center;gap:8px;pointer-events:none;padding:0 12px}.toast{pointer-events:auto;max-width:480px;background:var(--panel-2);color:var(--text);border:1px solid var(--line);border-radius:14px;padding:12px 14px;box-shadow:var(--shadow);font-size:14px;font-weight:600;animation:down .24s var(--ease);display:flex;gap:10px;align-items:center}.toast.bad{border-color:var(--red)}.toast.ok{border-color:var(--green)}@keyframes fade{0%{opacity:0}}@keyframes up{0%{transform:translateY(24px);opacity:0}}@keyframes down{0%{transform:translateY(-12px);opacity:0}}@keyframes spin{to{transform:rotate(360deg)}}.spinner{width:20px;height:20px;border-radius:50%;border:3px solid var(--line);border-top-color:var(--brand);animation:spin .8s linear infinite;flex:none}.center-screen{min-height:100%;display:grid;place-items:center;padding:24px;text-align:center}.center-screen .col{align-items:center;max-width:380px;gap:14px}.map{position:relative;width:100%;height:100%;background:var(--panel-2);overflow:hidden}.map>.map-el{position:absolute;inset:0}.map-msg{position:absolute;inset:0;display:grid;place-items:center;color:var(--text-3);font-size:14px;padding:16px;text-align:center;pointer-events:none}.maplibregl-ctrl-attrib{font-size:10px!important}.pin{width:28px;height:28px;border-radius:50% 50% 50% 4px;transform:rotate(-45deg);background:var(--text);display:grid;place-items:center;box-shadow:0 2px 8px #00000080;border:2px solid #0b1220}.pin>span{transform:rotate(45deg);font-size:12px;font-weight:850;color:#0b1220}.pin.dest{background:#facc15}.pin.origin{background:#38bdf8}.rider{width:34px;height:34px;position:relative;cursor:pointer}.rider .dot{position:absolute;inset:3px;border-radius:50%;display:grid;place-items:center;font-size:12px;font-weight:850;color:#0b1220;border:2.5px solid #0b1220;box-shadow:0 2px 8px #00000080}.rider .arrow{position:absolute;left:50%;top:-7px;margin-left:-6px;border:6px solid transparent;border-bottom:9px solid var(--c);border-top:0;transform-origin:6px 24px}.rider.stale .dot{background:#64748b!important;opacity:.8}.rider.stale .arrow{display:none}.rider.sel .dot{box-shadow:0 0 0 4px #fff,0 2px 8px #00000080}.rider.sos:after{content:"";position:absolute;inset:-6px;border-radius:50%;border:3px solid #dc2626;animation:sos 1.2s ease-out infinite}@keyframes sos{0%{transform:scale(.7);opacity:1}to{transform:scale(1.5);opacity:0}}.ride-map .maplibregl-ctrl-bottom-left{bottom:calc(184px + var(--safe-b))}.puck{width:46px;height:46px;filter:drop-shadow(0 3px 8px rgba(0,0,0,.55))}.stops{display:flex;flex-direction:column;gap:8px}.stop{display:flex;align-items:flex-start;gap:8px}.stop-mark{width:26px;height:50px;display:grid;place-items:center;flex:none;font-size:12px;font-weight:850;color:var(--text-3)}.stop-mark b{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;background:var(--panel-2);border:1px solid var(--line);color:var(--text)}.place{position:relative;flex:1;min-width:0}.place-list{position:absolute;z-index:20;left:0;right:0;top:calc(100% + 4px);background:var(--panel);border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--shadow);overflow:hidden;max-height:280px;overflow-y:auto}.place-list button{display:flex;flex-direction:column;width:100%;text-align:left;padding:10px 14px;gap:1px;min-height:48px;justify-content:center}.place-list button+button{border-top:1px solid var(--line)}.place-list button:active,.place-list button:hover{background:var(--panel-2)}.place-list .tool{flex-direction:row;align-items:center;gap:10px;color:var(--brand);font-weight:650}.route-map{height:240px;border-radius:var(--r-lg);overflow:hidden;border:1px solid var(--line)}.route-facts{display:flex;gap:18px;flex-wrap:wrap}.fact b{display:block;font-size:22px;font-weight:800;letter-spacing:-.02em}.fact span{font-size:12px;color:var(--text-3);font-weight:600}.pick-bar{position:absolute;left:10px;right:10px;bottom:10px;z-index:5;display:flex;gap:8px;align-items:center;background:var(--panel-glass);backdrop-filter:blur(10px);border:1px solid var(--line);border-radius:14px;padding:8px 8px 8px 14px;font-size:14px;font-weight:600}.lobby{height:100%;display:flex;flex-direction:column;max-width:1180px;margin:0 auto}.lobby-head{padding:calc(10px + var(--safe-t)) 12px 10px;display:flex;align-items:center;gap:6px}.lobby-head h1{font-size:20px;font-weight:800;letter-spacing:-.02em}.lobby-body{flex:1;min-height:0;display:flex;flex-direction:column;gap:10px;padding:0 12px}.lobby-map{height:30vh;min-height:170px;max-height:300px;border-radius:var(--r-lg);overflow:hidden;border:1px solid var(--line);position:relative;flex:none}.lobby-map .facts{position:absolute;left:8px;top:8px;display:flex;gap:6px;flex-wrap:wrap;z-index:3}.lobby-map .facts .chip{background:var(--panel-glass);backdrop-filter:blur(8px);color:var(--text);height:30px;font-size:13px}.lobby-map .tools{position:absolute;right:8px;top:8px;z-index:3;display:flex;gap:6px}.lobby-map .tools .btn{background:var(--panel-glass);backdrop-filter:blur(8px)}.lobby-panes{flex:1;min-height:0;display:flex;flex-direction:column;gap:10px}.pane{flex:1;min-height:0;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);display:flex;flex-direction:column;overflow:hidden}.pane-head{padding:12px 14px 8px;display:flex;align-items:center;gap:8px;font-weight:800;font-size:15px}.pane-scroll{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain}.lobby-foot{padding:10px 12px calc(12px + var(--safe-b));display:flex;gap:10px}.lobby-foot .btn{flex:1}.banner{margin:0 12px 8px}@media (max-width: 899px){.lobby-panes>.pane[hidden]{display:none}}@media (min-width: 900px){.lobby-body{flex-direction:row;gap:14px}.lobby-left{flex:1.2;display:flex;flex-direction:column;gap:12px;min-width:0}.lobby-map{height:auto;flex:1.1;max-height:none}.lobby-panes,.lobby-left .pane{flex:1}.only-mobile{display:none!important}.lobby-panes>.pane[hidden]{display:flex}}@media (max-width: 899px){.lobby-left{display:contents}.only-desktop{display:none!important}}.member{display:flex;align-items:center;gap:12px;padding:9px 14px;min-height:58px;width:100%;text-align:left}.member+.member{border-top:1px solid var(--line)}.member .name{font-weight:700;display:flex;gap:6px;align-items:center;min-width:0}.member .sub{font-size:12.5px;color:var(--text-3)}.tag{font-size:10.5px;font-weight:800;padding:2px 6px;border-radius:6px;background:var(--panel-2);color:var(--text-2);letter-spacing:.02em;flex:none;text-transform:uppercase}.tag.brand{background:var(--brand-soft);color:var(--brand)}.tag.demo{background:var(--yellow-soft);color:var(--warn-text)}.chat{display:flex;flex-direction:column;min-height:0;flex:1}.chat-list{flex:1;min-height:0;overflow-y:auto;padding:10px 12px;display:flex;flex-direction:column;gap:6px;overscroll-behavior:contain}.msg{max-width:84%;padding:8px 12px;border-radius:16px;background:var(--panel-2);align-self:flex-start;white-space:pre-wrap;overflow-wrap:anywhere;font-size:15px}.msg .who{font-size:12px;font-weight:800;margin-bottom:1px}.msg .meta{font-size:11px;color:var(--text-3);margin-left:8px;float:right;margin-top:4px}.msg.mine{align-self:flex-end;background:var(--brand);color:var(--brand-ink)}.msg.mine .meta{color:inherit;opacity:.75}.msg.pending{opacity:.6}.msg.failed{background:var(--red-soft);color:var(--text)}.sys{align-self:center;font-size:12.5px;color:var(--text-3);padding:3px 10px;text-align:center;display:flex;gap:6px;align-items:center}.sys i{width:8px;height:8px;border-radius:50%;flex:none}.chat-form{display:flex;gap:8px;padding:8px 10px 10px;border-top:1px solid var(--line);align-items:flex-end}.chat-form .input{min-height:46px;max-height:110px;border-radius:23px;padding:11px 16px}.chat-form .send{width:46px;height:46px;border-radius:50%;background:var(--brand);color:var(--brand-ink);display:grid;place-items:center;flex:none}.chat-form .send[disabled]{opacity:.4}.quick{display:flex;gap:6px;overflow-x:auto;padding:8px 10px 0;scrollbar-width:none}.quick button{flex:none;height:40px;padding:0 14px;border-radius:999px;background:var(--panel-2);border:1px solid var(--line);font-size:14px;font-weight:600}.empty{padding:28px 16px;text-align:center;color:var(--text-3);font-size:14px}.qr{background:#fff;padding:12px;border-radius:16px;align-self:center;line-height:0}.qr svg{width:190px;height:190px;display:block}.link-box{display:flex;align-items:center;gap:8px;padding:6px 6px 6px 14px;border-radius:var(--r-md);background:var(--panel-2);border:1px solid var(--line);font-size:13px}.ride{position:fixed;inset:0;background:var(--bg);overflow:hidden}.ride-map{position:absolute;inset:0}.ride-top{position:absolute;z-index:10;top:0;left:0;right:0;padding:calc(8px + var(--safe-t)) 8px 0;display:flex;flex-direction:column;gap:8px;pointer-events:none}.ride-top>*{pointer-events:auto}.maneuver{display:flex;align-items:center;gap:12px;padding:10px 14px;border-radius:18px;background:#0f172a;color:#f8fafc;box-shadow:var(--shadow);min-height:76px;border:1px solid rgba(148,163,184,.25)}.maneuver .ico{width:52px;height:52px;border-radius:14px;background:#38bdf8;color:#04263a;display:grid;place-items:center;flex:none}.maneuver .dist{font-size:30px;font-weight:850;letter-spacing:-.03em;line-height:1}.maneuver .txt{font-size:15px;font-weight:600;color:#cbd5e1;line-height:1.25;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.maneuver.plain .ico{background:#1e293b;color:#cbd5e1}.maneuver.plain .txt{color:#f8fafc;font-size:16px}.ride-sub{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}.ride-chips{display:flex;flex-direction:column;gap:6px;align-items:flex-start}.ride-chips .chip{background:var(--panel-glass);backdrop-filter:blur(8px);color:var(--text);height:28px;box-shadow:0 2px 8px #00000040}.ride-chips .chip.bad{background:#7f1d1d;color:#fff}.ride-chips .chip.warn{background:#713f12;color:#fff}.ride-chips button.chip{cursor:pointer}.minimap{width:132px;height:148px;border-radius:16px;background:#080d1ad6;border:1px solid rgba(148,163,184,.35);box-shadow:var(--shadow);position:relative;overflow:hidden;flex:none;backdrop-filter:blur(6px);display:block}.minimap svg{width:100%;height:100%;display:block}.minimap .cap{position:absolute;left:0;right:0;bottom:0;padding:3px 8px 4px;font-size:10.5px;font-weight:700;color:#cbd5e1;display:flex;justify-content:space-between;background:linear-gradient(transparent,#080d1ae6)}.minimap .out{position:absolute;top:5px;left:5px;font-size:10px;font-weight:800;background:#facc15;color:#221900;padding:1px 6px;border-radius:999px}.ride-bottom{position:absolute;z-index:12;left:0;right:0;bottom:0;padding:0 8px calc(8px + var(--safe-b));display:flex;flex-direction:column;gap:8px;pointer-events:none}.ride-bottom>*{pointer-events:auto}.ride-info{display:flex;align-items:flex-end;gap:8px;pointer-events:none}.ride-info>*{pointer-events:auto}.speed{width:84px;height:84px;border-radius:50%;background:#0f172a;color:#f8fafc;border:3px solid #f8fafc;display:flex;flex-direction:column;align-items:center;justify-content:center;box-shadow:var(--shadow);flex:none}.speed b{font-size:32px;font-weight:850;line-height:1;letter-spacing:-.03em}.speed span{font-size:11px;font-weight:700;color:#94a3b8}.speed.nodata b{font-size:22px;color:#94a3b8}.eta{flex:1;min-width:0;background:var(--panel-glass);backdrop-filter:blur(10px);border:1px solid var(--line);border-radius:16px;padding:8px 12px;box-shadow:var(--shadow);min-height:56px;display:flex;flex-direction:column;justify-content:center}.eta b{font-size:20px;font-weight:850;letter-spacing:-.02em;line-height:1.1}.eta span{font-size:12.5px;color:var(--text-2);font-weight:600}.ride-tools{display:flex;flex-direction:column;gap:8px;flex:none}.fab{width:52px;height:52px;border-radius:16px;background:var(--panel-glass);backdrop-filter:blur(10px);border:1px solid var(--line);display:grid;place-items:center;color:var(--text);box-shadow:var(--shadow);position:relative}.fab:active{transform:scale(.95)}.fab.on{background:var(--brand);color:var(--brand-ink);border-color:transparent}.fab .badge{position:absolute;top:-6px;right:-6px;background:var(--red);color:#fff}.signals{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.sig{min-height:72px;border-radius:18px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;font-weight:850;font-size:13px;letter-spacing:.02em;box-shadow:var(--shadow);border:2px solid rgba(0,0,0,.18);transition:transform .1s var(--ease),filter .1s;user-select:none;-webkit-user-select:none}.sig:active{transform:scale(.95);filter:brightness(1.15)}.sig.red{background:var(--red);color:var(--red-ink)}.sig.yellow{background:var(--yellow);color:var(--yellow-ink)}.sig.green{background:var(--green);color:var(--green-ink)}.sig[aria-disabled=true]{filter:grayscale(.85) brightness(.7)}.sig.sent{outline:4px solid #fff;outline-offset:-4px}.alerts{display:flex;flex-direction:column;gap:6px}.alert{border-radius:16px;padding:10px 12px;display:flex;gap:10px;align-items:center;box-shadow:var(--shadow);animation:up .24s var(--ease);border:2px solid transparent}.alert.red{background:#7f1d1d;color:#fff;border-color:#f87171}.alert.yellow{background:#facc15;color:#221900}.alert.green{background:#16a34a;color:#03210e}.alert.self{background:var(--panel-glass);color:var(--text);border-color:var(--line);backdrop-filter:blur(10px)}.alert .t{font-weight:850;font-size:15px;line-height:1.2}.alert .d{font-size:13px;font-weight:600;opacity:.92;line-height:1.25}.alert .acts{display:flex;gap:6px;flex:none}.alert .acts button{min-height:44px;padding:0 12px;border-radius:12px;font-weight:800;font-size:13px;background:#ffffffeb;color:#0b1220}.alert .acts button.alt{background:#00000047;color:inherit}.mcard{background:var(--panel);border:1px solid var(--line);border-radius:20px;padding:12px 14px;box-shadow:var(--shadow);animation:up .24s var(--ease);display:flex;flex-direction:column;gap:10px;max-height:58vh;overflow-y:auto}.mcard-head{display:flex;align-items:center;gap:10px}.mcard-head .big{font-size:30px;font-weight:850;letter-spacing:-.03em;line-height:1;text-align:right}.mcard-head .big small{font-size:12px;font-weight:700;color:var(--text-3);letter-spacing:0;display:block;margin-top:2px}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.stat{background:var(--panel-2);border-radius:12px;padding:8px 10px;min-width:0}.stat b{display:block;font-size:17px;font-weight:800;letter-spacing:-.01em;white-space:nowrap}.stat span{font-size:11px;color:var(--text-3);font-weight:650;line-height:1.2;display:block}.progress{height:8px;border-radius:999px;background:var(--panel-2);overflow:hidden}.progress i{display:block;height:100%;border-radius:999px;background:var(--brand)}.gate{position:absolute;inset:0;z-index:30;background:#020617b8;backdrop-filter:blur(4px);display:grid;place-items:center;padding:16px;overflow:auto}.gate .card{max-width:440px;display:flex;flex-direction:column;gap:12px}.gate h2{font-size:22px;font-weight:850;letter-spacing:-.02em}@media (orientation: landscape) and (max-height: 520px){.ride-top{right:auto;width:min(54vw,460px)}.ride-sub{flex-direction:row}.minimap{position:fixed;top:calc(8px + var(--safe-t));right:8px;width:150px;height:126px}.ride-bottom{left:auto;width:min(52vw,420px)}.ride-info{position:fixed;left:8px;bottom:calc(8px + var(--safe-b));width:min(44vw,380px)}.sig,.maneuver{min-height:64px}.mcard{position:fixed;left:8px;bottom:calc(104px + var(--safe-b));width:min(46vw,420px);max-height:calc(100% - 200px);z-index:13}.ride-map .maplibregl-ctrl-bottom-left{bottom:calc(100px + var(--safe-b))}}.summary-map{height:220px;border-radius:var(--r-lg);overflow:hidden;border:1px solid var(--line)}.sum-row{display:grid;grid-template-columns:1fr auto;gap:4px 12px;padding:12px 0}.sum-row+.sum-row{border-top:1px solid var(--line)}.sum-row .nums{grid-column:1 / -1;display:flex;gap:14px;flex-wrap:wrap;font-size:13px;color:var(--text-2)}.sum-row .nums b{color:var(--text);font-weight:750}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}.admin{max-width:1120px;margin:0 auto;padding:calc(14px + var(--safe-t)) 16px calc(40px + var(--safe-b));display:flex;flex-direction:column;gap:16px}.admin-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.admin-head h1{font-size:22px;font-weight:850;letter-spacing:-.02em;flex:1;display:flex;align-items:center;gap:10px}.admin-head h1 img{width:32px;height:32px;border-radius:9px}.admin-tabs{display:flex;gap:4px;overflow-x:auto;border-bottom:1px solid var(--line);scrollbar-width:none}.admin-tabs button{padding:10px 14px;font-weight:700;font-size:15px;color:var(--text-3);border-bottom:3px solid transparent;white-space:nowrap;min-height:44px}.admin-tabs button[aria-selected=true]{color:var(--text);border-bottom-color:var(--brand)}.admin h2{font-size:16px;font-weight:800;letter-spacing:-.01em}.admin section{display:flex;flex-direction:column;gap:10px}.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}.tile{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-md);padding:12px 14px;min-width:0}.tile span{font-size:12.5px;font-weight:650;color:var(--text-2);display:block;line-height:1.25}.tile b{font-size:30px;font-weight:850;letter-spacing:-.03em;display:block;line-height:1.15;margin-top:4px}.tile small{font-size:12px;color:var(--text-3)}.chart-bar{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.chart-bar select{min-height:40px;border-radius:var(--r-sm);border:1px solid var(--line);background:var(--panel);padding:0 10px;font-weight:650;max-width:100%}.plot{position:relative;height:200px;margin:6px 0 0 34px}.plot .grid{position:absolute;left:0;right:0;border-top:1px solid var(--line)}.plot .grid span{position:absolute;right:calc(100% + 6px);top:-8px;font-size:11px;color:var(--text-3);font-variant-numeric:tabular-nums}.plot .bars{position:absolute;inset:0;display:flex;align-items:flex-end;gap:2px;border-bottom:1px solid var(--text-3)}.plot .col{flex:1;height:100%;display:flex;align-items:flex-end;position:relative;min-width:0}.plot .col i{display:block;width:100%;background:var(--brand);border-radius:4px 4px 0 0}.plot .col:hover i,.plot .col:focus-visible i{filter:brightness(1.25)}.plot .col:hover{background:var(--brand-soft)}.plot .tip{position:absolute;bottom:calc(100% + 6px);transform:translate(-50%);background:var(--panel-2);border:1px solid var(--line);border-radius:10px;padding:6px 10px;font-size:12.5px;white-space:nowrap;box-shadow:var(--shadow);pointer-events:none;z-index:5}.plot .tip b{font-size:15px}.plot-x{display:flex;justify-content:space-between;margin-left:34px;font-size:11px;color:var(--text-3);padding-top:4px}.tbl-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r-md);background:var(--panel)}table.tbl{width:100%;border-collapse:collapse;font-size:14px}.tbl th{text-align:left;font-size:12px;font-weight:700;color:var(--text-3);padding:10px 12px;border-bottom:1px solid var(--line);white-space:nowrap}.tbl td{padding:10px 12px;border-bottom:1px solid var(--line);vertical-align:middle}.tbl tr:last-child td{border-bottom:0}.tbl td.n,.tbl th.n{text-align:right;font-variant-numeric:tabular-nums}.set-row{display:grid;grid-template-columns:1fr minmax(160px,280px);gap:6px 16px;align-items:center;padding:12px 0}.set-row+.set-row{border-top:1px solid var(--line)}.set-row .input{min-height:44px}@media (max-width: 640px){.set-row{grid-template-columns:1fr}}.login{max-width:400px;margin:0 auto;padding-top:8vh}
