/* ==========================================================================
   HERO — warm ivory, asymmetric editorial composition
   ========================================================================== */
main{position:relative}
.hero{position:sticky;top:0;z-index:0;min-height:max(100svh,660px);background:var(--bg);overflow:hidden}
.hero__glow{position:absolute;inset:-6%;background:radial-gradient(52% 60% at 78% 34%,rgba(123,137,120,.18),transparent 70%),radial-gradient(40% 42% at 8% 92%,rgba(183,154,104,.11),transparent 70%);pointer-events:none}
.hero__media{position:absolute;right:0;top:var(--hh);bottom:7vh;width:56%;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,transparent 0,rgba(0,0,0,.35) 9%,#000 30%);mask-image:linear-gradient(90deg,transparent 0,rgba(0,0,0,.35) 9%,#000 30%)}
.hero__media-in{position:absolute;inset:0;transform-origin:60% 50%}
.hero__video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:62% 40%}
.hero__tint{position:absolute;inset:0;background:linear-gradient(0deg,rgba(248,246,241,.28),transparent 40%);pointer-events:none}
.hero__plate{position:absolute;z-index:3;right:var(--edge);bottom:calc(7vh + 28px);padding:16px 22px;background:rgba(253,252,250,.82);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border:1px solid var(--line);font-size:.68rem;font-weight:700;letter-spacing:.2em;text-transform:uppercase;line-height:1.9;color:var(--ink)}
.hero__plate b{display:block;font-family:var(--serif);font-size:1.9rem;font-weight:500;letter-spacing:-.01em;text-transform:none;line-height:1.05;color:var(--sage-deep)}
.hero__content{position:relative;z-index:2;min-height:max(100svh,660px);display:flex;flex-direction:column;justify-content:flex-end;padding-top:calc(var(--hh) + 6vh);padding-bottom:13vh}
.hero__eyebrow{margin-bottom:clamp(18px,3.2vh,34px)}
.hero h1{font-family:var(--serif);font-weight:500;font-size:clamp(2.9rem,min(6.8vw,13svh),8.4rem);line-height:.96;letter-spacing:-.03em;color:var(--ink)}
.ln{display:block;overflow:hidden;padding-bottom:.12em;margin-bottom:-.12em}
.ln>span{display:block;will-change:transform}
.hero__sub{max-width:36ch;margin-top:clamp(22px,4vh,44px);font-size:clamp(1rem,1.15vw,1.15rem)}
.hero__cta{display:flex;gap:12px;flex-wrap:wrap;margin-top:clamp(22px,3.6vh,38px)}
.hero__rule{position:absolute;z-index:2;left:var(--edge);right:var(--edge);bottom:5.2vh;height:1px;background:var(--line-2);transform-origin:left}
.hero__foot{position:absolute;z-index:3;left:var(--edge);right:var(--edge);bottom:1.6vh;display:flex;justify-content:space-between;align-items:center;gap:20px;font-size:.64rem;font-weight:700;letter-spacing:.22em;text-transform:uppercase;color:var(--ink2)}
.hero__scroll{display:flex;align-items:center;gap:14px;color:var(--ink)}
.hero__scroll i{position:relative;display:block;width:34px;height:1px;background:var(--line-2);overflow:hidden}
.hero__scroll i::after{content:"";position:absolute;inset:0;background:var(--sage-deep);animation:drip 2.6s var(--ease-io) infinite}
@keyframes drip{0%{transform:translateX(-100%)}60%,100%{transform:translateX(100%)}}

