/* =========================================================================
   LAUNCH SPLASH — plays once per cold start (see js/mobile-splash.js).
   A background/foreground resume never reloads index.html, so this markup
   simply never runs again until the process is actually recreated.
   ========================================================================= */
.launch-splash {
  position: fixed;
  inset: 0;
  z-index: 9999;
  background: #05070D;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 1;
  transition: opacity 0.32s ease;
}
.launch-splash.is-leaving {
  opacity: 0;
  pointer-events: none;
}
.launch-splash-video {
  width: 100%;
  height: 100%;
  object-fit: cover;
  /* Starts invisible so the WebView's placeholder frame (a blank/gray box,
     sometimes with a play glyph) never flashes on screen — the splash's own
     background shows instead until the first real frame is decoded. */
  opacity: 0;
  transition: opacity 0.15s ease;
}
.launch-splash-video.is-ready {
  opacity: 1;
}
