:root{--font-display: "Chakra Petch", "Segoe UI", system-ui, sans-serif;--font-body: "Inter", "Segoe UI", system-ui, sans-serif;--bg: #0a0f1f;--surface: #121a33;--surface-2: #1a2445;--surface-3: #22305a;--border: #2a3a6b;--text: #e8eeff;--text-muted: #93a2cc;--accent: #38d3ff;--accent-strong: #0bb4e6;--orange: #ff9f1c;--success: #4ade80;--danger: #f87171;--warning: #facc15;--attr-vaccine: #3b82f6;--attr-data: #16a34a;--attr-virus: #9333ea;--attr-free: #64748b;--radius: 14px;--shadow: 0 10px 30px rgb(0 0 0 / .35);color-scheme:dark}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;min-height:100%}body{font-family:var(--font-body);background:radial-gradient(1200px 600px at 10% -10%,rgba(56,211,255,.12),transparent 60%),radial-gradient(900px 500px at 110% 10%,rgba(255,159,28,.1),transparent 60%),linear-gradient(transparent 95%,#38d3ff0a 95%) 0 0/100% 24px,var(--bg);background-attachment:fixed;color:var(--text);font-size:15px;line-height:1.5}h1,h2,h3,h4{font-family:var(--font-display);line-height:1.15;margin:0 0 .5em;letter-spacing:.01em}a{color:var(--accent)}p{margin:0 0 .75em}.muted{color:var(--text-muted)}.small{font-size:13px}.page{max-width:1180px;margin:0 auto;padding:24px 16px 64px}.page-header{display:flex;flex-wrap:wrap;align-items:end;justify-content:space-between;gap:12px;margin-bottom:20px}.page-header h1{margin:0;font-size:30px}.page-header p{margin:4px 0 0}.card{background:linear-gradient(180deg,var(--surface),color-mix(in srgb,var(--surface) 80%,var(--bg)));border:1px solid var(--border);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow)}.card-title{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:12px}.card-title h2,.card-title h3{margin:0}.grid{display:grid;gap:16px}.row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.spacer{flex:1}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:9px 16px;border-radius:10px;border:1px solid var(--border);background:var(--surface-2);color:var(--text);font:600 14px var(--font-body);cursor:pointer;text-decoration:none;transition:background .15s,border-color .15s,transform 80ms}.btn:hover:not(:disabled){background:var(--surface-3);border-color:var(--accent)}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.primary{background:linear-gradient(180deg,var(--orange),#f07c00);border-color:#f07c00;color:#1b1000}.btn.primary:hover:not(:disabled){background:linear-gradient(180deg,#ffb347,var(--orange));border-color:#ffb347}.btn.accent{background:linear-gradient(180deg,var(--accent),var(--accent-strong));border-color:var(--accent-strong);color:#001822}.btn.accent:hover:not(:disabled){background:linear-gradient(180deg,color-mix(in srgb,var(--accent) 80%,white),var(--accent));border-color:var(--accent)}.btn.danger{border-color:color-mix(in srgb,var(--danger) 60%,var(--border));color:var(--danger)}.btn.small{padding:5px 10px;font-size:12px;border-radius:8px}.btn.block{width:100%}.field{display:grid;gap:6px;margin-bottom:14px}.field label{font-size:13px;font-weight:600;color:var(--text-muted)}.field .error{color:var(--danger);font-size:12px}input,select,textarea{width:100%;padding:10px 12px;border-radius:10px;border:1px solid var(--border);background:var(--bg);color:var(--text);font:inherit}input:focus,select:focus,textarea:focus{outline:2px solid color-mix(in srgb,var(--accent) 60%,transparent);outline-offset:1px;border-color:var(--accent)}.chip{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:700;letter-spacing:.03em;background:var(--surface-2);border:1px solid var(--border);color:var(--text-muted);white-space:nowrap}.chip.vaccine{color:#93c5fd;border-color:var(--attr-vaccine)}.chip.data{color:#86efac;border-color:var(--attr-data)}.chip.virus{color:#d8b4fe;border-color:var(--attr-virus)}.chip.ok{color:var(--success);border-color:color-mix(in srgb,var(--success) 50%,var(--border))}.chip.bad{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 50%,var(--border))}.chip.gold{color:var(--warning);border-color:color-mix(in srgb,var(--warning) 50%,var(--border))}.empty{padding:28px;text-align:center;color:var(--text-muted);border:1px dashed var(--border);border-radius:var(--radius)}.backdrop{position:fixed;inset:0;z-index:50;display:grid;place-items:center;padding:16px;background:#030610b3;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.modal{width:min(460px,100%);text-align:center;animation:pop .22s ease-out}@keyframes pop{0%{transform:scale(.92);opacity:0}}@media(max-width:640px){.page-header h1{font-size:24px}}.fx-scene{position:relative;overflow:hidden;cursor:default}.fx-scene.fx-playing{cursor:pointer}.fx-scene:after{content:"";position:absolute;inset:0;pointer-events:none;opacity:0;border-radius:inherit}.fx-scene[data-flash=special]:after{background:radial-gradient(circle,rgba(251,191,36,.55),transparent 70%);animation:fx-flash calc(.7s / var(--fx-speed, 1)) ease-out}.fx-scene[data-flash=massive]:after{background:radial-gradient(circle,rgba(192,132,252,.7),rgba(255,255,255,.25) 40%,transparent 75%);animation:fx-flash calc(.9s / var(--fx-speed, 1)) ease-out}.fx-avatar{position:relative;display:inline-block;line-height:0;transition:filter .15s}.fx-avatar.lunge-right{animation:fx-lunge-right calc(.32s / var(--fx-speed, 1)) ease-out}.fx-avatar.lunge-left{animation:fx-lunge-left calc(.32s / var(--fx-speed, 1)) ease-out}.fx-avatar.hit{animation:fx-shake calc(.36s / var(--fx-speed, 1)) ease-in-out;filter:brightness(1.6) saturate(.6)}.fx-avatar.hit-heavy{animation:fx-shake-heavy calc(.52s / var(--fx-speed, 1)) ease-in-out;filter:brightness(2) saturate(.4) drop-shadow(0 0 12px #f97316)}.fx-avatar.hit-soft{animation:fx-shake calc(.3s / var(--fx-speed, 1)) ease-in-out;filter:hue-rotate(240deg) saturate(1.4)}.fx-avatar.dodge{animation:fx-dodge calc(.38s / var(--fx-speed, 1)) ease-out}.fx-avatar.heal{filter:drop-shadow(0 0 14px #4ade80) brightness(1.2)}.fx-avatar.stunned{animation:fx-wobble calc(.5s / var(--fx-speed, 1)) ease-in-out;filter:grayscale(.6)}.fx-floats{position:absolute;inset:0;pointer-events:none;z-index:3}.fx-float{position:absolute;left:50%;top:calc(22% + var(--dy, 0px));transform:translate(var(--tx, -50%));white-space:nowrap;font-family:var(--font-display);font-weight:800;font-size:20px;line-height:1;color:#fff;text-shadow:0 2px 0 #0f172a,0 0 8px rgba(0,0,0,.8);animation:fx-float-up calc(1.2s / var(--fx-speed, 1)) ease-out forwards}.fx-float.crit{font-size:28px;color:#fde047;animation-name:fx-float-crit}.fx-float.miss{font-size:17px;color:#cbd5e1;font-style:italic}.fx-float.heal{color:#4ade80}.fx-float.poison{color:#c084fc;font-size:17px}.fx-float.status{font-size:14px;color:#fde68a;top:5%}.fx-float.info{font-size:12px;color:#fdba74;top:62%;letter-spacing:.04em}.fx-banner-host{position:absolute;inset:0;pointer-events:none;z-index:4}.fx-skip{position:absolute;left:50%;bottom:6px;transform:translate(-50%);font-size:11px;color:var(--text-muted);opacity:.8}.fx-floats.player .fx-float{--tx: 0%;left:4px}.fx-floats.enemy .fx-float{--tx: 0%;left:auto;right:4px}@keyframes fx-lunge-right{40%{transform:translate(34px) scale(1.06)}}@keyframes fx-lunge-left{40%{transform:translate(-34px) scale(1.06)}}@keyframes fx-shake{20%{transform:translate(-6px)}40%{transform:translate(6px)}60%{transform:translate(-4px)}80%{transform:translate(3px)}}@keyframes fx-shake-heavy{15%{transform:translate(-10px,2px) rotate(-3deg)}30%{transform:translate(10px,-2px) rotate(3deg)}45%{transform:translate(-8px,1px) rotate(-2deg)}60%{transform:translate(7px) rotate(1deg)}80%{transform:translate(-3px)}}@keyframes fx-dodge{45%{transform:translate(18px,-8px);opacity:.6}}@keyframes fx-wobble{25%{transform:rotate(-6deg)}75%{transform:rotate(6deg)}}@keyframes fx-flash{0%{opacity:0}25%{opacity:1}to{opacity:0}}@keyframes fx-float-up{0%{opacity:0;transform:translate(var(--tx, -50%),8px) scale(.8)}15%{opacity:1;transform:translate(var(--tx, -50%)) scale(1.1)}to{opacity:0;transform:translate(var(--tx, -50%),-46px) scale(1)}}@keyframes fx-float-crit{0%{opacity:0;transform:translate(var(--tx, -50%),8px) scale(.6)}18%{opacity:1;transform:translate(var(--tx, -50%),-4px) scale(1.35)}35%{transform:translate(var(--tx, -50%),-8px) scale(1.1)}to{opacity:0;transform:translate(var(--tx, -50%),-56px) scale(1)}}@media(prefers-reduced-motion:reduce){.fx-avatar,.fx-float,.fx-scene:after{animation-duration:1ms!important}}.battle-scene .proj,.battle-scene .burst{position:absolute;z-index:5;width:0;height:0;pointer-events:none;--s: 1}.battle-scene .proj.big,.battle-scene .burst.big{--s: 1.45}.battle-scene .proj.huge,.battle-scene .burst.huge{--s: 2}.battle-scene .proj span{position:absolute;left:calc(-18px * var(--s));top:calc(-18px * var(--s));width:calc(36px * var(--s));height:calc(36px * var(--s));border-radius:50%;background:radial-gradient(circle at 40% 40%,#fff,var(--c1) 45%,var(--c2));box-shadow:0 0 calc(18px * var(--s)) var(--c1),0 0 calc(40px * var(--s)) var(--c2)}.battle-scene .proj.to-enemy{animation:fx-fly-to-enemy calc(.36s / var(--fx-speed, 1)) ease-in forwards}.battle-scene .proj.to-player{animation:fx-fly-to-player calc(.36s / var(--fx-speed, 1)) ease-in forwards}@keyframes fx-fly-to-enemy{0%{left:var(--p-x);top:var(--p-y)}to{left:var(--e-x);top:var(--e-y)}}@keyframes fx-fly-to-player{0%{left:var(--e-x);top:var(--e-y)}to{left:var(--p-x);top:var(--p-y)}}.battle-scene .burst.at-enemy{left:var(--e-x);top:var(--e-y)}.battle-scene .burst.at-player{left:var(--p-x);top:var(--p-y)}.battle-scene .burst .core{position:absolute;left:calc(-40px * var(--s));top:calc(-40px * var(--s));width:calc(80px * var(--s));height:calc(80px * var(--s));border-radius:50%;background:radial-gradient(circle,#fff 0 20%,var(--c1) 45%,transparent 70%);animation:fx-core calc(.42s / var(--fx-speed, 1)) ease-out forwards}.battle-scene .burst span{position:absolute;left:calc(-8px * var(--s));top:calc(-8px * var(--s));width:calc(16px * var(--s));height:calc(16px * var(--s));border-radius:50%;background:var(--c2);box-shadow:0 0 10px var(--c1);animation:fx-scatter calc(.52s / var(--fx-speed, 1)) ease-out forwards}@keyframes fx-core{0%{transform:scale(.2);opacity:1}to{transform:scale(1.3);opacity:0}}@keyframes fx-scatter{0%{transform:rotate(var(--a)) translateY(0) scale(.6);opacity:1}to{transform:rotate(var(--a)) translateY(calc(-62px * var(--s))) scale(1);opacity:0}}.battle-scene .impact{--c1: #fde047;--c2: #fff7d6}.battle-scene .impact .core{border-radius:0;background:radial-gradient(circle,#fff 0 30%,#fde047 55%,#f59e0b);filter:drop-shadow(0 0 6px #fff);clip-path:polygon(50% 0,61% 35%,98% 35%,68% 57%,79% 91%,50% 70%,21% 91%,32% 57%,2% 35%,39% 35%)}.battle-scene .fire{--c1: #fb923c;--c2: #ef4444}.battle-scene .fire span{border-radius:50%/60% 60% 40% 40%;background:radial-gradient(circle at 50% 70%,#fde047,#f97316 60%,#dc2626)}.battle-scene .electric{--c1: #fde047;--c2: #facc15}.battle-scene .electric .core{left:calc(-22px * var(--s));top:calc(-160px * var(--s));width:calc(44px * var(--s));height:calc(180px * var(--s));border-radius:0;background:linear-gradient(180deg,#fff,#fde047);clip-path:polygon(40% 0,75% 0,55% 38%,85% 38%,30% 100%,45% 52%,15% 52%);filter:drop-shadow(0 0 8px #fde047);animation:fx-bolt calc(.42s / var(--fx-speed, 1)) steps(2) forwards}.battle-scene .electric span{width:calc(6px * var(--s));border-radius:2px}@keyframes fx-bolt{0%,to{opacity:0}10%,60%{opacity:1}35%{opacity:.3}}.battle-scene .ice{--c1: #a5f3fc;--c2: #e0f2fe}.battle-scene .ice span{border-radius:0;background:linear-gradient(180deg,#fff,#67e8f9);clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%);width:calc(14px * var(--s));height:calc(28px * var(--s))}.battle-scene .proj.ice span{border-radius:0;clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%)}.battle-scene .water{--c1: #38bdf8;--c2: #bae6fd}.battle-scene .water .core{background:radial-gradient(circle,transparent 0 45%,#7dd3fc 50% 58%,transparent 62%)}.battle-scene .water span{background:radial-gradient(circle at 35% 35%,#fff,#38bdf8)}.battle-scene .holy{--c1: #fde68a;--c2: #fffbeb}.battle-scene .holy .core{left:calc(-30px * var(--s));top:calc(-170px * var(--s));width:calc(60px * var(--s));height:calc(220px * var(--s));border-radius:40%;background:linear-gradient(180deg,transparent,#fffbeb 40%,#fde68a);filter:blur(2px)}.battle-scene .holy span{background:#fff;clip-path:polygon(50% 0,62% 38%,100% 50%,62% 62%,50% 100%,38% 62%,0 50%,38% 38%);border-radius:0}.battle-scene .dark{--c1: #a855f7;--c2: #3b0764}.battle-scene .dark .core{background:radial-gradient(circle,#1e0533 0 30%,#7e22ce 50%,transparent 70%);animation-name:fx-dark-core}.battle-scene .dark span{background:radial-gradient(circle,#c084fc,#3b0764)}@keyframes fx-dark-core{0%{transform:scale(.3) rotate(0);opacity:1}to{transform:scale(1.4) rotate(220deg);opacity:0}}.battle-scene .beam{--c1: #7dd3fc;--c2: #e0f2fe}.battle-scene .plant{--c1: #4ade80;--c2: #16a34a}.battle-scene .plant span{border-radius:0 100%;background:linear-gradient(135deg,#86efac,#15803d)}.battle-scene .wind{--c1: #e0f2fe;--c2: #f8fafc}.battle-scene .wind .core{background:none;border:calc(5px * var(--s)) solid #f8fafc;border-color:#f8fafc transparent #e0f2fe transparent;animation-name:fx-dark-core}.battle-scene .wind span{background:none;border-top:3px solid #fff;border-radius:50%;width:calc(26px * var(--s))}.battle-scene .earth{--c1: #d6b98c;--c2: #8b6b45}.battle-scene .earth span{border-radius:3px;background:linear-gradient(135deg,#b08b5b,#6b4f2e);box-shadow:none}.battle-scene .slash{--c1: #fff;--c2: #e2e8f0}.battle-scene .slash .core,.battle-scene .slash span{display:none}.battle-scene .slash span:nth-of-type(-n+3){display:block;left:calc(-60px * var(--s));top:calc(-3px * var(--s));width:calc(120px * var(--s));height:calc(6px * var(--s));border-radius:999px;background:linear-gradient(90deg,transparent,#fff,transparent);box-shadow:0 0 10px #fff;transform-origin:center;animation:fx-slash calc(.38s / var(--fx-speed, 1)) ease-out both;animation-delay:calc(var(--i) * 70ms / var(--fx-speed, 1))}.battle-scene .slash span:nth-of-type(1){--off: -18px}.battle-scene .slash span:nth-of-type(2){--off: 0px}.battle-scene .slash span:nth-of-type(3){--off: 18px}@keyframes fx-slash{0%{transform:translateY(var(--off)) rotate(-35deg) scaleX(0);opacity:1}60%{transform:translateY(var(--off)) rotate(-35deg) scaleX(1);opacity:1}to{transform:translateY(var(--off)) rotate(-35deg) scaleX(1);opacity:0}}.battle-scene .theme-plains .far{background:radial-gradient(ellipse 30% 14% at 18% 50%,#a6dd8f 60%,transparent 62%),radial-gradient(ellipse 40% 18% at 70% 52%,#95d27f 60%,transparent 62%),radial-gradient(ellipse 8% 5% at 30% 18%,#fff 60%,transparent 64%),radial-gradient(ellipse 11% 5% at 36% 20%,#fff 60%,transparent 64%),radial-gradient(ellipse 9% 4% at 80% 14%,#fff 60%,transparent 64%)}.battle-scene .theme-beach{--sky-top: #6fc3ff;--sky-bottom: #c9ecff;--ground-top: #f6e2a6;--ground-bottom: #e2c47a;--plat: #e3c27a;--plat-rim: #fff3c9}.battle-scene .theme-beach .far{background:linear-gradient(180deg,transparent 40%,#3fa7d8 40%,#66c2e8 52%,transparent 52%),radial-gradient(circle at 86% 16%,#fff7c2 0 3.5%,rgba(255,247,194,.35) 4% 5.5%,transparent 6%),radial-gradient(ellipse 9% 4% at 22% 16%,#fff 60%,transparent 64%)}.battle-scene .theme-sea{--sky-top: #0b3954;--sky-bottom: #1d7a9a;--ground-top: #2a8c8c;--ground-bottom: #134e5e;--plat: #1f6f78;--plat-rim: #7fdcdc}.battle-scene .theme-sea .far{background:repeating-linear-gradient(100deg,rgba(255,255,255,.07) 0 4%,transparent 4% 12%),radial-gradient(circle at 20% 70%,rgba(255,255,255,.25) 0 .8%,transparent 1%),radial-gradient(circle at 60% 40%,rgba(255,255,255,.2) 0 .6%,transparent .8%),radial-gradient(circle at 85% 60%,rgba(255,255,255,.2) 0 .7%,transparent .9%)}.battle-scene .theme-forest{--sky-top: #9fe0c0;--sky-bottom: #dcf5e4;--ground-top: #5fae5a;--ground-bottom: #2f6f3a;--plat: #3f8a45;--plat-rim: #a6e3a0}.battle-scene .theme-forest .far{background:radial-gradient(ellipse 9% 22% at 6% 46%,#2f7a43 60%,transparent 62%),radial-gradient(ellipse 8% 26% at 16% 42%,#3a8c4c 60%,transparent 62%),radial-gradient(ellipse 10% 24% at 58% 44%,#2f7a43 60%,transparent 62%),radial-gradient(ellipse 8% 28% at 88% 40%,#3a8c4c 60%,transparent 62%),radial-gradient(ellipse 9% 22% at 97% 46%,#2f7a43 60%,transparent 62%)}.battle-scene .theme-mountain{--sky-top: #a9c3ff;--sky-bottom: #e6edff;--ground-top: #a08b6c;--ground-bottom: #6d5a44;--plat: #8a7457;--plat-rim: #d9c9a8}.battle-scene .theme-mountain .far{background:linear-gradient(135deg,transparent 50%,#7d7aa8 50%) 0 100%/30% 46% no-repeat,linear-gradient(225deg,transparent 50%,#6c6997 50%) 30% 100%/30% 46% no-repeat,linear-gradient(135deg,transparent 50%,#8a87b3 50%) 52% 100%/34% 56% no-repeat,linear-gradient(225deg,transparent 50%,#77749f 50%) 86% 100%/34% 56% no-repeat;bottom:48%}.battle-scene .theme-desert{--sky-top: #ffb46b;--sky-bottom: #ffe3b0;--ground-top: #f0c27a;--ground-bottom: #c98d45;--plat: #d79f55;--plat-rim: #ffe1a6}.battle-scene .theme-desert .far{background:radial-gradient(circle at 80% 20%,#fff4c4 0 4%,rgba(255,244,196,.35) 4.5% 6%,transparent 6.5%),radial-gradient(ellipse 34% 12% at 20% 54%,#e8b066 60%,transparent 62%),radial-gradient(ellipse 40% 14% at 80% 55%,#dda25a 60%,transparent 62%)}.battle-scene .theme-city{--sky-top: #6c5dd3;--sky-bottom: #f3a6c8;--ground-top: #8f97a8;--ground-bottom: #5b6272;--plat: #727a8c;--plat-rim: #c9d0de}.battle-scene .theme-city .far{bottom:47%;background:repeating-linear-gradient(90deg,#3f3a77 0 7%,transparent 7% 9%,#4b4590 9% 15%,transparent 15% 17%) bottom/100% 55% no-repeat,repeating-linear-gradient(90deg,transparent 0 3%,#5a53a3 3% 8%,transparent 8% 12%) bottom/100% 80% no-repeat}.battle-scene .theme-castle{--sky-top: #f59ac0;--sky-bottom: #ffe0ec;--ground-top: #b48ad6;--ground-bottom: #7a54a8;--plat: #9a6fc4;--plat-rim: #e7d2fb}.battle-scene .theme-castle .far{bottom:47%;background:linear-gradient(#8e5fbf,#8e5fbf) 46% 100%/22% 46% no-repeat,linear-gradient(#7c4fae,#7c4fae) 40% 100%/5% 70% no-repeat,linear-gradient(#7c4fae,#7c4fae) 58% 100%/5% 70% no-repeat,linear-gradient(#a675d6,#a675d6) 50% 100%/6% 90% no-repeat,radial-gradient(circle at 14% 30%,#fff 0 4%,transparent 4.5%)}.battle-scene .theme-dark{--sky-top: #0c0614;--sky-bottom: #3a1240;--ground-top: #3b2347;--ground-bottom: #160b1f;--plat: #4a2a5c;--plat-rim: #b46bd6}.battle-scene .theme-dark .far{background:radial-gradient(circle at 80% 20%,#ff6b6b 0 5%,rgba(255,80,80,.25) 5.5% 9%,transparent 9.5%),radial-gradient(circle at 15% 12%,#fff 0 .3%,transparent .5%),radial-gradient(circle at 40% 24%,#fff 0 .25%,transparent .45%),radial-gradient(circle at 60% 8%,#fff 0 .3%,transparent .5%)}.battle-scene .theme-digital{--sky-top: #050b1f;--sky-bottom: #0d2a52;--ground-top: #0d2a52;--ground-bottom: #061430;--plat: #0f3d6e;--plat-rim: #38d3ff}.battle-scene .theme-digital .ground{background:repeating-linear-gradient(90deg,rgba(56,211,255,.35) 0 1px,transparent 1px 9%),repeating-linear-gradient(180deg,rgba(56,211,255,.35) 0 1px,transparent 1px 22%),linear-gradient(180deg,var(--ground-top),var(--ground-bottom))}.battle-scene .scene.shake{animation:fx-scene-shake calc(.45s / var(--fx-speed, 1)) linear}.battle-scene .cutin{--d: calc(1.25s / var(--fx-speed, 1));position:absolute;inset:0;z-index:9;overflow:hidden;pointer-events:none}.battle-scene .cutin.massive{--d: calc(1.9s / var(--fx-speed, 1))}.battle-scene .cutin .rays{position:absolute;inset:0;background:#05081499;animation:fx-cut-dim var(--d) ease forwards}.battle-scene .cutin.massive .rays{inset:-60%;background:repeating-conic-gradient(from 0deg,rgba(250,204,21,.28) 0 5deg,transparent 5deg 15deg),radial-gradient(circle,#7c3aed 0,#1e0533 40%,#000 70%);animation:fx-cut-dim var(--d) ease forwards,fx-spin calc(var(--d) * 1.6) linear}.battle-scene .cutin .band{position:absolute;left:-12%;right:-12%;top:26%;height:48%;overflow:hidden;transform:skewY(-7deg);background:linear-gradient(90deg,#c2410c,#fbbf24 50%,#c2410c);border-block:4px solid #fff;box-shadow:0 0 30px #0009;animation:fx-band var(--d) cubic-bezier(.2,.9,.3,1) forwards}.battle-scene .cutin.from-enemy .band{transform:skewY(7deg);background:linear-gradient(90deg,#7f1d1d,#dc2626 50%,#7f1d1d)}.battle-scene .cutin.massive .band{top:16%;height:66%;background:linear-gradient(90deg,#3b0764,#a855f7 50%,#3b0764);border-color:#fde047}.battle-scene .cutin .lines{position:absolute;inset:0;background:repeating-linear-gradient(90deg,rgba(255,255,255,.35) 0 3px,transparent 3px 46px),repeating-linear-gradient(90deg,rgba(255,255,255,.15) 0 1px,transparent 1px 17px);animation:fx-lines calc(.26s / var(--fx-speed, 1)) linear infinite}.battle-scene .cutin.from-enemy .lines{animation-direction:reverse}.battle-scene .cutin .hero{position:absolute;left:14%;bottom:-8%;width:38%;height:120%;transform:skewY(7deg);filter:drop-shadow(0 0 12px rgba(255,255,255,.75));animation:fx-hero var(--d) cubic-bezier(.2,.9,.3,1) forwards}.battle-scene .cutin.from-enemy .hero{left:auto;right:14%;transform:skewY(-7deg);animation-name:fx-hero-r}.battle-scene .cutin.massive .hero{filter:drop-shadow(0 0 22px #fde047) drop-shadow(0 0 6px #fff);animation-name:fx-hero-zoom}.battle-scene .cutin .move{position:absolute;right:17%;max-width:52%;top:50%;display:grid;text-align:right;transform:translateY(-50%) skewY(7deg);animation:fx-move-name var(--d) ease forwards}.battle-scene .cutin .move .who{font-size:clamp(11px,1.5vw,15px);font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:#ffffffd9}.battle-scene .cutin .move strong{font:italic 900 clamp(22px,4.4vw,50px)/1.05 var(--font-display);color:#fff;text-shadow:0 3px 0 #0b0f1a,0 0 18px rgba(255,255,255,.55)}.battle-scene .cutin.from-enemy .move{right:auto;left:17%;text-align:left;transform:translateY(-50%) skewY(-7deg)}.battle-scene .cutin.massive .move strong{color:#fde047}@keyframes fx-cut-dim{0%{opacity:0}10%,86%{opacity:1}to{opacity:0}}@keyframes fx-band{0%{clip-path:inset(50% 0 50% 0)}12%{clip-path:inset(0 0 0 0)}86%{clip-path:inset(0 0 0 0);opacity:1}to{clip-path:inset(0 0 0 0);opacity:0}}@keyframes fx-hero{0%{translate:-90% 0}18%{translate:0 0}82%{translate:6% 0;opacity:1}to{translate:40% 0;opacity:0}}@keyframes fx-hero-r{0%{translate:90% 0}18%{translate:0 0}82%{translate:-6% 0;opacity:1}to{translate:-40% 0;opacity:0}}@keyframes fx-hero-zoom{0%{scale:.3;opacity:0}20%{scale:1.1;opacity:1}30%{scale:1}84%{scale:1.06;opacity:1}to{scale:1.5;opacity:0}}@keyframes fx-move-name{0%,16%{opacity:0;translate:30% 0}30%{opacity:1;translate:0 0}86%{opacity:1}to{opacity:0}}@keyframes fx-lines{to{background-position-x:-92px}}@keyframes fx-spin{to{rotate:360deg}}@keyframes fx-scene-shake{10%{translate:-8px 4px}20%{translate:8px -4px}30%{translate:-6px 2px}45%{translate:6px -2px}65%{translate:-3px 1px}85%{translate:2px 0}}@media(prefers-reduced-motion:reduce){.battle-scene .cutin *,.battle-scene .cutin,.battle-scene .scene.shake{animation-duration:1ms!important}}
