/* Cold open takes the baton (FILD-85). First-paint splash: parser-blocking,
   external for CSP parity with theme-bootstrap.js. Paints before the app
   module and Clerk resolve. The mark is Lucia Orbit (public/lucia-orbit.css,
   docs/lucia-orbit.md) at 132px around the round headshot; the React shell
   releases it once the shell is ready AND the fast laps are in
   (src/lib/coldOpenSplash.js → src/lib/luciaOrbit.js). Light-only. */
:root { --fw-splash-ease: cubic-bezier(0.2, 0.8, 0.2, 1); }
.fw-splash {
  position: fixed;
  inset: 0;
  z-index: 2147483000;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #fefcf4;
  /* Opaque and tappable-through-nothing while it shows (a cold-open tap must
     not reach the invisible app underneath); once it lets go it stops
     catching pointers so the arriving shell is live at once. */
  pointer-events: auto;
}
.fw-splash--out { pointer-events: none; }
html[data-fw-splash="off"] .fw-splash { display: none; }
/* The headshot's own arrive beat (the orbit's tail is already turning). */
.fw-splash .lucia-orbit__anchor {
  animation: fw-splash-head-in 0.5s var(--fw-splash-ease) both;
}
@keyframes fw-splash-head-in { from { opacity: 0; transform: scale(0.92); } to { opacity: 1; transform: none; } }
/* Exit: the orbit fades itself (releasing); the linen ground fades with it
   while the app rises in underneath (html.fw-cold-open-arrive #root). */
.fw-splash--out { opacity: 0; transition: opacity 0.55s var(--fw-splash-ease); }
@media (prefers-reduced-motion: reduce) {
  .fw-splash .lucia-orbit__anchor { animation: none; }
  .fw-splash--out { transition: none; }
}
