/* Écran de lancement Shinsekai + règles critiques d'amorçage.
   Fichier externe : la CSP du site interdit les <style> inline. */
#loginView{display:none!important}
html[data-admin-route="true"] #loginView:not(.hidden){display:grid!important}

#startupSplash{
  position:fixed;inset:0;z-index:9999;display:grid;place-items:center;overflow:hidden;
  padding:env(safe-area-inset-top,0) env(safe-area-inset-right,0) env(safe-area-inset-bottom,0) env(safe-area-inset-left,0);
  background:#08090b;color:#f4efe6;
  transition:opacity .55s cubic-bezier(.2,.8,.2,1),transform .55s cubic-bezier(.2,.8,.2,1),visibility .55s;
}
#startupSplash.isHidden{opacity:0;visibility:hidden;pointer-events:none;transform:scale(1.04)}
/* Chargement rapide (navigateur, ou app déjà ouverte) : le splash n'apparaît que si ça traîne. */
html[data-splash="quick"] #startupSplash{opacity:0;animation:splashLate .25s ease .45s forwards}
html[data-splash="quick"] #startupSplash.isHidden{animation:none;opacity:0}
@keyframes splashLate{to{opacity:1}}

.splashAura{position:absolute;left:50%;top:44%;width:min(120vw,640px);aspect-ratio:1;translate:-50% -50%;border-radius:50%;
  background:radial-gradient(closest-side,rgba(196,59,47,.30),rgba(196,59,47,.08) 55%,transparent 72%);
  opacity:0;animation:splashAura 1.4s cubic-bezier(.2,.8,.2,1) .05s forwards}
.splashAura:after{content:"";position:absolute;inset:0;border-radius:50%;
  background:radial-gradient(closest-side,rgba(255,255,255,.05),transparent 60%);animation:splashBreath 3.2s ease-in-out 1.4s infinite}

.splashInner{position:relative;display:grid;justify-items:center;gap:0;padding:24px;text-align:center}
.splashLogoWrap{position:relative;display:grid;place-items:center;width:clamp(116px,34vw,168px);aspect-ratio:1116/1074}
.splashLogo{display:block;width:100%;height:auto;object-fit:contain;opacity:0;
  filter:drop-shadow(0 14px 34px rgba(0,0,0,.55)) drop-shadow(0 0 22px rgba(196,59,47,.35));
  transform:translateY(14px) scale(.86);
  animation:splashLogo .9s cubic-bezier(.2,.9,.25,1) .15s forwards,splashGlow 2.8s ease-in-out 1.2s infinite}
.splashRing{position:absolute;inset:-14%;border:1px solid rgba(196,59,47,.55);border-radius:50%;opacity:0;transform:scale(.6);
  animation:splashRipple 1.6s cubic-bezier(.2,.7,.2,1) .45s forwards}
.splashRing+.splashRing{animation-delay:.75s;border-color:rgba(244,239,230,.22)}

.splashName{display:flex;justify-content:center;margin:26px 0 0;font:600 clamp(28px,8.4vw,40px)/1 'Zen Old Mincho',Georgia,serif;letter-spacing:.14em;padding-left:.14em}
.splashName i{display:inline-block;font-style:normal;opacity:0;transform:translateY(16px);filter:blur(5px);
  animation:splashLetter .6s cubic-bezier(.2,.9,.25,1) forwards}
.splashName i:nth-child(1){animation-delay:.55s}.splashName i:nth-child(2){animation-delay:.61s}.splashName i:nth-child(3){animation-delay:.67s}
.splashName i:nth-child(4){animation-delay:.73s}.splashName i:nth-child(5){animation-delay:.79s}.splashName i:nth-child(6){animation-delay:.85s}
.splashName i:nth-child(7){animation-delay:.91s}.splashName i:nth-child(8){animation-delay:.97s}.splashName i:nth-child(9){animation-delay:1.03s}

.splashKicker{margin-top:14px;font:500 9.5px/1 'DM Mono',ui-monospace,monospace;letter-spacing:.5em;padding-left:.5em;color:#c96a5f;text-transform:uppercase;opacity:0;
  animation:splashKicker .9s cubic-bezier(.2,.8,.2,1) 1.1s forwards}
.splashBar{position:relative;width:min(150px,40vw);height:2px;margin-top:30px;border-radius:2px;background:rgba(244,239,230,.1);overflow:hidden;opacity:0;animation:splashFade .4s ease 1s forwards}
.splashBar span{position:absolute;inset:0;transform-origin:left center;transform:scaleX(0);border-radius:inherit;background:linear-gradient(90deg,#8e2924,#e15a4d);
  animation:splashBar 1.7s cubic-bezier(.45,.05,.25,1) .1s forwards}

@keyframes splashAura{from{opacity:0;transform:scale(.7)}to{opacity:1;transform:scale(1)}}
@keyframes splashBreath{50%{opacity:.35}}
@keyframes splashLogo{to{opacity:1;transform:none}}
@keyframes splashGlow{50%{filter:drop-shadow(0 14px 34px rgba(0,0,0,.55)) drop-shadow(0 0 34px rgba(196,59,47,.6))}}
@keyframes splashRipple{0%{opacity:.9;transform:scale(.6)}100%{opacity:0;transform:scale(1.5)}}
@keyframes splashLetter{to{opacity:1;transform:none;filter:none}}
@keyframes splashKicker{from{opacity:0;letter-spacing:.8em}to{opacity:1;letter-spacing:.5em}}
@keyframes splashFade{to{opacity:1}}
@keyframes splashBar{to{transform:scaleX(1)}}

@media(prefers-reduced-motion:reduce){
  .splashAura,.splashAura:after,.splashLogo,.splashRing,.splashName i,.splashKicker,.splashBar,.splashBar span{animation-duration:.01s!important;animation-delay:0s!important;animation-iteration-count:1!important}
  .splashRing{display:none}
  #startupSplash{transition-duration:.2s}
}
