/* SHINOBI v5.5: 2-second branded in-page splash. Android native launch screen is OS-controlled. */
.ninja-splash{position:fixed;inset:0;z-index:2147483647;display:grid;place-items:center;overflow:hidden;background:radial-gradient(ellipse at 50% 40%,#654024 0%,#201e2b 42%,#090e1b 75%,#050812 100%);color:#fff;pointer-events:auto;isolation:isolate}
.ninja-splash:before{content:"";position:absolute;inset:-30%;background:conic-gradient(from 10deg at 50% 45%,transparent 0deg,#f2a73c2a 32deg,transparent 66deg,#ed54221c 112deg,transparent 170deg,#efb95a2b 230deg,transparent 280deg);filter:blur(35px);animation:splashRotate 9s linear infinite}
.ninja-splash:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,#ffd27d12,transparent);background-size:200% 100%;animation:splashSweep 2s ease-out both}
.splash-rays{position:absolute;inset:0;background:repeating-linear-gradient(120deg,transparent 0 75px,#f7bd5d0d 76px 78px,transparent 80px 170px);opacity:.7;animation:splashSweep 2s ease-out both}
.splash-orb{position:absolute;border-radius:50%;filter:blur(36px);opacity:.6}.splash-orb-a{width:55vmax;height:55vmax;top:-25vmax;right:-24vmax;background:radial-gradient(circle,#ff9b3066,transparent 65%)}.splash-orb-b{width:45vmax;height:45vmax;bottom:-25vmax;left:-20vmax;background:radial-gradient(circle,#d32b2855,transparent 65%)}
.splash-center{position:relative;z-index:2;display:flex;flex-direction:column;align-items:center;justify-content:center;width:min(86vw,440px);animation:splashArrive .62s cubic-bezier(.18,.8,.22,1) both}
.splash-art{position:relative;width:min(76vw,360px);aspect-ratio:1;border-radius:27%;box-shadow:0 0 0 1px #ffd58a99,0 0 32px #ff9d3d66,0 0 100px #e45b2040;overflow:hidden;animation:splashPulse 1.5s ease-in-out infinite alternate}
.splash-art img{width:100%;height:100%;object-fit:cover;display:block}
.splash-title{font-size:clamp(26px,7vw,40px);font-weight:900;letter-spacing:.1em;margin-top:25px;color:#ffe0a3;text-shadow:0 0 12px #ff9e42,0 3px 20px #9b371e}
.splash-subtitle{font-size:clamp(10px,2.7vw,14px);font-weight:700;letter-spacing:.27em;color:#f9cf92;margin-top:6px}
.splash-progress{width:min(52vw,230px);height:4px;border-radius:10px;background:#ffffff30;overflow:hidden;margin-top:27px;box-shadow:0 0 14px #ffb04b44}
.splash-progress span{display:block;height:100%;width:0;background:linear-gradient(90deg,#ed5428,#ffdd83,#fff1be);border-radius:10px;box-shadow:0 0 12px #ffbf5e;animation:splashLoad 1.4s ease-in-out infinite alternate}
.splash-embers{position:absolute;inset:0;pointer-events:none}.splash-embers i{position:absolute;width:5px;height:9px;border-radius:80% 20% 70% 30%;background:#ffb54e;box-shadow:0 0 12px #ff7c28;animation:splashEmber 1.7s linear infinite;opacity:0}
.splash-embers i:nth-child(1){left:12%;top:80%;animation-delay:-.4s}.splash-embers i:nth-child(2){left:28%;top:60%;animation-delay:-1.1s}.splash-embers i:nth-child(3){left:78%;top:76%;animation-delay:-.8s}.splash-embers i:nth-child(4){left:87%;top:47%;animation-delay:-1.5s}.splash-embers i:nth-child(5){left:51%;top:91%;animation-delay:-.2s}.splash-embers i:nth-child(6){left:18%;top:36%;animation-delay:-1.3s}.splash-embers i:nth-child(7){left:71%;top:29%;animation-delay:-.6s}.splash-embers i:nth-child(8){left:39%;top:19%;animation-delay:-1.8s}
@keyframes splashArrive{from{opacity:0;transform:scale(.78) translateY(28px);filter:blur(9px)}to{opacity:1;transform:scale(1) translateY(0);filter:blur(0)}}
@keyframes splashExit{0%{opacity:1;visibility:visible}99%{opacity:0;visibility:visible}100%{opacity:0;visibility:hidden;pointer-events:none}}
@keyframes splashLoad{to{width:100%}}
@keyframes splashPulse{from{box-shadow:0 0 0 1px #ffd58a99,0 0 25px #ff9d3d66,0 0 60px #e45b2040}to{box-shadow:0 0 0 2px #ffe2aacc,0 0 48px #ff9d3d99,0 0 110px #e45b2055}}
@keyframes splashRotate{to{transform:rotate(360deg)}}
@keyframes splashSweep{from{background-position:100% 0}to{background-position:0 0}}
@keyframes splashEmber{0%{opacity:0;transform:translate(0,20px) rotate(0)}20%{opacity:.9}85%{opacity:.7}100%{opacity:0;transform:translate(24px,-140px) rotate(80deg)}}
@media(prefers-reduced-motion:reduce){.ninja-splash:before,.splash-art,.splash-embers i,.splash-rays{animation:none}.ninja-splash.is-closing{animation:splashExit .32s ease-in forwards}.splash-progress span{animation:none;width:65%}}

/* v5.6: transition triggered by app readiness, not a fixed two-second delay */
.ninja-splash.is-closing{animation:splashExit .32s ease-in forwards;pointer-events:none}

/* v5.8 mobile performance: composite-only splash effects; avoid per-frame blur/shadow repaints. */
.ninja-splash:before{filter:none;opacity:.32;animation:splashRotate 18s linear infinite;will-change:transform}
.ninja-splash:after,.splash-rays{animation:none}
.splash-orb{filter:none;opacity:.35}
.splash-art{animation:splashFloat 3s ease-in-out infinite alternate;box-shadow:0 0 0 2px #ffd58a99,0 0 25px #ff9d3d44;will-change:transform}
.splash-center{animation:splashArriveLite .5s ease-out both}
.splash-embers i{box-shadow:none;animation-duration:2.8s}
.splash-progress span{animation:splashProgress3 3s linear both;will-change:transform;width:100%;transform-origin:left center}
.ninja-splash.is-closing{animation:splashExit .24s ease-out forwards;will-change:opacity}
@keyframes splashFloat{from{transform:translate3d(0,0,0)}to{transform:translate3d(0,-5px,0)}}
@keyframes splashArriveLite{from{opacity:0;transform:translate3d(0,12px,0)}to{opacity:1;transform:translate3d(0,0,0)}}
@keyframes splashProgress3{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@media(prefers-reduced-motion:reduce){.splash-art,.splash-embers i,.ninja-splash:before{animation:none}.splash-progress span{animation:none;transform:scaleX(1)}}
