/* User-approved entrance: a fixed wordmark over a quiet, bounded load veil. */
.home-loader { display:none; }
html.home-booting .home-loader,html.home-entering .home-loader {
  position:fixed; inset:0; z-index:999; display:grid; place-items:center;
  background:#12151a; pointer-events:none;
}
html.home-entering .home-loader { opacity:0; visibility:hidden; transition:opacity 280ms ease-out,visibility 0s 280ms; }
html.home-booting .home-loader { opacity:1; visibility:visible; pointer-events:auto; }
.home-loader-mark { display:grid; place-items:center; gap:18px; opacity:0; transition:opacity 180ms ease-out; }
.home-loader-mark img { display:block; width:29px; height:40px; object-fit:contain; }
.home-loader-mark::after { content:''; display:block; width:26px; height:1px; background:#cdb5df; opacity:.45; }
html.home-load-indicator .home-loader-mark { opacity:1; }
html.home-load-indicator .home-loader-mark img { animation:entry-load-light 1500ms ease-in-out infinite; }
@keyframes entry-load-light { 0%,100% { opacity:.45; } 50% { opacity:.95; } }
html.home-booting body.theater .sidebar,html.home-entering body.theater .sidebar { z-index:1001; }
html.home-booting :is(.nav,.header-actions) { visibility:hidden; }
html.home-booting :is(.nav,.header-actions) * { visibility:hidden!important; }
html.home-booting .next-rule::after,
html.home-entering:not(.entry-next-ready) .next-rule::after { animation-play-state:paused!important; opacity:0!important; }
html.home-booting .ruler-orb * { animation-play-state:paused!important; }

/* Shared frame clock owns intro poses. Normal hover/focus transitions resume
   as soon as the user takes over; no independent CSS timer can race the scene. */
.nav.is-glass-menu.is-introducing .section-app,
.nav.is-glass-menu.is-introducing .section-app-label { transition:none; }
@media(prefers-reduced-motion:reduce) {
  html.home-entering .home-loader { transition:none; }
  .home-loader-mark,.home-loader-mark img { animation:none!important; transition:none; }
}
