:root{--black:#020202;--white:#f2f1ec;--paper:#e9e5dc;--ink:#111;--pad:clamp(20px,4vw,64px);--ease:cubic-bezier(.22,.68,.12,1)}
*{box-sizing:border-box}html{background:#000;scroll-behavior:smooth}body{margin:0;background:#000;color:var(--white);font-family:Helvetica,Arial,sans-serif;overflow-x:hidden}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit}::selection{background:#fff;color:#000}.light{background:var(--paper);color:var(--ink)}
.grain{position:fixed;inset:-50%;z-index:90;pointer-events:none;opacity:.035;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='.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.8'/%3E%3C/svg%3E");animation:grain .25s steps(2) infinite}@keyframes grain{0%{transform:translate(0,0)}25%{transform:translate(3%,-2%)}50%{transform:translate(-2%,3%)}75%{transform:translate(1%,-1%)}100%{transform:translate(-3%,2%)}}
.progress{position:fixed;z-index:120;top:0;left:0;right:0;height:2px;background:rgba(255,255,255,.08)}.progress i{display:block;height:100%;width:0;background:#fff}
.gate{position:fixed;z-index:200;inset:0;background:#000;display:grid;place-items:center;transition:opacity .9s var(--ease),visibility .9s}.gate.closed{opacity:0;visibility:hidden}.gate-inner{text-align:center}.gate-mark{width:112px;height:112px;border:2px solid #fff;border-radius:50%;display:grid;place-items:center;margin:0 auto 34px;font-size:58px;font-weight:300}.gate p,.gate small{font-size:10px;letter-spacing:.2em}.gate h1{font-size:clamp(48px,8vw,126px);line-height:.86;letter-spacing:-.06em;font-weight:400;margin:22px 0 34px}.gate button{background:#fff;color:#000;border:0;border-radius:999px;padding:14px 26px;letter-spacing:.16em;font-size:11px;cursor:pointer}.gate small{display:block;margin-top:16px;opacity:.5}
.topbar{position:fixed;z-index:100;top:0;left:0;right:0;height:78px;padding:0 var(--pad);display:flex;align-items:center;justify-content:space-between;mix-blend-mode:difference;color:white}.wordmark{font-size:11px;letter-spacing:.18em;font-weight:700}.top-actions{display:flex;gap:22px}.top-actions button{border:0;background:none;padding:10px 0;font-size:10px;letter-spacing:.14em;cursor:pointer}.top-actions span{opacity:.5}nav{position:fixed;z-index:-1;inset:0;background:#050505;display:flex;flex-direction:column;justify-content:center;padding:10vw;gap:8px;opacity:0;pointer-events:none;transition:.45s var(--ease);mix-blend-mode:normal}nav.open{opacity:1;pointer-events:auto;z-index:2}nav a{font-size:clamp(48px,8vw,120px);line-height:.9;letter-spacing:-.055em;color:#fff}
.hero{height:100svh;min-height:720px;position:relative;overflow:hidden;background:#000}.hero-media,.cinema-video,.story-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.hero-media{filter:saturate(1.08) contrast(1.05);transform:scale(1.02)}.hero-gradient{position:absolute;inset:0;background:linear-gradient(90deg,rgba(0,0,0,.62),rgba(0,0,0,.08) 62%),linear-gradient(0deg,rgba(0,0,0,.48),transparent 55%)}.hero-copy{position:absolute;left:var(--pad);bottom:8vh;z-index:4}.kicker,.eyebrow{font-size:10px;letter-spacing:.19em;font-weight:700}.hero-copy h2{font-size:clamp(62px,10vw,165px);font-weight:400;line-height:.78;letter-spacing:-.065em;margin:22px 0 0}.hero-copy h2 span{display:block}.hero-copy h2 span:nth-child(2){margin-left:8vw}.hero-copy h2 span:nth-child(3){margin-left:17vw;color:transparent;-webkit-text-stroke:1.2px rgba(255,255,255,.9)}.scroll-hint{position:absolute;right:var(--pad);bottom:7vh;z-index:4;display:flex;align-items:center;gap:18px;writing-mode:vertical-rl;font-size:8px;letter-spacing:.17em}.scroll-hint i{width:1px;height:72px;background:white;animation:pulse 1.6s ease-in-out infinite}@keyframes pulse{50%{transform:scaleY(.2);opacity:.3}}
.hero-logo{position:absolute;z-index:3;right:7vw;top:16vh;opacity:.15}.c-ring{width:min(28vw,420px);aspect-ratio:1;border:2px solid #fff;border-right-color:transparent;border-radius:50%;position:relative;animation:turn 22s linear infinite}.tree-lines{position:absolute;left:50%;bottom:0;width:2px;height:58%;background:#fff;box-shadow:-8px 0 #fff,8px 0 #fff,-16px 0 #fff,16px 0 #fff}.tree-lines:before,.tree-lines:after{content:"";position:absolute;bottom:40%;width:120px;height:2px;background:#fff;transform-origin:left}.tree-lines:before{transform:rotate(-45deg)}.tree-lines:after{transform:rotate(-135deg)}@keyframes turn{to{transform:rotate(360deg)}}
.intro{min-height:120vh;padding:14vh var(--pad);position:relative;display:flex;align-items:center}.index{position:absolute;left:var(--pad);top:14vh;font-size:10px;letter-spacing:.18em}.intro-main{margin-left:min(15vw,220px);max-width:1300px}.massive{font-size:clamp(54px,8vw,130px);line-height:.9;letter-spacing:-.06em;font-weight:400;margin:26px 0 80px}.intro-columns{display:grid;grid-template-columns:1fr 1fr;gap:7vw;width:min(900px,100%);margin-left:auto}.intro-columns p,.body{font-size:clamp(17px,1.55vw,24px);line-height:1.55}
.story{height:500vh;background:#000;position:relative}.story-sticky{position:sticky;top:0;height:100svh;overflow:hidden;background:#000}.story-video{filter:saturate(1.05) contrast(1.04);will-change:filter,transform}.story-shade{position:absolute;inset:0;background:linear-gradient(90deg,rgba(0,0,0,.72),rgba(0,0,0,.05) 70%),linear-gradient(0deg,rgba(0,0,0,.38),transparent 55%)}.story-copy{position:absolute;z-index:4;left:var(--pad);bottom:10vh;max-width:1000px;opacity:0;transform:translateY(36px);transition:.55s var(--ease)}.story-copy.active{opacity:1;transform:none}.story-copy p{font-size:10px;letter-spacing:.2em;font-weight:700}.story-copy h2{font-size:clamp(55px,8vw,135px);font-weight:400;line-height:.86;letter-spacing:-.06em;margin:16px 0 0}.story-counter{position:absolute;z-index:4;right:var(--pad);top:14vh;font-size:38px;letter-spacing:-.04em}.story-counter em{font-size:12px;opacity:.5;font-style:normal;margin-left:6px}.story-timeline{position:absolute;z-index:5;left:var(--pad);right:var(--pad);bottom:32px;height:1px;background:rgba(255,255,255,.28)}.story-timeline i{display:block;width:0;height:100%;background:#fff}
.cinema{height:115vh;position:relative;overflow:hidden;background:#000}.cinema-video{object-position:center;filter:saturate(.9) contrast(1.08)}.cinema-shade{position:absolute;inset:0;background:rgba(0,0,0,.35)}.cinema-text{position:absolute;z-index:4;left:var(--pad);bottom:10vh;max-width:980px}.cinema-text>p:first-child,.sound-copy>p:first-child{font-size:10px;letter-spacing:.2em;font-weight:700}.cinema-text h2,.sound-copy h2{font-size:clamp(58px,9vw,145px);line-height:.84;letter-spacing:-.065em;font-weight:400;margin:20px 0 36px}.cinema-text .body{max-width:650px;margin-left:23vw}
.disciplines{padding:15vh var(--pad) 12vh;position:relative}.discipline-head{margin-left:min(15vw,220px)}.discipline-head h2{font-size:clamp(60px,9vw,145px);line-height:.84;letter-spacing:-.065em;font-weight:400;margin:20px 0 100px}.discipline-list{border-top:1px solid rgba(0,0,0,.25)}.discipline-list article{display:grid;grid-template-columns:70px 1fr 1fr;gap:4vw;align-items:baseline;padding:30px 0;border-bottom:1px solid rgba(0,0,0,.22)}.discipline-list span{font-size:9px;letter-spacing:.18em}.discipline-list h3{font-size:clamp(30px,4vw,64px);font-weight:400;letter-spacing:-.045em;margin:0}.discipline-list p{font-size:15px;line-height:1.5;opacity:.65;margin:0;max-width:420px}
.soundscape{min-height:110vh;position:relative;overflow:hidden;padding:14vh var(--pad);display:flex;align-items:center}.sound-copy{position:relative;z-index:3;margin-left:min(15vw,220px);max-width:1100px}.sound-copy .body{max-width:680px;margin-left:auto;color:rgba(255,255,255,.68)}.wave{position:absolute;inset:10% 0;display:flex;align-items:center;justify-content:space-around;opacity:.18}.wave i{display:block;width:1px;height:20%;background:#fff;animation:wave 1.8s ease-in-out infinite}.wave i:nth-child(3n){animation-duration:1.2s}.wave i:nth-child(4n){animation-duration:2.4s}@keyframes wave{50%{height:90%}}
.statement{padding:16vh var(--pad);min-height:100vh;display:flex;flex-direction:column;justify-content:center;gap:7vh}.statement-line{font-size:clamp(50px,8vw,128px);line-height:.9;letter-spacing:-.06em;max-width:1300px}.statement-line:nth-child(2){margin-left:18vw}
.contact{min-height:120vh;padding:15vh var(--pad) 0;position:relative;overflow:hidden}.contact-copy h2{font-size:clamp(68px,11vw,180px);line-height:.77;letter-spacing:-.07em;font-weight:400;margin:24px 0 52px}.mail{font-size:clamp(22px,3vw,44px);border-bottom:1px solid currentColor;padding-bottom:7px}.contact-bottom{margin-top:13vh;border-top:1px solid rgba(255,255,255,.18);padding:28px 0 80px;display:grid;grid-template-columns:repeat(3,1fr);gap:32px}.contact-bottom small{display:block;font-size:8px;letter-spacing:.18em;opacity:.5;margin-bottom:16px}.contact-bottom p,.contact-bottom a{font-size:14px;margin:5px 0;display:block}.end-logo{font-size:min(68vw,900px);font-weight:300;line-height:.7;text-align:center;opacity:.06;letter-spacing:-.12em}
.reveal{opacity:0;transform:translateY(32px);transition:opacity .9s var(--ease),transform .9s var(--ease)}.reveal.in{opacity:1;transform:none}
@media(max-width:800px){.hero-copy h2{font-size:16vw}.hero-copy h2 span:nth-child(2),.hero-copy h2 span:nth-child(3){margin-left:0}.hero-logo{right:-20vw;top:12vh}.c-ring{width:70vw}.scroll-hint{display:none}.intro{padding-top:18vh}.intro-main,.discipline-head,.sound-copy{margin-left:0}.index{display:none}.intro-columns{grid-template-columns:1fr}.story-copy h2{font-size:14vw}.cinema-text .body{margin-left:0}.discipline-list article{grid-template-columns:40px 1fr}.discipline-list p{grid-column:2}.statement-line:nth-child(2){margin-left:0}.contact-bottom{grid-template-columns:1fr}.top-actions{gap:12px}.wordmark{font-size:9px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.grain,.c-ring,.wave i,.scroll-hint i{animation:none}.reveal{opacity:1;transform:none}}

/* ─────────────────────────────────────────────
   3D MORPH / SCROLLYTELLING
   Four sampled versions of the supplied OBJ files are rendered as one
   WebGL point sculpture and interpolated as the page scrolls.
───────────────────────────────────────────── */
.morph3d{height:520vh;background:#050505;position:relative;color:#f2f1ec}
.morph3d-sticky{position:sticky;top:0;height:100svh;overflow:hidden;background:radial-gradient(circle at 56% 48%,#171717 0,#080808 36%,#020202 72%)}
#morphCanvas{position:absolute;inset:0;width:100%;height:100%;display:block;z-index:1}
.morph3d-vignette{position:absolute;z-index:2;inset:0;pointer-events:none;background:linear-gradient(90deg,rgba(0,0,0,.66),transparent 37%,transparent 72%,rgba(0,0,0,.25)),linear-gradient(0deg,rgba(0,0,0,.6),transparent 34%,rgba(0,0,0,.2));mix-blend-mode:multiply}
.morph3d-head{position:absolute;z-index:4;left:var(--pad);top:14vh;max-width:570px;pointer-events:none}
.morph3d-head p{font-size:10px;letter-spacing:.21em;font-weight:700;margin:0 0 20px}.morph3d-head h2{font-size:clamp(54px,7.3vw,120px);line-height:.83;letter-spacing:-.062em;font-weight:400;margin:0}
.morph3d-stage{position:absolute;z-index:5;right:var(--pad);bottom:11vh;width:min(34vw,480px);height:112px;pointer-events:none}
.morph3d-label{position:absolute;inset:0;text-align:right;opacity:0;transform:translateY(24px);transition:opacity .4s var(--ease),transform .55s var(--ease)}
.morph3d-label.active{opacity:1;transform:none}.morph3d-label span{display:block;font-size:9px;letter-spacing:.19em;opacity:.55;margin-bottom:8px}.morph3d-label strong{font-weight:400;font-size:clamp(34px,4vw,64px);letter-spacing:-.04em}
.morph3d-note{position:absolute;z-index:5;left:var(--pad);bottom:6.5vh;display:flex;align-items:center;gap:16px;font-size:8px;letter-spacing:.18em;opacity:.6;pointer-events:none}.morph3d-note i{display:block;width:72px;height:1px;background:rgba(255,255,255,.7);position:relative}.morph3d-note i:after{content:"";position:absolute;right:0;top:-2px;width:5px;height:5px;border-top:1px solid #fff;border-right:1px solid #fff;transform:rotate(45deg)}
.morph3d-progress{position:absolute;z-index:6;left:0;right:0;bottom:0;height:2px;background:rgba(255,255,255,.1)}.morph3d-progress i{height:100%;width:0;display:block;background:#fff}
.morph3d:after{content:"";position:absolute;z-index:3;left:50%;top:50%;width:min(53vw,780px);aspect-ratio:1;border:1px solid rgba(255,255,255,.08);border-radius:50%;transform:translate(-40%,-50%);pointer-events:none}
@media(max-width:800px){.morph3d{height:470vh}.morph3d-head{top:12vh}.morph3d-head h2{font-size:15vw}.morph3d-stage{right:var(--pad);bottom:12vh;width:70vw}.morph3d:after{width:95vw;transform:translate(-50%,-45%)}.morph3d-note{bottom:6vh}}
