:root{--bg:#0b0d08;--panel:#12160eeb;--panel-solid:#161b11;--edge:#3b4628;--edge-hi:#65773f;--text:#e4e8d6;--dim:#8d977a;--accent:#f2c53d;--good:#7cff6b;--warn:#ffb02e;--danger:#ff4a3d;--sb:216px;--card:92px;--top:44px;--safe-r:env(safe-area-inset-right,0px);--safe-l:env(safe-area-inset-left,0px);--safe-b:env(safe-area-inset-bottom,0px);--hud-font:"Rajdhani", system-ui, -apple-system, "Segoe UI", sans-serif;--title-font:"Black Ops One", Impact, "Arial Black", sans-serif}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{background:var(--bg);height:100%;color:var(--text);font-family:var(--hud-font);overscroll-behavior:none;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;margin:0;overflow:hidden}#game{position:fixed;inset:0}#game canvas{display:block}button{font:inherit;color:inherit;cursor:pointer}#hud{pointer-events:none;z-index:10;position:fixed;inset:0}#hud>*{pointer-events:auto}.btn{border:1px solid var(--edge-hi);letter-spacing:.03em;text-transform:uppercase;white-space:nowrap;background:linear-gradient(#2c351f,#1d2414);border-radius:6px;min-height:36px;padding:6px 12px;font-size:14px;font-weight:700}.btn:active{filter:brightness(1.25);transform:translateY(1px)}.btn.small{padding:4px 10px;font-size:13px}.btn.icon{min-width:40px;padding:4px 8px;font-size:18px}.btn.danger{color:#ffcfc4;background:linear-gradient(#4a1d16,#2a110c);border-color:#8a3a2a}.btn.icon.off{color:var(--dim);text-decoration:line-through}.btn.active{border-color:var(--good);color:var(--good)}.topbar{height:calc(var(--top) + env(safe-area-inset-top,0px));padding:env(safe-area-inset-top,0px) calc(var(--sb) + 8px + var(--safe-r)) 0 calc(8px + var(--safe-l));background:linear-gradient(#0a0c08eb,#0a0c088c);border-bottom:1px solid #65773f66;align-items:center;gap:10px;font-size:17px;transition:padding-right .2s;display:flex;position:absolute;top:0;left:0;right:0}body:has(.sidebar.collapsed) .topbar{padding-right:calc(52px + var(--safe-r))}.topbar .spacer{flex:1}.stat{white-space:nowrap;align-items:center;gap:6px;font-weight:700;display:flex}.credits{color:var(--accent);font-variant-numeric:tabular-nums;min-width:82px;font-size:20px}.power .meter{border:1px solid var(--edge);background:#0006;border-radius:4px;width:64px;height:8px;overflow:hidden}.power .fill{background:var(--good);height:100%;transition:width .3s}.power span:last-child{color:var(--dim);font-variant-numeric:tabular-nums;font-size:13px}.power.low .fill{background:var(--danger)}.power.low{color:var(--danger);animation:1s steps(2,end) infinite blink}.wave b{color:var(--text);font-variant-numeric:tabular-nums}.wave b.soon{color:var(--danger)}.wave{color:var(--dim)}@keyframes blink{50%{opacity:.55}}.sidebar{width:calc(var(--sb) + var(--safe-r));padding:calc(8px + env(safe-area-inset-top,0px)) calc(8px + var(--safe-r)) calc(8px + var(--safe-b)) 8px;background:var(--panel);border-left:2px solid var(--edge);flex-direction:column;gap:8px;transition:transform .2s;display:flex;position:absolute;top:0;bottom:0;right:0;box-shadow:-6px 0 18px #0008}.sidebar.collapsed{transform:translate(100%)}.sidebar-toggle{background:var(--panel-solid);border:2px solid var(--edge);width:36px;height:60px;color:var(--accent);border-right:none;border-radius:8px 0 0 8px;font-size:14px;position:absolute;top:calc(50% - 30px);left:-36px}.minimap{aspect-ratio:1;width:100%;image-rendering:pixelated;border:1px solid var(--edge-hi);touch-action:none;background:#000;border-radius:4px;flex-shrink:0}.tabs{gap:4px;display:flex}.tab{border:1px solid var(--edge);text-transform:uppercase;letter-spacing:.06em;color:var(--dim);background:#1d2414;border-radius:6px 6px 0 0;flex:1;padding:6px;font-weight:700}.tab.active{color:var(--accent);border-color:var(--edge-hi);background:#2a331c}.cards{grid-template-columns:repeat(2,1fr);grid-auto-rows:calc((var(--sb) - 16px - 6px) / 2);scrollbar-width:thin;touch-action:pan-y;flex:1;align-content:start;gap:6px;min-height:0;display:grid;overflow-y:auto}.card{border:2px solid var(--edge);background:#10140b;border-radius:6px;padding:0;position:relative;overflow:hidden}.card img{object-fit:cover;pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.card .progress{pointer-events:none;background:#0000009e;position:absolute;top:0;left:0;right:0}.card .name,.card .cost{text-shadow:0 1px 2px #000,0 0 4px #000;pointer-events:none;text-align:left;font-size:12px;font-weight:700;line-height:1.1;position:absolute;left:4px;right:4px}.card .name{top:3px}.card .cost{color:var(--accent);bottom:3px}.card .badge{background:var(--accent);color:#000;pointer-events:none;border-radius:10px;min-width:20px;padding:0 5px;font-size:13px;font-weight:700;position:absolute;top:3px;right:3px}.card .badge:empty{display:none}.card .status{text-align:center;text-shadow:0 1px 3px #000,0 0 6px #000;pointer-events:none;font-size:14px;font-weight:700;position:absolute;top:50%;left:0;right:0;transform:translateY(-50%)}.card.ready{border-color:var(--good);animation:.8s ease-in-out infinite alternate ready}.card.ready .status{color:var(--good);font-size:18px}@keyframes ready{to{box-shadow:0 0 12px var(--good) inset}}.card.locked img,.card.busy img{filter:grayscale()brightness(.45)}.card.locked .status{color:var(--dim);padding:0 4px;font-size:11px}.card.cant-afford .cost{color:var(--danger)}.card:not(.locked):hover{border-color:var(--edge-hi)}.hint{color:var(--dim);font-size:12px;line-height:1.2}.selpanel{left:calc(8px + var(--safe-l));bottom:calc(8px + var(--safe-b));background:var(--panel);border:1px solid var(--edge);max-width:min(420px, calc(100vw - var(--sb) - 40px));border-radius:8px;flex-direction:column;gap:6px;padding:8px;display:flex;position:absolute}.selinfo{min-height:18px;font-size:15px}.selinfo .infected{color:#9dff7a;font-weight:700;animation:.8s steps(2,end) infinite blink}.selinfo .dim{color:var(--dim)}.selpanel .row{flex-wrap:wrap;gap:6px;display:flex}.touch-only{display:none}@media (pointer:coarse){.touch-only{display:inline-block}}.banner{top:calc(var(--top) + 10px + env(safe-area-inset-top,0px));transform:translateX(calc(-50% - var(--sb) / 2));background:var(--panel);border:1px solid var(--good);max-width:calc(100vw - var(--sb) - 24px);border-radius:8px;align-items:center;gap:10px;padding:6px 8px 6px 14px;font-weight:600;display:none;position:absolute;left:50%}.banner.show{display:flex}.toasts{top:calc(var(--top) + 60px + env(safe-area-inset-top,0px));left:calc(12px + var(--safe-l));flex-direction:column;gap:6px;display:flex;position:absolute;pointer-events:none!important}.toast{background:var(--panel);border-left:4px solid var(--good);border-radius:4px;padding:6px 12px;font-size:15px;font-weight:700;transition:opacity .5s,transform .5s;animation:.25s ease-out toast-in}.toast.warn{border-color:var(--warn)}.toast.danger{border-color:var(--danger);color:#ffd7d2}.toast.out{opacity:0;transform:translate(-20px)}@keyframes toast-in{0%{opacity:0;transform:translate(-20px)}}.paused{inset:0;right:var(--sb);font-family:var(--title-font);letter-spacing:.1em;background:#0007;flex-direction:column;justify-content:center;align-items:center;font-size:48px;display:none;position:absolute;pointer-events:none!important}.paused small{font-family:var(--hud-font);color:var(--dim);letter-spacing:0;font-size:16px}.paused.show{display:flex}@media (height<=500px){:root{--sb:176px;--top:40px}.topbar{gap:8px;font-size:15px}.credits{min-width:64px;font-size:17px}.power .meter{width:40px}.sidebar{gap:5px}.minimap{align-self:center;width:62%}.hint{display:none}.tab{padding:3px;font-size:13px}.card .name{font-size:11px}}@media (width<=720px){.power span:last-child,.wave span{display:none}.topbar .btn.danger{padding:4px 6px;font-size:12px}}.screen{z-index:20;touch-action:pan-y;background:radial-gradient(at 50% 40%,#465a1e40,#0000 60%),repeating-linear-gradient(0deg,#ffffff05 0 2px,#0000 2px 4px),#060805f0;justify-content:center;align-items:center;padding:16px;display:none;position:fixed;inset:0;overflow-y:auto}.screen.show{display:flex}.panel{text-align:center;width:100%;max-width:560px;margin:auto}.kicker{color:var(--danger);text-transform:uppercase;letter-spacing:.3em;font-size:14px;font-weight:700}h1{font-family:var(--title-font);color:var(--accent);text-shadow:0 3px #5a3d00,0 0 30px #f2c53d40;margin:8px 0 12px;font-size:clamp(40px,9vw,72px);font-weight:400;line-height:.95}h1 span{color:var(--text);letter-spacing:.2em;text-shadow:0 2px #000;font-size:.55em;display:block}.lead{color:var(--dim);margin:0 0 24px;font-size:18px}button.big{font-family:var(--title-font);letter-spacing:.08em;border:2px solid var(--accent);color:#1b1500;background:linear-gradient(#ffd965,#d6a21e);border-radius:8px;margin:0 auto 12px;padding:12px 48px;font-size:26px;display:block;box-shadow:0 4px #6b4d00,0 8px 24px #0008}button.big:disabled{opacity:.5}button.big:active{transform:translateY(2px);box-shadow:0 2px #6b4d00}button.link{color:var(--dim);background:0 0;border:none;padding:8px;font-size:16px;text-decoration:underline}#howto{text-align:left;background:var(--panel);border:1px solid var(--edge);border-radius:8px;margin:8px 0;padding:4px 16px;font-size:15px;line-height:1.35;display:none}#howto.show{display:block}#howto li{margin:8px 0}#best{color:var(--accent);margin-top:12px;font-weight:600}#gameover h1{color:var(--danger);text-shadow:0 3px #4a0d06}#gameover.won h1{color:var(--good);text-shadow:0 3px #1f4a12}#over-stats{margin-bottom:24px;font-size:20px;line-height:1.6}#rotate{z-index:30}.rotate-icon{color:var(--accent);font-size:64px;animation:2s ease-in-out infinite spin}@keyframes spin{50%{transform:rotate(-90deg)}}@media (orientation:portrait) and (width<=600px){body:not(.rotate-dismissed) #rotate{display:flex}}.levels{grid-template-columns:repeat(10,1fr);gap:6px;margin:8px 0 4px;display:grid}.levels button{aspect-ratio:1;border:1px solid var(--edge);background:var(--panel-solid);color:var(--text);font-family:var(--title-font);border-radius:6px;min-height:36px;padding:0;font-size:18px;position:relative}.levels button.cleared{border-color:var(--edge-hi);background:linear-gradient(#26331a,#161b11)}.levels button.cleared:after{content:"✓";font-family:var(--hud-font);color:var(--good);font-size:11px;position:absolute;bottom:1px;right:3px}.levels button.current{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent), 0 0 12px #f2c53d59}.levels button:disabled{opacity:.35;font-size:14px}.menu-links{justify-content:center;gap:12px;display:flex}.menu-volume{color:var(--dim);align-items:center;gap:8px;margin-top:10px;font-weight:600;display:inline-flex}.menu-volume input,.vol-slider{accent-color:var(--accent);width:140px}.facts{color:var(--text);margin-bottom:12px;font-size:17px}.unlocks{flex-wrap:wrap;justify-content:center;gap:10px;margin-bottom:20px;display:flex}.unlocks:empty{display:none}.unlocks .title{width:100%;color:var(--good);text-transform:uppercase;letter-spacing:.2em;font-size:13px;font-weight:700}.unlock{flex-direction:column;align-items:center;width:92px;font-size:14px;line-height:1.1;display:flex}.unlock img{border-radius:4px;width:56px;height:56px;margin-bottom:4px}.volume{top:calc(var(--top) + 6px);right:calc(var(--sb) + 12px + var(--safe-r));z-index:12;background:var(--panel);border:1px solid var(--edge-hi);pointer-events:auto;border-radius:8px;flex-direction:column;gap:8px;padding:10px 12px;display:none;position:absolute}.volume.show{display:flex}.vol-head{justify-content:space-between;font-weight:700;display:flex}.vol-label{color:var(--accent)}.vol-slider{width:160px;height:28px}.intel{color:var(--text);background:#3c78a026;border:1px solid #5aa0d266;border-radius:4px;padding:4px 6px;font-size:12px;line-height:1.25}.intel b{color:#7cc8ff}.stat .lvl{color:var(--accent);font-weight:700}@media (width<=700px){.levels{grid-template-columns:repeat(10,1fr);gap:4px}.levels button{min-height:30px;font-size:14px}}.btn.sell{border-color:var(--accent);color:var(--accent)}.sellmode{color:var(--accent)}body.selling #game canvas{cursor:copy}.options{text-align:left;flex-direction:column;gap:10px;margin-bottom:20px;display:flex}.option .label{color:var(--dim);text-transform:uppercase;letter-spacing:.15em;margin-bottom:4px;font-size:12px;font-weight:700}.seg{flex-wrap:wrap;gap:4px;display:flex}.seg button{border:1px solid var(--edge);background:var(--panel-solid);min-height:36px;color:var(--text);font-family:var(--hud-font);border-radius:5px;flex:auto;padding:4px 10px;font-size:15px;font-weight:600}.seg button.on{border-color:var(--accent);color:var(--accent);background:linear-gradient(#3a3112,#1e1a0c)}.option .note{color:var(--dim);margin-top:3px;font-size:14px}
