:root{
  --bg:#EFE8D8; --ink:#221E3D; --muted:#5F5979; --panel:#E4DCC8; --edge:rgba(34,30,61,.18);
  --sq-l:#F4EFE1; --sq-d:#A79FC2; --you:#B8861C; --foe:#B8235A;
  --pc-w:#FFFDF6; --pc-b:#221E3D;
  --serif:"Shippori Mincho B1","Hiragino Mincho ProN","Yu Mincho",Georgia,serif;
  --sans:"Zen Kaku Gothic New","Hiragino Sans","Segoe UI",system-ui,sans-serif;
  --glyph:"Segoe UI Symbol","Noto Sans Symbols 2","DejaVu Sans","Apple Symbols",sans-serif;
  color-scheme:light dark;
  box-sizing:border-box;
  padding-top:env(safe-area-inset-top,0px);
  padding-bottom:env(safe-area-inset-bottom,0px);
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --bg:#1C1935; --ink:#EDE6D6; --muted:#A9A3C6; --panel:#272347; --edge:rgba(237,230,214,.16);
    --sq-l:#D8D0EA; --sq-d:#6A6296; --you:#E2B342; --foe:#E04A82;
  }
}
:root[data-theme="dark"]{
  --bg:#1C1935; --ink:#EDE6D6; --muted:#A9A3C6; --panel:#272347; --edge:rgba(237,230,214,.16);
  --sq-l:#D8D0EA; --sq-d:#6A6296; --you:#E2B342; --foe:#E04A82;
}
*,*::before,*::after{box-sizing:border-box}
html{height:100%;scroll-padding-top:env(safe-area-inset-top,0px)}
body{margin:0;min-height:100%;background:var(--bg);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased}
main{max-width:540px;margin:0 auto;padding:14px 14px 32px;display:flex;flex-direction:column;gap:10px}

.top h1{font-family:var(--serif);font-weight:800;font-size:clamp(1.7rem,7vw,2.3rem);line-height:1.1;margin:4px 0 2px;letter-spacing:-.01em}
.top p{margin:0;color:var(--muted);font-size:.95rem}