@media (max-width:1023px){
  .hero__media{width:auto;left:0;right:0;top:0;bottom:auto;height:60svh;min-height:340px;-webkit-mask-image:linear-gradient(180deg,#000 52%,transparent 100%);mask-image:linear-gradient(180deg,#000 52%,transparent 100%)}
  .hero__plate{display:none}
  .hero__content{padding-top:calc(60svh - 9vh);padding-bottom:64px}
  .hero h1{font-size:clamp(2.9rem,12.6vw,6.2rem)}
  .hero__foot span:last-child{display:none}
  .hero__rule{bottom:46px}
  .hero__foot{bottom:14px}
}
@media (max-width:520px){
  .hero__cta{width:100%;flex-direction:column}
  .hero__cta .btn{width:100%}
}

/* INTRO */
.intro{box-shadow:0 -30px 70px -30px rgba(28,33,29,.14)}
.intro__grid{display:grid;grid-template-columns:repeat(12,1fr);column-gap:clamp(16px,2vw,32px);row-gap:64px;align-items:start}
.intro__text{grid-column:1/span 6;padding-top:clamp(0px,3vw,48px)}
.intro__text .label{margin-bottom:var(--s-4)}
.intro__text h2{margin-bottom:var(--s-4);max-width:15ch}
.intro__text .statement{margin-bottom:var(--s-3)}
.intro__facts{display:grid;grid-template-columns:repeat(3,auto);justify-content:start;gap:0;margin-top:var(--s-5);border-top:1px solid var(--line)}
.fact{padding:26px clamp(18px,2.6vw,44px) 0 0}
.fact+.fact{padding-left:clamp(18px,2.6vw,44px);border-left:1px solid var(--line)}
.fact b{display:block;font-family:var(--serif);font-weight:500;font-size:clamp(1.6rem,2.4vw,2.4rem);line-height:1.1;letter-spacing:-.01em;color:var(--ink)}
.fact span{font-size:.66rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--ink2)}
.intro__visual{grid-column:8/span 5;position:relative;padding-bottom:20%}
.intro__main{aspect-ratio:4/5}
.intro__sub{position:absolute;left:-28%;bottom:0;width:58%;aspect-ratio:4/3;border:10px solid var(--paper);box-shadow:0 24px 50px -28px rgba(28,33,29,.35)}
.intro__tag{position:absolute;right:0;top:0;z-index:2;background:var(--paper);padding:14px 0 18px 22px;font-size:.64rem;font-weight:700;letter-spacing:.22em;text-transform:uppercase;line-height:1.9;color:var(--sage-deep)}
@media (max-width:1023px){
  .intro__text,.intro__visual{grid-column:1/-1}
  .intro__visual{padding-bottom:22%;margin-left:12%}
  .intro__sub{left:-14%;width:52%}
}
@media (max-width:520px){
  .intro__facts{grid-template-columns:1fr}
  .fact,.fact+.fact{padding:18px 0;border-left:0;display:flex;align-items:baseline;gap:14px}
  .fact+.fact{border-top:1px solid var(--line)}
}

/* PHILOSOPHY */
.phil__head{display:grid;grid-template-columns:repeat(12,1fr);column-gap:clamp(16px,2vw,32px);row-gap:var(--s-3);margin-bottom:clamp(56px,7vw,112px)}
.phil__head .label{grid-column:1/-1;margin-bottom:var(--s-3)}
.phil__head h2{grid-column:1/span 7;max-width:16ch}
.phil__head .phil__lede{grid-column:9/span 4;align-self:end;display:grid;gap:18px}
.phil__body{display:grid;grid-template-columns:repeat(12,1fr);column-gap:clamp(16px,2vw,32px);align-items:start}
.phil__list{grid-column:1/span 7}
.phil__media{grid-column:9/span 4;position:sticky;top:calc(var(--hh) + 5vh);aspect-ratio:4/5;max-height:76vh;width:100%}
.phil__media figure{position:absolute;inset:0;overflow:hidden;clip-path:inset(100% 0 0 0)}
.phil__media figure.on{clip-path:inset(0)}
.phil__media img{width:100%;height:100%;object-fit:cover}
.phil__media::after{content:"";position:absolute;inset:-14px 14px 14px -14px;border:1px solid var(--line-2);z-index:-1}
.phil__item{position:relative;display:grid;grid-template-columns:clamp(64px,8vw,120px) 1fr;align-items:baseline;padding:clamp(28px,3.4vw,50px) 0;border-top:1px solid var(--line);opacity:.42;transition:opacity .7s var(--ease);outline-offset:-4px}
.phil__item:last-child{border-bottom:1px solid var(--line)}
.phil__item::before{content:"";position:absolute;left:0;top:-1px;height:1px;width:100%;background:var(--sage-deep);transform:scaleX(0);transform-origin:left;transition:transform 1s var(--ease)}
.phil__item.on{opacity:1}
.phil__item.on::before{transform:scaleX(1)}
.phil__num{font-size:.78rem;font-weight:700;letter-spacing:.2em;color:var(--sage-deep);font-variant-numeric:tabular-nums;transition:transform .8s var(--ease)}
.phil__item h3{font-family:var(--serif);font-weight:500;font-size:clamp(1.9rem,3.3vw,3.4rem);line-height:1.06;letter-spacing:-.02em;max-width:16ch;transition:transform .8s var(--ease),color .5s}
.phil__item.on .phil__num{transform:translateX(10px)}
.phil__item.on h3{transform:translateX(14px);color:var(--ink)}
@media (max-width:1023px){
  .phil__head h2,.phil__head .phil__lede{grid-column:1/-1}
  .phil__list{grid-column:1/-1}
  .phil__media{display:none}
  .phil__item{opacity:1}
}

/* SERVICES (pinned on desktop) */
.svc{position:relative;z-index:1;background:var(--bg)}
.svc__intro{padding-top:var(--sec);padding-bottom:var(--s-4)}
.svc-item{position:relative;padding:clamp(48px,8vw,96px) 0}
.svc-item .container{display:grid;grid-template-columns:repeat(12,1fr);column-gap:clamp(16px,2vw,32px);align-items:center;row-gap:32px}
.svc-text{grid-column:1/span 5}
.svc-text .label{margin-bottom:var(--s-4);display:none}
.svc-fig{grid-column:7/span 6;aspect-ratio:4/5;max-height:78vh;background:var(--cream)}
.svc-num{display:block;font-family:var(--serif);font-weight:400;font-size:clamp(5rem,11vw,12rem);line-height:.8;letter-spacing:-.04em;color:transparent;-webkit-text-stroke:1px var(--sage);margin-bottom:var(--s-4)}
.svc-text h3{font-family:var(--serif);font-weight:500;font-size:clamp(2.2rem,4.2vw,4.4rem);line-height:1;letter-spacing:-.025em;margin-bottom:22px;color:var(--ink);max-width:11ch}
.svc-text p{max-width:38ch;margin-bottom:var(--s-4)}
.svc-fig:hover img.px{transform:scale(1.045)}
.svc__rail{display:none}
@media (min-width:1024px){
  .svc.is-pinned{height:100svh;overflow:hidden}
  .svc.is-pinned .svc__intro{display:none}
  .svc.is-pinned .svc-text .label{display:inline-flex}
  .svc.is-pinned .svc-item{position:absolute;inset:0;padding:calc(var(--hh) + 4vh) 0 7vh;display:flex;align-items:center}
  .svc.is-pinned .svc-item .container{height:100%}
  .svc.is-pinned .svc-fig{height:100%;aspect-ratio:auto;max-height:none}
  .svc.is-pinned .svc__rail{display:flex;position:absolute;z-index:5;left:var(--edge);bottom:4.4vh;gap:10px;align-items:center;font-size:.68rem;font-weight:700;letter-spacing:.22em;color:var(--sage-deep)}
  .svc.is-pinned .svc__rail i{display:block;width:44px;height:1px;background:var(--line-2);transition:background-color .6s,width .6s var(--ease)}
  .svc.is-pinned .svc__rail i.on{background:var(--sage-deep);width:76px}
}
@media (max-width:1023px){
  .svc-text,.svc-fig{grid-column:1/-1}
  .svc-fig{aspect-ratio:4/4.4}
  .svc-item+.svc-item{border-top:1px solid var(--line)}
  .svc-item:last-child{padding-bottom:var(--sec)}
  .svc-item .btn{width:100%}
}

/* FAMILIES */
.fam__grid{display:grid;grid-template-columns:repeat(12,1fr);column-gap:clamp(16px,2vw,32px);row-gap:56px;align-items:center}
.fam__visual{grid-column:1/span 6;margin-left:calc(-1 * var(--gut))}
.fam__img{aspect-ratio:5/5.6}
.fam__text{grid-column:8/span 5}
.fam__text .label{margin-bottom:var(--s-4)}
.fam__text h2{margin-bottom:var(--s-3);max-width:16ch}
.fam__text>p{margin-bottom:var(--s-5)}
.fam__list li{display:grid;grid-template-columns:48px 1fr;gap:12px;padding:24px 0;transition:padding-left .8s var(--ease);border-top:1px solid var(--line);font-family:var(--serif);font-weight:500;font-size:clamp(1.4rem,2vw,2.05rem);line-height:1.18;letter-spacing:-.01em;color:var(--ink)}
.fam__list li:last-child{border-bottom:1px solid var(--line)}
.fam__list li:hover{padding-left:14px}
.fam__list li span{font-family:var(--sans);font-size:.7rem;font-weight:700;letter-spacing:.18em;color:var(--sage-deep);padding-top:.7em}
@media (max-width:1023px){
  .fam__visual{grid-column:1/-1;margin-right:calc(-1 * var(--gut))}
  .fam__text{grid-column:1/-1}
}

/* PLACES */
.places__head{display:grid;grid-template-columns:repeat(12,1fr);column-gap:clamp(16px,2vw,32px);row-gap:var(--s-4);margin-bottom:clamp(40px,6vw,96px)}
.places__head .label{grid-column:1/-1}
.places__head h2{grid-column:1/span 10;max-width:17ch}
.places__list{border-top:1px solid var(--line-2)}
.places__row{position:relative;display:grid;grid-template-columns:clamp(48px,7vw,110px) 1fr auto 56px;align-items:baseline;gap:12px;padding:clamp(18px,2.2vw,32px) 0;border-bottom:1px solid var(--line);cursor:default;outline-offset:-4px}
.places__row>*{transition:opacity .6s var(--ease),color .5s,transform .9s var(--ease)}
.places__row::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;background:var(--sage-deep);transform:scaleX(0);transform-origin:left;transition:transform 1s var(--ease)}
.places__idx{font-size:.74rem;font-weight:700;letter-spacing:.2em;color:var(--sage-deep);font-variant-numeric:tabular-nums}
.places__name{font-family:var(--serif);font-weight:500;font-size:clamp(2.4rem,5.8vw,6rem);line-height:1.02;letter-spacing:-.03em;color:var(--ink)}
.places__type{font-size:.7rem;font-weight:700;letter-spacing:.22em;text-transform:uppercase;color:var(--ink2)}
.places__row .arr{width:28px;height:28px;justify-self:end;align-self:center;opacity:0;transform:translateX(-14px);color:var(--sage-deep)}
.places__row.on::after{transform:scaleX(1)}
.places__row.on .places__name{color:var(--sage-deep);transform:translateX(clamp(8px,1.4vw,24px))}
.places__row.on .arr{opacity:1;transform:none}
.places__list.hov .places__row:not(.on)>:not(.arr){opacity:.38}
.places__preview{position:fixed;left:0;top:0;z-index:60;width:clamp(220px,19vw,310px);aspect-ratio:3/4;pointer-events:none;overflow:hidden;opacity:0;visibility:hidden;display:none;box-shadow:0 30px 60px -30px rgba(28,33,29,.4)}
.places__preview img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transform:scale(1.15);transition:opacity .6s var(--ease),transform 1.2s var(--ease)}
.places__preview img.on{opacity:1;transform:scale(1)}
@media (hover:hover) and (pointer:fine) and (min-width:1024px){.places__preview{display:block}}
@media (max-width:767px){
  .places__head h2{grid-column:1/-1}
  .places__row{grid-template-columns:36px 1fr auto}
  .places__row .arr{display:none}
}

