/* The gate's first paint (contract §20.3). index.html carries no inline script or style (CSP script-src 'self'): this
   render-blocking stylesheet covers the page in ink before the first frame, whatever the gate decides next.
   html.os-gated (set in index.html, removed by os/gate/gate.js once signed in, right before the shell's module loads):
   the shell's own markup is not laid out at all — its stylesheet is not loaded yet, and nothing of it should show — and
   an ink cover sits under the gate's scenes (pre-start, login). */
html.os-gated{background:#04060b}
html.os-gated body>:not(.os-pre):not(.os-login):not(.os-gate-fail):not(.os-gate-note):not(noscript){display:none!important}
html.os-gated body:after{content:"";position:fixed;inset:0;z-index:2147483000;pointer-events:none;background:radial-gradient(120% 90% at 50% -10%,#0e1526 0,#070a12 55%,#04060b 100%)}
/* First run after sign-in (§17.1): the ink cover stays until the loader is opaque (boot.js removes .os-onb-first);
   failsafe 6 s. (Formerly an inline style in index.html.) */
html.os-onb-first body:after{content:"";position:fixed;inset:0;z-index:2147483000;background:radial-gradient(120% 90% at 50% -10%,#0e1526 0,#070a12 55%,#04060b 100%);animation:os-onb-failsafe 0s 6s forwards}
@keyframes os-onb-failsafe{to{visibility:hidden}}
/* A sheet whose page was asked for after the session ended loads the gate inside its frame: plain ink while the shell
   around it asks for the token (os/gate/gate.js). */
html.os-gate-framed body:after{background:#070a12}

/* Failsafe: the gate never ran (a script that could not load). After 8 s the page says so instead of staying black. */
.os-gate-fail,.os-gate-note{position:fixed;left:50%;bottom:max(24px,6vh);transform:translateX(-50%);z-index:2147483600;width:min(560px,calc(100% - 40px));margin:0;padding:12px 16px;box-sizing:border-box;
  border-radius:12px;border:1px solid rgba(245,184,106,.32);background:rgba(12,16,27,.94);color:#e8ecf5;font:400 13px/1.5 "Geist",ui-sans-serif,system-ui,sans-serif}
.os-gate-fail{visibility:hidden}
html:not(.os-gate-up) .os-gate-fail{animation:os-gate-fail 0s 8s forwards}
html.os-gate-up .os-gate-fail{display:none}
@keyframes os-gate-fail{to{visibility:visible}}
.os-noscript{position:relative;z-index:2147483600;margin:24px;color:#e8ecf5;font:400 14px/1.5 ui-sans-serif,system-ui,sans-serif}
