*{box-sizing:border-box;margin:0;padding:0}html,body,#root{width:100%;height:100%;overflow:hidden;font-family:Inter,system-ui,sans-serif;background:#080c12;color:#e8ecf0}button{font-family:inherit;cursor:pointer;border:none;border-radius:8px;padding:.5rem 1rem;font-weight:500;transition:background .15s,transform .1s,box-shadow .15s}button:hover:not(:disabled){transform:translateY(-1px)}button:active:not(:disabled){transform:translateY(0)}button:disabled{opacity:.45;cursor:not-allowed}.app{width:100%;height:100%;position:relative}.canvas-container{width:100%;height:100%}.overlay{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.overlay>*{pointer-events:auto}.panel{background:linear-gradient(145deg,#0e1622f0,#080e18e6);border:1px solid rgba(240,208,128,.14);border-radius:14px;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);box-shadow:0 8px 32px #00000073,inset 0 1px #ffffff0f;padding:1.25rem}.title{font-family:Cinzel,serif;font-size:2.1rem;font-weight:700;letter-spacing:.06em;color:#f0d080;text-shadow:0 2px 12px rgba(240,208,128,.25)}.subtitle{color:#8a9bb0;font-size:.9rem;margin-top:.35rem;line-height:1.45}.lobby{display:flex;align-items:center;justify-content:center;height:100%;background:radial-gradient(ellipse 80% 60% at 50% 20%,rgba(60,90,120,.35),transparent),radial-gradient(ellipse at center,#152030,#080c12 72%)}.lobby-card{width:min(560px,94vw);display:flex;flex-direction:column;gap:1.1rem}.lobby-card input{width:100%;padding:.7rem .9rem;border-radius:8px;border:1px solid rgba(255,255,255,.12);background:#00000059;color:#fff;font-size:1rem;transition:border-color .15s}.lobby-card input:focus{outline:none;border-color:#f0d08073}.map-grid{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}.difficulty-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:.5rem;margin-bottom:.25rem}.difficulty-card h3{font-size:.85rem}.difficulty-card p{font-size:.68rem;line-height:1.35}.lobby-settings-readonly{padding:.85rem;border-radius:10px;background:#ffffff0a;border:1px solid rgba(255,255,255,.08)}.lobby-settings-readonly strong{color:#f0d080}.map-card{padding:.65rem;border-radius:10px;border:2px solid rgba(255,255,255,.08);background:#00000047;cursor:pointer;transition:border-color .15s,background .15s,transform .12s;overflow:hidden}.map-card:hover{border-color:#f0d08059;transform:translateY(-2px)}.map-card.selected{border-color:#f0d080;background:#f0d08012;box-shadow:0 0 20px #f0d0801f}.map-preview-canvas{display:block;width:100%;height:auto;border-radius:6px;margin-bottom:.5rem;border:1px solid rgba(255,255,255,.08)}.map-card h3{font-size:.92rem;color:#f0d080}.map-card p{font-size:.72rem;color:#8a9bb0;margin-top:.2rem;line-height:1.35}.player-list{display:flex;flex-direction:column;gap:.4rem}.player-row{display:flex;align-items:center;gap:.5rem;padding:.45rem .65rem;border-radius:8px;background:#ffffff0a;font-size:.88rem;border:1px solid rgba(255,255,255,.04)}.player-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0;box-shadow:0 0 6px currentColor}.btn-primary{background:linear-gradient(135deg,#b8860b,#f0d080);color:#1a1200;font-weight:700;padding:.8rem 1.5rem;font-size:1rem;box-shadow:0 4px 16px #f0d08040}.btn-primary:hover:not(:disabled){box-shadow:0 6px 20px #f0d08059}.btn-secondary{background:#ffffff14;color:#e8ecf0;border:1px solid rgba(255,255,255,.1)}.btn-danger{background:linear-gradient(135deg,#6b1a28,#8b2635);color:#fff}.hud{position:absolute;top:0;left:0;right:0;display:flex;justify-content:space-between;align-items:flex-start;padding:.85rem 1rem;pointer-events:none}.hud>*{pointer-events:auto}.hud-stats{display:flex;gap:.65rem;flex-wrap:wrap}.stat{background:linear-gradient(160deg,#0c1420eb,#080e18e0);border:1px solid rgba(255,255,255,.1);border-radius:10px;padding:.45rem .85rem;min-width:76px;box-shadow:0 4px 16px #0000004d}.stat-label{font-size:.62rem;color:#7a8a9e;text-transform:uppercase;letter-spacing:.08em;font-weight:600}.stat-value{font-size:1.35rem;font-weight:700;color:#f0d080;font-variant-numeric:tabular-nums}.build-panel{position:absolute;bottom:1rem;left:50%;transform:translate(-50%);display:flex;flex-direction:column;gap:.5rem;padding:.65rem .75rem;background:linear-gradient(160deg,#0c1420f0,#080e18eb);border:1px solid rgba(240,208,128,.15);border-radius:14px;box-shadow:0 8px 28px #00000073;max-width:calc(100vw - 2rem)}.build-panel-section{display:flex;flex-direction:column;gap:.35rem}.build-panel-label{font-size:.65rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:#f0d0808c;padding-left:.15rem}.build-panel-row{display:flex;gap:.45rem;flex-wrap:wrap;justify-content:center}.tower-btn{display:flex;flex-direction:column;align-items:center;gap:.2rem;padding:.45rem .65rem;background:#ffffff0a;border:2px solid transparent;border-radius:10px;color:#e8ecf0;min-width:76px}.tower-btn:hover:not(:disabled){background:#ffffff14}.tower-btn.selected{border-color:#f0d080;background:#f0d0801a;box-shadow:0 0 16px #f0d08026}.tower-btn .cost{font-size:.68rem;color:#f0d080;font-weight:600}.tower-btn .name{font-size:.72rem;font-weight:500}.tower-btn.locked{opacity:.45;filter:grayscale(.6)}.tower-btn.locked .tower-lock-hint{font-size:.58rem;color:#89a;text-align:center;line-height:1.2;max-width:72px}.upgrade-paths{display:flex;flex-direction:column;gap:.45rem;margin-top:.35rem}.upgrade-paths-title{font-size:.78rem;color:#9ab;margin-bottom:.1rem}.btn-path{display:flex;flex-direction:column;align-items:flex-start;gap:.15rem;text-align:left;padding:.55rem .75rem}.btn-path .path-name{font-weight:600;color:#f0d080}.btn-path .path-desc{font-size:.72rem;color:#9ab;line-height:1.3}.btn-path .path-cost{font-size:.75rem;color:#e8ecf0;margin-top:.1rem}.end-screen{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#000000bf;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.end-card{text-align:center;padding:2.5rem 3rem;min-width:min(420px,90vw)}.end-icon{font-size:3rem;margin-bottom:.5rem;filter:drop-shadow(0 4px 12px rgba(0,0,0,.5))}.end-card h2{font-family:Cinzel,serif;font-size:2.6rem;margin-bottom:.75rem;letter-spacing:.04em}.end-subtitle{color:#8a9bb0;margin-bottom:1.75rem;line-height:1.5;font-size:.95rem}.end-card.won h2{color:#4d7;text-shadow:0 0 24px rgba(68,221,119,.35)}.end-card.lost h2{color:#f56;text-shadow:0 0 24px rgba(255,85,102,.35)}.error-banner{background:#8b2635eb;color:#fff;padding:.75rem 1rem;border-radius:8px;margin-bottom:.5rem;font-size:.88rem;border:1px solid rgba(255,100,100,.3)}.selected-zone-hint{position:absolute;bottom:5.75rem;left:50%;transform:translate(-50%);background:#0a121ce6;padding:.45rem 1.1rem;border-radius:8px;font-size:.84rem;color:#8a9bb0;border:1px solid rgba(255,255,255,.08)}.tower-upgrade-panel{position:absolute;bottom:5.75rem;right:1rem;width:min(280px,90vw);display:flex;flex-direction:column;gap:.75rem}.tower-upgrade-header{display:flex;justify-content:space-between;align-items:flex-start}.tower-upgrade-header h3{font-family:Cinzel,serif;color:#f0d080;font-size:1.1rem}.tower-level-badge{font-size:.72rem;color:#8a9bb0}.btn-close{background:transparent;color:#8a9bb0;font-size:1.4rem;line-height:1;padding:0 .4rem}.btn-close:hover{color:#fff}.tower-upgrade-note{font-size:.8rem;color:#8a9bb0}.tower-stats-grid{display:flex;flex-direction:column;gap:.35rem}.tower-stat-row{display:flex;align-items:center;gap:.5rem;font-size:.85rem}.tower-stat-label{color:#8a9bb0;width:4.5rem}.tower-stat-current{color:#e8ecf0;font-weight:500}.tower-stat-next{color:#4d7;font-weight:600}.btn-upgrade{width:100%;margin-top:.25rem}.tower-kills-badge{font-size:.72rem;color:#f0d080;margin-left:.5rem}.btn-sell{width:100%;margin-top:.4rem;padding:.55rem 1rem;background:#e74c3c1f;color:#ff8a7a;border:1px solid rgba(231,76,60,.35);border-radius:6px;font-weight:600;cursor:pointer;transition:background .15s ease}.btn-sell:hover{background:#e74c3c40}.targeting-row{display:flex;align-items:center;gap:.5rem;margin:.5rem 0 .25rem}.targeting-options{display:flex;gap:.25rem;flex:1}.targeting-btn{flex:1;padding:.3rem .2rem;font-size:.72rem;background:#ffffff0f;color:#b8c4d0;border:1px solid rgba(255,255,255,.1);border-radius:5px;cursor:pointer;transition:all .15s ease}.targeting-btn:hover{background:#ffffff1f}.targeting-btn.selected{background:#f0d08033;color:#f0d080;border-color:#f0d08080}.btn-call-wave{padding:.5rem 1rem;font-size:.85rem;border-radius:8px;align-self:center;cursor:pointer;animation:call-wave-pulse 2s ease-in-out infinite}@keyframes call-wave-pulse{0%,to{box-shadow:0 4px 16px #f0d08040}50%{box-shadow:0 4px 24px #f0d0808c}}.tower-upgrade-maxed{text-align:center;color:#f0d080;font-size:.85rem;font-weight:500}.minimap{position:absolute;bottom:1rem;left:1rem;padding:.55rem;width:auto}.minimap-label{font-size:.62rem;text-transform:uppercase;letter-spacing:.1em;color:#7a8a9e;margin-bottom:.35rem;font-weight:600}.minimap-canvas{display:block;width:196px;height:196px;border-radius:8px;cursor:crosshair;border:1px solid rgba(240,208,128,.15);box-shadow:0 4px 16px #00000059}.fps-counter{position:absolute;bottom:1rem;right:1rem;pointer-events:none;padding:.35rem .65rem;border-radius:8px;font-size:.72rem;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:.04em;background:linear-gradient(160deg,#0c1420eb,#080e18e0);border:1px solid rgba(255,255,255,.1);box-shadow:0 4px 16px #0000004d;z-index:10}.fps-counter.fps-good{color:#4d7}.fps-counter.fps-ok{color:#f0d080}.fps-counter.fps-bad{color:#f56}.collapsible-panel{pointer-events:auto}.panel-toggle{display:flex;align-items:center;gap:.4rem;width:100%;padding:.45rem .65rem;background:linear-gradient(160deg,#0c1420f0,#080e18eb);border:1px solid rgba(240,208,128,.2);border-radius:10px;color:#f0d080;font-size:.78rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;box-shadow:0 4px 16px #00000059}.panel-toggle-icon{display:inline-flex;align-items:center;justify-content:center;width:1.1rem;height:1.1rem;border-radius:4px;background:#f0d08026;font-size:.95rem;line-height:1;flex-shrink:0}.panel-toggle-summary{margin-left:auto;font-size:.72rem;font-weight:500;color:#b8c4d0;text-transform:none;letter-spacing:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.collapsible-panel-body{margin-top:.4rem}.collapsible-panel--up{position:absolute;top:env(safe-area-inset-top,0);left:env(safe-area-inset-left,0);right:env(safe-area-inset-right,0);z-index:20}.collapsible-panel--up .collapsible-panel-body{max-height:min(42vh,320px);overflow-y:auto;-webkit-overflow-scrolling:touch}.collapsible-panel--down{position:absolute;bottom:env(safe-area-inset-bottom,0);left:50%;transform:translate(-50%);width:min(calc(100vw - 1rem),480px);z-index:20}.collapsible-panel--down .collapsible-panel-body{max-height:min(38vh,280px);overflow-y:auto;-webkit-overflow-scrolling:touch}.collapsible-panel--left{position:absolute;bottom:calc(3.25rem + env(safe-area-inset-bottom,0));left:env(safe-area-inset-left,.5rem);z-index:15;width:auto}.collapsible-panel--left .panel-toggle{width:auto;min-width:4.5rem}.hud-mobile.collapsible-panel--open .collapsible-panel-body{display:flex;flex-direction:column;gap:.4rem}.build-panel-mobile.collapsible-panel--collapsed{width:auto}.build-panel-mobile.collapsible-panel--collapsed .panel-toggle{width:auto;min-width:5.5rem}.build-panel-mobile.collapsible-panel--open{background:linear-gradient(160deg,#0c1420f0,#080e18eb);border:1px solid rgba(240,208,128,.15);border-radius:14px;padding:.45rem;box-shadow:0 8px 28px #00000073}.minimap-wrapper.collapsible-panel--open .minimap{position:static}.minimap-compact{padding:.35rem}.minimap-compact .minimap-canvas{width:120px;height:120px}@media(max-width:768px){.lobby{align-items:flex-start;overflow-y:auto;padding:max(.75rem,env(safe-area-inset-top)) max(.5rem,env(safe-area-inset-right)) max(.75rem,env(safe-area-inset-bottom)) max(.5rem,env(safe-area-inset-left))}.lobby-card{width:100%;max-width:560px;margin:0 auto;padding:1rem;gap:.85rem}.title{font-size:1.55rem}.subtitle{font-size:.82rem}.map-grid,.difficulty-grid{grid-template-columns:1fr}.btn-primary{padding:.65rem 1rem;font-size:.92rem}.hud-stats{gap:.4rem}.stat{min-width:62px;padding:.35rem .55rem;border-radius:8px}.stat-label{font-size:.55rem}.stat-value{font-size:1rem}.stat-value[style*=font-size]{font-size:.85rem!important}.btn-call-wave{width:100%;font-size:.78rem;padding:.45rem .65rem}.build-panel-row{gap:.3rem}.tower-btn{min-width:58px;padding:.3rem .4rem;border-radius:8px}.tower-btn .name{font-size:.62rem}.tower-btn .cost{font-size:.6rem}.tower-btn.locked .tower-lock-hint{font-size:.52rem;max-width:58px}.tower-upgrade-panel{left:.5rem;right:.5rem;bottom:calc(3.5rem + env(safe-area-inset-bottom,0));width:auto;max-height:min(45vh,360px);overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:25;padding:.85rem}.tower-upgrade-header h3{font-size:.95rem}.tower-stat-row{font-size:.78rem}.targeting-btn{font-size:.65rem;padding:.35rem .15rem}.btn-path .path-desc{font-size:.65rem}.selected-zone-hint{bottom:calc(3.5rem + env(safe-area-inset-bottom,0));max-width:calc(100vw - 2rem);font-size:.72rem;padding:.35rem .75rem;text-align:center}.minimap{bottom:calc(3.25rem + env(safe-area-inset-bottom,0))}.fps-counter{top:env(safe-area-inset-top,.5rem);bottom:auto;right:env(safe-area-inset-right,.5rem);font-size:.62rem;padding:.25rem .45rem;opacity:.7}.end-card{padding:1.5rem 1.25rem}.end-card h2{font-size:1.8rem}.end-icon{font-size:2.2rem}}@media(max-width:380px){.hud-mobile .hud-players-panel{min-width:0;padding:.5rem .75rem}.hud-stats .stat:nth-child(n+4){flex:1 1 calc(50% - .4rem)}.tower-btn{min-width:52px}}
