/* Golden Reserve · D "Curated" — meticulous, curated, refined.
   GKC (low-set hero headline, ruled index cells) · Populous (horizontal project track) · McAlpine (story blocks, captions, motion)
   Désourdy (full-bleed statement bands) · Eladio Dieste (tall black footer, edge-to-edge wordmark). */
@font-face{font-family:"Regional Cond";src:url("../fonts/Regional-MediumCondensed.woff2") format("woff2");font-weight:300 700;font-display:swap}
:root{--plaster:#F2EEE5;--white:#FFFFFF;--black:#121212;--brass:#C7AB6E;--stone:#959380;--walnut:#3F3721;--sky:#B9C7DD;--plaster-deep:#E9E3D6;
  --line:rgba(18,18,18,.14);--ink:var(--black);--copy:var(--walnut);--muted:#7A7462;
  --font-display:"Regional Cond","Old Standard TT",Georgia,serif;--font-body:"Inter Tight",Inter,system-ui,sans-serif;
  --container:1340px;--gutter:clamp(20px,3.5vw,50px);--section:clamp(78px,9vw,132px);
  /* spacing scale (Sept 23: all padding cut ~25% and standardized onto these steps) */
  --s-xl:clamp(54px,6vw,90px);--s-l:clamp(36px,4vw,60px);--s-m:clamp(22px,2.4vw,36px);--s-label:16px;--s-grid:42px;
  --ease-out:cubic-bezier(.22,1,.36,1);--ease-expo:cubic-bezier(.16,1,.3,1);--ease-io:cubic-bezier(.65,0,.35,1);--dur:1.05s}
