:root{
  --bg:#0c0d0f;
  --bg-2:#0c0d10;
  --ink:#f2efe9;
  --ink-2:#a9a6a0;
  --ink-3:#6c6a66;
  --line:rgba(255,255,255,.075);
  --accent:#2b4dff;
  --serif:"EB Garamond","Cormorant Garamond",Garamond,"Times New Roman",serif;
  --sans:"Montserrat","Helvetica Neue",Arial,sans-serif;
  --cols:5;
  --pad:clamp(20px,3.2vw,56px);
  --ease:cubic-bezier(.22,.7,.18,1);
}
*{box-sizing:border-box;margin:0;padding:0}
html{background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;scrollbar-width:none}
html::-webkit-scrollbar{display:none}
body{font-family:var(--sans);font-size:14px;line-height:1.6;background:var(--bg);overflow-x:hidden}
a{color:inherit;text-decoration:none}
img{display:block;max-width:100%}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}

/* ---------- vertical grid lines ---------- */
.grid-lines{position:fixed;inset:0;display:grid;grid-template-columns:repeat(var(--cols),1fr);pointer-events:none;z-index:3;padding:0 var(--pad)}
.grid-lines span{border-left:1px solid var(--line)}
.grid-lines span:first-child{border-left:0}

/* ---------- header ---------- */
.site-header{position:fixed;top:0;left:0;right:0;z-index:20;display:grid;grid-template-columns:repeat(var(--cols),1fr);align-items:center;height:88px;padding:0 var(--pad);pointer-events:none}
.site-header>*{pointer-events:auto}
.brand{font-family:var(--serif);font-size:15px;letter-spacing:.14em;text-transform:uppercase}
.nav{grid-column:2/5;display:flex;gap:clamp(24px,4.6vw,78px)}
.nav a{position:relative;font-size:8.5px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:var(--ink);opacity:.82;padding:6px 0;transition:opacity .3s}
.nav a:hover{opacity:1}
.nav a::after{content:"";position:absolute;left:0;bottom:-3px;height:2px;width:0;background:var(--accent);transition:width .45s var(--ease)}
.nav a.on::after,.nav a:hover::after{width:14px}
.dots-btn{justify-self:end;display:grid;grid-template-columns:repeat(3,3px);gap:3px;padding:8px}
.dots-btn i{width:3px;height:3px;background:var(--ink);border-radius:50%}

/* ---------- side indicator ---------- */
.indicator{position:fixed;left:var(--pad);top:44%;z-index:20;display:flex;flex-direction:column;gap:9px}
.indicator b{display:block;width:2px;height:2px;border-radius:1px;background:var(--ink-2);transition:width .5s var(--ease),background .5s}
.indicator b.on{width:24px;background:var(--accent);border-radius:0}

/* ---------- overlay menu ---------- */
.menu{position:fixed;inset:0;z-index:30;background:rgba(5,6,7,.96);backdrop-filter:blur(10px);display:grid;grid-template-columns:repeat(var(--cols),1fr);padding:120px var(--pad) 60px;opacity:0;visibility:hidden;transition:opacity .5s var(--ease),visibility .5s}
.menu.open{opacity:1;visibility:visible}
.menu ul{grid-column:2/5;list-style:none;align-self:center}
.menu li a{display:block;font-family:var(--serif);font-size:clamp(42px,6vw,92px);line-height:1.08;color:var(--ink-3);transition:color .3s,transform .5s var(--ease)}
.menu li a:hover,.menu li a.on{color:var(--ink);transform:translateX(12px)}
.menu .meta{grid-column:5;align-self:end;font-size:11px;color:var(--ink-2);line-height:1.9}
.menu-close{position:absolute;top:30px;right:var(--pad);font-size:9px;letter-spacing:.2em;text-transform:uppercase;padding:8px}

