/* NUSPM V2.5 cinematic entrance — composited transforms only. */
.splash-cinematic{
  --splash-duration:5000ms;
  position:fixed;z-index:99999;inset:0;display:grid;place-items:center;overflow:hidden;
  background:radial-gradient(circle at 50% 43%,#0b5367 0,#062f42 24%,#041f2e 58%,#031722 100%);
  color:#fff;perspective:1200px;isolation:isolate;
  transition:opacity .72s cubic-bezier(.22,1,.36,1),visibility .72s;
}
.splash-cinematic::before{content:"";position:absolute;inset:-20%;background:radial-gradient(circle,rgb(75 214 229/.13) 0 1px,transparent 1.5px);background-size:31px 31px;opacity:.22;transform:translate3d(0,0,-1px);mask-image:radial-gradient(circle,#000,transparent 68%)}
.splash-atmosphere,.splash-atmosphere>span{position:absolute;inset:0;pointer-events:none}
.splash-horizon{top:53%!important;bottom:auto!important;height:1px;background:linear-gradient(90deg,transparent,rgb(169 231 239/.4),transparent);box-shadow:0 0 34px rgb(75 205 223/.25);transform:scaleX(0);animation:splash-horizon var(--splash-duration) cubic-bezier(.22,1,.36,1) both}
.splash-radar{inset:auto!important;left:50%!important;top:45%!important;width:min(88vw,760px);height:min(88vw,760px);border:1px solid rgb(144 224 235/.12);border-radius:50%;transform:translate(-50%,-50%) scale(.18);opacity:0;box-shadow:inset 0 0 0 16vw rgb(3 24 35/.025);animation:splash-radar var(--splash-duration) cubic-bezier(.2,.72,.2,1) both}
.splash-radar::before,.splash-radar::after{content:"";position:absolute;inset:15%;border:1px solid rgb(144 224 235/.1);border-radius:inherit}.splash-radar::after{inset:34%}
.splash-wave{top:auto!important;height:27%;border-top:1px solid rgb(187 240 246/.2);border-radius:50% 50% 0 0/22% 22% 0 0;filter:drop-shadow(0 -7px 18px rgb(72 201 216/.08));opacity:0;animation:splash-wave 3.8s ease-in-out .45s both}
.splash-wave-one{bottom:-18%!important;left:-12%!important;right:-12%!important}.splash-wave-two{bottom:-21%!important;left:-20%!important;right:-20%!important;animation-delay:.8s;animation-direction:alternate-reverse}
.splash-depth{position:relative;display:grid;place-items:center;width:min(74vw,530px);height:min(74vw,530px)}
.splash-mark{position:relative;z-index:2;width:clamp(118px,14vw,174px);aspect-ratio:1;opacity:0;transform:translateY(14px) scale(.9);animation:splash-mark var(--splash-duration) cubic-bezier(.16,1,.3,1) both}
.splash-mark img{position:relative;width:100%;height:100%;padding:0;border:0;border-radius:50%;background:#fff;object-fit:contain;box-shadow:0 1px 0 rgb(255 255 255/.85),0 24px 80px rgb(0 0 0/.36),0 0 70px rgb(116 224 233/.18)}
.splash-glow{position:absolute;z-index:-1;inset:-30%;border-radius:50%;background:radial-gradient(circle,rgb(120 229 239/.27),transparent 62%);filter:blur(12px);animation:splash-pulse 2.6s ease-in-out infinite}
.splash-title{position:absolute;z-index:3;left:50%;top:calc(50% + 118px);display:grid;justify-items:center;gap:9px;width:min(440px,calc(100% - 40px));text-align:center;opacity:0;filter:blur(8px);transform:translateX(-50%) scale(.965);animation:splash-copy var(--splash-duration) cubic-bezier(.22,1,.36,1) both;pointer-events:none}
.splash-title::before{content:"";width:42px;height:1px;margin-bottom:2px;background:linear-gradient(90deg,transparent,var(--signal),transparent)}.splash-title strong{font:750 clamp(19px,2vw,27px)/1 Arial,sans-serif;letter-spacing:.25em;text-indent:.25em}.splash-title span{font-size:9px;font-weight:650;line-height:1.55;letter-spacing:.11em;text-transform:uppercase;color:#c9dce1}
.splash-return .splash-mark{animation:splash-return-mark var(--splash-duration) cubic-bezier(.22,1,.36,1) both}
.splash-return .splash-title{animation:splash-return-copy var(--splash-duration) cubic-bezier(.22,1,.36,1) both}
.splash-status{position:absolute;z-index:3;left:50%;bottom:clamp(34px,7vh,72px);width:min(220px,calc(100% - 92px));transform:translateX(-50%);opacity:0;animation:splash-status var(--splash-duration) ease both}
.splash-progress{display:block;width:100%;height:1px;background:rgb(255 255 255/.12);overflow:hidden}.splash-progress i{display:block;width:100%;height:100%;background:linear-gradient(90deg,transparent,#d9f6f5 55%,var(--signal));transform:scaleX(0);transform-origin:left;animation:splash-progress calc(var(--splash-duration) - 800ms) cubic-bezier(.22,.75,.2,1) .45s both}
.splash-skip{position:absolute;z-index:4;top:clamp(18px,4vh,36px);right:clamp(18px,4vw,48px);padding:8px 0;border:0;border-bottom:1px solid rgb(255 255 255/.28);background:transparent;color:#8facb5;font-size:8px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;cursor:pointer;transition:color .2s,border-color .2s}.splash-skip:hover,.splash-skip:focus{color:#fff;border-color:var(--signal)}
.splash-exit .splash-depth{opacity:0;transform:translateY(-8px) scale(.98);transition:opacity .68s ease,transform .78s cubic-bezier(.4,0,1,1)}
.splash-exit .splash-status{opacity:0;transform:translate(-50%,10px);transition:opacity .38s,transform .48s}
.site-ready .splash-cinematic{opacity:0;visibility:hidden;pointer-events:none}
.site-ready .splash-cinematic *{animation:none!important}

/* Header and hero arrive from the emblem, in sequence. */
body:not(.site-ready) .site-header .brand{opacity:0;transform:translate3d(-12px,0,-80px) scale(.82)}
body:not(.site-ready) .desktop-nav a,body:not(.site-ready) .join-top{opacity:0;transform:translateX(-18px)}
body:not(.site-ready) .mobile-nav{opacity:0;transform:translateX(-10px)}
.site-header .brand{transform-origin:left center;transition:opacity .7s ease,transform .9s cubic-bezier(.16,1,.3,1)}
.desktop-nav a,.join-top,.mobile-nav{transition:opacity .55s ease,transform .72s cubic-bezier(.16,1,.3,1),border-color .2s,background .2s,color .2s}
.site-ready .desktop-nav a:nth-child(1){transition-delay:.16s}.site-ready .desktop-nav a:nth-child(2){transition-delay:.23s}.site-ready .desktop-nav a:nth-child(3){transition-delay:.30s}.site-ready .desktop-nav a:nth-child(4){transition-delay:.37s}.site-ready .desktop-nav a:nth-child(5){transition-delay:.44s}.site-ready .join-top{transition-delay:.5s}.site-ready .mobile-nav{transition-delay:.25s}
body:not(.site-ready) .hero-copy,body:not(.site-ready) .help-card{opacity:0;transform:translateY(18px)}
.hero-copy{transition:opacity .8s ease .18s,transform 1s cubic-bezier(.16,1,.3,1) .18s}.help-card{transition:opacity .8s ease .36s,transform 1s cubic-bezier(.16,1,.3,1) .36s}

/* Keep the complete institutional lockup visible on real desktop widths. */
@media (min-width:901px){.brand-identity{display:grid!important}.brand-divider{display:block!important}.nav-wrap{gap:clamp(16px,2vw,30px)}.desktop-nav{gap:clamp(12px,1.6vw,24px)}}
@media (min-width:901px) and (max-width:1100px){.brand-lockup{gap:10px}.brand-identity{font-size:9px;letter-spacing:.045em}.brand-identity small{font-size:7px}.brand-divider{height:31px}.desktop-nav{font-size:11px}.join-top{display:none}}
@media (max-width:900px){.splash-depth{width:min(104vw,560px);height:min(104vw,560px)}.splash-title{top:calc(50% + 126px)}.brand-identity{display:none!important}.brand-divider{display:none!important}.brand-lockup{gap:10px}}
@media (max-width:560px){.splash-cinematic{padding:0 18px max(18px,env(safe-area-inset-bottom))}.splash-depth{position:absolute;left:50%;top:43%;width:100%;height:280px;transform:translate(-50%,-50%)!important}.splash-mark{width:clamp(132px,36vw,154px);transform-origin:center}.splash-title{top:calc(43% + 104px);width:calc(100% - 48px);gap:11px}.splash-title strong{font-size:30px;letter-spacing:.2em;text-indent:.2em}.splash-title span{max-width:300px;font-size:9px;line-height:1.6;letter-spacing:.085em}.splash-status{bottom:max(34px,calc(env(safe-area-inset-bottom) + 26px))}.brand img{width:50px;height:50px}.brand-divider{height:32px}.brand-identity{font-size:8px;letter-spacing:.04em}.brand-identity small{font-size:6px;letter-spacing:.06em}.nav-wrap{gap:8px}.mobile-nav summary{padding:9px 10px;font-size:11px}}
@media (max-width:390px){.brand-identity{max-width:120px;white-space:normal}.brand-identity small{margin-top:2px}.brand-divider{display:none!important}}

@media (prefers-reduced-motion:reduce){.splash-cinematic{display:grid}.splash-cinematic *{animation:none!important;transition:none!important}.splash-depth,.splash-mark,.splash-status{opacity:1;transform:none}.splash-title{opacity:1;transform:translateX(-50%)}.splash-radar{opacity:.18;transform:translate(-50%,-50%) scale(.78)}.splash-horizon{transform:scaleX(1)}.site-header .brand,.desktop-nav a,.join-top,.mobile-nav,.hero-copy,.help-card{opacity:1!important;transform:none!important;transition:none!important}}

@keyframes splash-horizon{0%,10%{transform:scaleX(0);opacity:0}30%,88%{transform:scaleX(1);opacity:1}100%{transform:scaleX(.3);opacity:0}}
@keyframes splash-radar{0%,7%{opacity:0;transform:translate(-50%,-50%) scale(.18)}28%{opacity:.65}82%{opacity:.28;transform:translate(-50%,-50%) scale(1)}100%{opacity:0;transform:translate(-50%,-50%) scale(1.15)}}
@keyframes splash-wave{0%{opacity:0;transform:translateY(30px) scaleY(.7)}28%,78%{opacity:.7}55%{transform:translateY(-5px) scaleY(1)}100%{opacity:0;transform:translateY(-18px) scaleY(.8)}}
@keyframes splash-mark{0%,8%{opacity:0;transform:translateY(14px) scale(.9)}34%,82%{opacity:1;transform:translateY(0) scale(1)}100%{opacity:0;transform:translateY(-5px) scale(.985)}}
@keyframes splash-copy{0%,26%{opacity:0;filter:blur(8px);transform:translateX(-50%) scale(.965)}44%,86%{opacity:1;filter:blur(0);transform:translateX(-50%) scale(1)}100%{opacity:0;filter:blur(0);transform:translateX(-50%) scale(1)}}
@keyframes splash-status{0%,20%{opacity:0}34%,88%{opacity:1}100%{opacity:0}}
@keyframes splash-progress{0%{transform:scaleX(0)}38%{transform:scaleX(.31)}70%{transform:scaleX(.78)}100%{transform:scaleX(1)}}
@keyframes splash-pulse{50%{opacity:.48;transform:scale(1.08)}}
@keyframes splash-return-mark{0%{opacity:0;transform:translateZ(-80px) scale(.9)}30%,78%{opacity:1;transform:translateZ(0) scale(1)}100%{opacity:0;transform:translateZ(-30px) scale(.98)}}
@keyframes splash-return-copy{0%,20%{opacity:0;filter:blur(5px);transform:translateX(-50%) translateY(7px)}38%,80%{opacity:1;filter:blur(0);transform:translateX(-50%) translateY(0)}100%{opacity:0;filter:blur(0);transform:translateX(-50%) translateY(-3px)}}
