*{margin:0;padding:0;box-sizing:border-box}::selection{background:#3cb4f040;color:#fff}::-moz-selection{background:#3cb4f040;color:#fff}.skip-link{position:absolute;left:10px;top:-44px;z-index:1200;padding:10px 14px;border-radius:8px;background:#12314a;color:#d8f4ff;border:1px solid rgba(98,176,226,.7);text-decoration:none;font-weight:700;transition:top .15s ease}.skip-link:focus-visible{top:10px}:focus-visible{outline:2px solid #7ed8ff;outline-offset:2px;box-shadow:0 0 0 2px #1e5a828c}.tower-button:focus-visible,.menu-btn:focus-visible,.modal-close:focus-visible,.modal-nav-btn:focus-visible,.setting-cycle-btn:focus-visible,.footer-link:focus-visible,[role=button]:focus-visible,input:focus-visible,summary:focus-visible{outline:2px solid #9ae6ff;outline-offset:3px;box-shadow:0 0 0 3px #20689273}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}@media(max-width:768px)and (orientation:portrait){#orientationWarning{display:flex!important;flex-direction:column;justify-content:center;align-items:center}}body{font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;background:#0a1018;display:flex;justify-content:center;align-items:flex-start;min-height:100vh;color:#fff;overflow-x:hidden;overflow-y:auto;padding:10px 0;overscroll-behavior:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:manipulation;padding-left:max(10px,env(safe-area-inset-left));padding-right:max(10px,env(safe-area-inset-right));padding-top:max(10px,env(safe-area-inset-top));padding-bottom:max(10px,env(safe-area-inset-bottom))}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:#050a1480}::-webkit-scrollbar-thumb{background:#2878b44d;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#3296d266}html{color-scheme:dark;scrollbar-width:thin;scrollbar-color:rgba(40,120,180,.3) rgba(5,10,20,.5)}#landingPage{position:fixed;top:0;left:0;width:100%;height:100%;z-index:100;display:flex;flex-direction:column;align-items:center;justify-content:center;background:linear-gradient(180deg,#050a12,#0c1a2a 40%,#162a3a);padding:18px 14px;overflow-y:auto}#landingPage canvas{position:absolute;top:0;left:0;width:100%;height:100%;z-index:0}.landing-content{position:relative;z-index:1;text-align:center;max-width:min(92vw,460px);margin:0 auto}.endless-modifier-row{margin:8px auto 4px;display:flex;flex-direction:column;gap:6px;width:min(100%,320px)}.endless-modifier-row label{color:#8bbbd3;font-size:11px;font-weight:700;letter-spacing:.8px;text-transform:uppercase}.endless-modifier-row select{width:100%;padding:8px 10px;border-radius:8px;border:1px solid rgba(62,140,188,.45);background:#081a28d1;color:#d7efff;font-size:12px;font-weight:700}#endlessModifierHint,#challengeModeHint{color:#6f9db6;font-size:11px;line-height:1.4;min-height:30px}.game-logo{font-size:56px;font-weight:900;letter-spacing:6px;text-transform:uppercase;background:linear-gradient(90deg,#3080b0,#50d0f0,#3080b0);-webkit-background-clip:text;-webkit-text-fill-color:transparent;margin-bottom:8px;text-shadow:none}.game-subtitle{font-size:16px;color:#4a8aaa;letter-spacing:4px;margin-bottom:50px}.menu-btn{display:block;width:280px;margin:10px auto;padding:16px;font-size:18px;font-weight:700;border:2px solid rgba(30,80,112,.5);border-radius:12px;background:#081828d9;color:#80c0e0;cursor:pointer;transition:all .3s;letter-spacing:2px;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);position:relative;overflow:hidden}.menu-btn:before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(80,200,240,.25),transparent)}.menu-btn:hover{background:#0e283ce6;border-color:#2878a099;transform:translateY(-2px);box-shadow:0 8px 30px #0064a040}#landingLeaderboard{position:absolute;right:max(20px,env(safe-area-inset-right));top:50%;transform:translateY(-50%);width:min(260px,28vw);padding:16px 14px;background:#06101ceb;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1px solid rgba(56,128,170,.55);border-radius:12px;box-shadow:0 10px 30px #0006;z-index:3}#landingLeaderboardTitle{font-size:13px;font-weight:800;letter-spacing:1px;color:#8ed6f4;text-transform:uppercase;margin-bottom:10px;text-align:center}#landingLeaderboardList .score-entry{padding:8px 10px;font-size:13px;border-radius:6px;margin-bottom:3px}#landingLeaderboardList .score-entry:nth-child(1){background:#ffd7001f;border:1px solid rgba(255,215,0,.3)}#landingLeaderboardList .score-entry:nth-child(2){background:#c0c0c01a;border:1px solid rgba(192,192,192,.25)}#landingLeaderboardList .score-entry:nth-child(3){background:#cd7f321a;border:1px solid rgba(205,127,50,.25)}#creditsFooter{position:absolute;bottom:0;left:0;width:100%;text-align:center;z-index:1;padding:18px 20px;background:linear-gradient(0deg,rgba(5,10,18,.95) 0%,rgba(5,10,18,.6) 70%,transparent 100%)}#creditsFooter .footer-link{color:#60d0f0;text-decoration:underline;font-weight:700}#creditsFooter .footer-link:hover{color:#9feaff}#installAppBtn{display:none;margin:8px auto 0;padding:6px 12px;border-radius:8px;border:1px solid rgba(70,150,200,.55);background:#0a1c2cd1;color:#bfe9ff;font-size:12px;font-weight:700;letter-spacing:.3px;cursor:pointer;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}#installAppBtn:hover{background:#10283ee6;border-color:#5fb9f0b3}#installAppLaterBtn:hover{background:#0c1e2ecc;border-color:#6eb9e173;color:#bfe9ff}#updateStamp{position:absolute;right:18px;bottom:14px;z-index:2;color:#8fb5cc;font-size:13px;font-weight:600;letter-spacing:.4px;background:#040c1473;padding:6px 10px;border:1px solid rgba(70,120,150,.45);border-radius:6px}#assetWarmStatus{margin:12px auto 2px;min-height:18px;color:#6aadc8;font-size:11px;font-weight:600;letter-spacing:.4px;text-align:center}#assetWarmMeter{width:min(280px,86vw);height:8px;margin:2px auto 8px;border:1px solid rgba(70,130,170,.45);border-radius:999px;background:#081624c7;overflow:hidden;display:none}#assetWarmFill{height:100%;width:0%;background:linear-gradient(90deg,#2f8fc2,#57d8f2);box-shadow:0 0 10px #46b4e673;transition:width .18s ease}#introOverlay{position:fixed;inset:0;z-index:400;display:flex;align-items:center;justify-content:center;background:radial-gradient(ellipse at 50% 40%,#0c2038,#050c18,#020408)}#introCanvas{position:absolute;inset:0;width:100%;height:100%}#introTitle{position:relative;z-index:2;font-size:clamp(26px,6.5vw,72px);font-weight:900;letter-spacing:7px;text-transform:uppercase;color:#c8edff;text-shadow:0 0 30px rgba(70,190,255,.7),0 0 60px rgba(40,140,200,.3),0 4px 8px rgba(0,0,0,.5);opacity:0;transform:translateY(10px)}#skipIntroBtn{position:absolute;top:max(16px,env(safe-area-inset-top));right:max(16px,env(safe-area-inset-right));z-index:3;padding:9px 16px;border:1px solid rgba(100,170,210,.5);border-radius:10px;background:#06101cbf;color:#c0e8ff;font-weight:700;letter-spacing:.8px;cursor:pointer;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);transition:all .2s;font-size:13px}#skipIntroBtn:hover{background:#0c1e32d9;border-color:#64b4dcb3}#settingsModal{display:none;position:fixed;top:0;left:0;width:100%;height:100%;z-index:200;background:#000000b3;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);align-items:center;justify-content:center}#settingsModal.active{display:flex}.modal-box{background:linear-gradient(135deg,#0a1a2aeb,#0f2535eb);border:2px solid rgba(26,80,112,.6);border-radius:14px;padding:30px;width:360px;text-align:center;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:0 8px 40px #00000080,0 0 60px #0064a01f,inset 0 1px #50c8f014;position:relative;overflow:hidden}.modal-box:before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(80,200,240,.2),transparent)}.modal-box h2{color:#50b0d0;margin-bottom:20px;font-size:24px;text-shadow:0 0 20px rgba(50,170,220,.3);letter-spacing:1px}.setting-row{display:flex;justify-content:space-between;align-items:center;margin:12px 0;color:#80a0b8;padding:6px 8px;border-radius:6px;background:#00142840;border:1px solid rgba(30,80,120,.15)}.setting-row input[type=range]{width:140px;accent-color:#40a0d0}.setting-row input[type=checkbox]{accent-color:#40a0d0;width:18px;height:18px}.setting-row select{width:150px;padding:6px 8px;background:#0c2234eb;border:1px solid rgba(42,96,128,.6);border-radius:8px;color:#d6f2ff}.setting-row .theme-preview{display:inline-flex;align-items:center;gap:8px}.setting-row .theme-swatch{width:18px;height:18px;border-radius:999px;border:1px solid rgba(210,240,255,.45);box-shadow:0 0 0 1px #0c1c2ccc inset}.setting-row .setting-cycle-btn{min-width:96px;padding:6px 10px;background:#12354ae6;border:1px solid rgba(42,96,128,.6);border-radius:8px;color:#c0e8ff;cursor:pointer;font-weight:700;letter-spacing:.4px;transition:all .2s}.setting-row .setting-cycle-btn:hover{background:#1a4560f2;border-color:#468cb4b3}.controls-help{margin-top:14px;padding:10px;background:#04101e8f;border:1px solid rgba(40,96,132,.45);border-radius:8px;text-align:left}.controls-help-title{color:#9ad8f2;font-size:12px;font-weight:800;letter-spacing:.9px;text-transform:uppercase;margin-bottom:6px}.controls-help-list{list-style:none;padding:0;margin:0;display:grid;gap:4px}.controls-help-list li{display:flex;justify-content:space-between;align-items:center;color:#9cc4da;font-size:12px;line-height:1.2}.controls-help-list kbd{display:inline-block;padding:2px 6px;border-radius:6px;border:1px solid rgba(80,150,190,.55);background:#0a1c2cd9;color:#d9f3ff;font-size:11px;font-weight:800;min-width:48px;text-align:center;letter-spacing:.2px}.mobile-settings .modal-box{width:min(94vw,420px);padding:22px}.mobile-settings .setting-row{flex-wrap:wrap;gap:8px;justify-content:center}.mobile-settings .setting-row select,.mobile-settings .setting-row input[type=range]{width:100%}.mobile-settings .controls-help-list li{gap:8px;align-items:flex-start}.modal-close{margin-top:20px;padding:10px 30px;background:#12354ad9;border:1px solid rgba(42,96,128,.6);border-radius:8px;color:#80c0e0;cursor:pointer;font-size:16px;transition:all .25s;backdrop-filter:blur(4px);position:relative;overflow:hidden}.modal-close:before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(80,200,240,.2),transparent)}.modal-close:hover{background:#1a4560e6;transform:translateY(-1px);box-shadow:0 4px 16px #00508c4d}.intro-slide{display:none;min-height:120px}.intro-slide.active{display:block;animation:slideFadeIn .3s ease}@keyframes slideFadeIn{0%{opacity:0;transform:translate(12px)}to{opacity:1;transform:translate(0)}}.modal-nav-btn{padding:6px 14px;border-radius:8px;border:1px solid rgba(60,140,180,.5);background:#0f283cd9;color:#b0e0ff;font-size:12px;font-weight:700;cursor:pointer;transition:all .2s}.modal-nav-btn:hover{background:#143750e6;border-color:#50b4e6a6}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}#scoresModal{display:none;position:fixed;top:0;left:0;width:100%;height:100%;z-index:200;background:#000000b3;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);align-items:center;justify-content:center}#scoresModal.active{display:flex}.scores-list{text-align:left;margin:15px 0;max-height:250px;overflow-y:auto;scrollbar-width:thin;scrollbar-color:rgba(60,160,220,.3) transparent}.scores-list::-webkit-scrollbar{width:6px}.scores-list::-webkit-scrollbar-track{background:#0014284d;border-radius:3px}.scores-list::-webkit-scrollbar-thumb{background:#3ca0dc4d;border-radius:3px}.score-entry{display:flex;justify-content:space-between;padding:8px 12px;border-bottom:1px solid rgba(26,48,64,.6);color:#80a0b8;transition:background .2s;border-radius:4px;gap:6px}.score-entry span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.score-entry:hover{background:#1e50781f}.score-entry:nth-child(1){color:gold;font-weight:700;text-shadow:0 0 10px rgba(255,215,0,.3)}.score-entry:nth-child(2){color:silver;text-shadow:0 0 8px rgba(192,192,192,.2)}.score-entry:nth-child(3){color:#cd7f32;text-shadow:0 0 8px rgba(205,127,50,.2)}.score-entry.compact{font-size:12px;padding:5px 8px;border-radius:6px}#gameContainer{display:none;position:relative;background:#060e18f2;border:2px solid rgba(30,100,140,.6);border-radius:14px;padding:15px;box-shadow:0 0 80px #0078b440,0 0 30px #003c6426,inset 0 0 50px #00000080;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}#gameTitle{text-align:center;font-size:26px;margin-bottom:10px;background:linear-gradient(90deg,#3890b8,#58d0f0,#3890b8);-webkit-background-clip:text;-webkit-text-fill-color:transparent;font-weight:900;letter-spacing:4px;text-transform:uppercase;filter:drop-shadow(0 0 8px rgba(60,180,230,.4))}#gameCanvas{display:block;border:2px solid rgba(20,80,112,.7);cursor:crosshair;border-radius:6px;box-shadow:inset 0 0 40px #000000b3,0 0 20px #00508233;touch-action:none}#battlefieldLayout{display:flex;gap:12px;align-items:flex-start;justify-content:center}#battlefieldMain{flex:1;min-width:0}#gameContainer.duel-enabled #battlefieldLayout{display:grid;width:100%;height:100%;gap:0;align-items:stretch;justify-content:stretch}#gameContainer.duel-enabled #battlefieldMain{flex:1;min-width:0}#opponentPane{display:none;width:320px;background:#081422f2;border:1px solid rgba(70,140,185,.55);border-radius:10px;padding:10px;box-shadow:0 0 24px #00508c33}#duelScoreBar{display:none;grid-template-columns:1fr auto 1fr;align-items:center;gap:10px;padding:10px 16px;background:linear-gradient(180deg,#081422fa,#06101cf2);border-bottom:2px solid rgba(40,110,150,.5);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}#gameContainer.duel-enabled #duelScoreBar{display:grid}.score-label{font-size:9px;font-weight:800;letter-spacing:1.2px;text-transform:uppercase;color:#6a9ab5}.score-name{font-size:12px;font-weight:600;color:#8ec8e0;letter-spacing:.5px;text-transform:uppercase}.score-elo{font-size:11px;color:#6a9ab5;font-weight:500}.score-value{font-size:22px;font-weight:900;color:#e8f8ff;text-shadow:0 0 12px rgba(100,200,255,.3);transition:transform .2s ease,color .2s ease,box-shadow .2s ease}.score-value.score-pulse{animation:scorePulse .2s ease-out}.score-value.leading{color:#50ff80;text-shadow:0 0 16px rgba(50,255,100,.4);box-shadow:0 2px 8px #40ff8066}#duelScoreDivider{font-size:18px;font-weight:900;color:#5a9ab5;letter-spacing:3px;text-shadow:0 0 10px rgba(80,160,210,.3);padding:2px 8px;border:1px solid rgba(80,160,210,.25);border-radius:6px;background:#14324666}@keyframes scorePulse{0%{transform:scale(1)}40%{transform:scale(1.18)}to{transform:scale(1)}}#duelScoreLocal{display:flex;flex-direction:column;align-items:flex-end;gap:2px}#duelScoreOpponent{display:flex;flex-direction:column;align-items:flex-start;gap:2px}#opponentStatsStrip{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;padding:8px 10px;background:#06101ceb}.opp-stat{background:#14324b80;border-radius:6px;padding:4px 6px;text-align:center;border:1px solid rgba(60,130,180,.2);display:flex;align-items:center;justify-content:center;gap:4px;font-size:12px;font-weight:700;color:#9fd7ff;font-variant-numeric:tabular-nums}.opp-stat-icon{font-size:10px;color:#5a9ab5;margin-right:3px;font-weight:700}#gameContainer.duel-enabled #opponentPane{display:grid;grid-template-rows:auto auto minmax(0,1fr) auto auto;min-width:0;border-left:2px solid rgba(84,168,220,.55);border-radius:0;border-top:none;border-right:none;border-bottom:none;background:linear-gradient(180deg,#0a1624f7,#060e1afa);padding:0;box-shadow:inset 0 0 30px #00000073;position:relative;overflow:hidden}#gameContainer.duel-spectator #battlefieldMain{display:none}#gameContainer.duel-spectator #battlefieldLayout{grid-template-columns:1fr}#gameContainer.duel-spectator #opponentPane{width:100%;border-left:none}#opponentCanvas{display:block;width:100%;height:auto;aspect-ratio:5/3;max-height:100%;min-height:0;justify-self:stretch;align-self:center;flex:1;border-top:2px solid rgba(98,176,226,.6);border-bottom:2px solid rgba(98,176,226,.6);background-image:linear-gradient(180deg,#142f4a,#0f243b 52%,#0a182b),repeating-linear-gradient(0deg,rgba(92,154,204,.12) 0 1px,transparent 1px 18px),repeating-linear-gradient(90deg,rgba(92,154,204,.12) 0 1px,transparent 1px 18px);image-rendering:auto;box-shadow:inset 0 0 20px #00285080}#gameContainer.duel-enabled #opponentPane:after{content:"";position:absolute;left:0;right:0;top:-35%;height:45%;background:linear-gradient(180deg,#78c8ff00,#78c8ff1a 55%,#78c8ff00);pointer-events:none;z-index:2;animation:oppSweep 4.2s linear infinite}@keyframes oppSweep{0%{transform:translateY(0)}to{transform:translateY(280%)}}#opponentPane.danger{box-shadow:inset 0 0 30px #ff282826}#opponentPane.danger #opponentCanvas{border-color:#ff505080}@keyframes countdownPulse{0%{transform:scale(1);opacity:1}50%{transform:scale(1.3);opacity:.8}to{transform:scale(1);opacity:0}}#duelCountdownOverlay.active{display:flex;animation:countdownPulse 1s ease-out}#opponentPane.stale #opponentCanvas{filter:grayscale(.6) brightness(.7);transition:filter .5s}#opponentPane.stale:before{content:"Connection Lost";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:6;color:#ff6060;font-size:14px;font-weight:700;text-shadow:0 0 10px rgba(255,60,60,.5);pointer-events:none}#opponentStatus{margin:8px;font-size:11px;color:#9cc8df;text-align:center;letter-spacing:.3px}#duelChatFeed{position:absolute;left:10px;right:10px;bottom:54px;display:flex;flex-direction:column;gap:6px;pointer-events:none;z-index:4}.duel-chat-bubble{align-self:flex-start;max-width:80%;padding:6px 10px;border-radius:999px;background:#081828eb;border:1px solid rgba(80,150,200,.45);color:#d8efff;font-size:11px;font-weight:700;opacity:0;transform:translateY(6px);transition:opacity .25s ease,transform .25s ease}.duel-chat-bubble.remote{align-self:flex-start}.duel-chat-bubble.local{align-self:flex-end;background:#12344af5}.duel-chat-bubble.visible{opacity:1;transform:translateY(0)}#duelChatBar{display:none;margin:0 8px 8px;gap:6px;flex-wrap:wrap;justify-content:center}#duelChatBar button{padding:6px 10px;border-radius:999px;border:1px solid rgba(70,140,185,.5);background:#0a1828eb;color:#d6efff;font-size:11px;font-weight:700;cursor:pointer}#duelChatBar button:hover{filter:brightness(1.12)}#duelResultPanel{display:none;margin:8px;padding:12px;border:1px solid rgba(90,160,205,.4);background:#0a1828eb;border-radius:10px;box-shadow:0 4px 24px #00285066}#duelResultPanel.visible{display:block;animation:resultSlideIn .4s ease-out}@keyframes resultSlideIn{0%{transform:translateY(30px);opacity:0}to{transform:translateY(0);opacity:1}}#duelCollapseOpponentBtn{display:none;align-self:end;margin:8px 8px 0 auto;padding:6px 10px;border-radius:8px;border:1px solid rgba(80,150,200,.55);background:#0a1c2cd1;color:#bfe9ff;font-size:12px;font-weight:700;cursor:pointer;z-index:4}#duelCollapseOpponentBtn:hover{filter:brightness(1.08)}#gameContainer.duel-opponent-collapsed #opponentCanvas,#gameContainer.duel-opponent-collapsed #opponentStatus,#gameContainer.duel-opponent-collapsed #duelResultPanel,#gameContainer.duel-opponent-collapsed #duelChatBar,#gameContainer.duel-opponent-collapsed #duelChatFeed,#gameContainer.duel-opponent-collapsed #duelCountdownOverlay,#gameContainer.duel-opponent-collapsed #duelConnectionDot,#gameContainer.duel-opponent-collapsed #opponentWaveOverlay{display:none!important}#gameContainer.duel-opponent-collapsed #opponentPane{max-height:56px;overflow:hidden}#duelResultTitle{font-size:18px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;text-align:center;color:#9dd8ff;margin-bottom:8px}#duelResultStats{margin-top:8px;font-size:12px;color:#b9d6ea;line-height:1.5}#duelResultStats strong{color:#d8ecff}#duelResultActions{margin-top:10px;display:flex;justify-content:center;gap:10px;flex-wrap:wrap}#duelRematchBtn{background:linear-gradient(180deg,#3a78a5,#1f496b);border:1px solid rgba(125,190,232,.45);color:#e4f4ff;border-radius:8px;padding:8px 16px;cursor:pointer;font-weight:700;font-size:13px;letter-spacing:.5px;transition:filter .15s,transform .15s}#duelRematchBtn:hover{filter:brightness(1.15);transform:scale(1.03)}#duelRematchBtn:active{transform:scale(.97)}#duelResultTitle.victory{color:#50ff80;text-shadow:0 0 20px rgba(50,255,100,.4)}#duelResultTitle.defeat{color:#ff6060;text-shadow:0 0 20px rgba(255,60,60,.4)}#duelResultTitle.draw{color:gold;text-shadow:0 0 20px rgba(255,215,0,.4)}#duelResultElo{text-align:center;font-size:20px;font-weight:800;margin:10px 0;color:#a8d8ff;letter-spacing:1px}#duelResultElo.positive{color:#50ff80}#duelResultElo.negative{color:#ff6060}#duelReturnBtn{padding:8px 16px;border-radius:8px;font-weight:700;font-size:13px;cursor:pointer;background:#14283cd9;border:1px solid rgba(60,120,160,.4);color:#a0c0d8;transition:filter .15s,transform .15s}#duelReturnBtn:hover{filter:brightness(1.15);transform:scale(1.03)}#duelReturnBtn:active{transform:scale(.97)}.duel-stats-table{display:grid;grid-template-columns:1fr auto 1fr;gap:4px 8px;margin-top:6px;text-align:center}.duel-stats-table .stat-label{color:#6a9ab5;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.duel-stats-table .stat-you{color:#50d0ff;font-weight:700}.duel-stats-table .stat-opp{color:#ff9060;font-weight:700}.duel-stats-table .stat-winner{color:#50ff80}#gameContainer.duel-enabled #battlefieldLayout{display:grid;grid-template-columns:3fr minmax(300px,2fr);grid-template-rows:1fr;gap:0;width:100%;height:100%}#gameInfo{display:flex;justify-content:space-between;margin:10px 0;font-size:15px;font-weight:700;gap:8px}.info-item{padding:8px 14px;background:#0a1c2cd9;border:1px solid rgba(30,80,120,.5);border-radius:8px;flex:1;text-align:center;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);box-shadow:0 2px 8px #0000004d}#timer{font-size:38px;text-align:center;margin:10px 0;color:#58d0f0;text-shadow:0 0 20px rgba(50,170,220,.5),0 0 40px rgba(30,120,180,.2);font-weight:900;letter-spacing:2px}#wavePreview{display:none;align-items:center;justify-content:center;gap:6px;flex-wrap:wrap;min-height:24px;margin:2px 0 8px;overflow-x:auto;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch}.wave-preview-badge{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;scroll-snap-align:center}.wave-preview-dot{width:20px;height:20px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:10px;font-weight:900;color:#f5fbff;border:1px solid rgba(230,245,255,.6);box-shadow:0 0 8px #143c5a59,inset 0 0 6px #0000003d}.wave-preview-modifier-wrap{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap;justify-content:center}.wave-preview-modifier{display:inline-flex;align-items:center;padding:3px 8px;border-radius:999px;background:#07111cd9;border:1px solid rgba(70,140,185,.35);font-size:11px;font-weight:700;color:#b7ddf2;letter-spacing:.2px}.wave-preview-modifier.tone-good{border-color:#58cd8773;color:#9ff0c0}.wave-preview-modifier.tone-danger{border-color:#ff8c6e73;color:#ffd1b8}#waveMutationBanner{display:none;align-items:center;justify-content:center;min-height:34px;margin:0 0 8px}.wave-mutation-chip{display:inline-flex;align-items:center;gap:10px;padding:8px 12px;border-radius:10px;background:#081420eb;border:1px solid color-mix(in srgb,var(--mutation-accent) 52%,rgba(255,255,255,.15));box-shadow:0 6px 18px #00000047;max-width:min(560px,96%)}.wave-mutation-icon{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:999px;background:color-mix(in srgb,var(--mutation-accent) 18%,rgba(8,16,24,.95));border:1px solid color-mix(in srgb,var(--mutation-accent) 55%,rgba(255,255,255,.12));color:var(--mutation-accent);font-size:12px;font-weight:900;letter-spacing:.5px}.wave-mutation-copy{display:flex;flex-direction:column;align-items:flex-start;gap:2px}.wave-mutation-name{color:var(--mutation-accent);font-size:12px;font-weight:800;letter-spacing:.5px;text-transform:uppercase}.wave-mutation-desc{color:#9cc3d9;font-size:11px;line-height:1.25}.wave-mutation-chip.severity-warning{background:#081422e6}.wave-mutation-chip.severity-danger{background:#18140ceb}.wave-mutation-chip.severity-extreme{background:#180c0ef0}#waveTelemetry{display:none;text-align:center;margin:4px 0 6px;color:#9fd9ff;font-size:13px;font-weight:700;letter-spacing:.6px;text-shadow:0 0 14px rgba(70,170,230,.35)}#bossHpWrap{display:none;margin:6px auto 8px;width:min(760px,95%);padding:6px 8px;background:#26080cc7;border:1px solid rgba(210,70,80,.55);border-radius:8px;box-shadow:0 0 20px #b41e2838}#bossHpLabel{text-align:center;font-size:12px;font-weight:800;letter-spacing:.5px;color:#ffd0d0;margin-bottom:4px;text-transform:uppercase}#bossHpTrack{height:12px;background:#140206c7;border:1px solid rgba(255,160,160,.25);border-radius:999px;overflow:hidden}#bossHpFill{height:100%;width:100%;background:linear-gradient(90deg,#ff3030,#ff6a50,#ffb36a);box-shadow:0 0 14px #ff463259;transition:width .12s linear}#towerShop{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap;justify-content:center}.tower-button{padding:12px 16px;background:#0c2032e6;border:2px solid rgba(30,80,112,.5);border-radius:10px;color:#98c8e0;cursor:pointer;font-weight:700;transition:all .25s ease;min-width:155px;font-size:14px;box-shadow:0 4px 16px #0006;position:relative;overflow:hidden;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}.tower-button:before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(80,200,240,.3),transparent)}.tower-button:hover{background:#123046f2;transform:translateY(-2px);border-color:#286e96b3;box-shadow:0 6px 24px #00508c4d}.tower-button.selected{background:#143c5af2;border-color:#3ca0d2b3;color:#c0e8ff;box-shadow:0 0 24px #288cc866,inset 0 0 15px #288cc81a}.tower-button.locked{opacity:.45;filter:saturate(.6)}.tower-button:disabled{opacity:.3;cursor:not-allowed}body.high-contrast .tower-button{border-width:3px;color:#fff;background:#040a10fa}body.high-contrast .tower-button.selected{border-color:#fff;box-shadow:0 0 0 2px #ffffff73,0 0 18px #78c8ff47}body.high-contrast #gameInfo .info-item{color:#fff;background:#02060cfa;border-color:#ffffffc7}body.high-contrast #waveTelemetry,body.high-contrast #bossHpLabel,body.high-contrast #opponentStatus{color:#fff}body.high-contrast #soloMinimap{border-color:#ffffffd9;background:#02080ef0}#towerTooltip{position:fixed;display:none;z-index:1200;min-width:220px;max-width:260px;padding:10px 12px;border-radius:10px;border:1px solid rgba(70,150,195,.55);background:#081624f5;box-shadow:0 10px 30px #00000073,0 0 0 1px #78d2ff0f inset;color:#cbe9f8;pointer-events:none;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.tower-tooltip-title{font-size:13px;font-weight:800;letter-spacing:.6px;color:#9fe4ff;margin-bottom:8px}.tower-tooltip-row{display:flex;justify-content:space-between;gap:12px;font-size:12px;line-height:1.5;color:#8eb7cf}.tower-tooltip-row strong{color:#ecfbff;font-weight:700}.tower-tooltip-special{margin-top:8px;padding-top:8px;border-top:1px solid rgba(60,120,150,.28);font-size:11px;line-height:1.5;color:#a8d0e6}.upgrade-popup{position:absolute;z-index:50;background:#060e1af0;border:2px solid rgba(40,120,180,.6);border-radius:12px;padding:14px;box-shadow:0 8px 32px #0009,0 0 20px #0064b433;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);min-width:190px;max-width:280px;pointer-events:auto;transition:opacity .15s ease}#upgradePanel{padding:0;background:transparent;border:none;border-radius:0;min-height:auto;backdrop-filter:none;-webkit-backdrop-filter:none}.upgrade-button{padding:8px 14px;margin:4px;background:#144664d9;border:1px solid rgba(40,120,160,.5);border-radius:8px;color:#c0e8ff;cursor:pointer;font-weight:700;font-size:13px;transition:all .25s ease;backdrop-filter:blur(2px)}.upgrade-button:hover{background:#1e5a82e6;transform:translateY(-1px);box-shadow:0 4px 12px #00508c4d}.upgrade-button:disabled{opacity:.3;cursor:not-allowed}.sell-button{background:#50141ed9;border-color:#8c323c80;color:#ffa0a0}.sell-button:hover{background:#6e1e28e6;box-shadow:0 4px 12px #8c1e1e4d}.repair-button{background:linear-gradient(135deg,#1a5a30,#0a3a1a);border-color:#2a8040;color:#a0ffa0}.repair-button:hover{background:linear-gradient(135deg,#2a7040,#1a5a30)}.small-text{font-size:11px;color:#6090a8;display:block;margin-top:3px}.tower-icon{font-size:18px;display:block;margin-bottom:2px;color:#4090b0}#restartBtn{display:none;margin:8px auto 0;padding:10px 30px;font-size:16px;font-weight:700;background:linear-gradient(135deg,#1a5a80e6,#104060e6);border:2px solid rgba(64,160,208,.6);border-radius:10px;color:#c0e8ff;cursor:pointer;box-shadow:0 0 24px #288cc859,0 4px 16px #0000004d;transition:all .3s;backdrop-filter:blur(4px);position:relative;overflow:hidden;letter-spacing:1px}#restartBtn:before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(80,200,240,.35),transparent)}#restartBtn:hover{transform:translateY(-2px);box-shadow:0 0 32px #288cc873,0 6px 24px #0006}#menuBtn{display:none;margin:4px auto 0;padding:8px 24px;font-size:14px;background:#12354ad9;border:1px solid rgba(42,96,128,.5);border-radius:8px;color:#80c0e0;cursor:pointer;transition:all .25s;backdrop-filter:blur(4px)}#menuBtn:hover{background:#183c54e6;transform:translateY(-1px)}#gameOverStats{display:none;margin:10px auto 6px;max-width:760px;max-height:min(54vh,520px);overflow:auto;padding:10px 12px;background:#06101ce6;border:1px solid rgba(132,104,38,.55);border-radius:10px;box-shadow:0 6px 20px #00000059,inset 0 0 18px #8462181f}#gameOverStats h3{margin-bottom:8px;color:#8fd0f0;font-size:16px;letter-spacing:.6px;text-transform:uppercase;text-align:center}#gameOverCinematic{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none;opacity:0;transform:scale(1.3);background:radial-gradient(circle at center,#0a10183d,#04080ec7);color:#f05c66;font-size:clamp(30px,5vw,54px);font-weight:900;letter-spacing:2px;text-shadow:0 0 28px rgba(255,70,90,.35);transition:opacity .35s ease,transform .45s ease;z-index:35}#gameOverCinematic.active{opacity:1;transform:scale(1)}.go-stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:6px;margin-bottom:8px}.go-stat-item{background:#0a1c2cbf;border:1px solid rgba(30,90,130,.45);border-radius:8px;padding:6px 8px;text-align:center}.go-stat-item span{display:block;color:#7fa8bf;font-size:11px;letter-spacing:.3px}.go-stat-item strong{display:block;color:#d8f2ff;font-size:16px;line-height:1.2;margin-top:2px}.go-stat-kills-wrap{background:#0a1622a6;border:1px solid rgba(28,78,112,.45);border-radius:8px;padding:6px 8px}.go-stat-kills-title{color:#88bed8;font-size:11px;font-weight:700;letter-spacing:.35px;text-transform:uppercase;margin-bottom:6px}.go-stat-kills{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:4px}.go-stat-kill{display:flex;justify-content:space-between;align-items:center;padding:3px 6px;background:#060e18a6;border:1px solid rgba(26,64,92,.45);border-radius:6px;font-size:11px;color:#9fc4d8}.go-stat-kill strong{color:#d8f2ff;font-size:12px}.go-stat-empty{color:#7898ac;font-size:11px;padding:4px 2px}.go-stat-achievements{margin-top:8px;background:#0a1622a6;border:1px solid rgba(86,72,28,.45);border-radius:8px;padding:6px 8px}.go-achievement-row{display:flex;flex-wrap:wrap;gap:6px}.go-achievement-chip{display:inline-block;padding:3px 7px;border-radius:999px;background:#184e6eb8;border:1px solid rgba(80,150,190,.45);color:#d9f4ff;font-size:11px;font-weight:700;letter-spacing:.2px}@media(max-width:768px){#gameOverStats{max-width:calc(100vw - 16px);max-height:48vh;padding:10px}.go-stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.go-stat-kills{grid-template-columns:1fr}}#achievementToasts{position:absolute;top:84px;right:10px;z-index:95;display:flex;flex-direction:column;gap:8px;pointer-events:none;max-width:min(280px,42vw)}.achievement-toast{opacity:0;transform:translate(14px);transition:opacity .2s ease,transform .2s ease;background:#06121eeb;border:1px solid rgba(70,170,220,.52);border-radius:10px;padding:9px 10px;box-shadow:0 8px 22px #00000073,0 0 14px #2882b442}.achievement-toast.visible{opacity:1;transform:translate(0)}.achievement-toast-title{font-size:10px;font-weight:800;letter-spacing:.9px;text-transform:uppercase;color:#84c8ea}.achievement-toast-name{font-size:14px;font-weight:800;letter-spacing:.2px;color:#e8f8ff;margin-top:2px}.achievement-toast-desc{font-size:11px;color:#9ec6d8;margin-top:2px;line-height:1.3}#soundToggle{position:fixed;bottom:10px;right:10px;z-index:50;padding:6px 12px;background:#0a141ed9;border:1px solid rgba(26,80,112,.5);border-radius:6px;color:#80a0b8;cursor:pointer;font-size:12px;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);transition:all .2s}#soundToggle:hover{background:#101e2ee6;border-color:#28648c99}#fpsCounter{display:none;position:absolute;top:12px;right:12px;z-index:85;padding:5px 8px;border-radius:8px;background:#06101ed1;border:1px solid rgba(70,140,190,.58);color:#a9e5ff;font-size:12px;font-weight:800;letter-spacing:.4px;box-shadow:0 4px 12px #00000059}#renderer3dBadge{position:absolute;top:10px;right:10px;padding:4px 12px;background:#143c64d9;border:1px solid rgba(100,180,240,.5);border-radius:6px;color:#a8e0ff;font-size:11px;font-weight:700;letter-spacing:1px;z-index:50;pointer-events:none;opacity:0;transform:translateY(-4px);transition:opacity .25s ease,transform .25s ease;overflow:hidden}#renderer3dBadge.visible{opacity:1;transform:translateY(0)}#renderer3dBadge:after{content:"";position:absolute;top:0;left:0;width:36px;height:100%;background:linear-gradient(90deg,transparent,rgba(220,245,255,.45),transparent);transform:translate(-130%)}#renderer3dBadge.visible:after{animation:rendererBadgeShimmer 1.3s ease-out 2}@keyframes rendererBadgeShimmer{0%{transform:translate(-130%)}to{transform:translate(320%)}}#waveActionRow{display:flex;justify-content:center;align-items:center;gap:8px;margin:4px auto}#sendWaveBtn{display:none;margin:0;padding:8px 24px;font-size:14px;font-weight:700;background:linear-gradient(135deg,#6a3010,#4a2008);border:2px solid #c06020;border-radius:8px;color:#ffc080;cursor:pointer;transition:all .3s;letter-spacing:1px;text-transform:uppercase;box-shadow:0 0 15px #c8641e4d}#sendWaveBtn:hover{background:linear-gradient(135deg,#7a3818,#5a2810);transform:translateY(-1px)}.send-wave-pulse{animation:sendWaveGlow 1.5s ease-in-out infinite}@keyframes sendWaveGlow{0%,to{box-shadow:0 0 15px #c8641e4d}50%{box-shadow:0 0 24px #ffaa508c}}#fastForwardBtn{display:none;margin:0;padding:8px 16px;font-size:13px;font-weight:800;background:linear-gradient(135deg,#123a4f,#0c2432);border:2px solid rgba(90,180,220,.5);border-radius:8px;color:#bdefff;cursor:pointer;transition:all .25s;letter-spacing:1px;text-transform:uppercase;box-shadow:0 0 14px #2878b438}#fastForwardBtn:hover{background:linear-gradient(135deg,#184a63,#103246);transform:translateY(-1px)}#fastForwardBtn.active{background:linear-gradient(135deg,#1b5f7f,#14455e);border-color:#78dcffbf;box-shadow:0 0 18px #46aadc59}#gameActions{display:flex;gap:8px;justify-content:center;margin-top:8px}#restartGameBtn{padding:8px 20px;font-size:13px;font-weight:700;background:linear-gradient(135deg,#1a4a30,#0a3018);border:1px solid #2a8040;border-radius:6px;color:#a0ffa0;cursor:pointer;transition:all .3s}#restartGameBtn:hover{background:linear-gradient(135deg,#2a5a40,#1a4028);transform:translateY(-1px)}#quitToMenuBtn{padding:8px 20px;font-size:13px;font-weight:700;background:linear-gradient(135deg,#4a2030,#3a1020);border:1px solid #8a3040;border-radius:6px;color:#ffa0a0;cursor:pointer;transition:all .3s}#quitToMenuBtn:hover{background:linear-gradient(135deg,#5a2838,#4a1828);transform:translateY(-1px)}#pauseBtn{padding:8px 14px;font-size:16px;font-weight:700;background:linear-gradient(135deg,#2a3040,#1a2030);border:1px solid #4a6080;border-radius:6px;color:#a0c0e0;cursor:pointer;transition:all .3s;line-height:1}#pauseBtn:hover{background:linear-gradient(135deg,#3a4050,#2a3040);transform:translateY(-1px)}#pauseOverlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:90;background:#050a14c7;display:flex;align-items:center;justify-content:center;cursor:pointer;backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px)}.pause-content{text-align:center;pointer-events:none}.pause-content h2{font-size:48px;color:#50d0f0;letter-spacing:8px;text-shadow:0 0 30px rgba(50,180,240,.35);margin-bottom:12px}.pause-content p{font-size:16px;color:#6090b0;letter-spacing:2px}#tutorialGuide{display:none;position:absolute;top:56px;left:50%;transform:translate(-50%);z-index:85;max-width:min(92vw,640px);width:max-content;padding:10px 14px;background:#05101ce6;border:1px solid rgba(80,170,220,.55);border-radius:10px;box-shadow:0 10px 28px #00000073,0 0 16px #328cc833;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);text-align:center}#tutorialGuideStep{font-size:11px;font-weight:800;letter-spacing:1.1px;text-transform:uppercase;color:#8fc8e4;margin-bottom:4px}#tutorialGuideText{font-size:14px;font-weight:700;letter-spacing:.3px;color:#d2f2ff}#tutorialSkipBtn{display:none;margin-top:8px;padding:6px 10px;background:#3c1818bf;border:1px solid rgba(180,80,90,.55);border-radius:7px;color:#ffd7db;font-size:11px;font-weight:700;cursor:pointer}#tutorialSkipBtn:hover{background:#541e22d9}#tutorialPlacementOverlay{display:none;position:absolute;z-index:70;pointer-events:none;grid-template-columns:repeat(25,1fr);grid-template-rows:repeat(15,1fr);gap:0}.tutorial-cell{opacity:0}.tutorial-cell.valid{background:#56d6ff2b;box-shadow:inset 0 0 0 1px #a0f0ff5c;animation:tutorialCellPulse 1.2s ease-in-out infinite}.tutorial-target{animation:tutorialPulse 1.25s ease-in-out infinite!important;box-shadow:0 0 0 2px #6edcffbf,0 0 16px #3caadc73!important}.tutorial-canvas-focus{animation:tutorialPulse 1.25s ease-in-out infinite!important;border-color:#6edcffe6!important;box-shadow:inset 0 0 40px #000000b3,0 0 22px #50bef05c!important}@keyframes tutorialPulse{0%{transform:translateY(0);filter:brightness(1)}50%{transform:translateY(-1px);filter:brightness(1.2)}to{transform:translateY(0);filter:brightness(1)}}@keyframes tutorialCellPulse{0%{opacity:.16}50%{opacity:.32}to{opacity:.16}}.overlay-modal{display:none;position:fixed;top:0;left:0;width:100%;height:100%;z-index:200;background:#000000b3;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);align-items:center;justify-content:center}.overlay-modal.active{display:flex}#shortcutOverlayModal .modal-box{width:min(520px,94vw)}#shortcutGrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px;margin-top:10px;text-align:left}.shortcut-card{padding:10px;border-radius:10px;border:1px solid rgba(50,110,150,.4);background:#081422b8}.shortcut-card strong{display:block;color:#c7eeff;font-size:12px;margin-bottom:4px}.shortcut-card span{display:block;color:#8fb8cf;font-size:12px;line-height:1.35}#screenReaderAnnouncements{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}@media(max-width:1080px){#gameContainer{padding:10px;max-width:100vw;overflow-x:auto}#gameTitle{font-size:22px;margin-bottom:6px}#gameInfo{font-size:13px;gap:4px;flex-wrap:wrap}.info-item{padding:5px 8px;font-size:12px}#timer{font-size:30px;margin:6px 0}#wavePreview{gap:5px;min-height:20px;margin:1px 0 6px}.wave-preview-dot{width:18px;height:18px;font-size:9px}.wave-preview-modifier{font-size:10px;padding:3px 6px}#waveMutationBanner{min-height:30px;margin:0 0 6px}.wave-mutation-chip{padding:7px 10px;gap:8px}.wave-mutation-icon{width:24px;height:24px;font-size:11px}.wave-mutation-name{font-size:11px}.wave-mutation-desc{font-size:10px}.tower-button{min-width:120px;padding:8px 10px;font-size:12px}.small-text{font-size:10px}.tower-icon{font-size:14px}#upgradePanel{padding:8px;font-size:12px}.upgrade-button{padding:6px 10px;font-size:12px}}@media(hover:none)and (pointer:coarse),(max-width:768px){body{align-items:stretch;padding:0;overflow:hidden;height:100dvh;width:100vw}#landingPage{justify-content:flex-start;padding:0;gap:0;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch}.landing-content{margin:0 auto;padding:max(env(safe-area-inset-top),12px) 10px 4px;flex-shrink:0}.game-logo{font-size:clamp(20px,6vmin,34px);letter-spacing:2px;margin-bottom:2px;white-space:nowrap}.game-subtitle{font-size:clamp(8px,2vmin,12px);letter-spacing:2px;margin-bottom:clamp(8px,3vmin,16px)}.menu-btn{width:clamp(180px,50vw,260px);min-height:44px;padding:clamp(10px,2.5vmin,14px);font-size:clamp(13px,3vmin,16px);margin:clamp(4px,1.2vmin,8px) auto;border-width:1.5px}#advancedModifiers summary{font-size:12px!important;padding:8px 0!important}#landingLeaderboard{position:static;transform:none;width:min(320px,90vw);margin:8px auto 4px;padding:10px;max-height:30vh;overflow-y:auto}#landingLeaderboardTitle{font-size:11px;margin-bottom:6px}#landingLeaderboardList .score-entry{font-size:11px;padding:6px 8px}#landingLeaderboardList .score-entry.compact{font-size:10px;padding:4px 6px}#assetWarmStatus{font-size:10px;min-height:14px;margin:2px auto 0}#assetWarmMeter{height:6px;margin:2px auto 6px}#creditsFooter{position:relative;padding:8px 10px max(12px,env(safe-area-inset-bottom));background:linear-gradient(0deg,rgba(5,10,18,.97) 0%,rgba(5,10,18,.8) 60%,transparent 100%)}#creditsFooter p{font-size:clamp(8px,1.8vmin,12px);line-height:1.4}#creditsFooter span{font-size:clamp(9px,2vmin,14px)}#updateStamp{position:fixed;right:4px;top:max(2px,env(safe-area-inset-top));bottom:auto;font-size:9px;padding:2px 5px}.modal-box{width:92vw!important;max-width:360px;padding:14px}#gameContainer{padding:0;border-radius:0;border:none;max-width:100vw;width:100vw;height:100dvh;overflow:hidden;display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:0;align-items:stretch;box-shadow:none;position:relative;background:#0a1018}#gameTitle{display:none}#achievementToasts{top:62px;right:6px;max-width:58vw;gap:6px}.achievement-toast{padding:7px 8px}.achievement-toast-name{font-size:12px}.achievement-toast-desc{font-size:10px}#gameInfo{font-size:11px;gap:3px;margin:0;padding:2px 4px;width:100%;display:grid;grid-template-columns:repeat(auto-fit,minmax(55px,1fr));align-items:center;background:#040c16eb;border-bottom:1px solid rgba(30,80,120,.35)}.info-item{padding:3px 6px;font-size:11px;border-radius:3px;border-width:1px;min-width:0;text-align:center;background:#06121ed9;border:1px solid rgba(40,100,140,.4)}#timer{position:static;font-size:16px;font-weight:800;color:gold;margin:0;line-height:1;text-align:center;transform:none;flex:0 0 auto;padding:0 6px}#wavePreview{display:none;gap:4px;min-height:18px;margin:0}.wave-preview-dot{width:16px;height:16px;font-size:8px;border-width:1px}.wave-preview-modifier{font-size:9px;padding:2px 5px}#waveMutationBanner{display:none;min-height:0;margin:2px 0 0}.wave-mutation-chip{padding:5px 8px;gap:6px;border-radius:8px;max-width:100%}.wave-mutation-icon{width:20px;height:20px;font-size:10px}.wave-mutation-name{font-size:10px}.wave-mutation-desc{font-size:9px}#waveTelemetry{display:block;font-size:9px;margin:0;line-height:1.1;padding:2px 4px;color:#6a9ab8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}#bossHpWrap{position:absolute;top:0;left:50%;transform:translate(-50%);z-index:55;margin:0;padding:3px 8px;width:min(200px,60vw);background:#040c16e0;border-radius:0 0 8px 8px;border:1px solid rgba(140,40,40,.5);border-top:none}#bossHpLabel{font-size:9px;margin-bottom:2px}#bossHpTrack{height:8px}#sendWaveBtn{position:fixed!important;bottom:max(70px,calc(env(safe-area-inset-bottom) + 60px));right:12px;width:48px!important;height:48px!important;max-width:none;padding:0!important;border-radius:50%!important;font-size:20px!important;display:flex!important;align-items:center;justify-content:center;z-index:60;margin:0!important;min-height:0}#fastForwardBtn{position:fixed!important;bottom:max(70px,calc(env(safe-area-inset-bottom) + 60px));right:64px;width:48px!important;height:48px!important;padding:0!important;border-radius:50%!important;font-size:18px!important;z-index:60;min-height:0}#gameCanvas{min-height:0;height:100%;border-width:0;border-radius:0;margin:0;display:block;max-width:100%;width:100%}#gameContainer.duel-enabled #duelScoreBar{position:fixed;top:0;left:0;right:0;z-index:55;padding:6px 10px;font-size:11px}#gameContainer.duel-enabled #battlefieldLayout{grid-template-columns:1fr;grid-template-rows:3fr 2fr}#gameContainer.duel-enabled #battlefieldMain{min-height:0;padding-top:44px}#gameContainer.duel-enabled #opponentPane{display:grid;border-left:none;border-top:2px solid rgba(40,110,150,.5);max-height:200px;overflow-y:auto}#gameContainer.duel-enabled #opponentPane #duelScoreBar{position:static}#duelCollapseOpponentBtn{display:block}.score-value{font-size:16px}.score-name{font-size:11px;max-width:80px}.opp-stat{font-size:10px}#towerShop{display:flex;flex-direction:row;overflow-x:auto;overflow-y:hidden;gap:4px;margin:0;width:100%;padding:4px 6px;-webkit-overflow-scrolling:touch;scroll-snap-type:x mandatory;background:#040c16f2;border-top:1.5px solid rgba(30,80,120,.45);min-height:54px;max-height:68px}.tower-button{min-width:74px;max-width:88px;flex-shrink:0;scroll-snap-align:start;padding:4px 5px;font-size:10px;border-radius:6px;min-height:46px;border:1.5px solid rgba(40,110,150,.55);line-height:1.15;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px}.tower-button br{display:none}.small-text{font-size:9px;margin-top:1px}.tower-icon{font-size:12px;margin-bottom:1px}.upgrade-popup{position:fixed;bottom:68px;left:4px;right:4px;max-width:none;width:auto;z-index:70;border-radius:10px;max-height:40vh;overflow-y:auto;min-width:160px;padding:8px;font-size:10px}#upgradePanel{max-height:none;overflow-y:auto;padding:8px 10px;font-size:12px}#upgradePanel h3{font-size:14px!important;margin-bottom:2px!important}#upgradePanel p{font-size:11px!important;margin-bottom:2px!important}.upgrade-button{padding:6px 12px;font-size:11px;margin:2px;min-height:36px}#upgradePanelBackdrop{display:none;position:fixed;inset:0;background:#00000059;z-index:65}#gameActions{position:fixed;top:max(4px,env(safe-area-inset-top));left:4px;z-index:55;display:flex;gap:3px;margin:0;width:auto;padding:0;background:transparent;border-top:none}#gameActions button,#restartGameBtn,#quitToMenuBtn{min-height:28px!important;min-width:28px;font-size:9px!important;padding:3px 4px!important;border-radius:6px;margin:0!important;width:auto}#restartBtn,#menuBtn{font-size:11px;padding:6px 16px}#soundToggle{bottom:auto;top:4px;right:6px;padding:4px 8px;font-size:9px;z-index:60}#fpsCounter{top:6px;right:6px;padding:3px 6px;font-size:10px}#towerShop:before{content:"";position:sticky;left:0;width:16px;min-height:100%;background:linear-gradient(90deg,rgba(4,12,22,.95),transparent);pointer-events:none;z-index:1;flex-shrink:0}#towerShop:after{content:"";position:sticky;right:0;width:16px;min-height:100%;background:linear-gradient(270deg,rgba(4,12,22,.95),transparent);pointer-events:none;z-index:1;flex-shrink:0}.tower-button.selected{box-shadow:0 0 0 2px #3cb4ffb3,0 0 12px #288cc84d}.tower-button:disabled{text-decoration:line-through;opacity:.4}.tower-button.affordable{animation:towerAffordable 2s ease infinite}}@media(hover:none)and (pointer:coarse)and (max-height:400px){#creditsFooter{display:none}}@media(hover:none)and (pointer:coarse)and (max-height:760px){#upgradePanel{min-height:24px;padding:2px 4px}#upgradePanel p{font-size:9px!important}}@media(hover:none)and (pointer:coarse)and (orientation:landscape){#gameContainer{grid-template-rows:auto minmax(0,1fr) auto}#towerShop{max-height:56px;min-height:48px;gap:3px;padding:3px 4px}.tower-button{min-width:64px;max-width:78px;min-height:42px}#soloMinimap{width:100px!important;height:60px!important}#towerShop:before,#towerShop:after{content:none}#gameInfo{grid-template-columns:repeat(4,minmax(0,1fr));gap:3px;padding:2px 6px}.info-item{font-size:10px;padding:3px 4px}#timer{font-size:18px}#waveTelemetry{font-size:10px;margin:1px 0 2px}#towerShop,#gameActions{margin-top:1px}#landingPage{justify-content:flex-start;padding-top:max(6px,env(safe-area-inset-top));overflow-y:auto}.landing-content{margin-top:2vh;padding:4px 10px 0}.game-logo{font-size:clamp(18px,4.2vw,30px);margin-bottom:0}.game-subtitle{font-size:clamp(8px,1.7vw,11px);margin-bottom:6px}.menu-btn{width:min(44vw,280px);padding:8px;font-size:12px;margin:3px auto}#assetWarmStatus{font-size:9px;min-height:12px}#creditsFooter{position:relative;padding:4px 8px}#updateStamp{top:max(2px,env(safe-area-inset-top));right:max(4px,env(safe-area-inset-right));font-size:9px;padding:2px 5px}#gameContainer.duel-enabled #duelScoreBar{position:static;padding:8px 14px}#gameContainer.duel-enabled #battlefieldLayout{grid-template-columns:1fr 1fr;grid-template-rows:1fr}#gameContainer.duel-enabled #opponentPane{border-left:2px solid rgba(40,110,150,.5);border-top:none;min-width:280px}}@media(hover:none)and (pointer:coarse)and (orientation:landscape)and (max-height:520px){#gameContainer{grid-template-rows:auto minmax(0,1fr) auto}#gameInfo{font-size:10px;padding:1px 3px;gap:2px}.info-item{font-size:9px;padding:1px 3px}#timer{font-size:12px;margin:0}#sendWaveBtn{bottom:max(56px,calc(env(safe-area-inset-bottom) + 48px));width:38px!important;height:38px!important;font-size:16px!important}#fastForwardBtn{bottom:max(56px,calc(env(safe-area-inset-bottom) + 48px));right:54px;width:38px!important;height:38px!important;font-size:14px!important}#gameCanvas{min-height:55vh}#towerShop{max-height:44px;min-height:40px;padding:2px 3px;gap:3px}.tower-button{min-width:60px;min-height:36px;font-size:9px}#gameContainer.duel-enabled #battlefieldLayout{grid-template-columns:1fr 1fr;grid-template-rows:1fr}.score-value{font-size:14px}.score-name{font-size:10px;max-width:60px}}@media(hover:none){.menu-btn:hover,.tower-button:hover,.upgrade-button:hover{transform:none}.tower-button,.menu-btn{-webkit-tap-highlight-color:transparent}}@keyframes towerAffordable{0%{border-color:#28a0644d}50%{border-color:#28a064b3}to{border-color:#28a0644d}}