/* ---------- type ---------- */
.display{font-family:var(--serif);font-weight:400;line-height:1.02;letter-spacing:-.005em}
.h-xl{font-size:clamp(44px,5.6vw,96px)}
.h-lg{font-size:clamp(30px,3vw,52px);line-height:1.1}
.h-md{font-size:clamp(22px,2.1vw,34px);line-height:1.15}
.small{font-size:10px;line-height:1.75;color:var(--ink-2);max-width:290px}
.small.light{color:#d9d6d0}
.eyebrow{font-size:8.5px;font-weight:600;letter-spacing:.24em;text-transform:uppercase;color:var(--ink-2)}
.eyebrow.blue{color:var(--accent)}

/* split letters */
.split .ch{display:inline-block;will-change:transform,opacity,filter}
.split .w{display:inline-block;white-space:nowrap}

/* ---------- home: scroll-scrubbed stage ---------- */
.scrub{position:relative;height:620vh}
.stage{position:sticky;top:0;height:100vh;height:100svh;overflow:hidden}
.stage canvas{position:absolute;inset:0;width:100%;height:100%;display:block}
.stage .vignette{position:absolute;inset:0;pointer-events:none;background:radial-gradient(120% 90% at 55% 45%,transparent 45%,rgba(0,0,0,.55) 100%)}
.scene{position:absolute;inset:0;display:grid;grid-template-columns:repeat(var(--cols),1fr);padding:0 var(--pad);z-index:4;pointer-events:none}
.scene>*{pointer-events:auto}

/* S1 */
.s1 .title{grid-column:2/4;grid-row:1;justify-self:end;align-self:end;text-align:right;margin-bottom:12vh;margin-right:-1.4vw}
.s1 .title .display{font-size:clamp(46px,6.9vw,124px)}
.s1 .copy{grid-column:4;grid-row:1;align-self:end;margin:0 0 13vh 1.6vw;max-width:190px}

/* S2 */
.s2 .facts{grid-column:2/4;align-self:center;display:flex;flex-direction:column;gap:6.5vh;margin-top:6vh}
.s2 .fact .display{font-size:clamp(28px,3.75vw,68px);margin-bottom:2.2vh}
.s2 .fact .small{max-width:max(330px,26vw);font-size:clamp(9.5px,.78vw,13px)}

/* S3 */
.s3 .title{grid-column:2/5;grid-row:1;align-self:end;margin-bottom:27vh}
.s3 .title .display{font-size:clamp(40px,6.6vw,118px);line-height:1.02}
.s3 .c1{grid-column:4;grid-row:1;align-self:end;margin:0 0 13vh 0;max-width:150px}
.s3 .c2{grid-column:5;grid-row:1;align-self:end;margin:0 0 12vh 0;max-width:150px}
.s3 .small{font-size:9px;color:#d9d6d0}

.scene{opacity:0;visibility:hidden}
.scene.live{visibility:visible;opacity:1}

.scroll-hint{position:absolute;right:var(--pad);bottom:34px;z-index:5;font-size:8.5px;letter-spacing:.24em;text-transform:uppercase;color:var(--ink-2);display:flex;align-items:center;gap:12px;transition:opacity .4s}
.scroll-hint i{display:block;width:1px;height:34px;background:linear-gradient(var(--ink-2),transparent);animation:drip 1.8s var(--ease) infinite}
@keyframes drip{0%{transform:scaleY(0);transform-origin:top}50%{transform:scaleY(1);transform-origin:top}51%{transform-origin:bottom}100%{transform:scaleY(0);transform-origin:bottom}}

.loader{position:fixed;inset:0;z-index:50;background:var(--bg);display:grid;place-items:center;transition:opacity .8s var(--ease),visibility .8s}
.loader.done{opacity:0;visibility:hidden}
.loader .ring{width:120px;height:120px;border-radius:50%;border:1px solid rgba(255,255,255,.12);position:relative}
.loader .ring svg{position:absolute;inset:-1px;transform:rotate(-90deg)}
.loader .ring circle{fill:none;stroke:var(--ink);stroke-width:1.2;stroke-dasharray:377;stroke-dashoffset:377;transition:stroke-dashoffset .3s}
.loader .pct{position:absolute;inset:0;display:grid;place-items:center;font-family:var(--serif);font-size:20px}
.loader .lbl{position:absolute;top:calc(50% + 86px);left:0;right:0;text-align:center}

/* ---------- regular content sections ---------- */
.block{position:relative;z-index:4;display:grid;grid-template-columns:repeat(var(--cols),1fr);padding:18vh var(--pad);background:var(--bg)}
.block .lead{grid-column:2/4}
.block .side{grid-column:4/6;align-self:end;padding-left:1.6vw}
.page-head{padding-top:calc(88px + 16vh);padding-bottom:10vh}
.page-head .display{font-size:clamp(52px,7vw,120px)}
.page-head .small{margin-top:28px;max-width:380px}

.cards{grid-column:2/6;display:grid;grid-template-columns:repeat(3,1fr);gap:0;margin-top:9vh;border-top:1px solid var(--line)}
.card{position:relative;padding:28px 1.6vw 40px 0;border-right:1px solid var(--line)}
.card:nth-child(3n){border-right:0}
.card .ph{aspect-ratio:4/5;overflow:hidden;background:var(--bg-2);margin-bottom:22px}
.card .ph img{width:100%;height:100%;object-fit:cover;filter:grayscale(.15) contrast(1.05);transition:transform 1.2s var(--ease)}
.card:hover .ph img{transform:scale(1.045)}
.card .no{position:absolute;top:28px;right:1.6vw;font-size:9px;color:var(--ink-3);letter-spacing:.16em}
.card h3{font-family:var(--serif);font-weight:400;font-size:26px;line-height:1.15;margin:8px 0 10px}

.rows{grid-column:2/6;border-top:1px solid var(--line);margin-top:8vh}
.row{display:grid;grid-template-columns:1fr 2fr 1fr;align-items:baseline;gap:2vw;padding:34px 0;border-bottom:1px solid var(--line);transition:padding .5s var(--ease)}
.row:hover{padding-left:14px}
.row .when{font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-2)}
.row h3{font-family:var(--serif);font-weight:400;font-size:clamp(26px,2.4vw,40px);line-height:1.1}
.row .where{font-size:10px;color:var(--ink-2);text-align:right}
.row .where b{display:block;color:var(--accent);font-weight:600;letter-spacing:.2em;font-size:8.5px;text-transform:uppercase;margin-top:6px}

.split-feature{grid-column:2/6;display:grid;grid-template-columns:1fr 1fr;gap:4vw;align-items:center;margin-top:6vh}
.split-feature .ph{aspect-ratio:4/5;overflow:hidden;background:var(--bg-2)}
.split-feature .ph img{width:100%;height:100%;object-fit:cover}

.info-grid{grid-column:2/6;display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line);margin-top:8vh}
.info-grid>div{padding:30px 1.6vw 40px 0;border-right:1px solid var(--line)}
.info-grid>div:last-child{border-right:0}
.info-grid h3{font-family:var(--serif);font-weight:400;font-size:28px;margin:10px 0 14px}
.info-grid p{font-size:11px;color:var(--ink-2);line-height:1.9}
.info-grid table{width:100%;border-collapse:collapse;font-size:11px;color:var(--ink-2)}
.info-grid td{padding:7px 0;border-bottom:1px solid var(--line)}
.info-grid td:last-child{text-align:right;color:var(--ink)}

