:root{--ui-bg: rgba(13, 18, 32, .86);--ui-bg-solid: #10182b;--ui-line: rgba(103, 224, 255, .18);--ui-line-strong: rgba(103, 224, 255, .45);--text: #eaf2ff;--text-dim: #9db0d0;--cyan: #39d5ff;--cyan-deep: #16a4d8;--gold: #ffd166;--red: #ff5560;--green: #3affaa;--font: "Avenir Next", "Segoe UI", system-ui, -apple-system, sans-serif;--radius: 12px;--sat: env(safe-area-inset-top, 0px);--sab: env(safe-area-inset-bottom, 0px);--sal: env(safe-area-inset-left, 0px);--sar: env(safe-area-inset-right, 0px)}*{margin:0;padding:0;box-sizing:border-box}html,body{height:100%}.game-body{background:#080c16;color:var(--text);font-family:var(--font);overflow:hidden;overscroll-behavior:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}#game-root{position:fixed;inset:0}#game-canvas{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none}#ui-root{position:absolute;inset:0;pointer-events:none;z-index:10}.hidden{display:none!important}button{font-family:inherit;color:inherit;background:none;border:none;cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--cyan);outline-offset:2px;border-radius:6px}#boot-screen{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;background:radial-gradient(120% 100% at 50% 0%,#0e1930,#080c16 70%);transition:opacity .6s ease}#boot-screen.fade-out{opacity:0;pointer-events:none}.boot-inner{text-align:center}.boot-logo{font-size:clamp(34px,7vw,56px);font-weight:800;letter-spacing:8px;color:var(--text)}.boot-logo span{display:block;font-size:.42em;letter-spacing:14px;color:var(--cyan);margin-top:2px}.game-logo{font-size:clamp(40px,8vw,66px);font-weight:800;letter-spacing:8px;text-shadow:0 0 34px rgba(57,213,255,.35)}.game-logo span{display:block;font-size:.4em;letter-spacing:15px;color:var(--cyan);margin-top:2px}.game-logo.small{font-size:calc(30px * var(--ui-scale, 1));letter-spacing:5px}.game-logo.small span{letter-spacing:8px}.boot-bar{width:220px;height:4px;margin:26px auto 12px;background:#ffffff14;border-radius:4px;overflow:hidden}.boot-bar-fill{width:40%;height:100%;border-radius:4px;background:linear-gradient(90deg,var(--cyan),#7ae0b8);animation:bootslide 1.1s ease-in-out infinite alternate}@keyframes bootslide{0%{transform:translate(-60%)}to{transform:translate(220%)}}.boot-hint{color:var(--text-dim);font-size:calc(13px * var(--ui-scale, 1));letter-spacing:1px}.boot-error{color:var(--red);margin-top:18px;max-width:420px;line-height:1.5}.boot-error-sub{margin-top:12px}.boot-error-sub a{color:var(--cyan)}.noscript-msg{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;color:#eaf2ff;padding:24px;text-align:center}#hud{position:absolute;inset:0;pointer-events:none}#hud-top{position:absolute;top:0;left:0;right:0;display:flex;align-items:center;gap:8px;padding:calc(8px + var(--sat)) calc(10px + var(--sar)) 8px calc(10px + var(--sal));pointer-events:auto;background:linear-gradient(180deg,#080c16d9,#080c1600)}.hud-spacer{flex:1}.hud-stat{display:flex;align-items:center;gap:7px;background:var(--ui-bg);border:1px solid var(--ui-line);border-radius:99px;padding:6px 13px;font-weight:700;font-size:calc(15px * var(--ui-scale, 1));letter-spacing:.5px;backdrop-filter:blur(6px)}.hs-ico{font-size:calc(13px * var(--ui-scale, 1));font-weight:800;opacity:.95}.hs-ico.money{color:var(--gold)}.hs-ico.core{color:var(--cyan)}.hs-ico.wave{color:#b47aff}.hs-ico.enemy{color:var(--red)}#money-val.bump-up{animation:bumpup .35s ease}#money-val.bump-down{animation:bumpdown .35s ease}@keyframes bumpup{30%{transform:scale(1.22);color:var(--green)}}@keyframes bumpdown{30%{transform:scale(.9);color:var(--red)}}#core-bar{width:84px;height:9px;background:#ffffff1a;border-radius:6px;overflow:hidden}#core-fill{height:100%;width:100%;border-radius:6px;background:linear-gradient(90deg,#2fd0fc,#7ae0b8);transition:width .3s ease}#core-fill.danger{background:linear-gradient(90deg,#ff7a45,#ff4560)}#core-bar.hit{animation:corehit .5s ease}@keyframes corehit{20%{box-shadow:0 0 0 3px #ff5560b3}}#speed-group{display:flex;background:var(--ui-bg);border:1px solid var(--ui-line);border-radius:99px;overflow:hidden;backdrop-filter:blur(6px)}.speed-btn{padding:7px 12px;font-size:calc(13px * var(--ui-scale, 1));font-weight:800;color:var(--text-dim)}.speed-btn.active{background:#39d5ff33;color:var(--cyan)}.speed-btn:hover{color:var(--text)}.icon-btn{width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;background:var(--ui-bg);border:1px solid var(--ui-line);border-radius:10px;font-size:calc(15px * var(--ui-scale, 1));color:var(--text);backdrop-filter:blur(6px)}.icon-btn:hover{border-color:var(--ui-line-strong)}.icon-btn,.speed-btn,#tut-skip{position:relative}.icon-btn:after,#tut-skip:after{content:"";position:absolute;inset:-6px}.speed-btn:after{content:"";position:absolute;inset:-4px 0}#wave-panel{position:absolute;top:calc(58px + var(--sat));right:calc(10px + var(--sar));display:flex;flex-direction:column;align-items:flex-end;gap:8px;pointer-events:auto;max-width:300px}#wave-preview{background:var(--ui-bg);border:1px solid var(--ui-line);border-radius:var(--radius);padding:8px 12px;display:flex;flex-direction:column;gap:6px;backdrop-filter:blur(6px)}.wp-label{font-size:calc(11px * var(--ui-scale, 1));font-weight:800;letter-spacing:1.6px;text-transform:uppercase;color:var(--text-dim)}#wave-chips{display:flex;flex-wrap:wrap;gap:5px;justify-content:flex-end}.wp-next{font-size:calc(11px * var(--ui-scale, 1));color:var(--text-dim);align-self:center}.wave-chip{display:inline-flex;align-items:center;gap:5px;font-size:calc(12px * var(--ui-scale, 1));font-weight:700;background:#ffffff0f;border:1px solid rgba(255,255,255,.1);border-radius:99px;padding:2px 9px}.wave-chip.small{font-size:calc(11px * var(--ui-scale, 1));padding:1px 7px}.wave-chip i{width:9px;height:9px;border-radius:50%;display:inline-block}#btn-start-wave{display:flex;flex-direction:column;align-items:center;gap:2px;padding:12px 26px;border-radius:14px;background:linear-gradient(180deg,#2fd0fc,#128fc4);color:#04222e;border:1px solid rgba(255,255,255,.35);box-shadow:0 4px 24px #39d5ff73;transition:transform .12s ease,box-shadow .12s ease}#btn-start-wave:hover{transform:translateY(-2px);box-shadow:0 8px 30px #39d5ff99}#btn-start-wave:active{transform:translateY(0)}.bsw-main{font-size:calc(16px * var(--ui-scale, 1));font-weight:800;letter-spacing:1.5px;text-transform:uppercase}.bsw-sub{font-size:calc(11px * var(--ui-scale, 1));font-weight:700;opacity:.85;min-height:13px}#build-bar{position:absolute;bottom:calc(10px + var(--sab));left:50%;transform:translate(-50%);display:flex;gap:8px;pointer-events:auto;max-width:calc(100vw - 16px);overflow-x:auto;padding:6px;scrollbar-width:none;background:var(--ui-bg);border:1px solid var(--ui-line);border-radius:16px;backdrop-filter:blur(8px)}#build-bar::-webkit-scrollbar{display:none}.tower-card{position:relative;display:flex;flex-direction:column;align-items:center;gap:3px;min-width:74px;padding:9px 6px 7px;border-radius:12px;border:1px solid transparent;color:var(--text);transition:background .12s ease,border-color .12s ease,transform .12s ease}.tower-card:hover{background:#39d5ff14;transform:translateY(-2px)}.tower-card.armed{border-color:var(--cyan);background:#39d5ff24;box-shadow:0 0 14px #39d5ff59}.tower-card.poor{opacity:.42}.tower-card.poor .tc-cost{color:var(--red)}.tc-key{position:absolute;top:3px;left:6px;font-size:calc(9px * var(--ui-scale, 1));font-weight:800;color:var(--text-dim)}.tc-ico{width:26px;height:26px;border-radius:7px;background:var(--c);box-shadow:0 0 12px color-mix(in srgb,var(--c) 60%,transparent);clip-path:polygon(50% 0%,100% 28%,100% 72%,50% 100%,0% 72%,0% 28%)}.tc-name{font-size:calc(11px * var(--ui-scale, 1));font-weight:800;letter-spacing:.4px}.tc-cost{font-size:calc(11px * var(--ui-scale, 1));font-weight:700;color:var(--gold)}#context-panel{position:absolute;right:calc(10px + var(--sar));bottom:calc(96px + var(--sab));width:292px;max-height:min(62vh,540px);overflow-y:auto;pointer-events:auto;background:var(--ui-bg);border:1px solid var(--ui-line);border-radius:16px;padding:16px 14px 14px;backdrop-filter:blur(10px);animation:panelin .18s ease}@keyframes panelin{0%{opacity:0;transform:translateY(10px)}}#cp-close{position:absolute;top:8px;right:8px;width:30px;height:30px;font-size:calc(13px * var(--ui-scale, 1));z-index:1}.cp-title{font-size:calc(17px * var(--ui-scale, 1));font-weight:800;letter-spacing:.5px;padding-left:10px;border-left:3px solid var(--c, var(--cyan));margin-bottom:4px;margin-right:30px}.tp-sub{font-size:calc(12px * var(--ui-scale, 1));color:var(--text-dim);margin-bottom:10px}.tp-spec{color:var(--gold);font-weight:800}.tp-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-bottom:8px}.tp-stats div{background:#ffffff0d;border-radius:9px;padding:7px 4px;text-align:center;display:flex;flex-direction:column;gap:1px}.tp-stats b{font-size:calc(14px * var(--ui-scale, 1))}.tp-stats span{font-size:calc(9px * var(--ui-scale, 1));text-transform:uppercase;letter-spacing:.6px;color:var(--text-dim)}.tp-specials{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:8px}.tp-specials span{font-size:calc(11px * var(--ui-scale, 1));font-weight:700;color:var(--cyan);background:#39d5ff1a;border:1px solid rgba(57,213,255,.25);padding:2px 8px;border-radius:99px}.tp-kills{font-size:calc(11px * var(--ui-scale, 1));color:var(--text-dim);margin-bottom:10px}.tp-desc{font-size:calc(13px * var(--ui-scale, 1));color:var(--text-dim);line-height:1.5}.tp-target{margin-bottom:10px}.tp-target-label{display:block;font-size:calc(10px * var(--ui-scale, 1));font-weight:800;letter-spacing:1.4px;text-transform:uppercase;color:var(--text-dim);margin-bottom:6px}.tp-target-btns{display:flex;flex-wrap:wrap;gap:4px}.tm-btn{font-size:calc(11px * var(--ui-scale, 1));font-weight:700;padding:5px 10px;border-radius:99px;background:#ffffff0f;border:1px solid rgba(255,255,255,.1);color:var(--text-dim)}.tm-btn.active{background:#39d5ff33;border-color:var(--cyan);color:var(--cyan)}.tp-btn{display:flex;flex-direction:column;align-items:flex-start;gap:3px;width:100%;text-align:left;padding:10px 12px;border-radius:10px;margin-bottom:7px;font-weight:800;font-size:calc(13px * var(--ui-scale, 1));transition:transform .1s ease}.tp-btn small{font-weight:600;font-size:calc(11px * var(--ui-scale, 1));opacity:.85}.tp-btn:hover{transform:translateY(-1px)}.tp-btn.upgrade{background:linear-gradient(180deg,#39d5ff47,#16a4d847);border:1px solid var(--ui-line-strong);color:var(--text)}.tp-btn.spec{background:linear-gradient(180deg,#ffd16638,#ffa53c29);border:1px solid rgba(255,209,102,.45);color:var(--gold)}.tp-btn.spec small{color:#ffe9bd}.tp-btn.sell{background:#ff55601f;border:1px solid rgba(255,85,96,.4);color:#ff8f97;align-items:center}.tp-btn.poor{opacity:.45}.tp-maxed{text-align:center;color:var(--gold);font-weight:800;font-size:calc(12px * var(--ui-scale, 1));letter-spacing:1px;margin-bottom:8px}.tp-spec-label{font-size:calc(10px * var(--ui-scale, 1));font-weight:800;letter-spacing:1.4px;text-transform:uppercase;color:var(--gold);margin-bottom:6px}.build-grid{display:flex;flex-direction:column;gap:6px;margin-top:8px}.build-opt{display:flex;flex-direction:column;gap:3px;text-align:left;padding:9px 11px;border-radius:10px;background:#ffffff0d;border:1px solid rgba(255,255,255,.09);color:var(--text);transition:border-color .1s ease,background .1s ease}.build-opt:hover{border-color:var(--ui-line-strong);background:#39d5ff14}.build-opt.poor{opacity:.45}.bo-head{display:flex;align-items:center;gap:7px}.bo-dot{width:11px;height:11px;border-radius:3px;flex-shrink:0}.bo-name{font-weight:800;font-size:calc(13px * var(--ui-scale, 1));flex:1}.bo-cost{font-weight:800;font-size:calc(12px * var(--ui-scale, 1));color:var(--gold)}.bo-role{font-size:calc(11px * var(--ui-scale, 1));color:var(--text-dim)}#toast-stack{position:absolute;top:calc(60px + var(--sat));left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:6px;pointer-events:none}.toast{background:var(--ui-bg);border:1px solid var(--ui-line);border-radius:99px;padding:7px 16px;font-size:calc(13px * var(--ui-scale, 1));font-weight:700;animation:toastin .25s ease;transition:opacity .4s ease,transform .4s ease}.toast.success{border-color:#3affaa66;color:var(--green)}.toast.warn{border-color:#ffb5478c;color:var(--gold)}.toast.out{opacity:0;transform:translateY(-8px)}@keyframes toastin{0%{opacity:0;transform:translateY(8px)}}#announce{position:absolute;top:26%;left:0;right:0;text-align:center;font-size:clamp(26px,5vw,44px);font-weight:800;letter-spacing:8px;text-transform:uppercase;color:var(--text);text-shadow:0 0 30px rgba(57,213,255,.6);opacity:0;pointer-events:none}#announce.warn{color:#ffb547;text-shadow:0 0 30px rgba(255,85,96,.7)}#announce.show{animation:announce 2s ease forwards}@keyframes announce{0%{opacity:0;transform:scale(.85)}12%{opacity:1;transform:scale(1.02)}22%{transform:scale(1)}78%{opacity:1}to{opacity:0;transform:scale(1.04)}}#float-layer{position:absolute;inset:0;overflow:hidden;pointer-events:none}.float-text{position:absolute;top:0;left:0;font-size:calc(14px * var(--ui-scale, 1));font-weight:800;text-shadow:0 1px 4px rgba(0,0,0,.7);transition:opacity .2s linear;will-change:transform}.float-text.money{color:var(--gold)}.float-text.heal{color:var(--green)}#tutorial-tip{position:absolute;bottom:calc(104px + var(--sab));left:50%;transform:translate(-50%);display:flex;align-items:center;gap:12px;max-width:min(480px,calc(100vw - 24px));background:#10182bf2;border:1px solid var(--ui-line-strong);border-radius:12px;padding:11px 14px;font-size:calc(13px * var(--ui-scale, 1));font-weight:600;line-height:1.45;pointer-events:auto;animation:panelin .25s ease;box-shadow:0 6px 30px #00000080}#tut-skip{flex-shrink:0;font-size:calc(11px * var(--ui-scale, 1));font-weight:800;color:var(--text-dim);text-transform:uppercase;letter-spacing:1px;padding:5px 9px;border-radius:8px;background:#ffffff12}#fps-meter{position:absolute;top:calc(58px + var(--sat));left:calc(10px + var(--sal));font-size:calc(12px * var(--ui-scale, 1));font-weight:700;color:var(--green);background:#080c16b3;padding:3px 8px;border-radius:6px}#menus{position:absolute;inset:0;pointer-events:none}#screens{position:absolute;inset:0;pointer-events:auto}#screens.hidden{pointer-events:none}#screens.over-game{background:#05080fb8}.screen{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:calc(16px + var(--sat)) 16px calc(16px + var(--sab))}#screen-main{background:linear-gradient(180deg,#05091240,#050912ad)}.menu-card{text-align:center;animation:panelin .4s ease}.menu-tagline{color:var(--text-dim);letter-spacing:3px;text-transform:uppercase;font-size:calc(12px * var(--ui-scale, 1));font-weight:700;margin:14px 0 34px}.menu-btns{display:flex;flex-direction:column;gap:11px;width:min(300px,78vw);margin:0 auto}.menu-btn{padding:13px 22px;border-radius:12px;font-size:calc(15px * var(--ui-scale, 1));font-weight:800;letter-spacing:1px;background:#10182bd9;border:1px solid var(--ui-line);color:var(--text);transition:transform .12s ease,border-color .12s ease,box-shadow .12s ease;backdrop-filter:blur(6px)}.menu-btn:hover{transform:translateY(-2px);border-color:var(--ui-line-strong)}.menu-btn.primary{background:linear-gradient(180deg,#2fd0fc,#128fc4);color:#04222e;border-color:#ffffff59;box-shadow:0 4px 24px #39d5ff66}.menu-btn.danger{background:#ff556024;border-color:#ff556080;color:#ff8f97}.menu-btn.endless{background:linear-gradient(180deg,#b47aff59,#6e3cc84d);border-color:#b47aff99;color:#e6d5ff;text-shadow:0 0 12px rgba(180,122,255,.6)}.menu-btn.small{padding:8px 14px;font-size:calc(12px * var(--ui-scale, 1))}.hub-link{display:inline-block;margin-top:26px;color:var(--text-dim);font-size:calc(13px * var(--ui-scale, 1));font-weight:700;text-decoration:none;letter-spacing:.5px}.hub-link:hover{color:var(--cyan)}.panel-screen{background:#05080f9e}.panel-screen>*{pointer-events:auto}.panel-screen{flex-direction:column;align-items:center;justify-content:flex-start;gap:0}.ps-header{display:flex;align-items:center;gap:14px;width:min(920px,100%);padding:6px 4px 14px}.ps-header h2{font-size:calc(21px * var(--ui-scale, 1));letter-spacing:2px;text-transform:uppercase}.ps-scroll,#level-grid{width:min(920px,100%);overflow-y:auto;background:var(--ui-bg);border:1px solid var(--ui-line);border-radius:16px;padding:20px;backdrop-filter:blur(10px);max-height:calc(100% - 60px)}#level-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(250px,100%),1fr));gap:16px;align-content:start}.level-card{background:#ffffff0a;border:1px solid rgba(255,255,255,.09);border-radius:14px;overflow:hidden;display:flex;flex-direction:column;transition:border-color .15s ease,transform .15s ease}.level-card:not(.locked):hover{border-color:var(--ui-line-strong);transform:translateY(-3px)}.level-card.locked{opacity:.55;filter:saturate(.35)}.level-map{width:100%;height:auto;display:block}.lc-body{padding:12px 14px 14px;display:flex;flex-direction:column;gap:7px;flex:1}.lc-top{display:flex;align-items:center;justify-content:space-between;gap:8px}.lc-top h3{font-size:calc(16px * var(--ui-scale, 1));letter-spacing:.5px}.lc-diff{color:var(--red);font-size:calc(10px * var(--ui-scale, 1));letter-spacing:2px}.lc-tag{font-size:calc(12px * var(--ui-scale, 1));color:var(--text-dim);flex:1}.lc-meta{display:flex;align-items:center;gap:10px;font-size:calc(12px * var(--ui-scale, 1));color:var(--text-dim)}.lc-stars{color:#55617a;letter-spacing:2px}.lc-stars.earned{color:var(--gold)}.lc-best{font-weight:700}.lc-waves{font-weight:600}.lc-play{margin-top:4px}.lc-locked{font-size:calc(12px * var(--ui-scale, 1));color:var(--text-dim);text-align:center;padding:10px 0 4px}.set-group{font-size:calc(11px * var(--ui-scale, 1));font-weight:800;letter-spacing:2.4px;text-transform:uppercase;color:var(--cyan);margin:20px 0 8px}.set-group:first-child{margin-top:0}.set-row{display:grid;grid-template-columns:1fr minmax(120px,220px) 52px;align-items:center;gap:14px;padding:9px 2px;border-bottom:1px solid rgba(255,255,255,.05)}.set-row.toggle{grid-template-columns:1fr auto}.set-label{font-size:calc(14px * var(--ui-scale, 1));font-weight:600;display:flex;flex-direction:column;gap:2px}.set-label small{font-size:calc(11px * var(--ui-scale, 1));color:var(--text-dim);font-weight:500}.set-val{font-size:calc(12px * var(--ui-scale, 1));font-weight:700;color:var(--text-dim);text-align:right}input[type=range]{-webkit-appearance:none;appearance:none;height:5px;background:#ffffff1f;border-radius:4px;cursor:pointer}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:17px;height:17px;border-radius:50%;background:var(--cyan);box-shadow:0 0 8px #39d5ff99;cursor:grab}input[type=range]::-moz-range-thumb{width:17px;height:17px;border:none;border-radius:50%;background:var(--cyan);box-shadow:0 0 8px #39d5ff99;cursor:grab}.set-row.toggle input[type=checkbox]{position:absolute;opacity:0;width:46px;height:26px;cursor:pointer}.switch{width:46px;height:26px;border-radius:99px;background:#ffffff1f;position:relative;transition:background .15s ease;pointer-events:none}.switch:after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#8ea2c4;transition:transform .15s ease,background .15s ease}.set-row.toggle input:checked+.switch{background:#39d5ff66}.set-row.toggle input:checked+.switch:after{transform:translate(20px);background:var(--cyan)}.set-row.toggle input:focus-visible+.switch{outline:2px solid var(--cyan);outline-offset:2px}select{font-family:inherit;font-size:calc(13px * var(--ui-scale, 1));font-weight:700;color:var(--text);background:var(--ui-bg-solid);border:1px solid var(--ui-line);border-radius:8px;padding:7px 10px;cursor:pointer}#help-body section{margin-bottom:24px}#help-body h3{font-size:calc(12px * var(--ui-scale, 1));letter-spacing:2.4px;text-transform:uppercase;color:var(--cyan);margin-bottom:10px}#help-body h4{font-size:calc(13px * var(--ui-scale, 1));margin-bottom:6px}#help-body p{font-size:calc(14px * var(--ui-scale, 1));line-height:1.6;color:var(--text-dim)}#help-body p b,.help-list b{color:var(--text)}.help-list{list-style:none;display:flex;flex-direction:column;gap:7px;margin-top:8px}.help-list li{font-size:calc(13.5px * var(--ui-scale, 1));line-height:1.5;color:var(--text-dim);padding-left:16px;position:relative}.help-list li:before{content:"▸";position:absolute;left:0;color:var(--cyan)}.help-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(260px,100%),1fr));gap:12px}.help-item{display:flex;gap:10px;font-size:calc(13px * var(--ui-scale, 1))}.help-item .hi-dot{width:12px;height:12px;border-radius:4px;margin-top:4px;flex-shrink:0}.help-item em{color:var(--text-dim);font-style:normal;font-size:calc(11.5px * var(--ui-scale, 1))}.help-item p{font-size:calc(12.5px * var(--ui-scale, 1));margin-top:3px}.help-cols{display:grid;grid-template-columns:1fr 1fr;gap:18px}.credits-body{text-align:center;display:flex;flex-direction:column;gap:16px;align-items:center}.credits-body ul{list-style:none;display:flex;flex-direction:column;gap:9px;color:var(--text-dim);font-size:calc(14px * var(--ui-scale, 1))}.credits-body p{color:var(--text-dim)}.credits-thanks{font-style:italic}#modal-layer{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#04070db3;backdrop-filter:blur(5px);pointer-events:auto;z-index:20;padding:16px}.modal{background:var(--ui-bg-solid);border:1px solid var(--ui-line-strong);border-radius:20px;padding:30px 30px 24px;width:min(420px,92vw);max-height:88vh;overflow-y:auto;text-align:center;box-shadow:0 20px 70px #0009;animation:modalin .25s ease}@keyframes modalin{0%{opacity:0;transform:scale(.94) translateY(10px)}}.modal h2{font-size:calc(26px * var(--ui-scale, 1));letter-spacing:4px;text-transform:uppercase;margin-bottom:18px}.modal h2.win{color:var(--green);text-shadow:0 0 26px rgba(58,255,170,.5)}.modal h2.lose{color:var(--red);text-shadow:0 0 26px rgba(255,85,96,.5)}.modal p{color:var(--text-dim);font-size:calc(14px * var(--ui-scale, 1));line-height:1.5;margin-bottom:16px}.modal-btns{display:flex;flex-direction:column;gap:10px;margin-top:18px}.modal-btns.row{flex-direction:row;justify-content:center}#result-stars{display:flex;justify-content:center;gap:12px;margin:4px 0 16px;min-height:44px;align-items:center}#result-stars .star{font-size:calc(40px * var(--ui-scale, 1));color:#3a4560;opacity:0;transform:scale(.3);animation:starpop .5s ease forwards}#result-stars .star.earned{color:var(--gold);text-shadow:0 0 22px rgba(255,209,102,.7)}@keyframes starpop{to{opacity:1;transform:scale(1)}}.result-wave-reached{color:var(--text-dim);font-size:calc(14px * var(--ui-scale, 1));font-weight:700}#result-breakdown{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}.rb-row{display:flex;justify-content:space-between;gap:14px;font-size:calc(13.5px * var(--ui-scale, 1));color:var(--text)}.rb-row.dim{color:var(--text-dim);font-size:calc(12.5px * var(--ui-scale, 1))}.rb-row b{font-variant-numeric:tabular-nums}#result-total{font-size:calc(19px * var(--ui-scale, 1));font-weight:800;letter-spacing:1px}#result-best{margin-top:8px;color:var(--gold);font-weight:800;font-size:calc(13px * var(--ui-scale, 1));animation:bumpup .6s ease}#portrait-hint{position:absolute;left:12px;right:12px;bottom:calc(12px + var(--sab));z-index:30;background:var(--ui-bg-solid);border:1px solid var(--ui-line-strong);border-radius:16px;padding:16px;display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center;pointer-events:auto;box-shadow:0 10px 50px #0009}.ph-icon{font-size:calc(30px * var(--ui-scale, 1))}#portrait-hint p{font-size:calc(13.5px * var(--ui-scale, 1));color:var(--text-dim);line-height:1.5}#portrait-hint b{color:var(--text)}#debug-panel{position:absolute;left:calc(10px + var(--sal));bottom:calc(96px + var(--sab));z-index:40;width:250px;background:#080c16f0;border:1px solid rgba(255,209,102,.4);border-radius:12px;padding:10px;pointer-events:auto;font-size:calc(11px * var(--ui-scale, 1))}.dbg-title{font-weight:800;letter-spacing:2px;color:var(--gold);margin-bottom:6px}.dbg-title span{color:var(--text-dim);font-weight:600;letter-spacing:0}.dbg-stats{color:var(--text-dim);margin-bottom:8px;min-height:13px}.dbg-row{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:6px}.dbg-row button{font-size:calc(10.5px * var(--ui-scale, 1));font-weight:700;color:var(--text);background:#ffffff14;border:1px solid rgba(255,255,255,.14);border-radius:6px;padding:4px 8px}.dbg-row button:hover{border-color:var(--gold)}@media(max-width:900px){#context-panel{left:calc(8px + var(--sal));right:calc(8px + var(--sar));width:auto;bottom:calc(88px + var(--sab));max-height:44vh}#wave-panel{max-width:250px}}@media(max-width:640px){.hud-stat{padding:5px 9px;font-size:calc(13px * var(--ui-scale, 1));gap:5px}#core-bar{width:54px}.icon-btn{width:33px;height:33px}.speed-btn{padding:6px 9px;font-size:calc(12px * var(--ui-scale, 1))}#wave-panel{top:calc(52px + var(--sat))}#wave-preview{padding:6px 9px}#btn-start-wave{padding:10px 18px}.bsw-main{font-size:calc(14px * var(--ui-scale, 1))}.tower-card{min-width:62px;padding:7px 4px 6px}.tc-ico{width:22px;height:22px}.tc-key{display:none}#tutorial-tip{bottom:calc(92px + var(--sab));font-size:calc(12px * var(--ui-scale, 1))}.help-cols{grid-template-columns:1fr}.set-row{grid-template-columns:1fr;gap:8px}.set-row.toggle{grid-template-columns:1fr auto}.set-val{display:none}.modal{padding:22px 18px 18px}}@media(max-width:480px){#hud-top{flex-wrap:wrap;row-gap:6px}.hud-stat{font-size:calc(12px * var(--ui-scale, 1));padding:4px 8px}#core-bar{width:44px}.hud-spacer{flex:0}#hud-top:after{content:""}#speed-group{order:10}#btn-pause{order:11;margin-left:auto}#wave-panel{top:calc(88px + var(--sat))}}@media(max-height:500px)and (orientation:landscape){#hud-top{padding-top:6px}#wave-panel{top:calc(50px + var(--sat))}#context-panel{max-height:60vh;bottom:calc(78px + var(--sab));width:260px;left:auto}#build-bar{bottom:calc(6px + var(--sab))}.tower-card{min-width:58px}}body.reduced-motion *,body.reduced-motion *:before,body.reduced-motion *:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}@media(prefers-reduced-motion:reduce){.boot-bar-fill{animation:none}}
