/* ══════════════════════════════
   PAGE LOADER
══════════════════════════════ */
#page-loader{position:fixed;inset:0;z-index:9999;background:#111e2b;display:flex;align-items:center;justify-content:center;transition:opacity .7s cubic-bezier(.4,0,.2,1),visibility .7s;}
#page-loader.done{opacity:0;visibility:hidden;pointer-events:none;}
.pl-inner{display:flex;flex-direction:column;align-items:center;gap:32px;}
.pl-logo{font-family:'Montserrat','Noto Sans JP',sans-serif;font-size:.72rem;font-weight:500;letter-spacing:.32em;color:rgba(255,255,255,.7);animation:plPulse 2s ease-in-out infinite;}
@keyframes plPulse{0%,100%{opacity:.4;}50%{opacity:.9;}}
.pl-cross{position:relative;width:36px;height:36px;}
.pl-cross::before,.pl-cross::after{content:'';position:absolute;background:rgba(142,197,234,.55);border-radius:2px;}
.pl-cross::before{width:1px;height:100%;left:50%;transform:translateX(-50%);animation:plCross .9s ease-in-out infinite alternate;}
.pl-cross::after{height:1px;width:100%;top:50%;transform:translateY(-50%);animation:plCross .9s ease-in-out infinite alternate;}
@keyframes plCross{0%{opacity:.3;}100%{opacity:1;}}
.pl-bar-wrap{width:160px;height:1px;background:rgba(142,197,234,.15);overflow:hidden;border-radius:1px;}
.pl-bar{height:100%;width:0;background:linear-gradient(90deg,rgba(142,197,234,.4),rgba(142,197,234,.9));animation:plBar 1.8s cubic-bezier(.4,0,.2,1) forwards;}
@keyframes plBar{0%{width:0;}70%{width:85%;}100%{width:100%;}}

/* ══════════════════════════════
   FV IMAGE LOADER
══════════════════════════════ */
.fv-loader{position:absolute;bottom:0;left:0;right:0;height:2px;background:rgba(142,197,234,.12);z-index:20;opacity:1;transition:opacity .6s ease;}
.fv-loader.done{opacity:0;pointer-events:none;}
.fv-loader-bar{height:100%;width:0%;background:linear-gradient(90deg,rgba(142,197,234,.5),rgba(255,255,255,.9),rgba(142,197,234,.7));background-size:300% 100%;box-shadow:0 0 8px rgba(142,197,234,.6);transition:width .35s cubic-bezier(.4,0,.2,1);animation:fvShimmer 1.8s linear infinite;}
@keyframes fvShimmer{0%{background-position:300% 0;}100%{background-position:-300% 0;}}
