/* The original Celestial title treatment, with a spatial scroll journey. */
body{background:#0a0809}html{scrollbar-color:#80566a #0a0809}.brand img{width:38px;height:38px;object-fit:contain;border-radius:50%;filter:drop-shadow(0 0 8px #eba0be36)}.brand{gap:12px}.masthead{background:linear-gradient(#0a0809ed,transparent);height:100px}.top-nav{gap:27px}.top-nav a,.brand,.hero-links a,.text-link{will-change:transform;transition:color .25s,transform .3s var(--ease-out)}
.chapter{height:155svh;min-height:1050px}.chapter:last-child{height:135svh;min-height:900px}.chapter-inner{position:sticky;top:0;height:100svh;min-height:650px;overflow:clip}.copy{width:46%;opacity:var(--copy-opacity,1);transform:translate3d(0,var(--copy-y,0px),0);filter:blur(var(--copy-blur,0px));will-change:transform,opacity}.hero-copy{width:52%;transform:translate3d(var(--parallax-x,0px),var(--parallax-y,0px),0);padding-bottom:15px}h2{font-size:clamp(45px,5.2vw,82px);font-weight:300}.eyebrow{color:#b18e9f;margin-bottom:23px}.intro{max-width:360px;font-size:12px;line-height:1.95;color:#baa7b1}.sub-label{font-size:8px;color:#c796ae}.sub-label::before{content:'';display:inline-block;width:3px;height:3px;background:var(--red);border-radius:50%;vertical-align:2px;margin-right:8px}.text-link{position:relative;border-color:#644453}.text-link::before{content:'';position:absolute;left:0;right:0;bottom:-1px;height:1px;background:var(--red);transform:scaleX(0);transform-origin:left;transition:transform .45s var(--ease-out)}.text-link:hover::before{transform:scaleX(1)}.text-link:hover span{transform:translate(4px,-3px)}.text-link span{transition:transform .3s var(--ease-out)}.secondary-link{line-height:2}.object-target{top:24%;height:49%;border:0;align-items:flex-end;outline-offset:10px}.object-target span{border-color:#8c5d77;opacity:.8}.object-target b{transition:opacity .3s,transform .3s}.object-target:hover span{color:var(--red)}.object-note{bottom:24%;left:64%;opacity:var(--hero-note-opacity,1)}.chapter-caption{bottom:100px;z-index:3;border-color:#6d475d55}.chapter-caption::before{content:'';position:absolute;left:0;top:-1px;width:calc(var(--chapter-progress,0) * 100%);max-width:100%;height:1px;background:linear-gradient(90deg,#a36d87,#f0bad3);box-shadow:0 0 9px #eba0be44}.spec-line{font-size:8px;letter-spacing:0;gap:9px;max-width:350px;flex-wrap:wrap}.finale-links{gap:18px;flex-wrap:wrap}.finale-links a:hover{color:var(--red)}.gateway-target{height:50%;top:22%}
#hero-title{font-size:clamp(40px,5.35vw,82px);font-weight:500;letter-spacing:.55em;line-height:1.15;margin:0 0 0 -.02em;padding-left:.03em;color:transparent;-webkit-text-stroke:1px rgba(230,220,225,.75);background:linear-gradient(105deg,transparent 35%,rgba(230,220,225,.62) 50%,transparent 65%);background-size:240% 100%;-webkit-background-clip:text;background-clip:text;animation:title-sweep 9s ease-in-out infinite;opacity:0;filter:blur(14px);transition:letter-spacing 2.2s var(--ease-out),opacity 1.8s ease,filter 2.2s var(--ease-out),-webkit-text-stroke-color .5s;position:relative;white-space:nowrap;cursor:default}
body.ready #hero-title{letter-spacing:.22em;opacity:1;filter:blur(0)}#hero-title::before,#hero-title::after{content:attr(data-text);position:absolute;inset:0;padding-left:inherit;font-size:inherit;font-weight:inherit;letter-spacing:inherit;color:transparent;pointer-events:none;opacity:0;transition:opacity .45s,transform .45s var(--ease-out)}#hero-title::before{-webkit-text-stroke:1px #eba0beaa;transform:translate(-2px,0)}#hero-title::after{-webkit-text-stroke:1px #bea0b973;transform:translate(2px,0)}#hero-title:hover{-webkit-text-stroke-color:#f8e7ef}#hero-title:hover::before{opacity:1;transform:translate(-3px,0)}#hero-title:hover::after{opacity:1;transform:translate(3px,0)}@keyframes title-sweep{0%,100%{background-position:240% 0}50%{background-position:-240% 0}}
.hero-line{font-size:11px;letter-spacing:.065em;color:var(--mid);margin-top:30px;min-height:48px;max-width:500px;line-height:1.9;opacity:0;transform:translateY(8px);transition:opacity 1.2s .8s,transform 1.2s var(--ease-out) .8s}.ready .hero-line{opacity:1;transform:none}.type-caret{display:inline-block;width:1px;height:12px;background:var(--red);margin-left:4px;vertical-align:-2px;animation:caret-blink 1s steps(1) infinite}@keyframes caret-blink{50%{opacity:0}}.hero-divider{width:55px;height:1px;background:#58424e;margin:20px 0 26px;transform:scaleX(0);transform-origin:left;transition:transform 1.2s var(--ease-out) 1.1s}.ready .hero-divider{transform:scaleX(1)}.hero-links{display:flex;gap:36px;color:#b39ca8;font-size:10px;letter-spacing:.16em;opacity:0;transform:translateY(5px);transition:opacity 1s 1.2s,transform 1s var(--ease-out) 1.2s}.ready .hero-links{opacity:1;transform:none}.hero-links a:hover{color:var(--red)}.scroll-invitation{display:flex;align-items:center;gap:14px;color:#806b76;font-size:8px;letter-spacing:.04em;margin-top:62px;width:max-content;max-width:100%}.scroll-invitation b{color:var(--red);font-size:16px;font-weight:300;animation:cue-bob 2.4s ease-in-out infinite}.scroll-line{height:29px;width:1px;background:#4a3540;position:relative;overflow:hidden}.scroll-line::after{content:'';position:absolute;top:-100%;height:100%;width:1px;background:#e1a8c2;animation:cue-line 2.4s ease-in-out infinite}@keyframes cue-line{to{transform:translateY(220%)}}@keyframes cue-bob{50%{transform:translateY(6px)}}
.scanlines{position:fixed;inset:0;pointer-events:none;z-index:4;opacity:.12;background:repeating-linear-gradient(0deg,transparent,transparent 3px,#0002 3px,#0002 4px)}.grain{opacity:.038}.sky{background:radial-gradient(ellipse at 72% 50%,#38212d4d,transparent 58%),#0a0809}.fallback-orbit img{width:68%;height:68%;object-fit:contain;position:absolute;left:16%;top:16%;border-radius:50%}.fallback-orbit{filter:drop-shadow(0 0 28px #eba0be22)}
#intro-shutter{position:fixed;inset:0;background:#0a0809;z-index:80;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:20px;pointer-events:none;transition:opacity .8s,visibility .8s;letter-spacing:.32em;color:#c092a8;font-size:10px}#intro-shutter i{width:70px;height:1px;background:#634252;transform:scaleX(.25);transform-origin:left;animation:intro-line 1s ease infinite alternate}.ready #intro-shutter{opacity:0;visibility:hidden}@keyframes intro-line{to{transform:scaleX(1)}}
.utility{height:73px;background:linear-gradient(transparent,#0a0809f5)}.quick-links{display:flex;gap:22px;font-size:9px;color:#b399a8}.quick-links button{padding:10px 0}.quick-links button:hover{color:var(--red)}.controls{gap:23px}.controls button{min-height:38px}.audio-bars{display:inline-flex;gap:2px;margin-left:8px;align-items:center;vertical-align:-2px;height:11px}.audio-bars b{display:block;width:1px;height:7px;background:#ce8fad;animation:audio-meter .7s ease-in-out infinite alternate;animation-play-state:paused;opacity:.5}.audio-bars b:nth-child(2){animation-delay:-.25s;height:11px}.audio-bars b:nth-child(3){animation-delay:-.5s;height:5px}body[data-audio-state=ready] .audio-bars b{animation-play-state:running;opacity:1}@keyframes audio-meter{to{transform:scaleY(.3)}}
#cursor-dot,#cursor-ring{position:fixed;left:0;top:0;pointer-events:none;z-index:200;opacity:0;will-change:transform}#cursor-dot{width:4px;height:4px;border-radius:50%;background:#f4d6e6}#cursor-ring{width:30px;height:30px;border:1px solid #d4adc35c;border-radius:50%;transition:width .3s,height .3s,border-color .3s,opacity .3s}#cursor-ring span{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:6px;letter-spacing:.08em;color:#f4d6e6;opacity:0;white-space:nowrap}.cursor-active #cursor-dot,.cursor-active #cursor-ring{opacity:1}.model-hover #cursor-ring{width:65px;height:65px;border-color:#eba0be99;background:#2c182733;backdrop-filter:blur(2px)}.model-hover #cursor-ring span{opacity:1}.hovering:not(.model-hover) #cursor-ring{width:43px;height:43px;border-color:#eba0be99}@media(hover:hover) and (pointer:fine){body.cursor-active,body.cursor-active a,body.cursor-active button{cursor:none!important}}
body.motion-paused *,body.motion-paused *::before,body.motion-paused *::after{animation-play-state:paused!important}body.motion-paused .copy{filter:none}body.motion-paused #hero-title{transition-duration:.1s}body.motion-paused .hero-line,body.motion-paused .hero-links{transition-delay:0s}
@media(max-width:1000px) and (min-width:641px){#hero-title{font-size:5.2vw}.hero-copy{width:53%}.intro{font-size:11px}.quick-links{gap:16px}.journey-state{gap:12px}.progress-track{width:45px}.copy{width:46%}.spec-line i{display:none}}
@media(max-width:640px){.masthead{height:80px;padding:0 6%}.brand{gap:8px;font-size:13px}.brand img{width:30px;height:30px}.brand-glyph{font-size:8px}.top-nav{gap:14px;font-size:8px}.top-nav a:first-child{display:block}.top-nav .tos-link{display:none}.chapter{height:145svh;min-height:1000px}.chapter:last-child{height:135svh;min-height:950px}.chapter-inner{position:sticky;min-height:680px;padding:0 8%}.hero-copy{width:100%;padding-top:151px;padding-bottom:0}.copy{width:94%;padding-top:113px}#hero-title{font-size:clamp(30px,11.2vw,46px);letter-spacing:.28em;line-height:1.2}body.ready #hero-title{letter-spacing:.14em}.hero-line{font-size:9px;letter-spacing:.035em;max-width:305px;min-height:39px;margin-top:25px}.hero-divider{margin:14px 0 22px;width:40px}.hero-links{font-size:9px;gap:30px}.scroll-invitation{margin-top:32px;font-size:7px;gap:11px}.scroll-line{height:22px}h2{font-size:46px}.eyebrow{margin-bottom:19px;font-size:7px;letter-spacing:.1em}.intro{font-size:10px;line-height:1.9;max-width:290px;margin-top:18px}.hero .intro{display:none}.object-note{left:auto;right:12%;bottom:18%;font-size:7px}.object-note small{font-size:6px}.object-target{top:auto;bottom:17%;width:81%;height:31%;right:9%;padding:0 7px;font-size:6px}.object-target b{font-size:7px;opacity:1}.gateway-target{bottom:17%;height:34%}.chapter-caption{bottom:81px;font-size:6px;letter-spacing:.025em}.chapter-caption span:last-child{max-width:140px;text-align:right}.utility{height:65px;padding:0 6%;gap:12px}.journey-state{font-size:7px;gap:0}.journey-state .progress-track,#chapter-name{display:none}.quick-links{font-size:8px;gap:16px}.quick-links button{min-height:42px}.controls{gap:12px}.controls button{font-size:7px;min-height:42px}.audio-bars{display:none}.controls>a{display:none}.spec-line{font-size:7px;margin-top:16px;gap:8px}.text-link{margin-top:20px}.secondary-link{font-size:8px;margin-top:15px}.finale-links{font-size:8px;gap:15px;margin-top:19px}.trace-field{height:210px}.trace-labels{font-size:7px;gap:10px}#lab-guide h2{font-size:27px}.fallback-orbit{top:57%}}
@media(max-width:360px){.brand-glyph{display:none}.top-nav{gap:12px}.utility{padding:0 5%;gap:9px}.quick-links{gap:12px}.controls{gap:10px}}
@media(max-height:740px) and (min-width:641px){.hero-line{margin-top:22px}.scroll-invitation{margin-top:35px}.chapter-caption{bottom:85px}}

/* Model hit areas are deliberately label-free. */
.object-target{background:transparent}.object-target:focus-visible{outline:1px solid #d29ab8;border-radius:12px}.masthead{pointer-events:none}.brand{pointer-events:auto}

/* A real startup gate: all model uploads and first-use shaders finish behind this screen. */
html.booting{overflow:hidden}body.loading{overflow:hidden}body.loading main,body.loading .masthead,body.loading .utility,body.loading .chapter-nav{visibility:hidden}#intro-shutter{pointer-events:auto}body.ready #intro-shutter{pointer-events:none}#intro-shutter progress{appearance:none;-webkit-appearance:none;border:0;width:190px;height:2px;background:#3d2833;color:#eba0be;overflow:hidden}#intro-shutter progress::-webkit-progress-bar{background:#3d2833}#intro-shutter progress::-webkit-progress-value{background:#eba0be;transition:width .18s}#intro-shutter progress::-moz-progress-bar{background:#eba0be}.load-detail{display:flex;justify-content:space-between;width:190px;gap:16px;font-size:8px;letter-spacing:.02em;color:#947887}#load-skip{font-size:9px;letter-spacing:.025em;color:#c79caf;padding:10px}body.loading #cursor-dot,body.loading #cursor-ring{display:none}.object-target{touch-action:pan-y}body.modal-open .grain,body.modal-open .scanlines{visibility:hidden}

/* A dedicated fifth chapter, and quiet credits below the right-side controls. */
.hero-links button{font:inherit;letter-spacing:inherit;color:inherit;padding:0}.hero-links button:hover{color:var(--red)}.about-detail{margin-top:16px;max-width:355px}.utility .controls{transform:translateY(-5px)}.model-credits{position:absolute;right:5.4%;bottom:4px;min-height:20px;font-size:7px;line-height:1.5;letter-spacing:.035em;color:#8d7482;white-space:nowrap}.model-credits:hover{color:#dba5c0}#credits-guide{width:min(620px,calc(100% - 32px));max-height:82svh;margin:auto;padding:0;color:var(--fg);background:#100d0f;border:1px solid #58404c;font:11px/1.8 'Celestial Mono',Consolas,monospace;overflow:auto}#credits-guide::backdrop{background:#080609c9;backdrop-filter:blur(12px)}.credits-body{padding:25px 30px 30px}.credits-body h2{font:300 29px/1.2 Arial,sans-serif;letter-spacing:-.04em;margin-bottom:20px}.credits-body>p{font-size:10px;color:#ad95a2}.credits-body a{color:#d9a6c1}.credits-body a:hover{color:#f2cfe1}.credits-body ul{list-style:none;margin-top:22px}.credits-body li{border-top:1px solid #46303d;padding:15px 0}.credits-body li>a{font-size:11px}.credits-body li p{font-size:9px;margin-top:4px;color:#a48a99}.credits-body small{display:block;font-size:8px;line-height:1.7;color:#87727d;margin-top:5px}
@media(max-width:640px){.utility{height:74px}.utility .controls{transform:translateY(-9px)}.journey-state{transform:translateY(-7px)}.model-credits{right:6%;bottom:3px;font-size:6px}.hero-links{gap:25px}.about-detail{max-width:290px;font-size:10px;line-height:1.8}.about-chapter .intro{max-width:295px}.about-chapter .text-link{margin-top:17px}.chapter-nav{gap:10px}.credits-body{padding:22px}.credits-body li>a{font-size:10px}.credits-body li p{font-size:8px}}

/* Hide the page scrollbar while preserving native scrolling and dialog scroll areas. */
html,body{scrollbar-width:none;-ms-overflow-style:none}
html::-webkit-scrollbar,body::-webkit-scrollbar{display:none;width:0;height:0}

/* The cursor occupies its own top layer, above native modal dialogs. */
#cursor-layer{position:fixed;inset:0;width:100vw;height:100vh;max-width:none;max-height:none;margin:0;padding:0;border:0;background:transparent;color:var(--fg);overflow:visible;pointer-events:none;z-index:2147483647;contain:layout style}#cursor-layer::backdrop{background:transparent;pointer-events:none}.cursor-fallback-host{animation:none!important;transform:none!important}
@media(any-pointer:fine){body.cursor-active,body.cursor-active *,body.cursor-active dialog::backdrop{cursor:none!important}}

/* The page remains usable while a slow connection streams a later scene. */
.scene-loading{position:fixed;z-index:4;pointer-events:none;right:20%;top:70%;font:8px 'Celestial Mono',monospace;letter-spacing:.15em;color:#a48898;opacity:0;transition:opacity .25s}
body.ready.scene-pending .scene-loading{opacity:.75}
body.ready.scene-pending .fallback-orbit{opacity:.4}
@media(max-width:640px){.scene-loading{right:auto;left:50%;top:82%;transform:translateX(-50%);white-space:nowrap}}

/* Lightweight simpler view: four inline vector studies; no model/image downloads. */
.simple-visual{display:none;pointer-events:none}
body.fallback .simple-visual{display:block;position:absolute;right:6%;top:50%;width:43%;max-width:600px;aspect-ratio:1;transform:translateY(-50%);contain:layout style}
.simple-visual svg{display:block;width:100%;height:100%;overflow:visible}
.simple-visual .art-faint{opacity:.3}
body.fallback .object-target{background:none!important;box-shadow:none!important;filter:none!important;backdrop-filter:none!important;z-index:1}
body.fallback .copy{opacity:1;filter:none;transform:none}
body.fallback:not([data-active-chapter="0"]) .fallback-orbit{opacity:0;visibility:hidden}
.simple-float{transform-origin:250px 250px;animation:simple-float 7s ease-in-out infinite}
.simple-orbit{transform-origin:250px 250px;animation:simple-turn 42s linear infinite}
.simple-fan{transform-origin:51px 8px;animation:simple-turn 10s linear infinite}
.simple-pulse{animation:simple-pulse 4s ease-in-out infinite}
.simple-drift{animation:simple-drift 6s ease-in-out infinite}
.simple-trace{animation:simple-pulse 3s ease-in-out infinite}
.simple-visual *{animation-play-state:paused}
body.fallback .chapter:not(.simple-visible) .simple-visual *{animation-play-state:paused!important}
body.fallback .simple-visible .simple-visual *{animation-play-state:running}
.simple-visual svg{transition:transform .6s ease}
body.fallback .object-target:hover + .simple-visual svg{transform:scale(1.035)}
body.motion-paused .simple-visual *,body.modal-open .simple-visual *{animation-play-state:paused!important}
@keyframes simple-float{50%{transform:translateY(-9px) rotate(1.5deg)}}
@keyframes simple-turn{to{transform:rotate(360deg)}}
@keyframes simple-pulse{50%{opacity:.45}}
@keyframes simple-drift{50%{transform:translateY(-12px);opacity:.4}}
@media(max-width:640px){body.fallback .simple-visual{top:auto;bottom:88px;right:12%;width:76%;max-height:41svh;transform:none}body.fallback #people .simple-visual{bottom:83px}body.fallback .simple-visual svg{max-height:41svh}body.fallback .copy{z-index:2}}
@media(prefers-reduced-motion:reduce){.simple-visual *{animation:none!important}}

/* Credits belong to the document end; motion/sound remain in the fixed utility bar. */
.page-end{position:relative;z-index:21;display:flex;justify-content:flex-end;padding:12px 5.4% 88px;min-height:116px;pointer-events:auto}
.page-end .model-credits{position:static;min-height:24px;font-size:8px;color:#a48a98;padding:4px 0}
.page-end .model-credits:hover{color:#e1adc9}
@media(max-width:640px){.page-end{padding:12px 6% 88px}.page-end .model-credits{font-size:8px}}