*{box-sizing:border-box}
html.lenis,html.lenis body{height:auto}.lenis.lenis-smooth{scroll-behavior:auto!important}.lenis.lenis-stopped{overflow:hidden}
body{font-synthesis:none;margin:0;background:var(--plaster);color:var(--copy);font-family:var(--font-body);font-size:16px;line-height:1.7;-webkit-font-smoothing:antialiased;overflow-x:hidden}
img,svg{display:block;max-width:100%}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}ul{list-style:none;margin:0;padding:0}h1,h2,h3,p,dl,dd,dt,figure{margin:0}
::selection{background:var(--brass);color:var(--black)}
.container{width:100%;max-width:calc(var(--container) + var(--gutter)*2);margin:0 auto;padding:0 var(--gutter)}
.section{padding-block:var(--section)}.bg-white{background:var(--white)}
.display,.h1,.h2,.statement{font-family:var(--font-display);font-weight:500;color:var(--ink);text-wrap:balance}
.display{font-size:clamp(64px,9.5vw,152px);line-height:.9}.h1{font-size:clamp(44px,5.8vw,88px);line-height:.96}.h2{font-size:clamp(32px,3.2vw,48px);line-height:1.04}
.statement{font-size:clamp(26px,2.5vw,38px);line-height:1.18;max-width:24ch}
.lede{font-size:18px;line-height:1.6}.small{font-size:14px}.muted{color:var(--muted)}
.label{display:block;font-size:11.5px;font-weight:500;letter-spacing:.22em;text-transform:uppercase;color:var(--muted);line-height:1.6}
.btn{position:relative;display:inline-flex;align-items:center;gap:14px;height:46px;padding:0 24px;border:1px solid var(--ink);color:var(--ink);font-size:11.5px;font-weight:500;letter-spacing:.22em;text-transform:uppercase;overflow:hidden;isolation:isolate;white-space:nowrap;transition:color .5s,border-color .5s}
.btn::before{content:"";position:absolute;inset:0;background:var(--ink);transform:scaleX(0);transform-origin:left;transition:transform .6s var(--ease-expo);z-index:-1}.btn:hover{color:var(--plaster)}.btn:hover::before{transform:scaleX(1)}
.btn svg{width:13px;height:13px;transition:transform .5s var(--ease-expo)}.btn:hover svg{transform:translateX(4px)}
.btn--light{border-color:rgba(242,238,229,.55);color:var(--plaster)}.btn--light::before{background:var(--plaster)}.btn--light:hover{color:var(--black);border-color:var(--plaster)}
.link{position:relative;display:inline-flex;align-items:center;gap:10px;font-size:11.5px;font-weight:500;letter-spacing:.22em;text-transform:uppercase;color:var(--ink);padding-bottom:6px;border-bottom:1px solid var(--brass)}
.link svg{width:13px;height:13px;transition:transform .5s var(--ease-expo)}.link:hover svg{transform:translate(4px,-4px)}
.ulink{position:relative}.ulink::after{content:"";position:absolute;left:0;bottom:-2px;width:100%;height:1px;background:var(--brass);transform:scaleX(0);transform-origin:right;transition:transform .5s var(--ease-expo)}.ulink:hover::after{transform:scaleX(1);transform-origin:left}
/* header (not sticky; white over the hero) */
.header{position:absolute;inset:0 0 auto 0;z-index:50;height:96px;display:flex;align-items:center;padding:0 var(--gutter);color:var(--ink)}
.header__inner{width:100%;display:flex;align-items:center;justify-content:space-between}
.header__logo{position:relative;display:block;width:280px;height:14px}.header__logo img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;transition:opacity .4s}.header__logo .logo-light{opacity:0}
.header.is-light{color:var(--plaster)}.header.is-light .nav a{text-shadow:0 1px 12px rgba(18,18,18,.35)}.header:not(.is-light) .nav a{color:var(--ink)}.header.is-light .logo-dark{opacity:0}.header.is-light .logo-light{opacity:1}
.nav{display:flex;gap:36px}.nav a{font-size:12.5px;font-weight:500;letter-spacing:.22em;text-transform:uppercase;position:relative;padding:6px 0;white-space:nowrap}
.nav a::after{content:"";position:absolute;left:0;bottom:0;width:100%;height:1px;background:var(--brass);transform:scaleX(0);transform-origin:right;transition:transform .5s var(--ease-expo)}.nav a:hover::after,.nav a[aria-current]::after{transform:scaleX(1);transform-origin:left}
.menu-open .header{position:fixed;color:var(--ink)}.menu-open .header .logo-dark{opacity:1}.menu-open .header .logo-light{opacity:0}
.burger{display:none;width:44px;height:44px;position:relative;margin-right:-10px}.burger span{position:absolute;left:10px;right:10px;height:1px;background:currentColor;transition:transform .5s var(--ease-expo),top .5s var(--ease-expo),opacity .3s}
.burger span:nth-child(1){top:17px}.burger span:nth-child(2){top:22px}.burger span:nth-child(3){top:27px}
.menu-open .burger span:nth-child(1){top:22px;transform:rotate(45deg)}.menu-open .burger span:nth-child(2){opacity:0}.menu-open .burger span:nth-child(3){top:22px;transform:rotate(-45deg)}
.menu{position:fixed;inset:0;z-index:40;background:var(--plaster);color:var(--ink);display:flex;flex-direction:column;justify-content:flex-end;padding:96px var(--gutter) 36px;clip-path:inset(0 0 100% 0);transition:clip-path .9s var(--ease-expo)}
.menu-open .menu{clip-path:inset(0)}.menu__list a{display:block;font-family:var(--font-display);font-weight:500;font-size:clamp(40px,10vw,64px);line-height:1.05;padding:8px 0;border-bottom:1px solid var(--line);transform:translateY(40px);opacity:0;transition:transform .8s var(--ease-expo),opacity .6s}
.menu-open .menu__list a{transform:none;opacity:1}.menu__foot{display:flex;justify-content:space-between;margin-top:24px;font-size:14px;color:var(--muted);opacity:0;transition:opacity .6s .4s}.menu-open .menu__foot{opacity:1}.menu-open{overflow:hidden}
.intro{position:fixed;inset:0;z-index:100;background:var(--plaster);display:grid;place-items:center;transition:transform 1.1s var(--ease-expo)}
.intro__badge{width:220px;opacity:0;animation:introBadge 1.4s var(--ease-out) forwards}@keyframes introBadge{0%{opacity:0}35%{opacity:1}85%{opacity:1}100%{opacity:0}}
.intro.is-done{transform:translateY(-100%)}.intro__line{position:absolute;left:50%;bottom:42%;height:1px;width:48px;margin-left:-24px;background:var(--brass);transform-origin:left;transform:scaleX(0);animation:introLine 1.2s var(--ease-io) .1s forwards}@keyframes introLine{to{transform:scaleX(1)}}
html.no-intro .intro,html.is-static .intro{display:none}html.is-static .lines .line>span,html.is-static [data-reveal]{transition:none!important}
/* hero (GKC / Populous): full-bleed, headline set low */
.hero-d{position:relative;min-height:min(max(100svh,640px),1040px);display:flex;align-items:flex-end;color:var(--plaster);background:var(--black);isolation:isolate;overflow:hidden}
.hero-d__media{position:absolute;inset:0;z-index:-1}.hero-d__media img,.hero-d__media video{display:block;width:100%;height:118%;object-fit:cover}
.hero-d__media::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(18,18,18,.78) 0%,rgba(18,18,18,.25) 45%,rgba(18,18,18,.1) 100%)}
.hero-d__inner{position:relative;display:flex;justify-content:space-between;align-items:flex-end;gap:40px;padding-top:120px;padding-bottom:var(--s-l)}
.hero-d .label{color:rgba(242,238,229,.75);margin-bottom:var(--s-label);max-width:44ch}
.hero-d .display{color:var(--plaster)}
.hero-d__h1{color:var(--plaster);display:grid;gap:22px}
.hero-d__kicker{display:block;font-family:var(--font-body);font-weight:500;font-size:clamp(18px,1.6vw,24px);line-height:1.35;letter-spacing:.01em;color:rgba(242,238,229,.85);max-width:34ch}
.hero-d__h1 .display{font-size:clamp(56px,8.2vw,128px);line-height:.92}
.hero-d__inner>div:first-child{flex:1 1 72%;min-width:0}
.hero-d__aside{display:flex;flex-direction:column;align-items:flex-end;gap:22px;text-align:right}.hero-d__aside .label{margin:0}
/* nav scrim (Sept 23, Anna: "slightly more of a gradient to make the nav pop"): a fixed-height dark fade behind the header on every photo hero */
.hero-d__media::before,.phero__media::before{content:"";position:absolute;inset:0 0 auto 0;height:300px;z-index:1;pointer-events:none;background:linear-gradient(to bottom,rgba(18,18,18,.62) 0%,rgba(18,18,18,.4) 35%,rgba(18,18,18,.14) 70%,rgba(18,18,18,0) 100%)}
/* project hero: full-bleed photo, name bottom-left, facts row beneath */
.phero{position:relative;min-height:min(82svh,880px);display:flex;align-items:flex-end;color:var(--plaster);background:var(--black);isolation:isolate;overflow:hidden}
.phero__media{position:absolute;inset:0;z-index:-1}.phero__media img,.phero__media video{display:block;width:100%;height:118%;object-fit:cover}
.phero__media::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(18,18,18,.7) 0%,rgba(18,18,18,.2) 50%,rgba(18,18,18,.08) 100%)}
.phero__inner{position:relative;padding-top:120px;padding-bottom:var(--s-l)}
.phero .label{color:rgba(242,238,229,.75);margin-bottom:var(--s-label)}.phero .display{color:var(--plaster)}
.phero__facts{background:var(--white);border-bottom:1px solid var(--plaster-deep)}
.facts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:24px;padding-block:var(--s-m)}
.facts>div{display:grid;gap:8px;font-size:16px;color:var(--ink)}
/* page titles */
.title{padding-top:calc(96px + var(--s-xl));padding-bottom:var(--s-l)}
.title__grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:24px;align-items:end}
.title .label{grid-column:1/-1;margin-bottom:var(--s-label);padding-bottom:0}
.title--tight{padding-top:calc(96px + var(--s-l));padding-bottom:var(--s-m)}
.title .h1{grid-column:1/9}
.title .lede{grid-column:9/13;max-width:36ch;align-self:end}
.title .pmeta{grid-column:10/13;align-self:end}
.title--media .h1{grid-column:1/8;align-self:end;padding-bottom:var(--s-m)}.title__media{grid-column:9/13;align-self:end;margin:0}.title--media{padding-bottom:0}.title--media .title__grid{align-items:end}.title__media .media,.title__media{margin-bottom:-1px}
.pmeta{display:grid;gap:20px}.pmeta div{display:grid;gap:4px;font-size:16px;color:var(--ink)}
/* story block (McAlpine) */
.story{display:grid;grid-template-columns:minmax(0,3fr) minmax(0,6fr) minmax(0,3fr);gap:24px;align-items:start}
.story--wide{grid-template-columns:minmax(0,3fr) minmax(0,9fr)}
.story__body .statement{margin-bottom:21px}.story__body .lede{max-width:56ch}
.story__aside{display:grid;gap:14px;font-size:15px;color:var(--copy);align-self:end;padding-top:18px;border-top:1px solid var(--line)}
/* about (home + contact): oversized statement with word fill, then copy + contact */
.about-d{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(40px,6vw,96px);align-items:center}  /* 50/50 (Anna, Sept 23) */
.about-d__label{margin-bottom:var(--s-label)}
.about-d__h{font-family:var(--font-display);font-weight:500;font-size:clamp(40px,4.4vw,68px);line-height:1;color:var(--ink);text-wrap:balance;margin-bottom:var(--s-m)}
.about-d__lede{max-width:46ch;margin-bottom:var(--s-m)}
.about-d__contact{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-top:var(--s-l);padding-top:18px;border-top:1px solid var(--line);font-size:15px;color:var(--copy)}.about-d__contact .label{margin-bottom:8px}.about-d__contact dd{margin:0;line-height:1.6}
.about-d__art{position:relative;padding:0 0 clamp(48px,6vw,96px) clamp(40px,6vw,96px)}
.about-d .about-d__main{aspect-ratio:4/5}.about-d .about-d__main img{position:absolute;left:0;top:-8%;width:100%;height:116%}
.about-d .about-d__inset{position:absolute;left:0;bottom:0;width:46%;aspect-ratio:4/3;box-shadow:0 0 0 clamp(8px,1vw,14px) var(--white);z-index:2}
section:not(.bg-white) .about-d__inset{box-shadow:0 0 0 clamp(8px,1vw,14px) var(--plaster)}
/* section head + counter */
.section-head{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:var(--s-l)}
.section-head .label{margin-bottom:var(--s-label)}
.section-head__right{display:flex;align-items:center;gap:32px}
.counter{color:var(--ink)}.counter b{font-weight:500}
/* media */
.media{position:relative;overflow:hidden;background:var(--plaster-deep)}.media img{width:100%;height:100%;object-fit:cover;transition:transform 1.4s var(--ease-expo)}
.media--3x2{aspect-ratio:3/2}.media--4x5{aspect-ratio:4/5}.media--1x1{aspect-ratio:1/1}.media--wide{aspect-ratio:16/7}.media--3x4{aspect-ratio:3/4}.media--5x4{aspect-ratio:5/4}.media--4x3{aspect-ratio:4/3}
.card__hover{position:absolute;left:18px;bottom:18px;z-index:2;color:var(--plaster);font-size:11.5px;letter-spacing:.2em;text-transform:uppercase;display:flex;gap:10px;align-items:center;transform:translateY(10px);opacity:0;transition:all .6s var(--ease-expo)}.card__hover svg{width:13px;height:13px}
.cell:hover .card__hover{transform:none;opacity:1}.cell:hover .media img{transform:scale(1.03)}
.cell .media::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(18,18,18,.35),transparent 50%);opacity:0;transition:opacity .6s}.cell:hover .media::after{opacity:1}
/* ruled index cells (GKC) */
.cells{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;row-gap:var(--s-grid)}
.cell{display:block}
.cell__head{display:flex;justify-content:space-between;padding-bottom:14px;margin-bottom:0}
.cell__head--tight{border-top:0;padding-top:16px;padding-bottom:0;margin-bottom:0;align-items:baseline;gap:12px}
.cell__row{display:flex;justify-content:space-between;align-items:baseline;gap:16px;margin-top:14px}
.cell__row .cell__title{margin-top:0}
.cell__title{display:block;margin-top:14px;font-family:var(--font-display);font-weight:500;font-size:26px;line-height:1.05;color:var(--ink)}
.cell__title--post{font-family:var(--font-display);font-size:26px;line-height:1.08;letter-spacing:0;text-wrap:balance}  /* Sept 23: blog cards match project cards (Regional titles) */
.cell__title--lead{font-family:var(--font-display);font-size:clamp(26px,2.6vw,36px);line-height:1.12}
.cell__sub{margin-top:8px}
.cell__ex{margin-top:10px;font-size:15px;line-height:1.6;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.cell__ex--lead{-webkit-line-clamp:4;font-size:16.5px}
.post-meta{display:block;margin-top:10px;line-height:1.6;font-size:11.5px;letter-spacing:.22em;text-transform:uppercase;color:var(--muted);font-weight:500}
/* horizontal track (Populous) */
.track-wrap{overflow:hidden}
.track{display:flex;gap:24px;overflow-x:auto;padding-left:max(var(--gutter),calc(50% - var(--container)/2));padding-right:max(var(--gutter),calc(50% - var(--container)/2));scroll-padding-inline:max(var(--gutter),calc(50% - var(--container)/2));scroll-snap-type:x mandatory;scrollbar-width:none;padding-bottom:8px;-webkit-overflow-scrolling:touch}
.track::-webkit-scrollbar{display:none}
.track{--th:clamp(320px,36vw,540px);align-items:flex-end}
.slide{flex:0 0 calc(var(--th)*1.35);scroll-snap-align:start}
.slide .media{aspect-ratio:auto;height:var(--th)}
.slide--post{flex-basis:min(38%,480px)}
.slide--post .cell__title{margin-top:0}.slide--post .cell__ex{margin-top:0}
.slide__cap{display:grid;gap:10px;justify-items:start;padding-top:0;margin-top:14px}
.slide__name{font-family:var(--font-display);font-weight:500;font-size:clamp(28px,3vw,44px);line-height:1;color:var(--ink)}
.slide:hover .media img{transform:scale(1.03)}
.track-foot{display:flex;justify-content:flex-end;align-items:center;gap:24px;margin-top:24px}
.arrows{display:flex;gap:10px}.arrow{width:44px;height:44px;border:1px solid var(--line);border-radius:50%;background:none;padding:0;display:grid;place-items:center;color:var(--ink);cursor:pointer;transition:background .4s,border-color .4s,color .4s}.arrow:hover{background:var(--ink);border-color:var(--ink);color:var(--plaster)}.arrow svg{width:16px;height:16px}.arrow:disabled{opacity:.3;pointer-events:none}
@media (min-width:901px){.track{overflow:visible;scroll-snap-type:none;transform:translate3d(calc(-1*var(--i,0)*(var(--th)*1.5 + 24px)),0,0);transition:transform .9s var(--ease-expo)}.track .slide{flex:0 0 calc(var(--th)*1.5);transition:flex-basis .9s var(--ease-expo)}.track .slide.is-port{flex-basis:calc(var(--th)*.8)}}
/* image bands (Désourdy) */
.iband{position:relative;min-height:min(72svh,760px);display:flex;align-items:flex-end;color:var(--plaster);background:var(--black);isolation:isolate;overflow:hidden}
.iband__media{position:absolute;inset:0;z-index:-1}.iband__media img{width:100%;height:118%;object-fit:cover}
.iband__media::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(18,18,18,.7) 0%,rgba(18,18,18,.2) 55%,rgba(18,18,18,.08) 100%)}
.iband__inner{position:relative;display:flex;justify-content:space-between;align-items:flex-end;gap:40px;padding-top:90px;padding-bottom:var(--s-l)}
.iband .label{color:rgba(242,238,229,.75);margin-bottom:var(--s-label)}.iband .h1{color:var(--plaster)}
/* split, figure, listing */
.split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(40px,6vw,96px);align-items:center}.split .statement{margin:14px 0 20px;font-size:clamp(30px,3.06vw,44px);max-width:none}
.split--form{grid-template-columns:minmax(0,4fr) minmax(0,8fr);align-items:start}
.figure figcaption{display:flex;justify-content:space-between;padding-top:14px;font-size:11.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--muted);font-weight:500}
.listing{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:clamp(32px,5vw,80px);align-items:center;padding-block:var(--s-l);border-top:1px solid var(--line)}
.listing:first-child{border-top:0;padding-top:0}
.listing:nth-child(even){grid-template-columns:minmax(0,5fr) minmax(0,7fr)}.listing:nth-child(even) .media{order:2}
.listing .tag{position:absolute;top:18px;left:18px;z-index:2;background:var(--white);color:var(--ink);font-size:11px;letter-spacing:.2em;text-transform:uppercase;padding:8px 12px;font-weight:500}
.listing__text .h2{margin:12px 0 16px}.listing__text p{margin-bottom:12px}
/* blog featured */
.feat{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:clamp(32px,4vw,64px);align-items:start}
.stubs{display:grid}
.stub{display:grid;grid-template-columns:1fr 96px;gap:20px;align-items:center;padding:15px 0;border-top:1px solid var(--line)}.stub:last-child{border-bottom:1px solid var(--line)}
.stub .cell__title{margin-top:0;font-size:clamp(24px,2vw,29px);line-height:1.08}.stub .post-meta{margin-top:8px}
/* article */
.article-grid{display:grid;grid-template-columns:minmax(0,3fr) minmax(0,7fr) minmax(0,2fr);gap:24px;margin-top:var(--s-l)}
.article__side{display:grid;gap:6px;font-size:14px;color:var(--ink);align-content:start;position:sticky;top:120px;align-self:start}
.article p{margin:0 0 20px;font-size:17px;line-height:1.75}.article h3{font-family:var(--font-display);font-weight:500;font-size:28px;line-height:1.1;color:var(--ink);margin:44px 0 16px}.article ul{margin:0 0 20px;padding-left:20px;list-style:disc}.article li{margin-bottom:6px}
.share{display:flex;gap:12px;margin-top:6px}.share a{width:40px;height:40px;border:1px solid var(--line);border-radius:50%;display:grid;place-items:center;color:var(--ink);transition:background .4s,border-color .4s,color .4s}.share a:hover{background:var(--ink);border-color:var(--ink);color:var(--plaster)}.share svg{width:15px;height:15px}
/* accordion (JS contract) */
.acc{border-top:1px solid var(--line)}.acc__item{border-bottom:1px solid var(--line)}
.acc__head{width:100%;display:grid;grid-template-columns:48px 1fr auto 32px;align-items:center;gap:24px;padding:26px 0;text-align:left}
.acc__num{font-size:11.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--muted);font-weight:500}.acc__title{font-family:var(--font-display);font-weight:500;font-size:clamp(24px,2.3vw,32px);line-height:1.05;color:var(--ink)}
.acc__pct{font-size:11px;letter-spacing:.14em;color:var(--muted);min-width:4ch;text-align:right}
.acc__icon{width:32px;height:32px;position:relative;transition:transform .6s var(--ease-expo)}.acc__icon::before,.acc__icon::after{content:"";position:absolute;left:50%;top:50%;width:14px;height:1px;background:var(--ink);transform:translate(-50%,-50%);transition:transform .6s var(--ease-expo)}.acc__icon::after{transform:translate(-50%,-50%) rotate(90deg)}
.acc__item.is-open .acc__icon{transform:rotate(180deg)}.acc__item.is-open .acc__icon::after{transform:translate(-50%,-50%) rotate(0)}
.acc__body{display:grid;grid-template-rows:0fr;transition:grid-template-rows .7s var(--ease-expo)}.acc__item.is-open .acc__body{grid-template-rows:1fr}.acc__inner{overflow:hidden}
.acc__content{display:grid;grid-template-columns:48px 1fr;gap:24px;padding-bottom:36px}.acc__content>div{max-width:64ch}.acc__content p{margin:0 0 12px;font-size:15px}.acc__content p b{color:var(--ink);font-weight:500}
.acc__bar{grid-column:2;height:1px;background:var(--line);position:relative;margin-top:10px;overflow:hidden}.acc__bar i{position:absolute;inset:0;background:var(--brass);transform:scaleX(0);transform-origin:left;transition:transform 1.2s var(--ease-expo) .2s}.acc__item.is-open .acc__bar i{transform:scaleX(var(--pct,0))}
.acc__barlabel{grid-column:2;font-size:11.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--muted);margin-top:10px;font-weight:500}
/* process (Stanzza-style sticky list) */
.bracket{display:inline-block;font-size:11.5px;font-weight:500;letter-spacing:.22em;text-transform:uppercase;color:var(--ink);line-height:1.6;white-space:nowrap}
.bracket::before{content:"[  ";color:var(--muted);font-weight:400}.bracket::after{content:"  ]";color:var(--muted);font-weight:400}
.proc__head{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:24px;align-items:end;margin-bottom:var(--s-l)}
.proc__intro{grid-column:9/13;color:var(--copy);font-size:16px;max-width:42ch;align-self:end;order:2}
.proc__head>div{grid-column:1/8}.proc__head .bracket{margin-bottom:var(--s-label)}
.proc__h{max-width:none;font-size:clamp(30px,3.06vw,44px)}
/* process timeline (Eladio Dieste, light): the reference's 14 tile placements on a 16-col grid, stacked flush and staggered across the centre hairline
   (line drawn over the photos); 5 placements carry the step copy; brass progress line whose tip carries the current step's title; fixed corner counter
   with the cumulative %; each step's segment has a share-proportional minimum (--share × --tl-k); photos are 1.3× crops drifting in their frames */
