/* v0.10.24 — Impact text uses the EXISTING status panel, never a new floating
   overlay at the deck; opening deal reveals the actual player hand one card
   at a time. Animation-only: no rules, input hit boxes or network changes. */
.game-stage .battle-message.ty24-impact-active{
 border-color:var(--ty24-border,#f58c9b)!important;
 background:linear-gradient(100deg,#121426ef,#272038f7,#121426ef)!important;
 box-shadow:0 0 0 1px var(--ty24-edge,#ea759b55),0 0 18px var(--ty24-glow,#ec699c55)!important;
 isolation:isolate;
}
.battle-message.ty24-impact-active > :not(.ty24-impact-callout){opacity:0!important;pointer-events:none!important}
.battle-message.ty24-impact-active[data-ty24-tone="attack"],
.battle-message.ty24-impact-active[data-ty24-tone="penalty"]{--ty24-border:#ff818f;--ty24-edge:#ff405766;--ty24-glow:#fa597955;--ty24-text:#ffe8ed}
.battle-message.ty24-impact-active[data-ty24-tone="fox"]{--ty24-border:#69f6ee;--ty24-edge:#23eee977;--ty24-glow:#44dec655;--ty24-text:#bcfffc}
.battle-message.ty24-impact-active[data-ty24-tone="quack"]{--ty24-border:#84deff;--ty24-edge:#60bfff66;--ty24-glow:#81aaff55;--ty24-text:#ebfaff}
.battle-message.ty24-impact-active[data-ty24-tone="shot"]{--ty24-border:#d2a1ff;--ty24-edge:#a878e366;--ty24-glow:#a678d455;--ty24-text:#f2ddff}
.battle-message.ty24-impact-active[data-ty24-tone="shield"]{--ty24-border:#8cecc8;--ty24-edge:#5ae4be66;--ty24-glow:#5dedbd55;--ty24-text:#d7fff1}
.battle-message.ty24-impact-active[data-ty24-tone="order"]{--ty24-border:#c7a0ff;--ty24-edge:#9e66f366;--ty24-glow:#9572dc55;--ty24-text:#ecdfff}
.battle-message.ty24-impact-active[data-ty24-tone="victory"]{--ty24-border:#ffe6a5;--ty24-edge:#f7cb6677;--ty24-glow:#ffc25d77;--ty24-text:#fff3d1}
.battle-message .ty24-impact-callout{
 position:absolute;inset:0;z-index:2;min-width:0;display:flex;align-items:center;justify-content:center;
 text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
 padding:0 7px;line-height:1;letter-spacing:.05em;
 font-size:clamp(12px,1.9vw,23px);font-weight:1000;color:var(--ty24-text,#fff);
 text-shadow:0 1px 2px #060414,0 0 13px var(--ty24-glow,#f66);
 pointer-events:none;animation:ty24-hit-copy .62s cubic-bezier(.12,.8,.29,1) both;
}
/* Keep the shake continuous while the center copy slams in; text itself stays
   inside the fixed status panel, not over the deck or action rail. */
@keyframes ty24-hit-copy{
 0%{opacity:0;scale:1.4 .8;filter:brightness(1.9)}
 12%{opacity:1;scale:.95 1.05}
 22%{opacity:1;scale:1 1;filter:brightness(1.25)}
 78%{opacity:1;filter:none}
 100%{opacity:0;scale:.98 1;filter:none}
}
@media(max-width:900px) and (orientation:landscape){
 .battle-message .ty24-impact-callout{font-size:clamp(10px,1.8vw,17px);padding:0 3px;letter-spacing:.015em}
}
/* Previous intro hid all seven real cards until the deal ended. In v0.10.24
   cards show up individually as their actual back reaches the player zone. */
.game-stage.ty23-dealing #hand{opacity:1!important;pointer-events:none!important}
.game-stage.ty23-dealing #hand .hand-card-cell{opacity:0;pointer-events:none!important}
.game-stage.ty23-dealing #hand .hand-card-cell.ty23-received{
 opacity:1;animation:ty24-hand-receive .3s cubic-bezier(.13,.75,.2,1) both;
}
.game-stage.ty23-dealing #hand .hand-card-cell.ty23-received::after{
 content:"";position:absolute;left:50%;bottom:0;width:var(--fan-card-width,96px);
 aspect-ratio:.685;transform:translateX(-50%);border-radius:9px;z-index:4;
 background:#111842 url('/typhoon-cards/back.webp') center/cover no-repeat;
 border:2px solid #9fc8f7;box-shadow:0 0 13px #69daffe0,0 7px 14px #070818aa;
 pointer-events:none;animation:ty24-card-turnover .3s ease-out both;
}
@keyframes ty24-hand-receive{
 0%{opacity:0;translate:0 24px;filter:brightness(2)}
 55%{opacity:1;translate:0 -4px;filter:brightness(1.15)}
 100%{opacity:1;translate:0 0;filter:none}
}
@keyframes ty24-card-turnover{
 0%,35%{opacity:1;scale:1 1}
 70%{opacity:1;scale:.05 1}
 71%,100%{opacity:0;scale:.05 1}
}
/* The old all-at-once hand pulse would flash the completed hand to 15% opacity.
   Leave the seven individual reveals on screen instead. */
.game-stage.ty23-deal-reveal #hand{animation:none!important;opacity:1!important;translate:none!important;filter:none!important}
@media(prefers-reduced-motion:reduce){
 .battle-message .ty24-impact-callout{animation:none!important;opacity:1!important;scale:1!important;filter:none!important}
 .game-stage.ty23-dealing #hand .hand-card-cell{opacity:1!important;animation:none!important}
 .game-stage.ty23-dealing #hand .hand-card-cell::after{display:none!important}
}
