:root{--bg-color:#0d1117;--text-color:#e6edf3;--glow-color:#58a6ff;--glow-color-active:#ff7b72;--board-bg:#161b22cc;--border-color:#30363d}*{box-sizing:border-box;margin:0;padding:0}body{min-width:320px;min-height:100vh;color:var(--text-color);background-color:#000;justify-content:center;align-items:center;margin:0;font-family:Courier New,Courier,monospace;display:flex}#root{background-color:#0d1117;flex-direction:column;width:100%;max-width:450px;height:100dvh;margin:0 auto;display:flex;position:relative;overflow:hidden;box-shadow:0 0 30px #58a6ff26}.tower-base{aspect-ratio:1;border:2px solid var(--border-color);cursor:pointer;background:linear-gradient(145deg,#1f242d,#161a20);border-radius:16px;justify-content:center;align-items:center;transition:all .2s cubic-bezier(.175,.885,.32,1.275);display:flex;position:relative;box-shadow:5px 5px 15px #0009,-5px -5px 15px #ffffff08}.tower-base:hover{border-color:#58a6ff80;transform:translateY(-2px);box-shadow:5px 8px 20px #0009,-5px -5px 15px #ffffff08,inset 0 0 10px #58a6ff33}.tower-base.selected{border-color:var(--glow-color-active);box-shadow:0 0 15px var(--glow-color-active);z-index:2;transform:translateY(-4px)scale(1.05)}.tower-base.disabled{cursor:not-allowed;opacity:.55;background:linear-gradient(145deg,#111318,#0d1017);border-color:#ff32324d;box-shadow:inset 0 0 12px #ff323226}.tower-base.disabled:hover{border-color:#ff323266;transform:none;box-shadow:inset 0 0 12px #ff323226}.tower-core{background:#0d1117;border:1px solid #ffffff1a;border-radius:50%;justify-content:center;align-items:center;width:60%;height:60%;transition:all .3s;display:flex;box-shadow:inset 0 0 10px #000c}.tower-base.selected .tower-core{border-color:var(--glow-color-active);box-shadow:0 0 20px var(--glow-color-active), inset 0 0 10px #00000080;background:radial-gradient(circle,#ff7b72cc 0%,#0d1117 70%)}.tower-base.disabled .tower-core{background:#0a0c10;border-color:#ff323233}.tower-number{color:#e6edf3cc;text-shadow:0 0 5px #fff3;-webkit-user-select:none;user-select:none;font-family:monospace;font-size:2.2rem;font-weight:900;transition:all .3s}.tower-base:hover .tower-number{color:var(--text-color);text-shadow:0 0 8px #fff6}.tower-base.selected .tower-number{color:#fff;text-shadow:0 0 15px #fff;font-size:2.5rem}.tower-lock{-webkit-user-select:none;user-select:none;filter:grayscale(.5);font-size:1.4rem}.game-board-container{background:var(--board-bg);border-top:1px solid var(--border-color);z-index:10;flex-direction:column;align-items:center;padding:5px 15px;display:flex;box-shadow:0 -5px 20px #00000080}.game-board-grid{grid-template-columns:repeat(3,1fr);gap:8px;width:100%;max-width:min(350px,45vh);display:grid}.fusion-feedback{color:#ffffff80;text-align:center;white-space:nowrap;background:#58a6ff1a;border:1px solid #58a6ff4d;border-radius:8px;justify-content:center;align-items:center;width:100%;max-width:400px;min-height:24px;margin-top:8px;padding:4px 10px;font-size:clamp(12px,4vw,14px);transition:all .3s;display:flex}.fusion-feedback.active{border-color:var(--glow-color);color:var(--glow-color);text-shadow:0 0 10px var(--glow-color);background:#58a6ff33;font-size:clamp(14px,5vw,18px);font-weight:700;animation:1.5s infinite pulse}@keyframes pulse{0%{box-shadow:0 0 5px var(--glow-color)}50%{box-shadow:0 0 15px var(--glow-color)}to{box-shadow:0 0 5px var(--glow-color)}}.shake-board{animation:.4s cubic-bezier(.36,.07,.19,.97) both shake}@keyframes shake{0%{transform:translate(0)rotate(0)}10%{transform:translate(-10px,-10px)rotate(-2deg)}20%{transform:translate(10px,10px)rotate(2deg)}30%{transform:translate(-10px,10px)rotate(-1deg)}40%{transform:translate(10px,-10px)rotate(1deg)}50%{transform:translate(-5px,-5px)rotate(-1deg)}60%{transform:translate(5px,5px)rotate(1deg)}to{transform:translate(0)rotate(0)}}.fusion-feedback.miss{color:#ff7b72!important;text-shadow:0 0 10px #ff7b72!important;background:#ff7b7233!important;border-color:#ff7b72!important;animation:none!important}.fusion-feedback.hit{color:#2ea043!important;text-shadow:0 0 10px #2ea043!important;background:#2ea04333!important;border-color:#2ea043!important;animation:.3s ease-out hit-flash!important}@keyframes hit-flash{0%{transform:scale(1);box-shadow:0 0 #2ea043}50%{transform:scale(1.05);box-shadow:0 0 20px #2ea043}to{transform:scale(1);box-shadow:0 0 #2ea043}}.enemy-entity{z-index:5;justify-content:center;align-items:center;width:45px;height:45px;display:flex;position:absolute;transform:translate(-50%,-50%)}.enemy-shield{background:#ff7b7233;border:2px solid #ff7b72;border-radius:8px;width:100%;height:100%;animation:4s linear infinite spin;position:absolute;transform:rotate(45deg);box-shadow:0 0 10px #ff7b7280}.enemy-number{color:#fff;text-shadow:0 0 5px #000;z-index:2;font-family:monospace;font-size:1.5rem;font-weight:700;position:relative}@keyframes spin{0%{transform:rotate(45deg)}to{transform:rotate(405deg)}}.boss-entity{z-index:6;flex-direction:column;justify-content:center;align-items:center;width:90px;height:90px;display:flex;position:absolute;transform:translate(-50%,-50%)}.boss-shield{background:#a371f733;border:3px solid #a371f7;border-radius:12px;width:100%;height:100%;animation:6s linear infinite boss-spin;position:absolute;transform:rotate(45deg);box-shadow:0 0 30px #a371f7cc}.boss-number{color:#fff;text-shadow:0 0 10px #a371f7,0 0 20px #a371f7;z-index:2;font-family:monospace;font-size:2.5rem;font-weight:900;position:relative}.boss-hp-bar-container{z-index:3;background:#161b22;border:1px solid #30363d;border-radius:3px;width:80%;height:6px;position:absolute;top:-15px;overflow:hidden}.boss-hp-bar{background:#2ea043;height:100%;transition:width .3s}@keyframes boss-spin{0%{transform:rotate(45deg)scale(1)}50%{transform:rotate(225deg)scale(1.1)}to{transform:rotate(405deg)scale(1)}}.heal-entity,.bonus-entity,.time-entity{z-index:5;justify-content:center;align-items:center;width:50px;height:50px;display:flex;position:absolute;transform:translate(-50%,-50%)}.heal-shield{background:#2ea04333;border:3px dashed #2ea043;border-radius:50%;width:100%;height:100%;animation:4s linear infinite pulse-spin;position:absolute;box-shadow:0 0 15px #2ea043cc}.time-shield{background:#58a6ff33;border:3px dotted #58a6ff;border-radius:12px;width:100%;height:100%;animation:3s linear infinite reverse pulse-spin;position:absolute;box-shadow:0 0 15px #58a6ffcc}.bonus-shield{background:#ffd70033;border:3px double gold;border-radius:4px;width:100%;height:100%;animation:2s linear infinite pulse-spin-reverse;position:absolute;box-shadow:0 0 15px #ffd700cc}@keyframes pulse-spin{0%{transform:rotate(0)scale(1)}50%{transform:rotate(180deg)scale(1.1)}to{transform:rotate(360deg)scale(1)}}@keyframes pulse-spin-reverse{0%{transform:rotate(45deg)scale(1)}50%{transform:rotate(-135deg)scale(1.2)}to{transform:rotate(-315deg)scale(1)}}html,body,#root{background-color:#0d1117;width:100%;height:100%;margin:0;padding:0;overflow:hidden}#root{flex-direction:column;display:flex}.explosion{pointer-events:none;z-index:6;width:60px;height:60px;position:absolute;transform:translate(-50%,-50%)}.explosion-core{background:radial-gradient(circle,#fff 0%,#ff7b72 30%,#0000 70%);width:100%;height:100%;animation:.3s cubic-bezier(.175,.885,.32,1.275) forwards explode-core;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)scale(0)}.explosion-ring{border:3px solid #ff7b72;border-radius:50%;width:100%;height:100%;animation:.4s ease-out forwards explode-ring;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)scale(.5)}@keyframes explode-core{0%{opacity:1;transform:translate(-50%,-50%)scale(0)}to{opacity:0;transform:translate(-50%,-50%)scale(1.5)}}@keyframes explode-ring{0%{opacity:1;border-width:10px;transform:translate(-50%,-50%)scale(.5)}to{opacity:0;border-width:0;transform:translate(-50%,-50%)scale(2)}}.laser-beam{filter:drop-shadow(0 0 10px var(--glow-color-active));animation:.3s ease-out forwards laser-fade}@keyframes laser-fade{0%{stroke-width:12px;opacity:1}to{stroke-width:0;opacity:0}}.menu-container{z-index:10;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:20px;padding:40px 20px;display:flex}.glass-panel{-webkit-backdrop-filter:blur(12px);background:#0a0f1973;border:1px solid #58a6ff33;border-radius:16px;flex-direction:column;align-items:center;width:100%;max-width:400px;padding:30px 20px;display:flex;box-shadow:0 8px 32px #0000005e}.glitch-title{white-space:nowrap;color:#fff;text-transform:uppercase;letter-spacing:2px;text-shadow:0 0 10px #58a6ff,0 0 20px #58a6ff,0 0 40px #58a6ff,0 0 80px #a371f7;margin-bottom:10px;font-size:clamp(36px,10vw,48px);font-weight:900;animation:2s infinite alternate neon-pulse,5s infinite glitch-anim}@keyframes neon-pulse{0%{text-shadow:0 0 10px #58a6ff,0 0 20px #58a6ff,0 0 40px #58a6ff,0 0 80px #a371f7}to{text-shadow:0 0 5px #58a6ff,0 0 10px #58a6ff,0 0 20px #58a6ff,0 0 40px #a371f7}}@keyframes glitch-anim{0%{transform:translate(0)skew(0deg)}2%{color:#ff7b72;transform:translate(-2px,1px)skew(-10deg)}4%{color:#58a6ff;transform:translate(2px,-1px)skew(10deg)}6%{color:#fff;transform:translate(0)skew(0deg)}to{transform:translate(0)skew(0deg)}}.menu-btn{width:100%;color:var(--text-color);cursor:pointer;background:#1e283c80;border:1px solid #ffffff1a;border-radius:12px;flex-direction:column;align-items:center;gap:8px;padding:20px;transition:all .3s cubic-bezier(.175,.885,.32,1.275);display:flex;position:relative;overflow:hidden}.menu-btn:before{content:"";background:radial-gradient(circle,#fff3 0%,#0000 70%);border-radius:50%;width:0;height:0;transition:width .3s,height .3s;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.menu-btn:hover:before{width:200%;height:200px}.menu-btn:hover{background:#283750cc;transform:scale(1.05)}.menu-btn:active{transform:scale(.95)}.menu-btn strong{white-space:nowrap;letter-spacing:1px;text-transform:uppercase;z-index:1;font-size:clamp(20px,6vw,26px)}.menu-btn span{opacity:.8;z-index:1;font-size:14px}.menu-btn.easy:hover{border-color:#2ea043;box-shadow:0 0 25px #2ea04399}.menu-btn.easy strong{color:#2ea043;text-shadow:0 0 10px #2ea04380}.menu-btn.normal:hover{border-color:#58a6ff;box-shadow:0 0 25px #58a6ff99}.menu-btn.normal strong{color:#58a6ff;text-shadow:0 0 10px #58a6ff80}.screen-shake{animation:.4s cubic-bezier(.36,.07,.19,.97) both shake}.flash-overlay{z-index:9999;pointer-events:none;background:#fff;animation:.5s ease-out forwards flash-fade;position:fixed;inset:0}@keyframes flash-fade{0%{opacity:1}to{opacity:0}}.particles-bg{z-index:0;pointer-events:none;position:absolute;inset:0;overflow:hidden}.particle{color:#58a6ff26;font-family:monospace;font-size:24px;font-weight:700;animation:linear forwards float-up;position:absolute}.combo-wrapper{z-index:10;pointer-events:none;flex-direction:column;align-items:center;animation:.25s cubic-bezier(.175,.885,.32,1.5) forwards combo-wrapper-in,.6s ease-in 1.8s forwards combo-wrapper-out;display:flex;position:absolute;top:80px;right:20px}@keyframes combo-wrapper-in{0%{opacity:0;transform:scale(.3)translateY(20px)}60%{opacity:1;transform:scale(1.15)translateY(-4px)}to{opacity:1;transform:scale(1)translateY(0)}}@keyframes combo-wrapper-out{0%{opacity:1;transform:scale(1)translateY(0)}to{opacity:0;transform:scale(.8)translateY(-20px)}}.combo-ring{opacity:0;border:3px solid;border-radius:50%;width:80px;height:80px;animation:.5s ease-out forwards combo-ring-burst;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)scale(0)}@keyframes combo-ring-burst{0%{opacity:1;transform:translate(-50%,-50%)scale(.2)}60%{opacity:.8}to{opacity:0;transform:translate(-50%,-50%)scale(2.5)}}.combo-label{letter-spacing:3px;margin-bottom:-8px;font-size:13px;font-style:italic;font-weight:900;animation:.2s ease-out 50ms both combo-label-in}@keyframes combo-label-in{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.combo-number{font-family:monospace;font-size:72px;font-weight:900;line-height:1;animation:.3s cubic-bezier(.175,.885,.32,1.6) both combo-number-slam}@keyframes combo-number-slam{0%{opacity:0;transform:scale(0)rotate(-15deg)}70%{opacity:1;transform:scale(1.3)rotate(3deg)}to{opacity:1;transform:scale(1)rotate(0)}}.combo-shake{animation:.3s cubic-bezier(.175,.885,.32,1.6) both combo-number-slam,80ms linear .35s infinite combo-tremor}@keyframes combo-tremor{0%{transform:translate(0)rotate(0)}25%{transform:translate(-2px,1px)rotate(-1deg)}50%{transform:translate(2px,-1px)rotate(1deg)}75%{transform:translate(-1px,2px)rotate(-.5deg)}to{transform:translate(0)rotate(0)}}.combo-mult{margin-top:2px;font-size:15px;font-weight:900;animation:.2s ease-out .15s both combo-text-pop}.combo-text{text-shadow:0 0 10px;font-size:17px;font-weight:700;animation:.2s ease-out .2s both combo-text-pop}@keyframes combo-text-pop{0%{opacity:0;transform:scale(.7)}to{opacity:1;transform:scale(1)}}.mode-card{cursor:pointer;background:#141c2d99;border:1px solid #ffffff14;border-radius:16px;align-items:center;gap:14px;width:100%;max-width:420px;margin-bottom:12px;padding:18px 20px;transition:transform .2s,box-shadow .2s,border-color .2s;display:flex}.mode-card:active{transform:scale(.97)}.mode-card--stage{background:#a371f712;border-color:#a371f759}.mode-card--stage:hover{border-color:#a371f7;transform:translateY(-2px);box-shadow:0 0 24px #a371f759}.mode-card--timeattack{background:#58a6ff0f;border-color:#58a6ff4d}.mode-card--timeattack:hover{border-color:#58a6ff;transform:translateY(-2px);box-shadow:0 0 24px #58a6ff4d}.mode-card--easy{background:#2ea04312;border-color:#2ea04359}.mode-card--easy:hover{border-color:#2ea043;transform:translateY(-2px);box-shadow:0 0 24px #2ea0434d}.mode-card--normal{background:#58a6ff0f;border-color:#58a6ff4d}.mode-card--normal:hover{border-color:#58a6ff;transform:translateY(-2px);box-shadow:0 0 24px #58a6ff4d}.mode-card__icon{flex-shrink:0;font-size:32px}.mode-card__body{text-align:left;flex:1}.mode-card__title{letter-spacing:1px;color:#e6edf3;margin-bottom:4px;font-size:18px;font-weight:900}.mode-card--stage .mode-card__title{color:#a371f7}.mode-card--timeattack .mode-card__title{color:#58a6ff}.mode-card__desc{opacity:.65;font-size:12px;line-height:1.5}.mode-card__progress{color:#a371f7;margin-top:5px;font-size:11px;font-weight:700}.mode-card__arrow{opacity:.4;flex-shrink:0;font-size:28px;transition:opacity .2s,transform .2s}.mode-card:hover .mode-card__arrow{opacity:.9;transform:translate(4px)}.menu-btn.stage-btn{background:#a371f714;border-color:#a371f780}.menu-btn.stage-btn:hover{background:#a371f726;border-color:#a371f7;box-shadow:0 0 25px #a371f780}.menu-btn.stage-btn strong{color:#a371f7;text-shadow:0 0 10px #a371f780;font-size:clamp(18px,5vw,22px)}.stage-card{width:100%;color:var(--text-color);cursor:pointer;text-align:left;background:#1e283c66;border:1px solid #ffffff14;border-radius:10px;align-items:center;padding:12px 16px;transition:all .2s;display:flex}.stage-card:hover:not(:disabled){background:#58a6ff1a;border-color:#58a6ff66;transform:translate(4px)}.stage-card.locked{opacity:.4;cursor:not-allowed}.overlay-backdrop{z-index:100;background:#000000e0;justify-content:center;align-items:center;padding:20px;display:flex;position:absolute;inset:0}.stage-result-panel{border-radius:20px;flex-direction:column;align-items:center;width:100%;max-width:340px;padding:32px 24px;animation:.4s cubic-bezier(.175,.885,.32,1.275) forwards panel-pop;display:flex}.stage-result-panel.cleared{background:#0a1e0ff2;border:2px solid #2ea04399;box-shadow:0 0 40px #2ea0434d}.stage-result-panel.failed{background:#1e0a0af2;border:2px solid #ff7b7280;box-shadow:0 0 40px #ff7b7233}@keyframes panel-pop{0%{opacity:0;transform:scale(.7)}to{opacity:1;transform:scale(1)}}.stage-result-badge{letter-spacing:3px;color:#2ea043;text-shadow:0 0 10px #2ea043;text-transform:uppercase;margin-bottom:12px;font-size:13px;font-weight:900;animation:1s infinite alternate badge-pulse}.stage-result-badge.failed-badge{color:#ff7b72;text-shadow:0 0 10px #ff7b72;animation:none}@keyframes badge-pulse{0%{text-shadow:0 0 10px #2ea043}to{text-shadow:0 0 25px #2ea043,0 0 40px #2ea043}}@keyframes float-up{0%{opacity:0;transform:translateY(100vh)scale(.5)}20%{opacity:1}80%{opacity:1}to{opacity:0;transform:translateY(-100px)scale(1.5)}}.game-failed-active{filter:grayscale(.8)brightness(.6);transition:filter .8s ease-out}.screen-shake-intense{animation:.6s cubic-bezier(.36,.07,.19,.97) both shake-intense}@keyframes shake-intense{0%,to{transform:translate(0)rotate(0)}10%,30%,50%,70%,90%{transform:translate(-15px,-15px)rotate(-3deg)}20%,40%,60%,80%{transform:translate(15px,15px)rotate(3deg)}}
