:root{--abyss-0:#01040c;--abyss-1:#02060f;--abyss-2:#041022;--glow-cyan:#5fe6ff;--glow-teal:#37f0c8;--glow-gold:#ffd66b;--glow-violet:#b98cff;--glow-rose:#ff6b9d;--ink:#dff3ff;--ink-dim:#7fa6c4;--font-display:"Cinzel", serif;--font-body:"Rajdhani", system-ui, sans-serif}*{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--abyss-0);height:100%;color:var(--ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;-webkit-user-select:none;user-select:none;touch-action:none;overscroll-behavior:none;overflow:hidden}#game{z-index:0;width:100%;height:100%;display:block;position:fixed;inset:0}#ui-root{z-index:10;pointer-events:none;position:fixed;inset:0}#ui-root>*{pointer-events:auto}.btn{font-family:var(--font-body);letter-spacing:.18em;text-transform:uppercase;color:var(--abyss-0);cursor:pointer;background:linear-gradient(#8ff2ff,#37c8f0);border:none;border-radius:10px;padding:.9em 2.4em;font-size:1rem;font-weight:700;transition:transform .12s,box-shadow .2s,filter .2s;box-shadow:0 0 0 1px #78e6ff80,0 0 24px #46c8ff73,0 10px 30px #00000080}.btn:hover{filter:brightness(1.1);transform:translateY(-2px);box-shadow:0 0 0 1px #96f0ffb3,0 0 40px #5adcffb3,0 14px 36px #0000008c}.btn:active{transform:translateY(0)}.btn.ghost{color:var(--ink);background:#14325059;box-shadow:inset 0 0 0 1px #78c8ff40,0 8px 24px #0006}.btn.ghost:hover{background:#1e466e80;box-shadow:inset 0 0 0 1px #96dcff80,0 0 24px #5ac8ff4d}.kicker{font-family:var(--font-body);letter-spacing:.5em;text-transform:uppercase;color:var(--glow-teal);text-shadow:0 0 12px #37f0c899;font-size:.72rem;font-weight:600}@keyframes rise{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse-glow{0%,to{filter:drop-shadow(0 0 18px #5fe6ff8c)}50%{filter:drop-shadow(0 0 34px #5fe6ffe6)}}.menu{flex-direction:column;justify-content:center;gap:1.4rem;padding:clamp(2rem,8vw,9rem);display:flex;position:absolute;inset:0}.menu .title{font-family:var(--font-display);letter-spacing:.02em;color:#eafaff;text-shadow:0 0 20px #5fe6ffb3,0 0 60px #37c8ff66,0 0 120px #37a0ff40;font-size:clamp(3.4rem,13vw,9rem);font-weight:800;line-height:.9;animation:1.1s cubic-bezier(.16,1,.3,1) both title-in,4s ease-in-out 1.1s infinite pulse-glow}@keyframes title-in{0%{opacity:0;letter-spacing:.22em;filter:blur(10px)drop-shadow(0 0 40px #5fe6ffe6)}to{opacity:1;letter-spacing:.02em;filter:blur()drop-shadow(0 0 18px #5fe6ff8c)}}.menu .title .dim{color:#9fd8ff;text-shadow:0 0 16px #37f0c88c,0 0 48px #37c8ff4d}.menu .tagline{max-width:34ch;color:var(--ink-dim);font-size:clamp(1rem,2vw,1.3rem);font-weight:500;line-height:1.5;animation:.8s .15s both rise}.menu .actions{align-items:center;gap:1rem;margin-top:.6rem;animation:.8s .3s both rise;display:flex}.menu .stats-strip{gap:2.4rem;margin-top:2.2rem;animation:.8s .45s both rise;display:flex}.menu .stats-strip .stat{flex-direction:column;gap:.15rem;display:flex}.menu .stats-strip .stat .label{letter-spacing:.3em;text-transform:uppercase;color:var(--ink-dim);font-size:.68rem}.menu .stats-strip .stat .value{font-family:var(--font-display);color:var(--glow-gold);text-shadow:0 0 16px #ffd66b66;font-size:1.5rem;font-weight:600}.menu .hints{letter-spacing:.12em;color:var(--ink-dim);margin-top:1.6rem;font-size:.82rem;animation:.8s .6s both rise}.hud{pointer-events:none;position:absolute;inset:0}.hud .xp-bar{background:#0a1e3299;height:6px;position:absolute;top:0;left:0;right:0}.hud .xp-bar .fill{background:linear-gradient(90deg, var(--glow-teal), var(--glow-cyan));width:0%;height:100%;transition:width .12s linear;box-shadow:0 0 12px #37f0c8cc}.hud .top-row{justify-content:space-between;align-items:flex-start;display:flex;position:absolute;top:18px;left:22px;right:22px}.hud .timer{font-family:var(--font-display);color:#eafaff;text-shadow:0 0 16px #5fe6ff80;letter-spacing:.06em;font-size:1.9rem;font-weight:600}.hud .hp-wrap{width:220px}.hud .hp-label{letter-spacing:.3em;text-transform:uppercase;color:var(--ink-dim);margin-bottom:4px;font-size:.66rem}.hud .hp-bar{background:#0a1e32b3;border-radius:6px;height:12px;overflow:hidden;box-shadow:inset 0 0 0 1px #78c8ff26}.hud .hp-bar .fill{background:linear-gradient(90deg,#ff6b9d,#ff9d6b);width:100%;height:100%;transition:width .15s;box-shadow:0 0 12px #ff6b9d99}.hud .gold{font-family:var(--font-display);color:var(--glow-gold);text-shadow:0 0 12px #ffd66b80;font-size:1.1rem}.hud .combo{font-family:var(--font-display);color:var(--glow-gold);text-shadow:0 0 18px #ffd66bb3;opacity:0;font-size:1.3rem;transition:opacity .2s;position:absolute;top:64px;left:50%;transform:translate(-50%)}.hud .combo.show{opacity:1}.hud .level-badge{letter-spacing:.2em;text-transform:uppercase;color:var(--glow-cyan);font-size:.8rem;position:absolute;top:60px;left:22px}.hud .mute-btn{pointer-events:auto}.levelup{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:radial-gradient(#0410228c,#01040cd9);flex-direction:column;justify-content:center;align-items:center;gap:2rem;display:flex;position:absolute;inset:0}.levelup .heading{text-align:center}.levelup .heading .kicker{margin-bottom:.5rem;display:block}.levelup .heading h2{font-family:var(--font-display);color:#eafaff;text-shadow:0 0 24px #5fe6ff99;font-size:clamp(1.8rem,5vw,3rem)}.levelup .cards{perspective:900px;flex-wrap:wrap;justify-content:center;gap:1.4rem;display:flex}.upgrade-card{cursor:pointer;width:220px;min-height:280px;transform-style:preserve-3d;background:linear-gradient(165deg,#14304ee6,#061224f2);border-radius:16px;flex-direction:column;gap:.7rem;padding:1.6rem 1.4rem;transition:transform .15s,box-shadow .2s;animation:.4s both rise;display:flex;box-shadow:inset 0 0 0 1px #78c8ff33,0 18px 40px #0009}.upgrade-card:nth-child(2){animation-delay:80ms}.upgrade-card:nth-child(3){animation-delay:.16s}.upgrade-card:hover{box-shadow:inset 0 0 0 1px #96e6ff99,0 0 36px #5adcff66,0 22px 48px #000000a6}.upgrade-card .hotkey{width:1.5em;height:1.5em;color:var(--ink-dim);background:#06102080;border-radius:6px;justify-content:center;align-items:center;font-size:.72rem;font-weight:700;display:flex;position:absolute;top:.6rem;right:.7rem;box-shadow:inset 0 0 0 1px #78c8ff40}.upgrade-card{position:relative}.upgrade-card .icon{filter:drop-shadow(0 0 12px);font-size:2.4rem;line-height:1}.upgrade-card .name{font-family:var(--font-display);color:#eafaff;font-size:1.25rem;font-weight:600}.upgrade-card .level{letter-spacing:.24em;text-transform:uppercase;color:var(--glow-teal);font-size:.68rem}.upgrade-card .desc{color:var(--ink-dim);font-size:.92rem;font-weight:500;line-height:1.45}.upgrade-card.evo{background:linear-gradient(165deg,#785814eb,#281806f5);animation:1.6s ease-in-out infinite evo-pulse;position:relative;overflow:hidden;box-shadow:inset 0 0 0 1px #ffd66ba6,0 0 46px #ffc85066,0 18px 40px #0009}.upgrade-card.evo:before{content:"";border-radius:inherit;pointer-events:none;background:linear-gradient(115deg,#0000 30%,#fff0be47 50%,#0000 70%) 0 0/250% 100%;animation:2.4s linear infinite evo-shimmer;position:absolute;inset:0}.upgrade-card.evo .name{color:#ffe08a}.upgrade-card.evo .level{color:#ffd66b;text-shadow:0 0 12px #ffc850cc}@keyframes evo-pulse{0%,to{box-shadow:inset 0 0 0 1px #ffd66ba6,0 0 40px #ffc85052,0 18px 40px #0009}50%{box-shadow:inset 0 0 0 1px #ffe08ae6,0 0 60px #ffc8508c,0 18px 40px #0009}}@keyframes evo-shimmer{0%{background-position:180% 0}to{background-position:-80% 0}}.levelup .reroll{letter-spacing:.2em;font-size:.8rem}.gameover{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);text-align:center;background:radial-gradient(#1e061080,#01040ce6);flex-direction:column;justify-content:center;align-items:center;gap:1.6rem;display:flex;position:absolute;inset:0}.gameover h1{font-family:var(--font-display);color:#ffd0dd;text-shadow:0 0 24px #ff6b9db3,0 0 80px #ff508266;font-size:clamp(2.6rem,9vw,6rem)}.gameover.victory h1{color:#fff4d6;text-shadow:0 0 24px #ffd66bcc,0 0 80px #ffbe5073}.gameover .summary{flex-wrap:wrap;justify-content:center;gap:2.6rem;display:flex}.gameover .summary .stat{flex-direction:column;gap:.2rem;display:flex}.gameover .summary .stat .label{letter-spacing:.3em;text-transform:uppercase;color:var(--ink-dim);font-size:.66rem}.gameover .summary .stat .value{font-family:var(--font-display);color:var(--glow-cyan);font-size:1.7rem}.gameover .hook{color:var(--glow-gold);text-shadow:0 0 14px #ffd66b80;font-size:1rem}.gameover .actions{flex-wrap:wrap;justify-content:center;gap:1rem;display:flex}.shop{background:radial-gradient(at top,#06142899,#01040ceb);flex-direction:column;gap:1.6rem;padding:clamp(1.5rem,5vw,4rem);display:flex;position:absolute;inset:0;overflow-y:auto}.shop .head{justify-content:space-between;align-items:baseline;display:flex}.shop .head h2{font-family:var(--font-display);color:#eafaff;text-shadow:0 0 20px #5fe6ff80;font-size:clamp(1.8rem,5vw,3rem)}.shop .gold-balance{font-family:var(--font-display);color:var(--glow-gold);text-shadow:0 0 14px #ffd66b80;font-size:1.4rem}.shop .grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:1.2rem;display:grid}.shop-item{background:linear-gradient(165deg,#122a46cc,#061020e6);border-radius:14px;flex-direction:column;gap:.6rem;padding:1.4rem;display:flex;box-shadow:inset 0 0 0 1px #78c8ff26}.shop-item .icon{filter:drop-shadow(0 0 10px);font-size:2rem}.shop-item .name{font-family:var(--font-display);color:#eafaff;font-size:1.15rem}.shop-item .desc{color:var(--ink-dim);flex:1;font-size:.88rem;line-height:1.4}.shop-item .buy{align-self:flex-start;padding:.6em 1.4em;font-size:.78rem}.shop-item.owned{opacity:.55}.shop-item.maxed .buy{pointer-events:none}.shop .section-label{letter-spacing:.32em;color:var(--ink-dim);margin-top:.6rem;font-size:.7rem}.shop .pips{gap:.4rem;display:flex}.shop .pip{background:#78c8ff1f;border-radius:50%;width:10px;height:10px;box-shadow:inset 0 0 0 1px #78c8ff40}.shop .pip.on{background:var(--pip-color,#7fe9ff);box-shadow:0 0 8px var(--pip-color,#7fe9ff)}.btn:disabled{opacity:.4;pointer-events:none;filter:saturate(.4)}.mute-btn{color:#cfeeff;cursor:pointer;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#06102099;border:1px solid #78c8ff40;border-radius:50%;width:42px;height:42px;font-size:1.1rem;transition:box-shadow .15s;position:absolute;top:.9rem;right:1rem}.mute-btn:hover{box-shadow:0 0 14px #5fe6ff59}.toggle.on{color:var(--glow-gold);border-color:#ffd66b80;box-shadow:0 0 16px #ffd66b40}.gameover .evo-list{letter-spacing:.14em;color:#b98cff;text-shadow:0 0 12px #b98cff66;font-size:.85rem}.gameover .new-best{flex-wrap:wrap;justify-content:center;gap:.8rem;display:flex}.gameover .new-best .badge{letter-spacing:.22em;text-transform:uppercase;color:#1a1206;background:linear-gradient(#ffe9a8,#ffd66b);border-radius:999px;padding:.5em 1.2em;font-size:.78rem;font-weight:700;animation:.5s cubic-bezier(.34,1.56,.64,1) both badge-pop;box-shadow:0 0 24px #ffd66b8c}@keyframes badge-pop{0%{opacity:0;transform:scale(.6)}to{opacity:1;transform:scale(1)}}.joystick{pointer-events:none;background:#1e466e33;border-radius:50%;width:120px;height:120px;position:absolute;box-shadow:inset 0 0 0 2px #78c8ff40}.joystick .knob{background:radial-gradient(circle at 35% 30%,#96f0ffe6,#37a0dc99);border-radius:50%;width:52px;height:52px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 0 20px #5fe6ff99}.hidden{display:none!important}:focus-visible{outline:2px solid var(--glow-cyan);outline-offset:3px;border-radius:6px}.upgrade-card:focus-visible{outline-offset:0;box-shadow:inset 0 0 0 2px var(--glow-cyan), 0 0 36px #5adcff80, 0 22px 48px #000000a6}@media (max-width:640px){.menu .stats-strip{flex-wrap:wrap;gap:1.4rem}.upgrade-card{width:180px;min-height:240px}}@media (pointer:coarse){.shop-item .buy{min-height:44px;padding:.8em 1.6em}.btn{min-height:44px}}