.btn{display:inline-flex;align-items:center;gap:14px;margin-top:34px;font-size:8.5px;font-weight:600;letter-spacing:.24em;text-transform:uppercase;padding:16px 26px;border:1px solid rgba(255,255,255,.22);transition:background .4s,color .4s,border-color .4s}
.btn:hover{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.btn i{width:22px;height:1px;background:currentColor}

.site-footer{position:relative;z-index:4;display:grid;grid-template-columns:repeat(var(--cols),1fr);padding:60px var(--pad) 46px;border-top:1px solid var(--line);background:var(--bg);font-size:10px;color:var(--ink-3);line-height:1.9}
.site-footer .brand{color:var(--ink)}
.site-footer .f2{grid-column:2/4}
.site-footer .f4{grid-column:4/6;text-align:right}
.site-footer a{color:var(--ink-2)}
.site-footer a:hover{color:var(--ink)}

/* reveal on scroll */
.rv{opacity:0;transform:translateY(28px);transition:opacity 1.1s var(--ease),transform 1.1s var(--ease)}
.rv.in{opacity:1;transform:none}

/* ---------- responsive ---------- */
@media (max-width:900px){
  :root{--cols:4}
  .nav{display:none}
  .site-header{grid-template-columns:1fr auto;height:72px}
  .grid-lines span:nth-child(5){display:none}
  .indicator{display:none}
  .scene{grid-template-columns:1fr;padding:0 22px}
  .stage .vignette{background:linear-gradient(to bottom,transparent 38%,rgba(12,13,15,.55) 62%,rgba(12,13,15,.9) 100%)}
  .s1 .title{grid-column:1;justify-self:start;text-align:left;margin:0 0 22vh}
  .s1 .copy{grid-column:1;justify-self:start;margin:0 0 9vh;max-width:240px;position:absolute;left:22px;bottom:0}
  .s2 .facts{grid-column:1;align-self:end;gap:3vh;margin:0 0 8vh}
  .s2 .fact .display{font-size:26px;margin-bottom:6px}
  .s3 .title{grid-column:1;margin-bottom:24vh}
  .s1 .title,.s1 .copy,.s3 .title,.s3 .c1,.s3 .c2{grid-row:1}
  .s3 .c1{grid-column:1;margin:0 0 9vh;position:absolute;left:22px;bottom:0;max-width:150px}
  .s3 .c2{grid-column:1;margin:0 0 9vh;position:absolute;right:22px;bottom:0;max-width:150px}
  .block{grid-template-columns:1fr;padding:12vh 22px}
  .block .lead,.block .side,.cards,.rows,.split-feature,.info-grid{grid-column:1}
  .block .side{padding-left:0;margin-top:24px}
  .cards{grid-template-columns:1fr 1fr}
  .card:nth-child(3n){border-right:1px solid var(--line)}
  .card:nth-child(2n){border-right:0}
  .split-feature,.info-grid{grid-template-columns:1fr}
  .info-grid>div{border-right:0;border-bottom:1px solid var(--line)}
  .row{grid-template-columns:1fr;gap:8px}
  .row .where{text-align:left}
  .site-footer{grid-template-columns:1fr;gap:18px}
  .site-footer .f2,.site-footer .f4{grid-column:1;text-align:left}
  .menu{grid-template-columns:1fr}
  .menu ul,.menu .meta{grid-column:1}
}
@media (prefers-reduced-motion:reduce){
  .rv{opacity:1;transform:none;transition:none}
}

.spec{width:100%;max-width:360px;border-collapse:collapse;margin-top:30px;font-size:11px;color:var(--ink-2)}
.spec td{padding:9px 0;border-bottom:1px solid var(--line)}
.spec td:last-child{text-align:right;color:var(--ink)}
.cards .card:nth-child(n+4){border-top:1px solid var(--line)}

.scene .display{text-shadow:0 0 18px rgba(0,0,0,.55),0 0 2px rgba(0,0,0,.6)}
.scene .small{text-shadow:0 0 10px rgba(0,0,0,.8)}
