/* Compact CRT loader. Progress is driven by real model construction and GPU warm-up. */
:root{--kucoo-face:'Barlow Condensed','Arial Narrow',Arial,sans-serif}
#loading.startup{--load-progress:0;position:fixed;inset:0;z-index:10000;display:grid;place-items:start;overflow:hidden;background:#070808;color:#d9a629;outline:none;isolation:isolate;transition:opacity .44s cubic-bezier(.22,.75,.25,1),filter .44s ease}
#loading.startup[hidden]{display:none}
#loading.startup::before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at center,rgba(255,255,255,.045),transparent 48%),repeating-linear-gradient(0deg,rgba(255,255,255,.035) 0 1px,transparent 1px 4px);mix-blend-mode:screen;opacity:.75;pointer-events:none;animation:startup-scan 5s linear infinite}
#loading.startup::after{content:'';position:absolute;inset:-12%;background:radial-gradient(ellipse at center,transparent 35%,rgba(0,0,0,.48) 70%,#000 100%);pointer-events:none}
#loading .startup-noise{position:absolute;inset:0;opacity:.20;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.84' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.72'/%3E%3C/svg%3E");filter:contrast(1.8);animation:startup-noise .18s steps(2,end) infinite}
#loading .startup-panel{position:relative;z-index:2;width:min(72vw,760px);display:grid;justify-items:start;gap:14px;padding:clamp(34px,7vh,82px) clamp(28px,6vw,72px);text-align:left;transform:translateZ(0);transition:transform .42s cubic-bezier(.2,.8,.2,1),opacity .32s ease,filter .32s ease}
#loading .startup-logo{display:block;font-family:var(--kucoo-face);font-size:clamp(28px,3.4vw,54px);font-weight:900;line-height:.82;letter-spacing:.34em;text-indent:.34em;color:#e0ae32;text-shadow:0 0 7px #b77d1833;white-space:nowrap}#loading .startup-kicker{font:600 11px/1.4 var(--kucoo-face);letter-spacing:.16em;color:#a87921;text-transform:uppercase;margin-bottom:7px}#loading .startup-log{width:min(100%,690px);min-height:210px;border-top:1px solid #7b5a1d88;border-bottom:1px solid #7b5a1d55;padding:12px 0 10px;font:600 clamp(12px,1.2vw,17px)/1.9 var(--kucoo-face);letter-spacing:.08em;color:#bf8b27;text-transform:uppercase}.startup-log-line{display:flex;justify-content:space-between;gap:28px;white-space:nowrap}.startup-log-line b{font-weight:600;color:#d6a32e}.startup-log-line::before{content:'›';margin-right:8px;color:#74551d}.startup-log-line span{overflow:hidden;text-overflow:ellipsis}
#loading .startup-progress{width:min(100%,690px);height:9px;overflow:hidden;filter:drop-shadow(0 0 4px #bc831844);margin-top:3px}
#loading .startup-segments{height:100%;display:grid;grid-template-columns:repeat(24,minmax(0,1fr));gap:3px}
#loading .startup-segment{height:100%;background:#302516;box-shadow:inset 0 0 0 1px rgba(255,255,255,.08);transition:background-color .13s linear,box-shadow .13s linear,transform .13s linear;transform:scaleY(.82)}
#loading .startup-segment.is-filled{background:#d49b25;box-shadow:0 0 5px #d49b2566;transform:scaleY(1)}
#loading .startup-status{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
#loading .startup-fallback{display:none;position:absolute;z-index:3;bottom:26px;left:50%;transform:translateX(-50%);font:700 12px/1.4 var(--kucoo-face);letter-spacing:.12em;color:#f3f2e9;text-underline-offset:5px;white-space:nowrap}
#loading.is-slow .startup-fallback,#loading.is-error .startup-fallback{display:block}
#loading.is-ready .startup-segment{background:#efbd3e;box-shadow:0 0 7px #efbd3e99}
#loading.is-exiting .startup-panel{transform:scale(.94);opacity:0;filter:blur(5px)}
#loading.is-exiting{opacity:0;filter:brightness(1.35);pointer-events:none}
#loading.is-error .startup-logo{font-size:clamp(36px,5vw,58px);letter-spacing:.08em}
body:has(#loading.startup) #boot{display:none!important}
#screen-anchor#screen-anchor .brand,#screen-anchor#screen-anchor h1 em{font-family:var(--kucoo-face);font-weight:900;font-style:normal;letter-spacing:.025em}
@keyframes startup-scan{from{transform:translateY(-2px)}to{transform:translateY(2px)}}
@keyframes startup-noise{0%{transform:translate(0,0)}25%{transform:translate(-1.5%,1%)}50%{transform:translate(1%,-1.5%)}75%{transform:translate(.7%,1.2%)}100%{transform:translate(-1%,0)}}
@media(max-width:700px){#loading .startup-panel{width:100%;padding:30px 22px}.startup-log-line{font-size:12px}.startup-log{min-height:180px!important}#loading .startup-logo{font-size:clamp(28px,12vw,48px)}#loading .startup-progress{height:8px}#loading .startup-segments{gap:2px}}
:root[data-motion="reduced"]{#loading.startup,#loading .startup-panel,#loading .startup-segment{transition:none}#loading.startup::before,#loading .startup-noise{animation:none}}

/* GPU prewarming draws to two separate canvases, including the body-level
   exhibit overlay. Neither belongs to the idle UI. Only the synchronous print
   hand-off reveals them; returning home hides them after the floating drop. */
body:not(.scene-visible) :is(#stage,#exhibit-overlay),
body.is-starting :is(#stage,#exhibit-overlay){visibility:hidden!important;opacity:0!important;pointer-events:none!important}
body.scene-visible:not(.is-starting) :is(#stage,#exhibit-overlay){visibility:visible!important;opacity:1!important}