/* APPLICATION CTA — soft sage */
.cta{z-index:2;padding-bottom:0}
.cta__top{display:grid;grid-template-columns:repeat(12,1fr);column-gap:clamp(16px,2vw,32px);row-gap:var(--s-4)}
.cta__top .label{grid-column:1/-1}
.cta__top h2{grid-column:1/span 9;font-size:clamp(2.8rem,7.6vw,8rem);line-height:.98;max-width:20ch}
.cta__row{display:grid;grid-template-columns:repeat(12,1fr);column-gap:clamp(16px,2vw,32px);margin-top:var(--s-5)}
.cta__copy{grid-column:7/span 6;display:grid;gap:18px;justify-items:start}
.cta__copy .btn{margin-top:14px}
.cta__btn{min-height:64px;padding-inline:2.4rem}
.cta__img{margin-top:clamp(56px,8vw,128px);margin-bottom:calc(-1 * clamp(56px,8vw,128px));aspect-ratio:21/9;min-height:280px;background:var(--cream);clip-path:inset(0 18% 0 18%);box-shadow:0 40px 80px -40px rgba(28,33,29,.35)}
.cta__img img.px{object-position:60% 40%}
@media (max-width:1023px){
  .cta__top h2{grid-column:1/-1}
  .cta__copy{grid-column:1/-1}
}
@media (max-width:767px){
  .cta__btn,.cta__copy .btn{width:100%}
  .cta__img{aspect-ratio:4/3.6;margin-bottom:-56px}
}


.contact{padding-top:calc(var(--sec) + clamp(56px,8vw,128px))}

@media (prefers-reduced-motion:reduce){.hero__scroll i::after{animation:none}.hero{position:relative}}