.foe{display:grid;grid-template-columns:auto 1fr;gap:12px;align-items:start;padding:10px 0 2px}
.fseal{width:46px;height:46px;background:var(--foe);color:#fff;display:grid;place-items:center;font-family:var(--glyph);font-weight:800;font-size:1.7rem;line-height:1;border-radius:6px;transform:rotate(-4deg);margin-top:2px}
.who{display:flex;justify-content:space-between;align-items:baseline;gap:8px}
.name{font-weight:700}
.pips{display:flex;gap:6px;font-family:var(--glyph);font-size:1rem}
.pip{color:var(--foe)}
#pips.eyes .pip{color:#8FB6FF;text-shadow:0 0 8px rgba(143,182,255,.9)}
.pip.spent{opacity:.25}
.say{font-family:var(--serif);font-size:1.05rem;line-height:1.55;margin:3px 0 0;min-height:3.1em}

.tray{display:flex;align-items:center;gap:8px;min-height:1.6em;font-size:.8rem;color:var(--muted)}
.tray .g{font-family:var(--glyph);font-size:1.15rem;letter-spacing:1px;color:var(--ink)}

.wrap{position:relative;border-radius:6px;overflow:hidden}
.board{position:relative;display:grid;grid-template-columns:repeat(8,1fr);border-radius:6px;overflow:hidden;box-shadow:0 0 0 2px var(--ink);transition:box-shadow .5s}
.board::after{content:"";position:absolute;inset:0;pointer-events:none;opacity:0;transition:opacity .6s}
.board.dom-void{box-shadow:0 0 0 2px #CFE0FF,0 0 34px 6px rgba(120,160,255,.75)}
.board.dom-void .sq{background-color:#141738}
.board.dom-void .sq.d{background-color:#080A1E}
.board.dom-void.own-w .pc.w{color:#fff;text-shadow:0 0 8px rgba(160,190,255,.95),0 1px 0 #080A1E}
.board.dom-void.own-w .pc.b{color:#7377A8;text-shadow:0 1px 0 rgba(201,210,255,.6),0 -1px 0 rgba(201,210,255,.6),1px 0 0 rgba(201,210,255,.6),-1px 0 0 rgba(201,210,255,.6)}
.board.dom-void .co{color:#9FB4FF}
.board.dom-void .sq.tgt::after{background:rgba(190,210,255,.6)}
.board.dom-void .sq.tgt.cap::after{background:transparent;border-color:rgba(190,210,255,.7)}
.board.dom-void::after{opacity:1;background:radial-gradient(1.6px 1.6px at 12% 18%,#fff,transparent),radial-gradient(1.2px 1.2px at 37% 62%,#fff,transparent),radial-gradient(1.4px 1.4px at 71% 27%,#fff,transparent),radial-gradient(1px 1px at 88% 74%,#fff,transparent),radial-gradient(1.3px 1.3px at 22% 86%,#fff,transparent),radial-gradient(1px 1px at 54% 9%,#fff,transparent),radial-gradient(1.5px 1.5px at 63% 49%,#DCE6FF,transparent),radial-gradient(1px 1px at 6% 52%,#fff,transparent),radial-gradient(1.2px 1.2px at 93% 41%,#fff,transparent),radial-gradient(1px 1px at 44% 93%,#fff,transparent),radial-gradient(circle at 50% 50%,rgba(140,170,255,.2),transparent 65%);animation:twinkle 3.6s ease-in-out infinite alternate}
@keyframes twinkle{from{opacity:.6}to{opacity:1}}
.board.dom-void::before{content:"";position:absolute;left:50%;top:50%;width:150%;aspect-ratio:1/1;z-index:2;pointer-events:none;border-radius:50%;background:repeating-radial-gradient(circle,transparent 0 26px,rgba(170,195,255,.09) 26px 27px);transform:translate(-50%,-50%);animation:voidpulse 5s linear infinite}
@keyframes voidpulse{from{transform:translate(-50%,-50%) scale(.85)}to{transform:translate(-50%,-50%) scale(1.15)}}
.board.dom-mal{box-shadow:0 0 0 3px #B0101F,0 0 34px 6px rgba(176,16,31,.8)}
.board.dom-mal .sq{background-color:#4A0A12}
.board.dom-mal .sq.d{background-color:#240407}
.board.dom-void.own-b .pc.b{color:#1B2050;text-shadow:0 0 8px rgba(120,160,255,.95),0 0 2px #CFE0FF}
.board.dom-void.own-b .pc.w{color:#A4AAD0;text-shadow:0 1px 0 #080A1E,0 -1px 0 #080A1E,1px 0 0 #080A1E,-1px 0 0 #080A1E}
.board.dom-mal.own-w .pc.w{color:#FFE3E6;text-shadow:0 0 8px rgba(255,30,50,.9),0 1px 0 #120203}
.board.dom-mal.own-w .pc.b{color:#1A0204;text-shadow:0 1px 0 rgba(255,200,200,.5),0 -1px 0 rgba(255,200,200,.5),1px 0 0 rgba(255,200,200,.5),-1px 0 0 rgba(255,200,200,.5)}
.board.dom-mal.own-b .pc.b{color:#FF3B4E;text-shadow:0 0 8px rgba(255,30,50,.9),0 1px 0 #120203}
.board.dom-mal .co{color:#FF9AA4}
.board.dom-mal .sq.tgt::after{background:rgba(255,160,170,.6)}
.board.dom-mal .sq.tgt.cap::after{background:transparent;border-color:rgba(255,160,170,.7)}
.board.dom-mal::after{opacity:1;background:linear-gradient(32deg,transparent 49.6%,rgba(255,225,225,.6) 50%,transparent 50.4%) 8% 18%/46% 30% no-repeat,linear-gradient(-28deg,transparent 49.6%,rgba(255,225,225,.55) 50%,transparent 50.4%) 85% 62%/52% 28% no-repeat,linear-gradient(60deg,transparent 49.6%,rgba(255,225,225,.5) 50%,transparent 50.4%) 28% 88%/30% 30% no-repeat,linear-gradient(-55deg,transparent 49.6%,rgba(255,225,225,.55) 50%,transparent 50.4%) 78% 8%/28% 34% no-repeat,radial-gradient(ellipse at 50% 125%,rgba(170,0,20,.6),transparent 62%);animation:slashes 2.6s steps(1) infinite}
@keyframes slashes{0%{opacity:.9}20%{opacity:.3}35%{opacity:1}60%{opacity:.45}80%{opacity:.95}}
.sq.aura{background-image:repeating-linear-gradient(-45deg,rgba(255,40,60,.55) 0 2px,transparent 2px 8px);animation:auraP 1.1s ease-in-out infinite alternate}
@keyframes auraP{from{filter:brightness(1)}to{filter:brightness(1.7)}}
.board.cleave-in::before{content:"";position:absolute;left:-25%;top:50%;width:150%;height:5px;margin-top:-2px;z-index:4;pointer-events:none;background:#fff;box-shadow:0 0 18px 6px rgba(255,30,50,.95);animation:cleave .7s ease-out both}
@keyframes cleave{0%{opacity:1;transform:rotate(-45deg) scaleX(0)}45%{opacity:1;transform:rotate(-45deg) scaleX(1)}100%{opacity:0;transform:rotate(-45deg) scaleX(1)}}
.gh{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none;z-index:3;overflow:hidden}
.gh span{grid-area:1/1;font-family:var(--glyph);font-size:min(9.4vw,52px);line-height:1;color:var(--pc-w);text-shadow:0 1px 0 #221E3D,0 -1px 0 #221E3D,1px 0 0 #221E3D,-1px 0 0 #221E3D}
.gh span.b{color:#2A0A12;text-shadow:0 0 6px rgba(255,120,135,.95),0 1px 0 rgba(255,220,220,.6)}
.gh .h1{clip-path:polygon(0 0,100% 0,0 100%);animation:split1 .55s .22s ease-in both}
.gh .h2{clip-path:polygon(100% 0,100% 100%,0 100%);animation:split2 .55s .22s ease-in both}
@keyframes split1{to{opacity:0;transform:translate(-16%,-16%) rotate(-8deg)}}
@keyframes split2{to{opacity:0;transform:translate(16%,16%) rotate(7deg)}}
.gh i{position:absolute;left:-15%;top:50%;width:130%;height:3px;margin-top:-1px;background:#fff;box-shadow:0 0 10px 3px rgba(255,30,50,.95);animation:cleave .5s ease-out both}
.sq.slashed{background-image:radial-gradient(circle,rgba(255,30,50,.65),transparent 72%)}
.board.scan-in::before{content:"";position:absolute;left:0;right:0;top:-8px;height:6px;z-index:4;pointer-events:none;background:#FF5C93;box-shadow:0 0 18px 6px rgba(255,60,120,.9);animation:sweep .9s ease-in-out both}
@keyframes sweep{from{top:-8px}to{top:100%}}
.sq.vanish .pc{animation:vanish .45s ease-in both}
@keyframes vanish{to{opacity:0;transform:scale(.15) rotate(50deg)}}

.sq{position:relative;border:0;padding:0;margin:0;aspect-ratio:1/1;display:grid;place-items:center;cursor:pointer;font:inherit;color:inherit;background-color:var(--sq-l);-webkit-tap-highlight-color:transparent}
.sq.d{background-color:var(--sq-d)}
.sq:focus-visible{outline:3px solid var(--you);outline-offset:-3px;z-index:3}
.sq.last::before{content:"";position:absolute;inset:0;background:rgba(214,160,40,.32);pointer-events:none}
.sq.sel{box-shadow:inset 0 0 0 3px var(--you)}
.sq.tgt::after{content:"";position:absolute;width:28%;height:28%;border-radius:50%;background:rgba(34,30,61,.34);pointer-events:none}
.sq.tgt.cap::after{width:86%;height:86%;background:transparent;border:4px solid rgba(34,30,61,.38)}
.sq.ptgt{outline:2px dashed var(--you);outline-offset:-5px}
.sq.frz{background-image:linear-gradient(rgba(127,184,224,.55),rgba(127,184,224,.55))}
.sq.lock{background-image:repeating-linear-gradient(0deg,rgba(190,210,255,.38) 0 1px,transparent 1px 3px)}
.sq.lock .pc{filter:grayscale(1) brightness(1.45);animation:jitter .16s steps(2) infinite}
@keyframes jitter{50%{transform:translate(.7px,-.5px)}}
.sq.chk{background-image:radial-gradient(circle,rgba(214,40,70,.85) 0%,rgba(214,40,70,.35) 45%,transparent 72%)}
.sq.pw{animation:pulse .9s ease-out}
@keyframes pulse{0%{box-shadow:inset 0 0 0 0 rgba(255,255,255,.9)}40%{box-shadow:inset 0 0 0 30px rgba(255,255,255,.55)}100%{box-shadow:inset 0 0 0 0 rgba(255,255,255,0)}}

.pc{position:relative;z-index:1;font-family:var(--glyph);font-size:min(9.4vw,52px);line-height:1;pointer-events:none;user-select:none}
.pc.w{color:var(--pc-w);text-shadow:0 1px 0 #221E3D,0 -1px 0 #221E3D,1px 0 0 #221E3D,-1px 0 0 #221E3D,0 2px 3px rgba(0,0,0,.25)}
.pc.b{color:var(--pc-b);text-shadow:0 1px 0 rgba(255,253,246,.55),0 -1px 0 rgba(255,253,246,.55),1px 0 0 rgba(255,253,246,.55),-1px 0 0 rgba(255,253,246,.55)}
.pc.dp{color:#EEF3FF;text-shadow:0 0 6px #fff,0 0 14px rgba(120,160,255,.95),0 1px 0 #080A1E}
.pc.dp.b{color:#1B2050;text-shadow:0 0 6px #9FB4FF,0 0 14px rgba(120,160,255,.95)}
.badge{position:absolute;top:2px;right:3px;z-index:2;font-size:.62rem;font-weight:700;color:#14304A;pointer-events:none}
.co{position:absolute;font-size:.58rem;font-weight:700;opacity:.55;pointer-events:none;color:#221E3D}
.co.f{bottom:1px;right:3px}
.co.r{top:1px;left:3px}

.banner{position:absolute;inset:0;display:none;align-items:center;justify-content:center;z-index:10;background:rgba(18,15,36,.58);overflow:hidden;cursor:pointer}
.banner.show{display:flex}
.band{width:120%;transform:skewY(-6deg);padding:20px 12%;text-align:center;color:#fff;animation:slash .55s cubic-bezier(.2,.9,.2,1) both}
.band>div{transform:skewY(6deg)}
.banner.you .band{background:var(--you);color:#1E1A36}
.banner.foe .band{background:var(--foe)}
.band .k{font-size:.85rem;font-weight:500;opacity:.85}
.band .n{font-family:var(--serif);font-weight:800;font-size:clamp(1.45rem,6.6vw,2.5rem);line-height:1.18;margin-top:2px}
.band .l{font-family:var(--serif);font-size:1rem;line-height:1.45;margin-top:8px}
.band .l:empty{display:none}
@keyframes slash{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}

.status{min-height:1.5em;margin:4px 0 0;text-align:center;font-weight:500;line-height:1.45}

.powers{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.pbtn{position:relative;overflow:hidden;border:1.5px solid var(--edge);background:var(--panel);color:var(--ink);border-radius:10px;padding:8px 3px 7px;display:flex;flex-direction:column;align-items:center;gap:1px;font:inherit;cursor:pointer;min-height:68px}
.pbtn .ic{font-family:var(--glyph);font-size:1.35rem;line-height:1.2}
.pbtn .nm{font-size:.76rem;font-weight:700}
.pbtn .st{font-size:.64rem;color:var(--muted)}
.pbtn.domain{border-color:var(--you)}
.pbtn.blue .ic{color:#3B6BFF}
.pbtn.red .ic{color:#E0142B}
.pbtn.purple .ic{color:#8E3BFF}
.pbtn.blue.on{box-shadow:0 0 0 2px #3B6BFF}
.pbtn.red.on{box-shadow:0 0 0 2px #E0142B}
.pbtn.purple.on{box-shadow:0 0 0 2px #8E3BFF}
.pbtn.dismantle .ic,.pbtn.cleave .ic{color:#C4102B}
.pbtn.dismantle.on,.pbtn.cleave.on{box-shadow:0 0 0 2px #C4102B}
.kitlab{font-size:.75rem;font-weight:700;color:var(--foe);margin-left:6px}
.row{gap:10px}
@media (hover:hover){.kit:hover{border-color:rgba(255,255,255,.55)}}
.pbtn.on{box-shadow:0 0 0 2px var(--you);background:var(--bg)}
.pbtn:disabled{opacity:.42;cursor:default}
.pbtn:focus-visible,.ghost:focus-visible,summary:focus-visible,input:focus-visible{outline:3px solid var(--you);outline-offset:2px}

.row{display:flex;justify-content:center;margin-top:6px}
.ghost{font:inherit;font-weight:700;color:var(--ink);background:transparent;border:1.5px solid var(--edge);border-radius:999px;padding:9px 20px;cursor:pointer}

.rules{border-top:1px solid var(--edge);padding-top:10px;margin-top:4px}
.rules summary{cursor:pointer;font-weight:700;padding:4px 0}
.rules ul{margin:8px 0 12px;padding-left:1.2em;line-height:1.55;font-size:.93rem}
.rules li{margin-bottom:4px}
.rules label{display:flex;flex-direction:column;gap:6px;font-size:.9rem;font-weight:500}
.rules input{font:inherit;color:var(--ink);background:var(--panel);border:1.5px solid var(--edge);border-radius:8px;padding:9px 10px}

.cut{position:absolute;inset:0;z-index:11;display:none;flex-direction:column;align-items:center;justify-content:center;gap:16px;overflow:hidden;cursor:pointer}
.cut.show{display:flex}
.cveil{position:absolute;inset:0;background:radial-gradient(ellipse at 50% 55%,rgba(70,50,8,.6),rgba(14,11,28,.93) 70%);animation:veil .35s ease-out both}
@keyframes veil{from{opacity:0}to{opacity:1}}
.cband{position:relative;width:120%;padding:18px 12% 22px;background:var(--you);color:#1E1A36;text-align:center;transform:skewY(-6deg);animation:slash .5s .15s cubic-bezier(.2,.9,.2,1) both}
.cband>div{transform:skewY(6deg)}
.ck{font-size:.95rem;font-weight:700;letter-spacing:.04em;animation:kin .5s .45s ease-out both}
@keyframes kin{from{opacity:0;letter-spacing:.42em}to{opacity:1;letter-spacing:.04em}}
.cn{font-family:var(--serif);font-weight:800;font-size:clamp(2rem,10vw,3.6rem);line-height:1.08;margin-top:4px;animation:slam .45s .85s cubic-bezier(.2,1.5,.4,1) both}
@keyframes slam{0%{opacity:0;transform:skewY(6deg) scale(1.7)}100%{opacity:1;transform:skewY(6deg) scale(1)}}
.crow{position:relative;display:flex;gap:4px;font-family:var(--glyph);font-size:clamp(1.4rem,6.5vw,2.3rem);color:var(--you);text-shadow:0 0 12px rgba(226,179,66,.85)}
.crow span{animation:march .35s calc(1.25s + var(--i) * 70ms) cubic-bezier(.2,1.4,.4,1) both}
@keyframes march{from{opacity:0;transform:translateY(-16px)}to{opacity:1;transform:none}}
.cut.out .cband{animation:slashout .35s ease-in both}
.cut.out .cveil,.cut.out .crow{animation:fadeout .35s ease-in both}
@keyframes slashout{from{clip-path:inset(0 0 0 0)}to{clip-path:inset(0 0 0 100%)}}
@keyframes fadeout{to{opacity:0}}
.sq.drop .pc{animation:warpin .6s var(--d,0ms) cubic-bezier(.2,1.15,.4,1) both}
@keyframes warpin{0%{opacity:0;transform:translate(var(--dx,0px),var(--dy,0px)) scale(.1)}35%{opacity:1}100%{opacity:1;transform:none}}
@keyframes drop{0%{opacity:0;transform:translateY(-75%) scale(1.7)}55%{opacity:1}100%{opacity:1;transform:none}}
.sq.drop::after{content:"";position:absolute;inset:10%;border-radius:50%;border:2px solid #CFE0FF;pointer-events:none;animation:ripple .6s calc(var(--d,0ms) + 280ms) ease-out both}
@keyframes ripple{0%{opacity:0;transform:scale(.35)}15%{opacity:.95}100%{opacity:0;transform:scale(1.25)}}
.sq.lockin{animation:clamp .55s ease-out}
@keyframes clamp{0%{box-shadow:inset 0 0 0 0 rgba(200,220,255,0)}45%{box-shadow:inset 0 0 0 5px rgba(220,232,255,.95)}100%{box-shadow:inset 0 0 0 0 rgba(200,220,255,0)}}

/* Cinematic helpers */
#board,#tfx{transform-origin:var(--ox,50%) var(--oy,50%);transition:transform .4s cubic-bezier(.2,.8,.2,1)}
.wrap.cine #board,.wrap.cine #tfx{transform:scale(var(--zs,1.08))}
.vig{inset:0;background:radial-gradient(circle at var(--vx) var(--vy),transparent 0,transparent calc(var(--sq) * 1.1),rgba(4,2,10,.6) calc(var(--sq) * 3.6));animation:qin .3s ease-out both;transition:opacity .45s}
.vig.off{opacity:0}
.desat{inset:0;-webkit-backdrop-filter:grayscale(.85) brightness(.75);backdrop-filter:grayscale(.85) brightness(.75);animation:qin .25s ease-out both;transition:opacity .3s}
.desat.off{opacity:0}
.impf{inset:0;opacity:0;animation:impf .2s steps(1) both}
@keyframes impf{0%{opacity:.85}40%{opacity:.25}60%{opacity:.6}100%{opacity:0}}
.pt{width:var(--s);height:var(--s);margin:calc(var(--s) / -2) 0 0 calc(var(--s) / -2);border-radius:50%;background:var(--c);box-shadow:0 0 6px var(--c);animation:ptx .75s var(--d) cubic-bezier(.1,.8,.3,1) both}
@keyframes ptx{from{opacity:1;transform:translate(0,0) scale(1)}to{opacity:0;transform:translate(var(--tx),var(--ty)) scale(.25)}}
.shk{width:calc(var(--sq) * .6);height:calc(var(--sq) * .6);border-radius:50%;border:3px solid var(--c);box-shadow:0 0 14px var(--c),inset 0 0 10px var(--c);animation:shk .65s var(--d,0ms) ease-out both}
@keyframes shk{from{opacity:1;transform:translate(-50%,-50%) scale(.2)}to{opacity:0;transform:translate(-50%,-50%) scale(var(--k))}}
.ins{height:2px;width:var(--l);margin-top:-1px;transform-origin:0 50%;background:linear-gradient(90deg,var(--c),transparent);opacity:0;animation:ins .5s var(--d) ease-in both}
@keyframes ins{0%{opacity:0;transform:rotate(var(--a)) translateX(var(--r))}30%{opacity:1}100%{opacity:0;transform:rotate(var(--a)) translateX(0) scaleX(.2)}}
.bolt{height:2px;width:calc(var(--sq) * .9);margin-top:-1px;transform-origin:0 50%;background:linear-gradient(90deg,#fff,var(--c));box-shadow:0 0 6px var(--c);clip-path:polygon(0 0,30% 100%,45% 0,70% 100%,100% 40%,70% 0,45% 100%,30% 0);transform:rotate(var(--a));opacity:0;animation:bolt .1s var(--d) steps(1) 4 both}
@keyframes bolt{0%{opacity:1}50%{opacity:0}}
.scar{height:3px;transform-origin:0 50%;background:linear-gradient(90deg,var(--c),transparent);opacity:.55;transform:translateY(-50%) rotate(var(--ang));animation:fadeout 1.4s .3s ease-in forwards}
.ret{width:calc(var(--sq) * 1.3);height:calc(var(--sq) * 1.3);transform:translate(-50%,-50%);border:2px solid #FF3B4E;border-radius:4px;-webkit-mask:linear-gradient(#000,#000) 0 0/30% 30% no-repeat,linear-gradient(#000,#000) 100% 0/30% 30% no-repeat,linear-gradient(#000,#000) 0 100%/30% 30% no-repeat,linear-gradient(#000,#000) 100% 100%/30% 30% no-repeat;mask:linear-gradient(#000,#000) 0 0/30% 30% no-repeat,linear-gradient(#000,#000) 100% 0/30% 30% no-repeat,linear-gradient(#000,#000) 0 100%/30% 30% no-repeat,linear-gradient(#000,#000) 100% 100%/30% 30% no-repeat;box-shadow:0 0 10px rgba(255,40,60,.8);animation:ret .35s cubic-bezier(.2,1.4,.4,1) both}
@keyframes ret{from{opacity:0;transform:translate(-50%,-50%) scale(2.2) rotate(45deg)}to{opacity:1;transform:translate(-50%,-50%) scale(1) rotate(0)}}
.orbit{width:0;height:0;animation:orbspin .9s cubic-bezier(.5,0,.9,.5) both}
@keyframes orbspin{from{transform:rotate(0)}to{transform:rotate(720deg)}}
.orbit>.orb{position:absolute;left:0;top:0;animation:orbin .9s cubic-bezier(.5,0,.9,.5) both}
.orbit>.orb.o2{animation-name:orbin2}
@keyframes orbin{from{transform:translate(-50%,-50%) translateX(calc(var(--sq) * -1.5))}to{transform:translate(-50%,-50%) translateX(0)}}
@keyframes orbin2{from{transform:translate(-50%,-50%) translateX(calc(var(--sq) * 1.5))}to{transform:translate(-50%,-50%) translateX(0)}}
.helix{width:6px;height:6px;margin:-3px 0 0 -3px;border-radius:50%;background:#EFFFF5;box-shadow:0 0 8px #5CF2A6;animation:helix 1.1s var(--d) linear both}
@keyframes helix{0%{opacity:0;transform:rotate(var(--a)) translateX(calc(var(--sq) * .55)) translateY(calc(var(--sq) * .5))}20%{opacity:1}100%{opacity:0;transform:rotate(calc(var(--a) + 540deg)) translateX(calc(var(--sq) * .15)) translateY(calc(var(--sq) * -1.2))}}
.seal{width:calc(var(--sq) * 1.25);height:calc(var(--sq) * 1.25);transform:translate(-50%,-50%);border-radius:50%;border:2px dashed #B48CFF;box-shadow:0 0 12px rgba(123,60,255,.9),inset 0 0 8px rgba(123,60,255,.8);animation:seal .5s cubic-bezier(.2,1.5,.4,1) both,sealspin 1.6s linear infinite}
@keyframes seal{from{opacity:0;transform:translate(-50%,-50%) scale(2)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}
@keyframes sealspin{to{rotate:360deg}}
.tg.shiver{animation:shiver .06s steps(2) 10}
@keyframes shiver{50%{transform:translate(calc(-50% + 2px),calc(-50% - 1px))}}
.tg.after{opacity:.45;filter:drop-shadow(0 0 6px rgba(60,255,150,.9));transition:left .42s cubic-bezier(.5,0,.2,1),top .42s cubic-bezier(.5,0,.2,1),opacity .5s}
.inkring{width:calc(var(--sq) * 4);height:calc(var(--sq) * 4);transform:translate(-50%,-50%)}
.inkring circle{fill:none;stroke:#111;stroke-width:9;stroke-linecap:round;stroke-dasharray:420;stroke-dashoffset:420;filter:drop-shadow(0 0 2px #fff);animation:inkdraw .45s ease-out forwards}
@keyframes inkdraw{to{stroke-dashoffset:40}}
.uzu.collapse{animation:collapse .3s ease-in forwards}
@keyframes collapse{to{transform:translate(-50%,-50%) scale(.05);opacity:.9}}
.gswirl{width:calc(var(--sq) * 1.4);height:calc(var(--sq) * 1.4);transform:translate(-50%,-50%);border-radius:50%;background:conic-gradient(from 0deg,rgba(10,5,20,.95),rgba(60,255,150,.6),rgba(10,5,20,.95),rgba(110,60,255,.7),rgba(10,5,20,.95));-webkit-mask:radial-gradient(circle,#000 40%,transparent 70%);mask:radial-gradient(circle,#000 40%,transparent 70%);animation:charge .3s ease-out both,vspin2 .5s linear infinite}
@keyframes vspin2{to{rotate:-360deg}}

/* Technique effects */
.tfx{position:absolute;inset:0;z-index:7;pointer-events:none;overflow:hidden;border-radius:6px}
.tfx>*{position:absolute}
.tcap{left:50%;top:10%;transform:translate(-50%,-50%);font-family:var(--serif);font-weight:800;font-size:clamp(1.4rem,6.5vw,2.2rem);white-space:nowrap;animation:capin 2.2s ease-out both}
.tcap.blue{color:#E3ECFF;text-shadow:0 0 12px #3B6BFF,0 0 28px #3B6BFF}
.tcap.red{color:#FFE3E3;text-shadow:0 0 12px #E0142B,0 0 28px #E0142B}
.tcap.purple{color:#F3E6FF;text-shadow:0 0 12px #8E3BFF,0 0 30px #B36BFF}
.tcap.slash{color:#FFEDEF;text-shadow:0 0 12px #C4102B,2px 2px 0 #3A0208}
@keyframes capin{0%{opacity:0;letter-spacing:.35em}15%{opacity:1;letter-spacing:.02em}78%{opacity:1}100%{opacity:0}}
.orb{width:calc(var(--sq) * .55);height:calc(var(--sq) * .55);border-radius:50%;transform:translate(-50%,-50%);animation:charge .38s ease-out both;transition:opacity .3s}
.orb.big{width:calc(var(--sq) * .8);height:calc(var(--sq) * .8)}
.orb.blue{background:radial-gradient(circle,#fff 0%,#8FB6FF 28%,#2346FF 58%,rgba(35,70,255,0) 72%);box-shadow:0 0 18px 6px rgba(60,110,255,.75)}
.orb.red{background:radial-gradient(circle,#fff 0%,#FF9C9C 28%,#E0142B 58%,rgba(224,20,43,0) 72%);box-shadow:0 0 18px 6px rgba(224,20,43,.75)}
.orb.purple{width:calc(var(--sq) * 1.1);height:calc(var(--sq) * 1.1);background:radial-gradient(circle,#fff 0%,#E2B8FF 25%,#8E3BFF 55%,rgba(142,59,255,0) 72%);box-shadow:0 0 30px 12px rgba(150,70,255,.8);animation:charge .35s cubic-bezier(.2,1.5,.4,1) both}
.orb.merge{transition:left .5s ease-in,top .5s ease-in}
.orb.fade{opacity:0}
@keyframes charge{from{transform:translate(-50%,-50%) scale(0)}to{transform:translate(-50%,-50%) scale(1)}}
.beam{height:3px;transform-origin:0 50%;transform:translateY(-50%) rotate(var(--ang)) scaleX(0);animation:beamgo var(--dur) ease-out forwards}
@keyframes beamgo{to{transform:translateY(-50%) rotate(var(--ang)) scaleX(1)}}
.beam.blue{background:linear-gradient(90deg,#fff,#4D7DFF);box-shadow:0 0 10px 2px rgba(77,125,255,.9)}
.beam.purple{height:calc(var(--sq) * .62);border-radius:999px;background:linear-gradient(180deg,rgba(142,59,255,0),#B36BFF 22%,#fff 50%,#B36BFF 78%,rgba(142,59,255,0));box-shadow:0 0 30px 12px rgba(150,70,255,.75);animation:beamgo var(--dur) ease-out forwards,beamfade .5s .75s ease-in forwards}
@keyframes beamfade{to{opacity:0}}
.vortex{width:calc(var(--sq) * 1.6);height:calc(var(--sq) * 1.6);transform:translate(-50%,-50%);animation:charge .3s ease-out both;transition:opacity .4s}
.vortex.fade{opacity:0}
.vin{position:absolute;inset:0;border-radius:50%;background:conic-gradient(from 0deg,transparent 0deg,rgba(90,140,255,.95) 60deg,transparent 120deg,rgba(210,225,255,.85) 180deg,transparent 240deg,rgba(90,140,255,.95) 300deg,transparent 360deg);-webkit-mask:radial-gradient(circle,transparent 16%,#000 22%,#000 58%,transparent 70%);mask:radial-gradient(circle,transparent 16%,#000 22%,#000 58%,transparent 70%);animation:vspin .45s linear infinite}
@keyframes vspin{to{transform:rotate(-360deg)}}
.mote{width:5px;height:5px;margin:-2.5px 0 0 -2.5px;border-radius:50%;background:#DCE8FF;box-shadow:0 0 6px #6F9BFF;animation:mote .6s calc(var(--i) * 25ms) ease-in both}
@keyframes mote{0%{opacity:0;transform:rotate(var(--a)) translateX(calc(var(--sq) * 1.2))}20%{opacity:1}100%{opacity:0;transform:rotate(calc(var(--a) + 300deg)) translateX(0)}}
.sphere{width:calc(var(--sq) * .7);height:calc(var(--sq) * .7);border-radius:50%;transform:translate(-50%,-50%);background:radial-gradient(circle at 40% 35%,#EEF3FF 0%,#5C88FF 35%,#1B2BB8 68%,rgba(27,43,184,0) 74%);box-shadow:0 0 24px 8px rgba(70,110,255,.85);animation:charge .3s ease-out both}
.sphere.go{transition:left .6s cubic-bezier(.6,0,.3,1),top .6s cubic-bezier(.6,0,.3,1)}
.sphere.pop{animation:pop .35s ease-in forwards}
@keyframes pop{to{opacity:0;transform:translate(-50%,-50%) scale(0)}}
.ringfx{width:calc(var(--sq) * .4);height:calc(var(--sq) * .4);border-radius:50%;border:2px solid #CFE0FF;animation:ringx .55s ease-out forwards}
@keyframes ringx{from{opacity:1;transform:translate(-50%,-50%) scale(.3)}to{opacity:0;transform:translate(-50%,-50%) scale(3)}}
.shock{width:calc(var(--sq) * .6);height:calc(var(--sq) * .6);border-radius:50%;border:4px solid #FF4D4D;background:radial-gradient(circle,rgba(255,80,80,.45),transparent 70%);animation:shockx .55s ease-out forwards}
@keyframes shockx{from{opacity:1;transform:translate(-50%,-50%) scale(.4)}to{opacity:0;transform:translate(-50%,-50%) scale(5)}}
.tg{font-family:var(--glyph);font-size:min(9.4vw,52px);line-height:1;transform:translate(-50%,-50%)}
.tg.w{color:var(--pc-w);text-shadow:0 1px 0 #221E3D,0 -1px 0 #221E3D,1px 0 0 #221E3D,-1px 0 0 #221E3D}
.tg.b{color:var(--pc-b);text-shadow:0 1px 0 rgba(255,253,246,.6),0 -1px 0 rgba(255,253,246,.6),1px 0 0 rgba(255,253,246,.6),-1px 0 0 rgba(255,253,246,.6)}
.tg.suck{animation:suck .62s ease-in forwards}
@keyframes suck{to{opacity:0;transform:translate(-50%,-50%) scale(.05) rotate(540deg)}}
.tg.emerge{animation:emerge .42s cubic-bezier(.2,1.4,.4,1) both}
@keyframes emerge{from{opacity:0;transform:translate(-50%,-50%) scale(0) rotate(-180deg)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}
.tg.fly{transition:left .5s cubic-bezier(.15,.8,.3,1),top .5s cubic-bezier(.15,.8,.3,1)}
.tg.fly.doom{animation:doom .55s ease-in forwards}
@keyframes doom{to{opacity:0;transform:translate(-50%,-50%) scale(.4) rotate(220deg)}}
.tg.erase{animation:erase .5s ease-in forwards}
@keyframes erase{to{opacity:0;filter:blur(6px);transform:translate(-50%,-50%) scale(1.7)}}
.pflash{inset:0;background:radial-gradient(circle,rgba(230,200,255,.75),rgba(130,50,220,.3) 60%,transparent);animation:fadeout .7s ease-out forwards}
.cl{width:calc(var(--sq) * 1.5);height:3px;background:#fff;box-shadow:0 0 10px 3px rgba(255,30,50,.95);opacity:0;animation:clv .28s var(--d) ease-out both}
.cl.long{width:calc(var(--sq) * 12)}
@keyframes clv{0%{opacity:1;transform:translate(-50%,-50%) rotate(var(--a)) scaleX(0)}55%{opacity:1;transform:translate(-50%,-50%) rotate(var(--a)) scaleX(1)}100%{opacity:0;transform:translate(-50%,-50%) rotate(var(--a)) scaleX(1)}}
.wrap.jolt{animation:jolt .35s ease-out}
@keyframes jolt{20%{transform:translate(-4px,2px)}40%{transform:translate(4px,-2px)}60%{transform:translate(-3px,1px)}80%{transform:translate(2px,-1px)}}
.sq.hid .pc{opacity:0}

/* Copy kit: board, bound pieces, effects */
.board.dom-love{box-shadow:0 0 0 3px #fff,0 0 0 5px #111,0 0 30px 8px rgba(255,255,255,.55)}
.board.dom-love .sq{background-color:#EEEEEE}
.board.dom-love .sq.d{background-color:#4A4A4A}
.board.dom-love .pc.b{text-shadow:0 1px 0 #fff,0 -1px 0 #fff,1px 0 0 #fff,-1px 0 0 #fff}
.board.dom-love .co{color:#111}
.board.dom-love::after{opacity:1;background:radial-gradient(circle,rgba(0,0,0,.22) 1px,transparent 1.5px) 0 0/7px 7px,repeating-conic-gradient(from 0deg at 50% 50%,rgba(0,0,0,.07) 0 2deg,transparent 2deg 9deg);animation:none}
.sq.mq::before{content:"";position:absolute;inset:6%;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 2px #111,0 0 16px 4px rgba(255,255,255,.9);pointer-events:none;animation:mqp 1.2s ease-in-out infinite alternate}
@keyframes mqp{from{transform:scale(.9);opacity:.7}to{transform:scale(1.04);opacity:1}}
.sq.mq .pc{text-shadow:0 0 2px #fff,0 0 10px rgba(150,110,255,.95),0 0 24px rgba(20,10,40,.95);filter:drop-shadow(0 0 6px rgba(10,5,25,.95))}
.sq.frz{background-image:repeating-radial-gradient(circle,transparent 0 5px,rgba(140,80,255,.5) 5px 7px)}
.sq.frz .pc{filter:grayscale(.8) brightness(.9)}
.badge{background:#5B2BB5;color:#fff;border-radius:6px;padding:0 3px;font-size:.6rem;line-height:1.3}
.badge:empty{display:none}
.pbtn.copy .ic{color:#333}.pbtn.speech .ic{color:#6B32D6}.pbtn.love .ic{color:#E0477E}
.pbtn.copy.on{box-shadow:0 0 0 2px #333}.pbtn.speech.on{box-shadow:0 0 0 2px #6B32D6}.pbtn.love.on{box-shadow:0 0 0 2px #E0477E}
.tcap.ink{color:#fff;text-shadow:2px 2px 0 #000,-2px -2px 0 #000,2px -2px 0 #000,-2px 2px 0 #000;font-family:var(--sans);font-weight:700;letter-spacing:.02em}
.tcap.speech{color:#F3EAFF;text-shadow:0 0 12px #7B3CFF,2px 2px 0 #1A0B33}
.tcap.love{color:#fff;text-shadow:0 0 14px #FF7EB0,0 0 30px #FF7EB0,2px 2px 0 #000}
.inkb{width:calc(var(--sq) * 1.4);height:calc(var(--sq) * 1.4);border-radius:50%;border:5px solid #111;box-shadow:0 0 0 3px #fff;animation:ringx .6s ease-out forwards}
.spk{left:50%;top:50%;transform:translate(-50%,-50%) scale(2);font-family:var(--serif);font-weight:800;font-size:clamp(2rem,10vw,3.6rem);white-space:nowrap;color:#F3EAFF;text-shadow:0 0 16px #7B3CFF,3px 3px 0 #1A0B33,-1px -1px 0 #1A0B33;animation:stamp 1.1s cubic-bezier(.2,1.4,.4,1) both}
@keyframes stamp{0%{opacity:0;transform:translate(-50%,-50%) scale(2.4)}22%{opacity:1;transform:translate(-50%,-50%) scale(1)}75%{opacity:1}100%{opacity:0;transform:translate(-50%,-50%) scale(1.06)}}
.wave{width:calc(var(--sq) * .8);height:calc(var(--sq) * .8);border-radius:50%;border:3px solid #9B6BFF;box-shadow:0 0 10px rgba(123,60,255,.8);opacity:0;animation:wavein .7s var(--d) ease-in both}
@keyframes wavein{0%{opacity:0;transform:translate(-50%,-50%) scale(5)}30%{opacity:1}100%{opacity:0;transform:translate(-50%,-50%) scale(.6)}}
.lshade{font-family:var(--glyph);font-size:min(70vw,380px);line-height:1;color:rgba(10,10,10,.82);text-shadow:0 0 2px #fff,0 0 30px rgba(255,140,190,.7);transform:translate(-50%,-62%);animation:lshade 1.6s ease-out both}
@keyframes lshade{0%{opacity:0;transform:translate(-50%,-50%) scale(.6)}30%{opacity:1;transform:translate(-50%,-62%) scale(1)}80%{opacity:1}100%{opacity:0;transform:translate(-50%,-66%) scale(1.04)}}
.inv{inset:0;-webkit-backdrop-filter:invert(1);backdrop-filter:invert(1);opacity:0;animation:invf .5s .5s steps(1) both}
@keyframes invf{0%{opacity:1}30%{opacity:0}45%{opacity:1}100%{opacity:0}}
.beam.love{height:calc(var(--sq) * .5);border-radius:999px;background:linear-gradient(180deg,#000 0,#FF7EB0 18%,#fff 50%,#FF7EB0 82%,#000 100%);box-shadow:0 0 26px 10px rgba(255,126,176,.7);animation:beamgo var(--dur) ease-out forwards,beamfade .5s .8s ease-in forwards}
/* Ten Shadows */
.pc.M{font-size:min(9vw,50px)}
/* Inline piece icons (Mahoraga, Demon Dogs): coloured per side through --s stroke, --f fill, --i marking ink */
.pc .icon,.tg .icon{display:block;width:1.1em;height:1.1em;overflow:visible;margin:-.05em auto}
.icon *{stroke:var(--s);fill:var(--f);stroke-width:2.8;stroke-linejoin:round;stroke-linecap:round}.icon .sp{fill:none}.icon .ink{fill:var(--i);stroke:none}
.pc.w .icon,.tg.w .icon{--s:#221E3D;--f:var(--pc-w);--i:#221E3D;filter:drop-shadow(0 2px 2px rgba(0,0,0,.3))}
.pc.b .icon,.tg.b .icon{--s:#FFFDF6;--f:var(--pc-b);--i:#FFFDF6;filter:drop-shadow(0 1px 1px rgba(0,0,0,.35))}
.sq.mah .pc.w .icon{filter:drop-shadow(0 0 5px rgba(255,220,140,.95)) drop-shadow(0 0 12px rgba(160,120,255,.7))}
.sq.mah .pc.b .icon{filter:drop-shadow(0 0 5px rgba(255,231,176,.95)) drop-shadow(0 0 12px rgba(160,120,255,.7))}
.sq.mah .pc.w{color:#F7F3E8;text-shadow:0 0 2px #2A2140,0 0 10px rgba(255,220,140,.9),0 0 22px rgba(160,120,255,.6)}
.sq.mah .pc.b{color:#120E1C;text-shadow:0 0 2px #FFE7B0,0 0 10px rgba(255,220,140,.9),0 0 22px rgba(160,120,255,.6)}
.sq.shd .pc{filter:drop-shadow(0 0 5px rgba(150,110,255,.95)) drop-shadow(0 0 2px #05030A)}
.sq.shd{background-image:radial-gradient(ellipse at 50% 85%,rgba(10,5,20,.55),transparent 60%)}
.pbtn.dogs .ic,.pbtn.step .ic,.pbtn.frog .ic{color:#6B4FD1}.pbtn.mahoraga .ic{color:#C99A2E}
.pbtn.dogs.on,.pbtn.step.on,.pbtn.frog.on{box-shadow:0 0 0 2px #6B4FD1}
.tcap.shadow{color:#EFE9FF;text-shadow:0 0 12px #6B4FD1,0 0 26px #2A1A5A,2px 2px 0 #05030A}
.tcap.mah{color:#FFF4D6;text-shadow:0 0 12px #E2B342,0 0 28px #8A6A1A,2px 2px 0 #1A1204}
.spool{width:calc(var(--sq) * 1.1);height:calc(var(--sq) * .42);transform:translate(-50%,-10%);border-radius:50%;background:radial-gradient(ellipse,#000 45%,rgba(30,15,60,.95) 65%,rgba(150,110,255,.7) 78%,transparent 86%);box-shadow:0 0 14px rgba(120,80,255,.6);animation:spoolin .35s ease-out both;transition:opacity .35s}
.spool.fade{opacity:0}
.tg.rise{animation:srise .6s cubic-bezier(.2,.9,.3,1) both;filter:drop-shadow(0 0 8px rgba(150,110,255,.95))}
@keyframes srise{from{clip-path:inset(100% 0 0 0);transform:translate(-50%,-20%)}to{clip-path:inset(0 0 0 0);transform:translate(-50%,-50%)}}
.tg.sink{animation:ssink .45s cubic-bezier(.6,0,.8,.4) forwards}
@keyframes ssink{from{clip-path:inset(0 0 0 0);transform:translate(-50%,-50%)}to{clip-path:inset(0 0 100% 0);transform:translate(-50%,-10%)}}
.sstreak{height:6px;transform-origin:0 50%;border-radius:3px;background:linear-gradient(90deg,rgba(10,5,20,0),rgba(20,10,40,.95),rgba(150,110,255,.8));box-shadow:0 0 10px rgba(120,80,255,.7);transform:translateY(-50%) rotate(var(--ang)) scaleX(0);animation:beamgo .35s ease-in forwards,beamfade .3s .4s ease-in forwards}
.sevil{width:4px;height:4px;margin:-2px 0 0 -2px;border-radius:50%;background:#E8DEFF;box-shadow:0 0 6px #B48CFF}
.mwheel{font-family:var(--glyph);font-size:calc(var(--sq) * .9);line-height:1;color:#FFE7B0;text-shadow:0 0 10px rgba(255,210,120,.95),0 0 22px rgba(200,150,40,.7);transform:translate(-50%,-50%);animation:mwheel 1.1s cubic-bezier(.2,1.3,.4,1) both}
@keyframes mwheel{0%{opacity:0;transform:translate(-50%,-50%) scale(.4) rotate(0)}25%{opacity:1;transform:translate(-50%,-50%) scale(1.1) rotate(0)}55%{transform:translate(-50%,-50%) scale(1.1) rotate(45deg)}80%{opacity:1}100%{opacity:0;transform:translate(-50%,-80%) scale(1) rotate(45deg)}}
.acap{font-family:var(--sans);font-weight:700;font-size:.75rem;white-space:nowrap;color:#FFF4D6;text-shadow:0 0 6px #C99A2E,0 1px 2px #000;transform:translate(-50%,0);animation:capin 1.6s ease-out both}
.board.dom-shadow{box-shadow:0 0 0 3px #6B4FD1,0 0 32px 6px rgba(40,20,90,.9)}
.board.dom-shadow .sq{background-color:#2A2540}
.board.dom-shadow .sq.d{background-color:#120F1E}
.board.dom-shadow .pc.b{color:#0A0812;text-shadow:0 1px 0 #CFC7FF,0 -1px 0 #CFC7FF,1px 0 0 #CFC7FF,-1px 0 0 #CFC7FF}
.board.dom-shadow .co{color:#B9A6FF}
.board.dom-shadow::after{opacity:1;background:radial-gradient(ellipse at 30% 80%,rgba(0,0,0,.55),transparent 45%),radial-gradient(ellipse at 75% 30%,rgba(0,0,0,.5),transparent 40%),repeating-radial-gradient(circle at 50% 120%,transparent 0 18px,rgba(120,90,255,.06) 18px 20px);animation:twinkle 3.6s ease-in-out infinite alternate}
.th-shadows{background:radial-gradient(ellipse at 40% 70%,rgba(0,0,0,.8),transparent 50%),repeating-radial-gradient(circle at 50% 120%,transparent 0 16px,rgba(150,110,255,.12) 16px 18px),linear-gradient(160deg,#05030A,#1E1638)}
/* Chimera Shadow Garden */
.cgin{position:absolute;inset:0;animation:kshake .6s 3.3s both}
.cgsky{position:absolute;inset:0;background:radial-gradient(ellipse at 50% 100%,#1A1430 0%,#07050C 60%,#000 100%);animation:veil .35s ease-out both}
.cgflood{position:absolute;left:0;right:0;bottom:0;height:100%;background:linear-gradient(180deg,rgba(5,3,10,.0),rgba(5,3,10,.92) 30%,#020105);clip-path:inset(100% 0 0 0);animation:cgfl 1.6s .5s cubic-bezier(.3,.7,.3,1) forwards}
@keyframes cgfl{to{clip-path:inset(20% 0 0 0)}}
.cgrip{position:absolute;left:50%;top:var(--y);width:var(--w);height:12px;margin-left:calc(var(--w) / -2);border-radius:50%;border:2px solid rgba(150,110,255,.55);opacity:0;animation:zrip 2s var(--d) ease-out infinite}
.cgeye{position:absolute;left:var(--x);top:var(--y);width:16px;height:5px;animation:keye .2s var(--d) cubic-bezier(.2,1.5,.4,1) both}
.cgeye::before,.cgeye::after{content:"";position:absolute;top:0;width:5px;height:5px;border-radius:50%;background:#F0E8FF;box-shadow:0 0 6px 2px rgba(180,140,255,.9)}
.cgeye::before{left:0}.cgeye::after{right:0}
.cgbeast{position:absolute;left:var(--x);top:var(--y);font-family:var(--glyph);font-size:min(16vw,84px);line-height:1;color:#05030A;text-shadow:0 0 2px #B9A6FF,0 0 16px rgba(120,80,255,.8);opacity:0;animation:cgleap 1.1s var(--d) cubic-bezier(.3,.6,.3,1) both}
@keyframes cgleap{0%{opacity:0;transform:translate(0,40px) scale(.7)}30%{opacity:1}60%{transform:translate(var(--dx),-50px) scale(1)}100%{opacity:0;transform:translate(calc(var(--dx) * 2),40px) scale(.8)}}
.cgtend{position:absolute;left:var(--x);bottom:20%;width:12px;height:var(--h);transform-origin:50% 100%;border-radius:6px 6px 0 0;background:linear-gradient(0deg,#020105,#120A24 70%,rgba(150,110,255,.6));box-shadow:0 0 10px rgba(120,80,255,.5);transform:rotate(var(--r)) scaleY(0);animation:cgt .7s var(--d) cubic-bezier(.2,.9,.3,1) forwards}
@keyframes cgt{to{transform:rotate(var(--r)) scaleY(1)}}
.cgflash{position:absolute;inset:0;background:radial-gradient(circle at 50% 60%,rgba(220,205,255,.7),rgba(80,40,200,.3) 55%,transparent);opacity:0;animation:gflash .7s 3.25s ease-out both}
.cgtitle{position:absolute;left:50%;top:8%;width:92%;transform:translateX(-50%);text-align:center;color:#EFE9FF;--kd:3.4s}
.cgtitle .ck{color:#B9A6FF}
.cgname{font-family:var(--serif);font-weight:800;font-size:clamp(1.7rem,8.4vw,3rem);line-height:1.08;text-shadow:0 0 18px rgba(150,110,255,.95),2px 2px 0 #000;animation:converge .9s 3.55s cubic-bezier(.2,.8,.2,1) both}
.fx.garden.out .cgin{animation:fadeout .55s ease-in forwards}

/* Infinity */
.sq.infz{background-image:radial-gradient(circle,rgba(150,185,255,.28),transparent 74%)}
.sq.inf{background-image:radial-gradient(circle,transparent 46%,rgba(190,215,255,.7) 60%,rgba(120,160,255,.2) 66%,transparent 72%)}
.sq.inf .pc{text-shadow:0 0 2px #fff,0 0 10px rgba(140,180,255,.95),0 0 22px rgba(100,140,255,.85)}
.pbtn.infinity .ic{color:#5C88FF}.pbtn.infinity.on{box-shadow:0 0 0 2px #5C88FF}
.ibub{width:calc(var(--sq) * 3);height:calc(var(--sq) * 3);border-radius:50%;transform:translate(-50%,-50%);background:radial-gradient(circle,transparent 32%,rgba(170,200,255,.12) 52%,rgba(255,255,255,.6) 64%,rgba(140,180,255,.25) 67%,transparent 70%);animation:charge .55s cubic-bezier(.2,1.3,.4,1) both}
.ibub::after{content:"";position:absolute;inset:16%;border-radius:50%;background:conic-gradient(from 0deg,transparent,rgba(255,255,255,.35),transparent 30%,rgba(160,190,255,.32),transparent 60%,rgba(255,255,255,.25),transparent 85%);animation:vspin 2.2s linear infinite}
.izeno{width:calc(var(--sq) * 3);height:calc(var(--sq) * 3);border-radius:50%;border:2px solid rgba(200,220,255,.85);box-shadow:0 0 12px rgba(120,160,255,.7);opacity:0;animation:izeno 1.1s var(--d) cubic-bezier(.1,.9,.2,1) both}
@keyframes izeno{0%{opacity:0;transform:translate(-50%,-50%) scale(3.2)}25%{opacity:.9}100%{opacity:0;transform:translate(-50%,-50%) scale(1.02)}}

/* World-Cutting Slash */
.pbtn.wcs .ic{color:#C4102B}
.pbtn.wcs.on{box-shadow:0 0 0 2px #C4102B}
.tcap.wcs{color:#FFF1F2;font-size:clamp(1.3rem,6.4vw,2.2rem);text-shadow:0 0 14px #FF2D4A,0 0 34px #FF2D4A,3px 3px 0 #2A0006}
.wdark{inset:0;background:rgba(10,0,4,.55);animation:qin .3s ease-out both}
.wcut{height:2px;transform-origin:50% 50%;transform:translate(-50%,-50%) rotate(var(--ang)) scaleX(0);background:linear-gradient(180deg,rgba(255,40,70,0),#FF2D4A 25%,#fff 50%,#FF2D4A 75%,rgba(255,40,70,0));box-shadow:0 0 18px 6px rgba(255,40,70,.85);animation:wtrace .35s .45s cubic-bezier(.7,0,.2,1) forwards,wopen .45s .95s cubic-bezier(.2,.9,.3,1) forwards}
@keyframes wtrace{to{transform:translate(-50%,-50%) rotate(var(--ang)) scaleX(1)}}
@keyframes wopen{0%{height:2px}40%{height:calc(var(--sq) * .5);box-shadow:0 0 40px 18px rgba(255,40,70,.9)}100%{height:6px}}
.wside{width:300%;height:300%;transform-origin:50% 0;background:rgba(0,0,0,.5);opacity:0;animation:wshift .6s .95s cubic-bezier(.2,.9,.3,1) both}
@keyframes wshift{0%{opacity:0;transform:translate(-50%,0) rotate(var(--ang)) translateY(0)}35%{opacity:1;transform:translate(-50%,0) rotate(var(--ang)) translateY(var(--sh))}100%{opacity:0;transform:translate(-50%,0) rotate(var(--ang)) translateY(0)}}
.wdark{transition:opacity .4s}.wdark.off{opacity:0}
.wscar{height:3px;transform:translate(-50%,-50%) rotate(var(--ang));background:linear-gradient(90deg,transparent,rgba(255,200,205,.9) 15%,#FF2D4A 50%,rgba(255,200,205,.9) 85%,transparent);box-shadow:0 0 10px rgba(255,40,70,.8);animation:fadeout 1.6s .2s ease-in forwards}

/* Cursed Piece Manipulation */
.board.dom-geto{box-shadow:0 0 0 3px #3EE08A,0 0 32px 6px rgba(90,50,220,.7)}
.board.dom-geto .sq{background-color:#3A3552}
.board.dom-geto .sq.d{background-color:#1C1830}
.board.dom-geto .pc.b{color:#0E0A16;text-shadow:0 1px 0 #CFC7FF,0 -1px 0 #CFC7FF,1px 0 0 #CFC7FF,-1px 0 0 #CFC7FF}
.board.dom-geto .co{color:#9FF5C4}
.board.dom-geto::after{opacity:1;background:radial-gradient(ellipse at 20% 80%,rgba(60,255,150,.14),transparent 45%),radial-gradient(ellipse at 80% 20%,rgba(120,70,255,.2),transparent 50%),repeating-conic-gradient(from 0deg at 50% 50%,rgba(110,70,255,.09) 0 8deg,rgba(60,255,150,.05) 8deg 16deg,transparent 16deg 40deg);animation:twinkle 3.2s ease-in-out infinite alternate}
.sq.sum .pc{filter:drop-shadow(0 0 4px rgba(70,255,160,.95)) drop-shadow(0 0 2px #120A24)}
.pbtn.release .ic,.pbtn.swarm .ic,.pbtn.uzumaki .ic{color:#2FB874}
.pbtn.release.on,.pbtn.swarm.on,.pbtn.uzumaki.on{box-shadow:0 0 0 2px #2FB874}
.tray .chip.cv{border-color:#2FB874}
.tcap.geto{color:#ECFFF4;text-shadow:0 0 12px #3EE08A,0 0 26px #6B3CFF,2px 2px 0 #0A0614}
.gport{width:calc(var(--sq) * 1.25);height:calc(var(--sq) * 1.25);transform:translate(-50%,-50%);animation:charge .35s ease-out both;transition:opacity .35s}
.gport::before{content:"";position:absolute;inset:0;border-radius:50%;background:conic-gradient(from 0deg,transparent,rgba(110,60,255,.95) 25%,transparent 45%,rgba(60,255,150,.85) 70%,transparent);-webkit-mask:radial-gradient(circle,transparent 22%,#000 30%,#000 58%,transparent 70%);mask:radial-gradient(circle,transparent 22%,#000 30%,#000 58%,transparent 70%);animation:vspin .5s linear infinite}
.gport::after{content:"";position:absolute;inset:26%;border-radius:50%;background:radial-gradient(circle,#05020A 40%,rgba(30,10,60,.8) 70%,transparent)}
.gport.fade{opacity:0}
.tg.spirit{color:#0B0612;text-shadow:0 0 2px #9FF5C4,0 0 12px rgba(60,255,150,.9),0 0 22px rgba(110,60,255,.8);animation:spiritup .7s ease-out both}
@keyframes spiritup{0%{opacity:0;transform:translate(-50%,-20%) scale(.5)}60%{opacity:1;transform:translate(-50%,-75%) scale(1.25)}100%{opacity:0;transform:translate(-50%,-50%) scale(1)}}
.tg.dash{transition:left .42s cubic-bezier(.5,0,.2,1),top .42s cubic-bezier(.5,0,.2,1);filter:drop-shadow(0 0 8px rgba(60,255,150,.9))}
.tg.gp{color:#0B0612;text-shadow:0 0 2px #9FF5C4,0 0 10px rgba(60,255,150,.9);font-size:min(6vw,30px);transition:left .55s cubic-bezier(.4,0,.2,1),top .55s cubic-bezier(.4,0,.2,1),opacity .2s .5s}
.tg.gp.in{opacity:0}
.uzu{width:calc(var(--sq) * 3);height:calc(var(--sq) * 3);transform:translate(-50%,-50%);animation:charge .5s ease-out both}
.uzu::before{content:"";position:absolute;inset:0;border-radius:50%;background:repeating-conic-gradient(from 0deg,rgba(120,70,255,.9) 0 9deg,rgba(60,255,150,.55) 9deg 18deg,transparent 18deg 36deg);-webkit-mask:radial-gradient(circle,transparent 8%,#000 16%,#000 52%,transparent 68%);mask:radial-gradient(circle,transparent 8%,#000 16%,#000 52%,transparent 68%);animation:vspin .6s linear infinite}
.uzu::after{content:"";position:absolute;inset:38%;border-radius:50%;background:radial-gradient(circle,#fff,#9FF5C4 30%,rgba(110,60,255,.6) 60%,transparent);animation:sunp .3s ease-in-out infinite alternate}
.tg.spiral{color:#0B0612;text-shadow:0 0 2px #9FF5C4,0 0 10px rgba(60,255,150,.9);font-size:min(7vw,36px);animation:spiralin 1s var(--d) cubic-bezier(.5,0,.8,.4) both}
@keyframes spiralin{0%{opacity:0;transform:translate(-50%,-50%) rotate(var(--a)) translateX(calc(var(--sq) * 2.6)) rotate(calc(-1 * var(--a)))}15%{opacity:1}100%{opacity:0;transform:translate(-50%,-50%) rotate(calc(var(--a) + 540deg)) translateX(0) rotate(calc(-1 * var(--a))) scale(.2)}}
.uflash{inset:0;background:radial-gradient(circle,rgba(220,255,235,.8),rgba(110,60,255,.3) 55%,transparent);animation:fadeout .7s ease-out forwards}
/* Procession of the Fallen */
.qin{position:absolute;inset:0;transform-origin:50% 24%;animation:kshake .6s 3.6s both}
.fx.proc.out .qin{animation:qswirl .62s ease-in forwards}
@keyframes qswirl{to{opacity:0;transform:rotate(170deg) scale(.04)}}
.qsky{position:absolute;inset:0;background:linear-gradient(180deg,#040208 0%,#120922 38%,#1D2B25 61%,#06050A 62%,#030205 100%);animation:veil .4s ease-out both}
.qvw{position:absolute;left:50%;top:24%;width:0;height:0;animation:qvin 1.2s 1s cubic-bezier(.2,.9,.3,1) both}
@keyframes qvin{from{transform:scale(0);opacity:0}to{transform:scale(1);opacity:1}}
.qvx{position:absolute;width:min(112vw,580px);height:min(112vw,580px);left:calc(min(112vw,580px) / -2);top:calc(min(112vw,580px) / -2);border-radius:50%;background:repeating-conic-gradient(from 0deg,rgba(120,80,255,.55) 0 6deg,rgba(70,255,160,.28) 6deg 12deg,transparent 12deg 30deg);-webkit-mask:radial-gradient(circle,transparent 5%,#000 13%,#000 38%,transparent 62%);mask:radial-gradient(circle,transparent 5%,#000 13%,#000 38%,transparent 62%);animation:rayspin 5s linear infinite reverse}
.qcore{position:absolute;width:min(22vw,110px);height:min(22vw,110px);left:calc(min(22vw,110px) / -2);top:calc(min(22vw,110px) / -2);border-radius:50%;background:radial-gradient(circle,#000 45%,#0B2A1C 65%,rgba(60,255,150,.6) 72%,transparent 78%);box-shadow:0 0 40px 10px rgba(110,60,255,.5)}
.qground{position:absolute;left:-40%;right:-40%;bottom:-6%;height:40%;transform:perspective(420px) rotateX(62deg);transform-origin:50% 100%;background:repeating-conic-gradient(#121A17 0 25%,#0A0E0C 0 50%) 0 0/12.5% 25%;-webkit-mask:linear-gradient(to top,#000 40%,transparent);mask:linear-gradient(to top,#000 40%,transparent)}
.qfog{position:absolute;left:-20%;right:-20%;top:56%;height:14%;background:radial-gradient(ellipse,rgba(60,255,150,.16),transparent 70%);filter:blur(6px);animation:zdrift 6s linear infinite alternate}
.qking{position:absolute;left:50%;bottom:20%;font-family:var(--glyph);font-size:min(22vw,118px);line-height:1;transform:translateX(-50%);animation:qin .5s .2s ease-out both}
.qking.w{color:#F2FFF7;text-shadow:0 0 2px #0A1A12,0 -2px 10px rgba(200,255,225,.9),0 0 26px rgba(60,255,150,.55)}
.qking.b{color:#0A0612;text-shadow:0 0 2px #CFFFE3,0 -2px 10px rgba(200,255,225,.9),0 0 26px rgba(60,255,150,.55)}
.qpool{position:absolute;left:var(--x);bottom:var(--b);width:min(14vw,74px);height:min(4vw,20px);margin-left:calc(min(14vw,74px) / -2);border-radius:50%;background:radial-gradient(ellipse,#000 50%,rgba(20,70,45,.9) 70%,rgba(60,255,150,.6) 80%,transparent 86%);box-shadow:0 0 14px rgba(60,255,150,.45);animation:qpool .4s var(--d) ease-out both}
@keyframes qpool{from{transform:scaleX(0);opacity:0}to{transform:scaleX(1);opacity:1}}
@keyframes spoolin{from{transform:translate(-50%,-10%) scaleX(0);opacity:0}to{transform:translate(-50%,-10%) scaleX(1);opacity:1}}
.qsp{position:absolute;left:var(--x);bottom:calc(var(--b) + 4px);font-family:var(--glyph);font-size:min(11vw,58px);line-height:1;color:#0B0612;text-shadow:0 0 2px #9FF5C4,0 0 14px rgba(60,255,150,.85),0 0 26px rgba(110,60,255,.7);transform:translateX(-50%);animation:qsp .7s var(--d) cubic-bezier(.2,.9,.3,1) both,qsway 2.2s calc(var(--d) + .7s) ease-in-out infinite alternate}
@keyframes qsp{from{opacity:0;transform:translate(-50%,55%) scaleY(.4);filter:blur(8px)}to{opacity:1;transform:translate(-50%,0) scaleY(1);filter:blur(0)}}
@keyframes qsway{from{transform:translate(-50%,0)}to{transform:translate(-50%,-5px)}}
.qem{position:absolute;left:var(--x);bottom:var(--b);width:3px;height:3px;border-radius:50%;background:#9FF5C4;box-shadow:0 0 6px #3EE08A;animation:zem 3.4s var(--d) ease-out infinite}
.qring{position:absolute;left:50%;bottom:24%;width:80px;height:80px;margin-left:-40px;border-radius:50%;border:3px solid rgba(160,255,200,.9);box-shadow:0 0 18px rgba(90,60,255,.8);opacity:0;animation:kring 1s var(--d) ease-out both}
.qflash{position:absolute;inset:0;background:radial-gradient(circle at 50% 65%,rgba(220,255,235,.7),rgba(110,60,255,.25) 55%,transparent);opacity:0;animation:gflash .7s 3.55s ease-out both}
.qsub{position:absolute;left:50%;bottom:6%;width:92%;transform:translateX(-50%);text-align:center;font-family:var(--serif);font-weight:800;font-size:clamp(1.25rem,6vw,2rem);color:#F2FFF7;text-shadow:0 2px 10px rgba(0,0,0,.85),0 0 2px #000;animation:fadeout .45s 3.1s forwards}
.qtitle{position:absolute;left:50%;bottom:5%;width:92%;transform:translateX(-50%);text-align:center;color:#ECFFF4;--kd:3.7s}
.qtitle .ck{color:#9FF5C4}
.qname{font-family:var(--serif);font-weight:800;font-size:clamp(1.6rem,8vw,2.9rem);line-height:1.08;margin-top:4px;text-shadow:0 0 18px rgba(60,255,150,.85),2px 2px 0 #000;animation:converge .9s 3.85s cubic-bezier(.2,.8,.2,1) both}

/* Malevolent Queen: blood moon summoning */
.zin{position:absolute;inset:0;animation:kshake .6s 3.75s both}
.zsky{position:absolute;inset:0;background:linear-gradient(180deg,#040002 0%,#1E0206 30%,#4E0710 52%,#7A0C18 62%,#22040A 63%,#07020A 100%);animation:veil .45s ease-out both}
.zmoon{position:absolute;left:72%;top:17%;width:min(34vw,180px);aspect-ratio:1/1;border-radius:50%;transform:translate(-50%,-50%);background:radial-gradient(circle at 38% 36%,rgba(255,190,170,.55) 0 8%,transparent 9%),radial-gradient(circle at 62% 58%,rgba(120,10,20,.45) 0 11%,transparent 12%),radial-gradient(circle at 48% 70%,rgba(120,10,20,.35) 0 7%,transparent 8%),radial-gradient(circle,#FF9C86 0%,#E0332F 45%,#8A0A14 100%);box-shadow:0 0 50px 14px rgba(224,40,40,.55),0 0 120px 40px rgba(160,10,20,.35);animation:zmoon 1.2s .1s ease-out both}
@keyframes zmoon{from{opacity:0;transform:translate(-50%,-30%) scale(.9)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}
.zcloud{position:absolute;height:var(--h);width:var(--w);left:var(--x);top:var(--y);border-radius:50%;background:radial-gradient(ellipse,rgba(6,0,3,.92),rgba(6,0,3,.5) 50%,transparent 72%);filter:blur(3px);animation:zdrift 9s var(--d) linear infinite alternate}
@keyframes zdrift{from{transform:translateX(-8%)}to{transform:translateX(8%)}}
.zmtn{position:absolute;left:0;right:0;top:46%;height:17%;background:#12020A;clip-path:polygon(0 100%,0 62%,7% 48%,15% 60%,24% 30%,33% 52%,41% 40%,50% 58%,58% 22%,67% 46%,75% 34%,84% 56%,92% 42%,100% 58%,100% 100%)}
.zwater{position:absolute;left:0;right:0;top:63%;bottom:0;background:linear-gradient(180deg,#14030A,#050106);overflow:hidden}
.zwater::after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(180deg,rgba(255,110,120,.08) 0 1px,transparent 1px 6px);animation:scan2 2.6s linear infinite}
.zblood{position:absolute;inset:0;background:radial-gradient(ellipse at 50% 18%,rgba(170,10,30,.95),rgba(110,4,18,.9) 45%,rgba(60,2,10,.85));clip-path:circle(150% at 50% 18%);animation:zblood 1.3s .95s cubic-bezier(.3,.7,.3,1) both}
@keyframes zblood{from{clip-path:circle(0% at 50% 18%)}to{clip-path:circle(150% at 50% 18%)}}
.zmref{position:absolute;left:72%;top:0;width:12%;height:100%;transform:translateX(-50%);background:repeating-linear-gradient(180deg,rgba(255,150,130,.55) 0 3px,transparent 3px 9px);-webkit-mask:linear-gradient(180deg,#000,transparent 85%);mask:linear-gradient(180deg,#000,transparent 85%);animation:zshim 1.6s ease-in-out infinite alternate}
@keyframes zshim{from{transform:translateX(-50%) scaleX(.85)}to{transform:translateX(-50%) scaleX(1.1)}}
.zrip{position:absolute;left:50%;top:63%;width:22%;height:16px;margin:-8px 0 0 -11%;border:2px solid rgba(255,90,100,.75);border-radius:50%;opacity:0;animation:zrip 1.5s var(--d) ease-out both}
@keyframes zrip{0%{opacity:0;transform:scale(.3)}15%{opacity:1}100%{opacity:0;transform:scale(4.2)}}
.zfog{position:absolute;left:-20%;right:-20%;top:57%;height:12%;background:radial-gradient(ellipse at 50% 50%,rgba(120,10,25,.55),transparent 70%);filter:blur(6px);animation:zdrift 6s linear infinite alternate}
.shr.zshr{left:50%;bottom:37%;width:72%;height:52%;animation:zrise 1.4s 1.55s cubic-bezier(.2,.8,.25,1) both;-webkit-box-reflect:below 2px linear-gradient(transparent 50%,rgba(255,255,255,.25))}
@keyframes zrise{from{opacity:0;transform:translate(-50%,62%)}30%{opacity:1}to{opacity:1;transform:translate(-50%,0)}}
.zshr .in{animation:inglow 1.6s 3s ease-in-out infinite alternate}
.zshr .ln{animation:qin .4s 2.75s ease-out forwards}.zshr .ln.r{animation-delay:2.9s}
.zq{position:absolute;left:50%;bottom:36%;font-family:var(--glyph);font-size:min(21vw,112px);line-height:1;color:#FF3B4E;text-shadow:0 0 3px #1A0204,0 0 12px rgba(255,40,70,.95),0 0 40px rgba(255,30,60,.7);transform:translate(-50%,0) scale(1.15);animation:zqin .5s .35s ease-out both,zqup .8s 3.05s cubic-bezier(.2,.9,.25,1) both}
@keyframes zqin{from{opacity:0;transform:translate(-50%,48%) scale(.9)}to{opacity:1;transform:translate(-50%,48%) scale(.9)}}
@keyframes zqup{from{transform:translate(-50%,48%) scale(.9);filter:brightness(1)}55%{filter:brightness(2.4)}to{transform:translate(-50%,0) scale(1.15);filter:brightness(1)}}
.zqglow{position:absolute;left:50%;bottom:40%;width:48%;aspect-ratio:1/1;transform:translate(-50%,50%);border-radius:50%;background:radial-gradient(circle,rgba(255,190,200,.85),rgba(255,40,70,.35) 35%,transparent 65%);animation:sflare 1s 3.25s ease-out both}
.zem{position:absolute;left:var(--x);bottom:var(--b);width:3px;height:3px;border-radius:50%;background:#FF8A5C;box-shadow:0 0 6px #FF4A2A;animation:zem 3.2s var(--d) ease-out infinite}
@keyframes zem{0%{opacity:0;transform:translate(0,0)}20%{opacity:1}100%{opacity:0;transform:translate(var(--dx),-160px)}}
.zsub{position:absolute;left:50%;bottom:6%;width:92%;transform:translateX(-50%);text-align:center;font-family:var(--serif);font-weight:800;font-size:clamp(1.25rem,6vw,2rem);color:#FFF1F1;text-shadow:0 2px 10px rgba(0,0,0,.85),0 0 2px #000;animation:fadeout .5s 2.7s forwards}
.zsl{position:absolute;left:var(--x);top:var(--y);width:var(--w);height:2px;background:linear-gradient(90deg,transparent,#fff 15%,#FFD9DD 85%,transparent);box-shadow:0 0 10px 2px rgba(255,30,50,.9);transform:translate(-50%,-50%) rotate(var(--a)) scaleX(1);opacity:.16;animation:zsl .32s var(--d) ease-out both}
@keyframes zsl{0%{opacity:1;transform:translate(-50%,-50%) rotate(var(--a)) scaleX(0)}40%{opacity:1;transform:translate(-50%,-50%) rotate(var(--a)) scaleX(1)}100%{opacity:.16;transform:translate(-50%,-50%) rotate(var(--a)) scaleX(1)}}
.zflash{position:absolute;inset:0;background:radial-gradient(circle at 50% 55%,rgba(255,210,215,.7),rgba(200,10,30,.35) 55%,transparent);opacity:0;animation:gflash .6s 3.7s ease-out both}
.zin .mtitle{top:4%;height:58%}
.zin .mline{animation-delay:4.9s}

/* Give Me Everything: shadow queen summoning */
.fx.rika{background:#000}
.kwrap{position:absolute;inset:0;animation:kshake .6s 3.25s both}
@keyframes kshake{10%,50%,90%{transform:translate(-6px,3px)}30%,70%{transform:translate(6px,-4px)}100%{transform:none}}
.kveil{position:absolute;inset:0;background:radial-gradient(ellipse at 50% 72%,#221B2E 0%,#0A0810 55%,#000 100%);animation:veil .4s ease-out both}
.kfloor{position:absolute;left:-40%;right:-40%;bottom:-6%;height:40%;transform:perspective(420px) rotateX(62deg);transform-origin:50% 100%;background:repeating-conic-gradient(#1A1720 0 25%,#0F0D14 0 50%) 0 0/12.5% 25%;-webkit-mask:linear-gradient(to top,#000 40%,transparent);mask:linear-gradient(to top,#000 40%,transparent)}
.kbeam{position:absolute;left:50%;top:-5%;width:46%;height:90%;transform:translateX(-50%);background:linear-gradient(180deg,rgba(210,200,255,.0),rgba(210,200,255,.16) 60%,rgba(230,220,255,.28));clip-path:polygon(38% 0,62% 0,100% 100%,0 100%);animation:qin .8s .2s ease-out both,kbeamout .6s 1.5s ease-in forwards}
@keyframes kbeamout{to{opacity:.25}}
.kcrack{position:absolute;left:50%;bottom:23%;height:2px;width:var(--l);background:linear-gradient(90deg,rgba(220,200,255,.95),rgba(140,90,255,0));box-shadow:0 0 8px rgba(160,110,255,.9);transform-origin:0 50%;transform:rotate(var(--a)) scaleX(1);animation:kcrack .5s var(--d) ease-out both}
@keyframes kcrack{from{transform:rotate(var(--a)) scaleX(0);opacity:1}to{transform:rotate(var(--a)) scaleX(1);opacity:.9}}
.ksmoke{position:absolute;left:var(--x);bottom:20%;width:var(--s);aspect-ratio:1/1;border-radius:50%;background:radial-gradient(circle,rgba(14,6,26,.95),rgba(14,6,26,.6) 45%,transparent 70%);filter:blur(5px);transform:translate(-50%,0);animation:ksmoke 3.6s var(--d) ease-out both}
@keyframes ksmoke{0%{opacity:0;transform:translate(-50%,10%) scale(.4)}25%{opacity:1}100%{opacity:.85;transform:translate(calc(-50% + var(--dx)),-120%) scale(1.5) rotate(40deg)}}
.kshw{position:absolute;left:50%;bottom:14%;transform:translateX(-50%);animation:ksum 1.5s 1.6s cubic-bezier(.2,.8,.25,1) both}
@keyframes ksum{0%{opacity:0;transform:translate(-50%,30%) scaleY(.55);filter:blur(14px)}60%{opacity:1;filter:blur(3px)}100%{opacity:1;transform:translate(-50%,0) scaleY(1);filter:blur(0)}}
.kshadow{display:block;font-family:var(--glyph);font-size:min(92vw,470px);line-height:1;color:#06030B;text-shadow:0 0 2px rgba(220,205,255,.95),0 0 26px rgba(130,80,255,.6),0 0 70px rgba(0,0,0,.95);animation:kwav 2.4s 3.1s ease-in-out infinite alternate}
@keyframes kwav{from{transform:skewX(-1.2deg) scaleY(1)}to{transform:skewX(1.2deg) scaleY(1.015)}}
.keye{position:absolute;top:31%;width:7%;height:1.6%;border-radius:50%;background:#F4EEFF;box-shadow:0 0 8px 2px rgba(200,170,255,.95),0 0 22px 6px rgba(130,80,255,.7);animation:keye .28s 2.95s cubic-bezier(.2,1.5,.4,1) both}
.keye.l{left:39%;transform:rotate(14deg)}.keye.r{right:39%;transform:rotate(-14deg)}
@keyframes keye{from{opacity:0;clip-path:inset(50% 0 50% 0)}to{opacity:1;clip-path:inset(0)}}
.karm{position:absolute;left:50%;bottom:16%;width:min(46vw,240px);aspect-ratio:1/1;border-radius:50%;border:min(3vw,16px) solid transparent;filter:blur(2px);animation:karm .7s 2.5s ease-out both}
.karm.l{transform:translateX(-78%) rotate(-25deg);border-top-color:rgba(8,4,16,.95);border-left-color:rgba(8,4,16,.9)}
.karm.r{transform:translateX(-22%) rotate(25deg);border-top-color:rgba(8,4,16,.95);border-right-color:rgba(8,4,16,.9)}
@keyframes karm{from{opacity:0;clip-path:inset(0 0 100% 0)}to{opacity:1;clip-path:inset(0)}}
.kpawn{position:absolute;left:50%;bottom:20%;font-family:var(--glyph);font-size:min(24vw,128px);line-height:1;transform:translateX(-50%);animation:qin .5s .25s ease-out both,ktrem .07s 1.25s steps(2) 10}
@keyframes ktrem{50%{transform:translate(calc(-50% + 2px),-1px)}}
.kpawn.w{color:#F6F2FF;text-shadow:0 0 2px #2A2140,0 -2px 10px rgba(230,220,255,.9),0 0 26px rgba(170,140,255,.6)}
.kpawn.b{color:#14101C;text-shadow:0 0 2px #E8E0FF,0 -2px 10px rgba(230,220,255,.9),0 0 26px rgba(170,140,255,.6)}
.kring{position:absolute;left:50%;bottom:24%;width:80px;height:80px;margin-left:-40px;border-radius:50%;border:3px solid rgba(220,200,255,.9);box-shadow:0 0 18px rgba(150,100,255,.9);opacity:0;animation:kring 1s var(--d) ease-out both}
@keyframes kring{0%{opacity:1;transform:scale(.2)}100%{opacity:0;transform:scale(9)}}
.kflash{position:absolute;inset:0;background:radial-gradient(circle at 50% 70%,rgba(230,215,255,.75),rgba(110,60,220,.25) 55%,transparent);opacity:0;animation:gflash .7s 3.2s ease-out both}
.ktitle{position:absolute;left:50%;top:7%;width:92%;transform:translateX(-50%);text-align:center;color:#F1EBFF;--kd:3.45s}
.ktitle .ck{color:#B9A6FF}
.kname{font-family:var(--serif);font-weight:800;font-size:clamp(1.8rem,9vw,3.3rem);line-height:1.08;margin-top:4px;text-shadow:0 0 18px rgba(150,100,255,.95),2px 2px 0 #000;animation:converge .9s 3.6s cubic-bezier(.2,.8,.2,1) both}
.ksub{position:absolute;left:50%;bottom:6%;width:92%;transform:translateX(-50%);text-align:center;font-family:var(--serif);font-weight:800;font-size:clamp(1.25rem,6vw,2rem);color:#FBF8FF;text-shadow:0 2px 10px rgba(0,0,0,.85),0 0 2px #000;animation:fadeout .5s 3.2s forwards}
.kblack{position:absolute;inset:0;background:#000;opacity:0}
.fx.rika.out .kblack{animation:whiteout .55s ease-in forwards}

/* Give Me Everything */
.fx.manga{background:#000}
.gwrap{position:absolute;inset:0;transform-origin:0 50%}
.gveil{position:absolute;inset:0;background:radial-gradient(circle,rgba(255,255,255,.2) 1.2px,transparent 1.7px) 0 0/8px 8px,radial-gradient(circle at 50% 50%,#262626,#000 70%);animation:veil .35s ease-out both}
.gpanel{position:absolute;left:7%;top:12%;right:7%;bottom:16%;border:4px solid #fff;background:#0B0B0B;overflow:hidden;animation:gpan .45s .1s cubic-bezier(.2,1.3,.4,1) both}
@keyframes gpan{from{opacity:0;transform:scale(.85) rotate(-2deg)}to{opacity:1;transform:none}}
.gspeed{position:absolute;inset:-30%;background:repeating-conic-gradient(from 0deg at 50% 55%,rgba(255,255,255,.2) 0 1.4deg,transparent 1.4deg 7deg);opacity:.35;animation:gspd .5s 2.35s ease-out forwards}
@keyframes gspd{to{opacity:1;transform:scale(1.12)}}
.gshade{position:absolute;left:50%;top:52%;font-family:var(--glyph);font-size:min(78vw,420px);line-height:1;color:rgba(0,0,0,.9);text-shadow:0 0 2px #fff,4px 4px 0 rgba(255,255,255,.35),-3px 2px 0 rgba(255,255,255,.25);opacity:0;transform:translate(-50%,-50%);animation:gshin 1.1s 2.55s ease-out forwards}
@keyframes gshin{from{opacity:0;transform:translate(-50%,-38%) scale(.9)}to{opacity:.95;transform:translate(-50%,-50%) scale(1)}}
.gpawn,.gqueen{position:absolute;left:50%;top:60%;font-family:var(--glyph);line-height:1;transform:translate(-50%,-50%)}
.gpawn{font-size:min(30vw,160px);animation:gtrem .07s 1.4s steps(2) 13,gpout .25s 2.35s ease-in forwards}
@keyframes gtrem{50%{transform:translate(calc(-50% + 3px),calc(-50% - 2px))}}
@keyframes gpout{to{opacity:0;transform:translate(-50%,-50%) scale(1.6)}}
.gqueen{font-size:min(38vw,200px);opacity:0;animation:gqin .55s 2.45s cubic-bezier(.2,1.5,.4,1) forwards}
@keyframes gqin{from{opacity:0;transform:translate(-50%,-50%) scale(.4);filter:brightness(4)}to{opacity:1;transform:translate(-50%,-50%) scale(1);filter:brightness(1)}}
.gpawn.w,.gqueen.w{color:#fff;text-shadow:0 0 0 #000,2px 2px 0 #000,-2px -2px 0 #000,2px -2px 0 #000,-2px 2px 0 #000,0 0 26px rgba(255,255,255,.7)}
.gpawn.b,.gqueen.b{color:#0A0A0A;text-shadow:2px 2px 0 #fff,-2px -2px 0 #fff,2px -2px 0 #fff,-2px 2px 0 #fff,0 0 26px rgba(255,255,255,.7)}
.gflash{position:absolute;inset:0;background:#fff;opacity:0;animation:gflash .6s 2.35s ease-out both}
@keyframes gflash{0%{opacity:0}18%{opacity:1}100%{opacity:0}}
.gbubble{position:absolute;right:6%;top:8%;max-width:62%;padding:12px 18px;background:#fff;color:#000;border:3px solid #000;border-radius:50%/42%;font-family:var(--sans);font-weight:700;font-size:clamp(1.15rem,5.4vw,1.8rem);line-height:1.15;text-align:center;box-shadow:0 0 0 3px #fff;animation:bubin .35s 1s cubic-bezier(.2,1.7,.4,1) both,bubshake .07s 2.2s steps(2) 6}
.gbubble::after{content:"";position:absolute;left:18%;bottom:-16px;width:22px;height:20px;background:#fff;border-left:3px solid #000;border-bottom:3px solid #000;transform:skewX(32deg) rotate(-8deg)}
@keyframes bubin{from{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}
@keyframes bubshake{50%{transform:translate(2px,-2px)}}
.gbox{position:absolute;left:7%;top:5%;padding:4px 10px;background:#fff;color:#000;border:2px solid #000;font-family:var(--sans);font-weight:700;font-size:.85rem;animation:kin .5s .4s ease-out both}
.gname{position:absolute;left:0;right:0;bottom:4%;text-align:center;font-family:var(--serif);font-weight:800;font-size:clamp(1.6rem,8vw,2.8rem);color:#fff;text-shadow:3px 3px 0 #000,0 0 18px rgba(255,255,255,.6);animation:slam2 .45s 3.2s cubic-bezier(.2,1.5,.4,1) both}
.gline{position:absolute;left:7%;right:7%;top:88.5%;display:none}
.fx.manga.out .gwrap{animation:pageout .5s ease-in forwards}
@keyframes pageout{to{opacity:0;transform:perspective(900px) rotateY(-82deg)}}

/* Reverse Cursed Technique */
.tcap.rct{color:#F4FFF8;text-shadow:0 0 12px #5CF2A6,0 0 28px #2FD07F;font-size:clamp(1.1rem,5.2vw,1.8rem)}
.rpill{width:calc(var(--sq) * .95);height:calc(var(--sq) * 2.6);transform:translate(-50%,-80%) scaleY(0);transform-origin:50% 100%;border-radius:40% 40% 8px 8px;background:linear-gradient(to top,rgba(225,255,238,.95),rgba(140,255,200,.35) 55%,rgba(140,255,200,0));filter:blur(1.5px);animation:rpill 1.1s ease-out forwards}
@keyframes rpill{0%{opacity:0;transform:translate(-50%,-80%) scaleY(0)}30%{opacity:1;transform:translate(-50%,-80%) scaleY(1)}100%{opacity:0;transform:translate(-50%,-80%) scaleY(1.1)}}
.rsp{width:4px;height:4px;margin:-2px 0 0 -2px;border-radius:50%;background:#EFFFF5;box-shadow:0 0 6px #5CF2A6;animation:rsp .9s var(--d) ease-out both}
@keyframes rsp{0%{opacity:0;transform:translate(var(--x),10px)}25%{opacity:1}100%{opacity:0;transform:translate(var(--x),calc(var(--sq) * -1.4))}}
.tg.reform{animation:reform .7s .35s ease-out both;filter:drop-shadow(0 0 8px rgba(120,255,180,.9))}
@keyframes reform{from{clip-path:inset(100% 0 0 0);opacity:.3}to{clip-path:inset(0 0 0 0);opacity:1}}
.pbtn.rct .ic{color:#1FAE68}
.pbtn.rct.on{box-shadow:0 0 0 2px #1FAE68}
.tray .chip{font-family:var(--glyph);font-size:1.4rem;line-height:1;padding:4px 8px;border-radius:8px;border:1.5px solid #1FAE68;background:var(--panel);color:var(--ink);cursor:pointer}
.tray .chip:focus-visible{outline:3px solid #1FAE68;outline-offset:2px}
.pip sup{font-family:var(--sans);font-size:.6rem;font-weight:700;margin-left:1px}
/* Shrine summoning */
.mwater{position:absolute;left:0;right:0;bottom:0;height:24%;background:linear-gradient(180deg,#14060C,#05030A);animation:veil .5s .1s ease-out both}
.mwater::after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(180deg,rgba(255,80,100,.10) 0 1px,transparent 1px 7px);animation:scan2 2.4s linear infinite}
.mcloud{position:absolute;border-radius:50%;background:radial-gradient(ellipse,rgba(10,0,2,.55),transparent 70%);animation:drift 9s linear infinite alternate}
@keyframes drift{from{transform:translateX(-6%)}to{transform:translateX(6%)}}
.mripple{position:absolute;left:42%;bottom:24%;width:60%;height:18px;margin-left:-30%;border:2px solid rgba(255,120,140,.55);border-radius:50%;animation:mrip 1.3s var(--d) ease-out both}
@keyframes mrip{0%{opacity:0;transform:scale(.3)}20%{opacity:1}100%{opacity:0;transform:scale(1.5)}}
.shr{position:absolute;left:42%;bottom:24%;width:62%;height:58%;transform:translateX(-50%);animation:shrrise 1.5s .3s cubic-bezier(.2,.8,.25,1) both;-webkit-box-reflect:below 0 linear-gradient(transparent 55%,rgba(255,255,255,.22))}
@keyframes shrrise{from{opacity:0;transform:translate(-50%,55%)}25%{opacity:1}to{opacity:1;transform:translate(-50%,0)}}
.shr i{position:absolute;display:block}
.shr .rf2{left:-6%;right:-6%;top:3%;height:24%;background:#E2A23C;clip-path:polygon(0 92%,9% 62%,24% 46%,50% 0,76% 46%,91% 62%,100% 92%,93% 100%,50% 24%,7% 100%)}
.shr .rf{left:-5%;right:-5%;top:5%;height:24%;background:linear-gradient(180deg,#2A070C,#120205);clip-path:polygon(0 92%,9% 62%,24% 46%,50% 0,76% 46%,91% 62%,100% 92%,92% 96%,50% 30%,8% 96%)}
.shr .fin{left:47.5%;width:5%;top:-3%;height:10%;background:#E2A23C;clip-path:polygon(50% 0,100% 100%,0 100%)}
.shr .bm{left:6%;right:6%;top:27%;height:5%;background:linear-gradient(180deg,#5A0C14,#2A050A);border-top:2px solid #E2A23C;border-bottom:2px solid #E2A23C}
.shr .bm2{left:10%;right:10%;top:36%;height:3%;background:#3A070D;border-bottom:1px solid rgba(226,162,60,.7)}
.shr .pl{top:32%;bottom:0;width:7%;background:linear-gradient(90deg,#3A050C,#8E1420 45%,#3A050C)}
.shr .pl.l{left:14%}.shr .pl.r{right:14%}
.shr .in{left:21%;right:21%;top:39%;bottom:0;background:radial-gradient(ellipse at 50% 70%,rgba(255,40,70,.55),rgba(60,0,10,.9) 60%,#0D0205);animation:inglow 1.6s 1.6s ease-in-out infinite alternate}
@keyframes inglow{from{filter:brightness(1)}to{filter:brightness(1.35)}}
.shr .st1{left:10%;right:10%;bottom:0;height:4%;background:#2A060B;border-top:1px solid rgba(226,162,60,.6)}
.shr .st2{left:17%;right:17%;bottom:4%;height:3%;background:#3A0810;border-top:1px solid rgba(226,162,60,.5)}
.shr .ln{width:5%;height:9%;top:31%;background:radial-gradient(circle,#FFF6FA,#F4D9FF 45%,rgba(200,170,255,.2) 75%);box-shadow:0 0 18px 6px rgba(240,220,255,.6);border:1px solid rgba(60,20,40,.8);opacity:0;animation:qin .5s 1.7s ease-out forwards}
.shr .ln.l{left:4%}.shr .ln.r{right:4%}
.squeen{position:absolute;left:42%;bottom:28%;font-family:var(--glyph);font-size:min(22vw,120px);line-height:1;color:#FF3B4E;text-shadow:0 0 10px rgba(255,30,60,.95),0 0 40px rgba(255,30,60,.7),0 2px 0 #1A0204;transform:translateX(-50%);animation:enthrone .8s 1.8s cubic-bezier(.2,1.3,.4,1) both}
@keyframes enthrone{from{opacity:0;transform:translateX(-50%) scale(.6);filter:brightness(3)}to{opacity:1;transform:translateX(-50%) scale(1);filter:brightness(1)}}
.sflare{position:absolute;left:42%;bottom:36%;width:46%;aspect-ratio:1/1;transform:translate(-50%,50%);border-radius:50%;background:radial-gradient(circle,rgba(255,200,210,.85),rgba(255,40,70,.35) 35%,transparent 65%);animation:sflare .9s 1.75s ease-out both}
@keyframes sflare{0%{opacity:0;transform:translate(-50%,50%) scale(.2)}35%{opacity:1}100%{opacity:0;transform:translate(-50%,50%) scale(1.4)}}

/* Limitless: the honored one */
.fx.honored{background:#000}
.hsky{position:absolute;inset:0;background:linear-gradient(180deg,#FFF6DC 0%,#F6D27A 26%,#DCA642 48%,#946A22 66%,#3E2C10 100%);animation:veil .45s ease-out both}
.hsun{position:absolute;left:60%;top:13%;width:80%;aspect-ratio:1/1;transform:translate(-50%,-50%);border-radius:50%;background:radial-gradient(circle,#FFFFF4 0%,rgba(255,244,200,.9) 10%,rgba(255,216,120,.4) 32%,transparent 64%);animation:sunp 3.2s ease-in-out infinite alternate}
@keyframes sunp{from{opacity:.85}to{opacity:1}}
.hrw{position:absolute;left:60%;top:13%;width:0;height:0}
.hrays{position:absolute;width:min(240vw,1300px);height:min(240vw,1300px);left:calc(min(240vw,1300px) / -2);top:calc(min(240vw,1300px) / -2);background:repeating-conic-gradient(from 0deg,rgba(255,248,214,.32) 0deg 3.5deg,transparent 3.5deg 12deg);-webkit-mask:radial-gradient(circle,#000 0%,rgba(0,0,0,.75) 18%,transparent 46%);mask:radial-gradient(circle,#000 0%,rgba(0,0,0,.75) 18%,transparent 46%);animation:rayspin 46s linear infinite,qin 1.4s .2s ease-out both}
@keyframes rayspin{to{transform:rotate(360deg)}}
.hflare{position:absolute;border-radius:50%;background:radial-gradient(circle,rgba(255,250,225,.55),rgba(255,220,140,.15) 60%,transparent 72%);animation:qin 1.2s .6s ease-out both}
.hground{position:absolute;left:-40%;right:-40%;bottom:-6%;height:44%;transform:perspective(420px) rotateX(60deg);transform-origin:50% 100%;background:repeating-conic-gradient(#C8B289 0 25%,#A08A62 0 50%) 0 0/12.5% 25%;animation:veil .6s ease-out both}
.hhaze{position:absolute;left:0;right:0;bottom:24%;height:26%;background:linear-gradient(180deg,transparent,rgba(250,214,130,.85) 55%,rgba(200,160,90,.25))}
.rb{position:absolute;background:linear-gradient(160deg,#B8A07A,#6E5A3C);clip-path:polygon(10% 30%,45% 0,90% 18%,100% 62%,62% 100%,14% 86%,0 55%)}
.hshadow{position:absolute;left:50%;bottom:16%;width:38%;height:6%;transform:translateX(-50%);border-radius:50%;background:radial-gradient(ellipse,rgba(40,24,6,.55),transparent 70%);animation:shadow 5.6s cubic-bezier(.25,.6,.3,1) both}
@keyframes shadow{0%{opacity:0;transform:translateX(-50%) scale(1.1)}15%{opacity:1}100%{opacity:.25;transform:translateX(-50%) scale(.6)}}
.hking{position:absolute;left:50%;top:46%;animation:hrise 5.6s cubic-bezier(.25,.6,.3,1) both}
@keyframes hrise{0%{opacity:0;transform:translate(-50%,-12%) rotate(-52deg) scale(.86)}14%{opacity:1}100%{opacity:1;transform:translate(-50%,-66%) rotate(-77deg) scale(1)}}
.hkb{font-family:var(--glyph);font-size:min(40vw,210px);line-height:1;animation:bob 2.2s ease-in-out infinite alternate}
.hkb.w{color:#FFF8E8;text-shadow:0 0 2px #5A3F12,0 0 24px rgba(255,236,170,.95),0 0 60px rgba(255,214,120,.7)}
.hkb.b{color:#24180A;text-shadow:0 0 2px #FFE6A8,0 0 26px rgba(255,226,150,.95),0 0 64px rgba(255,214,120,.7)}
@keyframes bob{from{transform:translateY(0)}to{transform:translateY(-7px)}}
.hdust{position:absolute;width:3px;height:3px;border-radius:50%;background:#FFF3CF;box-shadow:0 0 6px #FFE19A;animation:dust 4.5s var(--d) ease-out infinite}
@keyframes dust{0%{opacity:0;transform:translateY(0)}20%{opacity:.9}100%{opacity:0;transform:translate(var(--x),-140px)}}
.hsub{position:absolute;left:50%;bottom:8%;width:92%;height:3.6em;transform:translateX(-50%);text-align:center;font-family:var(--serif);color:#FFF9EA;text-shadow:0 2px 10px rgba(0,0,0,.7),0 0 2px #000}
.hl{position:absolute;left:0;right:0;bottom:0}
.hl1{font-size:clamp(1.1rem,5.2vw,1.7rem);font-weight:700;animation:fadeout .5s 3.05s forwards}
.hl2{font-size:clamp(1.35rem,6.6vw,2.3rem);font-weight:800}
.hw{display:inline-block;opacity:0;animation:wordin .55s calc(var(--b) + var(--i) * 150ms) ease-out forwards}
@keyframes wordin{from{opacity:0;transform:translateY(6px);filter:blur(4px)}to{opacity:1;transform:none;filter:blur(0)}}
.hwhite{position:absolute;inset:0;background:#FFFDF4;opacity:0}
.fx.honored.out .hwhite{animation:whiteout .45s ease-in forwards}
@keyframes whiteout{to{opacity:1}}

/* Scenes */
.fx{position:absolute;inset:0;z-index:12;display:none;overflow:hidden;cursor:pointer;border-radius:6px}
.fx.show{display:block}
.fx .ck{font-size:.9rem;font-weight:700;letter-spacing:.04em;animation:kin .5s var(--kd,1s) ease-out both}
/* Unlimited Pawns: pawn wall */
.rveil{position:absolute;inset:0;background:radial-gradient(ellipse at 50% 100%,rgba(120,84,10,.8),rgba(16,12,30,.96) 75%);animation:veil .3s ease-out both}
.rp{position:absolute;transform:translate(-50%,-50%);font-family:var(--glyph);font-size:min(9vw,48px);line-height:1;color:#E9B949;text-shadow:0 1px 0 #3A2A05,0 0 10px rgba(233,185,73,.7);animation:stack .5s var(--d) cubic-bezier(.3,1.35,.5,1) both}
@keyframes stack{0%{opacity:0;transform:translate(-50%,calc(-50% - 420px)) rotate(calc(var(--x) * 30deg))}70%{opacity:1}100%{opacity:1;transform:translate(-50%,-50%)}}
.rtitle{position:absolute;left:50%;top:50%;width:88%;text-align:center;padding:16px 12px 18px;background:rgba(20,15,36,.9);border:2px solid #E9B949;color:#F6E7BD;transform:translate(-50%,-50%);animation:plate .4s 1.35s cubic-bezier(.2,1.4,.4,1) both;--kd:1.6s}
@keyframes plate{from{opacity:0;transform:translate(-50%,-50%) scaleY(0)}to{opacity:1;transform:translate(-50%,-50%) scaleY(1)}}
.rtitle .cn2{font-family:var(--serif);font-weight:800;font-size:clamp(1.9rem,9.5vw,3.4rem);line-height:1.08;margin-top:4px;color:#E9B949;animation:slam2 .45s 1.9s cubic-bezier(.2,1.5,.4,1) both}
@keyframes slam2{0%{opacity:0;transform:scale(1.7)}100%{opacity:1;transform:scale(1)}}
.fx.rain.out .rp{animation:fall .45s calc(var(--d) * .4) ease-in both}
@keyframes fall{from{opacity:1;transform:translate(-50%,-50%)}to{opacity:0;transform:translate(-50%,calc(-50% + 380px))}}
.fx.rain.out .rtitle,.fx.rain.out .rveil{animation:fadeout .4s ease-in both}
/* Engine: rupture */
.uveil{position:absolute;inset:0;background:#0D0612;animation:veil .25s ease-out both}
.uveil::after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(0deg,rgba(255,92,147,.12) 0 1px,transparent 1px 4px);animation:scan2 1.2s linear infinite}
@keyframes scan2{from{background-position:0 0}to{background-position:0 40px}}
.ucrack{position:absolute;left:50%;top:0;bottom:0;width:4px;margin-left:-2px;background:#FF5C93;box-shadow:0 0 18px 6px rgba(255,60,120,.8);animation:crack 1.1s .1s cubic-bezier(.7,0,.2,1) both}
@keyframes crack{0%{transform:scaleY(0)}45%{transform:scaleY(1);width:4px;margin-left:-2px;opacity:1}100%{transform:scaleY(1);width:100%;margin-left:-50%;opacity:0}}
.uring{position:absolute;left:50%;top:50%;width:40px;height:40px;margin:-20px 0 0 -20px;border:2px solid #FF5C93;border-radius:50%;animation:ring 1.4s var(--d) ease-out both}
@keyframes ring{0%{opacity:.95;transform:scale(.2)}100%{opacity:0;transform:scale(14)}}
.uorbit{position:absolute;left:50%;top:50%;width:0;height:0;animation:orbit 7s linear infinite}
@keyframes orbit{to{transform:rotate(360deg)}}
.oq{position:absolute;left:0;top:0;font-family:var(--glyph);font-size:min(7vw,34px);line-height:1;color:#FF5C93;text-shadow:0 0 10px rgba(255,60,120,.9);transform:translate(-50%,-50%) rotate(var(--a)) translateY(calc(-1 * min(36vw,190px))) rotate(calc(-1 * var(--a)));animation:qin .4s calc(.6s + var(--i) * 70ms) both}
@keyframes qin{from{opacity:0}to{opacity:1}}
.utitle{position:absolute;left:50%;top:50%;width:84%;text-align:center;color:#F7D9E6;transform:translate(-50%,-50%);--kd:1s}
.utitle .ck{color:#FF8FB4}
.un{font-family:var(--serif);font-weight:800;font-size:clamp(1.6rem,8.5vw,3rem);line-height:1.1;margin-top:4px;animation:glitch .9s 1.25s steps(1) both}
@keyframes glitch{0%{opacity:0}10%{opacity:1;transform:translate(3px,-2px);text-shadow:-4px 0 #3FE0FF,4px 0 #FF2D6F}20%{transform:translate(-3px,1px);text-shadow:3px 0 #3FE0FF,-3px 0 #FF2D6F;clip-path:inset(20% 0 40% 0)}30%{transform:none;clip-path:none;text-shadow:-2px 0 #3FE0FF,2px 0 #FF2D6F}45%{transform:translate(2px,0);clip-path:inset(60% 0 5% 0)}55%{transform:none;clip-path:none}100%{opacity:1;transform:none;clip-path:none;text-shadow:-1px 0 rgba(63,224,255,.7),1px 0 rgba(255,45,111,.9)}}
.ul{font-family:var(--serif);font-size:1rem;line-height:1.45;margin-top:10px;animation:kin .5s 2s ease-out both}
.ul:empty{display:none}
.fx.rupture.out .utitle{animation:implode .4s ease-in both}
@keyframes implode{to{opacity:0;transform:translate(-50%,-50%) scale(0)}}
.fx.rupture.out .uorbit{animation:implode2 .4s ease-in both}
@keyframes implode2{to{opacity:0;transform:scale(0)}}
.fx.rupture.out .uveil{animation:flashout .45s ease-out both}
@keyframes flashout{0%{opacity:1;background:#FFE3EE}100%{opacity:0;background:#FFE3EE}}
/* Clash (v2) */
.th{position:absolute;top:0;bottom:0}
.xg .th{left:0}.xc .th{right:0}
.th-limitless{background:radial-gradient(1.6px 1.6px at 12% 20%,#fff,transparent),radial-gradient(1.2px 1.2px at 32% 64%,#fff,transparent),radial-gradient(1.4px 1.4px at 58% 30%,#fff,transparent),radial-gradient(1px 1px at 74% 76%,#fff,transparent),radial-gradient(1.3px 1.3px at 88% 44%,#fff,transparent),radial-gradient(1px 1px at 46% 88%,#fff,transparent),radial-gradient(circle at 50% 50%,rgba(110,140,255,.55),transparent 55%),linear-gradient(135deg,#04061A,#1A2470);background-size:180px 180px,220px 220px,160px 160px,200px 200px,240px 240px,190px 190px,100% 100%,100% 100%;animation:thstar 6s linear infinite}
@keyframes thstar{to{background-position:180px 60px,-220px 40px,160px -80px,-200px 90px,240px 30px,-190px -60px,0 0,0 0}}
.th-shrine{background:radial-gradient(circle at 70% 26%,#FF9C86 0,#E0332F 7%,#8A0A14 12%,transparent 13%),linear-gradient(32deg,transparent 49.6%,rgba(255,225,225,.55) 50%,transparent 50.4%) 20% 30%/40% 30% no-repeat,linear-gradient(-28deg,transparent 49.6%,rgba(255,225,225,.5) 50%,transparent 50.4%) 60% 70%/45% 28% no-repeat,linear-gradient(180deg,#120104,#4E0710 55%,#200207);animation:slashes 1.6s steps(1) infinite}
.th-copy{background:radial-gradient(circle,rgba(255,255,255,.22) 1.1px,transparent 1.6px) 0 0/8px 8px,repeating-conic-gradient(from 0deg at 50% 50%,rgba(255,255,255,.14) 0 1.5deg,transparent 1.5deg 8deg),linear-gradient(160deg,#050505,#2A2A2A)}
.th-geto{background:repeating-conic-gradient(from 0deg at 50% 50%,rgba(120,70,255,.4) 0 8deg,rgba(60,255,150,.2) 8deg 16deg,transparent 16deg 34deg),radial-gradient(circle at 50% 50%,rgba(60,255,150,.3),transparent 45%),linear-gradient(160deg,#07040F,#1E1438)}
.xg::after{content:"";position:absolute;right:-7px;top:0;bottom:0;width:14px;background:repeating-linear-gradient(180deg,#fff 0 6px,transparent 6px 9px,#E8F0FF 9px 15px,transparent 15px 22px);filter:blur(.6px);box-shadow:0 0 22px 8px rgba(255,255,255,.75);animation:seamfl .1s steps(2) infinite}
@keyframes seamfl{50%{background-position:0 11px}}
.xk{position:absolute;z-index:3;font-family:var(--glyph);font-size:min(30vw,160px);line-height:1;opacity:0;animation:xkin .6s .35s cubic-bezier(.2,1.2,.4,1) both,fadeout .35s 3.3s ease-in forwards}
.xk.l{left:6%;bottom:26%;color:#F6F2FF;text-shadow:0 0 2px #000,0 0 26px var(--kc)}
.xk.r{right:6%;top:28%;color:#0B0812;text-shadow:0 0 2px #fff,0 0 26px var(--kc)}
@keyframes xkin{from{opacity:0;transform:scale(.6)}to{opacity:.95;transform:scale(1)}}
.xbar{display:block;height:5px;margin-top:6px;width:min(36vw,170px);background:rgba(255,255,255,.18);border-radius:3px;overflow:hidden}
.xlab.c .xbar{margin-left:auto}
.xbar i{display:block;height:100%;width:var(--p);background:var(--kc);box-shadow:0 0 8px var(--kc);animation:xbar 1s .7s ease-out both}
@keyframes xbar{from{width:0}}
.xsp{position:absolute;left:50%;top:50%;z-index:2;width:var(--s);height:var(--s);border-radius:50%;background:#fff;box-shadow:0 0 8px #fff,0 0 14px var(--c);animation:ptx .8s var(--d) cubic-bezier(.1,.8,.3,1) both}
.xshard{position:absolute;left:50%;top:50%;z-index:2;width:var(--w);height:var(--h);background:var(--bg);clip-path:var(--cp);box-shadow:inset 0 0 0 1px rgba(255,255,255,.5);opacity:0;animation:xshard 1.1s 3.45s cubic-bezier(.2,.6,.4,1) both}
@keyframes xshard{0%{opacity:1;transform:translate(calc(-50% + var(--ox)),calc(-50% + var(--oy))) rotate(0)}100%{opacity:0;transform:translate(calc(-50% + var(--ox) + var(--tx)),calc(-50% + var(--oy) + var(--ty) + 140px)) rotate(var(--r))}}
.xwhite{position:absolute;inset:0;z-index:2;background:#fff;opacity:0;animation:gflash .5s 3.38s ease-out both}
.xboom{position:absolute;left:50%;top:50%;z-index:2;width:90px;height:90px;margin:-45px 0 0 -45px;border-radius:50%;border:4px solid #fff;box-shadow:0 0 30px #fff;opacity:0;animation:kring 1s 3.4s ease-out both}

/* Clash */
.xveil{position:absolute;inset:0;background:#0D0A1C}
.xfield{position:absolute;left:-30%;top:-30%;width:160%;height:160%;display:flex;transform:rotate(-18deg)}
.xg{flex:0 0 auto;position:relative;z-index:1;width:var(--st);background:var(--gbg);box-shadow:4px 0 0 0 #fff,10px 0 26px 8px rgba(255,255,255,.75);animation:tug 3.1s .25s cubic-bezier(.45,0,.3,1) both}
@keyframes tug{0%{width:var(--st)}16%{width:50%}30%{width:41%}44%{width:59%}58%{width:46%}72%{width:54%}86%{width:50%}100%{width:var(--fin)}}
.xc{flex:1 1 auto;background:var(--cbg)}
.xhead{position:absolute;left:50%;top:50%;z-index:3;font-family:var(--serif);font-weight:800;font-size:clamp(2rem,10vw,3.6rem);color:#fff;text-shadow:0 0 18px rgba(255,255,255,.7),0 3px 0 #0D0A1C;white-space:nowrap;animation:xhead 1.6s .1s ease-out both}
@keyframes xhead{0%{opacity:0;transform:translate(-50%,-50%) scale(2.2)}18%{opacity:1;transform:translate(-50%,-50%) scale(1)}75%{opacity:1;transform:translate(-50%,-50%) scale(1.04)}100%{opacity:0;transform:translate(-50%,-50%) scale(1.1)}}
.xlab{position:absolute;z-index:3;max-width:62%;font-family:var(--serif);font-weight:800;font-size:clamp(1.05rem,4.8vw,1.6rem);line-height:1.15;color:#fff;text-shadow:0 2px 8px rgba(0,0,0,.7);--kd:.5s}
.xlab small{display:block;font-family:var(--sans);font-weight:700;font-size:.78rem;opacity:.92;margin-top:3px}
.xlab.g{left:5%;bottom:7%}
.xlab.c{right:5%;top:7%;text-align:right}
.xlab span{display:block;animation:kin .5s .5s ease-out both}
.xres{position:absolute;left:50%;top:50%;z-index:4;width:84%;padding:14px 12px 16px;border-radius:12px;background:rgba(6,4,14,.72);box-shadow:0 0 0 1px rgba(255,255,255,.12);text-align:center;font-family:var(--serif);font-weight:800;font-size:clamp(1.3rem,6vw,2.2rem);line-height:1.15;color:#fff;text-shadow:0 3px 14px rgba(0,0,0,.6);transform:translate(-50%,-50%);animation:slam3 .5s 3.45s cubic-bezier(.2,1.5,.4,1) both}
@keyframes slam3{0%{opacity:0;transform:translate(-50%,-50%) scale(1.8)}100%{opacity:1;transform:translate(-50%,-50%) scale(1)}}
.xres.g{color:#fff;text-shadow:0 0 18px rgba(140,170,255,.95),0 3px 10px rgba(0,0,0,.6)}
.shard{position:absolute;left:50%;top:50%;z-index:2;width:48px;height:48px;clip-path:polygon(50% 0,100% 100%,0 70%);background:var(--sc);animation:shard .8s 3.35s ease-out both}
@keyframes shard{0%{opacity:0;transform:translate(-50%,-50%) scale(.4)}10%{opacity:1}100%{opacity:0;transform:translate(calc(-50% + var(--tx)),calc(-50% + var(--ty))) rotate(var(--r)) scale(1.1)}}
.fx.clash.out>*{animation:fadeout .35s ease-in both}

/* Unlimited Pawns: infinite void (v2) */
.vvtile{position:absolute;left:50%;top:45%;width:70%;aspect-ratio:1/1;border:2px dashed rgba(170,195,255,.55);box-shadow:0 0 12px rgba(120,150,255,.35),inset 0 0 12px rgba(120,150,255,.25);opacity:0;animation:vvt 2.6s var(--d) linear infinite}
@keyframes vvt{0%{opacity:0;transform:translate(-50%,-50%) scale(.03) rotate(0)}15%{opacity:.9}100%{opacity:0;transform:translate(-50%,-50%) scale(2.8) rotate(28deg)}}
.vvinfo{position:absolute;left:50%;top:45%;font-family:var(--sans);font-weight:700;font-size:11px;color:#C9DAFF;white-space:nowrap;text-shadow:0 0 6px rgba(120,160,255,.9);opacity:0;animation:vvi 1.5s var(--d) linear infinite}
@keyframes vvi{0%{opacity:0;transform:translate(-50%,-50%) rotate(var(--a)) translateX(14px) scale(.4)}20%{opacity:.95}100%{opacity:0;transform:translate(-50%,-50%) rotate(var(--a)) translateX(var(--r)) scale(1.6)}}
.vvpawn{position:absolute;left:50%;top:45%;font-family:var(--glyph);font-size:min(9vw,46px);line-height:1;color:#EEF3FF;text-shadow:0 0 6px #fff,0 0 14px rgba(120,160,255,.95);opacity:0;animation:vvp 1.1s var(--d) cubic-bezier(.5,0,.9,.6) both}
@keyframes vvp{0%{opacity:0;transform:translate(-50%,-50%) scale(.05)}25%{opacity:1}100%{opacity:0;transform:translate(calc(-50% + var(--tx)),calc(-50% + var(--ty))) scale(var(--sc));filter:blur(2px)}}
.vvflash{position:absolute;inset:0;background:radial-gradient(circle at 50% 45%,#fff,rgba(190,210,255,.6) 35%,transparent 70%);opacity:0;animation:gflash .6s 1.9s ease-out both}

/* Unlimited Pawns: the void */
.fx.void{perspective:600px}
.vwrap,.min,.mhalf{position:absolute;inset:0}
.vveil{position:absolute;inset:0;background:radial-gradient(circle at 50% 45%,#1E2668 0%,#070818 55%,#000 100%);animation:veil .3s ease-out both}
.st{position:absolute;left:50%;top:45%;width:var(--l);height:2px;margin-top:-1px;border-radius:2px;background:linear-gradient(90deg,transparent,#fff);transform-origin:0 50%;opacity:0;animation:warp 1.1s var(--d) linear infinite}
@keyframes warp{0%{opacity:0;transform:rotate(var(--a)) translateX(8px) scaleX(.1)}25%{opacity:1}100%{opacity:0;transform:rotate(var(--a)) translateX(var(--r)) scaleX(1)}}
.vcore{position:absolute;left:50%;top:45%;width:120px;height:120px;margin:-60px 0 0 -60px;border-radius:50%;background:radial-gradient(circle,#fff 0%,#C9DAFF 18%,rgba(110,140,255,.55) 42%,transparent 70%);animation:core 1.1s .2s cubic-bezier(.2,1.3,.4,1) both,corepulse 1.6s 1.3s ease-in-out infinite alternate}
@keyframes core{from{transform:scale(0)}to{transform:scale(1)}}
@keyframes corepulse{from{transform:scale(1)}to{transform:scale(1.2)}}
.vring{position:absolute;left:50%;top:45%;width:var(--w);aspect-ratio:1/1;border:1.5px solid rgba(190,210,255,.22);border-top-color:#fff;border-radius:50%;opacity:0;animation:vorbit var(--sp) linear infinite,qin .7s var(--d) ease-out forwards}
@keyframes vorbit{from{transform:translate(-50%,-50%) rotateX(var(--t)) rotateZ(0deg)}to{transform:translate(-50%,-50%) rotateX(var(--t)) rotateZ(360deg)}}
.vtitle{position:absolute;left:50%;bottom:8%;width:92%;text-align:center;color:#EEF3FF;transform:translateX(-50%);--kd:1.1s}
.vtitle .ck{color:#9FB4FF}
.vn{font-family:var(--serif);font-weight:800;font-size:clamp(1.9rem,9.5vw,3.4rem);line-height:1.08;margin-top:4px;text-shadow:0 0 18px rgba(140,170,255,.95);animation:converge 1s 1.35s cubic-bezier(.2,.8,.2,1) both}
@keyframes converge{0%{opacity:0;letter-spacing:.6em;filter:blur(8px)}100%{opacity:1;letter-spacing:0;filter:blur(0)}}
.fx.void.out .vwrap{animation:zoomout .55s ease-in both}
@keyframes zoomout{to{opacity:0;transform:scale(2.6)}}
/* Malevolent Queen */
.mveil{position:absolute;inset:0;background:linear-gradient(180deg,#000 0%,#2A0206 55%,#5A0710 100%);animation:veil .3s ease-out both}
.mblood{position:absolute;left:-10%;right:-10%;bottom:0;height:34%;background:radial-gradient(120% 45% at 50% 0%,#9A0B1A 0%,#5A0510 60%,#2B0207 100%);border-radius:50% 50% 0 0/22px 22px 0 0;transform-origin:50% 100%;animation:rise .9s .15s cubic-bezier(.2,.9,.3,1) both}
@keyframes rise{from{transform:scaleY(0)}to{transform:scaleY(1)}}
.mqueen{position:absolute;left:34%;bottom:14%;font-family:var(--glyph);font-size:min(50vw,260px);line-height:1;color:#120203;text-shadow:0 0 2px #FF3B4E,0 0 26px rgba(255,30,50,.75);transform:translateX(-50%);animation:qrise 1.1s .35s cubic-bezier(.2,.9,.3,1) both}
@keyframes qrise{from{opacity:0;transform:translate(-50%,30%)}to{opacity:1;transform:translate(-50%,0)}}
.ms{position:absolute;left:-10%;top:var(--y);width:120%;height:3px;background:linear-gradient(90deg,transparent,#fff 18%,#FFD6DA 82%,transparent);box-shadow:0 0 12px 3px rgba(255,30,50,.85);transform-origin:var(--o) 50%;animation:mslash .55s var(--d) ease-out both}
@keyframes mslash{0%{opacity:1;transform:rotate(var(--a)) scaleX(0)}40%{opacity:1;transform:rotate(var(--a)) scaleX(1)}100%{opacity:.18;transform:rotate(var(--a)) scaleX(1)}}
.min{animation:shake .5s 2.3s both}
@keyframes shake{10%,50%,90%{transform:translate(-5px,2px)}30%,70%{transform:translate(5px,-3px)}100%{transform:none}}
.mtitle{position:absolute;right:4%;top:5%;height:90%;display:flex;gap:6px}
.mt{writing-mode:vertical-rl;font-family:var(--serif);font-weight:800;font-size:clamp(2rem,10vw,3.4rem);line-height:1;color:#F4E9E1;text-shadow:0 0 14px rgba(255,30,50,.8),2px 2px 0 #3A0208;animation:vreveal .6s var(--d) cubic-bezier(.2,.8,.2,1) both}
.mt.k{font-family:var(--sans);font-size:.95rem;font-weight:700;letter-spacing:.08em;color:#FF9AA4;text-shadow:none}
@keyframes vreveal{from{clip-path:inset(0 0 100% 0)}to{clip-path:inset(0 0 0 0)}}
.mline{position:absolute;left:5%;bottom:4%;max-width:56%;font-family:var(--serif);font-size:1rem;line-height:1.4;color:#FFD6DA;animation:kin .5s 3.3s ease-out both}
.mline:empty{display:none}
.mhalf.a{clip-path:polygon(0 0,100% 0,0 100%)}
.mhalf.b{clip-path:polygon(100% 0,100% 100%,0 100%)}
.mcut{position:absolute;left:-25%;top:50%;width:150%;height:5px;margin-top:-2px;z-index:5;background:#fff;box-shadow:0 0 18px 6px rgba(255,30,50,.95);opacity:0}
.fx.mal.out .mcut{animation:cleave .35s ease-out both}
.fx.mal.out .mhalf.a{animation:parta .55s .12s ease-in both}
.fx.mal.out .mhalf.b{animation:partb .55s .12s ease-in both}
@keyframes parta{to{opacity:0;transform:translate(-20%,-20%)}}
@keyframes partb{to{opacity:0;transform:translate(20%,20%)}}

.board.dom-void .sq.tgt::after,.board.dom-mal .sq.tgt::after,.board.dom-geto .sq.tgt::after,.board.dom-shadow .sq.tgt::after{background:rgba(255,255,255,.8);box-shadow:0 0 6px rgba(255,255,255,.55)}
.board.dom-void .sq.tgt.cap::after,.board.dom-mal .sq.tgt.cap::after,.board.dom-geto .sq.tgt.cap::after,.board.dom-shadow .sq.tgt.cap::after{background:transparent;box-shadow:0 0 8px rgba(255,255,255,.45);border-color:rgba(255,255,255,.85)}
.lvl{font-size:.68rem;font-weight:700;color:var(--muted);margin-left:6px;border:1px solid var(--edge);border-radius:999px;padding:1px 7px;vertical-align:2px}

@media (prefers-reduced-motion:reduce){
  body.pshake .sq .pc{animation:none!important}
  #flash,body.quake main{animation:none!important}
  .pkbg *,.kit,.vs *,.pkrip{animation:none!important;opacity:1;transform:none}
  .board::before,.sq.aura,.sq.lock .pc,.gh *,.sq.drop .pc,
  .fx *,.fx *::after,.board::after,.board::before,.board>.jshine,.sq.vanish .pc{animation:none!important}
  .qin,.qsub{opacity:1}
  .hw{opacity:1}
  .band,.sq.pw,.sq.drop .pc,.sq.drop::after,.sq.lockin,.cveil,.cband,.ck,.cn,.crow span,.cut.out .cband,.cut.out .cveil,.cut.out .crow{animation:none}
  .board,.board::after{transition:none}
}

/* Private Pure Love Train */
.pbtn.riichi .ic,.pbtn.double .ic,.pbtn.shutter .ic,.pbtn.pachinko .ic{color:#E0479E}
.pbtn.riichi.on,.pbtn.double.on,.pbtn.shutter.on,.pbtn.pachinko.on{box-shadow:0 0 0 2px #E0479E}
.pball{width:calc(var(--sq) * .32);height:calc(var(--sq) * .32);border-radius:50%;transform:translate(-50%,-50%);background:radial-gradient(circle at 35% 30%,#fff,#D6DCE3 45%,#5A6470 100%);box-shadow:0 0 10px rgba(255,255,255,.7),0 0 18px rgba(255,201,60,.5);transition:left .32s cubic-bezier(.3,0,.7,1),top .32s cubic-bezier(.3,0,.7,1)}
.drainpop{position:absolute;right:0;top:-1.3em;font-family:var(--sans);font-weight:800;font-size:.8rem;color:#FF5FD2;text-shadow:0 0 8px rgba(255,95,210,.8),0 1px 0 #000;pointer-events:none;animation:drainpop 1.4s ease-out forwards}
@keyframes drainpop{0%{opacity:0;transform:translateY(6px)}20%{opacity:1}100%{opacity:0;transform:translateY(-18px)}}
.th-hakari{background:radial-gradient(circle,rgba(255,220,120,.5) 1.4px,transparent 2px) 0 0/20px 20px,radial-gradient(ellipse at 30% 30%,rgba(255,95,210,.5),transparent 50%),linear-gradient(160deg,#12061C,#5A0F4A)}
.board.dom-gamble{box-shadow:0 0 0 3px #FFC93C,0 0 0 6px #FF5FD2,0 0 30px 8px rgba(255,95,210,.55)}
.board.dom-gamble .sq{background-color:#1F6B4A}
.board.dom-gamble .sq.d{background-color:#0F3D2A}
.board.dom-gamble .co{color:#FFE7A3}
.board.dom-gamble .pc.b{text-shadow:0 1px 0 #FFE7F6,0 -1px 0 #FFE7F6,1px 0 0 #FFE7F6,-1px 0 0 #FFE7F6}
.board.dom-gamble::after{opacity:1;background:radial-gradient(ellipse at 50% 0%,rgba(255,95,210,.28),transparent 60%),radial-gradient(ellipse at 50% 100%,rgba(60,255,170,.22),transparent 60%);animation:twinkle 1.2s ease-in-out infinite alternate}
.board.jack{box-shadow:0 0 0 3px #FFD54A,0 0 36px 10px rgba(255,200,40,.75)}
.board>.jshine{position:absolute;top:0;bottom:0;left:0;width:250%;z-index:3;pointer-events:none;background:linear-gradient(115deg,transparent 30%,rgba(255,240,180,.35) 45%,transparent 60%);transform:translateX(-60%);will-change:transform;animation:jshine 2.2s linear infinite}
@keyframes jshine{from{transform:translateX(-60%)}to{transform:translateX(10%)}}
.sq.jk .pc{text-shadow:0 0 2px #fff,0 0 10px rgba(255,200,40,.95),0 0 20px rgba(255,140,40,.7)}
.sq.wall{background-image:repeating-linear-gradient(180deg,#B9C0C9 0 5px,#6B737E 5px 7px);box-shadow:inset 0 0 0 2px #FF5FD2}
.tcap.gamble{color:#FFE9F7;text-shadow:0 0 12px #FF5FD2,0 0 26px #FF5FD2,2px 2px 0 #2A0A2E}
.tcap.jackpot{color:#FFE27A;font-size:clamp(1.8rem,8vw,2.8rem);text-shadow:0 0 14px #FFC93C,0 0 30px #FF5FD2,3px 3px 0 #000}
.gdie{left:50%;top:46%;transform:translate(-50%,-50%);font-family:var(--glyph);font-size:clamp(4rem,22vw,8rem);line-height:1;color:#FFFDF6;text-shadow:0 0 18px rgba(255,60,190,.9),3px 3px 0 #2A0A2E;animation:gdie .12s steps(2) infinite}
.gdie.done{animation:gdiedone .35s cubic-bezier(.2,1.5,.4,1) both}
@keyframes gdie{50%{transform:translate(-50%,-50%) rotate(14deg) scale(1.06)}}
@keyframes gdiedone{from{transform:translate(-50%,-50%) scale(1.6)}to{transform:translate(-50%,-50%) scale(1)}}
.gres{left:0;right:0;top:68%;text-align:center;font-family:var(--serif);font-weight:800;font-size:clamp(1.5rem,7vw,2.5rem);color:#EDE6F5;text-shadow:2px 2px 0 #000;animation:capin 1.8s ease-out both}
.gres.hit{color:#FFD54A;text-shadow:0 0 14px rgba(255,200,40,.95),2px 2px 0 #000}
.gflip{width:calc(var(--sq) * .7);height:calc(var(--sq) * .7);border-radius:50%;transform:translate(-50%,-50%);background:radial-gradient(circle at 35% 30%,#FFF6C9,#FFC93C 55%,#A86F00);box-shadow:0 0 12px rgba(255,200,40,.9);animation:gflip .9s ease-out both}
@keyframes gflip{0%{transform:translate(-50%,-160%) rotateY(0)}50%{transform:translate(-50%,-260%) rotateY(900deg)}100%{transform:translate(-50%,-50%) rotateY(1800deg)}}
.shut{width:var(--sq);height:var(--sq);transform:translate(-50%,-50%);background:repeating-linear-gradient(180deg,#B9C0C9 0 5px,#6B737E 5px 7px);box-shadow:inset 0 0 0 2px #FF5FD2,0 0 14px rgba(255,95,210,.8);clip-path:inset(0 0 100% 0);animation:shutdown .35s cubic-bezier(.6,0,.4,1.2) forwards}
@keyframes shutdown{to{clip-path:inset(0 0 0 0)}}
/* Idle Death Gambit slot machine */
.gbin{position:absolute;inset:0;overflow:hidden}
.gbsky{position:absolute;inset:0;background:radial-gradient(ellipse at 20% 15%,rgba(255,60,190,.45),transparent 45%),radial-gradient(ellipse at 85% 80%,rgba(40,255,170,.35),transparent 50%),repeating-linear-gradient(90deg,rgba(255,255,255,.04) 0 2px,transparent 2px 22px),#12061C;animation:veil .35s ease-out both}
.gball{position:absolute;top:-6%;left:var(--x);width:var(--s);height:var(--s);border-radius:50%;background:radial-gradient(circle at 35% 30%,#fff,#C9CED6 40%,#6B7380 75%);box-shadow:0 0 6px rgba(255,255,255,.5);animation:gfall var(--t) var(--d) linear infinite}
@keyframes gfall{from{top:-6%}to{top:106%}}
.gbtitle{position:absolute;left:50%;top:6%;width:92%;transform:translateX(-50%);text-align:center;color:#FFE9F7;--kd:.35s}
.gbtitle .ck{color:#7CFFCB}
.gbname{font-family:var(--serif);font-weight:800;font-size:clamp(1.8rem,9vw,3.2rem);line-height:1.05;text-shadow:0 0 16px rgba(255,60,190,.95),2px 2px 0 #000;animation:slam2 .45s .6s cubic-bezier(.2,1.5,.4,1) both}
.gbmach{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);padding:12px 16px 16px;border-radius:18px;background:linear-gradient(180deg,#3A0E3E,#1A0620);border:4px solid #FFC93C;box-shadow:0 0 0 3px #7A2A00,0 0 30px rgba(255,201,60,.7),inset 0 0 20px rgba(255,60,190,.5);animation:gmin .5s .8s cubic-bezier(.2,1.4,.4,1) both}
.fx.gamble.mini .gbmach{animation-delay:0s}
@keyframes gmin{from{opacity:0;transform:translate(-50%,-50%) scale(.4)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}
.gblab{text-align:center;font-weight:700;font-size:.8rem;letter-spacing:.12em;color:#FFC93C;margin-bottom:8px;text-transform:uppercase}
.gbreels{display:flex;gap:8px}
.gbreel{width:1.15em;height:1.25em;overflow:hidden;border-radius:8px;background:linear-gradient(180deg,#CFC8B8,#FFFDF6 30%,#FFFDF6 70%,#CFC8B8);box-shadow:inset 0 3px 6px rgba(0,0,0,.45);font-size:clamp(2.6rem,13vw,4.4rem);line-height:1.25em;text-align:center}
.gbstrip{animation:greel var(--t) var(--d) cubic-bezier(.15,.6,.25,1) both}
.gbstrip span{display:block;height:1.25em;font-family:var(--glyph);color:#221E3D}
.gbstrip span.s7{font-family:var(--serif);font-weight:800;color:#D81B60}
@keyframes greel{from{transform:translateY(0)}to{transform:translateY(calc(var(--n) * -1.25em))}}
.gbres{position:absolute;left:0;right:0;top:76%;text-align:center;font-family:var(--serif);font-weight:800;font-size:clamp(1.6rem,8vw,2.8rem);white-space:nowrap;color:#E9E4F5;text-shadow:2px 2px 0 #000;animation:slam2 .45s var(--rd) cubic-bezier(.2,1.5,.4,1) both}
.gbres.hit{color:#FFD54A;font-size:clamp(2.2rem,11vw,4rem);text-shadow:0 0 18px rgba(255,200,40,.95),0 0 40px rgba(255,60,190,.8),3px 3px 0 #000}
.gbflash{position:absolute;inset:0;background:radial-gradient(circle,rgba(255,230,120,.9),rgba(255,60,190,.4) 50%,transparent 75%);opacity:0;animation:gflash .8s var(--rd) ease-out both}
.gcoin{position:absolute;left:50%;top:50%;width:14px;height:14px;margin:-7px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#FFF6C9,#FFC93C 50%,#B07A00);box-shadow:0 0 6px rgba(255,200,40,.9);opacity:0;animation:gcoin 1.3s var(--d) cubic-bezier(.2,.7,.3,1) both}
@keyframes gcoin{0%{opacity:1;transform:translate(0,0) rotate(0)}100%{opacity:0;transform:translate(var(--tx),var(--ty)) rotate(540deg)}}
.fx.gamble.out .gbin{animation:fadeout .5s ease-in forwards}

/* ===== Technique picker ===== */
.picker{position:fixed;inset:0;z-index:50;display:none;overflow-y:auto;background:#0B0918;color:#EDE6D6;padding:calc(24px + env(safe-area-inset-top,0px)) 16px calc(28px + env(safe-area-inset-bottom,0px));--pk:#E2B342;--gx:50%;--gy:40%}
.picker.show{display:block}
.pkbg{position:fixed;inset:0;overflow:hidden;pointer-events:none;background:radial-gradient(ellipse at 50% -10%,#2A2550,#0B0918 60%)}
.pkbg .au{position:absolute;width:70vmax;height:70vmax;border-radius:50%;filter:blur(60px);opacity:.5;mix-blend-mode:screen}
.pkbg .a1{left:-20vmax;top:-30vmax;background:radial-gradient(circle,rgba(226,179,66,.55),transparent 60%);animation:aur1 26s ease-in-out infinite alternate}
.pkbg .a2{right:-25vmax;bottom:-35vmax;background:radial-gradient(circle,rgba(224,74,130,.5),transparent 60%);animation:aur2 31s ease-in-out infinite alternate}
@keyframes aur1{to{transform:translate(18vmax,14vmax) scale(1.15)}}
@keyframes aur2{to{transform:translate(-16vmax,-18vmax) scale(1.2)}}
.pkglow{position:absolute;inset:0;background:radial-gradient(ellipse 55% 50% at var(--gx) var(--gy),color-mix(in srgb,var(--pk) 55%,transparent),transparent 70%);opacity:0;transition:opacity .45s;mix-blend-mode:screen}
.picker.lit .pkglow{opacity:1}
.pkfloor{position:absolute;left:50%;bottom:-6vh;width:140vw;height:60vh;transform:translateX(-50%) perspective(600px) rotateX(62deg);transform-origin:50% 100%;background:repeating-conic-gradient(rgba(237,230,214,.07) 0 25%,transparent 0 50%) 0 0/9vw 9vw;-webkit-mask:linear-gradient(to top,rgba(0,0,0,.9),transparent 85%);mask:linear-gradient(to top,rgba(0,0,0,.9),transparent 85%)}
.pkkanji{position:absolute;right:3vw;top:50%;transform:translateY(-50%);writing-mode:vertical-rl;font-family:var(--serif);font-weight:800;font-style:normal;font-size:clamp(5rem,16vh,11rem);line-height:1;letter-spacing:.1em;color:transparent;-webkit-text-stroke:1px rgba(237,230,214,.22);opacity:.9}
.pkin{position:relative;max-width:560px;margin:0 auto;display:flex;flex-direction:column;gap:18px}
.pkhead{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap}
.pkeyebrow{margin:0 0 4px;font-size:.72rem;font-weight:700;letter-spacing:.32em;text-transform:uppercase;color:var(--you)}
.picker h2{font-family:var(--serif);font-weight:800;font-size:clamp(1.8rem,7.5vw,2.8rem);line-height:1.08;margin:0;letter-spacing:-.01em}
.pksub{margin:6px 0 0;color:#B8B2D6;font-size:.98rem}
.pksub .ych{display:inline-block;margin-right:8px;padding:2px 10px;border-radius:999px;border:1.5px solid var(--pk);color:#fff;font-weight:700;font-size:.85rem;background:color-mix(in srgb,var(--pk) 22%,transparent)}
.kits{display:grid;gap:14px}
.kit{position:relative;overflow:hidden;text-align:left;border:1.5px solid rgba(237,230,214,.14);border-radius:16px;padding:16px 18px 16px;min-height:168px;display:flex;flex-direction:column;justify-content:flex-end;gap:8px;cursor:pointer;font:inherit;color:#fff;isolation:isolate;transition:transform .22s cubic-bezier(.2,.8,.2,1),border-color .22s,box-shadow .22s;opacity:0;transform:translateY(18px)}
.picker.show .kit{animation:kitin .55s calc(80ms + var(--i) * 70ms) cubic-bezier(.2,.8,.2,1) forwards}
@keyframes kitin{to{opacity:1;transform:none}}
.kit::after{content:"";position:absolute;inset:0;border-radius:inherit;background:linear-gradient(180deg,rgba(0,0,0,0) 30%,rgba(0,0,0,.45));pointer-events:none;z-index:0}
.kit>*{position:relative;z-index:1}
.kit .kg{position:absolute;right:-6px;top:-18px;z-index:0;font-family:var(--glyph);font-size:9.5rem;line-height:1;color:rgba(255,255,255,.1);transition:transform .6s cubic-bezier(.2,.8,.2,1),color .3s;pointer-events:none}
.kit .kd{display:flex;align-items:center;gap:8px;font-size:.72rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:rgba(255,255,255,.78)}
.kit .kd i{display:block;width:18px;height:1.5px;background:currentColor;opacity:.8}
.kit .kn{font-family:var(--serif);font-weight:800;font-size:2rem;line-height:1.05;letter-spacing:-.01em}
.kit .kt{display:flex;flex-wrap:wrap;gap:5px;font-size:.74rem;line-height:1.2}
.kit .kt em{font-style:normal;padding:3px 8px;border-radius:999px;background:rgba(0,0,0,.35);border:1px solid rgba(255,255,255,.18);color:rgba(255,255,255,.92)}
.kit:focus-visible{outline:3px solid #fff;outline-offset:3px}
@media (hover:hover){
  .kit:hover{transform:translateY(-4px) scale(1.015);border-color:rgba(255,255,255,.75);box-shadow:0 18px 40px rgba(0,0,0,.45),0 0 0 1px rgba(255,255,255,.2),0 0 36px var(--kc,rgba(255,255,255,.35))}
  .kit:hover .kg{transform:rotate(-12deg) scale(1.12);color:rgba(255,255,255,.2)}
}
.kit.hot{border-color:#fff;transform:scale(1.03)}
.kit.picked{box-shadow:0 0 0 3px #fff,0 0 48px var(--kc,rgba(255,255,255,.6));transform:scale(1.04)}
.kit.limitless{--kc:rgba(120,160,255,.7);background:radial-gradient(1.4px 1.4px at 14% 22%,#fff,transparent),radial-gradient(1.2px 1.2px at 62% 30%,#fff,transparent),radial-gradient(1px 1px at 82% 70%,#fff,transparent),radial-gradient(1.3px 1.3px at 34% 58%,#fff,transparent),radial-gradient(1px 1px at 91% 18%,#fff,transparent),radial-gradient(circle at 85% 40%,rgba(120,160,255,.6),transparent 52%),linear-gradient(135deg,#0A0C24,#1B2366)}
.kit.limitless .kn{text-shadow:0 0 14px rgba(140,170,255,.95)}
.kit.shrine{--kc:rgba(255,40,60,.65);background:linear-gradient(28deg,transparent 49.5%,rgba(255,220,220,.4) 50%,transparent 50.5%) 85% 20%/60% 60% no-repeat,linear-gradient(-22deg,transparent 49.5%,rgba(255,220,220,.32) 50%,transparent 50.5%) 95% 70%/55% 50% no-repeat,radial-gradient(ellipse at 70% 130%,#9A0B1A,transparent 65%),linear-gradient(160deg,#120203,#3E060E)}
.kit.shrine .kn{text-shadow:0 0 14px rgba(255,40,60,.9)}
.kit.copy{--kc:rgba(255,255,255,.45);background:radial-gradient(circle,rgba(255,255,255,.18) 1.1px,transparent 1.6px) 0 0/8px 8px,repeating-conic-gradient(from 0deg at 85% 30%,rgba(255,255,255,.12) 0 1.5deg,transparent 1.5deg 8deg),linear-gradient(160deg,#050505,#2A2A2A)}
.kit.copy .kn{text-shadow:2px 2px 0 #000,0 0 14px rgba(255,255,255,.6)}
.kit.geto{--kc:rgba(60,255,150,.55);background:repeating-conic-gradient(from 0deg at 82% 38%,rgba(110,70,255,.35) 0 8deg,rgba(60,255,150,.18) 8deg 16deg,transparent 16deg 34deg),radial-gradient(circle at 82% 38%,rgba(60,255,150,.35),transparent 40%),linear-gradient(160deg,#07040F,#1E1438)}
.kit.geto .kn{font-size:1.55rem;text-shadow:0 0 14px rgba(60,255,150,.8)}
.kit.shadows{--kc:rgba(150,110,255,.65);background:radial-gradient(circle at 80% 35%,rgba(255,220,140,.35),transparent 22%),repeating-radial-gradient(circle at 80% 130%,transparent 0 14px,rgba(150,110,255,.14) 14px 16px),linear-gradient(160deg,#05030A,#221A40)}
.kit.shadows .kn{text-shadow:0 0 14px rgba(150,110,255,.9)}
.kit.hakari{--kc:rgba(255,95,210,.65);background:radial-gradient(circle at 84% 30%,rgba(255,201,60,.55),transparent 22%),radial-gradient(circle,rgba(255,255,255,.45) 1.4px,transparent 2px) 0 0/22px 22px,radial-gradient(ellipse at 20% 120%,rgba(60,255,170,.45),transparent 55%),linear-gradient(160deg,#12061C,#5A0F4A)}
.kit.hakari .kn{font-size:1.55rem;text-shadow:0 0 14px rgba(255,95,210,.95)}
.pkrip{position:fixed;z-index:60;width:40px;height:40px;margin:-20px 0 0 -20px;border-radius:50%;pointer-events:none;border:3px solid var(--pk);box-shadow:0 0 30px var(--pk),inset 0 0 30px var(--pk);animation:pkrip .7s cubic-bezier(.1,.8,.3,1) forwards}
@keyframes pkrip{from{opacity:1;transform:scale(.4)}to{opacity:0;transform:scale(60)}}
.pkfoot{display:flex;justify-content:center;align-items:center;gap:18px;flex-wrap:wrap}
.picker .ghost{color:#EDE6D6;border-color:rgba(237,230,214,.35)}
.picker .ghost:disabled{opacity:.5;cursor:default}
.linkb{background:none;border:0;color:#B8B2D6;font:inherit;text-decoration:underline;cursor:pointer;padding:6px}
.diff{display:flex;align-items:center;gap:10px;color:#B8B2D6;font-size:.85rem;flex-wrap:wrap}
.seg{display:flex;border:1.5px solid rgba(237,230,214,.3);border-radius:999px;overflow:hidden;background:rgba(0,0,0,.25)}
.seg button{font:inherit;font-weight:700;font-size:.85rem;color:#EDE6D6;background:transparent;border:0;padding:7px 14px;cursor:pointer}
.seg button+button{border-left:1.5px solid rgba(237,230,214,.2)}
.seg button[aria-pressed="true"]{background:var(--you);color:#1E1A36}
.seg button:focus-visible{outline:3px solid #fff;outline-offset:-3px}

/* Multiplayer lobby and chat */
.mprow{display:flex;flex-direction:column;gap:12px}
.mprow[hidden],.mplobby[hidden]{display:none}
.mpor{display:flex;align-items:center;gap:12px;color:#B8B2D6;font-size:.8rem;letter-spacing:.14em;text-transform:uppercase}
.mpor::before,.mpor::after{content:"";flex:1;height:1px;background:rgba(237,230,214,.18)}
.mpctl{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:center;gap:10px 14px}
.mpfield{display:flex;flex-direction:column;gap:5px;font-size:.78rem;font-weight:700;color:#B8B2D6}
.mpfield input{font:inherit;font-weight:500;color:#EDE6D6;background:rgba(0,0,0,.3);border:1.5px solid rgba(237,230,214,.3);border-radius:10px;padding:9px 12px;min-width:150px}
.mpfield input:focus-visible{outline:3px solid #fff;outline-offset:2px}
.ghost.gold{color:#1E1A36;background:var(--you);border-color:var(--you)}
.mplobby{display:flex;flex-direction:column;align-items:center;gap:12px;padding:18px;border-radius:16px;border:1.5px solid rgba(237,230,214,.18);background:rgba(0,0,0,.3)}
.mpcode{display:flex;flex-direction:column;align-items:center;gap:2px;font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;color:#B8B2D6}
.mpcode b{font-family:var(--serif);font-size:clamp(2rem,9vw,3.2rem);letter-spacing:.18em;color:#fff;text-shadow:0 0 18px rgba(226,179,66,.6)}
.mplink{display:flex;gap:8px;width:100%;max-width:520px}
.mplink input{flex:1;font:inherit;font-size:.85rem;color:#EDE6D6;background:rgba(0,0,0,.35);border:1.5px solid rgba(237,230,214,.25);border-radius:10px;padding:8px 10px;min-width:0}
.mpstatus{margin:0;color:#B8B2D6;text-align:center}
.chat{display:flex;gap:6px;margin-top:6px}
.chat input{flex:1;min-width:0;font:inherit;font-size:.9rem;color:var(--ink);background:var(--panel);border:1.5px solid var(--edge);border-radius:999px;padding:7px 12px}
.chat button{font:inherit;font-weight:700;color:var(--ink);background:transparent;border:1.5px solid var(--edge);border-radius:999px;padding:7px 14px;cursor:pointer}
.chat[hidden]{display:none}

/* VS splash */
.vs{position:fixed;inset:0;z-index:55;display:none;overflow:hidden;background:#0B0918;color:#fff;cursor:pointer}
.vs.show{display:block}
.vside{position:absolute;top:0;bottom:0;width:58%;display:flex;flex-direction:column;justify-content:center;gap:6px;padding:0 8%}
.vside.l{left:0;clip-path:polygon(0 0,100% 0,82% 100%,0 100%);background:linear-gradient(135deg,#2A2550,#0B0918),var(--vb,#1C1935);animation:vsl .5s cubic-bezier(.2,.9,.2,1) both}
.vside.r{right:0;clip-path:polygon(18% 0,100% 0,100% 100%,0 100%);text-align:right;align-items:flex-end;animation:vsr .5s cubic-bezier(.2,.9,.2,1) both}
.vside.l{background:var(--vb)}.vside.r{background:var(--vb)}
@keyframes vsl{from{transform:translateX(-100%)}to{transform:none}}
@keyframes vsr{from{transform:translateX(100%)}to{transform:none}}
.vside .vk{font-size:.8rem;font-weight:700;letter-spacing:.3em;text-transform:uppercase;opacity:.85;animation:qin .3s .5s both}
.vside.l .vk{color:var(--you)}.vside.r .vk{color:#FF9AB8}
.vside .vg{font-family:var(--glyph);font-size:clamp(5rem,16vw,11rem);line-height:1;opacity:.22;position:absolute;top:50%;transform:translateY(-50%);pointer-events:none}
.vside.l .vg{left:6%}.vside.r .vg{right:6%}
.vside .vn{font-family:var(--serif);font-weight:800;font-size:clamp(1.8rem,5.4vw,4rem);line-height:1.05;text-shadow:0 2px 0 rgba(0,0,0,.5),0 0 24px var(--vc,rgba(255,255,255,.4));animation:vsn .5s .45s cubic-bezier(.2,1.4,.4,1) both}
@keyframes vsn{from{opacity:0;transform:translateY(14px) scale(.9)}to{opacity:1;transform:none}}
.vside .vd{font-size:.95rem;opacity:.85;animation:qin .3s .7s both}
.vmark{position:absolute;left:50%;top:50%;transform:translate(calc(-50% - .09em),-54%);font-family:var(--serif);font-weight:800;font-style:italic;font-size:clamp(4rem,14vw,10rem);line-height:1;color:#fff;text-shadow:0 0 30px rgba(255,255,255,.6),4px 4px 0 #000;animation:vsmark .45s .55s cubic-bezier(.2,1.6,.4,1) both}
@keyframes vsmark{from{opacity:0;transform:translate(calc(-50% - .09em),-54%) scale(3) rotate(-8deg)}to{opacity:1;transform:translate(calc(-50% - .09em),-54%) scale(1) rotate(-4deg)}}
.vs.out{animation:fadeout .4s ease-in forwards}

/* Movement and board feedback */
.tg.slide{z-index:6;transition:left var(--dur,240ms) cubic-bezier(.3,.6,.2,1),top var(--dur,240ms) cubic-bezier(.3,.6,.2,1);animation:hop var(--dur,240ms) ease-in-out;filter:drop-shadow(0 6px 6px rgba(0,0,0,.45))}
@keyframes hop{50%{scale:1.14}}
.tg.taken{animation:taken .38s ease-in forwards}
@keyframes taken{to{opacity:0;transform:translate(-50%,-50%) scale(.3) rotate(25deg);filter:blur(2px)}}
.sq.sel .pc{transform:translateY(-3px) scale(1.08);filter:drop-shadow(0 6px 5px rgba(0,0,0,.4));transition:transform .15s}
.sq.tgt::after{animation:dotin .2s ease-out both}
@keyframes dotin{from{opacity:0;transform:scale(.4)}}
.sq.chk{animation:chkp 1.1s ease-in-out infinite alternate}
@keyframes chkp{to{filter:brightness(1.35)}}
.foe.thinking .fseal{animation:think 1.1s ease-in-out infinite alternate}
@keyframes think{from{box-shadow:0 0 0 0 rgba(224,74,130,0)}to{box-shadow:0 0 0 6px rgba(224,74,130,.25),0 0 22px rgba(224,74,130,.7)}}
.say.pop{animation:saypop .35s cubic-bezier(.2,.9,.3,1)}
@keyframes saypop{from{opacity:0;transform:translateY(6px)}}

/* Cinematic framing for domains */
body{transition:background .6s}
.side,.tray{transition:filter .6s,opacity .6s}
body.cine{background:#07050F}
body.cine .side,body.cine .tray{filter:brightness(.28) saturate(.6)}
body.cine .wrap{box-shadow:0 0 0 2px rgba(255,255,255,.08),0 30px 80px rgba(0,0,0,.7)}
#flash{position:fixed;inset:0;z-index:120;pointer-events:none;background:#fff;opacity:0}
#flash.go{animation:bigflash .55s ease-out}
@keyframes bigflash{0%{opacity:.95}30%{opacity:.35}100%{opacity:0}}
body.quake main{animation:quake .6s cubic-bezier(.3,.1,.3,1)}
@keyframes quake{0%{translate:0 0}10%{translate:-10px 6px}22%{translate:9px -7px}34%{translate:-7px 5px}46%{translate:6px -4px}58%{translate:-4px 2px}70%{translate:3px -2px}84%{translate:-1px 1px}100%{translate:0 0}}

/* Toad tongue */
.beam.tongue{height:6px;border-radius:3px;background:linear-gradient(90deg,#FFB3D4,#FF5F9E);box-shadow:0 0 8px rgba(255,95,158,.8);transition:opacity .4s}
.beam.tongue.fade{opacity:0}

/* Malevolent Queen shot clock */
.clock{display:flex;align-items:center;gap:10px;min-height:1.6em;margin:-2px 0 2px;font-size:.78rem;font-weight:700;color:var(--foe);letter-spacing:.04em}
.clock[hidden]{display:none}
.clock .cl{text-transform:uppercase;font-size:.68rem;opacity:.85}
.clock i{flex:1;height:7px;border-radius:4px;background:linear-gradient(90deg,#FF3B4E,#FF9AB8);box-shadow:0 0 10px rgba(255,59,78,.75);transition:width .05s linear}
.clock .ct{min-width:3.2em;text-align:right;font-variant-numeric:tabular-nums;font-size:.95rem}
.clock.low{animation:clockp .4s steps(2) infinite}
@keyframes clockp{50%{color:#fff}}
.clock.low i{background:#fff;box-shadow:0 0 14px rgba(255,255,255,.9)}

/* Fan-game footer */
.fine{margin:14px 0 0;font-size:.72rem;line-height:1.5;color:var(--muted);opacity:.8}

/* Shot clock overlays the captured-pieces row so the board never moves */
.trayrow{position:relative}
.clock{position:absolute;inset:0;margin:0;min-height:0;background:var(--bg);z-index:2}

/* Domain pawns: hollow, translucent and blue so they never read as real pieces */
.sq .pc.dp,.board.dom-void.own-w .pc.dp.w,.board.dom-void.own-b .pc.dp.b,.board.dom-void.own-w .pc.dp.b,.board.dom-void.own-b .pc.dp.w{font-size:min(8.2vw,45px);opacity:.82;color:#9FC0FF;text-shadow:0 0 1px #DCE8FF,0 0 9px rgba(120,160,255,.95),0 0 18px rgba(80,120,255,.6);animation:dpp 2.4s ease-in-out infinite alternate}
.sq .pc.dp.b,.board.dom-void.own-b .pc.dp.b,.board.dom-void.own-w .pc.dp.b{color:#2B2F7A;text-shadow:0 0 1px #CFE0FF,0 0 9px rgba(160,190,255,.95),0 0 18px rgba(120,160,255,.6)}
@keyframes dpp{from{opacity:.62;transform:translateY(0)}to{opacity:.92;transform:translateY(-1px)}}

/* Sound toggle */
.ghost.snd{font-weight:500;color:var(--muted);padding:9px 14px}
.ghost.snd[aria-pressed="true"]{color:var(--ink)}

/* Technique ready pulse */
.pbtn.rdy{animation:rdy .9s ease-out}
@keyframes rdy{0%{box-shadow:0 0 0 0 rgba(226,179,66,.9)}100%{box-shadow:0 0 0 14px rgba(226,179,66,0)}}

/* Move log */
.log{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px;font-size:.84rem;color:var(--muted)}
.log:empty{display:none}
.log li{display:grid;grid-template-columns:3.2em 1fr;gap:8px;padding:5px 8px;border-radius:8px;background:var(--panel);animation:login .3s ease-out both}
@keyframes login{from{opacity:0;transform:translateX(-6px)}}
.log li b{font-weight:700;color:var(--ink)}
.log li.you b{color:var(--you)}.log li.foe b{color:var(--foe)}
.log li.tech{background:color-mix(in srgb,var(--panel) 70%,var(--you) 30%)}
.log li.foe.tech{background:color-mix(in srgb,var(--panel) 70%,var(--foe) 30%)}
.log li.tech span{color:var(--ink);font-weight:500}

/* Layout: stacked on phones, a fixed 16:9 canvas scaled to fit on wide screens */
.stage,.side{display:contents}
@media (min-width:900px) and (min-height:480px) and (orientation:landscape){
  html,body{height:100%;overflow:hidden}
  main{position:absolute;left:50%;top:50%;width:1152px;height:648px;max-width:none;margin:0;padding:20px 24px;
    display:grid;grid-template-columns:540px 1fr;grid-template-rows:auto minmax(0,1fr);column-gap:32px;row-gap:14px;
    transform:translate(-50%,-50%) scale(var(--fit,1));transform-origin:50% 50%}
  .stage{display:flex;flex-direction:column;justify-content:center;gap:8px;grid-column:1;grid-row:1/3}
  .side{display:flex;flex-direction:column;gap:12px;grid-column:2;grid-row:1}
  .side2{grid-row:2;min-height:0;overflow-y:auto;padding-right:6px;scrollbar-width:thin}
  .side2>*{flex-shrink:0}
  .side2 .log{flex-shrink:1;min-height:76px}
  .top h1{font-size:2.6rem;margin-top:0}
  .top p{font-size:1rem}
  .fseal{width:54px;height:54px;font-size:1.75rem}
  .say{font-size:1.2rem;min-height:3.2em}
  .status{text-align:left;font-size:1.05rem;margin:0}
  .powers{grid-template-columns:repeat(4,1fr);gap:8px}
  .pbtn{min-height:78px}
  .pbtn .ic{font-size:1.5rem}
  .pbtn .nm{font-size:.82rem}
  .row{justify-content:flex-start}
  .picker{display:none}
  .picker.show{display:flex}
  .pkin{zoom:var(--fit,1);max-width:1080px;width:1080px;margin:auto;gap:16px}
  .kits{grid-template-columns:repeat(3,1fr);gap:16px}
  .kit{min-height:150px;padding:14px 18px}
  .kit .kn{font-size:2.3rem}
  .kit.geto .kn,.kit.hakari .kn{font-size:1.75rem}
  .kit .kg{font-size:11rem}
  .picker h2{font-size:2.5rem}
  .log{max-height:220px;overflow-y:auto;scrollbar-width:thin}
}

body.pshake .sq .pc{animation:pshk .8s ease-out both}
body.pshake .sq:nth-child(2n) .pc{animation-delay:.04s}
body.pshake .sq:nth-child(3n) .pc{animation-delay:.09s;animation-duration:.95s}
body.pshake .sq:nth-child(5n) .pc{animation-delay:.02s;animation-duration:1s}
@keyframes pshk{0%{translate:0 0}8%{translate:-5px 4px}22%{translate:5px -4px}36%{translate:-4px 3px}50%{translate:4px -2px}64%{translate:-3px 2px}78%{translate:2px -1px}90%{translate:-1px 1px}100%{translate:0 0}}

/* Learned (copied) techniques */
.pbtn.learned{border-style:dashed}
.pbtn.learned .ic{color:#8E3BFF}

/* Luck meter and copy chips */
.ce.luck{margin-top:6px}
.ce.luck b{background:linear-gradient(90deg,#B8861C,#FFD54A);box-shadow:0 0 8px rgba(255,200,40,.6)}
.ce.luck .cel{color:#C99A2E}
.ce[hidden]{display:none}
.tray .chip.cp{border-color:#555;font-family:var(--glyph)}

/* Cursed energy bars */
.ce{position:relative;display:flex;align-items:center;gap:8px;font-size:.74rem;font-weight:700;letter-spacing:.04em;color:var(--muted)}
.ce .cel{text-transform:uppercase;font-size:.66rem}
.ce i{flex:1;height:8px;border-radius:4px;background:rgba(127,127,170,.22);overflow:hidden}
.ce b{display:block;height:100%;border-radius:4px;background:linear-gradient(90deg,#6B4FD1,#B48CFF);box-shadow:0 0 8px rgba(150,110,255,.6);transition:width .45s cubic-bezier(.2,.8,.2,1)}
.ce.foe{margin:4px 0 2px}
.ce.foe b{background:linear-gradient(90deg,#B8235A,#FF6B9A);box-shadow:0 0 8px rgba(224,74,130,.6)}
.ce.foe.unknown b{background:repeating-linear-gradient(90deg,rgba(184,35,90,.45) 0 6px,rgba(184,35,90,.15) 6px 12px);box-shadow:none;opacity:.6}
.ce.foe.unknown .cev{color:var(--muted)}
.ce.foe.eyes b{background:linear-gradient(90deg,#3B6BFF,#CFE0FF);box-shadow:0 0 12px rgba(120,160,255,.95);animation:eyesp .9s ease-in-out infinite alternate}
.ce.foe.eyes .cev{color:#8FB6FF;text-shadow:0 0 8px rgba(120,160,255,.9)}
.ce.foe.eyes::before{content:"SIX EYES";font-size:.6rem;letter-spacing:.14em;color:#8FB6FF}
.ce.seen .cel{color:#8FB6FF}
.ce.seen .cel::after{content:" · Enemy Six Eyes";letter-spacing:.06em;text-transform:none}
.ce.seen b{background:linear-gradient(90deg,#3B6BFF,#CFE0FF);box-shadow:0 0 12px rgba(120,160,255,.95);animation:eyesp .9s ease-in-out infinite alternate}
.ce.seen .cev{color:#8FB6FF;text-shadow:0 0 8px rgba(120,160,255,.9)}
@keyframes eyesp{to{filter:brightness(1.4)}}
.ce .cev{min-width:2.2em;text-align:right;color:var(--ink);font-variant-numeric:tabular-nums}

/* Domain shatter: shards, and the breaking summon */
.mshard{position:absolute;left:50%;top:50%;z-index:3;width:var(--w);height:var(--h);background:var(--bg);clip-path:var(--cp);box-shadow:inset 0 0 0 1px rgba(255,255,255,.55);opacity:0;animation:mshard 1.2s var(--d,0ms) cubic-bezier(.2,.6,.4,1) both}
@keyframes mshard{0%{opacity:0;transform:translate(calc(-50% + var(--ox)),calc(-50% + var(--oy))) scale(.5)}12%{opacity:1}100%{opacity:0;transform:translate(calc(-50% + var(--tx)),calc(-50% + var(--ty))) rotate(var(--r)) scale(1.1)}}


/* Mahoraga summoning: the void, the wedge of light, the ghost, the summoner, the hounds */
.anin{position:absolute;inset:0;overflow:hidden;background:#040506;animation:kshake .6s 3.2s both}
.anvoid{position:absolute;inset:0;background:radial-gradient(ellipse at 50% 85%,#0E1514 0%,#060809 45%,#020303 100%);animation:veil .4s ease-out both}
.anwedge{position:absolute;inset:0;clip-path:polygon(49% 0,51% 0,50.4% 86%,49.6% 86%);opacity:0;animation:anopen 1s 1.2s cubic-bezier(.2,.8,.2,1) forwards}
@keyframes anopen{0%{opacity:0;clip-path:polygon(49% 0,51% 0,50.4% 86%,49.6% 86%)}12%{opacity:1}100%{opacity:1;clip-path:polygon(33% 0,67% 0,56.5% 86%,43.5% 86%)}}
.anlight{position:absolute;inset:0;background:linear-gradient(180deg,#D9E8E0 0%,#A9C5B8 30%,#5F8172 65%,#1E302B 86%,#0A1210 100%)}
.anrays{position:absolute;left:50%;top:38%;width:160%;aspect-ratio:1;translate:-50% -50%;background:repeating-conic-gradient(from 0deg,rgba(255,255,255,.75) 0 .4deg,transparent .4deg 5deg);-webkit-mask:radial-gradient(circle,transparent 9%,#000 26%,transparent 60%);mask:radial-gradient(circle,transparent 9%,#000 26%,transparent 60%);opacity:0;animation:qin .6s 2.2s both,anray 40s 2.2s linear infinite}
@keyframes anray{from{rotate:0deg}to{rotate:360deg}}
.anmah{position:absolute;left:50%;top:54%;translate:-50% -56%;font-family:var(--glyph);font-size:min(48vw,330px);line-height:1;color:#EAF5EE;opacity:0;text-shadow:0 0 2px #fff,0 0 22px rgba(205,240,225,.95),0 0 60px rgba(120,180,160,.6);-webkit-text-stroke:1px rgba(255,255,255,.5);animation:anrise 1.2s 2s cubic-bezier(.2,.8,.25,1) both,anfloat 3.2s 3.2s ease-in-out infinite alternate}
@keyframes anrise{from{opacity:0;transform:translateY(16%) scale(.86)}to{opacity:1;transform:none}}
@keyframes anfloat{from{translate:-50% -56%}to{translate:-50% -58%}}
.anwheel{position:absolute;left:50%;bottom:96%;font-style:normal;font-size:.5em;line-height:1;color:#F6FFFA;text-shadow:0 0 2px #fff,0 0 18px rgba(205,240,225,.95),0 0 44px rgba(150,220,190,.6);translate:-50% 0;animation:anwheel 14s linear infinite}
@keyframes anwheel{from{rotate:0deg}to{rotate:360deg}}
.anmote{position:absolute;width:var(--s);height:var(--s);border-radius:50%;background:#F4FFF8;box-shadow:0 0 6px #DDF5EA;opacity:0;animation:anmote var(--t) var(--d) linear infinite}
@keyframes anmote{0%{opacity:0;transform:translateY(0)}15%{opacity:1}100%{opacity:0;transform:translateY(-120px)}}
.ansum{position:absolute;left:50%;bottom:9%;translate:-50% 0;font-family:var(--glyph);font-size:min(17vw,100px);line-height:1;color:#070A0B;text-shadow:0 0 1px rgba(150,200,185,.9),0 0 10px rgba(120,180,160,.45);opacity:0;animation:qin .5s .3s both}
.anbeast{position:absolute;bottom:14%;width:36%;height:auto;opacity:0;animation:qin .6s 1.9s both}
.anbeast.l{left:-3%}.anbeast.r{right:-3%;transform:scaleX(-1)}
.anbeast path{fill:#2A2F30}.anbeast .b2{fill:#1A1E1F}
.anorb{position:absolute;width:11%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,#fff 0 30%,rgba(255,255,255,.7) 50%,transparent 72%);filter:blur(1px);opacity:0;transform:scale(0);animation:anorb .5s var(--d,2.3s) cubic-bezier(.2,1.6,.4,1) forwards,anpulse 1.6s 2.8s ease-in-out infinite alternate}
@keyframes anorb{to{opacity:1;transform:scale(1)}}
@keyframes anpulse{from{filter:blur(1px) brightness(1)}to{filter:blur(2px) brightness(1.25)}}
.anorb.l.o1{left:5%;bottom:36%;--d:2.3s}.anorb.l.o2{left:20%;bottom:30%;width:8%;--d:2.45s}
.anorb.r.o1{right:5%;bottom:36%;--d:2.35s}.anorb.r.o2{right:20%;bottom:30%;width:8%;--d:2.5s}
.anflash{position:absolute;inset:0;background:radial-gradient(circle at 50% 35%,rgba(235,255,245,.95),rgba(150,200,180,.35) 45%,transparent 72%);opacity:0;animation:gflash .7s 3.15s ease-out both}
.ansub{position:absolute;left:50%;top:6%;width:92%;transform:translateX(-50%);text-align:center;font-family:var(--serif);font-weight:800;font-size:clamp(1.1rem,5vw,1.8rem);color:#EAF4EE;text-shadow:0 2px 10px rgba(0,0,0,.9),0 0 2px #000;animation:fadeout .4s 1.75s forwards}
.antitle{position:absolute;left:50%;bottom:3%;width:94%;transform:translateX(-50%);text-align:center;color:#F2FAF5;--kd:3.45s}
.antitle .ck{color:#B8D6C8;font-size:.8rem}
.anname{font-family:var(--serif);font-weight:800;font-size:clamp(2rem,10vw,3.6rem);line-height:1.05;text-shadow:0 0 18px rgba(200,240,220,.9),2px 2px 0 #000;animation:slam2 .45s 3.55s cubic-bezier(.2,1.5,.4,1) both}
.fx.mahs.out .anin{animation:fadeout .5s ease-in forwards}

/* Checkmate stopped: manga panel, the king in the foreground, Mahoraga looming behind */
.mkin{position:absolute;inset:0;overflow:hidden;background:#F3F0E8;animation:kshake .5s 2.55s both,kshake .4s 2.95s both}
.mkpaper{position:absolute;inset:0;background:#F3F0E8;animation:qin .3s both}
.mkhalf{position:absolute;inset:0;background:radial-gradient(circle,rgba(0,0,0,.26) 1px,transparent 1.6px) 0 0/6px 6px;opacity:.5}
.mkbld{position:absolute;bottom:0;background:repeating-linear-gradient(180deg,transparent 0 13px,rgba(0,0,0,.75) 13px 14px),repeating-linear-gradient(90deg,transparent 0 21px,rgba(0,0,0,.75) 21px 22px),#E6E2D8;box-shadow:0 0 0 3px #0A0A0A;opacity:0;animation:qin .4s .1s both}
.mkbld.l{left:-2%;width:23%;height:56%;transform:skewY(6deg);transform-origin:bottom right}
.mkbld.r{right:-3%;width:31%;height:82%;transform:skewY(-5deg);transform-origin:bottom left}
.mkshadow{position:absolute;left:29%;bottom:2%;width:20%;height:7%;translate:-50% 0;border-radius:50%;background:#0A0A0A;opacity:0;animation:mkshadow .8s .9s ease-out forwards}
@keyframes mkshadow{to{opacity:.8;width:70%}}
.mklines{position:absolute;inset:-25%;background:repeating-conic-gradient(from 0deg at 50% 40%,rgba(0,0,0,.85) 0 .45deg,transparent .45deg 4.5deg);-webkit-mask:radial-gradient(circle at 50% 40%,transparent 30%,#000 52%);mask:radial-gradient(circle at 50% 40%,transparent 30%,#000 52%);opacity:0;animation:mklines .4s 2.55s ease-out both}
@keyframes mklines{from{transform:scale(1.4);opacity:0}to{transform:none;opacity:.7}}
.mkmah{position:absolute;left:50%;top:-6%;width:88%;aspect-ratio:1;translate:-50% 0;opacity:0;transform:translateY(50%) scale(.55) rotate(-40deg);animation:mkloom 1.1s 1.5s cubic-bezier(.2,.8,.2,1) both,mkspin 30s 2.6s linear infinite;filter:drop-shadow(8px 10px 0 rgba(0,0,0,.18))}
@keyframes mkloom{from{opacity:0;transform:translateY(50%) scale(.55) rotate(-40deg)}to{opacity:1;transform:none}}
@keyframes mkspin{from{rotate:0deg}to{rotate:22.5deg}}
.mkmah #mkhatch line{stroke:#0A0A0A;stroke-width:1.1;opacity:.5}
.mkmah .rim{fill:#EDEAE1;stroke:#0A0A0A;stroke-width:14}
.mkmah .rimh{fill:url(#mkhatch);stroke:none}
.mkmah .rim2{fill:none;stroke:#0A0A0A;stroke-width:5}
.mkmah line{stroke:#0A0A0A;stroke-width:14;stroke-linecap:round}
.mkmah .tip{fill:#EDEAE1;stroke:#0A0A0A;stroke-width:7}
.mkmah .hub{fill:#0A0A0A;stroke:#EDEAE1;stroke-width:5}
.mkmah .hubh{fill:#EDEAE1}
.mkcape{position:absolute;bottom:0;background:#0A0A0A;opacity:0;animation:mkcape .5s 2.85s cubic-bezier(.2,.8,.2,1) forwards,mkflap 1.4s 3.4s ease-in-out infinite alternate}
.mkcape.r{left:26%;width:56%;height:30%;clip-path:polygon(0 30%,14% 48%,30% 34%,48% 62%,66% 50%,84% 78%,100% 70%,100% 100%,0 100%);transform-origin:0 100%}
.mkcape.l{left:0;width:28%;height:20%;clip-path:polygon(0 70%,16% 82%,36% 58%,58% 78%,80% 60%,100% 85%,100% 100%,0 100%);transform-origin:100% 100%;animation-delay:2.95s,3.5s}
@keyframes mkcape{from{opacity:0;transform:scaleX(.2)}to{opacity:1;transform:scaleX(1)}}
@keyframes mkflap{from{transform:skewX(0) scaleY(1)}to{transform:skewX(-4deg) scaleY(1.04)}}
.mkking{position:absolute;left:27%;bottom:4%;z-index:2;translate:-50% 0;font-family:var(--glyph);font-size:min(30vw,172px);line-height:1;opacity:0;animation:qin .4s .3s both}
.mkking.w{color:#F3F0E8;text-shadow:3px 0 0 #0A0A0A,-3px 0 0 #0A0A0A,0 3px 0 #0A0A0A,0 -3px 0 #0A0A0A,2px 2px 0 #0A0A0A,-2px -2px 0 #0A0A0A,2px -2px 0 #0A0A0A,-2px 2px 0 #0A0A0A}
.mkking.b{color:#0A0A0A;text-shadow:3px 0 0 #F3F0E8,-3px 0 0 #F3F0E8,0 3px 0 #F3F0E8,0 -3px 0 #F3F0E8,2px 2px 0 #F3F0E8,-2px -2px 0 #F3F0E8,2px -2px 0 #F3F0E8,-2px 2px 0 #F3F0E8}
.mkflash{position:absolute;inset:0;background:#fff;opacity:0;animation:gflash .4s 2.5s ease-out both}
.mktitle{position:absolute;right:4%;bottom:6%;z-index:3;display:flex;flex-direction:column;align-items:flex-end;font-family:var(--sans);font-weight:900;text-transform:uppercase;line-height:.92;color:#F3F0E8;text-shadow:3px 3px 0 #0A0A0A,-3px -3px 0 #0A0A0A,3px -3px 0 #0A0A0A,-3px 3px 0 #0A0A0A,0 0 14px rgba(0,0,0,.5)}
.mktitle span{display:block;opacity:0;transform:skewX(-8deg) scale(1.7);animation:mgword .3s var(--d,3s) cubic-bezier(.2,1.5,.4,1) forwards}
.mktitle .mka{font-size:clamp(2.4rem,11vw,4.2rem);--d:3.2s}
.mktitle .mkb{font-size:clamp(1.4rem,6.4vw,2.4rem);letter-spacing:.14em;color:#C4102B;text-shadow:2px 2px 0 #F3F0E8,-2px -2px 0 #F3F0E8,2px -2px 0 #F3F0E8,-2px 2px 0 #F3F0E8;--d:3.55s}
.fx.rise{background:#F3F0E8}
.fx.rise.out .mkin{animation:fadeout .5s ease-in forwards}

/* Manga-page summon: the domain-breaking Mahoraga */
.mgin{position:absolute;inset:0;overflow:hidden;background:#000;animation:kshake .55s 2.5s both,kshake .6s 3.5s both}
.mgblack{position:absolute;inset:0;background:#050505;animation:mgcut .06s 2s linear forwards}
@keyframes mgcut{from{opacity:1}to{opacity:0;visibility:hidden}}
.mginset{position:absolute;right:5%;top:8%;width:30%;height:54%;border:3px solid #fff;background:#111;display:grid;place-items:center;overflow:visible;animation:qin .25s both}
.mgwheel{font-family:var(--glyph);font-size:min(22vw,118px);line-height:1;color:#fff;animation:mgspin 1.6s .3s cubic-bezier(.2,.8,.3,1) both}
@keyframes mgspin{from{transform:rotate(-120deg)}to{transform:rotate(90deg)}}
.mgklnk{position:absolute;left:-14%;top:10%;padding:6px 14px;background:#fff;color:#000;font-family:var(--sans);font-weight:700;font-size:1.1rem;letter-spacing:.14em;clip-path:polygon(8% 0,92% 6%,100% 50%,90% 100%,10% 94%,0 50%);transform:rotate(-8deg);animation:slam2 .25s .35s cubic-bezier(.2,1.6,.4,1) both}
.mgchant{position:absolute;left:6%;top:26%;width:52%;margin:0;white-space:normal;font-family:var(--sans);font-weight:700;font-style:italic;font-size:clamp(1rem,4.4vw,1.6rem);line-height:1.35;letter-spacing:.06em;text-transform:uppercase;color:#fff}
.mgchant span{opacity:0;animation:qin .05s calc(.6s + var(--i) * 45ms) both}
.mgpage{position:absolute;inset:0;background:#F3F0E8;opacity:0;animation:qin .06s 2s linear both}
.mghalf{position:absolute;inset:0;background:radial-gradient(circle,rgba(0,0,0,.28) 1px,transparent 1.6px) 0 0/6px 6px;opacity:.55}
.mglines{position:absolute;inset:-25%;background:repeating-conic-gradient(from 0deg at 55% 88%,rgba(0,0,0,.9) 0 .5deg,transparent .5deg 4deg);-webkit-mask:radial-gradient(circle at 55% 88%,transparent 12%,#000 40%);mask:radial-gradient(circle at 55% 88%,transparent 12%,#000 40%);opacity:.75;animation:mglines .4s 2s ease-out both}
@keyframes mglines{from{transform:scale(1.4);opacity:0}to{transform:none;opacity:.75}}
.mgsplat{position:absolute;background:#0A0A0A;transform:rotate(var(--r)) scale(0);animation:mgsplat .32s var(--d) cubic-bezier(.2,1.3,.4,1) forwards}
@keyframes mgsplat{to{transform:rotate(var(--r)) scale(1)}}
.mgspeck{position:absolute;width:var(--s);height:var(--s);border-radius:50%;background:#000;opacity:0;animation:qin .08s var(--d) both}
.mgfig{position:absolute;left:33%;top:5%;width:44%;height:90%;transform:translateY(-125%) scale(1.2);animation:mgslam .42s 2.1s cubic-bezier(.55,0,1,.45) forwards,mgsettle .5s 2.52s cubic-bezier(.2,1.6,.4,1) both}
@keyframes mgslam{to{transform:translateY(0) scale(1.06)}}
@keyframes mgsettle{from{transform:translateY(0) scale(1.06,.94)}to{transform:translateY(0) scale(1)}}
.mgking{position:absolute;left:0;top:7%;width:100%;height:93%;overflow:visible;filter:drop-shadow(6px 8px 0 rgba(0,0,0,.25))}
.mgking .ink path{fill:#0B0B0B;stroke:#F3F0E8;stroke-width:4;stroke-linejoin:round;paint-order:stroke fill}
.mgking .ink .hi{stroke:#F3F0E8;stroke-width:3;stroke-linecap:round;opacity:.9}
.mgshadow{position:absolute;left:8%;bottom:1%;width:84%;height:5%;border-radius:50%;background:#000;opacity:0;animation:mgshadow .25s 2.5s ease-out forwards}
@keyframes mgshadow{to{opacity:.85}}
.mgcrack{position:absolute;left:55%;top:88%;z-index:2;height:3px;width:var(--l);transform-origin:0 50%;transform:rotate(var(--a)) scaleX(0);background:#0B0B0B;box-shadow:0 0 0 1px #F3F0E8;animation:mgcrack .25s 2.5s cubic-bezier(.2,.9,.3,1) forwards}
@keyframes mgcrack{to{transform:rotate(var(--a)) scaleX(1)}}
@keyframes mgsway{from{translate:0 0}to{translate:-1% 1.5%}}
.mgfig i{position:absolute;background:#0B0B0B;box-shadow:0 0 0 2px #0B0B0B}
.mgtorso{left:30%;top:22%;width:58%;height:60%;clip-path:polygon(18% 0,70% 6%,100% 30%,96% 72%,78% 100%,34% 100%,8% 80%,0 48%)}
.mgarm{left:0;top:40%;width:52%;height:52%;clip-path:polygon(60% 0,100% 18%,70% 60%,26% 100%,0 86%,24% 48%)}
.mgsash{left:46%;top:38%;width:26%;height:14%;background:#F3F0E8;box-shadow:none;transform:skewY(-18deg);clip-path:polygon(0 20%,100% 0,100% 80%,0 100%)}
.mghead{left:52%;top:4%;width:30%;height:26%;border-radius:46% 54% 50% 50%;clip-path:polygon(0 30%,30% 0,100% 10%,100% 80%,60% 100%,0 90%)}
.mghorn{left:66%;top:-6%;width:10px;height:26%;background:#0B0B0B;transform-origin:50% 100%;transform:rotate(-30deg) skewX(-10deg)}
.mghorn.r{left:76%;transform:rotate(14deg) skewX(10deg)}
.mgfw{position:absolute;left:50%;top:8.5%;transform:translateX(-50%);font-family:var(--glyph);font-size:min(17vw,92px);line-height:1;color:#F3F0E8;text-shadow:2px 0 0 #000,-2px 0 0 #000,0 2px 0 #000,0 -2px 0 #000;-webkit-text-stroke:2px #000;animation:mgwheelspin 1.4s 2.5s cubic-bezier(.2,.8,.3,1) both}
@keyframes mgwheelspin{from{transform:translateX(-50%) rotate(-150deg)}to{transform:translateX(-50%) rotate(60deg)}}
.mgt{position:absolute;display:flex;flex-direction:column;align-items:flex-start;gap:0;font-family:var(--sans);font-weight:900;text-transform:uppercase;line-height:.92;letter-spacing:-.01em;color:#0A0A0A;-webkit-text-stroke:0;text-shadow:3px 3px 0 #F3F0E8,-3px -3px 0 #F3F0E8,3px -3px 0 #F3F0E8,-3px 3px 0 #F3F0E8,0 0 14px rgba(243,240,232,.9)}
.mgt span{display:block;opacity:0;transform:skewX(-8deg) scale(1.7);animation:mgword .28s var(--d,2.6s) cubic-bezier(.2,1.5,.4,1) forwards}
@keyframes mgword{to{opacity:1;transform:skewX(-8deg) scale(1)}}
.mgt1{right:4%;top:9%;z-index:3;align-items:flex-end;font-size:clamp(1.3rem,6.2vw,2.4rem)}
.mgt1 span{--d:2.6s}.mgt1 span:nth-child(2){--d:2.68s}.mgt1 span:nth-child(3){--d:2.76s}
.mgt2{left:4%;bottom:8%;z-index:3;font-size:clamp(1.5rem,6.8vw,2.6rem)}
.mgt2 .big{font-size:clamp(2.2rem,10.4vw,4rem);color:#fff;text-shadow:3px 3px 0 #000,-3px -3px 0 #000,3px -3px 0 #000,-3px 3px 0 #000,0 0 16px rgba(0,0,0,.6)}
.mgwhite{position:absolute;inset:0;z-index:4;background:#fff;opacity:0;animation:gflash .5s 3.5s ease-out both}
.mgstamp{position:absolute;right:3%;top:52%;z-index:5;padding:6px 12px;border:3px solid #C4102B;color:#C4102B;background:rgba(243,240,232,.9);font-family:var(--sans);font-weight:700;font-size:clamp(.8rem,3.2vw,1.1rem);letter-spacing:.14em;text-transform:uppercase;transform:rotate(-6deg);animation:slam2 .35s 3.75s cubic-bezier(.2,1.6,.4,1) both}
.fx.manga2{background:#000}
.fx.manga2.out .mgin{animation:fadeout .5s ease-in forwards}

/* Chimera Shadow Garden: richer scene */
.cgsky{background:radial-gradient(ellipse at 50% 110%,#1E1638 0%,#0B0716 55%,#030208 100%)}
.cgstar{position:absolute;width:2px;height:2px;border-radius:50%;background:#CFC3FF;box-shadow:0 0 4px #B9A6FF;opacity:0;animation:twinkle 2.4s var(--d) ease-in-out infinite alternate,qin .6s both}
.cgmoon{position:absolute;right:11%;top:9%;width:min(24vw,130px);aspect-ratio:1/1;border-radius:50%;background:radial-gradient(circle at 38% 36%,#E6DFFF,#9C86F0 45%,#4A3390 75%,#2A1A5A);box-shadow:0 0 40px 10px rgba(150,110,255,.45),0 0 120px 30px rgba(120,80,255,.2);animation:qin .9s .15s both}
.cgmref{position:absolute;right:11%;top:56%;width:min(24vw,130px);height:min(10vw,56px);border-radius:50%;background:radial-gradient(ellipse,rgba(170,140,255,.5),transparent 70%);filter:blur(6px);animation:qin 1s 1.2s both,mref 3s 1.2s ease-in-out infinite alternate}
@keyframes mref{to{transform:scaleX(1.15) translateY(4px)}}
.cgflood{background:linear-gradient(180deg,rgba(5,3,10,0),rgba(8,5,18,.96) 22%,#020105 70%);animation:cgfl 1.5s .4s cubic-bezier(.3,.7,.3,1) forwards}
@keyframes cgfl{to{clip-path:inset(42% 0 0 0)}}
.cgsurf{position:absolute;left:0;right:0;top:42%;height:3px;background:linear-gradient(90deg,transparent,rgba(170,140,255,.85) 20%,rgba(220,205,255,.95) 50%,rgba(170,140,255,.85) 80%,transparent);box-shadow:0 0 14px 2px rgba(150,110,255,.8);opacity:0;animation:qin .4s 1.8s both,cgsurf 2.2s 1.8s ease-in-out infinite alternate}
@keyframes cgsurf{to{opacity:.55;transform:scaleX(.96)}}
.cgtend{bottom:40%;border-radius:8px 8px 0 0;width:14px;background:linear-gradient(0deg,#020105,#120A24 60%,rgba(150,110,255,.75));box-shadow:0 0 14px rgba(120,80,255,.55),inset 0 0 6px rgba(200,180,255,.25)}
.cgbig{position:absolute;left:50%;bottom:16%;font-family:var(--glyph);font-size:min(66vw,340px);line-height:1;color:#05030A;text-shadow:0 0 2px #CFC3FF,0 0 24px rgba(120,80,255,.95),0 0 60px rgba(90,50,200,.6);transform:translateX(-50%);clip-path:inset(100% 0 0 0);animation:cgbig 1.2s 1.9s cubic-bezier(.2,.8,.25,1) forwards,cgsway 3.2s 3.1s ease-in-out infinite alternate}
@keyframes cgbig{from{clip-path:inset(100% 0 0 0);transform:translate(-50%,18%)}to{clip-path:inset(0 0 0 0);transform:translate(-50%,0)}}
@keyframes cgsway{from{transform:translate(-50%,0) rotate(-1.5deg)}to{transform:translate(-50%,-6px) rotate(1.5deg)}}
.cgmist{position:absolute;left:0;right:0;bottom:0;height:40%;background:linear-gradient(0deg,rgba(80,50,160,.35),transparent);filter:blur(10px);animation:qin 1s 2.2s both}
.cgflash{animation-delay:3.3s}
.cgin{animation-delay:3.35s}
.cgtitle{--kd:3.5s}
.cgname{animation-delay:3.65s}

/* Toji: Heavenly Restriction */
.kit.toji{--kc:rgba(220,225,235,.55);background:repeating-linear-gradient(135deg,transparent 0 9px,rgba(255,255,255,.035) 9px 10px),linear-gradient(160deg,#07080A,#23262C 60%,#0B0C0F)}
.kit.toji .kn{color:#F1F3F6;text-shadow:0 0 14px rgba(255,255,255,.35)}
.kit.toji .kd{color:#C9CDD3}
.kit .kgs{right:-26px;top:-34px;width:200px;height:200px;color:rgba(255,255,255,.1)}
.kit .kgs svg{width:100%;height:100%}
.spear .ink *{stroke:currentColor;stroke-width:2.6;stroke-linejoin:round;stroke-linecap:round;fill:none}
.spear .bl{fill:currentColor;fill-opacity:.18}.spear .hd{fill:currentColor;fill-opacity:.35}
.picker.show .kit.toji.unlocked{animation:tojiin .9s cubic-bezier(.2,1.4,.3,1) both,unlockk 1.2s .5s ease-out}
@keyframes tojiin{0%{opacity:0;transform:scale(1.9) rotate(-8deg);filter:blur(14px)}55%{opacity:1;transform:scale(.95) rotate(1.5deg);filter:blur(0)}100%{opacity:1;transform:none}}
.picker.flash::after{content:"";position:fixed;inset:0;z-index:6;background:#fff;pointer-events:none;animation:gflash .7s .25s ease-out both}
@keyframes unlockk{0%{box-shadow:0 0 0 0 rgba(255,255,255,.9)}100%{box-shadow:0 0 0 30px rgba(255,255,255,0)}}
.pkright{display:flex;flex-direction:column;align-items:flex-end;gap:10px}
.coderow{display:flex;gap:8px;align-items:center;margin-top:0;font-size:.74rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.coderow input{font:inherit;padding:8px 10px;border-radius:8px;border:1.5px solid var(--edge);background:var(--panel);color:var(--ink);width:150px;letter-spacing:.14em;text-transform:uppercase}
.coderow button{font:inherit;padding:8px 14px;border-radius:999px;border:1.5px solid var(--edge);background:var(--panel);color:var(--ink);cursor:pointer}
.coderow.bad{animation:jitter .3s}
.pbtn.spear .ic,.pbtn.cloud .ic,.pbtn.chain .ic,.pbtn.sense .ic{color:#D9DEE5}
.pbtn.spear.on,.pbtn.cloud.on,.pbtn.chain.on,.pbtn.sense.on{box-shadow:0 0 0 2px #D9DEE5}
.sq.sense{box-shadow:inset 0 0 0 2px rgba(241,243,246,.85);animation:sensep 1.4s ease-in-out infinite alternate}
.sq.sense::after{content:"\25C9";position:absolute;right:3px;top:0;z-index:2;font-size:1rem;line-height:1;color:#F1F3F6;text-shadow:0 0 8px #fff,0 0 14px rgba(255,255,255,.7),0 1px 0 #000;pointer-events:none}
@keyframes sensep{from{box-shadow:inset 0 0 0 2px rgba(241,243,246,.85)}to{box-shadow:inset 0 0 0 3px rgba(241,243,246,.35),inset 0 0 14px rgba(255,255,255,.35)}}
.sq.sense.seen{box-shadow:inset 0 0 0 2px rgba(255,95,210,.9);animation:none}
.sq.sense.seen::after{color:#FF5FD2;text-shadow:0 0 8px rgba(255,95,210,.9),0 1px 0 #000}
.sq.cpick{box-shadow:inset 0 0 0 3px #FF5FD2}
.spearfx{width:calc(var(--sq) * 2.4);height:calc(var(--sq) * 2.4);transform:translate(-7%,-5%);color:#F1F3F6;filter:drop-shadow(0 0 8px rgba(255,255,255,.8));transition:left .38s cubic-bezier(.6,0,1,.6),top .38s cubic-bezier(.6,0,1,.6),opacity .25s}
.spearfx svg{width:100%;height:100%}
.spearfx.fade{opacity:0}
.chainfx{height:6px;transform-origin:0 50%;background:repeating-linear-gradient(90deg,#E8ECF2 0 8px,#5A6470 8px 10px,transparent 10px 14px);box-shadow:0 0 6px rgba(255,255,255,.6);transform:rotate(var(--a)) scaleX(0);transition:transform .28s cubic-bezier(.3,0,.7,1)}
.chainfx.on{transform:rotate(var(--a)) scaleX(1)}
.tcap.sense{color:#F1F3F6;text-shadow:0 0 12px #FF5FD2,0 0 26px rgba(255,95,210,.8),2px 2px 0 #000}
.rvin{position:absolute;inset:0;overflow:hidden;background:#000;animation:kshake .5s 2.2s both}
.rvgrain{position:absolute;inset:0;background:radial-gradient(circle,rgba(255,255,255,.12) 1px,transparent 1.4px) 0 0/4px 4px;opacity:.3}
.rvline{position:absolute;left:50%;top:50%;height:2px;width:0;background:#fff;transform:translate(-50%,-50%);box-shadow:0 0 12px #fff;animation:rvline .5s .2s cubic-bezier(.2,.8,.2,1) forwards}
@keyframes rvline{to{width:100%}}
.rvspear{position:absolute;left:50%;top:46%;width:64%;height:64%;transform:translate(-50%,-50%) rotate(-10deg);color:#F1F3F6;filter:drop-shadow(0 0 14px rgba(255,255,255,.5))}
.rvspear svg{width:100%;height:100%}
.rvspear .ink *{stroke-dasharray:420;stroke-dashoffset:420;animation:rvdraw 1.3s .55s ease-out forwards}
.rvspear .bl,.rvspear .hd{animation:rvdraw 1.3s .55s ease-out forwards,rvfill .5s 1.7s forwards;fill-opacity:0}
@keyframes rvdraw{to{stroke-dashoffset:0}}
@keyframes rvfill{to{fill-opacity:.3}}
.rveye{position:absolute;left:50%;top:9%;transform:translateX(-50%);white-space:nowrap;font-family:var(--sans);font-size:.78rem;letter-spacing:.28em;text-transform:uppercase;color:#9AA3AE;opacity:0;animation:qin .5s .9s forwards}
.rvtitle{position:absolute;left:50%;bottom:16%;transform:translateX(-50%);display:flex;gap:.35em;white-space:nowrap;font-family:var(--sans);font-weight:900;text-transform:uppercase;letter-spacing:.06em;font-size:clamp(1.7rem,8.4vw,3.4rem);color:#fff;text-shadow:0 0 18px rgba(255,255,255,.5),3px 3px 0 #000}
.rvtitle span{opacity:0;transform:skewX(-8deg) scale(1.7);animation:mgword .3s var(--d,2.2s) cubic-bezier(.2,1.5,.4,1) forwards}
.rvtitle .rvb{--d:2.45s;color:#C4102B;text-shadow:0 0 18px rgba(196,16,43,.6),3px 3px 0 #000}
.rvsub{position:absolute;left:50%;bottom:9%;transform:translateX(-50%);white-space:nowrap;font-family:var(--serif);font-size:clamp(.85rem,3.4vw,1.15rem);color:#C9CDD3;opacity:0;animation:qin .5s 2.9s forwards}
.fx.reveal{background:#000}.fx.reveal.out .rvin{animation:fadeout .5s ease-in forwards}
.sbin{position:absolute;inset:0;overflow:hidden;background:#000;animation:kshake .5s 2.5s both}
.sbdom{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;color:#fff;--kd:.4s;animation:qin .5s both,sbpulse 1.6s .5s ease-in-out infinite alternate}
@keyframes sbpulse{from{filter:brightness(1)}to{filter:brightness(1.25)}}
.sbname{font-family:var(--serif);font-weight:800;font-size:clamp(1.8rem,8vw,3rem);text-shadow:0 0 18px rgba(255,255,255,.6),2px 2px 0 #000;animation:slam2 .45s .6s cubic-bezier(.2,1.5,.4,1) both}
.sbcut{position:absolute;inset:-20%;z-index:2;background:#000;clip-path:polygon(0 100%,0 100%,0 100%);animation:sbcut .3s 2.2s ease-in forwards}
@keyframes sbcut{to{clip-path:polygon(0 100%,100% 0,100% 100%)}}
.sbspear{position:absolute;left:50%;top:50%;z-index:3;width:120%;height:120%;color:#F1F3F6;transform:translate(-170%,70%) rotate(-10deg);filter:drop-shadow(0 0 14px rgba(255,255,255,.7));animation:sbspear .32s 2.2s cubic-bezier(.6,0,1,.6) forwards}
.sbspear svg{width:100%;height:100%}
@keyframes sbspear{to{transform:translate(-50%,-50%) rotate(-10deg)}}
.sbwhite{position:absolute;inset:0;z-index:4;background:#fff;opacity:0;animation:gflash .5s 2.5s ease-out both}
.sbblack{position:absolute;inset:0;z-index:5;background:#000;opacity:0;animation:qin .4s 3s both}
.sbblack .rvtitle span{--d:3.4s}.sbblack .rvtitle .rvb{--d:3.65s}.sbblack .rvsub{animation-delay:4.1s}
.fx.spearbreak{background:#000}.fx.spearbreak.out .sbin{animation:fadeout .5s ease-in forwards}

/* batch: cost badge, cooldown fill, jackpot RCT, energy preview, log blackout, decoy king, forfeit */
.pbtn .cost{position:absolute;right:4px;top:3px;font-size:.6rem;font-weight:800;color:var(--muted);letter-spacing:.02em}
.pbtn .cost:not(:empty)::after{content:" CE";font-weight:600;opacity:.7}
.pbtn.cooling::after{content:"";position:absolute;left:0;right:0;bottom:0;height:calc(var(--cdp,0) * 100%);background:rgba(0,0,0,.42);pointer-events:none;transition:height .4s}
.pbtn.gold{box-shadow:0 0 0 2px #FFD54A,0 0 12px rgba(255,213,74,.6)}
.pbtn.gold .ic{color:#FFD54A}
.ce.preview b{background:linear-gradient(90deg,#B48CFF,#FF5FD2)!important;transition:width .2s}
.ce.preview .cev{color:#FF5FD2}
.log.shadowed li{background:#060308;color:transparent;user-select:none;-webkit-user-select:none;border:1px solid rgba(180,140,255,.25)}
.log.shadowed li *{color:transparent!important;text-shadow:none!important}
.sq.fakek .pc{opacity:.78;filter:drop-shadow(0 0 4px rgba(180,140,255,.9))}
.sq.fakek::before{content:"";position:absolute;inset:3px;border:1.5px dashed rgba(185,166,255,.85);border-radius:4px;pointer-events:none;z-index:2}
