/* Shinobi 5.1 — purely decorative animation; no changes to data or inputs. */
body{--motion-particle:#80e5a2;--motion-aura:#59e6a7}
body[data-theme="akatsuki"]{--motion-particle:#ff5276;--motion-aura:#e62453}
body[data-theme="chibi"]{--motion-particle:#ff9bcd;--motion-aura:#ff72b5}
body[data-theme="hokage"]{--motion-particle:#ffd66b;--motion-aura:#ff9d24}
/* Shimmer around the illustration and animated depth in the original banner. */
body .hero{isolation:isolate}
body .hero-art{animation:shinobiBreath 12s ease-in-out infinite alternate!important;transform-origin:50% 52%!important;will-change:transform}
body .hero::before{content:"";position:absolute;inset:-35%;z-index:2;pointer-events:none;background:radial-gradient(ellipse at 65% 50%,transparent 26%,color-mix(in srgb,var(--motion-aura),transparent 80%) 70%,transparent 75%);animation:shinobiAura 10s ease-in-out infinite alternate;mix-blend-mode:screen}
body .hero::after{content:"";position:absolute;inset:0;z-index:3;pointer-events:none;background:linear-gradient(110deg,transparent 35%,#ffffff00 45%,#ffffff38 50%,#ffffff00 55%,transparent 65%);background-size:240% 100%;animation:shinobiShine 13s ease-in-out infinite}
body .anime-atmosphere{z-index:4!important;pointer-events:none}
body .anime-atmosphere i{box-shadow:0 0 9px var(--motion-aura);animation-duration:7s!important}
body[data-theme="akatsuki"] .hero::before{background:radial-gradient(ellipse at 70% 35%,#e4225140,transparent 65%)}
body[data-theme="chibi"] .anime-atmosphere i{width:12px;height:10px;border-radius:65% 20% 65% 20%;box-shadow:0 0 12px #ff8fc8}
body[data-theme="hokage"] .hero::before{background:radial-gradient(ellipse at 75% 70%,#ffb02b45,transparent 66%)}
/* Living theme and language selectors, but keep controls legible and tappable. */
body .ultimate-selector{position:relative;isolation:isolate;overflow:hidden;animation:shinobiBorderPulse 5s ease-in-out infinite}
body .ultimate-selector::before{content:"";position:absolute;inset:-100% -45%;z-index:-1;pointer-events:none;background:linear-gradient(110deg,transparent 43%,#ffffff25 50%,transparent 57%);transform:translateX(-65%) rotate(9deg);animation:shinobiSelectorSweep 7s ease-in-out infinite}
body .ultimate-menu-choice.is-selected{animation:shinobiBorderPulse 4s ease-in-out infinite}
body .ninja-mark{animation:shinobiMarkGlow 5s ease-in-out infinite}
@keyframes shinobiBreath{0%{transform:scale(1)}100%{transform:scale(1.045)}}
@keyframes shinobiAura{from{transform:translate(-2%,1%);opacity:.45}to{transform:translate(3%,-2%);opacity:.85}}
@keyframes shinobiShine{0%,24%{background-position:180% 0}47%,100%{background-position:-150% 0}}
@keyframes shinobiSelectorSweep{0%,28%{transform:translateX(-80%) rotate(9deg)}55%,100%{transform:translateX(80%) rotate(9deg)}}
@keyframes shinobiBorderPulse{0%,100%{filter:brightness(1)}50%{filter:brightness(1.12)}}
@keyframes shinobiMarkGlow{0%,100%{filter:drop-shadow(0 0 3px var(--motion-aura))}50%{filter:drop-shadow(0 0 13px var(--motion-aura))}}
@media(prefers-reduced-motion:reduce){body .hero-art,body .hero::before,body .hero::after,body .ultimate-selector,body .ultimate-selector::before,body .ultimate-menu-choice.is-selected,body .ninja-mark{animation:none!important;will-change:auto!important}}
/* v5.2 — lively but composited effects. The inner white breathing border is removed. */
body .hero::before{display:none!important;content:none!important;animation:none!important}
body .hero-art{animation:none!important;transform:none!important;will-change:auto!important}
body .hero::after{display:none!important;animation:none!important}
body .hero{background-clip:padding-box;animation:shinobiHeroGlow 4.2s ease-in-out infinite!important}
@keyframes shinobiHeroGlow{0%,100%{filter:drop-shadow(0 0 3px var(--motion-aura))}50%{filter:drop-shadow(0 0 12px var(--motion-aura))}}
/* More particles without layout/repaint-heavy resizing of the banner image. */
body .anime-atmosphere i{opacity:.86!important;width:11px!important;height:7px!important;border-radius:85% 0 85% 5%!important;animation:shinobiParticleFlight 4.4s linear infinite!important;will-change:transform,opacity;box-shadow:0 0 7px var(--motion-aura)!important}
body .anime-atmosphere i:nth-child(2n){animation-duration:6.1s!important;animation-direction:reverse!important}
body .anime-atmosphere i:nth-child(3n){animation-duration:3.5s!important}
@keyframes shinobiParticleFlight{0%{transform:translate3d(-35px,45px,0) rotate(-45deg) scale(.6);opacity:0}15%{opacity:.95}80%{opacity:.8}100%{transform:translate3d(85px,-80px,0) rotate(220deg) scale(1.25);opacity:0}}
body[data-theme="akatsuki"] .anime-atmosphere i{border-radius:50% 10% 50% 10%!important;background:#ff3157!important;box-shadow:0 0 11px #ff3157!important}
body[data-theme="chibi"] .anime-atmosphere i{background:#ff9dcf!important;width:13px!important;height:10px!important}
body[data-theme="hokage"] .anime-atmosphere i{background:#ffb92b!important;box-shadow:0 0 13px #ff8a16!important}
body .quick-tabs{animation:shinobiTabGlow 5s ease-in-out infinite}
@keyframes shinobiTabGlow{0%,100%{filter:brightness(1)}50%{filter:brightness(1.08)}}
body .ultimate-selector:active,body .quick-tabs a:active,body .toolbar .btn:active{transform:scale(.975);transition:transform .12s ease}
@media(prefers-reduced-motion:reduce){body .hero,body .anime-atmosphere i,body .quick-tabs{animation:none!important;filter:none!important;will-change:auto!important}}
