:root{--bg: #1b1f2a;--panel: #252b3a;--panel-2: #2d3447;--text: #e8ecf5;--muted: #9aa3b8;--accent: #5aa9ff;--load-ok: #3fbf6b;--load-warn: #e8c13a;--load-bad: #e5484d}*{box-sizing:border-box}html,body{height:100%}body{margin:0;height:100vh;overflow:hidden;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,sans-serif;font-size:14px;display:grid;grid-template-rows:auto minmax(0,1fr)}#hud{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center;padding:8px 12px;background:var(--panel);border-bottom:1px solid #000}#hud .stat{display:flex;align-items:center;gap:6px;font-weight:600}#hud .bar{width:120px;height:10px;background:#000;border-radius:5px;overflow:hidden}#hud .bar>span{display:block;height:100%;background:var(--load-ok)}#hud .muted{color:var(--muted);font-weight:400}button{background:var(--accent);color:#06111f;border:0;border-radius:6px;padding:6px 12px;font:inherit;font-weight:600;cursor:pointer}button:disabled{background:var(--panel-2);color:var(--muted);cursor:not-allowed}main{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:12px;padding:12px;min-height:0}#stage{min-width:0;min-height:0;display:flex;align-items:center;justify-content:center}#map-wrap{position:relative}canvas#map{width:100%;height:100%;display:block;background:#2b4a3a;border-radius:8px}#inspector{position:absolute;pointer-events:none;background:#000000d9;padding:8px 10px;border-radius:6px;font-size:12px;line-height:1.4;max-width:220px;z-index:5}#setup{position:absolute;top:8px;left:8px;max-width:44%;background:#0a0e16e0;padding:8px 16px;border-radius:8px;z-index:4;text-align:left;line-height:1.5;pointer-events:none}#start-cta{position:absolute;left:26%;bottom:20px;z-index:6;display:flex;flex-direction:column;align-items:center;gap:6px}#start-cta[hidden]{display:none}#start-cta button{font-size:22px;padding:14px 34px;border-radius:12px;background:#22c55e;color:#052e16;box-shadow:0 0 #22c55eb3;animation:cta-pulse 1.6s infinite}#start-cta button:disabled{background:var(--panel-2);color:var(--muted);animation:none;box-shadow:none}#start-cta .hint{background:#0a0e16e0;padding:4px 10px;border-radius:6px;font-size:12px;color:var(--load-warn)}@keyframes cta-pulse{0%{box-shadow:0 0 #22c55eb3}70%{box-shadow:0 0 0 16px #22c55e00}to{box-shadow:0 0 #22c55e00}}#setup[hidden]{display:none}#setup .ok{color:var(--load-ok);margin:0 6px}#setup .todo{color:var(--load-warn);margin:0 6px}.build-item.recommend{outline:2px solid var(--load-ok);box-shadow:0 0 12px #3fbf6b80}#overlay{position:absolute;inset:0;background:#0a0e16d1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;text-align:center;border-radius:8px;z-index:10}#overlay[hidden],#inspector[hidden]{display:none}#overlay h1{margin:0;font-size:36px}#overlay table{border-collapse:collapse}#overlay td{padding:2px 12px;text-align:left}#side{display:flex;flex-direction:column;gap:12px;min-height:0;overflow-y:auto}#side section.events{flex:1;min-height:140px;display:flex;flex-direction:column}#side section{background:var(--panel);border-radius:8px;padding:10px}#side h2{margin:0 0 8px;font-size:13px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}#build-menu{display:flex;flex-direction:column;gap:6px}.build-item{display:grid;grid-template-columns:28px 1fr auto;gap:2px 8px;align-items:center;text-align:left;background:var(--panel-2);color:var(--text);padding:6px 8px}.build-item:disabled{opacity:.6}.build-item .icon{grid-row:span 2;font-size:20px}.build-item .cost{font-weight:700}.build-item .desc{grid-column:2 / 4;font-weight:400;font-size:11px;line-height:1.25;color:var(--muted)}.build-item[hidden]{display:none}.build-item .reason{grid-column:2 / 4;font-size:12px;color:var(--load-warn)}#infra-panel{display:flex;flex-direction:column;gap:4px}#infra-panel .row span:first-child{white-space:nowrap}#infra-panel .row span:last-child{text-align:right}#infra-panel .row{display:flex;justify-content:space-between;gap:8px}#event-feed{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px;flex:1;min-height:0;overflow-y:auto}#event-feed li{font-size:12px}@media(max-width:900px){main{grid-template-columns:minmax(0,1fr) 280px}}#spot{position:fixed;z-index:30;border:3px solid #ffd166;border-radius:10px;pointer-events:none;transition:left .25s,top .25s,width .25s,height .25s;animation:spot-pulse 1.2s ease-in-out infinite}#spot.round{border-radius:50%}#spot.bare{border:0;animation:none}#spot.dim{box-shadow:0 0 0 9999px #050810a8}#spot[hidden]{display:none}@keyframes spot-pulse{0%,to{border-color:#ffd166}50%{border-color:#fff}}#coach{position:fixed;left:0;top:0;width:380px;max-width:calc(100vw - 32px);background:#101827;border:3px solid #ffd166;padding:14px 18px;border-radius:12px;z-index:31;line-height:1.5;font-size:15px;box-shadow:0 8px 32px #0009}#coach[hidden]{display:none}#coach b{font-size:18px;color:#ffd166}#coach p{margin:6px 0 12px}#coach .row{display:flex;flex-wrap:wrap;gap:8px}#coach .coach-step{color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.05em}button.secondary{background:var(--panel-2);color:var(--text)}#menu{position:absolute;inset:0;background:#0a0e16f7;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;text-align:center;border-radius:8px;z-index:20}#menu[hidden]{display:none}#menu h1{margin:0;font-size:36px}#menu .sub{margin:0 0 12px;color:var(--muted)}#menu .cards{display:flex;flex-wrap:wrap;gap:16px;justify-content:center}#menu .card{width:240px;background:var(--panel);border-radius:10px;padding:16px;display:flex;flex-direction:column;gap:8px}#menu .card h2{margin:0;font-size:18px}#menu .card p{margin:0;color:var(--muted);flex:1}#overlay .row{display:flex;gap:8px}#menu .card .row{display:flex;gap:8px;justify-content:center}#note{position:fixed;inset:0;z-index:40;background:#050810c7;display:flex;align-items:center;justify-content:center}#note[hidden]{display:none}.note-card{width:min(640px,calc(100vw - 32px));max-height:calc(100vh - 32px);overflow:auto;background:#101827;border:2px solid #fb923c;border-radius:12px;padding:16px 20px;line-height:1.5}.note-card h2{margin:0 0 8px}.note-card img{width:100%;border-radius:6px;background:#fff;margin:4px 0}#menu .card.locked{opacity:.6}#menu .card .lock{color:#e8c13a;flex:0}button:disabled{cursor:not-allowed}#setup.geo{top:auto;bottom:8px;max-width:32%}#menu .menu-bar{position:absolute;top:10px;right:12px;display:flex;gap:8px}.dialog-body .msg.err{color:#ff8a8a}#menu .card .row{flex-wrap:wrap}#dialog{position:fixed;inset:0;z-index:60;background:#050810c7;display:flex;align-items:center;justify-content:center}#dialog[hidden]{display:none}.dialog-card{position:relative;width:min(440px,calc(100vw - 32px));max-height:calc(100vh - 32px);overflow:auto;background:#101827;border:2px solid var(--accent);border-radius:12px;padding:16px 20px;line-height:1.5}.dialog-card.wide{width:min(760px,calc(100vw - 32px))}.dialog-card h2{margin:0 28px 10px 0}.dialog-x{position:absolute;top:10px;right:10px;padding:2px 8px}.dialog-body .stack{display:flex;flex-direction:column;gap:8px}.dialog-body .row{display:flex;gap:8px;margin:8px 0}.dialog-body .row.wrap{flex-wrap:wrap}.dialog-body .field{margin:8px 0}.dialog-body label{display:block;color:var(--muted);font-size:12px;margin-bottom:4px}.dialog-body input:not([type=checkbox]),.dialog-body select{width:100%;background:var(--panel-2);color:var(--text);border:1px solid #000;border-radius:6px;padding:7px 10px;font:inherit}.dialog-body select{width:auto}.dialog-body .prefixed{display:flex;align-items:center;background:var(--panel-2);border:1px solid #000;border-radius:6px}.dialog-body .prefixed span{padding:0 4px 0 10px;color:var(--muted);white-space:nowrap}.dialog-body .prefixed input{border:0;background:transparent;padding-left:0}.dialog-body .muted,.muted{color:var(--muted)}.dialog-body .small{font-size:12px}.dialog-body .msg{min-height:1.2em;margin:6px 0}.dialog-body .msg.ok,#overlay .run.ok{color:var(--load-ok)}.dialog-body a{color:var(--accent)}.table-wrap{max-height:55vh;overflow:auto}table.board{width:100%;border-collapse:collapse}table.board th,table.board td{text-align:left;padding:5px 8px;border-bottom:1px solid #1d2638}table.board .num{text-align:right}table.board tr.me td{background:#5aa9ff26}a.li{display:inline-block;background:#0a66c2;color:#fff;font-size:11px;font-weight:700;padding:0 4px;border-radius:3px;text-decoration:none}#overlay #runbox{margin:6px 0}#overlay .run{margin:4px 0}#overlay .run.err{color:#ff8a8a}#consent{position:fixed;left:12px;bottom:12px;z-index:30;max-width:min(560px,calc(100vw - 24px));display:flex;flex-wrap:wrap;gap:8px;align-items:center;background:var(--panel);border:1px solid #000;border-radius:8px;padding:8px 12px;font-size:13px}body{height:100dvh}#side-toggle{display:none;position:fixed;right:10px;bottom:10px;z-index:9;box-shadow:0 2px 10px #00000080}@media(max-width:720px)and (orientation:portrait),(max-height:520px)and (orientation:landscape){body{font-size:13px}#side-toggle{display:block}#hud{gap:4px 8px;padding:4px 8px;font-size:12px}#hud button{padding:4px 8px}#hud .bar{width:56px}#hud [data-tour=users]{flex-basis:100%;font-weight:400;font-size:11px}#menu,#overlay{position:fixed;top:var(--hud-h, 48px);border-radius:0;overflow:auto;justify-content:flex-start;padding:44px 12px 24px}#menu h1,#overlay h1{font-size:26px}#menu .card{width:min(240px,100%)}#start-cta{position:fixed;left:50%;top:calc(var(--hud-h, 48px) + 8px);bottom:auto;transform:translate(-50%);z-index:9}#start-cta button{font-size:17px;padding:9px 22px}#setup,.build-item .desc{display:none}#side{padding-bottom:52px}body.side-closed #side{display:none}#coach{font-size:14px;padding:10px 14px}#consent{bottom:56px;right:12px}}@media(max-width:720px)and (orientation:portrait){main{grid-template-columns:minmax(0,1fr);padding:6px;gap:0}#stage{overflow:auto;align-items:flex-start;justify-content:flex-start;touch-action:pan-x pan-y pinch-zoom}#side{position:fixed;left:0;right:0;bottom:0;max-height:40vh;background:var(--bg);border-top:1px solid #000;padding:8px 8px 52px;z-index:8}}@media(max-height:520px)and (orientation:landscape){main{grid-template-columns:minmax(0,1fr) 250px;padding:6px;gap:6px}body.side-closed main{grid-template-columns:minmax(0,1fr)}}
