/* v0.10.28: combat hits are local; character cards are special moves. */
.game-stage .ty28-hit{position:absolute;z-index:25;pointer-events:none!important;left:var(--ty28-x);top:var(--ty28-y);width:66px;height:66px;transform:translate(-50%,-50%);color:#fff;display:grid;place-items:center;filter:drop-shadow(0 0 9px var(--ty28-ink));animation:ty28-hit .42s ease-out both}
.game-stage .ty28-hit b{z-index:2;font-size:20px;font-style:italic;font-weight:1000;text-shadow:0 2px 8px #04091a,0 0 10px var(--ty28-ink)}
.game-stage .ty28-hit-ring{position:absolute;inset:5px;border:3px solid var(--ty28-ink);box-shadow:0 0 12px var(--ty28-ink),inset 0 0 10px var(--ty28-ink);border-radius:44% 56% 36% 64%;transform:rotate(-15deg)}
.game-stage .ty28-hit-bolt{position:absolute;inset:-7px;background:var(--ty28-ink);clip-path:polygon(40% 0,57% 24%,84% 12%,66% 44%,100% 63%,69% 68%,78% 100%,47% 78%,23% 94%,30% 62%,0 44%,36% 38%);opacity:.34;filter:blur(3px)}
.game-stage .ty28-hit-heavy{width:90px;height:90px;animation-duration:.54s}.game-stage .ty28-hit-heavy b{font-size:29px}
.game-stage .ty28-hit-stun .ty28-hit-ring{border-radius:10px;transform:rotate(45deg)}
@keyframes ty28-hit{0%{opacity:0;scale:.4;rotate:-30deg}20%{opacity:1;scale:1.2;rotate:8deg}58%{opacity:1;scale:.97;rotate:0deg}100%{opacity:0;scale:1.32;rotate:20deg}}
/* No redrawing the opponent's card: add a gentle danger state to public counts. */
.game-stage .ty28-last-card{--ty28-danger:#ff79cf;box-shadow:0 0 0 1px var(--ty28-danger),0 0 18px #ff64c94a,0 0 30px #6f70fb26!important;animation:ty28-danger-seal 2.2s ease-in-out infinite}
.game-stage .opponent.ty28-last-card .big-count{background:#522547!important;border:1px solid #ff86d8!important;color:#fff!important;text-shadow:0 0 12px #ff87ce;animation:ty28-danger-count 2.2s ease-in-out infinite}
.game-stage #my-player.ty28-last-card{outline:2px solid #ff79d4;outline-offset:2px}
.game-stage #hand.ty28-last-hand .hand-card-cell{filter:drop-shadow(0 0 11px #ff7bcba8)}
@keyframes ty28-danger-seal{0%,100%{box-shadow:0 0 0 1px #ff8cda88,0 0 10px #ff64c932,0 0 20px #6f70fb16}50%{box-shadow:0 0 0 2px #ff91e4,0 0 18px #ff64c977,0 0 28px #8766ff4d}}
@keyframes ty28-danger-count{0%,100%{filter:brightness(1)}50%{filter:brightness(1.42)}}
/* Character-move cinematic stays scoped to the game board and is noninteractive. */
.game-stage .ty28-special{position:absolute!important;inset:0;z-index:30!important;isolation:isolate;overflow:hidden;pointer-events:none!important;--ty28-special-color:#83effb;animation:ty28-special-enter .9s both}
.game-stage .ty28-special-shade{position:absolute;inset:0;background:radial-gradient(ellipse 54% 65% at 50% 44%,#0c1741dd,#020715c7 75%,#080d27a8);animation:ty28-special-dim .9s both}
.game-stage .ty28-special-geometry{position:absolute;left:50%;top:47%;width:min(54vh,380px);height:min(54vh,380px);transform:translate(-50%,-50%);filter:drop-shadow(0 0 24px var(--ty28-special-color));animation:ty28-special-spin .9s ease-out both}
.game-stage .ty28-special-geometry i{position:absolute;inset:0;clip-path:polygon(50% 1%,97% 90%,3% 90%);background:var(--ty28-special-color);opacity:.5}
.game-stage .ty28-special-geometry i:after{content:'';position:absolute;inset:4%;clip-path:polygon(50% 1%,97% 90%,3% 90%);background:#070d29}
.game-stage .ty28-special-geometry i:nth-child(2){inset:18%;transform:rotate(180deg);opacity:.85}
.game-stage .ty28-special-geometry i:nth-child(3){inset:32%;transform:rotate(0deg);opacity:.55}
.game-stage .ty28-special-energy{position:absolute;left:50%;top:45%;width:90%;height:7px;transform:translate(-50%,-50%) rotate(-7deg);background:linear-gradient(90deg,transparent,var(--ty28-special-color) 28%,#f2ffff 50%,var(--ty28-special-color) 72%,transparent);box-shadow:0 0 9px var(--ty28-special-color),0 0 26px var(--ty28-special-color);animation:ty28-special-swipe .9s both}
.game-stage .ty28-special-art-frame{position:absolute;left:31%;top:48%;width:clamp(92px,15vw,205px);height:clamp(106px,25vh,240px);transform:translate(-50%,-50%) rotate(-9deg);display:grid;place-items:center;isolation:isolate;filter:drop-shadow(0 0 17px var(--ty28-special-color));animation:ty28-art .9s cubic-bezier(.16,.8,.26,1) both}
.game-stage .ty28-special-art{height:100%;width:100%;object-fit:contain;filter:drop-shadow(0 3px 8px #000b)}
.game-stage .ty28-special-copy{position:absolute;left:54%;top:49%;width:44%;display:flex;flex-direction:column;align-items:flex-start;gap:4px;transform:translateY(-50%);text-shadow:0 4px 12px #000d,0 0 25px var(--ty28-special-color);animation:ty28-copy .9s cubic-bezier(.16,.8,.26,1) both}
.game-stage .ty28-special-copy small{font-size:clamp(9px,1vw,13px);font-weight:950;color:#c9e6ff;letter-spacing:.18em}
.game-stage .ty28-special-name{font-size:clamp(37px,7vw,94px);font-weight:1000;font-style:italic;color:#f6feff;letter-spacing:-.035em;line-height:.98;-webkit-text-stroke:1px var(--ty28-special-color)}
.game-stage .ty28-special-title{font-size:clamp(17px,3.1vw,44px);font-weight:1000;font-style:italic;line-height:1.04;color:var(--ty28-special-color);letter-spacing:.025em}
.game-stage .ty28-quack-glyph{display:flex;align-items:center;justify-content:center;gap:0;position:relative;width:100%;height:100%;filter:drop-shadow(0 0 17px var(--ty28-special-color))}
.game-stage .ty28-quack-glyph i{display:grid;place-items:center;width:40%;height:60%;background:linear-gradient(160deg,#133a5f,#22274d);border:3px solid #8ae5ff;border-radius:9px;box-shadow:0 0 10px #77e7ffad,inset 0 0 11px #73adff77;color:white;font-size:clamp(21px,3vw,40px);font-style:italic;font-weight:1000;transform:rotate(-17deg) translateX(28%);animation:ty28-quack-card .9s both}.game-stage .ty28-quack-glyph i:nth-child(2){border-color:#ff93a7;transform:translateY(-10%) rotate(3deg);z-index:2;animation-delay:.065s}.game-stage .ty28-quack-glyph i:last-child{border-color:#93ffb5;transform:rotate(20deg) translateX(-28%);animation-delay:.13s}
@keyframes ty28-quack-card{0%{opacity:0;scale:.5;filter:brightness(2)}22%,70%{opacity:1;scale:1.06;filter:brightness(1.3)}100%{opacity:0;scale:1.17;filter:none}}
.game-stage .ty28-special-fox .ty28-special-geometry{transform-origin:50% 50%}.game-stage .ty28-special-quack .ty28-special-geometry{filter:drop-shadow(0 0 20px #ffd86d)}
.game-stage .ty28-special-sai .ty28-special-geometry{animation-name:ty28-sci-lock}.game-stage .ty28-special-ai .ty28-special-geometry{animation-name:ty28-aya-shield}.game-stage .ty28-special-varik .ty28-special-geometry{animation-name:ty28-varik-lock}
.game-stage .ty28-special-lock{position:absolute;left:var(--ty28-x);top:var(--ty28-y);width:70px;height:70px;transform:translate(-50%,-50%);border:3px solid #a77bff;box-shadow:0 0 15px #b06bff;border-radius:50%;z-index:31;pointer-events:none!important;animation:ty28-lock .52s both}
.game-stage .ty28-special-lock:after{content:'◎';position:absolute;inset:0;display:grid;place-items:center;color:#e8d2ff;font-size:38px;text-shadow:0 0 9px #b77aff}
.game-stage .ty28-special-lock-varik{border-radius:8px;border-color:#e187f8;transform:translate(-50%,-50%) rotate(45deg)}.game-stage .ty28-special-lock-varik:after{content:'⌑'}
@keyframes ty28-lock{0%{opacity:0;scale:1.6}30%,75%{opacity:1;scale:1}100%{opacity:0;scale:.83}}
@keyframes ty28-special-enter{0%{opacity:0}14%,74%{opacity:1}100%{opacity:0}}
@keyframes ty28-special-dim{0%{opacity:0}18%,65%{opacity:1}100%{opacity:0}}
@keyframes ty28-special-spin{0%{opacity:0;scale:.4;rotate:-42deg}25%{opacity:1;scale:1.06;rotate:7deg}65%{scale:1;rotate:0}100%{opacity:0;scale:1.35;rotate:30deg}}
@keyframes ty28-sci-lock{0%{opacity:0;scale:1.8;rotate:36deg}32%,73%{opacity:1;scale:.9;rotate:0deg}100%{opacity:0;scale:.8;rotate:0deg}}
@keyframes ty28-aya-shield{0%{opacity:0;scale:.25}32%{opacity:1;scale:1.1}65%{scale:1}100%{opacity:0;scale:1.45}}
@keyframes ty28-varik-lock{0%{opacity:0;scale:1.7;rotate:90deg}32%,67%{opacity:.9;scale:1;rotate:0deg}100%{opacity:0;scale:.8;rotate:-90deg}}
@keyframes ty28-special-swipe{0%,10%{opacity:0;scale:.2 1}21%{opacity:.9;scale:1 1}40%{opacity:.6}100%{opacity:0;scale:1.25 1}}
@keyframes ty28-art{0%{opacity:0;scale:.4;rotate:-10deg}25%{opacity:1;scale:1.08;rotate:2deg}68%{opacity:1;scale:1;rotate:0deg}100%{opacity:0;scale:1.1;rotate:8deg}}
@keyframes ty28-copy{0%{opacity:0;translate:35px 0}22%{opacity:1;translate:0 0}72%{opacity:1}100%{opacity:0;translate:-10px 0}}
@media(max-width:900px) and (orientation:landscape){
 .game-stage .ty28-special-art-frame{left:33%;width:clamp(80px,13vw,135px);height:min(52vh,160px)}
 .game-stage .ty28-special-copy{left:53%;width:42%;gap:1px;top:45%}
 .game-stage .ty28-special-copy small{font-size:8px;letter-spacing:.08em}
 .game-stage .ty28-special-name{font-size:clamp(27px,10vh,54px)}
 .game-stage .ty28-special-title{font-size:clamp(13px,5vh,27px)}
 .game-stage .ty28-special-geometry{width:min(53vh,190px);height:min(53vh,190px);top:43%}
 .game-stage .ty28-quack-glyph{font-size:clamp(52px,18vh,90px)}
 .game-stage .ty28-hit{width:46px;height:46px}.game-stage .ty28-hit-heavy{width:58px;height:58px}
 .game-stage .ty28-hit b{font-size:16px}
}
@media(prefers-reduced-motion:reduce){
 .game-stage .ty28-last-card,.game-stage .opponent.ty28-last-card .big-count{animation:none!important}
 .game-stage .ty28-hit,.game-stage .ty28-special-geometry,.game-stage .ty28-special-energy,.game-stage .ty28-special-lock{display:none!important}
 .game-stage .ty28-special,.game-stage .ty28-special-shade,.game-stage .ty28-special-copy,.game-stage .ty28-special-art-frame{animation:none!important;opacity:1!important;scale:1!important;translate:none!important}
 .game-stage .ty28-special-shade{opacity:.72!important}
}
