/* Shared steel shuriken, crimson trails and seals, sized in reel coordinates. */
#line-layer{overflow:hidden}
#line-layer .ninja-line{fill:none;stroke-linejoin:round;stroke-linecap:round;animation:none}
#line-layer .line-winning.ninja-line{stroke:#f49f96;stroke-width:3;filter:none}
#line-layer .line-aura.ninja-line{stroke:#ad163d;stroke-width:12;opacity:.35;filter:none}
#line-layer .line-trail.ninja-line{stroke:#fff0d6;stroke-width:4;stroke-dasharray:none;filter:drop-shadow(0 0 4px #fa365f)}
#line-layer .line-remainder{stroke:#8d6d83;opacity:.25}
.line-number{fill:#edb3a7;font:700 21px Arial,sans-serif;paint-order:stroke;stroke:#190e1b;stroke-width:4}
.line-projectile{filter:drop-shadow(0 0 5px #d53958);pointer-events:none}
.line-impact-ring{fill:none;stroke:#ed6d79;stroke-width:2;stroke-dasharray:18 7}
#reels .cell.winning{background:radial-gradient(ellipse,#8e1e3b40,transparent 74%)}
#reels .cell.winning .symbol{animation:none;filter:drop-shadow(0 0 8px #ba344c99)}
#reels .cell.winning.line-pending{background:none}
#reels .cell.winning.line-pending .symbol{filter:brightness(.78)}
#reels .cell.line-struck .symbol{animation:ninja-symbol-hit .28s ease-out both}
#reels .cell.line-struck:before{content:'';position:absolute;inset:8px;border:1px solid #b95062;border-radius:17px;background:radial-gradient(ellipse,#a7244922,transparent 75%);box-shadow:inset 0 0 18px #7f183344;pointer-events:none}
#reels .cell.line-struck:after{content:'';position:absolute;inset:14px;border:3px solid transparent;border-top-color:#f5c1aa;border-bottom-color:#d93257;border-radius:50%;transform:rotate(-35deg);animation:ninja-hit-seal .28s ease-out both;pointer-events:none}
@keyframes ninja-symbol-hit{0%{transform:scale(.94);filter:brightness(1.3) drop-shadow(0 0 15px #e34866)}40%{transform:scale(1.075)}100%{transform:scale(1);filter:drop-shadow(0 0 8px #ba344c99)}}
@keyframes ninja-hit-seal{from{opacity:.9;transform:scale(.65) rotate(-55deg)}to{opacity:0;transform:scale(1.18) rotate(15deg)}}
#reels .spell-effect.summon{inset:6px;border:2px solid #d4acd9;box-shadow:0 0 18px #8d447f88;background:repeating-radial-gradient(circle,transparent 0 10px,#241525d9 11px 13px,#c38dbf9c 14px 15px,transparent 16px 22px);animation:rinnegan-push .52s ease-out both}
#reels .spell-effect.summon:before{inset:40%;border:0;background:#171221;border-radius:50%;box-shadow:0 0 0 3px #d2a3d3,0 0 16px #d599d7}
#reels .spell-effect.summon:after{inset:19%;border:1px solid #e0bde4;border-radius:50%;box-shadow:0 0 0 12px #9e6d9d22}
#reels .cell.casting .symbol{animation:rinnegan-charge var(--push-charge,420ms) ease-out both;filter:drop-shadow(0 0 16px #9f71ba)}
#reels .spell-effect.add{inset:13px;border-color:#d34a64;background:radial-gradient(circle,#a01c3f35,transparent 70%);box-shadow:0 0 18px #b72e4c66;animation:ninja-wild-seal .38s ease-out both}
#reels .spell-effect.add:before{inset:7%;border:0;background:url('../symbols-v1.4/mangekyo.svg') center/contain no-repeat;opacity:.65}
#reels .spell-effect.add:after{inset:23%;border-color:#eab5b0}
#spell-layer{overflow:hidden}
.push-projectile{animation:ninja-push-flight var(--push-flight) cubic-bezier(.2,.6,.5,1) both}
.push-presence{filter:drop-shadow(0 0 4px #d53958);animation:ninja-push-fade var(--push-impact) linear var(--push-flight) forwards}
.push-shuriken{animation:ninja-push-turn var(--push-flight) linear both,ninja-push-settle var(--push-impact) ease-out var(--push-flight) forwards}
.push-trail{animation:ninja-push-trail var(--push-flight) linear both}
.push-impact{fill:none;stroke:#ef8b8a;stroke-width:2;stroke-linecap:round;animation:ninja-push-impact var(--push-impact) ease-out var(--push-flight) both}
.push-impact circle{stroke:#dc3856;stroke-dasharray:17 8}
#reels .wild-extension{display:none}
@keyframes ninja-push-flight{from{transform:translateX(0)}to{transform:translateX(var(--push-distance))}}
@keyframes ninja-push-turn{from{transform:rotate(0deg) scale(.95)}to{transform:rotate(720deg) scale(.95)}}
@keyframes ninja-push-settle{from{transform:rotate(720deg) scale(.95)}to{transform:rotate(990deg) scale(.8)}}
@keyframes ninja-push-fade{0%,50%{opacity:1}100%{opacity:0}}
@keyframes ninja-push-trail{0%{opacity:0}15%,65%{opacity:.9}100%{opacity:0}}
@keyframes ninja-push-impact{0%{opacity:0;transform:scale(.6)}12%{opacity:.9}100%{opacity:0;transform:scale(1.4)}}
#reels .multiplier-orbit{border-color:#d6a5c8;background:radial-gradient(#4e203f,#231423dd);box-shadow:0 0 16px #bb477666;color:#f6d9e8}
@keyframes rinnegan-push{0%{opacity:0;transform:scale(.35)}28%{opacity:.95}100%{opacity:0;transform:scale(1.3)}}
@keyframes rinnegan-charge{35%{transform:scale(.94)}75%{transform:scale(1.06)}100%{transform:scale(1)}}
@keyframes ninja-wild-seal{from{opacity:.85;transform:scale(.6) rotate(-20deg)}to{opacity:0;transform:scale(1.15) rotate(30deg)}}
body.reduce-motion .line-projectile,body.reduce-motion .line-trail,body.reduce-motion .line-impact-ring,body.reduce-motion .cell.line-struck:after,body.reduce-motion .push-volley{display:none}
body.reduce-motion #reels .cell.line-struck .symbol{animation:none}
/* A five-match banner belongs above the reels, away from the blade's route. */
#stage #five-kind{top:24px;left:158px;right:auto;width:430px;height:51px;padding:13px 8px;border:0;border-top:1px solid #a94c60;border-bottom:1px solid #a94c60;background:linear-gradient(100deg,#321320ee,#701e36e6,#221220ee);clip-path:polygon(3% 0,100% 0,97% 100%,0 100%);color:#f9d2bc;font:700 23px/1 Arial,sans-serif;letter-spacing:2px;text-shadow:0 2px #260b16;animation:five-strike-in .3s ease-out both}
#stage:has(#five-kind:not([hidden])) .game-heading>div{visibility:hidden}
#stage.compact #five-kind{top:9px;left:118px;width:454px;height:45px;padding:12px 4px;font-size:21px}
#stage.landscape #five-kind{left:158px;top:24px;width:430px}
@keyframes five-strike-in{from{opacity:0;transform:translateX(-20px)}to{opacity:1;transform:translateX(0)}}
.ninjutsu-preview-link{display:block;margin:12px 0 0;padding:20px 22px;border:1px solid #694257;border-radius:12px;color:#edc4bf;text-align:center;text-decoration:none;font-size:23px;background:#2c1b29}.ninjutsu-preview-link:focus-visible{outline:3px solid #ed8996}
.preview-modes button[data-mode="push"]{grid-column:1/-1}
