*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
body{margin:0;font-family:-apple-system,"Segoe UI",Roboto,sans-serif;background:var(--bg,#14213d);color:#fff;min-height:100vh}
body.theo{--bg:#10261c;--ac:#3ecf8e;--ac2:#f5c542}body.ilija{--bg:#2a1240;--ac:#ff8a00;--ac2:#38bdf8}
#app{max-width:1000px;margin:auto;padding:20px 20px 60px}
button{font:inherit;border:0;border-radius:18px;padding:18px 22px;min-height:64px;font-size:22px;font-weight:700;cursor:pointer;background:var(--ac,#4f7cff);color:#111;box-shadow:0 5px 0 rgba(0,0,0,.35)}
button:active{transform:translateY(4px);box-shadow:none}button.ghost{background:rgba(255,255,255,.12);color:#fff}
button:disabled{opacity:.4}
.top{display:flex;gap:12px;align-items:center;flex-wrap:wrap;font-size:22px;font-weight:700;margin-bottom:16px}
.top .pill{background:rgba(255,255,255,.12);padding:10px 16px;border-radius:30px}
h1{font-size:40px;margin:10px 0}h2{font-size:28px;margin:22px 0 10px}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:16px}
.card{background:rgba(255,255,255,.08);border-radius:22px;padding:18px;font-size:20px}
.prof{font-size:30px;padding:40px;text-align:center}.prof .av{font-size:110px;display:block}
.path{display:flex;flex-direction:column;align-items:center;gap:14px}
.node{width:96px;height:96px;border-radius:50%;font-size:40px;padding:0}
.node.done{background:var(--ac2)}.node.lock{background:#555;color:#999}
.world{background:rgba(255,255,255,.06);border-radius:26px;padding:18px;margin:18px 0}
.task{display:flex;justify-content:space-between;align-items:center;gap:10px}
.task.ok{opacity:.55;text-decoration:line-through}
.bar{height:22px;background:rgba(255,255,255,.15);border-radius:12px;overflow:hidden;flex:1}.bar i{display:block;height:100%;background:var(--ac)}
.q{font-size:44px;font-weight:800;text-align:center;margin:30px 0}
.opts{display:grid;grid-template-columns:1fr 1fr;gap:16px}.opts button{background:rgba(255,255,255,.14);color:#fff;font-size:26px;min-height:96px}
.opts button.sel{outline:4px solid var(--ac)}.opts button.right{background:#2fbf71}.opts button.wrong{background:#e5484d}
.fb{position:fixed;left:0;right:0;bottom:0;padding:24px;font-size:26px;font-weight:800;display:flex;justify-content:space-between;align-items:center}
.fb.ok{background:#1f8f55}.fb.bad{background:#b3262c}
input{font-size:28px;padding:16px;border-radius:14px;border:0;width:100%}
.big{font-size:80px}.tc{text-align:center}.row{display:flex;gap:12px;flex-wrap:wrap}
.cc{text-align:center}.cc b{font-size:24px;display:block}.cc.no{opacity:.25}
#app{padding-bottom:calc(220px + env(safe-area-inset-bottom))}
.fb{flex-direction:column;gap:14px;justify-content:center;text-align:center;padding:20px 20px calc(96px + env(safe-area-inset-bottom))}
.fb button{min-width:260px}
.safe{padding-bottom:calc(100px + env(safe-area-inset-bottom))}
.arena{position:relative;height:calc(100vh - 330px);min-height:420px;border-radius:24px;overflow:hidden;margin-bottom:calc(90px + env(safe-area-inset-bottom))}
.ar-blaster{background:radial-gradient(circle at 50% 120%,#ff8a00 0,#3a1060 45%,#12061f 100%)}
.ar-fish{background:linear-gradient(#5ec8f0,#0b4f7a 70%,#06304a)}
.ar-miner{background:linear-gradient(#87c66b 0 12%,#7a5230 12%)}.ar-memory{background:rgba(255,255,255,.05)}
.meteor,.fishy{position:absolute;min-height:60px;font-size:24px;padding:10px 16px;background:#fff;color:#222}
.fishy{background:#ffd166;border-radius:40px 60px 60px 40px}.fishy span{font-size:30px;margin-right:6px}
.meteor.hit,.fishy.hit{transform:scale(1.6);opacity:0;transition:.5s}.meteor.wrong,.fishy.wrong{background:#e5484d;color:#fff}
.beam{position:absolute;width:18px;background:linear-gradient(#fff,#38bdf8);border-radius:9px;box-shadow:0 0 24px #38bdf8}
.mgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;padding:30px}
.block{min-height:120px;background:#8a8a8a;color:#fff;border-radius:6px;font-size:24px;box-shadow:inset -8px -8px 0 #5d5d5d,inset 8px 8px 0 #b0b0b0}
.block.broken{animation:brk .6s forwards;background:#f5c542}.block.wrong{background:#e5484d}
@keyframes brk{to{transform:scale(0) rotate(40deg);opacity:0}}
.mem{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;padding:16px}.mc{min-height:110px;font-size:20px;background:var(--ac2);color:#111}.mc.up{background:#fff}.mc.right{background:#2fbf71;color:#fff}
.pop{position:absolute;font-size:40px;font-weight:900;color:#ffe066;animation:up .7s forwards;pointer-events:none}
@keyframes up{to{transform:translateY(-60px);opacity:0}}
.mic{font-size:70px;width:150px;height:150px;border-radius:50%}.mic.on{animation:pulse 1s infinite;background:#e5484d;color:#fff}
@keyframes pulse{50%{transform:scale(1.1)}}
.burst{font-size:120px;animation:burst 1s forwards}@keyframes burst{0%{transform:scale(.2)}50%{transform:scale(1.3) rotate(15deg)}100%{transform:scale(1)}}
.abc .lt{width:100%;font-size:46px;display:flex;justify-content:space-around}.abc .cy{color:var(--ac2)}.abc .nm{font-size:16px;margin:10px 0;min-height:40px}.abc .wd{width:100%;font-size:22px}
.abc .lt{gap:10px;justify-content:center}
body.theo{background:linear-gradient(rgba(8,24,18,.45),rgba(8,24,18,.7)),url(theo-bg.svg) center bottom/cover fixed #10261c}
body.theo .card,body.theo .world{background:rgba(10,30,22,.62);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px)}
body.theo{background:linear-gradient(rgba(8,24,18,.45),rgba(8,24,18,.7)),url(theo-bg.jpg) center/cover fixed #10261c}
body.ilija{background:linear-gradient(rgba(20,10,40,.5),rgba(20,10,40,.72)),url(ilija-bg.jpg) center/cover fixed #2a1240}
body.ilija .card,body.ilija .world{background:rgba(25,15,55,.62);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px)}
body.ilija::before{content:"";position:fixed;inset:0;pointer-events:none;z-index:0;background-image:radial-gradient(2px 2px at 15% 25%,#dff4ff,transparent),radial-gradient(2px 2px at 70% 15%,#c9e8ff,transparent),radial-gradient(1.5px 1.5px at 40% 60%,#fff,transparent),radial-gradient(2px 2px at 85% 70%,#bfe3ff,transparent),radial-gradient(1.5px 1.5px at 25% 85%,#fff,transparent),radial-gradient(2px 2px at 55% 40%,#e6f6ff,transparent);animation:shim 6s ease-in-out infinite alternate;will-change:opacity}
@keyframes shim{0%{opacity:.25}100%{opacity:.85}}
@media (prefers-reduced-motion:reduce){body.ilija::before{animation:none}}
#app{position:relative;z-index:1}
body.theo,body.ilija{background:#10261c}
body.ilija{background:#1a0f33}
body.theo::after,body.ilija::after{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;background-size:cover;background-position:center}
body.theo::after{background-image:linear-gradient(rgba(8,24,18,.45),rgba(8,24,18,.7)),url(theo-bg.jpg)}
body.ilija::after{background-image:linear-gradient(rgba(20,10,40,.5),rgba(20,10,40,.72)),url(ilija-bg.jpg)}
#backb{position:fixed;left:calc(14px + env(safe-area-inset-left));bottom:calc(16px + env(safe-area-inset-bottom));z-index:4;min-width:150px;min-height:72px;font-size:26px;background:#fff;color:#111;border-radius:40px;box-shadow:0 6px 18px rgba(0,0,0,.45)}
.fb{z-index:6}
.lb{width:100%;border-collapse:collapse;font-size:20px}.lb th,.lb td{padding:10px 8px;text-align:left;border-bottom:1px solid rgba(255,255,255,.12)}.lb th{opacity:.8;font-size:18px}
.bossbox{text-align:center;margin:10px 0}.bmon{font-size:150px;line-height:1.1;display:inline-block;filter:drop-shadow(0 0 24px rgba(255,60,60,.6));animation:bob 2s ease-in-out infinite}
.bmon.ouch{animation:ouch .5s}.bmon.atk{animation:atk .6s}
@keyframes bob{50%{transform:translateY(-12px)}}@keyframes ouch{30%{transform:translateX(-20px) scale(.9);filter:brightness(3)}60%{transform:translateX(20px)}}@keyframes atk{50%{transform:scale(1.4)}}
.hp{position:relative;height:34px;max-width:520px;margin:10px auto;background:#3a0d12;border-radius:18px;overflow:hidden;border:3px solid #fff}.hp i{display:block;height:100%;background:linear-gradient(90deg,#e5484d,#ff9f43);transition:width .4s}.hp span{position:absolute;inset:0;font-weight:800;font-size:20px;line-height:28px}
.bossbtn{background:#e5484d;color:#fff;font-size:28px;padding:22px 34px;animation:bob 1.5s infinite}
/* v8 RPG boss */
.rpg{max-width:1000px;margin:0 auto;padding-bottom:110px}
.rhud{display:flex;gap:10px;align-items:center;margin:6px 0}.plate{flex:1;background:rgba(0,0,0,.55);border:3px solid #fff;border-radius:16px;padding:8px 14px;font-size:20px}.plate.foe{text-align:right}.plate span{font-size:18px;font-weight:800}
.rbar{height:18px;background:#333;border-radius:10px;overflow:hidden;margin:4px 0;border:2px solid #000}.rbar i{display:block;height:100%;background:#2fbf71;transition:width .4s}.rbar.foe i{background:linear-gradient(90deg,#ff5a5a,#ffb02e);margin-left:auto}
.turn{font-weight:900;font-size:20px;padding:10px 14px;border-radius:14px;white-space:nowrap}.turn.you{background:#2fbf71;color:#111}.turn.boss{background:#e5484d;animation:pulse .6s infinite}
.stage{position:relative;height:400px;border-radius:24px;overflow:hidden;border:4px solid #000;box-shadow:inset 0 -20px 40px rgba(0,0,0,.3)}
.cloud{position:absolute;width:140px;height:40px;background:rgba(255,255,255,.7);border-radius:40px;animation:drift 30s linear infinite}.c1{top:40px;left:-150px}.c2{top:90px;left:-150px;animation-delay:-15s;transform:scale(.7)}@keyframes drift{to{left:110%}}
.hero{position:absolute;left:8%;bottom:30px;width:190px;filter:drop-shadow(0 0 10px rgba(255,255,255,.3))}body.ilija .hero{filter:drop-shadow(0 0 18px #e6f0ff) drop-shadow(0 0 30px #b8c7ff)}
.hsvg{width:100%;height:auto;animation:bob 1.6s ease-in-out infinite}
.stage>.foe{position:absolute;right:8%;bottom:40px;font-size:180px;line-height:1;filter:drop-shadow(0 0 24px rgba(255,60,60,.7))}.bobb{animation:bob 2s ease-in-out infinite}
.hero.lunge{animation:lunge .6s}@keyframes lunge{40%{transform:translateX(300px)}100%{transform:none}}
.hero.hurt{animation:ouch .5s}.hero.guard{animation:atk .5s}.hero.glow{filter:drop-shadow(0 0 30px #7fff7f)}
.stage>.foe.ouch{animation:ouch .5s}.stage>.foe.wind{animation:wind 1.2s}.stage>.foe.charge{animation:charge .5s}.stage>.foe.faint{animation:faint 1s forwards}
@keyframes wind{30%{transform:translateX(30px) scale(1.1);filter:brightness(1.5)}100%{transform:translateX(20px)}}@keyframes charge{50%{transform:translateX(-380px) scale(1.2)}}@keyframes faint{to{transform:translateY(80px) rotate(90deg);opacity:0}}
.stage.shake{animation:shk .4s}@keyframes shk{20%{transform:translate(-10px,4px)}40%{transform:translate(10px,-4px)}60%{transform:translate(-6px,2px)}80%{transform:translate(6px,0)}}
body.redflash{box-shadow:inset 0 0 120px #e5484d}
.fxi{position:absolute;pointer-events:none;font-weight:900}.onfoe{right:12%;top:90px}.onhero{left:12%;top:110px}
.dmg{font-size:46px;color:#fff;-webkit-text-stroke:2px #000;animation:up 1.1s forwards}.dmg.crit{font-size:60px;color:#ffd84d}.dmg.hurt{color:#ff6b6b}.miss{font-size:44px;color:#ccc;animation:up 1.1s forwards}.heal{font-size:44px;color:#7fff7f;animation:up 1.1s forwards;-webkit-text-stroke:2px #000}.tag{font-size:40px;color:#fff;-webkit-text-stroke:2px #000;animation:up 1.1s forwards;top:40px}
.slash{width:220px;height:14px;background:linear-gradient(90deg,transparent,#fff,transparent);transform:rotate(-35deg);top:170px;animation:sl .4s forwards}.slash.big{height:24px;background:linear-gradient(90deg,transparent,#ffd84d,#fff,transparent)}@keyframes sl{from{opacity:1;width:0}to{opacity:0;width:260px}}
.rmenu{margin-top:12px;background:rgba(0,0,0,.6);border:4px solid #fff;border-radius:22px;padding:14px;margin-right:120px}
.rmsg{font-size:24px;margin:4px 0 12px}.rq{color:var(--ac2);font-size:28px}.combo{background:#ff8a00;color:#111;border-radius:12px;padding:2px 10px;font-size:20px}
.cmds{display:grid;grid-template-columns:1fr 1fr;gap:14px}.cmds.one{grid-template-columns:1fr}.cmd{min-height:90px;font-size:30px}.cmd:disabled{opacity:.4}.cmd.atk{background:#ff6b4a}.cmd.spc{background:#ffd84d}.cmd.def{background:#5ab0ff}.cmd.itm{background:#7ee07e}.cmd.blk{background:#666;color:#fff;min-height:110px;font-size:36px}.cmd.blk.flash{background:#ffd84d;color:#111;animation:pulse .3s infinite}
.rcancel{margin-top:10px}
.ringbox{position:relative;height:200px;display:flex;align-items:center;justify-content:center}.tgt{position:absolute;width:110px;height:110px;border-radius:50%;border:6px solid #2fbf71}.ring{position:absolute;width:110px;height:110px;border-radius:50%;border:6px solid #ffd84d;animation:shrink 1.3s linear forwards}@keyframes shrink{from{transform:scale(3.2)}to{transform:scale(1)}}.tapb{position:relative;z-index:2;width:110px;height:110px;border-radius:50%;padding:0;min-height:0;background:#ffd84d}

/* v9 bosses + specials */
.stage>.foe.bz{font-size:0;width:300px;height:300px;bottom:24px}.bz svg{width:100%;height:100%;overflow:visible}
.bz .eye{animation:eyeg 1.6s ease-in-out infinite}@keyframes eyeg{50%{opacity:.55}}
.bz-blaster{filter:drop-shadow(0 0 22px #b048ff)!important}.bz-miner{filter:drop-shadow(0 0 16px #ff8a1f)!important}.bz-fish{filter:drop-shadow(0 0 20px #3dffd0)!important}.bz-memory{filter:drop-shadow(0 0 20px #ffe14d)!important}
.bz .lava,.bz .core{animation:eyeg 1s infinite}.bz .tent{transform-origin:100px 130px;animation:sway 2.4s ease-in-out infinite}@keyframes sway{50%{transform:skewX(6deg)}}
.bz .wing{transform-origin:70px 90px;animation:flap 1.4s ease-in-out infinite}.bz .wing.r{transform-origin:130px 90px;animation-name:flapr}@keyframes flap{50%{transform:rotate(-10deg)}}@keyframes flapr{50%{transform:rotate(10deg)}}
.stage>.foe.bz::before{content:'';position:absolute;inset:10% 10% 0;border-radius:50%;background:radial-gradient(currentColor,transparent 70%);opacity:.25;color:#fff;animation:eyeg 2s infinite;z-index:-1}
.stage>.foe.ouch svg{animation:hitf .3s}@keyframes hitf{0%,100%{filter:none}40%{filter:brightness(3) saturate(0)}}
.stage>.foe.wind{animation:windb 1.2s}@keyframes windb{30%{transform:translateX(30px) scale(1.12) rotate(4deg);filter:brightness(1.6)}100%{transform:translateX(20px)}}
.stage>.foe.dissolve{animation:diss 1.3s forwards}@keyframes diss{20%{filter:brightness(4)}100%{transform:scale(1.4);opacity:0;filter:brightness(4) blur(12px)}}
.shard{position:absolute;right:20%;top:150px;width:18px;height:18px;transform:rotate(45deg);animation:shard 1.2s ease-out forwards}@keyframes shard{to{transform:translate(var(--dx),var(--dy)) rotate(400deg) scale(.2);opacity:0}}
.bproj{position:absolute;right:22%;top:150px;width:60px;height:60px;border-radius:50%;background:radial-gradient(#fff,var(--c) 50%,transparent 70%);box-shadow:0 0 30px var(--c);animation:proj .6s ease-in forwards}@keyframes proj{to{transform:translateX(-560px) scale(1.6)}}
.b-miner{border-radius:20%;background:radial-gradient(#ffd08a,#7a5a3a 60%,transparent 72%)}.b-memory{width:120px;border-radius:40%}
.wflash{position:absolute;inset:0;animation:wfl .45s forwards;pointer-events:none}@keyframes wfl{from{opacity:.85}to{opacity:0}}
.fxi.huge{font-size:64px!important;color:#ffe14d;text-shadow:0 0 12px #f50,3px 3px 0 #000}.fxi.small{font-size:26px!important}
.sptitle{font-size:34px!important;font-weight:900;color:#ffe14d;text-shadow:0 0 10px #f0f;text-align:center}
#fx{position:absolute;inset:0;z-index:5;pointer-events:none;overflow:hidden}
/* Spirit Wave */
.stage.sw-dark::after{content:'';position:absolute;inset:0;background:rgba(20,0,40,.45);pointer-events:none}
.hero.beast{z-index:2;filter:drop-shadow(0 0 18px #e8e8ff) drop-shadow(0 0 34px #a050ff)!important;animation:pwr .15s infinite}@keyframes pwr{50%{transform:translate(2px,-1px)}}
.hero.beast .hair{fill:#e8ecff;transform-origin:60px 60px;transform:scale(1.3,1.45) translateY(-6px);transition:transform .5s}
.baura{position:absolute;left:6%;bottom:10px;width:240px;height:300px;border-radius:50% 50% 40% 40%;background:radial-gradient(ellipse at 50% 70%,rgba(255,255,255,.7),rgba(170,90,255,.55) 45%,transparent 70%);animation:aur .3s infinite alternate;z-index:1}@keyframes aur{to{transform:scaleY(1.08);opacity:.75}}
.bolt{position:absolute;left:10%;bottom:60px;width:4px;height:160px;background:#fff;box-shadow:0 0 10px #c8f,0 0 20px #88f;clip-path:polygon(0 0,100% 0,100% 30%,0 30%,0 60%,100% 60%,100% 100%,0 100%);animation:blt .25s steps(2) infinite;z-index:3}.bolt.b1{left:20%;height:120px;animation-delay:.08s}.bolt.b2{left:15%;bottom:150px;transform:rotate(60deg)}@keyframes blt{50%{opacity:0;transform:translateX(30px) rotate(-20deg)}}
.sworb{position:absolute;left:calc(8% + 150px);bottom:110px;width:30px;height:30px;border-radius:50%;background:radial-gradient(#fff,#7fd8ff 50%,transparent 70%);box-shadow:0 0 40px #5ac8ff;animation:orb .8s forwards;z-index:3}@keyframes orb{to{transform:scale(3.2)}}
.swbeam{position:absolute;left:calc(8% + 160px);bottom:95px;height:80px;width:0;border-radius:40px;background:linear-gradient(#bfeaff,#fff 40%,#fff 60%,#7fd0ff);box-shadow:0 0 40px #5ac8ff,0 0 80px #3a8cff;animation:swb 1s ease-out forwards;z-index:3}@keyframes swb{30%{width:calc(84% - 160px);opacity:1}80%{opacity:1;width:calc(84% - 160px);height:110px;bottom:80px}100%{width:calc(84% - 160px);opacity:0}}
/* Blade Flurry */
.stage.slowmo::after{content:'';position:absolute;inset:0;background:radial-gradient(transparent 40%,rgba(0,60,180,.6));box-shadow:inset 0 0 120px #08f;pointer-events:none;filter:none}
.stage.slowmo{filter:saturate(.6) hue-rotate(-15deg)}
.hero.dash{transform:translateX(min(52vw,520px));transition:transform .2s ease-in;z-index:2}
.fghost{position:absolute;bottom:30px;width:190px;filter:hue-rotate(180deg) brightness(1.6) blur(1px)}
.fslash{position:absolute;width:220px;height:10px;border-radius:50%;background:linear-gradient(90deg,transparent,#fff,#9ff,transparent);box-shadow:0 0 16px #8ff;transform:rotate(var(--r));animation:fsl .3s forwards}.fslash.big{width:380px;height:18px}@keyframes fsl{from{clip-path:inset(0 100% 0 0)}50%{clip-path:inset(0 0 0 0)}to{opacity:0}}

.rtype{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}.rtype input{font-size:26px;padding:12px 16px;border-radius:14px;border:3px solid #fff;min-width:0;width:min(420px,70vw)}.rsay{min-height:0;padding:6px 14px;font-size:24px}
@media (max-height:560px){.stage{height:46vh}.hero,.fghost{width:110px;bottom:12px}.stage>.foe{font-size:100px;bottom:16px}.stage>.foe svg{max-height:38vh;width:auto}.rmenu .ropts button,.rmenu .cmd{min-height:52px;font-size:20px;padding:8px 12px}.rmsg{font-size:18px;margin:6px 0}.rmenu{padding-bottom:84px}}
@media (max-width:560px){.stage{height:300px}.hero,.fghost{width:120px}}

/* v14 Spirit Wave */
.hero.sw-stance{z-index:4;animation:swcr .5s forwards,pwr .15s .5s infinite}@keyframes swcr{to{transform:translateY(10px) rotate(-8deg) scaleY(.92)}}
.hero.sw-thrust{animation:swth .25s forwards}@keyframes swth{from{transform:translateY(10px) rotate(-8deg) scaleY(.92)}to{transform:translateX(18px) rotate(6deg)}}
.hero.sw-stance .hair{fill:#e8ecff}
.stage.sw-rumble{animation:swrm .09s infinite}@keyframes swrm{50%{transform:translate(2px,-1px)}}
.stage.sw-night::before{content:'';position:absolute;inset:0;background:rgba(5,5,30,.6);z-index:3;pointer-events:none;animation:swdk .3s}@keyframes swdk{from{opacity:0}}
.sw-aura{position:absolute;bottom:10px;border-radius:50% 50% 40% 40%;background:radial-gradient(ellipse at 50% 70%,rgba(255,255,255,.75),rgba(190,205,255,.5) 45%,transparent 70%);animation:swau .18s infinite alternate;transform-origin:50% 100%}@keyframes swau{from{transform:scale(1,1);opacity:.75}to{transform:scale(1.08,1.15);opacity:1}}
.sw-rock{position:absolute;bottom:8px;width:16px;height:12px;background:#6b5a48;border-radius:4px 7px 3px 6px;transform:scale(var(--s));animation:swrk 1.6s var(--d) ease-out forwards}@keyframes swrk{to{transform:translateY(-90px) rotate(160deg) scale(var(--s))}}
.sw-orb{position:absolute;width:60px;height:60px;border-radius:50%;background:radial-gradient(#fff 25%,#9fe0ff 50%,rgba(60,150,255,.0) 72%);box-shadow:0 0 30px #7fd0ff;transform:scale(.15);animation:swor 1.5s ease-in forwards,swfl .1s infinite alternate;z-index:6}@keyframes swor{to{transform:scale(1.5)}}@keyframes swfl{to{opacity:.8}}
.sw-orb.sw-fire{animation:none;transform:scale(1.7)}
.sw-spark{position:absolute;width:8px;height:8px;border-radius:50%;background:#fff;box-shadow:0 0 8px #8fdcff;opacity:0;animation:swsp .7s ease-in 2 forwards;z-index:6}@keyframes swsp{0%{transform:translate(var(--dx),calc(var(--dy)*-1));opacity:0}20%{opacity:1}100%{transform:none;opacity:0}}
.sw-chant{position:absolute;top:8%;left:0;right:0;text-align:center;font:900 46px/1.1 system-ui,sans-serif;color:#fff;letter-spacing:3px;-webkit-text-stroke:2px #1c4fff;text-shadow:0 0 14px #7fd0ff,0 4px 0 #0a1a66;z-index:8}.sw-chant b{color:#dff4ff;font-size:1.25em}.sw-chant.sw-pop{animation:swpo .25s}@keyframes swpo{from{transform:scale(1.4);opacity:.3}}
.sw-beam{position:absolute;height:68px;border-radius:34px;background:linear-gradient(#5fb8ff,#bfeaff 30%,#bfeaff 70%,#5fb8ff);box-shadow:0 0 30px #5ac8ff,0 0 70px #3a8cff;transform-origin:0 50%;transform:scaleX(0);animation:swbm 1.3s cubic-bezier(.2,.8,.3,1) forwards,swwv .07s infinite alternate;z-index:6}
@keyframes swbm{0%{transform:scaleX(0)}25%{transform:scaleX(.78)}40%{transform:scaleX(.72)}55%{transform:scaleX(.8)}70%{transform:scaleX(.75)}100%{transform:scaleX(1)}}
@keyframes swwv{from{filter:brightness(1)}to{filter:brightness(1.25)}}
.sw-core{position:absolute;left:0;right:0;top:30%;bottom:30%;border-radius:20px;background:#fff;box-shadow:0 0 12px #fff}
.sw-beam.sw-fade{animation:swfo .6s forwards}@keyframes swfo{from{transform:scaleX(1)}to{transform:scaleX(1) scaleY(0);opacity:0}}
.sw-head{position:absolute;width:90px;height:90px;border-radius:50%;background:radial-gradient(#fff 30%,#a8e4ff 55%,transparent 72%);animation:swhd 1.3s cubic-bezier(.2,.8,.3,1) forwards,swfl .06s infinite alternate;z-index:7}
@keyframes swhd{0%{transform:translateX(0)}25%{transform:translateX(calc(var(--w)*.78)) scale(1.1)}40%{transform:translateX(calc(var(--w)*.72)) scale(1.3)}55%{transform:translateX(calc(var(--w)*.8)) scale(1.1)}70%{transform:translateX(calc(var(--w)*.75)) scale(1.35)}95%{transform:translateX(var(--w)) scale(1.5);opacity:1}100%{transform:translateX(var(--w)) scale(2);opacity:0}}
.sw-speed{position:absolute;inset:0;z-index:5;background:repeating-linear-gradient(0deg,transparent 0 22px,rgba(255,255,255,.35) 22px 24px,transparent 24px 47px);animation:swsl .12s linear infinite;opacity:.6}@keyframes swsl{from{transform:translateX(0)}to{transform:translateX(60px)}}
.stage>.foe.sw-push{animation:swps 1.3s forwards!important}@keyframes swps{0%,20%{transform:none}35%{transform:translateX(14px)}45%{transform:translateX(4px)}60%{transform:translateX(22px)}75%{transform:translateX(10px)}100%{transform:translateX(50px) rotate(6deg)}}
.sw-boom{position:absolute;width:180px;height:180px;border-radius:50%;background:radial-gradient(#fff 20%,#bfe9ff 40%,#5ab0ff 55%,transparent 70%);animation:swbo .7s ease-out forwards;z-index:7}@keyframes swbo{from{transform:scale(.2)}60%{opacity:1}to{transform:scale(2.4);opacity:0}}
.sw-smoke{position:absolute;width:90px;height:90px;border-radius:50%;background:radial-gradient(rgba(200,205,220,.85),rgba(120,125,140,.4) 55%,transparent 70%);opacity:0;animation:swsm .8s ease-out forwards;z-index:7}@keyframes swsm{20%{opacity:1}to{transform:translate(20px,-60px) scale(2.2);opacity:0}}
.fxi.sw-num{font-size:64px;z-index:9}
@media (max-height:560px){.sw-chant{font-size:30px;top:4%}.sw-beam{height:44px}}
.sw-chant.sw-fade{opacity:0;transition:opacity .2s}

.sb-raise{transform:translateY(-6px);filter:drop-shadow(0 0 14px #bfe9ff) brightness(1.15);transition:.25s}
.sb-glow{position:absolute;width:80px;height:120px;border-radius:50%;background:radial-gradient(#fff,#9fe2ff 40%,transparent 70%);box-shadow:0 0 40px #8fd8ff;animation:sbg .75s ease-in forwards;pointer-events:none}
.sb-glow.sb-out{animation:sbo .3s forwards}
@keyframes sbg{from{transform:scale(.2);opacity:.3}to{transform:scale(1.2);opacity:1}}@keyframes sbo{to{transform:scale(1.8);opacity:0}}
.sb-beam{position:absolute;width:70px;height:110px;border-radius:50%;border-right:12px solid #f4fbff;box-shadow:12px 0 22px -4px #7fd0ff,inset -8px 0 18px -6px #aee6ff;filter:drop-shadow(0 0 10px #8fdcff);animation:sbf .45s ease-in forwards;pointer-events:none}
.sb-trail{position:absolute;right:20px;top:30%;width:180px;height:40%;background:linear-gradient(90deg,transparent,rgba(160,225,255,.75));border-radius:50%;filter:blur(3px)}
@keyframes sbf{from{transform:translate(0,0) scale(.6)}to{transform:translate(var(--dx),var(--dy)) scale(1.3)}}
.sb-hit{position:absolute;width:140px;height:140px;border-radius:50%;background:radial-gradient(#fff,#a8e6ff 35%,rgba(80,170,255,.4) 60%,transparent 72%);animation:sbh .7s ease-out forwards;pointer-events:none}
@keyframes sbh{from{transform:scale(.2);opacity:1}to{transform:scale(1.8);opacity:0}}
.sb-num{color:#bff0ff!important}

/* v16 blow-away finisher */
.foe.ba-launch{animation:baLaunch .7s cubic-bezier(.3,.1,.8,.4) forwards!important}
.foe.ba-gone{opacity:0!important}
.foe.ba-crash{animation:baCrash .45s cubic-bezier(.6,0,1,1) forwards!important}
@keyframes baLaunch{0%{transform:translate(0,0) rotate(0) scale(1)}100%{transform:translate(70vw,-90vh) rotate(1080deg) scale(.25)}}
@keyframes baCrash{0%{transform:translate(0,-110vh) rotate(-30deg)}80%{transform:translate(0,8px) scaleY(.85)}100%{transform:none}}
.ba-trail{position:absolute;width:46px;height:46px;border-radius:50%;background:radial-gradient(#eee,#9aa3ad 60%,transparent 70%);opacity:.8;pointer-events:none;animation:baTrail .9s ease-out forwards}
@keyframes baTrail{to{transform:scale(2.2) translateY(-20px);opacity:0}}
.ba-star{position:absolute;right:6%;top:4%;font-size:44px;color:#fff;text-shadow:0 0 12px #fff,0 0 24px #ffe066;pointer-events:none;animation:baStar .7s ease-out forwards}
@keyframes baStar{0%{transform:scale(0) rotate(0)}50%{transform:scale(1.5) rotate(90deg)}100%{transform:scale(0) rotate(180deg);opacity:0}}
.ba-dust{position:absolute;width:40px;height:40px;border-radius:50%;background:radial-gradient(#d9c7a5,#a08a66 60%,transparent 70%);pointer-events:none;animation:baDust .7s ease-out forwards}
@keyframes baDust{to{transform:translate(var(--dx),var(--dy)) scale(2);opacity:0}}
.ba-num{font-size:30px!important;color:#ffe066!important}
/* v17 Word Racer */
.wr-track{position:relative;height:min(46vh,520px);min-height:170px;border-radius:24px;overflow:hidden;background:linear-gradient(#5fa84a 0 4%,#3b3b44 4% 96%,#5fa84a 96%);border:4px solid #111;margin-bottom:12px}
.wr-road{position:absolute;inset:0;background:repeating-linear-gradient(90deg,transparent 0 40px,rgba(255,255,255,.08) 40px 80px)}
.wr-lane{position:absolute;left:0;right:0;height:0;border-top:3px dashed rgba(255,255,255,.35)}
.wr-car{position:absolute;left:0;width:min(24vw,190px);height:22%;will-change:transform}
.wr-svg{width:100%;height:100%;display:block}
.wr-car .wr-wheel{transform-box:fill-box;transform-origin:center;animation:wrspin .4s linear infinite}
.wr-car.wr-boost .wr-wheel{animation-duration:.12s}
.wr-tag{position:absolute;left:4px;top:-4px;font-size:clamp(11px,1.6vw,16px);font-weight:800;background:rgba(0,0,0,.55);color:#fff;padding:0 6px;border-radius:8px;white-space:nowrap}
.wr-me .wr-tag{background:#ffd23d;color:#111}
.wr-me{filter:drop-shadow(0 0 8px #ffd23d)}
.wr-flame{position:absolute;right:100%;top:45%;width:0;height:30%;background:linear-gradient(90deg,transparent,#ff7a1a,#ffe46b);border-radius:50% 0 0 50%;opacity:0;transition:width .15s,opacity .15s}
.wr-boost .wr-flame{width:70%;opacity:1;animation:wrflk .1s infinite alternate}
.wr-boost::after{content:'';position:absolute;right:110%;top:10%;width:120%;height:80%;background:repeating-linear-gradient(0deg,transparent 0 8px,rgba(255,255,255,.55) 8px 10px);opacity:.6;mask:linear-gradient(90deg,transparent,#000);-webkit-mask:linear-gradient(90deg,transparent,#000)}
.wr-smoke{position:absolute;right:95%;top:30%;width:30%;height:40%;border-radius:50%;background:radial-gradient(#777,transparent 70%);opacity:0}
.wr-sput .wr-smoke{animation:wrsmk .5s infinite}
.wr-sput .wr-svg{animation:wrjit .15s infinite}
.wr-finish{position:absolute;top:4%;bottom:4%;left:0;width:26px;background:repeating-conic-gradient(#000 0 25%,#fff 0 50%) 0 0/13px 13px}
.wr-bar{position:absolute;left:10px;right:10px;bottom:4px;height:8px;background:rgba(0,0,0,.4);border-radius:6px}
.wr-bar i{display:block;height:100%;width:0;background:#ffd23d;border-radius:6px}
.wr-pop{position:absolute;left:24%;top:30%;font-size:clamp(26px,5vw,52px);font-weight:900;color:#ffe46b;text-shadow:0 3px 0 #a33,0 0 18px #f80;animation:wrpop .9s forwards;pointer-events:none}
.wr-qbox{padding-bottom:calc(96px + env(safe-area-inset-bottom))}
.wr-ask{font-size:clamp(22px,3.4vw,32px);margin:6px 0 10px;text-align:center}
.wr-opts{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.wr-ans{background:rgba(255,255,255,.16);color:#fff;font-size:clamp(20px,3vw,28px);min-height:clamp(64px,10vh,100px);border-radius:20px}
.wr-ans.wr-right{background:#2fbf71}.wr-ans.wr-wrong{background:#e5484d}
.wr-typ{display:flex;gap:12px}.wr-typ input{flex:1;font-size:28px;padding:12px;border-radius:16px;min-width:0}
.wr-say{font-size:26px;padding:6px 16px}
.wr-res{font-size:26px;font-weight:800}
@keyframes wrspin{to{transform:rotate(360deg)}}
@keyframes wrflk{to{width:85%;filter:brightness(1.3)}}
@keyframes wrsmk{0%{opacity:.8;transform:scale(.6)}100%{opacity:0;transform:translateX(-30px) scale(1.6)}}
@keyframes wrjit{50%{transform:translateY(2px) rotate(-2deg)}}
@keyframes wrpop{0%{transform:scale(.4);opacity:0}25%{transform:scale(1.15);opacity:1}100%{transform:translateY(-40px);opacity:0}}
@media (max-height:560px){.wr-track{height:40vh}.wr-ans{min-height:56px}.wr-opts{gap:8px}.top{margin-bottom:6px}}
/* Turbo Wraith */
.bz-racer{filter:drop-shadow(0 0 18px #ffd23d)!important}
.tw-svg .tw-wheel{animation:wrspin .9s linear infinite}
.tw-svg .tw-body{animation:twrev .18s infinite alternate}
.tw-svg .tw-fire{transform-box:fill-box;transform-origin:bottom;animation:twfire .12s infinite alternate}
.tw-svg .tw-eye{animation:tweye 1.4s infinite}
.stage>.foe.wind .tw-wheel{animation-duration:.15s}
.stage>.foe.tw-ram{animation:twram .7s ease-in}
.tw-proj{position:absolute;right:24%;top:46%;width:140px;height:60px;animation:twproj .6s ease-in forwards;pointer-events:none}
.tw-proj i{position:absolute;right:0;height:10px;border-radius:6px;background:linear-gradient(90deg,transparent,#ff7a1a,#ffe46b);box-shadow:0 0 14px #ffb000}
.tw-proj i:nth-child(1){top:0;width:100%}.tw-proj i:nth-child(2){top:24px;width:80%}.tw-proj i:nth-child(3){top:48px;width:90%}
@keyframes twrev{to{transform:translateY(-2px)}}
@keyframes twfire{to{transform:scaleY(1.4)}}
@keyframes tweye{50%{opacity:.6}}
@keyframes twram{0%{transform:none}30%{transform:translateX(30px)}70%{transform:translateX(-45vw) rotate(-6deg)}100%{transform:none}}
@keyframes twproj{to{transform:translateX(-50vw);opacity:.3}}
@media (max-height:560px){.stage>.foe.bz{width:38vh;height:38vh;bottom:12px}.stage>.foe.bz svg{width:100%;height:100%;max-height:none}}
.sqmus-tog{flex:none;min-height:44px;font-size:18px;padding:4px 12px;border-radius:22px;background:rgba(0,0,0,.55);color:#fff;border:1px solid rgba(255,255,255,.4)}.rpg .rhud{position:relative}
/* ===== v19 ===== */
.qprog{font-size:16px;opacity:.75;margin-left:6px}
.node.chal{background:linear-gradient(#ffb347,#ff7a1a)}.node.chal.done{background:var(--ac2,#2fbf71)}
.qchips{display:flex;flex-wrap:wrap;gap:10px;margin-top:10px}
.qchip{font-size:18px;padding:10px 16px;border-radius:16px;min-height:auto}
span.qchip.lk{display:inline-block;background:rgba(255,255,255,.1);color:inherit;opacity:.85;border:2px dashed rgba(255,255,255,.35)}
button.qchip.boss{background:#e5484d;color:#fff}
.unlk{font-size:24px;background:rgba(255,215,64,.18);border:2px solid #f5c542;border-radius:16px;padding:10px 14px;display:inline-block;margin:6px}
.agame.alock{opacity:.6;border:2px dashed rgba(255,255,255,.35)}
.ob-built{min-height:70px;display:flex;flex-wrap:wrap;gap:8px;justify-content:center;align-items:center;padding:10px;margin:12px 0;border:3px dashed rgba(255,255,255,.4);border-radius:18px}
.ob-built.right{border-color:#2fbf71;background:rgba(47,191,113,.2)}.ob-built.wrong{border-color:#e5484d;background:rgba(229,72,77,.2)}
.ob-pool{display:flex;flex-wrap:wrap;gap:10px;justify-content:center}
.obt{font-size:24px;padding:10px 16px;min-height:54px;border-radius:14px;background:#fff;color:#123}
.obt.in{background:#f5c542;color:#111}.obt:disabled{opacity:.25}
.ob-ph{opacity:.6;font-size:18px}
.rord .ob-built{min-height:56px;margin:6px 0}.rord .obt{font-size:20px;min-height:46px;padding:6px 12px}
.mechs{font-size:15px;opacity:.85}
.rtimer{height:10px;background:rgba(255,255,255,.2);border-radius:6px;overflow:hidden;margin:8px 0}
.rtimer i{display:block;height:100%;width:100%;background:linear-gradient(90deg,#2fbf71,#f5c542,#e5484d)}
.rtimer i.run{animation:rtim linear forwards}@keyframes rtim{from{width:100%}to{width:0}}
.bshield{position:absolute;right:6%;top:30px;width:240px;height:240px;border-radius:50%;pointer-events:none;opacity:0;transition:opacity .3s;background:radial-gradient(circle,transparent 55%,rgba(120,200,255,.45) 70%,rgba(200,240,255,.8) 74%,transparent 76%);box-shadow:0 0 30px rgba(120,200,255,.6)}
.bshield.up{opacity:1;animation:shp 1.6s ease-in-out infinite}@keyframes shp{50%{transform:scale(1.05)}}
.minion{position:absolute;bottom:18%;font-size:56px;animation:minb .8s ease-in-out infinite alternate;filter:drop-shadow(0 4px 4px rgba(0,0,0,.5))}@keyframes minb{to{transform:translateY(-12px)}}
.mtag{position:absolute;left:50%;transform:translateX(-50%);top:8px;font-size:16px;font-weight:800;background:rgba(0,0,0,.45);color:#fff;border-radius:12px;padding:4px 10px;white-space:nowrap;pointer-events:none}.mtag:empty{display:none}
.stage.phase2{box-shadow:inset 0 0 80px rgba(255,40,90,.7)}.stage.phase2 .foe{animation-duration:.6s}
.dodgeq{font-size:44px;text-align:center;font-weight:900;color:#ffd23d;margin:4px 0}
.cmds.dodge{grid-template-columns:repeat(3,1fr)}.cmds.dodge .cmd{font-size:44px}
/* new arcade games */
.bub,.star{position:absolute;font-size:22px;padding:14px 18px;border-radius:40px;min-height:auto;white-space:nowrap}
.bub{background:radial-gradient(circle at 30% 30%,#fff,#b8e6ff 40%,#6ec6ff);color:#123;border:2px solid #fff}
.star{background:#2a1b5e;color:#ffe46b;border:2px solid #ffe46b}
.bub.hit,.star.hit{transform:scale(1.4);opacity:0;transition:.4s}.bub.wrong,.star.wrong{background:#e5484d;color:#fff}
.ar-bubble{background:linear-gradient(#5ec4ff,#c9ecff)}.ar-stars{background:linear-gradient(#060320,#2b1660)}
.holes{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;height:100%;padding:14px;box-sizing:border-box}
.hole{background:rgba(0,0,0,.35);border-radius:24px;display:flex;align-items:center;justify-content:center;overflow:hidden}
.peek{width:92%;min-height:70%;font-size:20px;border-radius:20px;opacity:0;transform:translateY(60%) scale(.8);transition:.2s;pointer-events:none;background:#ffcf5a;color:#3a1a00}
.peek.up{opacity:1;transform:none;pointer-events:auto}.peek.hit{background:#2fbf71;color:#fff}.peek.wrong{background:#e5484d;color:#fff}
.holes.storm .peek{background:#dfe6f0;color:#1c2333}.holes.storm .peek.hit{background:#ffe94d}
.ar-whack{background:linear-gradient(#0d1a3a,#27406e)}.ar-storm{background:linear-gradient(#1c2333,#4a5670)}
.arena.ar-tf,.arena.ar-chef,.arena.ar-train,.arena.ar-tower,.arena.ar-rocket,.arena.ar-goal{overflow:auto}
.tfbox{padding:20px;text-align:center}.tfq{font-size:34px;font-weight:800;margin:10px 0}.tfe{font-size:28px;margin-bottom:10px}
.tfb{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:14px}.tfb button{font-size:30px;min-height:110px}
.tfb button.right,.rkopts button.right{background:#2fbf71;color:#fff}.tfb button.wrong,.rkopts button.wrong{background:#e5484d;color:#fff}
.bld{padding:14px}.bld.chef .obt{background:#fff3d6}.bld.train .ob-pool .obt{background:#ffd2a8;border-radius:10px 10px 4px 4px;border-bottom:8px solid #333}.bld.tower .obt{background:#c8b7a6;border-radius:4px;border:2px solid #6b5a4a}
.ar-chef{background:linear-gradient(#ffe2a8,#ffb04a)}.ar-train{background:linear-gradient(#ffe9c7,#a07850)}.ar-tower{background:linear-gradient(#2b0838,#0a0410)}
.rk{display:grid;grid-template-columns:120px 1fr;height:100%}.rksky{position:relative;background:linear-gradient(#0b1a4a,#3b7bd8 70%,#9fd4ff);border-radius:16px}
.rkship{position:absolute;left:50%;transform:translateX(-50%);font-size:56px;transition:bottom .6s}.rkship.boost{filter:drop-shadow(0 12px 8px #ffb000)}
.rkalt{position:absolute;top:8px;width:100%;text-align:center;font-weight:800;color:#fff}
.rkq{padding:14px}.rkopts{display:grid;grid-template-columns:1fr 1fr;gap:12px}.rkopts button{font-size:22px;min-height:80px}
.pk{position:relative;height:100%;background:linear-gradient(#58c4ff 0,#bfe8ff 30%,#2f9e44 30%,#1e7a33)}
.pknet{position:absolute;left:4%;right:4%;top:4%;height:44%;display:grid;grid-template-columns:repeat(3,1fr);gap:10px;border:6px solid #fff;border-bottom:none;padding:10px;background:repeating-linear-gradient(45deg,rgba(255,255,255,.18) 0 4px,transparent 4px 18px)}
.pkt{font-size:22px;background:rgba(255,255,255,.9);color:#123}.pkt.right{background:#2fbf71;color:#fff}.pkt.wrong{background:#e5484d;color:#fff}
.pkkeep{position:absolute;top:49%;font-size:60px;transform:translateX(-50%);pointer-events:none}
.pkball{position:absolute;left:50%;top:82%;font-size:50px;transform:translate(-50%,-50%);transition:left .45s,top .45s,font-size .45s;pointer-events:none}.pkball.kick{font-size:30px}
.pkfx{position:absolute;left:50%;top:55%;transform:translate(-50%,-50%);font-size:44px;font-weight:900;color:#fff;text-shadow:0 3px 0 #000;pointer-events:none}
/* v20 world map */
.wm-wrap{position:relative;margin:8px 0 22px}
.wm-scroll{height:min(72vh,900px);overflow:auto;-webkit-overflow-scrolling:touch;border-radius:22px;border:4px solid #3b2a14;box-shadow:0 6px 20px rgba(0,0,0,.35);background:#5cb84a;touch-action:pan-x pan-y}
.wm-map{position:relative;width:100%;min-width:560px}
.wm-svg{position:absolute;inset:0;width:100%;height:100%;display:block}
.wm-bname{font:800 30px system-ui,sans-serif;fill:#fff;paint-order:stroke;stroke:rgba(0,0,0,.55);stroke-width:6px}
.wm-seg{fill:none;stroke:#6b5a44;stroke-width:16;stroke-dasharray:2 22;stroke-linecap:round;opacity:.75}
.wm-seg.on{stroke:#fff3b0;stroke-width:20;opacity:1;filter:drop-shadow(0 0 6px #ffd84d)}
.wm-node{position:absolute;transform:translate(-50%,-50%);z-index:2;display:flex;align-items:center;gap:8px}
.wm-node.r{flex-direction:row-reverse}
.wm-dot{width:84px;height:84px;min-width:84px;border-radius:50%;padding:0;font-size:40px;line-height:1;background:radial-gradient(circle at 35% 30%,#fff7c2,#f5c542 60%,#c48a12);border:5px solid #fff;color:#111;box-shadow:0 6px 0 #7a5208,0 8px 14px rgba(0,0,0,.4);margin:0}
.wm-node.clear .wm-dot{background:radial-gradient(circle at 35% 30%,#d6ffd0,#4cd964 60%,#1e8a34)}
.wm-node.lock .wm-dot{background:radial-gradient(circle at 35% 30%,#ddd,#9a9a9a 60%,#5f5f5f);box-shadow:0 6px 0 #3a3a3a;filter:saturate(.3)}
.wm-tag{background:rgba(20,16,30,.82);color:#fff;border-radius:14px;padding:6px 10px;display:flex;flex-direction:column;min-width:140px;max-width:190px;font-size:17px;line-height:1.15;pointer-events:none}
.wm-tag small{opacity:.8;font-size:13px}
.wm-st{display:flex;gap:6px;margin-top:4px}.wm-st i{font-style:normal;background:rgba(255,255,255,.15);border-radius:8px;padding:1px 6px;font-size:15px}.wm-st i.off{opacity:.55}
.wm-node.lock .wm-tag{opacity:.75}
.wm-hero{position:absolute;left:50%;top:-74px;transform:translateX(-50%);width:44px;height:62px;pointer-events:none;animation:wmBob 1s ease-in-out infinite alternate}
.wm-node.r .wm-hero{left:auto;right:42px;transform:translateX(50%)}
.wm-node.l .wm-hero{left:42px}
.wm-hero-svg{width:100%;height:100%}
@keyframes wmBob{from{margin-top:0}to{margin-top:-8px}}
.wm-hint{text-align:center;font-size:15px;opacity:.75;margin-top:6px}
.wm-modal{position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:50;display:flex;align-items:center;justify-content:center;padding:20px}
.wm-sheet{background:var(--bg,#1b2a4a);border-radius:22px;border:5px solid var(--b1);max-width:760px;width:100%;max-height:88vh;overflow:auto;padding:14px;box-shadow:0 10px 40px rgba(0,0,0,.5)}
.wm-sheet-hd{display:flex;justify-content:space-between;align-items:center;font-size:22px;font-weight:800;background:linear-gradient(90deg,var(--b1),var(--b2));color:#111;border-radius:14px;padding:8px 12px;margin-bottom:8px}
.wm-x{margin:0;font-size:18px;padding:8px 14px}
.wm-lbh{margin:16px 0 6px}

.rp-line{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:6px 0}.rp-line .rp-n{flex:2 1 180px;min-width:0}.rp-line .rp-c{flex:0 1 120px;width:120px;min-width:0}.rp-lbl{flex:2 1 180px;font-weight:700}.rp-bad{outline:3px solid #e33!important;background:#fee!important}

.stk-card{display:flex;flex-direction:column;gap:10px;height:100%;box-sizing:border-box}
.stk-row{display:flex;align-items:center;gap:14px;background:rgba(0,0,0,.28);border-radius:14px;padding:10px 14px;color:#fff}
.stk-ic{font-size:34px;width:44px;text-align:center}
.stk-l{flex:1;font-size:22px;font-weight:700;display:flex;flex-direction:column}
.stk-l small{font-size:15px;font-weight:400;opacity:.85}
.stk-n{font-size:30px;white-space:nowrap}
.stk-mini{flex-wrap:wrap;gap:10px}
.stk-chips{display:flex;flex-wrap:wrap;gap:8px;align-items:center;flex:1;font-size:20px}
.stk-chip{background:rgba(0,0,0,.28);color:#fff;border-radius:999px;padding:6px 14px;white-space:nowrap}
.stk-next{font-size:16px;opacity:.9}
.stk-grid{grid-template-columns:repeat(auto-fit,minmax(340px,1fr));align-items:stretch}
.bigtick{position:fixed;inset:0;z-index:9999;display:flex;flex-direction:column;align-items:center;justify-content:center;background:rgba(0,40,10,.55);color:#5cff8a;font-size:40px;text-shadow:0 3px 10px #000;animation:btIn .35s ease-out}.bigtick div{font-size:220px;line-height:1;animation:btPop .6s cubic-bezier(.2,1.6,.4,1)}@keyframes btIn{from{opacity:0}to{opacity:1}}@keyframes btPop{0%{transform:scale(.2) rotate(-20deg)}100%{transform:scale(1) rotate(0)}}
#hfab{position:fixed;right:calc(16px + env(safe-area-inset-right));bottom:calc(16px + env(safe-area-inset-bottom));z-index:5;width:76px;height:76px;min-width:0;padding:0;border-radius:50%;font-size:40px;background:#ffd84a;box-shadow:0 6px 18px rgba(0,0,0,.45)}
#hpanel{position:fixed;inset:0;z-index:60;background:rgba(0,0,0,.45);display:flex;align-items:flex-end;justify-content:flex-end;padding:16px}
.hp-box{width:min(560px,100%);height:min(640px,85vh);background:#1b2340;color:#fff;border-radius:22px;display:flex;flex-direction:column;padding:14px;box-shadow:0 10px 30px rgba(0,0,0,.6)}
.hp-head{display:flex;justify-content:space-between;align-items:center;font-size:24px}.hp-head button{min-width:0;padding:8px 16px}
.hp-ctx{font-size:18px;opacity:.9;margin:6px 0}.hp-log{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:8px;padding:6px 2px}
.hm{max-width:85%;padding:10px 14px;border-radius:16px;font-size:20px;line-height:1.35}.hm.a{background:#2f3d6e;align-self:flex-start}.hm.u{background:#3fa65a;align-self:flex-end}
.hspk{min-width:0;padding:2px 8px;font-size:18px;margin-left:4px}.hp-note{font-size:14px;opacity:.7;margin:6px 0}
.hp-in{display:flex;gap:8px}.hp-in input{flex:1;min-width:0;font-size:20px}.hp-in button{min-width:0}
.top .hhint{min-width:0;padding:8px 12px;font-size:18px;white-space:nowrap}
