:root{--bg:#0b1525;--panel:#111f36;--panel2:#182a47;--line:#26395a;--fg:#e9eff8;--muted:#8fa2c0;--dim:#5d7193;--signal:#f4c430;--sign:#2463c7;--sign-fg:#fff;--good:#40c98a;--warn:#ff9f43;--bad:#ff5f5f;--sea:#08142a;--land:#1a2f50;--foreign:#111e33;--grid:#223a60;--border:#d98ba3;--bld-top:#e3ebf6;--bld-l:#9fb1cc;--bld-r:#6b7fa1;--bld-ind:#c9b98f;--lit:#ffd66b;--road-l:#4a6286;--f-display:"Barlow Condensed","Arial Narrow",Arial,sans-serif;--f-body:"IBM Plex Sans",system-ui,-apple-system,"Segoe UI",sans-serif;--f-mono:"IBM Plex Mono",ui-monospace,Consolas,monospace;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}html,body{height:100%}[hidden]{display:none!important}body{background:var(--bg);color:var(--fg);font-family:var(--f-body);margin:0;font-size:14px;line-height:1.45}*{box-sizing:border-box}button,select,input{font:inherit;color:inherit}button{cursor:pointer}:focus-visible{outline:2px solid var(--signal);outline-offset:2px}.num{font-family:var(--f-mono);font-variant-numeric:tabular-nums}.app{height:100%;padding-block:10px;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));flex-direction:column;gap:10px;display:flex}.top{flex-wrap:wrap;align-items:center;gap:10px 18px;display:flex}.brand{align-items:center;gap:10px;min-width:0;margin-right:auto;display:flex}.brand .mark{background:var(--sign);border-radius:4px;flex:none;place-items:center;width:34px;height:34px;display:grid}.brand h1{font-family:var(--f-display);letter-spacing:.04em;text-transform:uppercase;margin:0;font-size:26px;font-weight:700;line-height:1}.brand small{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;max-width:240px;font-size:12px;display:block;overflow:hidden}.stat{flex-direction:column;line-height:1.15;display:flex}.stat .l{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-size:10.5px}.stat .v{font-family:var(--f-mono);font-variant-numeric:tabular-nums;font-size:15px;font-weight:500}.stat .v.neg{color:var(--bad)}.speed{border:1px solid var(--line);border-radius:6px;display:flex;overflow:hidden}.speed button{font-family:var(--f-mono);color:var(--muted);background:0 0;border:0;padding:6px 11px;font-size:13px}.speed button+button{border-left:1px solid var(--line)}.speed button.on{background:var(--signal);color:#1a1400;font-weight:500}.main{flex:1;grid-template-columns:minmax(0,1fr) 430px;gap:12px;min-height:0;display:grid}.mapwrap{border:1px solid var(--line);background:var(--sea);border-radius:8px;min-height:0;position:relative;overflow:hidden}#map{touch-action:manipulation;width:100%;height:100%;display:block;position:absolute;inset:0}.legend{color:var(--muted);background:color-mix(in srgb,var(--bg) 78%,transparent);border-radius:6px;flex-wrap:wrap;gap:4px 12px;max-width:calc(100% - 20px);padding:6px 10px;font-size:11.5px;display:flex;position:absolute;top:10px;left:10px}.legend i{vertical-align:-1px;border-radius:50%;width:9px;height:9px;margin-right:5px;display:inline-block}.ticker{pointer-events:none;flex-direction:column;gap:3px;display:flex;position:absolute;bottom:10px;left:10px;right:10px}.ticker div{background:color-mix(in srgb,var(--bg) 82%,transparent);max-width:100%;color:var(--muted);white-space:nowrap;text-overflow:ellipsis;border-radius:4px;align-self:flex-start;padding:3px 9px;font-size:12px;overflow:hidden}.ticker div b{color:var(--fg);font-weight:500}.ticker .good b{color:var(--good)}.ticker .bad b{color:var(--bad)}.ticker .warn b{color:var(--warn)}.paused{font-family:var(--f-display);letter-spacing:.12em;background:var(--signal);color:#1a1400;border-radius:4px;padding:3px 10px;font-size:15px;font-weight:700;position:absolute;top:10px;right:10px}.panel{background:var(--panel);border:1px solid var(--line);border-radius:8px;flex-direction:column;min-height:0;display:flex;overflow:hidden}.tabs{border-bottom:1px solid var(--line);scrollbar-width:none;flex:none;display:flex;overflow-x:auto}.tabs button{font-family:var(--f-display);letter-spacing:.02em;text-transform:uppercase;color:var(--muted);background:0 0;border:0;border-bottom:2px solid #0000;flex:1 0 auto;padding:10px 5px 8px;font-size:13.5px;font-weight:600}.tabs button.on{color:var(--fg);border-bottom-color:var(--signal)}.tabs .cnt{font-family:var(--f-mono);background:var(--panel2);color:var(--fg);border-radius:9px;margin-left:4px;padding:0 6px;font-size:11px}.pbody{flex-direction:column;flex:1;gap:12px;min-height:0;padding:12px;display:flex;overflow:auto}h2{font-family:var(--f-display);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);text-wrap:balance;margin:4px 0 0;font-size:13px;font-weight:600}.card{background:var(--panel2);border:1px solid var(--line);border-radius:6px;flex-direction:column;gap:7px;padding:10px 12px;display:flex}.card.sel{border-color:var(--signal)}.row{flex-wrap:wrap;align-items:center;gap:8px;min-width:0;display:flex}.row.sp{justify-content:space-between}.title{font-size:14.5px;font-weight:600}.route{font-family:var(--f-display);letter-spacing:.02em;font-size:18px;font-weight:600}.route .arr{color:var(--signal);margin:0 4px}.meta{color:var(--muted);flex-wrap:wrap;gap:2px 12px;font-size:12.5px;display:flex}.meta b{color:var(--fg);font-weight:500;font-family:var(--f-mono);font-variant-numeric:tabular-nums}.pay{font-family:var(--f-mono);font-variant-numeric:tabular-nums;color:var(--good);font-size:16px;font-weight:500}.chip{letter-spacing:.05em;text-transform:uppercase;border:1px solid var(--line);color:var(--muted);border-radius:3px;padding:1px 7px;font-size:11px;font-weight:600}.chip.cool{color:#7fd3ff;border-color:#2e6a8f}.chip.liquid{color:#ffb86b;border-color:#8a5a2a}.chip.express{color:var(--signal);border-color:#8a7420}.chip.ok{color:var(--good);border-color:#2a6b4e}.chip.bad{color:var(--bad);border-color:#7a3333}.chip.warn{color:var(--warn);border-color:#7a5326}.btn{border:1px solid var(--line);background:0 0;border-radius:5px;padding:5px 11px;font-size:13px;font-weight:500}.btn:hover{border-color:var(--muted)}.btn.pri{background:var(--signal);border-color:var(--signal);color:#1a1400}.btn.pri:hover{filter:brightness(1.07)}.btn.danger{color:var(--bad);border-color:#6b3030}.btn.confirm{background:var(--bad);border-color:var(--bad);color:#fff}.btn:disabled{opacity:.45;cursor:not-allowed}select.inp,input.inp{background:var(--bg);border:1px solid var(--line);border-radius:5px;min-width:0;padding:5px 8px;font-size:13px}.bar{background:var(--bg);border-radius:3px;flex:1;min-width:60px;height:6px;overflow:hidden}.bar i{border-radius:3px;height:100%;display:block}.picker{border-top:1px dashed var(--line);flex-direction:column;gap:5px;padding-top:8px;display:flex}.pick{background:var(--bg);border:1px solid var(--line);text-align:left;border-radius:5px;justify-content:space-between;align-items:center;gap:8px;width:100%;padding:6px 9px;display:flex}.pick:hover{border-color:var(--signal)}.pick .eta{font-family:var(--f-mono);font-size:12.5px}.empty{color:var(--muted);padding:6px 2px;font-size:13px}.hint{background:color-mix(in srgb,var(--sign) 22%,var(--panel2));border:1px solid var(--sign);border-radius:6px;flex-direction:column;gap:6px;padding:10px 12px;font-size:13px;display:flex}.hint p{margin:0}.filter{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.stars{color:var(--signal);letter-spacing:1px;font-size:12px}.stars span{color:var(--dim)}table.pl{border-collapse:collapse;width:100%;font-size:13px}table.pl td{border-bottom:1px solid var(--line);padding:4px 0}table.pl td:last-child{text-align:right;font-family:var(--f-mono);font-variant-numeric:tabular-nums}table.pl tr.sum td{border-bottom:0;font-weight:600}.chart{align-items:flex-end;gap:10px;height:120px;padding-top:6px;display:flex}.chart .m{flex-direction:column;flex:1;align-items:center;gap:4px;min-width:0;height:100%;display:flex}.chart .bars{flex:1;justify-content:center;align-items:flex-end;gap:3px;width:100%;display:flex}.chart .bars i{border-radius:2px 2px 0 0;width:42%;max-width:16px;min-height:1px}.chart .lab{color:var(--muted);font-size:11px}.chart .pr{font-family:var(--f-mono);font-size:10.5px}.models{grid-template-columns:1fr 1fr;gap:8px;display:grid}.model{background:var(--bg);border:1px solid var(--line);border-radius:6px;flex-direction:column;gap:4px;min-width:0;padding:9px;display:flex}.model .n{font-family:var(--f-display);font-size:16px;font-weight:600}.logl{color:var(--muted);flex-direction:column;gap:3px;font-size:12.5px;display:flex}.logl .t{font-family:var(--f-mono);color:var(--dim);margin-right:6px;font-size:11.5px}.logl .good{color:var(--good)}.logl .bad{color:var(--bad)}.logl .warn{color:var(--warn)}.over{background:color-mix(in srgb,var(--bg) 80%,transparent);z-index:20;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.over .box{background:var(--panel);border:1px solid var(--line);border-radius:10px;flex-direction:column;gap:12px;max-width:420px;padding:22px;display:flex}.over h3{font-family:var(--f-display);letter-spacing:.04em;text-transform:uppercase;color:var(--bad);margin:0;font-size:30px}@media (width<=900px){html,body,.app{height:auto}.main{grid-template-columns:minmax(0,1fr)}.mapwrap{height:56vh;min-height:320px}.pbody{overflow:visible}.brand small{max-width:160px}}@media (width<=440px){.models{grid-template-columns:1fr}.stat .v{font-size:13.5px}}@media (prefers-reduced-motion:reduce){*{transition:none!important}}.meta .sw{width:8px;height:8px;margin-right:4px;display:inline-block}.card.con{border-left:3px solid var(--good)}.chip .sw{vertical-align:0;border-radius:50%;width:7px;height:7px;margin-right:5px;display:inline-block}table.rank td{text-align:left;padding-right:8px}table.rank td:last-child{padding-right:0}table.rank td .sw{border-radius:50%;width:8px;height:8px;margin-right:6px;display:inline-block}table.rank tr:first-child td{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;font-size:11px}table.rank tr.me td{color:var(--signal);font-weight:600}.menu{z-index:30;background:color-mix(in srgb,var(--bg) 62%,transparent);place-items:start center;padding-top:max(16px,6vh);overflow:auto}.menu-box{width:min(460px,100%);max-width:none}.menu-head{align-items:center;gap:12px;display:flex}.menu-head .mark{background:var(--sign);border-radius:5px;flex:none;place-items:center;width:44px;height:44px;display:grid}.menu-head h3{font-family:var(--f-display);letter-spacing:.04em;text-transform:uppercase;color:var(--fg);margin:0;font-size:30px;font-weight:700;line-height:1}.menu-head p{color:var(--muted);margin:2px 0 0;font-size:13px}.menu-btns{flex-direction:column;gap:8px;display:flex}.menu-btn{text-align:left;background:var(--panel2);border:1px solid var(--line);border-radius:6px;flex-direction:column;align-items:flex-start;gap:2px;padding:12px 14px;display:flex}.menu-btn b{font-family:var(--f-display);letter-spacing:.04em;text-transform:uppercase;font-size:20px;font-weight:600}.menu-btn span{color:var(--muted);font-size:12.5px}.menu-btn:hover:not(:disabled){border-color:var(--signal)}.menu-btn.pri{background:var(--signal);border-color:var(--signal);color:#1a1400}.menu-btn.pri span{color:#4a3c00}.menu-btn:disabled{opacity:.45;cursor:not-allowed}.menu-cities{grid-template-columns:1fr 1fr;gap:5px;display:grid}.menu-cities .pick{padding:5px 9px}.menu-cities .pick.on{border-color:var(--signal);color:var(--signal)}.menu-cities .eta{letter-spacing:1px;color:var(--dim);font-size:8px}.menu-cities .pick.on .eta{color:var(--signal)}.menu-seg{grid-template-columns:repeat(8,1fr);gap:4px;display:grid}.menu-seg .pick{font-family:var(--f-mono);justify-content:center;padding:5px 0}.menu-seg .pick.on{border-color:var(--signal);color:var(--signal)}.menu-form .check{align-items:center;gap:6px;display:flex}.menubtn{border:1px solid var(--line);font-family:var(--f-display);letter-spacing:.05em;text-transform:uppercase;color:var(--muted);background:0 0;border-radius:6px;padding:6px 11px;font-size:14px;font-weight:600}.menubtn:hover{color:var(--fg);border-color:var(--muted)}.err{background:color-mix(in srgb,var(--bad) 18%,var(--panel2));border:1px solid var(--bad);border-radius:6px;padding:8px 12px;font-size:13px}.warnmsg{background:color-mix(in srgb,var(--warn) 16%,var(--panel2));border:1px solid var(--warn);border-radius:6px;padding:8px 12px;font-size:13px}.okmsg{background:color-mix(in srgb,var(--good) 16%,var(--panel2));border:1px solid var(--good);border-radius:6px;padding:8px 12px;font-size:13px}.slotrow{cursor:default;align-items:center}.slotrow:hover{border-color:var(--line)}.slotrow .meta{display:inline}.menu-form{flex-direction:column;gap:6px;display:flex}.menu-form .inp{padding:8px 10px;font-size:14px}.menu-form .row.sp{margin-top:6px}
