:root{--bg:#121618;--panel:#14191bdb;--panel-solid:#171c1e;--line:#a0b9af29;--ink:#e4ebe7;--muted:#8d9a94;--accent:#6fbf8e;--accent-deep:#2f6b4a;--brass:#d8b25a;--rust:#e07a5c;--slate:#8ea2bb;--f-display:"Big Shoulders Display", "Arial Narrow", Impact, sans-serif;--f-body:"Source Sans 3", "Segoe UI", system-ui, sans-serif;--f-mono:"JetBrains Mono", ui-monospace, Menlo, Consolas, monospace;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}[hidden]{display:none!important}html,body{height:100%}body{background:var(--bg);color:var(--ink);font:14px/1.45 var(--f-body);margin:0;overflow:hidden}#app{width:100%;height:100vh;height:100dvh;min-height:560px;position:relative}#stage{position:absolute;inset:0}#stage canvas{outline:none;display:block}button{font:inherit;color:inherit}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.panel{background:var(--panel);-webkit-backdrop-filter:blur(14px)saturate(1.2);border:1px solid var(--line);border-radius:4px;position:absolute;box-shadow:0 10px 40px #00000059}.label{font:600 10.5px/1.2 var(--f-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.mono{font-family:var(--f-mono);font-variant-numeric:tabular-nums}#topbar{left:14px;top:calc(14px + env(safe-area-inset-top,0px));align-items:center;gap:18px;height:50px;padding:0 14px;display:flex;right:14px}.brand{white-space:nowrap;align-items:baseline;gap:10px;display:flex}.brand b{font:800 24px/1 var(--f-display);letter-spacing:.02em;text-transform:uppercase}.brand span{font:600 11px var(--f-mono);color:var(--accent);letter-spacing:.12em}.tabs{gap:2px;margin-left:8px;display:flex}.tabs button{cursor:pointer;font:600 12px var(--f-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);background:0 0;border:0;border-bottom:2px solid #0000;padding:8px 14px}.tabs button[aria-pressed=true]{color:var(--ink);border-bottom-color:var(--accent)}.tabs button:hover{color:var(--ink)}.spacer{flex:1}.chipbtn{border:1px solid var(--line);cursor:pointer;font:600 11px var(--f-mono);letter-spacing:.06em;color:var(--muted);background:0 0;border-radius:3px;padding:6px 10px}.chipbtn[aria-pressed=true]{color:var(--bg);background:var(--accent);border-color:var(--accent)}.chipbtn:hover{color:var(--ink)}#fps{font:11px var(--f-mono);color:var(--muted);text-align:right;min-width:64px}#catalog{left:14px;top:calc(76px + env(safe-area-inset-top,0px));flex-direction:column;width:290px;display:flex;bottom:14px;overflow:hidden}#catalog .head{border-bottom:1px solid var(--line);gap:8px;padding:12px 14px 8px;display:grid}#search{border:1px solid var(--line);width:100%;color:var(--ink);font:13px var(--f-body);background:#ffffff0a;border-radius:3px;padding:7px 9px}#catlist{flex:1;padding:6px 0 14px;overflow-y:auto}.catgroup{padding:10px 14px 4px}.catitem{text-align:left;cursor:pointer;width:100%;color:var(--ink);background:0 0;border:0;border-left:2px solid #0000;grid-template-columns:54px 1fr;align-items:baseline;gap:8px;padding:6px 14px;display:grid}.catitem:hover{background:#ffffff0a}.catitem[aria-current=true]{border-left-color:var(--accent);background:#6fbf8e1a}.catitem .id{font:600 11px var(--f-mono);color:var(--accent)}.catitem .nm{font-size:13px;line-height:1.3}.catitem .nm small{color:var(--muted);font:10.5px var(--f-mono);margin-top:2px;display:block}#inspector{right:14px;top:calc(76px + env(safe-area-inset-top,0px));align-content:start;gap:16px;width:340px;padding:16px;display:grid;bottom:14px;overflow-y:auto}#inspector h1{font:800 26px/1.02 var(--f-display);text-transform:uppercase;letter-spacing:.01em;text-wrap:balance;margin:0}#inspector p{color:var(--muted);margin:0}.stats{background:var(--line);border:1px solid var(--line);grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;display:grid}.stats div{background:var(--panel-solid);gap:2px;padding:8px 9px;display:grid}.stats .v{font:600 15px var(--f-mono);font-variant-numeric:tabular-nums}.section{gap:8px;display:grid}.section>.label{border-bottom:1px solid var(--line);padding-bottom:6px}.slider{grid-template-columns:1fr auto;align-items:center;gap:2px 10px;display:grid}.slider span{font-size:12.5px}.slider output{font:11px var(--f-mono);color:var(--muted)}.slider input{width:100%;accent-color:var(--accent);grid-column:1/-1}.row{flex-wrap:wrap;gap:6px;display:flex}.bomtable{border-collapse:collapse;width:100%;font-size:12px}.bomtable td{border-bottom:1px solid var(--line);vertical-align:top;padding:4px 0}.bomtable td.n{text-align:right;font-family:var(--f-mono);white-space:nowrap;padding-left:8px}.note{color:var(--muted);font-size:12.5px;line-height:1.45}#tip{pointer-events:none;z-index:5;gap:4px;max-width:320px;padding:10px 12px;display:grid;position:absolute}#tip b{font-size:13.5px}#tip .kv{grid-template-columns:auto 1fr;gap:2px 10px;font-size:12px;display:grid}#tip .kv span:nth-child(odd){color:var(--muted);font:10.5px var(--f-mono);text-transform:uppercase;letter-spacing:.06em;padding-top:2px}#bottombar{left:50%;bottom:calc(14px + env(safe-area-inset-bottom,0px));gap:8px;width:min(720px,100% - 700px);min-width:360px;padding:12px 16px;display:grid;transform:translate(-50%)}#bottombar h2{font:800 22px/1.05 var(--f-display);text-transform:uppercase;margin:0}#bottombar p{color:var(--muted);margin:0;font-size:13.5px}.progress{background:var(--line);height:3px}.progress i{background:var(--accent);width:0;height:100%;display:block}#loading{background:var(--bg);z-index:20;place-items:center;transition:opacity .6s;display:grid;position:absolute;inset:0}#loading .box{text-align:center;gap:10px;display:grid}#loading b{font:800 44px/1 var(--f-display);text-transform:uppercase;letter-spacing:.02em}#loading .bar{background:var(--line);width:260px;height:3px;margin:0 auto}#loading .bar i{background:var(--accent);width:0;height:100%;transition:width .2s;display:block}.legend-swatch{vertical-align:-1px;border-radius:2px;width:10px;height:10px;margin-right:6px;display:inline-block}#catbtn,#sheetbtn{display:none}.walkhint{left:50%;bottom:calc(16px + env(safe-area-inset-bottom,0px));color:var(--muted);z-index:5;text-align:center;pointer-events:none;max-width:calc(100% - 32px);padding:8px 14px;font-size:12px;transition:opacity .4s;transform:translate(-50%)}.walkhint.dim{opacity:.35}body.walking #bottombar{display:none!important}.walkjoy{z-index:5;pointer-events:none;background:#14191b40;border:2px solid #e4ebe759;border-radius:50%;width:100px;height:100px;display:none;position:absolute}.walkjoy.on{display:block}.walkjoy i{background:#6fbf8ecc;border-radius:50%;width:40px;height:40px;position:absolute;top:30px;left:30px}#tourcard{left:50%;top:calc(76px + env(safe-area-inset-top,0px));z-index:6;gap:8px;width:min(560px,100% - 700px);min-width:340px;padding:12px 14px;display:grid;transform:translate(-50%)}#tourcard .row{flex-wrap:wrap;align-items:center;gap:6px;display:flex}#tourcard b{font-size:14px;line-height:1.35}#tourcard label{color:var(--muted);align-items:center;gap:6px;margin-left:auto;font-size:12px;display:inline-flex}#photo{display:none}body.photo-on #photo{display:inline-block}body.phone #photo{display:none}@media (max-width:900px){#app{--sheet-h:40%;--top-h:76px}body.sheet-min #app{--sheet-h:104px}#catbtn{display:inline-block}#catalog{width:auto;left:8px;right:8px;top:calc(var(--top-h) + env(safe-area-inset-top,0px));bottom:calc(8px + env(safe-area-inset-bottom,0px));z-index:8;display:none}body.cat-open #catalog{display:flex}#inspector,#fleethud{width:auto!important;top:auto!important;left:8px!important;right:8px!important;bottom:calc(8px + env(safe-area-inset-bottom,0px))!important;height:var(--sheet-h)!important;max-height:none!important}body.has-sheet #sheetbtn{z-index:7;right:18px;bottom:calc(8px + env(safe-area-inset-bottom,0px) + var(--sheet-h) - 40px);background:var(--panel-solid);padding:8px 12px;display:block;position:absolute}#inspector h1{padding-right:64px;font-size:22px}#bottombar{width:calc(100% - 16px);min-width:0;bottom:calc(8px + env(safe-area-inset-bottom,0px))}body.has-sheet #bottombar{bottom:calc(16px + env(safe-area-inset-bottom,0px) + var(--sheet-h))}.tabs button{padding:8px}.brand span{display:none}#tip{display:none!important}#tourcard{width:calc(100% - 16px);min-width:0;top:calc(var(--top-h) + 8px + env(safe-area-inset-top,0px))}.walkhint{bottom:calc(16px + var(--sheet-h) + env(safe-area-inset-bottom,0px))}}@media (max-width:640px){#app{--top-h:108px}#topbar{height:auto;left:8px;right:8px;top:calc(8px + env(safe-area-inset-top,0px));flex-wrap:wrap;gap:6px 8px;padding:8px 10px 4px}.brand b{font-size:20px}.tabs{order:3;width:100%;margin-left:0}.tabs button{letter-spacing:.04em;flex:1;padding:8px 2px;font-size:11px}#fps,#q,#vr{display:none}#fleethud{padding:12px 14px!important}#bottombar{gap:6px;padding:10px 12px}#modchips,#hlnote,#ph-text,#ph-stats{display:none!important}#bottombar h2{font-size:19px}#bottombar p{font-size:13px}}@media (prefers-reduced-motion:reduce){#loading{transition:none}}body.clean .panel{display:none!important}.vr-dialog{background:var(--panel-solid);width:calc(100% - 32px);max-width:520px;color:var(--ink);border:1px solid var(--line);font:16px/1.5 var(--f-body);border-radius:8px;padding:24px}.vr-dialog::backdrop{background:#000000b3}.vr-dialog h2{margin-top:0}.vr-dialog .note{color:var(--muted);font-size:13px}.vr-dialog label{margin:16px 0;display:block}.vr-dialog input{accent-color:var(--accent)}.vr-dialog button:disabled{opacity:.5;cursor:default}.in-vr #topbar,.in-vr #catalog,.in-vr #inspector,.in-vr #bottombar,.in-vr #tip,.in-vr #toast{display:none}#simflags{pointer-events:none;position:absolute;inset:0;overflow:hidden}.simflag{pointer-events:auto;cursor:pointer;max-width:190px;color:var(--ink);font:600 10.5px/1.25 var(--f-mono);letter-spacing:.03em;text-align:left;white-space:nowrap;background:#171c1ed1;border:1px solid #e07a5cbf;border-radius:3px;grid-template-columns:auto 1fr;align-items:center;gap:0 5px;padding:3px 8px 3px 5px;display:grid;position:absolute;top:0;left:0}.simflag i{color:var(--rust);font-size:13px;font-style:normal}.simflag p{white-space:normal;font:12px/1.4 var(--f-body);color:var(--muted);letter-spacing:0;grid-column:1/-1;margin:5px 0 2px;display:none}.simflag.open{max-width:280px}.simflag.open p{display:block}body.walking .simflag:not(.open) span{display:none}
