@font-face{font-family:Cormorant;src:url('assets/cormorant.ttf') format('truetype');font-style:normal;font-weight:300;font-display:swap}
@font-face{font-family:Cormorant;src:url('assets/cormorant-italic.ttf') format('truetype');font-style:italic;font-weight:300;font-display:swap}
:root{--paper:#e5e4d8;--muted:#b2b9a8;--signal:#c7b389;--ink:#101715;--edge:36px;--control:44px;--line:#e5e4d830;--mono:'Courier New',monospace;--serif:Cormorant,Georgia,serif;--ease:cubic-bezier(.22,1,.36,1)}
*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:clip;background:var(--ink);color:var(--paper)}body{font:11px var(--mono);-webkit-font-smoothing:antialiased}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;background:none;border:none;cursor:pointer;touch-action:manipulation}button:disabled{cursor:wait;opacity:.5}button:focus-visible,a:focus-visible,#scene:focus-visible{outline:1px solid var(--signal);outline-offset:5px}a{color:inherit;text-underline-offset:5px}[hidden]{display:none!important}
#installation{position:relative;width:100%;height:100dvh;isolation:isolate;overflow:clip;background:#101715}#scene{position:absolute;inset:0;touch-action:none;z-index:0}#scene canvas{display:block;width:100%;height:100%}#scene.over-photo{cursor:pointer}.grain{position:absolute;inset:0;opacity:.06;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='.92' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%23fff' filter='url(%23n)' d='M0 0h180v180H0z'/%3E%3C/svg%3E");pointer-events:none;z-index:2}.vignette{position:absolute;inset:0;pointer-events:none;z-index:1;background:linear-gradient(#06100b99,transparent 22%,transparent 75%,#06100b99);box-shadow:inset 0 0 160px 25px #06100b55}header{position:absolute;top:var(--edge);left:var(--edge);right:var(--edge);display:grid;grid-template-columns:1fr auto 1fr;align-items:center;z-index:12;pointer-events:none}header>*{pointer-events:auto}.brand{font-family:var(--serif);font-size:45px;line-height:.7;letter-spacing:-3px;padding:0;justify-self:start}.brand span{color:var(--signal)}.header-credit{font-size:8px;letter-spacing:2.5px;opacity:.7}.header-actions{justify-self:end;display:flex;align-items:center;gap:23px}.header-actions>button:first-child{display:flex;align-items:center;gap:12px;font-size:9px;min-height:44px}.grid-icon{font-size:18px}.round{width:var(--control);height:var(--control);border:1px solid var(--line);border-radius:50%;font-size:18px;display:grid;place-items:center;transition:background .2s,border-color .2s}.round:hover{background:#e4e2d51a;border-color:#e4e2d5aa}#aboutButton{font:italic 23px var(--serif)}
.intro{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:50px 20px 20px;z-index:4;pointer-events:none;transition:opacity 1.8s var(--ease),transform 2.5s var(--ease),filter 2s}.eyebrow{font-size:8px;letter-spacing:3px;margin:0 0 26px;color:#d3d8c7}h1{font-family:var(--serif);font-size:clamp(100px,12.5vw,190px);line-height:.73;letter-spacing:-.055em;font-weight:300;text-align:center;margin:0;text-shadow:0 2px 45px #09140b44}h1 em{display:block;font-size:1.05em;letter-spacing:-.06em;font-weight:300;margin-top:4px}.intro-line{font-size:9px;letter-spacing:1px;margin:31px 0 0;color:#d2d8c6}.entry{display:flex;flex-direction:column;align-items:center;margin-top:38px;pointer-events:auto;gap:10px}#enter{border:1px solid #e4e5d45c;background:#e4e5d40b;backdrop-filter:blur(8px);min-width:208px;padding:0 22px;height:52px;border-radius:30px;display:flex;align-items:center;justify-content:space-between;gap:32px;font-size:10px;transition:background .3s,transform .4s}#enter:hover:not(:disabled){background:var(--paper);color:var(--ink);transform:translateY(-2px)}.entry-arrow{font-size:22px}#enterSilent{font-size:8px;min-height:32px;color:#c3cdb6;letter-spacing:.5px}#enterSilent:hover{color:white}.headphone-note{font-size:7px;letter-spacing:1px;opacity:.5;margin-top:10px}.flying .intro{opacity:0;filter:blur(14px);transform:scale(1.2);pointer-events:none}.flying .entry{pointer-events:none}.intro-away{visibility:hidden}.flying .header-credit{opacity:.4}
#loading{position:absolute;left:50%;bottom:36px;transform:translateX(-50%);display:flex;gap:9px;align-items:center;z-index:5;font-size:8px;color:var(--muted);transition:opacity .6s;white-space:nowrap}#loading>span{width:4px;height:4px;background:var(--signal);border-radius:50%;animation:pulse 1s infinite alternate}#loading p{margin:0}@keyframes pulse{to{opacity:.15}}#loading.complete{opacity:0;pointer-events:none}.journey-caption{position:absolute;left:var(--edge);top:47%;display:flex;align-items:center;gap:17px;z-index:3;pointer-events:none;opacity:0;transition:opacity 2s}.flying .journey-caption{opacity:.75}.journey-caption>span:first-child{font-family:var(--serif);font-size:40px;font-style:italic}.caption-line{height:1px;width:35px;background:var(--line)}.journey-caption p{font-size:7px;letter-spacing:2px;line-height:1.8}.journey-caption small{font-size:6px;letter-spacing:1px;color:#b8c0ad}.inspect{position:absolute;right:var(--edge);top:48%;z-index:4;font-size:8px;letter-spacing:.3px;display:flex;align-items:center;gap:16px;padding:15px 0;color:#d2d8c5;opacity:.65;transition:opacity .25s}.inspect:hover{opacity:1}.inspect>span:last-child{font-size:20px}.slow-notice{position:absolute;bottom:160px;left:50%;transform:translateX(-50%);z-index:4;font-size:7px;letter-spacing:3px;color:#e5e4d8;opacity:0;transition:opacity 1s;pointer-events:none;white-space:nowrap}.holding .slow-notice{opacity:.7}#holdHalo{position:fixed;width:44px;height:44px;border:1px solid #e5e4d855;border-radius:50%;pointer-events:none;z-index:5;opacity:0;transform:translate(-50%,-50%) scale(.5);transition:opacity .6s,transform 1s}.holding #holdHalo{opacity:1;transform:translate(-50%,-50%) scale(1.5)}
footer{position:absolute;bottom:26px;left:var(--edge);right:var(--edge);z-index:12;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:20px;animation:appear 2s var(--ease)}@keyframes appear{from{opacity:0}to{opacity:1}}.progress-block{display:flex;align-items:center;gap:20px}.progress-block>span{font-size:10px;white-space:nowrap}.progress-block i{font-size:8px;font-style:normal;color:#8e9b86;margin-left:7px}.progress-track{width:110px;height:1px;background:#dce0c833}.progress-track>span{display:block;width:100%;transform:scaleX(0);transform-origin:left;height:1px;background:var(--paper)}.transport{display:flex;align-items:center;gap:15px}.icon-button{font-size:20px;width:44px;height:44px;display:grid;place-items:center;opacity:.65;transition:opacity .3s}.icon-button:hover{opacity:1}#pause{width:48px;height:48px;background:#0a170e33;backdrop-filter:blur(10px)}#pace{font-size:9px;letter-spacing:.3px;min-width:40px;min-height:44px;color:var(--muted)}.utilities{display:flex;align-items:center;gap:16px;justify-self:end}.sound{display:flex;align-items:center;gap:10px;min-height:44px;font-size:8px}.sound-bars{display:flex;align-items:center;gap:3px;height:20px}.sound-bars i{height:3px;width:1px;background:var(--paper)}.sound-on .sound-bars i{animation:wave 1.8s ease-in-out infinite alternate}.sound-on .sound-bars i:nth-child(2){animation-delay:-.4s}.sound-on .sound-bars i:nth-child(3){animation-delay:-.8s}.sound-on .sound-bars i:nth-child(4){animation-delay:-1.4s}@keyframes wave{to{height:16px}}#hint{grid-column:1/-1;text-align:center;font-size:8px;color:#9faa94;margin:0;letter-spacing:.3px;transition:opacity 2s}#hint span{padding:0 10px}.hint-away #hint{opacity:.24}.index-open .journey-caption,.index-open .inspect{visibility:hidden}
.index-panel{position:absolute;inset:105px var(--edge) 120px;z-index:9;overflow:auto;scrollbar-color:#889383 transparent;scrollbar-width:thin;background:#101b15f5;padding:24px 28px 40px;border-top:1px solid var(--line);backdrop-filter:blur(20px)}.index-heading{display:flex;align-items:center;gap:25px;margin-bottom:30px}.index-heading p,.index-heading>span{font-size:8px;letter-spacing:1px;color:var(--muted)}.index-heading h2{font:300 38px var(--serif);margin:7px 0 0}.index-heading>span{margin-left:auto}.photo-grid{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:25px 20px}.photo-grid button{padding:0;text-align:left;transition:transform .35s}.photo-grid button:hover{transform:translateY(-6px)}.photo-grid img{display:block;width:100%;height:auto;aspect-ratio:1090/1351;object-fit:contain;background:#17221e}.photo-grid span{display:block;color:var(--muted);font-size:8px;padding-top:10px}
dialog{color:var(--paper);border:none}dialog::backdrop{background:#06100be8;backdrop-filter:blur(18px)}#viewer{position:fixed;inset:0;width:100vw;height:100dvh;max-width:none;max-height:none;margin:0;padding:0;background:transparent;overflow:hidden}#viewer[open]{display:grid;place-items:center;animation:reveal .65s var(--ease)}@keyframes reveal{from{opacity:0;transform:scale(.97)}to{opacity:1;transform:none}}.viewer-backdrop{position:absolute;inset:0}.viewer-top{position:absolute;top:var(--edge);left:var(--edge);right:var(--edge);display:flex;justify-content:space-between;z-index:3}.tiny{font-size:8px;letter-spacing:2px;color:var(--muted)}.viewer-top h2{font:300 26px var(--serif);margin:8px 0 0}.viewer-top h2 span{font:14px var(--mono);margin-left:10px}#viewFigure{position:relative;margin:0;height:76dvh;max-width:78vw;display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:2;transition:transform .6s var(--ease)}#viewImage{display:block;max-height:calc(76dvh - 30px);max-width:78vw;object-fit:contain;box-shadow:0 20px 90px #0005}#viewFigure figcaption{font-size:7px;letter-spacing:3px;padding-top:20px;color:var(--muted)}.view-arrow{position:absolute;top:48%;z-index:5;width:60px;height:60px;border:1px solid var(--line);border-radius:50%;font-size:24px}.view-arrow:hover{background:#ffffff10}.previous{left:var(--edge)}.next{right:var(--edge)}.viewer-bottom{position:absolute;left:var(--edge);right:var(--edge);bottom:var(--edge);display:flex;justify-content:space-between;align-items:center;font-size:9px;z-index:5}.viewer-bottom button{min-height:44px}.viewer-bottom a{text-decoration:none}.viewer-bottom a:hover{text-decoration:underline}#viewFigure.zoomed{transform:scale(1.55);cursor:zoom-out}.zoomed figcaption{opacity:0}#about{width:540px;max-width:calc(100vw - 32px);padding:55px;background:#18251f;border:1px solid var(--line);box-shadow:0 30px 150px #0008}#about .round{position:absolute;top:18px;right:18px}#about h2{font:300 60px/.95 var(--serif);letter-spacing:-2px;margin:35px 0 28px}#about h2 em{font-weight:300}#about p:not(.tiny){font:22px/1.4 var(--serif);color:#bfc6b7}#about a{display:inline-block;margin-top:15px;font-size:10px}noscript{position:fixed;z-index:99;top:40%;padding:30px;background:var(--ink)}
@media(max-width:1050px){:root{--edge:25px}.photo-grid{grid-template-columns:repeat(6,minmax(0,1fr))}.journey-caption p{display:none}.journey-caption{gap:10px}.inspect{max-width:125px;text-align:left;font-size:7px;line-height:1.8}.progress-track{width:65px}}
@media(max-width:650px){:root{--edge:20px;--control:38px}.brand{font-size:39px}.header-credit{display:none}header{grid-template-columns:1fr 1fr}.header-actions{gap:16px}.header-actions>button:first-child{font-size:8px;gap:8px}.intro{padding:0 16px 28px}h1{font-size:29vw;line-height:.8}.eyebrow{font-size:6px;letter-spacing:1.6px;margin-bottom:25px}.intro-line{font-size:7px;letter-spacing:.5px;margin-top:25px}.entry{margin-top:30px}#enter{height:50px;min-width:195px;font-size:9px}.headphone-note{font-size:6px}.journey-caption{top:110px;gap:12px}.journey-caption>span:first-child{font-size:30px}.journey-caption p{display:block;font-size:6px;letter-spacing:1px}.caption-line{width:22px}.journey-caption small{font-size:5px}.inspect{top:auto;bottom:150px;right:20px;max-width:none;font-size:7px}.progress-block{gap:10px}.progress-track{display:none}.progress-block>span{font-size:8px}.progress-block i{font-size:7px;margin-left:3px}footer{bottom:21px;gap:13px;grid-template-columns:1fr auto 1fr}.transport{gap:1px}.transport .icon-button{width:35px}#pause{width:42px;height:42px}#pace{min-width:30px;font-size:8px}.utilities{gap:6px}#soundLabel,#fullscreen{display:none}.sound{min-width:40px;justify-content:center}.sound-bars{gap:4px}#hint{font-size:6px;line-height:1.8;letter-spacing:0}#hint span{padding:0 4px}.slow-notice{bottom:180px;font-size:6px;letter-spacing:2px}.index-panel{inset:91px 12px 113px;padding:18px 10px}.index-heading{gap:12px;margin-bottom:23px}.index-heading h2{font-size:28px}.index-heading p{font-size:7px}.index-heading>span{font-size:6px}.photo-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:20px 12px}#viewFigure{max-width:86vw;height:72dvh}#viewImage{max-width:86vw;max-height:66dvh}.view-arrow{width:44px;height:44px;top:auto;bottom:76px}.viewer-bottom{bottom:20px;font-size:7px;gap:10px}.viewer-bottom button{font-size:7px}.viewer-top h2{font-size:23px}#about{padding:38px 28px}#about h2{font-size:53px}#about p:not(.tiny){font-size:20px}}
@media(max-height:650px) and (min-width:651px){h1{font-size:110px}.intro{padding-top:25px}.eyebrow{margin-bottom:15px}.intro-line{margin-top:20px}.entry{margin-top:22px}.headphone-note{display:none}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition-duration:.01ms!important}}
/* One icon family, quiet luminous controls, readable type over every photograph. */
.icon{width:19px;height:19px;display:block;flex:none;fill:none;stroke:currentColor;stroke-width:1.25;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}.round .icon{width:18px;height:18px}.header-actions .icon{width:16px;height:16px}.entry .icon{width:21px;height:21px}.icon-button .icon{width:20px;height:20px}button{transition:color .25s,background .25s,opacity .25s,transform .25s}button:active:not(:disabled){transform:scale(.96)}.header-actions>button:first-child{font-size:11px}.header-credit{font-size:9px}.eyebrow{font-size:9px}.intro-line{font-size:11px}.headphone-note{font-size:9px;opacity:.65}#enter{font-size:12px}#enterSilent{font-size:10px;min-height:40px}.journey-caption p{font-size:9px}.journey-caption small{font-size:7px}.inspect{font-size:10px;min-height:44px;color:var(--paper);opacity:.8}.inspect .icon{width:16px;height:16px}.sound{font-size:10px;min-width:44px}.sound>.icon{width:19px;height:19px}.sound[aria-pressed="false"]{opacity:.55}.utilities{gap:14px}#hint{font-size:10px;line-height:1.6;color:#d3d9ca}.hint-away #hint{opacity:.45}.progress-block>span{font-size:12px}.progress-block i{font-size:10px}.view-arrow{display:grid;place-items:center}.view-arrow .icon{width:22px;height:22px}.viewer-bottom{font-size:11px}#zoom{display:flex;align-items:center;gap:9px}#zoom .icon{width:16px;height:16px}.index-heading p,.index-heading>span{font-size:10px}.photo-grid span{font-size:10px}.vignette{background:linear-gradient(#07100bb3,transparent 22%,transparent 70%,#07100bc4)}
@media(max-width:650px){:root{--control:44px}.header-actions{gap:12px}.header-actions>button:first-child{font-size:10px}.header-actions .icon{width:15px;height:15px}.eyebrow{font-size:8px;letter-spacing:1.4px}.intro-line{font-size:10px;letter-spacing:0}.headphone-note{font-size:8px}#enter{font-size:12px;min-width:210px}#enterSilent{font-size:10px;min-height:44px}.journey-caption p{font-size:8px}.journey-caption small{font-size:7px}.inspect{font-size:10px;bottom:152px}.transport{gap:2px}.transport .icon-button,#pause,#pace{width:44px;min-width:44px;height:44px}#pace{font-size:10px}.utilities{gap:0}.sound{min-width:44px}.progress-block>span{font-size:10px}.progress-block i{font-size:8px;margin-left:3px}footer{gap:12px;grid-template-columns:1fr auto 44px}#hint{font-size:9px;line-height:1.6}#hint span{padding:0 3px}.viewer-bottom{font-size:9px;gap:8px}.viewer-bottom button{font-size:9px}.viewer-bottom #viewPosition{font-size:9px}.index-heading>span{font-size:8px}.index-heading p{font-size:8px}.index-heading{gap:10px}.index-heading .round{flex:none}.photo-grid span{font-size:9px}.slow-notice{font-size:8px;bottom:200px}}
@media(max-width:360px){:root{--edge:14px}.header-actions>button:first-child{font-size:9px}.progress-block>span{font-size:9px}.progress-block i{font-size:7px}.transport{gap:0}footer{gap:6px}#hint{font-size:8px}.intro-line{font-size:9px}}
.sound-bars{width:19px;justify-content:center}.sound-bars i{height:5px}.sound-bars i:nth-child(2){height:12px}.sound-bars i:nth-child(3){height:17px}.sound-bars i:nth-child(4){height:8px}.sound[aria-pressed="false"] .sound-bars i{height:3px;transition:height .6s}.sound-on .sound-bars i{animation-name:wave}
.intro-line{margin-top:clamp(50px,6vh,72px)}

@media(max-width:650px){.intro-line{margin-top:46px}}
@media(max-height:650px){.intro-line{margin-top:34px}}

/* Keep the flight controls on the visual centreline and suppress iOS text/touch callouts. */
@media(max-width:650px){footer{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr)}.progress-block{justify-self:start;min-width:0}.transport{justify-self:center}.utilities{justify-self:end;width:88px}}
@media(max-width:360px){.transport{gap:0}.transport .icon-button{width:36px;min-width:36px}}
#installation,#installation *{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}
#introDust{position:absolute;inset:0;z-index:6;width:100%;height:100%;visibility:hidden;pointer-events:none}
#introDust.active{visibility:visible}
#installation.intro-dusting .intro{opacity:0!important;filter:none!important;transform:none!important;transition:none!important}

/* A quiet, desktop-only wheel signifier; the moving grain demonstrates the gesture. */
.scroll-hint{position:absolute;left:50%;bottom:clamp(112px,15vh,156px);z-index:7;display:grid;place-items:center;width:24px;height:40px;opacity:0;pointer-events:none;transform:translate(-50%,6px);transition:opacity .65s var(--ease),transform .65s var(--ease)}
.show-scroll-hint .scroll-hint{opacity:.6;transform:translate(-50%,0)}
.scroll-wheel{position:relative;display:block;width:15px;height:27px;border:1px solid #e7dfcf88;border-radius:9px;box-shadow:0 0 12px #d2a77813}
.scroll-wheel i{position:absolute;top:5px;left:6px;width:2px;height:4px;border-radius:2px;background:#dfba8b;opacity:0;box-shadow:0 0 7px #e8c18eaa}
.show-scroll-hint .scroll-wheel i{animation:wheelTravel 1.25s cubic-bezier(.42,0,.32,1) 2 both}
@keyframes wheelTravel{0%{transform:translateY(0);opacity:0}18%{opacity:.92}72%{transform:translateY(10px);opacity:.8}100%{transform:translateY(10px);opacity:0}}
@media(max-width:650px),(hover:none) and (pointer:coarse){.scroll-hint{display:none!important}}

/* A quiet score under the photographs: animate the wave without relayout. */
@keyframes wave{from{transform:scaleY(.35)}to{transform:scaleY(1)}}
.sound-on .sound-bars i{height:16px;transform-origin:center}
.index-open .scroll-hint{opacity:0}

#hint>.hint-desktop,#hint>.hint-mobile{padding:0}
#hint>.hint-mobile{display:none}
#hint .hint-separator{padding:0 10px}
@media(max-width:650px){#hint>.hint-desktop{display:none}#hint>.hint-mobile{display:inline}#hint .hint-separator{padding:0 3px}}
