@font-face{font-family:Cormorant;src:url('/fonts/display.ttf') format('truetype');font-weight:400 500;font-display:swap}@font-face{font-family:Manrope;src:url('/fonts/ui.ttf') format('truetype');font-weight:400 600;font-display:swap}
:root{--ink:#ecebe5;--muted:#adb3bd;--paper:#f3f2ed;--night:#080b12;--accent:#eac68c;--ease:cubic-bezier(.22,.68,0,1);font-family:Manrope,Arial,sans-serif;color:var(--ink);background:var(--night);font-synthesis:none}
*{box-sizing:border-box}html{overflow:hidden;height:100%}body{margin:0;overflow:hidden;width:100%;height:100svh}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}a{color:inherit}button:focus-visible,a:focus-visible{outline:1px solid currentColor;outline-offset:7px}button{touch-action:manipulation}button:disabled{cursor:wait}button:hover{color:#fff}[hidden]{display:none!important}h1,h2,p{margin:0}h1,h2{font-family:Cormorant,Georgia,serif;font-weight:400}em{font-weight:400}#experience{position:relative;z-index:2;height:100svh;pointer-events:none}#experience button,#experience a,#experience section{pointer-events:auto}#cosmos,.sky-fallback,.sky-shade{position:fixed;inset:0;width:100%;height:100%;pointer-events:none}.sky-fallback{background:#080b12 url('/milky-way.jpg') center/cover no-repeat;filter:brightness(.6) saturate(.7);}#cosmos{opacity:0;transition:opacity 1.6s}.sky-shade{background:linear-gradient(90deg,rgba(3,7,14,.6),transparent 55%),linear-gradient(0deg,rgba(4,7,12,.8),transparent 25%,transparent 80%,rgba(4,7,12,.7));z-index:1;opacity:0;transition:opacity 1.3s}body:not([data-view=entrance]) #cosmos,body:not([data-view=entrance]) .sky-shade{opacity:1}.site-header{height:112px;padding:0 4.3vw;display:flex;align-items:center;justify-content:space-between;position:absolute;inset:0 0 auto;z-index:10;transition:color .8s}.wordmark{font-size:23px;letter-spacing:.18em;font-weight:500;display:flex;align-items:center;gap:15px;padding:0}.wordmark span{font-size:9px;font-weight:400;letter-spacing:.26em;border-left:1px solid currentColor;padding:5px 0 5px 15px}.header-note{font-size:9px;letter-spacing:.24em;position:absolute;left:50%;transform:translateX(-50%);opacity:.6}.site-header nav{display:flex;gap:30px;align-items:center;font-size:11px}.site-header nav button{padding:9px 0}#sound{display:flex;align-items:center;gap:8px;min-width:88px;justify-content:flex-end}#sound svg{opacity:.7}.nav-arrow{margin-left:8px}.world-only{display:none}body:is([data-view=universe],[data-view=constellation]) .world-only{display:initial}.experience-footer{position:absolute;inset:auto 4.3vw 27px;display:flex;justify-content:space-between;align-items:center;font-size:9px;letter-spacing:.13em;z-index:8;color:#a5aeb9}.experience-footer>div{display:flex;gap:24px;align-items:center}.experience-footer button{font-size:10px;letter-spacing:0}.sky-credit{font-size:9px;letter-spacing:0;text-decoration:none}.sky-credit:hover{text-decoration:underline}
/* The light entrance stays nearly empty; the physical lens is the sole large action. */
#entrance{position:absolute;inset:0;background:var(--paper);color:#272d34;clip-path:circle(160vmax at 50% 48%);transition:opacity .7s}body[data-view=entrance] .site-header{color:#262d35}body[data-view=entrance] .experience-footer{color:#737a80}.entry-center{position:absolute;left:50%;top:48%;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;text-align:center;width:100%}.entry-kicker{font-size:9px;letter-spacing:.28em;color:#7c8285;margin-bottom:34px}.lens{width:192px;height:192px;border-radius:50%;position:relative;display:grid;place-items:center;isolation:isolate;box-shadow:0 22px 38px -22px #1b283b77,0 1px 2px #0005;transition:transform .8s var(--ease),box-shadow .8s;background:#252a2e}.lens:hover{transform:scale(1.065);box-shadow:0 25px 45px -18px #1b283b66}.lens-rim{position:absolute;inset:0;border-radius:50%;background:conic-gradient(from 30deg,#4d5358,#15191e 12%,#757b7d 27%,#31373c 35%,#11151b 50%,#a8acad 66%,#2b3036 79%,#62686a);box-shadow:inset 0 0 0 1px #a0a4a3,inset 0 0 0 4px #10141a,inset 0 0 0 5px #636a6e}.lens-ticks{position:absolute;inset:9px;border-radius:50%;background:repeating-conic-gradient(#747d8177 0deg .4deg,transparent .4deg 4deg);mask:radial-gradient(transparent 62%,#000 63%);border:1px solid #737e8777}.lens-glass{position:absolute;inset:20px;border-radius:50%;background:radial-gradient(ellipse at 27% 25%,#43535d 0,transparent 28%),radial-gradient(ellipse at 73% 72%,#22475177 0,transparent 38%),radial-gradient(circle,#090f19 30%,#152331 54%,#263445 58%,#030811 61%,#2b353d 63%,#05090d 65%);box-shadow:inset 1px 2px 5px #000,0 0 0 1px #9da6ac44}.aperture{position:absolute;inset:36px;width:120px;height:120px;color:#95a6ac;opacity:.3;transition:transform 1.6s var(--ease)}.lens:hover .aperture{transform:rotate(55deg)}.lens-center{position:relative;z-index:2;color:#eef1f1;font-size:10px;letter-spacing:.19em}.lens-center>span{display:block;font-size:7px;letter-spacing:.22em;margin-top:8px;color:#a8b6c1}.lens-glint{position:absolute;inset:27px;border-radius:50%;background:linear-gradient(140deg,#dbe9e424 0,transparent 42%,transparent);pointer-events:none}.entry-center h1{font-size:36px;letter-spacing:-.03em;margin-top:40px}.entry-center p{font-size:10px;color:#7b8083;margin-top:11px;letter-spacing:.04em}.entry-bottom{position:absolute;inset:auto 4.3vw 88px;display:flex;justify-content:space-between;font-size:10px;color:#7c8287}.entry-bottom button{font-size:10px;color:#4a535e}.entry-bottom button span{margin-left:13px}.departing #entrance{animation:depart 1s var(--ease) forwards}.departing .lens{animation:lens-open 1s var(--ease) forwards}.departing .entry-center h1,.departing .entry-center p,.departing .entry-kicker,.departing .entry-bottom{opacity:0;transition:opacity .25s}@keyframes depart{0%{opacity:1}50%{opacity:1}100%{opacity:0}}@keyframes lens-open{0%{transform:scale(1)}100%{transform:scale(20);filter:brightness(.25)}}
#journey{position:absolute;inset:0}.journey-caption{position:absolute;left:50%;bottom:13%;transform:translateX(-50%);font-size:9px;letter-spacing:.34em;white-space:nowrap;text-align:center;color:#dce8f1}.journey-line{height:1px;width:120px;background:#ffffff20;margin:20px auto 0}.journey-line i{height:1px;width:100%;background:#c3d9ed;display:block;transform-origin:left;animation:travel-progress 6s linear forwards}#skip-journey{position:absolute;right:4.3vw;top:130px;font-size:11px}#skip-journey span{margin-left:10px}@keyframes travel-progress{from{transform:scaleX(0)}to{transform:scaleX(1)}}body[data-view=journey] .header-note,body[data-view=journey] .experience-footer{opacity:0}
#universe,#constellation{position:absolute;inset:112px 0 72px}.universe-intro{position:absolute;left:6.6%;top:8%;z-index:4;pointer-events:none}.eyebrow{font-size:9px;letter-spacing:.22em;line-height:1.6;color:#bac3cf}.tiny-star{font-size:20px;vertical-align:-2px;display:inline-block;margin-right:9px}.universe-intro h1{font-size:clamp(54px,6.5vw,106px);line-height:.92;letter-spacing:-.035em;margin:22px 0}.universe-intro h1 em{color:#d9cbb4}.universe-intro p{font-size:12px;line-height:1.9;color:#aab4c1}.universe-foot{position:absolute;bottom:18px;left:6.6%;right:6.6%;display:flex;align-items:center;justify-content:space-between}.coordinates{display:flex;align-items:center;gap:13px;font-size:8px;letter-spacing:.2em;color:#d0d8e0}.orbit-mark{font-size:34px;font-weight:100;color:#899cae}.coordinates small{display:block;font-size:10px;letter-spacing:0;color:#8999aa;margin-top:6px}.quiet-link{font-size:11px;color:#c3c9d1;padding:10px 0}.quiet-link span{margin-left:18px}#galaxies{position:absolute;inset:0}.galaxy{position:absolute;left:var(--x);top:var(--y);transform:translate(-50%,-50%);width:var(--size);height:var(--size);border-radius:50%;display:grid;place-items:center;isolation:isolate;outline-offset:12px!important;--glow:#e3c19b}.galaxy::before{content:'';position:absolute;inset:-70%;background:radial-gradient(ellipse,color-mix(in srgb,var(--glow) 17%,transparent),transparent 63%);z-index:-2;opacity:.8;transform:scaleY(.7) rotate(-25deg);transition:opacity 1s,transform 2s}.galaxy:hover::before,.galaxy:focus-visible::before{opacity:1;transform:scaleY(.85) scale(1.2) rotate(-25deg)}.galaxy-ring{position:absolute;inset:-15%;border:1px solid color-mix(in srgb,var(--glow) 23%,transparent);border-radius:50%;transform:rotate(-30deg) scaleY(.63);transition:transform 1.5s var(--ease);pointer-events:none}.galaxy-ring::after{content:'';width:3px;height:3px;background:#e2d3b6;border-radius:50%;position:absolute;left:13%;top:14%;box-shadow:0 0 8px #fff}.galaxy:hover .galaxy-ring{transform:rotate(-12deg) scaleY(.75) scale(1.1)}.galaxy-orb{position:absolute;inset:0;border-radius:50%;overflow:hidden;box-shadow:0 0 55px -7px color-mix(in srgb,var(--glow) 25%,transparent),inset 0 0 25px #0008;transition:transform 1.3s var(--ease);background:#10151d}.galaxy-orb::after{content:'';position:absolute;inset:0;border-radius:50%;background:radial-gradient(circle at 37% 33%,transparent 20%,#050b1477 75%,#080d18cc 100%);box-shadow:inset 0 0 19px 3px #0007,inset 1px 1px 2px #d7e6ff44}.galaxy-orb img{width:100%;height:100%;object-fit:cover;filter:saturate(.75) brightness(.85);transition:filter .8s,transform 1.5s var(--ease)}.galaxy:hover .galaxy-orb{transform:scale(1.07)}.galaxy:hover img{filter:saturate(1) brightness(1);transform:scale(1.05)}.galaxy-label{position:absolute;top:calc(100% + 23px);left:50%;transform:translateX(-50%);white-space:nowrap;text-align:center}.galaxy-label strong{display:block;font-family:Cormorant,Georgia,serif;font-size:26px;font-weight:400;letter-spacing:.01em}.galaxy-label small{display:block;font-size:8px;letter-spacing:.18em;color:#a7b2c0;margin-top:7px;text-transform:uppercase}.satellite{position:absolute;width:var(--s);height:var(--s);left:var(--sx);top:var(--sy);border-radius:50%;overflow:hidden;box-shadow:0 0 14px color-mix(in srgb,var(--glow) 20%,transparent);border:1px solid #b9cae222;opacity:.8;transition:transform 1.4s var(--ease),opacity .8s;pointer-events:none}.satellite img{width:100%;height:100%;object-fit:cover;filter:brightness(.7) saturate(.7)}.galaxy:hover .satellite{transform:translate(5px,-6px);opacity:1}.galaxy-number{position:absolute;top:-17px;left:calc(100% + 8px);font-size:8px;letter-spacing:.15em;color:#9ba9bb}
/* Constellations preserve an editorial rhythm while offering a flat collection view. */
.galaxy-intro{position:absolute;top:4%;left:6.6%;pointer-events:none}.galaxy-intro .back{pointer-events:auto}.back{font-size:11px;margin-bottom:27px;padding:5px 0;color:#c4cbd5}.back span{margin-left:9px}.galaxy-intro h1{font-size:clamp(47px,5.5vw,82px);letter-spacing:-.025em;line-height:1.05;margin:12px 0}.galaxy-intro p{font-size:12px;line-height:1.8;color:#b4bdc9;max-width:290px}.constellation-foot{position:absolute;left:6.6%;right:6.6%;bottom:5px;display:flex;align-items:center;justify-content:space-between;font-size:10px;color:#aab5c4}.page-controls{display:flex;gap:24px;align-items:center}.page-controls span{font-size:8px;letter-spacing:.18em}.page-controls button{width:44px;height:44px;border:1px solid #ffffff24;border-radius:50%;font-size:18px}.page-controls button:hover{background:#ffffff10}#photo-stars{position:absolute;inset:0;pointer-events:none}.photo-star{position:absolute;left:var(--x);top:var(--y);width:var(--size);height:var(--size);transform:translate(-50%,-50%);border-radius:50%;z-index:2;padding:0;--glow:#819dad;animation:appear 1.2s var(--ease) both;animation-delay:var(--delay)}.photo-star .photo-shell{display:block;width:100%;height:100%;overflow:hidden;border-radius:50%;box-shadow:0 0 52px -15px var(--glow);transition:border-radius .9s var(--ease),transform 1s var(--ease),box-shadow 1s;position:relative;background:#111822}.photo-star .photo-shell::after{content:'';position:absolute;inset:0;box-shadow:inset 0 0 20px #01050a77;border-radius:inherit;transition:opacity .7s}.photo-star img{width:100%;height:100%;object-fit:cover;transition:filter .8s,transform 1s;filter:brightness(.84) saturate(.86)}.photo-star:hover{z-index:5}.photo-star:hover .photo-shell,.photo-star:focus-visible .photo-shell{transform:scale(1.14);box-shadow:0 0 70px -18px var(--glow)}.photo-star:hover img{filter:brightness(1) saturate(1);transform:scale(1.035)}.photo-star:hover .photo-shell::after{opacity:0}.photo-caption{position:absolute;top:calc(100% + 16px);left:50%;transform:translateX(-50%);font-family:Cormorant,Georgia,serif;font-size:18px;white-space:nowrap;opacity:0;transition:opacity .5s}.photo-star:hover .photo-caption,.photo-star:focus-visible .photo-caption{opacity:1}.photo-index{position:absolute;top:4px;right:-16px;font-size:8px;color:#a9bbcd;letter-spacing:.12em}.photo-star::before{content:'';position:absolute;inset:-9%;border:1px solid #becfe512;border-radius:50%;pointer-events:none}.photo-star:nth-child(3n)::before{inset:-17%;transform:scaleY(.65) rotate(-30deg)}@keyframes appear{from{opacity:0;translate:0 20px;scale:.85}to{opacity:1;translate:0 0;scale:1}}.arriving{animation:world-arrival 1.8s var(--ease) both}@keyframes world-arrival{from{opacity:0;filter:blur(6px);transform:scale(1.035)}to{opacity:1;filter:blur(0);transform:scale(1)}}
/* Dialogs use the browser's top layer: focus and Escape remain native. */
dialog{color:var(--ink);border:0;padding:0;background:#080c13;max-width:100vw;max-height:100svh;width:100vw;height:100svh}dialog::backdrop{background:#030609d9;backdrop-filter:blur(12px)}#archive{padding:45px 5vw 70px;overflow:auto}#archive[open]{animation:world-arrival .6s var(--ease)}.archive-head{display:flex;justify-content:space-between;align-items:center}.archive-head h2{font-size:52px;margin:10px 0 20px;letter-spacing:-.02em}.round-control{width:44px;height:44px;border:1px solid #ffffff30;border-radius:50%;font-size:24px;display:grid;place-items:center;flex-shrink:0}.round-control:hover{background:#ffffff0e}#archive-filters{display:flex;gap:10px;margin:20px 0;flex-wrap:wrap}#archive-filters button{border:1px solid #ffffff20;border-radius:30px;font-size:11px;padding:11px 17px}#archive-filters button[aria-pressed=true]{background:#ecebe5;color:#10141a}#archive-count{font-size:11px;color:#a7b1bd;margin-bottom:24px}#archive-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:35px 20px}.archive-photo{padding:0;text-align:left;overflow:hidden;display:flex;flex-direction:column}.archive-photo img{width:100%;height:240px;object-fit:contain;background:#070a0f;transition:filter .4s;filter:brightness(.9)}.archive-photo:hover img{filter:brightness(1.1)}.archive-photo span{font-family:Cormorant,Georgia,serif;font-size:21px;margin-top:12px}.archive-photo small{font-size:9px;color:#aab4c2;margin-top:5px}.lightbox-top{position:absolute;top:30px;left:4.3vw;right:4.3vw;display:flex;justify-content:space-between;align-items:center;z-index:3;font-size:10px;letter-spacing:.22em;text-transform:uppercase}#lightbox{background:#070a10f5;overflow:hidden}#lightbox[open]{animation:lightbox-in .6s var(--ease)}.lightbox-stage{position:absolute;inset:90px 8vw 126px;display:flex;align-items:center;justify-content:center;isolation:isolate}#lightbox-image{display:block;width:100%;height:100%;object-fit:contain;position:relative;z-index:1;transition:opacity .25s}#image-aura{position:absolute;inset:10%;background:radial-gradient(ellipse,var(--image-color,#233644),transparent 68%);opacity:.28;filter:blur(50px);z-index:-1}#image-status{position:absolute;z-index:2;font-size:11px;background:#080b12ce;padding:15px;color:#dae0e9}.lightbox-bottom{position:absolute;bottom:30px;left:8vw;right:8vw;display:flex;justify-content:space-between;align-items:end}.lightbox-bottom h2{font-size:32px;margin-top:9px}.lightbox-controls{display:flex;gap:10px}.lightbox-controls button{font-size:18px}.notice{position:fixed;bottom:65px;left:50%;transform:translateX(-50%);z-index:99;background:#17212deb;border:1px solid #a6c8e44d;border-radius:4px;padding:12px 20px;font-size:12px;max-width:90vw}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.noscript-message{position:fixed;z-index:100;bottom:0;left:0;right:0;padding:30px;background:#10151e;text-align:center}.no-webgl #cosmos{display:none}@keyframes lightbox-in{from{opacity:0}to{opacity:1}}
@media(min-width:1600px){.galaxy{width:calc(var(--size)*1.15);height:calc(var(--size)*1.15)}}
@media(max-width:1000px){.header-note{display:none}.site-header nav{gap:20px}.universe-intro{left:5%;top:5%}.universe-intro h1{font-size:68px}.galaxy{width:calc(var(--size)*.8);height:calc(var(--size)*.8)}.galaxy-label strong{font-size:23px}.galaxy-intro{left:5%}.galaxy-intro h1{font-size:64px}.photo-star{width:calc(var(--size)*.8);height:calc(var(--size)*.8)}#archive-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.archive-photo img{height:210px}}
@media(max-width:680px){.site-header{height:86px;padding:0 24px}.wordmark{font-size:20px;gap:10px}.wordmark span{font-size:7px;padding-left:10px}.site-header nav{gap:17px;font-size:10px}#universe-link{display:none!important}#sound{min-width:18px}#sound span{display:none}.header-note{display:none}.entry-kicker{font-size:8px;letter-spacing:.22em}.lens{width:176px;height:176px}.aperture{width:104px;height:104px}.entry-center{top:46%}.entry-center h1{font-size:33px}.entry-bottom{bottom:106px;left:24px;right:24px;flex-direction:column;gap:18px;align-items:center}.entry-bottom>span{display:none}.experience-footer{inset:auto 24px 21px;font-size:7px;gap:15px}.experience-footer>div{gap:17px}.experience-footer button{font-size:9px}.sky-credit{font-size:7px;position:absolute;bottom:27px;right:0}#footer-left{max-width:110px;line-height:1.6}#universe,#constellation{inset:86px 0 82px}.universe-intro{left:28px;top:3%;}.universe-intro .eyebrow{font-size:7px}.tiny-star{font-size:16px}.universe-intro h1{font-size:52px;margin:13px 0;line-height:.95}.universe-intro p{font-size:10px;line-height:1.7}.galaxy{left:var(--mx);top:var(--my);width:var(--ms);height:var(--ms)}.galaxy-label{top:calc(100% + 13px)}.galaxy-label strong{font-size:21px}.galaxy-label small{font-size:6px;letter-spacing:.12em;margin-top:5px}.galaxy-number{display:none}.satellite{scale:.65}.galaxy-ring{inset:-15%}.universe-foot{left:28px;right:28px;bottom:-3px}.coordinates{display:none}.universe-foot .quiet-link{font-size:10px;margin-left:auto}.galaxy-intro{top:1%;left:28px}.back{margin-bottom:17px;font-size:10px}.galaxy-intro .eyebrow{font-size:7px}.galaxy-intro h1{font-size:47px;margin:9px 0}.galaxy-intro p{font-size:10px;max-width:235px}.photo-star{left:var(--mx);top:var(--my);width:var(--ms);height:var(--ms)}.photo-star:nth-child(n+7){display:none}.photo-caption{font-size:15px}.photo-index{font-size:6px;right:-12px}.constellation-foot{left:24px;right:24px;bottom:-15px;gap:10px}.constellation-foot>span{font-size:8px}.constellation-foot .quiet-link{font-size:9px;max-width:65px;text-align:right;line-height:1.5}.page-controls{gap:10px}.page-controls span{display:none}.page-controls button{width:39px;height:39px}#skip-journey{top:90px;right:24px;font-size:10px}.journey-caption{font-size:8px;bottom:17%}#archive{padding:26px 22px 60px}.archive-head h2{font-size:36px;margin-top:8px}.archive-head .eyebrow{font-size:8px}#archive-filters{gap:7px}#archive-filters button{padding:10px 12px;font-size:9px}#archive-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:25px 14px}.archive-photo img{height:190px}.archive-photo span{font-size:19px}.archive-photo small{font-size:8px}.round-control{width:40px;height:40px}.lightbox-top{top:23px;left:24px;right:24px;font-size:8px}.lightbox-stage{inset:90px 15px 130px}.lightbox-bottom{left:24px;right:24px;bottom:35px}.lightbox-bottom h2{font-size:26px;max-width:230px}.lightbox-bottom .eyebrow{font-size:7px}.lightbox-controls{gap:7px}.lightbox-controls .round-control{width:37px;height:37px}.notice{font-size:11px;width:max-content}}
@media(max-height:700px) and (min-width:681px){.site-header{height:80px}#universe,#constellation{inset:80px 0 65px}.universe-intro h1{font-size:63px}.galaxy{width:calc(var(--size)*.77);height:calc(var(--size)*.77)}.galaxy-label strong{font-size:22px}.galaxy-intro h1{font-size:57px}.photo-star{width:calc(var(--size)*.76);height:calc(var(--size)*.76)}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-delay:0ms!important;transition-duration:.01ms!important}html{scroll-behavior:auto}}body.reduced *,body.reduced *::before,body.reduced *::after{animation-duration:.01ms!important;animation-delay:0ms!important;transition-duration:.01ms!important}

/* Clip atmospheric glow at the viewport: oversized halos previously caused horizontal document overflow. */
#galaxies,#photo-stars{overflow:clip}

.photo-flight{position:fixed;z-index:10;object-fit:cover;pointer-events:none;box-shadow:0 0 35px #05091155}
/* A 499px-tall phone canvas compressed labels into the next world at 375x667.
   Keep the same 690px composition and let short screens scroll it within the fixed frame. */
@media(max-width:680px) and (max-height:760px){body:is([data-view=universe],[data-view=constellation]) main{position:absolute;inset:86px 0 68px;overflow-y:auto;scrollbar-width:thin;scrollbar-color:#71829633 transparent}#universe,#constellation{position:relative;inset:auto;min-height:690px;height:690px}.universe-foot{bottom:10px}.constellation-foot{bottom:8px}}
@media(min-width:681px) and (max-height:520px){body:is([data-view=universe],[data-view=constellation]) main{position:absolute;inset:80px 0 58px;overflow-y:auto}#universe,#constellation{position:relative;inset:auto;height:620px;min-height:620px}.universe-intro h1{font-size:56px}.universe-intro p{font-size:11px}}
h1[tabindex="-1"]:focus{outline:none}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}
body.reduced *,body.reduced *::before,body.reduced *::after{animation:none!important;transition:none!important}
@media(max-width:680px) and (max-height:760px){.universe-intro p::after,.galaxy-intro p::after{content:'Scroll to explore ↓';display:block;margin-top:8px;color:#d4dce5;font-size:9px}}

/* R1: a continuous photographic volume. The old eight-slot constellation is
   replaced by one camera and persistent photo stars, with controls outside it. */
#constellation{isolation:isolate;overflow:hidden}
#constellation .galaxy-intro{top:12px;z-index:6;max-width:360px;pointer-events:none;text-shadow:0 2px 18px #03060a}
#constellation .galaxy-intro h1{font-size:clamp(44px,4.6vw,70px);margin:8px 0}
#constellation .back{margin-bottom:19px}
#space-count{display:block;margin-top:16px;font-size:10px;letter-spacing:.09em;color:#dfccb0}
#space-viewport{position:absolute;inset:12px 2vw 115px;overflow:hidden;touch-action:none;cursor:grab;outline-offset:-3px}
#space-viewport:focus-visible{outline:1px solid #d5c4a060}
#space-viewport.dragging{cursor:grabbing}
#galaxy-dust{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
#space-viewport #photo-stars{inset:0;overflow:hidden;pointer-events:none}
#experience .space-star{position:absolute;left:0;top:0;width:160px;height:160px;margin:0;padding:0;border-radius:50%;transform-origin:50% 50%;animation:none;touch-action:none;pointer-events:auto;outline-offset:12px;cursor:crosshair;will-change:transform;isolation:isolate}
.space-photo{position:absolute;inset:0;border-radius:50%;overflow:hidden;background:#11161c;pointer-events:none;box-shadow:0 0 24px -12px var(--star-color);will-change:transform,opacity}
.space-photo img{width:100%;height:100%;object-fit:cover;filter:brightness(.89) saturate(.9);pointer-events:none;user-select:none}
.space-photo::after{content:'';position:absolute;inset:0;border-radius:inherit;box-shadow:inset 0 0 20px #02061070,inset 1px 1px 1px #d0dcea55;pointer-events:none}
.star-spark{position:absolute;left:50%;top:50%;width:5px;height:5px;border-radius:50%;background:#f8f1df;box-shadow:0 0 6px 2px var(--star-color),0 0 18px 5px color-mix(in srgb,var(--star-color) 28%,transparent);pointer-events:none}
.star-spark::before,.star-spark::after{content:'';position:absolute;left:50%;top:50%;width:22px;height:1px;background:linear-gradient(90deg,transparent,#e8e3cc88,transparent);transform:translate(-50%,-50%)}
.star-spark::after{width:1px;height:22px;background:linear-gradient(0deg,transparent,#e8e3cc88,transparent)}
.space-star.resolved{cursor:pointer!important}
.space-star.resolved:hover .space-photo img,.space-star.resolved:focus-visible .space-photo img{filter:brightness(1.08) saturate(1)}
.space-star.selected.resolved .space-photo{outline:1px solid #e7cf9c66;outline-offset:7px}
.space-star.image-failed .space-photo::after{content:'Open photograph';display:grid;place-items:center;background:#131c29;font-size:12px}
.space-reticle{position:absolute;left:50%;top:50%;width:7px;height:7px;border:1px solid #ece4cc35;border-radius:50%;transform:translate(-50%,-50%);pointer-events:none}
.space-map{position:absolute;left:6.6%;bottom:128px;width:155px;z-index:6;text-align:center;pointer-events:none}
.space-map button{display:block;width:100%;padding:0;pointer-events:auto}
.space-map canvas{display:block;width:100%;height:auto;opacity:.75;transition:opacity .3s}
.space-map button:hover canvas{opacity:1}
.space-map button span{font-size:8px;letter-spacing:.18em;color:#d3c9b5}.space-map b{font-weight:400;margin-left:6px}
#space-discovered{display:block;font-size:8px;color:#98a5b5;margin-top:8px}
.space-bottom{position:absolute;bottom:5px;left:6.6%;right:6.6%;z-index:7;display:grid;grid-template-columns:1fr auto 1fr;align-items:end;gap:24px;pointer-events:none}
.space-instructions{max-width:340px;line-height:1.7}.space-instructions p:first-child{font-family:Cormorant,Georgia,serif;font-size:19px;color:#e5dcca;min-height:32px}
#space-help{font-size:9px;color:#a0adbd;margin-top:4px}.touch-help{display:none}
.flight-console{display:flex;align-items:center;gap:14px;pointer-events:auto;padding-bottom:1px}
.flight-console>button{width:44px;height:44px;border:1px solid #a3b2c338;border-radius:50%;font-size:23px;touch-action:none}
.flight-console>button:hover{background:#d3d7df0c}.flight-console>button:active{background:#d3d7df22}
.depth-track{width:140px;text-align:center;display:flex;flex-direction:column;gap:10px}
.depth-track label{font-size:7px;letter-spacing:.16em;color:#c9c3b8}
#travel-depth{display:block;width:100%;height:18px;margin:0;accent-color:#dfc99e;cursor:ew-resize;touch-action:pan-y;appearance:none;background:transparent}
#travel-depth::-webkit-slider-runnable-track{height:1px;background:#8e9baa75}
#travel-depth::-webkit-slider-thumb{appearance:none;width:9px;height:9px;margin-top:-4px;border-radius:50%;background:#e7d3ad;box-shadow:0 0 9px #ddc99c55}
#travel-depth::-moz-range-track{height:1px;background:#8e9baa75}#travel-depth::-moz-range-thumb{width:9px;height:9px;border:0;border-radius:50%;background:#e7d3ad}
.space-bottom .quiet-link{justify-self:end;pointer-events:auto;font-size:10px;padding:12px 0}
@media(max-width:1000px){.space-bottom{gap:14px;left:5%;right:5%;grid-template-columns:1fr auto}.space-bottom .quiet-link{position:absolute;right:0;bottom:65px}.space-instructions p:first-child{font-size:17px}.space-map{left:5%}#constellation .galaxy-intro{left:5%;max-width:300px}}
@media(max-width:680px){
 body[data-view=constellation] main{position:static;overflow:hidden}
 #constellation{position:absolute;inset:86px 0 80px;min-height:0;height:auto}
 #constellation .galaxy-intro{left:24px;top:0;max-width:calc(100% - 48px)}
 #constellation .back{margin-bottom:10px;font-size:10px}
 #constellation .galaxy-intro .eyebrow{font-size:6px}
 #constellation .galaxy-intro h1{font-size:38px;margin:5px 0}
 #constellation .galaxy-intro p{font-size:9px;max-width:none}#constellation .galaxy-intro p::after{display:none}
 #space-count{font-size:8px;margin-top:8px}
 #space-viewport{inset:136px 0 138px}
 .space-map{left:auto;right:20px;bottom:143px;width:94px}
 .space-map button span{font-size:6px}#space-discovered{font-size:7px;margin-top:5px}
 .space-bottom{left:24px;right:24px;bottom:0;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:7px}
 .space-instructions{width:100%;max-width:none}.space-instructions p:first-child{font-size:16px;min-height:24px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
 #space-help{font-size:8px;margin-top:1px}.desktop-help{display:none}.touch-help{display:inline}
 .flight-console{gap:10px;margin-top:5px}.flight-console>button{width:40px;height:40px}
 .depth-track{width:100px;gap:6px}.depth-track label{font-size:6px}
 .space-bottom .quiet-link{position:static;font-size:8px;width:75px;text-align:right;line-height:1.6}
}
@media(max-width:680px) and (max-height:720px){
 #constellation .galaxy-intro h1{font-size:33px}#constellation .galaxy-intro p{display:none}
 #space-viewport{top:115px;bottom:124px}.space-map{bottom:128px;width:75px}.space-map canvas{display:none}
 #space-help{margin-top:0}.space-bottom{gap:3px}
}
/* A short landscape viewport used to inherit the old 620px scrollable stage,
   clipping flight controls. Keep navigation in view and frame the sky beside
   the compact title instead of forcing an oversized page. */
@media(min-width:681px) and (max-height:520px){
 body[data-view=constellation] main{position:static;overflow:hidden}
 #constellation{position:absolute;inset:80px 0 58px;min-height:0;height:auto}
 #constellation .galaxy-intro{top:0;max-width:250px}
 #constellation .galaxy-intro h1{font-size:34px}
 #constellation .galaxy-intro p{display:none}
 #constellation .back{margin-bottom:7px}
 #constellation .galaxy-intro .eyebrow{font-size:6px}
 #space-count{font-size:8px;margin-top:7px}
 #space-viewport{inset:0 15px 72px 34%}
 .space-map{bottom:78px;width:110px}.space-map canvas{display:none}#space-discovered{margin-top:5px}
 .space-bottom{bottom:0}.space-instructions p:first-child{font-size:14px;min-height:0}
 #space-help{font-size:8px}.space-bottom .quiet-link{bottom:58px}
}
/* Keep projected stars in their own stacking context. Large nearby image
   z-indices previously crossed above the map and intercepted Return clicks. */
#space-viewport{z-index:1}
.space-map button{min-height:32px}
@media(max-width:680px){.space-map button span{font-size:7px}#space-discovered{font-size:8px}.flight-console>button{width:44px;height:44px}}

/* Fade the lens boundary instead of visibly slicing nearby photographs at the
   inset scene edge. Narrow side / taller vertical fades preserve the full
   entry constellation while blending flying images into the control margins. */
#space-viewport #photo-stars{mask-image:linear-gradient(90deg,transparent,#000 3%,#000 97%,transparent),linear-gradient(0deg,transparent,#000 8%,#000 92%,transparent);mask-composite:intersect}

/* R2 shares the sky, camera and projected origin between the map and a galaxy.
   Both photographic layers coexist for the flight; only their HUDs fade. */
body.galaxy-flight main{position:static!important;overflow:visible!important}
body.galaxy-flight #universe,body.galaxy-flight #constellation{overflow:visible}
body.galaxy-flight #galaxies{overflow:visible}
body.galaxy-flight .galaxy{will-change:transform,opacity}
body.galaxy-flight #space-viewport,body.galaxy-flight #photo-stars{overflow:visible;pointer-events:none}
body.galaxy-flight #universe,body.galaxy-flight #constellation{pointer-events:none}
body.galaxy-flight .galaxy-orb,body.galaxy-flight .galaxy-orb img{transform:none;transition:none}
body.galaxy-flight .galaxy-label,body.galaxy-flight .satellite{opacity:0;transition:opacity .35s}
body.galaxy-flight .header-note{opacity:.25}
#galaxy-transit-controls{position:fixed;z-index:20;bottom:115px;left:50%;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:15px;pointer-events:none;color:#e3ddcf;text-align:center}
#galaxy-transit-caption{font-size:9px;letter-spacing:.25em;white-space:nowrap;text-shadow:0 2px 12px #000}
.galaxy-transit-progress{height:1px;width:100px;background:#ffffff20;overflow:hidden}
.galaxy-transit-progress i{display:block;height:1px;background:#ddc9a1;transform-origin:left}
#skip-galaxy-flight{font-size:10px;pointer-events:auto;min-height:36px;padding:7px 14px}
@media(max-width:680px){#galaxy-transit-controls{bottom:106px}#galaxy-transit-caption{font-size:8px}}
@media(max-height:520px){#galaxy-transit-controls{bottom:65px;gap:7px}#galaxy-transit-caption{font-size:7px}}

/* R3's destination compass stays beside the return control, leaving the photo
   field clear. The earlier overview-only navigation interrupted exploration. */
.galaxy-nav{position:absolute;right:6.6%;top:14px;z-index:9;pointer-events:auto}
/* A 44px compass target replaces the initial 36px hit area so touch users
   can open destinations without a precise tap beside the small return label. */
.galaxy-nav summary{-webkit-tap-highlight-color:transparent;list-style:none;cursor:pointer;display:flex;align-items:center;gap:16px;font-size:11px;letter-spacing:.03em;color:#e0d5bf;min-height:44px;padding:7px 0;user-select:none}
.galaxy-nav summary::-webkit-details-marker{display:none}.galaxy-nav summary span{font-size:18px;transition:transform .35s}.galaxy-nav[open] summary span{transform:rotate(45deg)}
.galaxy-nav summary:focus-visible{outline:1px solid #e0d5bf;outline-offset:5px}
.galaxy-route-panel{position:absolute;right:0;top:calc(100% + 9px);width:312px;padding:22px 20px 14px;border:1px solid #9eb3c833;background:linear-gradient(145deg,#17212bf5,#070d15fa);border-radius:3px;box-shadow:0 20px 70px #0008}
.galaxy-route-panel>.eyebrow{font-size:7px;letter-spacing:.16em;color:#a6b6c8;margin-bottom:12px}
.galaxy-destination{display:flex;align-items:center;gap:14px;width:100%;min-height:61px;padding:8px 0;text-align:left;border-bottom:1px solid #9eb3c817}
.galaxy-destination img{width:39px;height:39px;flex-shrink:0;border-radius:50%;object-fit:cover;box-shadow:0 0 18px #9fb3cc18;transition:transform .5s}
.galaxy-destination>span:not(.route-arrow){flex:1}.galaxy-destination strong{font:400 22px/1.1 Cormorant,Georgia,serif;display:block;color:#e6e5e0}.galaxy-destination small{font-size:6px;letter-spacing:.11em;color:#9cabbc;display:block;margin-top:6px}
.route-arrow{font-size:17px;color:#a2b1c0}.galaxy-destination:hover img{transform:scale(1.1)}.galaxy-destination:hover .route-arrow{color:#fff}.route-note{font-size:8px;color:#91a0b2;margin-top:14px}
@media(max-width:680px){.galaxy-nav{right:24px;top:-7px}.galaxy-nav summary{font-size:10px;gap:9px;min-height:44px}.galaxy-route-panel{width:min(312px,calc(100vw - 48px));top:100%;padding:19px 18px 14px}}
/* Keep the expanded compass within the short landscape scene; its four
   destinations scroll inside the panel instead of falling behind the footer. */
@media(min-width:681px) and (max-height:520px){.galaxy-nav{right:20px;top:0}.galaxy-route-panel{width:360px;max-height:calc(100svh - 205px);overflow-y:auto;padding:12px 16px}.galaxy-route-panel>.eyebrow{margin-bottom:5px}.galaxy-destination{min-height:48px;padding:6px 0}.galaxy-destination img{width:32px;height:32px}.galaxy-destination strong{font-size:20px}.route-note{margin-top:9px}}

/* A standalone return must not flash the bright lens page while the catalog loads. */
body[data-view=resuming] #entrance{display:none}

/* The return shortcut sits below the byline without moving the lens. Before this,
   the only shortcut led to the overview. A 44px target supports taps; 24px of air
   keeps the return secondary to the physical lens on desktop and portrait phones. */
.entry-return{position:absolute;top:calc(100% + 24px);display:flex;flex-direction:column;align-items:center;gap:9px;max-width:calc(100% - 48px)}
.entry-return a{display:inline-flex;align-items:center;justify-content:center;gap:22px;min-height:44px;padding:0 22px;border:1px solid #667b8d70;border-radius:30px;color:#354b60;font-size:11px;text-decoration:none;white-space:nowrap}
.entry-return a:hover,.entry-return a:focus-visible{background:#e4e9ec;border-color:#354b60}
.entry-return>span{font-size:9px;letter-spacing:.04em;color:#586977}
.departing .entry-return{opacity:0;pointer-events:none}
/* Absolute centering previously left too little room for another entrance action
   on short screens. A scrollable 660px stage below the header keeps lens, return
   and skip controls apart in landscape and at zoom without shrinking tap targets. */
@media(max-height:660px){
 body[data-view=entrance] main{position:absolute;inset:86px 0 62px;overflow-y:auto}
 #entrance{position:relative;inset:auto;min-height:660px;clip-path:none}
 .entry-center{top:230px}
 .entry-bottom{bottom:70px}
}

/* The returning entrance is a temporary paper veil above the real galaxy, not a
   second scene. Skip stays above it. Avoid the old opacity transition lagging
   behind the flight's own frame timing, and remove this layer fully on landing. */
body.resume-flight #entrance{z-index:6;transition:none;pointer-events:none}
body.resume-flight #cosmos,body.resume-flight .sky-shade{transition:none}
/* On narrow screens the arriving instructions shared the flight caption's space.
   Keep exploration controls out of the handoff until Skip gives way to them. */
body.resume-flight .space-bottom{visibility:hidden}
/* During the paper-to-night dissolve, inherited white navigation disappeared
   against the entrance. A brief color shift keeps navigation legible at takeoff. */
body.resume-from-entrance .site-header{animation:return-header .4s linear both}
@keyframes return-header{from{color:#262d35}to{color:var(--ink)}}