.proc{--tl-bg:var(--plaster);--tl-tail:200px;--tl-k:150px;--arch-line:#6F86AD;isolation:isolate;background:linear-gradient(to bottom,var(--tl-top,var(--plaster)) 50%,var(--tl-end,var(--plaster)) 50%)}  /* explicit bg so mix-blend-mode:difference on .tl__head/.tl__mark has a backdrop inside the Lenis wrapper */
.tl{position:relative;padding-top:var(--s-xl);padding-bottom:var(--tl-tail)}
.tl__line{position:absolute;left:50%;top:0;bottom:var(--tl-tail);width:1px;background:rgba(18,18,18,.22);transform:translateX(-50%);z-index:2}
.tl__progress{position:absolute;left:50%;top:0;width:1px;height:0;background:var(--brass);transform:translateX(-50%);z-index:3}
.tl__tip{position:absolute;left:50%;bottom:-4px;width:9px;height:9px;background:var(--brass);transform:translate(-50%,0) rotate(45deg)}
.tl__head{position:absolute;left:50%;top:0;transform:translateX(-50%);z-index:5;pointer-events:none;font-family:var(--font-display);font-weight:500;font-size:clamp(28px,2.6vw,40px);line-height:1;color:#fff;mix-blend-mode:difference;text-align:center;text-wrap:balance;width:max-content;max-width:20ch;transition:opacity .22s}
.tl__head.is-swap{opacity:0}
.tl__counter{position:fixed;right:var(--gutter);bottom:28px;z-index:20;text-align:right;line-height:1;color:#fff;mix-blend-mode:difference;pointer-events:none;opacity:0;transform:translateY(14px);transition:opacity .5s var(--ease-out),transform .5s var(--ease-out)}
.tl__counter.is-on{opacity:1;transform:none}
.tl__counter b{display:block;font-family:var(--font-display);font-weight:500;font-size:clamp(64px,7.2vw,104px);line-height:.9;color:#fff;font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.tl__counter small{font-size:.42em;vertical-align:.9em;margin-left:.06em;color:#fff;opacity:.55}
.tl__counter span{display:block;margin-top:8px;font-size:11.5px;font-weight:500;letter-spacing:.22em;text-transform:uppercase;color:#fff;opacity:.6}
.tl__list{list-style:none;margin:0;padding:150px 0 0}
.tl__item{position:relative;--tl-bg:var(--band,var(--plaster));min-height:calc(var(--share) * var(--tl-k));padding:0 0 var(--s-m)}
.tl__dot{position:absolute;left:50%;top:0;width:9px;height:9px;background:var(--tl-bg);border:1px solid var(--brass);transform:translate(-50%,-50%) rotate(45deg);z-index:4;transition:background .6s}
.tl__item.is-active .tl__dot{background:var(--brass)}
.tl__mark{position:absolute;left:50%;top:0;transform:translate(22px,-50%);z-index:4;color:#fff;mix-blend-mode:difference;opacity:.5;transition:opacity .8s}.tl__item.is-active .tl__mark{opacity:1}
.tl__tile{display:grid;grid-template-columns:repeat(16,minmax(0,1fr))}.tl__tile>*{grid-column:var(--c1)/var(--c2);grid-row:1}
.tl__media--side{margin-top:var(--s-xl)}
.tl__media{margin:0;opacity:.28;transition:opacity 1s var(--ease-out)}.tl__media .media{margin:0}.tl__item.is-active .tl__media{opacity:1}
.tl__px{position:absolute;left:0;right:0;top:-14%;bottom:-14%;will-change:transform}.tl__px img,.tl__px video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.tl__text{padding:var(--s-l) 18px;opacity:.35;transition:opacity 1s var(--ease-out)}.tl__item.is-active .tl__text{opacity:1}
.tl__text--l{padding-left:0}.tl__text--r{padding-right:0}  /* all copy left-aligned (Anna) */
.tl__title{display:none;font-family:var(--font-display);font-weight:500;font-size:clamp(28px,2.8vw,40px);line-height:1.05;color:var(--ink);margin:0 0 22px;text-wrap:balance}
.tl__copy p{margin:0 0 12px;font-size:16px;line-height:1.65;color:var(--copy)}.tl__copy .tl__role{display:inline-block;font-size:11.5px;font-weight:500;letter-spacing:.2em;text-transform:uppercase;color:var(--ink);margin:0 0 26px;line-height:1.5;padding:7px 12px;border:1px solid var(--line);background:#fff}.tl__role span{display:block}  /* partner-led steps: white tag (Anna, Sept 24) */
.tl__copy .tl__role--ue{background:var(--ink);border-color:var(--ink);color:var(--plaster)}  /* Urban Edge-led steps read as solid tags; partner-led steps as outlines */
.tl__dolabel{display:block;font-size:11.5px;font-weight:500;letter-spacing:.2em;text-transform:uppercase;color:var(--muted);margin-bottom:12px}
.tl__do{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}.tl__do li{padding:11px 0;border-bottom:1px solid var(--line);font-size:16.5px;line-height:1.45;color:var(--ink)}.tl__copy b{font-weight:500;color:var(--ink)}
.tl--static .tl__title{display:block}.tl--static .tl__head,.tl--static .tl__counter{display:none}
/* team */
.team{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:24px;row-gap:var(--s-grid)}
.gallery{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}
/* project gallery (Haven-inspired composition) */
.gal{display:grid;gap:var(--s-xl)}
.gal__trio{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;align-items:start}
.gal__trio .media:nth-child(2){margin-top:clamp(48px,7vw,112px)}.gal__trio .media:nth-child(3){margin-top:clamp(96px,14vw,224px)}
.gal__pair{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:24px;align-items:end}
.gal__pair .media:first-child{grid-column:1/9}.gal__pair .media:last-child{grid-column:10/13}
.gal__drift{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:24px;align-items:start}
.gal__drift-l{grid-column:1/6;display:grid;gap:clamp(90px,13.5vw,210px);padding-top:clamp(90px,12vw,195px)}
.gal__drift-r{grid-column:7/13;padding-top:clamp(105px,12vw,180px)}
.gal__drift .media{transform:translate3d(0,var(--drift,0px),0);will-change:transform}
.gal__wide{width:100vw;margin-left:calc(50% - 50vw)}.gal__wide .media{aspect-ratio:16/7}.gal__wide img{will-change:transform}.gal__wide video{display:block;width:100%;height:100%;object-fit:cover;will-change:transform}
.gal__strip{width:100vw;margin-left:calc(50% - 50vw);overflow:hidden}
.gal__strip-inner{display:flex;gap:24px;padding-left:max(var(--gutter),calc(50% - var(--container)/2));padding-right:var(--gutter);will-change:transform}
.gal__strip .media{flex:0 0 clamp(320px,46vw,720px)}
.person__name{font-family:var(--font-display);font-weight:500;font-size:clamp(28px,2.4vw,34px);line-height:1.05;color:var(--ink)}.person .cell__head .label{text-align:right;flex:0 1 auto}
.person__bio{margin-top:12px;font-size:15px;line-height:1.6}.person:hover .media img{transform:scale(1.03)}
/* contact */
.kv{display:grid;gap:22px}.kv div{display:grid;gap:6px;font-size:16px;color:var(--ink)}
.form{display:grid;grid-template-columns:1fr 1fr;gap:24px 24px}.field{display:grid;gap:10px}.field.full{grid-column:1/-1}
.field label{font-size:11.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--muted);font-weight:500}
.field input,.field textarea{width:100%;background:transparent;border:0;border-bottom:1px solid var(--line);padding:10px 0;font:inherit;font-size:16px;color:var(--ink);outline:none;border-radius:0}.field input:focus,.field textarea:focus{border-color:var(--ink)}.field textarea{min-height:110px;resize:vertical}.form .actions{grid-column:1/-1}
/* CTA (Sky) */
.cta{background:var(--sky);color:var(--ink);padding-block:var(--s-l)}
.cta__row{display:flex;justify-content:space-between;align-items:center;gap:32px}.cta__h{font-size:clamp(30px,2.8vw,42px)}  /* Sept 23: CTA steps down so the footer wordmark leads */.cta .label{color:rgba(18,18,18,.6);margin-bottom:12px}
/* footer (Anna, Figma 155:2252 · Sept 23): Walnut; one row of five link columns (pages · pages · address · phone/email · social), then the
   gold-foil URBAN EDGE wordmark edge-to-edge (texture pans left to right on scroll). No badge, no labels, no legal row. */
.footer{background:var(--walnut);color:var(--plaster);overflow:hidden}
.footer__inner{padding-top:clamp(54px,calc(2.3vw + 30px),63px)}
.footer__row{display:grid;grid-template-columns:20.7% 22.2% 23.4% minmax(0,1fr) auto;padding:0 clamp(20px,3.05vw,44px);font-size:15.5px;line-height:1.5}
.footer__links{list-style:none;margin:0;padding:0}.footer__links li{margin-bottom:6px;color:var(--plaster)}
.footer__links--sub{font-size:14px;line-height:1.55}.footer__links--sub li{color:var(--plaster)}.footer__links--sub a{transition:color .4s}.footer__links--sub a:hover{color:var(--plaster)}  /* all footer text, links and icons one color (Anna, Sept 23); contact + social stay a step smaller */
.footer__links a{position:relative}.footer__links a::after{content:"";position:absolute;left:0;bottom:-2px;width:100%;height:1px;background:var(--brass);transform:scaleX(0);transform-origin:right;transition:transform .5s var(--ease-expo)}.footer__links a:hover::after{transform:scaleX(1);transform-origin:left}
.footer__social{display:flex;gap:18px;justify-self:end;padding-top:1px}.footer__social a{display:grid;place-items:center;width:20px;height:20px;color:var(--plaster);transition:color .4s}.footer__social a:hover{color:var(--brass)}.footer__social svg{width:20px;height:20px}
.footer__wm{margin-top:clamp(40px,3.9vw,56px);padding:0;line-height:0;display:block}
.wm{width:100%;height:auto;display:block}.wm path{fill:url(#wmFill)}
/* reveals (JS contract) */
:where(html.js) [data-reveal]{opacity:0;transform:translateY(24px);transition:opacity var(--dur) var(--ease-out),transform var(--dur) var(--ease-out);transition-delay:var(--d,0ms)}
[data-reveal].in{opacity:1;transform:none}[data-reveal="fade"]{transform:none}
[data-reveal="clip"]{opacity:1;transform:none;clip-path:inset(0 0 100% 0);transition:clip-path 1.3s var(--ease-expo);transition-delay:var(--d,0ms)}[data-reveal="clip"].in{clip-path:inset(0)}
[data-reveal="clip"] img{transform:scale(1.14);transition:transform 1.7s var(--ease-expo);transition-delay:var(--d,0ms)}[data-reveal="clip"].in img{transform:scale(1)}
[data-reveal="line"]{opacity:1;transform:scaleX(0);transform-origin:left;transition:transform 1.3s var(--ease-expo)}[data-reveal="line"].in{transform:scaleX(1)}
:where(html.js) .lines .line>span{display:block;transform:translateY(112%);transition:transform 1.1s var(--ease-expo)}
.lines .line{display:block;overflow:hidden;padding-bottom:.08em;margin-bottom:-.08em}.lines.in .line>span{transform:none}
.lines .line:nth-child(2)>span{transition-delay:.08s}.lines .line:nth-child(3)>span{transition-delay:.16s}.lines .line:nth-child(4)>span{transition-delay:.24s}
.page{animation:pageIn 1s var(--ease-out) both}@keyframes pageIn{from{opacity:0}to{opacity:1}}.magnetic{will-change:transform;transition:transform .4s var(--ease-out)}
[data-parallax]{will-change:transform}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.001ms!important;transition-duration:.001ms!important}[data-reveal]{opacity:1;transform:none;clip-path:none}.lines .line>span{transform:none}.intro{display:none}}
@media (max-width:1100px){.team{grid-template-columns:repeat(3,1fr)}.listing,.listing:nth-child(even){grid-template-columns:1fr;gap:28px;align-items:start}.listing:nth-child(even) .media{order:0}.listing__text{max-width:62ch}.nav{gap:22px}}
@media (max-width:900px){.header{height:72px}.header__logo{width:220px;height:11px}.nav{display:none}.burger{display:block}
  .hero-d__inner,.iband__inner,.cta__row{flex-direction:column;align-items:flex-start}.facts{grid-template-columns:1fr 1fr}.phero{min-height:70svh}.hero-d__aside{align-items:flex-start;text-align:left}
  .title .h1,.title .lede,.title .pmeta,.title__media{grid-column:1/-1}.title--media .h1{grid-column:1/-1}.title__media{margin-top:18px}.title__grid,.story,.story--wide,.split,.split--form,.listing,.feat,.article-grid{grid-template-columns:1fr}.about-d{grid-template-columns:1fr}.about-d__art{padding:0 0 40px 32px}.about-d__contact{grid-template-columns:1fr}.listing:nth-child(even) .media{order:0}
  .cells,.gallery{grid-template-columns:1fr;row-gap:30px}
  .gal{gap:36px}.gal__trio{grid-template-columns:1fr 1fr;gap:16px}.gal__trio .media:nth-child(2){margin-top:40px}.gal__trio .media:nth-child(3){margin-top:0;grid-column:1/-1;aspect-ratio:3/2}
  .gal__drift{grid-template-columns:1fr;gap:16px}.gal__drift-l,.gal__drift-r{grid-column:1/-1}.gal__drift-l{gap:16px;padding-top:0}.gal__drift-r{width:82%;margin-left:auto;padding-top:0}
  .gal__pair{grid-template-columns:1fr;gap:16px}.gal__pair .media:first-child,.gal__pair .media:last-child{grid-column:1/-1}.gal__pair .media:last-child{aspect-ratio:3/4;width:70%}
  .gal__strip{overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;-webkit-overflow-scrolling:touch}.gal__strip::-webkit-scrollbar{display:none}.gal__strip-inner{gap:16px;padding-left:var(--gutter)}.gal__strip .media{flex:0 0 78%;scroll-snap-align:start}.team{grid-template-columns:repeat(2,1fr)}.slide{flex-basis:84%}
  .footer__row{grid-template-columns:1fr 1fr;row-gap:28px}.form{grid-template-columns:1fr}
  .acc__head{grid-template-columns:36px 1fr auto 28px;gap:14px}.acc__content{grid-template-columns:1fr}.acc__bar,.acc__barlabel{grid-column:1}}
@media (max-width:560px){.footer__row{grid-template-columns:1fr}.team{grid-template-columns:repeat(2,1fr);gap:16px;row-gap:27px}.person__name{font-size:22px}.person__bio{font-size:13px}.person__row{flex-wrap:wrap;gap:4px 10px}}
/* ================================================= McAlpine-style motion (gr-motion.js) */
.has-chars .line>span{transform:none!important;transition:none!important}
.has-chars .w{display:inline-block;white-space:nowrap}
.gr-motion .has-chars .ch{display:inline-block;opacity:0;transform:translate3d(0,.5em,0) rotate3d(1,0,.05,20deg);transform-origin:0 30%;transition:transform 1.2s cubic-bezier(.23,1,.32,1),opacity 1.2s cubic-bezier(.23,1,.32,1);transition-delay:calc(var(--i)*7ms + var(--d,0ms))}
.gr-motion .has-chars.in .ch,.gr-motion .in .has-chars .ch{opacity:1;transform:translate3d(0,0,0) rotate3d(1,0,0,0deg)}
.gr-motion .media img,.gr-motion .hero-d__media img,.gr-motion .iband__media img,.gr-motion .phero__media img{opacity:0;transition:transform 1.4s var(--ease-expo),opacity .5s linear}
.gr-motion [data-reveal="clip"] img{transition:transform 1.7s var(--ease-expo),opacity .5s linear;transition-delay:var(--d,0ms),0ms}
.gr-motion .media img.is-loaded,.gr-motion .hero-d__media img.is-loaded,.gr-motion .iband__media img.is-loaded,.gr-motion .phero__media img.is-loaded{opacity:1}
.gr-motion .media{transform:translate3d(0,var(--drift,0px),0);will-change:transform}
.gr-motion .poem .pw{opacity:calc(.28 + .72*clamp(0, (var(--mp,0)*var(--n,1) - var(--i,0))/4, 1))}
.gr-motion .about-d__h.poem .pw{opacity:calc(.16 + .84*clamp(0, (var(--mp,0)*var(--n,1) - var(--i,0))/2.5, 1))}
html.is-static .ch,html.is-static .media img,html.is-static .hero-d__media img,html.is-static .iband__media img,html.is-static .phero__media img{opacity:1!important;transform:none!important}
html.is-static .poem .pw{opacity:1!important}
@media (prefers-reduced-motion:reduce){.ch,.media img,.poem .pw{opacity:1!important;transform:none!important}}
/* ---- mobile additions (≤900px) ---- */
@media (max-width:900px){
  .header__logo{width:220px;height:11px}
  .cells--blog{display:flex;gap:16px;overflow-x:auto;scroll-snap-type:x mandatory;scroll-padding-left:var(--gutter);margin:0 calc(-1*var(--gutter));padding:0 var(--gutter) 8px;scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .cells--blog::-webkit-scrollbar{display:none}
  .cells--blog .cell{flex:0 0 82%;scroll-snap-align:start}
  .track{--th:clamp(240px,60vw,360px)}
  .proc__head{grid-template-columns:1fr}.proc__intro,.proc__head>div{grid-column:1/-1}.proc__intro{order:2}.proc{--tl-k:12px}.tl__line,.tl__progress{left:4px}.tl__head{display:none}.tl__title{display:block;font-size:26px;margin-bottom:14px}.tl__counter{right:20px;bottom:16px}.tl__counter b{font-size:56px}.tl__list{padding-top:112px}.tl__item{padding:0 0 24px 32px}.tl__dot{left:4px}.tl__mark{left:4px;transform:translate(20px,-50%)}.tl__tile{grid-template-columns:1fr;gap:16px;margin-bottom:16px}.tl__tile>*{grid-column:1/-1;grid-row:auto}.tl__media--side{margin-top:0}.tl__text,.tl__text--l,.tl__text--r{text-align:left;padding:16px 0 8px}
  .article__side{position:static}
  .split--about{gap:48px;align-items:start}.split--about .media{order:-1}
  .h1{font-size:clamp(52px,15vw,66px);line-height:.96}
  .hero-d__h1 .display{font-size:clamp(62px,18vw,80px)}
}

/* ---- month-by-month build timeline (Oct 2: stakeholder whiteboard) ---------------------------------------------------------------
   each step paints a full-bleed band behind itself (architect = cool sky, builder = warm tints per section); the line runs sky blue
   through the architect's months, brass from the builder's first month; the counter reads the month */
.tl__item::before{content:"";position:absolute;top:0;bottom:0;left:50%;width:100vw;margin-left:-50vw;background:var(--band,var(--plaster));z-index:-1;transition:background .6s}
.tl__item--arch .tl__dot{border-color:var(--arch-line)}.tl__item--arch.is-active .tl__dot{background:var(--arch-line)}
.tl__tip{transition:background .4s}.tl:not(.is-build) .tl__tip{background:var(--arch-line)}
.tl__when{display:block;font-family:var(--font-display);font-weight:500;font-size:clamp(22px,1.9vw,28px);line-height:1;color:var(--ink);margin-bottom:18px}
.tl__item--arch .tl__role:not(.tl__role--ue){background:#fff;border-color:rgba(111,134,173,.45)}
.tl__flag{position:absolute;left:50%;top:0;transform:translate(16px,-50%);z-index:4;font-size:11.5px;font-weight:500;letter-spacing:.2em;text-transform:uppercase;color:var(--ink);white-space:nowrap;background:var(--band);padding:4px 10px}
.tl__counter .tl__cphase{display:block;margin:0 0 10px;font-size:11.5px;font-weight:500;letter-spacing:.22em;text-transform:uppercase;color:#fff;opacity:.75}
.tl__counter small{opacity:.55}
@media (max-width:900px){.proc{--tl-k:48px}.tl__flag{left:4px;transform:translate(14px,-50%)}}
/* photos never touch (Anna, Oct 2): space between stacked tiles; the small companion photo sits beside the copy, not against the main photo */
.tl__tile+.tl__tile{margin-top:clamp(40px,4.5vw,72px)}
.tl__item{padding-bottom:clamp(56px,6vw,96px)}
.tl__media--side{margin-top:clamp(24px,3vw,48px)}
@media (max-width:900px){.tl__tile+.tl__tile{margin-top:0}}

/* month gauge (Oct 2 redesign): label · number with "of 24" on the baseline · 24-tick bar filling with the month · phase split at month 6.
   Everything is white + mix-blend-mode:difference (from .tl__counter), so it reads dark on the bands and inverts over photos. */
.tl__counter{width:clamp(200px,15vw,236px);text-align:left}
.tl__counter .tl__clabel{display:block;font-size:11.5px;font-weight:500;letter-spacing:.22em;text-transform:uppercase;color:#fff;opacity:.7;margin:0 0 6px}
.tl__counter b{display:flex;align-items:baseline;gap:12px;font-size:clamp(60px,5.6vw,88px);line-height:.9}
.tl__counter b small{font-family:var(--font-body);font-size:12px;font-weight:500;letter-spacing:.2em;text-transform:uppercase;vertical-align:baseline;margin:0;opacity:.6;white-space:nowrap}
.tl__bar{display:block;position:relative;height:9px;margin-top:16px;border-bottom:1px solid rgba(255,255,255,.4);
  background:repeating-linear-gradient(to right,rgba(255,255,255,.4) 0 1px,transparent 1px calc(100% / 13))}
.tl__bar::before{content:"";position:absolute;left:0;bottom:-1px;height:3px;width:calc(var(--p,0) * 100%);background:#fff}
.tl__bar::after{content:"";position:absolute;left:25%;bottom:-1px;width:1px;height:16px;background:#fff}
.tl__phases{display:flex;margin-top:10px}
.tl__ph{font-style:normal;font-size:10.5px;font-weight:500;letter-spacing:.2em;text-transform:uppercase;color:#fff;opacity:.4;transition:opacity .4s}
.tl__ph--arch{flex:0 0 25%}.tl__ph--build{flex:1;padding-left:8px}
.tl:not(.is-build) .tl__ph--arch,.tl.is-build .tl__ph--build{opacity:1}
@media (max-width:900px){.tl__counter{width:150px}.tl__counter b{font-size:48px}.tl__ph{font-size:9px;letter-spacing:.14em}}
.tl__counter .tl__cnum{display:inline;margin:0;font-size:inherit;letter-spacing:-.02em;text-transform:none;opacity:1;font-weight:500}
.tl__counter .tl__clabel{margin:0 0 6px}
.tl__counter .tl__phases{display:flex;margin-top:10px;opacity:1}

/* bottom month dock (Oct 2 option, default): a frosted overlay across the whole bottom while the timeline is in view —
   month number · 24-month track (architect 0–6 in blue, builder 6–24 in brass, filling as you scroll) · current step.
   ?gauge=corner swaps back to the corner gauge. */
.tl__dock{position:fixed;left:0;right:0;bottom:0;z-index:30;pointer-events:none;transform:translateY(100%);transition:transform .6s var(--ease-expo)}
.tl__dock.is-on{transform:none}
.tl__dock-in{display:grid;grid-template-columns:auto minmax(0,1fr) minmax(180px,22%);align-items:center;gap:clamp(24px,3vw,48px);
  padding:16px var(--gutter) 18px;background:rgba(242,238,229,.78);-webkit-backdrop-filter:blur(16px) saturate(1.15);backdrop-filter:blur(16px) saturate(1.15);
  border-top:1px solid rgba(18,18,18,.12);transition:background .6s}
.tl:not(.is-build) .tl__dock-in{background:rgba(223,230,240,.8)}
.tl__dlabel{display:block;font-size:11px;font-weight:500;letter-spacing:.22em;text-transform:uppercase;color:var(--muted);margin-bottom:4px}
.tl__dnum{display:flex;align-items:baseline;gap:8px;font-family:var(--font-display);color:var(--ink);line-height:.9}
.tl__dnum b{font-weight:500;font-size:clamp(40px,3.4vw,52px);font-variant-numeric:tabular-nums}
.tl__dnum small{font-size:clamp(18px,1.4vw,22px);color:var(--muted)}
.tl__dphases{display:flex;margin-bottom:8px}
.tl__dph{font-size:11px;font-weight:500;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);opacity:.55;transition:opacity .4s,color .4s;white-space:nowrap}
.tl__dph--arch{flex:0 0 7.6923%}.tl__dph--build{flex:1;padding-left:10px}
.tl:not(.is-build) .tl__dph--arch{opacity:1;color:var(--arch-line)}.tl.is-build .tl__dph--build{opacity:1;color:var(--ink)}
.tl__dbar{display:block;position:relative;height:12px;border-bottom:1px solid rgba(18,18,18,.25);
  background:repeating-linear-gradient(to right,rgba(18,18,18,.22) 0 1px,transparent 1px calc(100% / 13))}
.tl__dbar::after{content:"";position:absolute;left:7.6923%;bottom:-1px;width:1px;height:20px;background:var(--ink)}
.tl__dfill{position:absolute;left:0;bottom:-1px;height:3px;width:calc(var(--p,0) * 100%);
  background:linear-gradient(to right,var(--arch-line) 0 7.6923%,var(--brass) 7.6923% 100%) left/calc(100% / max(var(--p,0),0.001)) 100% no-repeat}
.tl__dfill::after{content:"";position:absolute;right:-5px;top:50%;width:9px;height:9px;background:inherit;background:var(--brass);transform:translateY(-50%) rotate(45deg)}
.tl:not(.is-build) .tl__dfill::after{background:var(--arch-line)}
.tl__dmonths{display:flex;justify-content:space-between;margin-top:6px;font-size:11px;font-weight:500;letter-spacing:.08em;color:var(--muted)}
.tl__dstep{text-align:right}.tl__dtitle{display:block;font-family:var(--font-display);font-weight:500;font-size:clamp(20px,1.7vw,26px);line-height:1.05;color:var(--ink)}
/* option switch */
html:not(.gauge-corner) .tl__counter{display:none}
html.gauge-corner .tl__dock{display:none}
.tl--static .tl__dock{display:none}
@media (max-width:900px){.tl__dock-in{grid-template-columns:auto minmax(0,1fr);gap:16px;padding:12px 20px 14px}.tl__dstep,.tl__dphases{display:none}.tl__dnum b{font-size:36px}}

/* architect → builder handoff (Oct 2): full-bleed brass rule on the band edge + a solid brass badge centred on the line */
.tl__handoff{position:absolute;top:0;left:50%;width:100vw;margin-left:-50vw;height:2px;background:var(--brass);transform:translateY(-1px);z-index:3}
.tl__flag{left:50%;top:0;transform:translate(-50%,-50%);z-index:6;display:grid;justify-items:center;gap:6px;white-space:nowrap;
  background:var(--brass);color:var(--ink);padding:14px 26px 16px;font-family:var(--font-display);font-weight:500;font-size:clamp(26px,2.4vw,36px);line-height:1;letter-spacing:0;text-transform:none}
.tl__flag small{font-family:var(--font-body);font-size:11.5px;font-weight:500;letter-spacing:.22em;text-transform:uppercase;color:rgba(18,18,18,.7)}
@media (max-width:900px){.tl__flag{left:4px;transform:translate(0,-50%);margin-left:14px;font-size:24px;padding:10px 18px 12px;justify-items:start}}
/* dock centred (Anna, Oct 2): equal side columns so the track sits dead centre; number and step title hug the track */
.tl__dock-in{grid-template-columns:minmax(0,1fr) minmax(0,880px) minmax(0,1fr);gap:clamp(28px,3vw,48px)}
.tl__dnow{justify-self:end;text-align:right}.tl__dnow .tl__dnum{justify-content:flex-end}
.tl__dstep{justify-self:start;text-align:left}
@media (max-width:900px){.tl__dock-in{grid-template-columns:auto minmax(0,1fr)}.tl__dnow{justify-self:start;text-align:left}}

/* ================= side month tracks (Oct 5 options) — ?gauge=dock (default) | corner | rail | ruler | wheel */
.tl__gauge{display:none}
html.gauge-dock .tl__dock,html.gauge-corner .tl__counter,html.gauge-rail .tl__rail,html.gauge-ruler .tl__ruler,html.gauge-wheel .tl__wheel{display:block}
html:not(.gauge-corner) .tl__counter{display:none}html:not(.gauge-dock) .tl__dock{display:none}
.tl__rail,.tl__ruler,.tl__wheel{position:fixed;z-index:30;opacity:0;transition:opacity .5s var(--ease-out),transform .5s var(--ease-out);
  background:rgba(242,238,229,.8);-webkit-backdrop-filter:blur(16px) saturate(1.15);backdrop-filter:blur(16px) saturate(1.15);border:1px solid rgba(18,18,18,.1)}
.tl:not(.is-build) .tl__rail,.tl:not(.is-build) .tl__ruler,.tl:not(.is-build) .tl__wheel{background:rgba(223,230,240,.82)}
.tl__rail.is-on,.tl__ruler.is-on,.tl__wheel.is-on{opacity:1;transform:none}
.tl--static .tl__gauge{display:none!important}
/* rail: right edge, vertical 0–24 with every step at its start month */
.tl__rail{right:var(--gutter);top:12vh;bottom:12vh;width:244px;padding:20px 22px;transform:translateX(16px);display:none;flex-direction:column}
html.gauge-rail .tl__rail{display:flex}
.tl__rhead{margin-bottom:18px}
.tl__rtrack{position:relative;flex:1}
.tl__rbar{position:absolute;right:6px;top:0;bottom:0;width:1px;background:rgba(18,18,18,.22)}
.tl__rfill{position:absolute;left:-1px;top:0;width:3px;height:calc(var(--p,0)*100%);background:linear-gradient(to bottom,var(--arch-line) 0 7.6923%,var(--brass) 7.6923% 100%) top/100% calc(100% / max(var(--p,0),0.001)) no-repeat}
.tl__rknob{position:absolute;left:50%;top:calc(var(--p,0)*100%);width:11px;height:11px;background:var(--brass);transform:translate(-50%,-50%) rotate(45deg);transition:background .4s}
.tl:not(.is-build) .tl__rknob{background:var(--arch-line)}
.tl__rsteps{list-style:none;margin:0;padding:0;position:absolute;inset:0}
.tl__rsteps li{position:absolute;right:0;top:calc(var(--m)*100%);transform:translateY(calc(-50% + var(--n,0em)));width:100%}
.tl__rsteps a{display:flex;align-items:center;justify-content:flex-end;gap:10px;padding-right:22px;pointer-events:auto;color:var(--muted);transition:color .3s}
.tl__rsteps a::after{content:"";position:absolute;right:3px;width:7px;height:1px;background:rgba(18,18,18,.35)}
.tl__rm{font-size:10.5px;font-weight:500;letter-spacing:.12em;font-variant-numeric:tabular-nums;opacity:.7;order:2;min-width:2.2em;text-align:right}
.tl__rt{font-size:12px;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:150px}
.tl__rsteps li.is-past a{color:rgba(18,18,18,.55)}
.tl__rsteps li.is-cur a{color:var(--ink)}.tl__rsteps li.is-cur .tl__rt{font-family:var(--font-display);font-size:17px;font-weight:500}
.tl__rail{pointer-events:auto}
/* ruler: left edge, numerals 0–24, current month large, phase brackets */
.tl__ruler{left:var(--gutter);top:50%;transform:translate(-12px,-50%);padding:16px 14px 14px;width:auto}
.tl__ruler.is-on{transform:translate(0,-50%)}
.tl__ruler .tl__dlabel{margin-bottom:10px}
.tl__rcol{position:relative;display:grid;grid-auto-rows:clamp(16px,2.35vh,24px);padding-left:20px}
.tl__rcol span{font-size:11px;font-weight:500;color:var(--muted);opacity:.5;font-variant-numeric:tabular-nums;line-height:1;align-self:center;transition:all .3s var(--ease-out)}
.tl__rcol span.is-major{opacity:.9}
.tl__rcol span.is-cur{font-family:var(--font-display);font-size:30px;color:var(--ink);opacity:1;line-height:.8}
.tl__rbr{position:absolute;left:4px;width:2px}
.tl__rbr--arch{top:0;height:calc(1/13*100%);background:var(--arch-line)}
.tl__rbr--build{top:calc(1/13*100%);bottom:0;background:var(--brass)}
.tl__rbr em{position:absolute;left:-2px;top:50%;transform:translate(-50%,-50%) rotate(-90deg);font-style:normal;font-size:9.5px;font-weight:500;letter-spacing:.22em;text-transform:uppercase;color:var(--muted);white-space:nowrap;display:none}
/* wheel: right side, a rolling month dial */
.tl__wheel{right:var(--gutter);top:50%;transform:translate(16px,-50%);width:132px;padding:16px 18px 14px;text-align:center}
.tl__wheel.is-on{transform:translate(0,-50%)}
.tl__wwin{position:relative;height:200px;overflow:hidden;-webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 30%,#000 70%,transparent 100%);mask-image:linear-gradient(to bottom,transparent 0,#000 30%,#000 70%,transparent 100%)}
.tl__wstrip{position:absolute;left:0;right:0;top:50%;transform:translateY(calc(var(--mi,0) * -48px - 24px));transition:transform .5s var(--ease-expo)}
.tl__wstrip span{display:block;height:48px;line-height:48px;font-family:var(--font-display);font-weight:500;font-size:30px;color:var(--muted);font-variant-numeric:tabular-nums}
.tl__wwin::before,.tl__wwin::after{content:"";position:absolute;left:8px;right:8px;height:1px;background:var(--brass);top:calc(50% - 26px)}
.tl__wwin::after{top:calc(50% + 26px)}
.tl:not(.is-build) .tl__wwin::before,.tl:not(.is-build) .tl__wwin::after{background:var(--arch-line)}
.tl__wof{display:block;margin-top:2px;font-size:11px;font-weight:500;letter-spacing:.2em;text-transform:uppercase;color:var(--muted)}
.tl__wphase{display:flex;justify-content:center;margin-top:10px}
.tl__wphase em{font-style:normal;font-size:10.5px;font-weight:500;letter-spacing:.2em;text-transform:uppercase;display:none}
.tl:not(.is-build) .tl__wphase .tl__ph--arch{display:block;color:var(--arch-line)}.tl.is-build .tl__wphase .tl__ph--build{display:block;color:var(--ink)}
@media (max-width:900px){.tl__rail{width:auto;top:auto;bottom:16px;left:20px;right:20px;height:auto}.tl__rsteps,.tl__rtrack{display:none}.tl__ruler .tl__rcol{grid-auto-rows:14px}.tl__wheel{right:12px;width:96px}.tl__wwin{height:140px}}
.tl__wstrip span{transition:color .3s,opacity .3s}
.tl__wstrip span.is-cur{color:var(--ink);font-size:38px}

/* handoff badge in black (Anna, Oct 5): ink box, plaster type, ink rule along the band seam */
.tl__handoff{background:var(--ink)}
.tl__flag{background:var(--ink);color:var(--plaster)}
.tl__flag small{color:rgba(242,238,229,.65)}
.tl__wheel{border:0}  /* no border on the wheel (Anna, Oct 6) — the frosted fill alone keeps it legible over photos */

/* handoff ribbon (Oct 6): full-bleed ink band centred on the architect → builder seam — "Month 6" · plaster diamond on the line · "Urban Edge Starts" */
.tl__ribbon{position:absolute;top:0;left:50%;width:100vw;margin-left:-50vw;height:clamp(68px,6vw,88px);transform:translateY(-50%);z-index:5;
  display:grid;grid-template-columns:minmax(0,1fr) 64px minmax(0,1fr);align-items:center;background:var(--ink);color:var(--plaster)}
.tl__rl{justify-self:end;font-size:11.5px;font-weight:500;letter-spacing:.22em;text-transform:uppercase;color:rgba(242,238,229,.7)}
.tl__rd{justify-self:center;width:11px;height:11px;background:var(--plaster);transform:rotate(45deg)}
.tl__rr{justify-self:start;font-family:var(--font-display);font-weight:500;font-size:clamp(28px,2.6vw,40px);line-height:1;white-space:nowrap}
.tl__item--handoff{padding-top:clamp(56px,5vw,80px)}
@media (max-width:900px){.tl__ribbon{grid-template-columns:auto 28px 1fr;padding:0 20px;height:64px}.tl__rl{justify-self:start}.tl__rr{font-size:24px}}
.tl__ribbon{display:flex;justify-content:center;align-items:center;gap:clamp(18px,2vw,28px)}.tl__rl,.tl__rr{justify-self:auto}  /* whole group centred on the page (Anna, Oct 6) */
@media (max-width:900px){.tl__ribbon{gap:14px;padding:0 16px}}

/* draggable wheel (Oct 13) */
.tl__wheel{cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;pointer-events:auto}
.tl__wheel.is-drag{cursor:grabbing}.tl__wheel.is-drag .tl__wstrip{transition-duration:.12s}
.tl__wstrip span{cursor:pointer}.tl__wstrip span:hover{color:var(--ink)}
.tl__wheel:focus-visible{outline:1px solid var(--brass);outline-offset:4px}
.tl__wwin::after,.tl__wwin::before{pointer-events:none}
.tl__wheel.is-spin .tl__wstrip{transition:none}  /* spin/drag drives the strip directly */
.tl__wstrip span{transition:color .2s,font-size .2s}

.footer__aside{justify-self:end;display:flex;flex-direction:column;align-items:flex-end;gap:26px}.footer__aside .footer__social{justify-self:auto}.footer__badge{display:block;width:128px;line-height:0;opacity:.82;transition:opacity .4s}.footer__badge:hover{opacity:1}.footer__badge img{width:100%;height:auto;display:block}.kv__badge{display:inline-block;width:150px;line-height:0;opacity:.88;transition:opacity .4s}.kv__badge:hover{opacity:1}.kv__badge img{width:100%;height:auto;display:block}
@media (max-width:900px){.footer__aside{justify-self:start;align-items:flex-start}}
@media (max-width:1240px){.nav{gap:22px}}
@media (max-width:1080px){.nav{display:none}.burger{display:block}}
.person .cell__head{flex-direction:column;align-items:flex-start;gap:8px}.person .cell__head .label{text-align:left}   /* team: title under the name (Nov 5) */

/* properties: text rows — lots list or price range on the right (Nov 5) */
.offer{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:clamp(32px,5vw,80px);padding-block:var(--s-l);border-top:1px solid var(--line)}.offer:first-child{border-top:0;padding-top:0}.offer__head .h2{margin-top:12px}.offer__lots{margin-bottom:24px}.offer__lots li{display:flex;justify-content:space-between;align-items:baseline;gap:24px;padding:18px 0;border-bottom:1px solid var(--line)}.offer__lots li:first-child{border-top:1px solid var(--line)}.offer__addr{font-family:var(--font-display);font-weight:500;font-size:clamp(22px,2vw,28px);line-height:1.1;color:var(--ink)}.offer__city{font-size:15px;color:var(--muted);white-space:nowrap}.offer__price{font-family:var(--font-display);font-weight:500;font-size:clamp(26px,2.6vw,38px);line-height:1.1;color:var(--ink);margin:0 0 20px}.offer__body{align-self:end}
@media (max-width:900px){.offer{grid-template-columns:1fr;gap:20px}.offer__body{align-self:start}.offer__lots li{flex-direction:column;gap:4px}}
