*{margin:0;padding:0;box-sizing:border-box}body{overflow:hidden;background:radial-gradient(circle at 50% 10%,#141939,#05070f 45%,#020308);font-family:Rajdhani,Segoe UI,sans-serif;color:#e7ecff}canvas{display:block;cursor:crosshair}#ui{position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:10}#hud{position:absolute;top:0;left:0;right:0;padding:16px 24px}#hud-top{display:flex;justify-content:space-between;align-items:flex-start}#hud-left,#hud-center,#hud-right{display:flex;flex-direction:column;gap:4px}#hud-center{align-items:center}#hud-right{align-items:flex-end}#score-display{color:#25d7ff;font-size:22px;font-weight:700;text-shadow:0 0 10px rgba(37,215,255,.55)}#level-label{color:#ff7adf;font-size:18px;font-weight:700;text-shadow:0 0 10px rgba(255,122,223,.55)}#hit-count{color:#d6ddff;font-size:18px;text-shadow:0 0 8px rgba(37,215,255,.35)}#timer{color:#e8eeff;font-size:28px;font-weight:700;text-shadow:0 0 10px rgba(37,215,255,.4)}#timer.warning{color:#f44;animation:pulse .5s ease-in-out infinite alternate}@keyframes pulse{0%{transform:scale(1)}to{transform:scale(1.15)}}#combo-display{position:absolute;right:24px;top:90px;color:#ff7adf;font-size:28px;font-weight:700;text-shadow:0 0 14px rgba(255,122,223,.9);animation:comboIn .3s ease-out}@keyframes comboIn{0%{transform:translate(40px);opacity:0}to{transform:translate(0);opacity:1}}#float-score-container{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.float-score{position:absolute;color:#25d7ff;font-size:24px;font-weight:700;text-shadow:0 0 10px rgba(37,215,255,.8);animation:floatUp 1s ease-out forwards;pointer-events:none;transform:translate(-50%)}.float-score.damage{color:#f44;text-shadow:0 0 6px rgba(255,0,0,.6)}@keyframes floatUp{0%{opacity:1;transform:translate(-50%) translateY(0)}to{opacity:0;transform:translate(-50%) translateY(-60px)}}.impact-root{position:absolute;pointer-events:none;transform:translate(-50%,-50%);z-index:20;width:0;height:0}.impact-hammer{position:absolute;width:130px;height:130px;transform:translate(-66px,-116px) rotate(var(--swing-tilt, -45deg));transform-origin:78% 82%;animation:hammerSwing .34s cubic-bezier(.22,.73,.15,1.2) forwards}.impact-hammer-head{position:absolute;left:8px;top:10px;width:58px;height:34px;border-radius:7px;background:linear-gradient(145deg,#f8fbff,#a6b6d4 45%,#6d7591);box-shadow:0 0 16px #c4ddffb3}.impact-hammer-head:after{content:"";position:absolute;top:5px;right:-11px;width:14px;height:24px;border-radius:4px;background:linear-gradient(180deg,#e6ecff,#8f9dbd)}.impact-hammer-handle{position:absolute;left:52px;top:30px;width:14px;height:94px;border-radius:10px;background:linear-gradient(180deg,#ff63ea,#b03ecf 55%,#6f2398);box-shadow:0 0 12px #ff63ea8c}.impact-ring{position:absolute;left:0;top:0;width:18px;height:18px;margin-left:-9px;margin-top:-9px;border:3px solid rgba(37,215,255,.95);border-radius:50%;box-shadow:0 0 16px #25d7ffd9;animation:impactRing .42s ease-out forwards}.impact-flash{position:absolute;left:0;top:0;width:68px;height:68px;margin-left:-34px;margin-top:-34px;border-radius:50%;background:radial-gradient(circle,#ffffffe6,#ff7adfb3 35%,#25d7ff00 75%);mix-blend-mode:screen;animation:impactFlash .28s ease-out forwards}.impact-spark{position:absolute;left:0;top:0;width:8px;height:8px;margin-left:-4px;margin-top:-4px;border-radius:50%;background:linear-gradient(145deg,#fff,#25d7ff);box-shadow:0 0 10px #25d7ffe6;animation:sparkBurst .45s cubic-bezier(.14,.81,.28,1) forwards}.impact-shake{animation:uiShake .12s linear}@keyframes hammerSwing{0%{transform:translate(-72px,-140px) scale(1.25) rotate(var(--swing-tilt, -48deg));opacity:.8}48%{transform:translate(-54px,-56px) scale(1) rotate(14deg);opacity:1}to{transform:translate(-52px,-52px) scale(.8) rotate(6deg);opacity:0}}@keyframes impactRing{0%{transform:scale(.2);opacity:1}to{transform:scale(5);opacity:0}}@keyframes impactFlash{0%{transform:scale(.1);opacity:1}to{transform:scale(1.35);opacity:0}}@keyframes sparkBurst{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(var(--dx),var(--dy)) scale(.3);opacity:0}}@keyframes uiShake{0%{transform:translate(0)}25%{transform:translate(2px,-1px)}50%{transform:translate(-2px,2px)}75%{transform:translate(1px,-1px)}to{transform:translate(0)}}#level-title{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;animation:titleFade 2s ease-in-out forwards;pointer-events:none}#level-title h1{font-size:56px;color:#7df9ff;text-shadow:0 0 20px rgba(125,249,255,.6),0 4px 8px rgba(0,0,0,.8)}@keyframes titleFade{0%{opacity:0;transform:translate(-50%,-50%) scale(.8)}20%{opacity:1;transform:translate(-50%,-50%) scale(1)}80%{opacity:1;transform:translate(-50%,-50%) scale(1)}to{opacity:0;transform:translate(-50%,-50%) scale(1.1)}}#level-complete,#victory,#start-screen,#game-over{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;color:#fff;background:linear-gradient(160deg,#080a18e6,#220d3cdb);padding:40px 60px;border-radius:16px;pointer-events:auto;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(37,215,255,.35);box-shadow:0 12px 30px #00000073,0 0 24px #25d7ff33}#level-complete h1{font-size:42px;color:#25d7ff;margin-bottom:16px}#victory h1{font-size:48px;color:#ff7adf;margin-bottom:12px}#start-screen h1{font-size:42px;color:#25d7ff;margin-bottom:12px}#game-over h1{font-size:42px;color:#ff5a8a;margin-bottom:16px}#score-breakdown{text-align:left;margin:16px auto;font-size:18px;line-height:1.8;max-width:300px}#score-breakdown .breakdown-line{display:flex;justify-content:space-between}#level-total-score,#victory-score,#game-over-score{font-size:24px;color:#25d7ff;margin:12px 0 24px;font-weight:700}#start-screen p,#victory p,#level-complete p,#game-over p{font-size:18px;margin-bottom:16px}button{padding:12px 32px;font-size:18px;border:none;border-radius:8px;background:linear-gradient(145deg,#25d7ff,#5d8cff);color:#071122;cursor:pointer;font-weight:700;transition:transform .2s,filter .2s;pointer-events:auto}button:hover{transform:translateY(-1px);filter:brightness(1.12)}.hidden{display:none!important}
