/* =============================================================================
   82-boot-gate.css — controls are inert until their handlers exist
   =============================================================================
   THE PROBLEM THIS CLOSES

   The page paints, then ~40 JS modules load in IDLE time
   (`requestIdleCallback(loadAll, { timeout: 800 })` in index.html). So there is a
   window — up to ~800ms before the batch even starts, plus its own fetch and
   execute time — where the UI is fully visible and fully tappable, and none of
   its handlers exist yet.

   Almost every control in this app is an inline `onclick="someFn()"`. If
   `someFn` lives in a module that has not executed, the tap throws a
   ReferenceError that surfaces nowhere: no error, no feedback, nothing happens.
   That is the "cold start dead window" — and it is why Chimera logged a working
   status button as a non-interactive control on 2026-08-26 (the tap landed 3s
   after an app resume).

   WHAT THIS DOES

   Marks controls inert for exactly that window, so a tap cannot half-fire into a
   page whose logic is not loaded. It does NOT make the app feel faster and it is
   not meant to — the tap still does nothing. What it buys is that the app is
   never in a state where it LOOKS wired and is not, which is what made the
   failure invisible to the user and indistinguishable from a real bug in
   telemetry.

   SCROLLING STAYS ALIVE. `pointer-events: none` is applied to CONTROLS, never to
   body or a scroll container — a boot gate that also froze scrolling would trade
   one bad window for a worse one.

   The class is removed by index.html on the batch's finish line, and by a hard
   timeout regardless, so a single failed module can never leave the app inert.
   ============================================================================= */

body.shelfd-booting button,
body.shelfd-booting a[href],
body.shelfd-booting [role="button"],
body.shelfd-booting [onclick],
body.shelfd-booting input,
body.shelfd-booting textarea,
body.shelfd-booting select,
body.shelfd-booting label[for] {
  pointer-events: none !important;
}

/* The splash / launch overlay owns its own dismissal and must stay live — it is
   the one surface that exists specifically for this window. */
body.shelfd-booting #shelfd-splash,
body.shelfd-booting #shelfd-splash *,
body.shelfd-booting .shelfd-splash,
body.shelfd-booting .shelfd-splash * {
  pointer-events: auto !important;
}
