@font-face{font-family:DSEG7;src:url(../fonts/DSEG7Classic-Bold.woff2) format("woff2");font-weight:700;font-display:swap}:root{--lcd: #9ed91a;--lcd-ink: #14210a;--frame: #15171a;--key: #23262a;--key-ink: #cfd2d6;--go: #c62828;--hw: #1565c0;--night: #37306b;--bg: #0c0d0f}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;background:var(--bg);color:#e8eaed;font-family:-apple-system,Segoe UI,Microsoft JhengHei,system-ui,sans-serif;-webkit-user-select:none;user-select:none}.seg{font-family:DSEG7,ui-monospace,SFMono-Regular,monospace;font-weight:700;letter-spacing:1px}#app{max-width:480px;margin:0 auto;padding:max(10px,env(safe-area-inset-top)) 12px calc(14px + env(safe-area-inset-bottom))}.topbar{display:flex;align-items:center;justify-content:space-between;padding:4px 2px 10px}.brand{font-size:14px;font-weight:600;color:#cdd2d8;display:flex;align-items:center;gap:7px}.brand-dot{width:9px;height:9px;border-radius:50%;background:var(--lcd)}.topbar-right{display:flex;align-items:center;gap:10px}.ver{font-size:11px;color:#6b7077;font-variant-numeric:tabular-nums}.icon-btn{background:none;border:none;color:#9aa0a6;font-size:18px;cursor:pointer;padding:4px}.layout-toggle{display:flex;gap:8px;margin-bottom:12px}.layout-toggle button{flex:1;background:#1a1c1f;color:#9aa0a6;border:.5px solid #2c2f33;border-radius:9px;padding:9px;font-size:13px;cursor:pointer}.layout-toggle button.on{background:#243042;color:#cfe0ff;border-color:var(--hw)}.device{background:var(--frame);border-radius:20px;padding:13px;border:.5px solid #2c2f33}.device--landscape{border-radius:16px;padding:11px}.grille{display:flex;justify-content:center;gap:4px;margin-bottom:9px}.grille i{width:5px;height:5px;border-radius:50%;background:#2b2f33}.grille i.bar{width:34px;border-radius:3px}.lcd{background:var(--lcd);color:var(--lcd-ink);border-radius:9px;padding:12px 14px;overflow:hidden}.lcd-top{display:flex;justify-content:space-between;align-items:center;font-size:11px;opacity:.82;margin-bottom:4px}.status{font-weight:600;background:var(--lcd-ink);color:var(--lcd);padding:2px 8px;border-radius:5px;opacity:1;white-space:nowrap}.clock{font-variant-numeric:tabular-nums}.lcd-main{display:flex;align-items:baseline;justify-content:flex-end;gap:6px;margin:2px 0}.lbl{font-size:10px;opacity:.7}.fare-label{margin-right:auto;align-self:flex-start;font-size:12px;opacity:.75}.fare-wrap{position:relative;display:inline-block;font-size:68px;line-height:.92}.ghost{position:absolute;right:0;top:0;font-size:1em;color:var(--lcd-ink);opacity:.1;pointer-events:none}.fare{position:relative;font-size:1em}.unit{font-size:16px}.lcd-sub{display:flex;justify-content:space-between;align-items:baseline;margin-top:6px;border-top:1px dashed rgba(20,33,10,.25);padding-top:6px}.dist .seg{font-size:18px}.toll .seg{font-size:26px;font-weight:700}.gps{font-size:10px;display:inline-flex;align-items:center;gap:4px;color:var(--lcd-ink);white-space:nowrap}.gps .bars{display:inline-flex;align-items:flex-end;gap:2px;height:11px}.gps .bars i{width:3px;border-radius:1px;background:#14210a38}.gps .bars i:nth-child(1){height:4px}.gps .bars i:nth-child(2){height:7px}.gps .bars i:nth-child(3){height:11px}.gps.good .bars i.lit{background:#1f7a1f}.gps.weak .bars i.lit{background:#b8860b}.gps.lost .bars i.lit{background:#a32d2d}.gps.searching .v-gpstxt{animation:gpsblink 1s infinite}@keyframes gpsblink{0%,to{opacity:.35}50%{opacity:1}}.lcd-gpsline{display:flex;align-items:center;gap:8px;margin-top:7px}.lamps{display:flex;gap:6px;margin-top:7px;align-items:center}.lcd-gpsline .lamps{margin-top:0;flex:1}.run-dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--lcd-ink);margin-right:5px;vertical-align:middle;opacity:0}body.metering .run-dot{animation:blink 1s infinite}@keyframes blink{0%,49%{opacity:1}50%,to{opacity:0}}.gps-spd{margin-left:5px;padding-left:5px;border-left:1px solid rgba(20,33,10,.3);white-space:nowrap}.gps-spd .seg{font-size:12px}.lamp{flex:1;text-align:center;font-size:10px;font-weight:600;padding:3px;border-radius:5px;background:#14210a1f;color:var(--lcd-ink)}.lamp.on-hw{background:var(--hw);color:#fff}.lamp.on-night{background:var(--night);color:#fff}.board{font-size:10px;opacity:.65;white-space:nowrap}.keys{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;margin-top:11px}.key{background:var(--key);color:var(--key-ink);border:none;border-radius:9px;padding:15px 2px;font-size:13px;font-weight:500;cursor:pointer;line-height:1.3}.key:active{transform:scale(.97)}.key small{display:block;font-size:9px;opacity:.7}.key--hw{padding:11px 2px;font-size:11px}.key--go.is-running{background:var(--go);color:#fff}.key--hw.is-on{background:var(--hw);color:#fff}.device--landscape .key{padding:12px 2px;font-size:12px}.op-enter{width:100%;margin-bottom:12px;background:#243042;color:#cfe0ff;border:.5px solid var(--hw);border-radius:9px;padding:12px;font-size:14px;font-weight:500;cursor:pointer}.op-exit{display:none}body.op-active{overflow:hidden}.op-active .topbar,.op-active .layout-toggle,.op-active .op-enter,.op-active .stats,.op-active .panel,.op-active .disclaimer,.op-active .device--portrait{display:none!important}.op-active #app{max-width:none;margin:0;padding:0}.op-active .device--landscape{display:flex!important;flex-direction:column;position:fixed;top:0;margin:0;border:none;border-radius:0;background:var(--frame);z-index:100;padding:max(2.4vmin,env(safe-area-inset-top)) max(2.4vmin,env(safe-area-inset-right)) max(2.4vmin,env(safe-area-inset-bottom)) max(2.4vmin,env(safe-area-inset-left));gap:1.8vmin}@media(orientation:portrait){.op-active .device--landscape{width:100dvh;height:100vw;left:100vw;transform-origin:top left;transform:rotate(90deg)}}@media(orientation:landscape){.op-active .device--landscape{width:100vw;height:100dvh;left:0;transform:none}}.op-active .device--landscape .lcd{flex:1;display:flex;flex-direction:column;justify-content:flex-start;gap:1.4vmin;padding:2.5vmin 4vmin;border-radius:2vmin}.op-active .device--landscape .lcd-main{flex:1;align-items:center;gap:3vmin}.op-active .device--landscape .fare-wrap{font-size:42vmin}.op-active .device--landscape .fare-label{font-size:3.4vmin;align-self:center}.op-active .device--landscape .unit{font-size:6vmin}.op-active .device--landscape .lcd-sub{flex:none}.op-active .device--landscape .run-dot{width:3vmin;height:3vmin;margin-right:1.4vmin}.op-active .device--landscape .gps-spd .seg{font-size:4.4vmin}.op-active .device--landscape .unit{font-size:5vmin}.op-active .device--landscape .status{font-size:3.4vmin}.op-active .device--landscape .lbl{font-size:2.7vmin}.op-active .device--landscape .v-dist,.op-active .device--landscape .toll .seg{font-size:7vmin}.op-active .device--landscape .lamp{font-size:3.2vmin;padding:1.3vmin}.op-active .device--landscape .gps{font-size:3.2vmin}.op-active .device--landscape .gps .bars{height:3.4vmin}.op-active .device--landscape .gps .bars i{width:1vmin}.op-active .device--landscape .keys{gap:1.6vmin;margin-top:0}.op-active .device--landscape .key{padding:3.6vmin 2px;font-size:3.8vmin;border-radius:2vmin}.op-active .device--landscape .key small{font-size:2.5vmin}.op-active .op-exit{display:flex;align-items:center;justify-content:center;position:absolute;top:1.6vmin;right:1.6vmin;z-index:110;width:7vmin;height:7vmin;border:none;border-radius:50%;background:#0006;color:#fff;font-size:3.6vmin;cursor:pointer}.op-active .receipt:not([hidden]){position:fixed;top:0;right:0;bottom:0;left:0;margin:0;z-index:300;border-radius:0;overflow:auto;display:flex;flex-direction:column;justify-content:center;background:#08090bf5}.stats{display:flex;gap:8px;margin-top:12px}.stat{flex:1;background:#15171a;border:.5px solid #2c2f33;border-radius:10px;padding:9px;text-align:center}.stat-lbl{display:block;font-size:11px;color:#8a9097}.stat-val{font-size:20px;font-weight:600;font-variant-numeric:tabular-nums}.receipt{margin-top:12px;background:#16181b;border:.5px solid #2c2f33;border-radius:12px;padding:14px;font-size:13px}.receipt h3{margin:0 0 8px;font-size:14px;font-weight:600}.receipt table{width:100%;line-height:1.9}.receipt td:last-child{text-align:right}.receipt .total{border-top:.5px solid #2c2f33;margin-top:8px;padding-top:8px;display:flex;justify-content:space-between;font-weight:600;font-size:15px}.receipt .note{font-size:11px;color:#7a7f86;margin-top:8px}.panel{margin-top:12px;background:#15171a;border:.5px solid #2c2f33;border-radius:10px}.panel summary{padding:11px 14px;font-size:13px;color:#aeb4ba;cursor:pointer}.panel-body{padding:4px 14px 14px}.row{display:flex;align-items:center;gap:10px;padding:7px 0;font-size:13px;color:#c3c8ce}.row>span:first-child{flex:1}.row input[type=range]{flex:2}.row.presets{flex-wrap:wrap}.row.presets button{flex:1;background:#23262a;color:#cfd2d6;border:none;border-radius:7px;padding:8px;font-size:12px;cursor:pointer}.sim-out{min-width:32px;text-align:right;font-variant-numeric:tabular-nums}.reset{width:100%;margin-top:8px;background:#2a1d1d;color:#e79a9a;border:.5px solid #4a2c2c;border-radius:8px;padding:9px;font-size:12px;cursor:pointer}.subhead{margin:14px 0 8px;padding-top:12px;border-top:.5px solid #2c2f33;font-size:12px;color:#aeb4ba;display:flex;align-items:baseline;justify-content:space-between}.subhead small{color:#6b7077}.rate-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.rate-grid label{display:flex;flex-direction:column;gap:4px;font-size:11px;color:#9aa0a6}.rate-grid input{width:100%;background:#0f1113;border:.5px solid #2c2f33;color:#e8eaed;border-radius:7px;padding:8px;font-size:15px;font-variant-numeric:tabular-nums}.reset--rate{background:#1d2430;color:#9fc0e7;border-color:#2c3a4a}.reset--danger{background:#3a1414;color:#f0a0a0;border-color:#5a2020}.rec-count{font-weight:500}#device-id{font-size:10px;color:#5f6368;font-weight:400;font-family:var(--font-mono)}#app:not(.sim) .sim-only{display:none}.ios-hint{position:fixed;top:max(12px,env(safe-area-inset-top));left:12px;right:12px;z-index:400;display:flex;gap:10px;align-items:flex-start;background:#1d2430;color:#cfe0ff;border:1px solid var(--hw);border-radius:10px;padding:11px 13px;font-size:13px;line-height:1.55;box-shadow:0 6px 20px #00000073}.ios-hint[hidden]{display:none}.ios-hint b{color:#fff}.ios-hint button{flex-shrink:0;background:none;border:none;color:#9fc0e7;font-size:16px;line-height:1;cursor:pointer;padding:2px 4px}.disclaimer{margin-top:14px;font-size:11px;line-height:1.6;color:#6b7077;text-align:center}.disclaimer b{color:#9aa0a6}
