@import "https://fonts.googleapis.com/css2?family=Inter:wght@400;600;800&family=Noto+Sans+TC:wght@400;700&display=swap";:root{--primary-glow:#3b82f6;--bg-gradient:linear-gradient(180deg, #0d1321 0%, #1e293b 100%);--glass-bg:#ffffff1a;--glass-border:#fff3}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg-gradient);color:#fff;width:100vw;height:100vh;margin:0;font-family:Inter,Noto Sans TC,sans-serif;overflow:hidden}.hud-glass{background:var(--glass-bg);-webkit-backdrop-filter:blur(16px);border:1px solid var(--glass-border);border-radius:12px;box-shadow:0 4px 30px #00000080}@keyframes fall{0%{opacity:0;transform:translateY(-100px)}5%{opacity:1}90%{opacity:1}to{opacity:0;transform:translateY(110vh)}}@keyframes pulse-glow{0%{box-shadow:0 0 15px #3b82f666}50%{box-shadow:0 0 35px #3b82f6cc}to{box-shadow:0 0 15px #3b82f666}}@keyframes shakeError{0%,to{transform:translate(0)}20%,60%{transform:translate(-8px)}40%,80%{transform:translate(8px)}}.falling-block-inner{cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);will-change:transform, opacity;-webkit-user-select:none;user-select:none;background:linear-gradient(135deg,#ffffff26 0%,#ffffff0d 100%);border:1px solid #ffffff4d;border-radius:9999px;padding:12px 24px;font-size:1.25rem;font-weight:600;transition:all .2s cubic-bezier(.4,0,.2,1);position:relative;box-shadow:0 8px 32px #0006,inset 0 1px 1px #ffffff4d}.falling-block-inner:hover{background:linear-gradient(135deg,#fff3 0%,#ffffff1a 100%);border-color:#fff9;transform:scale(1.05);box-shadow:0 12px 40px #3b82f680,inset 0 1px 1px #ffffff80}.falling-block-inner:active{transform:scale(.95)}.error-shake{background:#ef444466!important;border-color:#ef4444cc!important;animation:.4s ease-in-out shakeError!important;box-shadow:0 0 20px #ef444499!important}.bg-layer{pointer-events:none;z-index:-1;background-image:radial-gradient(circle at 50% 120%,#1e3a8a 0%,#0000 60%);width:100%;height:100%;position:absolute}#root{width:100vw;height:100vh;position:relative;overflow:hidden}@keyframes flashSuccess{0%{background:#22c55e66;border-color:#22c55ecc;transform:scale(1);box-shadow:0 0 20px #22c55e99}60%{background:#22c55ee6;border-color:#fff;transform:scale(1.15);box-shadow:0 0 40px #22c55e}to{opacity:0;transform:scale(.5)}}.success-flash{animation:.4s cubic-bezier(.4,0,.2,1) forwards flashSuccess!important}.rain-system{pointer-events:none;z-index:-2;width:200%;height:200%;animation:12s cubic-bezier(.4,0,.2,1) infinite alternate windBreeze;position:absolute;top:-50%;left:-50%}@keyframes windBreeze{0%{transform:rotate(8deg)}35%{transform:rotate(18deg)scale(1.05)}70%{transform:rotate(12deg)}to{transform:rotate(26deg)scale(1.1)}}.rain-layer{will-change:transform;background-image:url("data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"100\" height=\"100\"><rect x=\"15\" y=\"5\" width=\"1.5\" height=\"30\" fill=\"rgba(255,255,255,0.4)\"/><rect x=\"65\" y=\"45\" width=\"1\" height=\"20\" fill=\"rgba(255,255,255,0.2)\"/></svg>");background-repeat:repeat;width:100%;height:300%;position:absolute;top:-100%;left:0}.rain-layer.front{opacity:.8;background-size:150px 150px;animation:.3s linear infinite fallFront}.rain-layer.mid{opacity:.5;background-size:100px 100px;animation:.45s linear infinite fallMid}.rain-layer.back{opacity:.3;background-size:60px 60px;animation:.7s linear infinite fallBack}@keyframes fallFront{0%{transform:translateY(0)}to{transform:translateY(150px)}}@keyframes fallMid{0%{transform:scaleX(-1)translateY(0)}to{transform:scaleX(-1)translateY(100px)}}@keyframes fallBack{0%{transform:translateY(0)}to{transform:translateY(60px)}}.lightning-flash{pointer-events:none;z-index:999;opacity:0;background:#fff;width:100vw;height:100vh;position:fixed;top:0;left:0}.lightning-flash.active{animation:.5s ease-out forwards lightning}@keyframes lightning{0%{opacity:0}10%{opacity:.8}20%{opacity:0}35%{opacity:.6}to{opacity:0}}.lightning-flash.heavy{animation:1.2s ease-out forwards lightningHeavy}@keyframes lightningHeavy{0%{opacity:0}5%{opacity:.9}10%{opacity:0}15%{opacity:1}25%{opacity:0}30%{opacity:.8}to{opacity:0}}@keyframes fadeInUp{0%{opacity:0;transform:translate(-50%,20px)}to{opacity:1;transform:translate(-50%)}}@keyframes flyToStack{0%{transform:translate(var(--startX), var(--startY)) scale(1);opacity:1}to{transform:translate(var(--endX), var(--endY)) scale(.6);opacity:0}}.flying-block-anim{z-index:1000;pointer-events:none;position:fixed;top:0;left:0;animation:.5s cubic-bezier(.25,1,.5,1) forwards flyToStack!important}
