/* THE OPENING (2026-09-20). Drawn only while launch-reveal.js has the overlay in
   the page — on a cold start, on a phone, with Reduce Motion off. Everything here
   is prefixed lr- : this sheet loads into both shells, which already own .top,
   .card, .mark and a hundred other short names, and a collision here would paint
   over the app itself (the /book incident, 2026-08-29).

   The geometry is the native launch screen's, to the point: #090A0B, the mark
   132pt wide, its centre at 47% of the height. Change one of them and change
   mobile/ios/App/App/Base.lproj/LaunchScreen.storyboard with it, or the handoff
   from iOS to the web shows a jump. qa:launch-reveal pins the pair together. */

.lr-wrap{
  position:fixed; inset:0; z-index:2147483600;   /* under #bioLockGuard (max), over everything else */
  pointer-events:none;                            /* a tap for a tile is never eaten */
  contain:strict;
}

/* Solid, and it dissolves. A veil with a hole in it showed the white app through
   the hole, which read as a torch beam rather than as light. */
.lr-veil{position:absolute; inset:0; background:#090A0B}

.lr-halo,
.lr-bloom{
  position:absolute; left:50%; top:47%; width:460px; height:460px;
  transform:translate(-50%,-50%); mix-blend-mode:screen; pointer-events:none;
}
.lr-halo{opacity:.16}
.lr-bloom{width:520px; height:520px; opacity:0}

.lr-mark,
.lr-white{
  position:absolute; left:50%; top:47%; width:132px;
  transform:translate(-50%,-50%); pointer-events:none;
}
/* The white copy is revealed by the light's own band; it starts entirely outside
   the frame so the first painted frame is the gold-green mark, exactly the launch
   screen's. */
.lr-white{clip-path:polygon(-40% 0, -40% 0, -25% 100%, -55% 100%)}

/* No motion, no overlay — but the rule stays as a second belt: if the overlay is
   ever built on a phone that asked for stillness, it paints nothing. */
@media (prefers-reduced-motion: reduce){
  .lr-wrap{display:none}
}
