/* ==================================================================
   LORI CALDWELL DESIGNS · Bespoke design system
   Award-winning interior design · San Antonio, Texas · est. 2001
   Type:  Fraunces (warm display serif) · Hanken Grotesk (text) · Montserrat (labels)
   Palette: warm ivory · espresso · Caldwell olive-gold · brass
   Signature: "the Ring" · arcs + open-circle nodes drawn from the LCD monogram
   ================================================================== */

@import url('../fonts/fonts.css');

:root{
  /* grounds */
  --ivory:      #F7F2E9;
  --ivory-2:    #F0E8DA;
  --ivory-3:    #E6DAC6;
  --white:      #FFFFFF;
  /* ink */
  --ink:        #23201A;
  --ink-soft:   #433D31;
  --ink-mute:   #6A6252;
  /* dark bands */
  --espresso:   #211E17;
  --espresso-2: #2B2619;
  --espresso-3: #171410;
  /* Caldwell golds */
  --olive:      #8F7942;   /* her signature brand hue */
  --olive-deep: #6E5C31;
  --brass:      #B08E4E;   /* accent on light grounds */
  --brass-lite: #CBAF74;   /* accent on dark grounds */
  --gold-faint: rgba(176,142,78,.13);
  /* lines */
  --line:       rgba(35,32,26,.16);
  --line-soft:  rgba(35,32,26,.09);
  --line-ivory: rgba(247,242,233,.20);
  --line-ivory-soft: rgba(247,242,233,.12);

  --display: 'Noto Sans','Helvetica Neue',Arial,sans-serif;
  --serif:   'Fraunces','Georgia',serif;
  --text:    'Hanken Grotesk','Helvetica Neue',Arial,sans-serif;
  --label:   'Montserrat','Helvetica Neue',sans-serif;

  --ease:   cubic-bezier(.22,1,.36,1);
  --ease-2: cubic-bezier(.65,.05,.36,1);

  --w-max:  1440px;
  --w-text: 720px;
  --gutter: clamp(22px,4.6vw,64px);
}

/* ---------------- Reset ---------------- */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;scrollbar-color:var(--olive) var(--ivory-2);-webkit-tap-highlight-color:rgba(176,142,78,.18)}
body{
  font-family:var(--text);
  font-weight:400;
  font-size:18px;
  line-height:1.75;
  color:var(--ink);
  background:var(--ivory);
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  font-kerning:normal;
  font-variant-ligatures:common-ligatures contextual;
  text-rendering:optimizeLegibility;
  overflow-x:hidden;
}
img{max-width:100%;display:block;height:auto}
a{color:inherit;text-decoration:none}
ul,ol{list-style:none}
button{font:inherit;background:none;border:0;cursor:pointer;color:inherit}
::selection{background:var(--olive);color:var(--ivory)}
.section--dark ::selection,.footer ::selection,.cta-band ::selection,.hero-full ::selection,.phero ::selection,.band ::selection,.mnav ::selection{background:var(--brass-lite);color:var(--espresso)}

/* ---------------- Type ---------------- */
h1,h2,h3,h4{font-family:var(--display);font-weight:560;line-height:1.14;color:var(--ink);letter-spacing:-.014em}
.d-hero{font-size:clamp(2.45rem,4.5vw,3.9rem);font-weight:540;line-height:1.06;letter-spacing:-.02em}
.d1{font-size:clamp(2.2rem,4vw,3.35rem);font-weight:540;line-height:1.08;letter-spacing:-.024em}
.d2{font-size:clamp(1.9rem,3.2vw,2.7rem);font-weight:550;letter-spacing:-.02em;line-height:1.12}
.d3{font-size:clamp(1.42rem,2.3vw,1.85rem);font-weight:600;line-height:1.24;letter-spacing:-.014em}
.d4{font-size:1.22rem;font-weight:600;line-height:1.4;letter-spacing:-.01em}
.lede{font-size:clamp(1.14rem,1.5vw,1.34rem);line-height:1.72;color:var(--ink-soft);font-weight:400}
p{margin:0 0 1.4em}
p:last-child{margin-bottom:0}
strong{font-weight:600}
em{font-style:italic}
.serif-i{font-family:var(--serif);font-style:italic;font-weight:400}
.gold-i{font-family:var(--serif);font-style:italic;font-weight:400;color:var(--olive)}
h1,h2,h3,h4,.pull-q,.band-t,.footer-tag,.pf-t,.ecard-title,.jcard-t,.press-t{text-wrap:balance}
p,.lede,.quote-body,.faq-a-in,.recog-t{text-wrap:pretty}

.kicker{
  display:inline-flex;align-items:center;gap:15px;
  font-family:var(--label);font-size:.73rem;font-weight:600;
  letter-spacing:.24em;text-transform:uppercase;color:var(--olive);
  margin-bottom:24px;
}
.kicker::before{content:"";width:44px;height:1px;background:var(--olive)}
.kicker--bare::before{display:none}
.kicker--center{justify-content:center}
.kicker--center::after{content:"";width:44px;height:1px;background:var(--olive)}

.on-dark,.on-dark h1,.on-dark h2,.on-dark h3,.on-dark h4{color:var(--ivory)}
.on-dark p,.on-dark .lede{color:rgba(247,242,233,.90)}
.on-dark .kicker{color:var(--brass-lite)}
.on-dark .kicker::before,.on-dark .kicker--center::after{background:var(--brass-lite)}
.on-dark .gold-i{color:var(--brass-lite)}

/* Signature · the Ring divider (open circle from the LCD monogram) */
.ring-rule{display:flex;align-items:center;gap:16px;border:0;margin:0}
.ring-rule::before,.ring-rule::after{content:"";flex:1;height:1px;background:var(--line)}
.ring-rule i{width:11px;height:11px;border:1px solid var(--brass);border-radius:50%;flex:none;position:relative}
.ring-rule i::after{content:"";position:absolute;inset:3px;border-radius:50%;background:var(--brass)}
.ring-rule--center{max-width:280px;margin-inline:auto}
.on-dark .ring-rule::before,.on-dark .ring-rule::after{background:var(--line-ivory)}
.on-dark .ring-rule i{border-color:var(--brass-lite)}
.on-dark .ring-rule i::after{background:var(--brass-lite)}

/* ---------------- Layout ---------------- */
.wrap{max-width:var(--w-max);margin:0 auto;padding-left:var(--gutter);padding-right:var(--gutter)}
.wrap--text{max-width:var(--w-text)}
.wrap--wide{max-width:1620px}
.section{padding-top:clamp(70px,8.5vw,124px);padding-bottom:clamp(70px,8.5vw,124px)}
.section--tight{padding-top:clamp(48px,5.5vw,82px);padding-bottom:clamp(48px,5.5vw,82px)}
[id]{scroll-margin-top:112px}
.section--linen{background:var(--ivory-2)}
.section--dark{background:var(--espresso);background-image:linear-gradient(165deg,var(--espresso-2),var(--espresso) 60%)}
.section--espresso{background:var(--espresso-3)}

.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:clamp(38px,5vw,88px);align-items:center}
.grid-2--tight{gap:clamp(26px,3.4vw,58px)}
.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(24px,2.8vw,42px)}
.grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(18px,2.2vw,34px)}
@media(max-width:980px){.grid-2{grid-template-columns:1fr}.grid-3{grid-template-columns:1fr 1fr}.grid-4{grid-template-columns:1fr 1fr}}
@media(max-width:620px){.grid-3,.grid-4{grid-template-columns:1fr}}
.center{text-align:center}
.mt-s{margin-top:20px}.mt-m{margin-top:34px}.mt-l{margin-top:52px}

/* ---------------- Buttons ---------------- */
.btn{
  position:relative;display:inline-flex;align-items:center;gap:13px;
  font-family:var(--label);font-size:.74rem;font-weight:600;
  letter-spacing:.22em;text-transform:uppercase;color:var(--ink);
  padding:18px 38px;border:1px solid currentColor;
  overflow:hidden;isolation:isolate;white-space:nowrap;
  transition:color .5s var(--ease),border-color .5s var(--ease);
}
.btn::before{content:"";position:absolute;inset:0;z-index:-1;background:var(--espresso);transform:scaleX(0);transform-origin:left;transition:transform .55s var(--ease)}
.btn:hover{color:var(--ivory)}
.btn:hover::before{transform:scaleX(1)}
.btn .arr{font-family:var(--serif);transition:transform .5s var(--ease)}
.btn:hover .arr{transform:translateX(6px)}
.btn--gold{color:var(--olive);border-color:var(--olive)}
.btn--gold::before{background:var(--olive)}
.btn--gold:hover{color:var(--ivory)}
.btn--solid{background:var(--espresso);color:var(--ivory);border-color:var(--espresso)}
.btn--solid::before{background:var(--olive)}
.btn--solid:hover{color:var(--ivory)}
.btn--ivory{color:var(--ivory);border-color:rgba(247,242,233,.8)}
.btn--ivory::before{background:var(--ivory)}
.btn--ivory:hover{color:var(--espresso)}
.btn--gold2{color:var(--brass-lite);border-color:var(--brass-lite)}
.btn--gold2::before{background:var(--brass-lite)}
.btn--gold2:hover{color:var(--espresso)}

:where(a,button):focus-visible{outline:2px solid var(--brass);outline-offset:4px;border-radius:1px}
:where(.on-dark,.footer,.mnav,.hero-full,.phero,.band,.cta-band,.section--dark) :where(a,button):focus-visible{outline-color:var(--brass-lite)}

.tlink{
  font-family:var(--label);font-size:.74rem;font-weight:600;
  letter-spacing:.22em;text-transform:uppercase;color:var(--ink);
  display:inline-flex;align-items:center;gap:12px;padding-bottom:7px;position:relative;
}
.tlink::after{content:"";position:absolute;left:0;bottom:0;width:100%;height:1px;background:var(--brass);transform:scaleX(.32);transform-origin:left;transition:transform .5s var(--ease)}
.tlink:hover::after{transform:scaleX(1)}
.tlink .arr{color:var(--brass);font-family:var(--serif);transition:transform .5s var(--ease)}
.tlink:hover .arr{transform:translateX(6px)}
.on-dark .tlink{color:var(--ivory)}
.on-dark .tlink::after,.on-dark .tlink .arr{color:var(--brass-lite);background:var(--brass-lite)}
.on-dark .tlink .arr{background:none;color:var(--brass-lite)}

p a,.prose a{text-decoration:underline;text-decoration-color:var(--brass);text-decoration-thickness:1px;text-underline-offset:.18em;text-decoration-skip-ink:auto;transition:background .3s}
p a:hover,.prose a:hover{background:var(--gold-faint)}

/* ---------------- Header ---------------- */
.header{
  position:sticky;top:0;z-index:60;background:rgba(247,242,233,.94);
  backdrop-filter:blur(11px);-webkit-backdrop-filter:blur(11px);
  border-bottom:1px solid var(--line-soft);
  transition:background .45s var(--ease),box-shadow .4s,border-color .45s;
}
.header.is-scrolled{box-shadow:0 14px 40px -26px rgba(33,30,23,.34)}
body.hero-overlay .header{position:fixed;top:0;left:0;right:0;background:transparent;border-bottom-color:var(--line-ivory-soft);backdrop-filter:none;-webkit-backdrop-filter:none}
body.hero-overlay .header .brand-name{color:var(--ivory)}
body.hero-overlay .header .brand-sub{color:var(--brass-lite)}
body.hero-overlay .header .brand-mark path,body.hero-overlay .header .brand-mark circle{stroke:var(--ivory)}
body.hero-overlay .header .nav>li>a{color:rgba(247,242,233,.94)}
body.hero-overlay .header .nav>li>a:hover,body.hero-overlay .header .nav>li>a[aria-current="page"]{color:#fff}
body.hero-overlay .header .nav>li>a::after{background:var(--brass-lite)}
body.hero-overlay .header .header-cta{color:var(--brass-lite);border-color:var(--brass-lite)}
body.hero-overlay .header .burger span{background:var(--ivory)}
body.hero-overlay .header:not(.is-solid) .brand-name,body.hero-overlay .header:not(.is-solid) .brand-sub,body.hero-overlay .header:not(.is-solid) .nav>li>a,body.hero-overlay .header:not(.is-solid) .header-cta{text-shadow:0 1px 3px rgba(15,12,6,.5)}
body.hero-overlay .header.is-solid{position:fixed;background:rgba(247,242,233,.97);backdrop-filter:blur(11px);-webkit-backdrop-filter:blur(11px);border-bottom-color:var(--line-soft)}
body.hero-overlay .header.is-solid .brand-name{color:var(--ink)}
body.hero-overlay .header.is-solid .brand-sub{color:var(--olive)}
body.hero-overlay .header.is-solid .brand-mark path,body.hero-overlay .header.is-solid .brand-mark circle{stroke:var(--olive)}
body.hero-overlay .header.is-solid .nav>li>a{color:var(--ink-soft)}
body.hero-overlay .header.is-solid .nav>li>a:hover,body.hero-overlay .header.is-solid .nav>li>a[aria-current="page"]{color:var(--ink)}
body.hero-overlay .header.is-solid .header-cta{color:var(--olive);border-color:var(--olive)}
body.hero-overlay .header.is-solid .burger span{background:var(--ink)}

.header-inner{max-width:1620px;margin:0 auto;padding:0 clamp(20px,3.2vw,48px);display:flex;align-items:center;justify-content:space-between;gap:22px;min-height:94px}
.brand{display:flex;align-items:center;gap:15px;flex:none}
.brand-logo{height:clamp(34px,3.4vw,46px);width:auto;display:block}
.brand-logo--light{display:none}
/* over a dark hero (not yet solid) or with the mobile drawer open: show ivory logo */
body.hero-overlay .header:not(.is-solid) .brand-logo--dark{display:none}
body.hero-overlay .header:not(.is-solid) .brand-logo--light{display:block}
body.nav-open .header .brand-logo--dark{display:none}
body.nav-open .header .brand-logo--light{display:block}
body.hero-overlay .header:not(.is-solid) .brand-logo--light,body.nav-open .header .brand-logo--light{filter:drop-shadow(0 1px 2px rgba(15,11,5,.55))}
/* footer sits on dark ground → always ivory */
.footer-brand .brand-logo--dark{display:none}
.footer-brand .brand-logo--light{display:block}
.footer-brand .brand-logo{height:48px}
.brand-mark{width:44px;height:44px;flex:none}
.brand-mark path,.brand-mark circle{stroke:var(--olive);transition:stroke .4s}
.brand-txt{display:flex;flex-direction:column;line-height:1}
.brand-name{font-family:var(--label);font-weight:600;font-size:1.02rem;letter-spacing:.16em;text-transform:uppercase;color:var(--ink);white-space:nowrap}
.brand-sub{font-family:var(--serif);font-style:italic;font-size:1.08rem;letter-spacing:.01em;color:var(--olive);margin-top:1px;line-height:1}

.nav{display:flex;align-items:center;gap:2px}
.nav>li{position:relative}
.nav>li>a{font-family:var(--label);font-size:.73rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-soft);padding:14px 15px;display:block;white-space:nowrap;position:relative;transition:color .3s}
.nav>li>a:hover{color:var(--ink)}
.nav>li>a::after{content:"";position:absolute;left:15px;right:15px;bottom:6px;height:1px;background:var(--brass);transform:scaleX(0);transform-origin:left;transition:transform .45s var(--ease)}
.nav>li>a:hover::after,.nav>li>a[aria-current="page"]{color:var(--ink)}
.nav>li>a:hover::after,.nav>li>a[aria-current="page"]::after{transform:scaleX(1)}

.dropdown{position:absolute;top:100%;left:6px;min-width:320px;background:var(--ivory);border:1px solid var(--line-soft);border-top:2px solid var(--olive);padding:16px 0;opacity:0;visibility:hidden;transform:translateY(12px);transition:opacity .35s var(--ease),transform .35s var(--ease),visibility .35s;box-shadow:0 34px 70px -34px rgba(33,30,23,.4);max-height:calc(100vh - 130px);overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--brass) transparent;column-count:1}
.dropdown.dropdown--2col{min-width:520px;padding:18px 10px;columns:2}
.nav li:hover>.dropdown,.nav li:focus-within>.dropdown{opacity:1;visibility:visible;transform:translateY(0)}
.dropdown a{display:block;padding:9px 28px;font-family:var(--label);font-size:.71rem;font-weight:500;letter-spacing:.11em;text-transform:uppercase;color:var(--ink-soft);transition:color .3s,padding-left .3s;break-inside:avoid}
.dropdown a:hover{color:var(--olive);padding-left:36px}
.dropdown .dd-head{display:block;padding:6px 28px 10px;font-family:var(--serif);font-style:italic;font-size:.98rem;color:var(--ink-mute)}
.dropdown hr{border:0;border-top:1px solid var(--line-soft);margin:10px 22px}

.header-cta{flex:none;padding:15px 30px}
@media(max-width:1400px){.header-cta{padding:12px 22px;letter-spacing:.16em}}
@media(max-width:1160px){.header-cta,.nav{display:none}}

.burger{display:none;width:46px;height:46px;position:relative;z-index:90;flex:none}
.burger span{position:absolute;left:9px;right:9px;height:1.5px;background:var(--ink);transition:transform .45s var(--ease),opacity .3s,background .3s}
.burger span:nth-child(1){top:16px}.burger span:nth-child(2){top:23px}.burger span:nth-child(3){top:30px}
@media(max-width:1160px){.burger{display:block}}
body.nav-open .burger span{background:var(--ivory)}
body.nav-open .burger span:nth-child(1){transform:translateY(7px) rotate(45deg)}
body.nav-open .burger span:nth-child(2){opacity:0}
body.nav-open .burger span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}

.mnav{position:fixed;inset:0;z-index:80;background:var(--espresso-3);padding:118px var(--gutter) 60px;overflow-y:auto;opacity:0;visibility:hidden;transition:opacity .45s var(--ease),visibility .45s}
body.nav-open .mnav{opacity:1;visibility:visible}
body.nav-open{overflow:hidden}
body.nav-open .header{z-index:100;background:transparent!important;border-bottom-color:transparent!important;box-shadow:none!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
.mnav .mn-l{font-family:var(--display);font-weight:560;font-size:clamp(1.8rem,6.6vw,2.5rem);color:var(--ivory);padding:9px 0;display:inline-block;transform:translateY(26px);opacity:0;transition:transform .6s var(--ease),opacity .6s,color .3s}
.mnav .mn-l:hover{color:var(--brass-lite)}
body.nav-open .mnav .mn-l{transform:translateY(0);opacity:1}
.mnav .mn-sub{font-family:var(--label);font-size:.7rem;font-weight:500;letter-spacing:.18em;text-transform:uppercase;color:rgba(247,242,233,.78);padding:7px 0 7px 24px;display:block;transition:color .3s}
.mnav .mn-sub:hover{color:var(--brass-lite)}
.mnav-foot{margin-top:38px;border-top:1px solid var(--line-ivory);padding-top:26px;font-size:.9rem;color:rgba(247,242,233,.82)}
.mnav-foot a{color:var(--brass-lite)}

/* ---------------- Cinematic hero ---------------- */
.hero-full{position:relative;min-height:min(100svh,1120px);display:flex;align-items:flex-end;color:var(--ivory);overflow:hidden;background:var(--espresso-3)}
.hero-full .hero-media{position:absolute;inset:0}
.hero-full .hero-media img,.hero-full .hero-media video{width:100%;height:100%;object-fit:cover}
.js .hero-full .hero-media img{transform:scale(1.1);transition:transform 3.6s var(--ease)}
.js body.loaded .hero-full .hero-media img,.js .hero-full .hero-media img.settled{transform:scale(1.02)}
.hero-full .scrim{position:absolute;inset:0;background:
  linear-gradient(to bottom,rgba(18,14,9,.56) 0%,rgba(18,14,9,.2) 15%,rgba(18,14,9,0) 34%),
  linear-gradient(102deg,rgba(18,14,9,.86) 0%,rgba(18,14,9,.6) 40%,rgba(18,14,9,.14) 72%),
  linear-gradient(to top,rgba(18,14,9,.72) 0%,rgba(18,14,9,.26) 46%,rgba(18,14,9,0) 72%)}
.hero-full .wrap{position:relative;z-index:2;width:100%;padding-top:clamp(104px,16svh,180px);padding-bottom:clamp(58px,7vw,104px)}
.hero-full .kicker{color:var(--brass-lite)}
.hero-full .kicker::before{background:var(--brass-lite)}
.hero-full h1{color:var(--ivory);max-width:1060px}
.hero-full h1 em{color:var(--brass-lite);font-style:italic;font-weight:400}
.hero-full .lede{color:var(--ivory);max-width:660px;margin-top:26px}
.hero-actions{display:flex;gap:16px;flex-wrap:wrap;margin-top:38px}
.hero-trust{display:flex;gap:14px 38px;flex-wrap:wrap;margin-top:46px;padding-top:28px;border-top:1px solid rgba(247,242,233,.22);font-family:var(--label);font-size:.7rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:rgba(247,242,233,.92)}
.hero-trust span b{color:var(--brass-lite);font-weight:600}
.scroll-cue{position:absolute;right:clamp(20px,4vw,56px);bottom:44px;z-index:3;display:flex;flex-direction:column;align-items:center;gap:14px;font-family:var(--label);font-size:.68rem;letter-spacing:.38em;text-transform:uppercase;color:rgba(247,242,233,.9);writing-mode:vertical-rl;text-shadow:0 1px 2px rgba(15,12,6,.6)}
.scroll-cue::after{content:"";width:1px;height:62px;background:linear-gradient(var(--brass-lite),transparent);animation:cueDrop 2.2s var(--ease-2) infinite}
@keyframes cueDrop{0%{transform:scaleY(0);transform-origin:top}45%{transform:scaleY(1);transform-origin:top}55%{transform:scaleY(1);transform-origin:bottom}100%{transform:scaleY(0);transform-origin:bottom}}
@media(max-width:760px){.scroll-cue{display:none}}

.hero-full .lede,.hero-full .kicker,
.phero .lede,.phero .kicker,.phero .crumbs,.phero .post-meta,
.band .band-t,.band .band-s,
.cta-band h2,.cta-band .lede{text-shadow:0 1px 3px rgba(14,10,4,.55),0 10px 44px rgba(14,10,4,.4)}
.phero--light h1,.phero--light .lede,.phero--light .kicker,.phero--light .crumbs{text-shadow:none}
.hero-full h1,.phero h1{filter:drop-shadow(0 1px 2px rgba(15,11,5,.5)) drop-shadow(0 10px 30px rgba(15,11,5,.34))}
.phero--light h1{filter:none}
.hero-full .kicker::before,.phero .kicker::before{box-shadow:0 1px 3px rgba(15,11,5,.5)}
.phero--light .kicker::before{box-shadow:none}

/* recognition band */
.recog{background:var(--espresso-3);border-top:1px solid var(--line-ivory)}
.recog .wrap{display:grid;grid-template-columns:repeat(4,1fr)}
.recog-item{padding:clamp(26px,2.8vw,40px) clamp(18px,2.2vw,34px);border-left:1px solid var(--line-ivory)}
.recog-item:first-child{border-left:0}
.recog-s{display:block;font-family:var(--label);font-size:.68rem;font-weight:600;letter-spacing:.24em;text-transform:uppercase;color:var(--brass-lite);margin-bottom:9px}
.recog-n{font-family:var(--serif);font-weight:400;font-size:clamp(2rem,3vw,2.7rem);color:var(--ivory);line-height:1;font-variant-numeric:lining-nums}
.recog-t{font-family:var(--text);font-size:1rem;font-weight:400;line-height:1.55;color:rgba(247,242,233,.92);margin-top:8px}
@media(max-width:960px){.recog .wrap{grid-template-columns:1fr 1fr}.recog-item:nth-child(3){border-left:0}.recog-item:nth-child(n+3){border-top:1px solid var(--line-ivory)}}
@media(max-width:560px){.recog .wrap{grid-template-columns:1fr}.recog-item{border-left:0!important;border-top:1px solid var(--line-ivory)}.recog-item:first-child{border-top:0}}

/* ---------------- Page hero (interior) ---------------- */
.phero{position:relative;background:var(--espresso-3);overflow:hidden;min-height:min(74vh,840px);display:flex;align-items:flex-end}
.phero .media{position:absolute;inset:0;z-index:0}
.phero .media img{width:100%;height:100%;object-fit:cover}
.phero .media::after{content:"";position:absolute;inset:0;background:
  linear-gradient(to bottom,rgba(14,10,4,.56) 0%,rgba(14,10,4,.18) 15%,rgba(14,10,4,0) 34%),
  linear-gradient(100deg,rgba(14,10,4,.85) 0%,rgba(14,10,4,.5) 46%,rgba(14,10,4,.14) 78%),
  linear-gradient(to top,rgba(14,10,4,.74) 0%,rgba(14,10,4,.28) 50%,rgba(14,10,4,.02) 100%)}
.phero .wrap{position:relative;z-index:2;width:100%;padding-top:clamp(122px,15vw,204px);padding-bottom:clamp(50px,6vw,88px)}
.phero h1{color:var(--ivory);max-width:1060px}
.phero .lede{color:var(--ivory);max-width:760px;margin-top:24px}
.phero .kicker{color:var(--brass-lite)}
.phero .kicker::before{background:var(--brass-lite)}
.crumbs{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:30px;font-family:var(--label);font-size:.69rem;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:rgba(247,242,233,.86)}
.crumbs a{transition:color .3s}
.crumbs a:hover{color:var(--brass-lite)}
.crumbs .sep{color:var(--brass-lite);font-family:var(--serif)}

.phero--light{background:var(--ivory-2);min-height:0;display:block}
.phero--light .wrap{padding-top:clamp(58px,7vw,104px)}
.phero--light h1{color:var(--ink)}
.phero--light .lede{color:var(--ink-soft)}
.phero--light .kicker{color:var(--olive)}
.phero--light .kicker::before{background:var(--olive)}
.phero--light .crumbs{color:var(--ink-mute)}
.phero--light .crumbs a:hover{color:var(--olive)}
.phero--light .crumbs .sep{color:var(--olive)}

/* ---------------- Full-width band ---------------- */
.band{position:relative;overflow:hidden;min-height:min(72vh,740px);display:flex;align-items:flex-end}
.band>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.band .band-scrim{position:absolute;inset:0;background:
  linear-gradient(95deg,rgba(15,11,5,.58) 0%,rgba(15,11,5,.2) 46%,rgba(15,11,5,.03) 82%),
  linear-gradient(to top,rgba(15,11,5,.66) 0%,rgba(15,11,5,.12) 50%,rgba(15,11,5,0) 100%)}
.band .wrap{position:relative;z-index:2;width:100%;padding-top:60px;padding-bottom:clamp(38px,4.5vw,66px)}
.band .band-cap{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;flex-wrap:wrap}
.band .band-t{font-family:var(--display);font-size:clamp(1.6rem,2.8vw,2.3rem);font-weight:400;color:var(--ivory)}
.band .band-s{font-family:var(--label);font-size:.68rem;font-weight:600;letter-spacing:.24em;text-transform:uppercase;color:var(--brass-lite)}

/* ---------------- Frames & captions ---------------- */
.frame{position:relative;display:block;overflow:hidden;background:var(--ivory-3)}
.frame img{width:100%;height:100%;object-fit:cover;transition:transform .8s var(--ease)}
.frame:hover img{transform:scale(1.05)}
.frame--32{aspect-ratio:3/2}.frame--43{aspect-ratio:4/3}.frame--45{aspect-ratio:4/5}
.frame--169{aspect-ratio:16/9}.frame--1610{aspect-ratio:16/10}.frame--sq{aspect-ratio:1/1}.frame--34{aspect-ratio:3/4}
.fig-cap{display:flex;align-items:baseline;gap:14px;margin-top:15px;font-family:var(--label);font-size:.69rem;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-soft);font-variant-numeric:lining-nums}
.fig-cap::before{content:"";width:26px;height:1px;background:var(--brass);align-self:center}
.fig-cap .i{font-family:var(--serif);font-style:italic;font-weight:400;letter-spacing:.02em;text-transform:none;font-size:.98rem;color:var(--ink-soft)}

/* Signature · arc frame corners (from the LCD ring) */
.arc-frame{position:relative}
.arc-frame::before,.arc-frame::after{content:"";position:absolute;width:42px;height:42px;z-index:3;pointer-events:none;border:1px solid var(--brass-lite)}
.arc-frame::before{top:15px;left:15px;border-right:0;border-bottom:0;border-top-left-radius:42px}
.arc-frame::after{bottom:15px;right:15px;border-left:0;border-top:0;border-bottom-right-radius:42px}

.img-offset{position:relative}
.img-offset::after{content:"";position:absolute;inset:24px -24px -24px 24px;border:1px solid var(--brass);z-index:-1}
@media(max-width:960px){.img-offset::after{inset:16px -12px -12px 16px}}

.img-duo{position:relative;padding-bottom:12%}
.img-duo .a{width:84%}
.img-duo .b{position:absolute;right:0;bottom:0;width:46%;border:6px solid var(--ivory);box-shadow:0 34px 70px -38px rgba(33,30,23,.5)}
.img-duo .fig-cap{max-width:50%}
@media(max-width:980px){.img-duo{padding-bottom:16%}}

/* ---------------- Editorial / project cards ---------------- */
.ecard{display:block;position:relative}
.ecard .frame{margin-bottom:20px}
.ecard-loc{display:block;font-family:var(--label);font-size:.68rem;font-weight:600;letter-spacing:.26em;text-transform:uppercase;color:var(--olive);margin:12px 0 8px}
.ecard-title{font-family:var(--display);font-weight:560;font-size:clamp(1.4rem,2vw,1.75rem);line-height:1.18;transition:color .35s}
.ecard:hover .ecard-title{color:var(--olive)}
.ecard-sub{color:var(--ink-soft);font-size:.98rem;margin-top:8px;font-weight:400}

/* portfolio grid · uniform crops */
.pf-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(30px,3.4vw,54px) clamp(24px,2.6vw,40px)}
@media(max-width:980px){.pf-grid{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.pf-grid{grid-template-columns:1fr}}
.pf-card .frame{aspect-ratio:4/5;margin-bottom:0}
.pf-cap{display:flex;align-items:baseline;justify-content:space-between;gap:16px;margin-top:16px;padding-bottom:14px;border-bottom:1px solid var(--line-soft);transition:border-color .4s}
.pf-card:hover .pf-cap{border-color:var(--brass)}
.pf-t{font-family:var(--display);font-weight:560;font-size:clamp(1.28rem,1.7vw,1.55rem);line-height:1.16;transition:color .35s}
.pf-card:hover .pf-t{color:var(--olive)}
.pf-loc{font-family:var(--label);font-size:.7rem;font-weight:600;letter-spacing:.22em;text-transform:uppercase;color:var(--ink-mute);white-space:nowrap;flex:none}
.pf-badge{position:absolute;top:16px;left:16px;z-index:4;display:inline-flex;align-items:center;gap:9px;font-family:var(--label);font-size:.58rem;font-weight:600;letter-spacing:.24em;text-transform:uppercase;color:var(--ivory);background:rgba(18,14,9,.44);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);border:1px solid var(--brass-lite);padding:8px 15px}
.pf-badge::before{content:"";width:6px;height:6px;border:1px solid var(--brass-lite);border-radius:50%;flex:none}

/* services · image-led cards */
.svc-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(56px,7vw,90px) clamp(28px,3.2vw,50px)}
@media(max-width:980px){.svc-grid{grid-template-columns:1fr 1fr}}
@media(max-width:620px){.svc-grid{grid-template-columns:1fr}}
.svc-card{display:block;position:relative}
.svc-card .frame{aspect-ratio:4/3;margin-bottom:24px}
.svc-card h2{font-family:var(--display);font-weight:560;font-size:clamp(1.35rem,1.9vw,1.65rem);line-height:1.22;transition:color .35s}
.svc-card:hover h2{color:var(--olive)}
.svc-num{font-family:var(--serif);font-style:italic;font-size:1rem;color:var(--olive);margin-bottom:6px;display:block}
.svc-card p{color:var(--ink-soft);font-size:1rem;margin-top:12px}
.svc-card .svc-more{margin-top:16px}

/* feature list with ring markers */
.rlist{display:grid;gap:14px}
.rlist li{position:relative;padding-left:30px;color:var(--ink-soft)}
.rlist li::before{content:"";position:absolute;left:0;top:.62em;width:9px;height:9px;border:1px solid var(--brass);border-radius:50%}
.rlist li::after{content:"";position:absolute;left:3px;top:calc(.62em + 3px);width:3px;height:3px;border-radius:50%;background:var(--brass)}
.on-dark .rlist li{color:rgba(247,242,233,.9)}
.on-dark .rlist li::before{border-color:var(--brass-lite)}
.on-dark .rlist li::after{background:var(--brass-lite)}
.rlist--2{grid-template-columns:1fr 1fr;gap:14px 40px}
@media(max-width:620px){.rlist--2{grid-template-columns:1fr}}

/* pill list (to-the-trade resources) */
.pills{display:flex;flex-wrap:wrap;gap:12px}
.pill{font-family:var(--label);font-size:.68rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);border:1px solid var(--line);padding:11px 20px;transition:border-color .35s,color .35s,background .35s}
.pill:hover{border-color:var(--brass);color:var(--olive)}
.on-dark .pill{color:rgba(247,242,233,.9);border-color:var(--line-ivory)}
.on-dark .pill:hover{border-color:var(--brass-lite);color:var(--brass-lite)}

/* ---------------- Process (numbered steps) ---------------- */
.steps{display:grid;grid-template-columns:repeat(5,1fr);gap:clamp(24px,2.4vw,36px);counter-reset:step}
@media(max-width:980px){.steps{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.steps{grid-template-columns:1fr}}
.step{position:relative;padding-top:34px;border-top:1px solid var(--line-ivory)}
.step-n{font-family:var(--serif);font-weight:400;font-size:clamp(2.4rem,3.4vw,3rem);color:var(--brass-lite);line-height:.9;font-variant-numeric:lining-nums}
.step h3{font-family:var(--display);font-weight:560;font-size:1.24rem;color:var(--ivory);margin:16px 0 12px}
.step p{color:rgba(247,242,233,.86);font-size:.98rem;line-height:1.6}
.step::before{content:"";position:absolute;top:-1px;left:0;width:44px;height:2px;background:var(--brass-lite)}

/* ---------------- Testimonials ---------------- */
.tslider{position:relative;max-width:940px;margin:0 auto;text-align:center;min-height:340px}
.tslide{position:absolute;inset:0;opacity:0;visibility:hidden;transform:translateY(16px);transition:opacity .8s var(--ease),transform .8s var(--ease),visibility .8s;display:flex;flex-direction:column;align-items:center;justify-content:center}
.tslide.on{opacity:1;visibility:visible;transform:none;position:relative}
.quote-body{font-family:var(--serif);font-weight:400;font-style:italic;font-size:clamp(1.3rem,2.3vw,1.85rem);line-height:1.5;color:var(--ivory);max-width:820px}
.quote-mark{font-family:var(--serif);font-size:3.4rem;line-height:.5;color:var(--brass-lite);display:block;margin-bottom:22px;height:26px}
.quote-cite{margin-top:30px;font-family:var(--label);font-size:.72rem;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:var(--brass-lite)}
.quote-cite span{display:block;color:rgba(247,242,233,.66);letter-spacing:.16em;margin-top:6px;font-weight:500}
.tnav{display:flex;align-items:center;justify-content:center;gap:26px;margin-top:44px}
.tnav button{width:52px;height:52px;border:1px solid var(--line-ivory);color:var(--ivory);font-family:var(--serif);font-size:1.1rem;display:grid;place-items:center;transition:border-color .35s,background .35s,color .35s}
.tnav button:hover{border-color:var(--brass-lite);color:var(--brass-lite)}
.tcount{font-family:var(--label);font-size:.72rem;letter-spacing:.2em;color:rgba(247,242,233,.78);font-variant-numeric:tabular-nums}
.tcount .tcur{color:var(--brass-lite)}

/* review cards (reviews page) */
.rev-grid{columns:2;column-gap:clamp(28px,3vw,48px)}
@media(max-width:820px){.rev-grid{columns:1}}
.rev-card{break-inside:avoid;margin-bottom:clamp(28px,3vw,48px);background:var(--white);border:1px solid var(--line-soft);padding:clamp(30px,3.4vw,48px);position:relative}
.rev-card::before{content:"\201C";position:absolute;top:14px;right:26px;font-family:var(--serif);font-size:4rem;color:var(--gold-faint);line-height:1}
.rev-body{font-size:1.04rem;line-height:1.7;color:var(--ink-soft)}
.rev-cite{margin-top:22px;padding-top:20px;border-top:1px solid var(--line-soft);font-family:var(--label);font-size:.72rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--olive)}
.rev-cite span{display:block;color:var(--ink-mute);letter-spacing:.12em;margin-top:5px;font-weight:500}

/* ---------------- Press ---------------- */
.press-item{display:grid;grid-template-columns:1fr;gap:16px;padding:clamp(34px,4vw,56px) 0;border-top:1px solid var(--line)}
.press-item:last-child{border-bottom:1px solid var(--line)}
.press-src{font-family:var(--label);font-size:.7rem;font-weight:600;letter-spacing:.22em;text-transform:uppercase;color:var(--olive)}
.press-t{font-family:var(--display);font-weight:560;font-size:clamp(1.5rem,2.6vw,2.1rem);line-height:1.16;color:var(--ink)}
.press-t em{font-style:italic;color:var(--olive)}
.press-body{color:var(--ink-soft);max-width:820px}
.press-meta{font-family:var(--label);font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-mute)}

.award-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:0 clamp(30px,4vw,70px)}
@media(max-width:640px){.award-grid{grid-template-columns:1fr}}
.award{display:flex;gap:20px;align-items:baseline;padding:17px 0;border-bottom:1px solid var(--line-ivory)}
.award-y{font-family:var(--serif);font-weight:400;font-size:1.15rem;color:var(--brass-lite);flex:none;width:56px;font-variant-numeric:lining-nums}
.award-t{color:rgba(247,242,233,.92);font-size:1rem;line-height:1.45}

/* ---------------- Journal ---------------- */
.jcard{display:block}
.jcard .frame{aspect-ratio:3/2;margin-bottom:22px}
.jcard-meta{font-family:var(--label);font-size:.7rem;font-weight:600;letter-spacing:.22em;text-transform:uppercase;color:var(--olive);margin-bottom:12px}
.jcard-t{font-family:var(--display);font-weight:560;font-size:clamp(1.4rem,2vw,1.7rem);line-height:1.2;transition:color .35s}
.jcard:hover .jcard-t{color:var(--olive)}
.jcard-x{color:var(--ink-soft);margin-top:12px}
.prose{max-width:var(--w-text)}
.prose h2{font-size:clamp(1.6rem,2.4vw,2rem);margin:1.6em 0 .6em;font-weight:500}
.prose h3{font-size:1.4rem;margin:1.4em 0 .5em;font-weight:500}
.prose p{margin:0 0 1.4em;color:var(--ink-soft)}
.prose ul{margin:0 0 1.5em;display:grid;gap:12px}
.prose ul li{position:relative;padding-left:28px;color:var(--ink-soft)}
.prose ul li::before{content:"";position:absolute;left:0;top:.62em;width:8px;height:8px;border:1px solid var(--brass);border-radius:50%}
.prose blockquote{margin:1.6em 0;padding:6px 0 6px 30px;border-left:2px solid var(--brass);font-family:var(--serif);font-style:italic;font-size:1.3rem;line-height:1.5;color:var(--ink)}

/* ---------------- Videos ---------------- */
.vgrid{display:grid;grid-template-columns:repeat(2,1fr);gap:clamp(34px,4vw,60px)}
@media(max-width:820px){.vgrid{grid-template-columns:1fr}}
.vframe{position:relative;aspect-ratio:16/9;background:var(--espresso-3);overflow:hidden;border:1px solid var(--line-soft)}
.vframe iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.vcap{margin-top:18px}
.vcap h2{font-family:var(--display);font-weight:500;font-size:1.4rem}
.vcap p{color:var(--ink-soft);margin-top:6px}

/* ---------------- CTA band ---------------- */
.cta-band{position:relative;overflow:hidden;color:var(--ivory);text-align:center}
.cta-band>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.cta-band .cta-scrim{position:absolute;inset:0;background:radial-gradient(circle at 50% 45%,rgba(15,11,5,.62),rgba(15,11,5,.8))}
.cta-band .wrap{position:relative;z-index:2;padding-top:clamp(80px,10vw,150px);padding-bottom:clamp(80px,10vw,150px)}
.cta-band h2{color:var(--ivory)}
.cta-band .lede{color:var(--ivory);max-width:640px;margin:20px auto 0}
.cta-band .btn-row{margin-top:40px;display:flex;gap:16px;justify-content:center;flex-wrap:wrap}

/* ---------------- Facts / stats ---------------- */
.facts{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(24px,3vw,44px)}
@media(max-width:820px){.facts{grid-template-columns:1fr 1fr}}
.fact{text-align:center}
.fact-n{font-family:var(--serif);font-weight:400;font-size:clamp(2.6rem,4.4vw,3.8rem);line-height:1;color:var(--olive);font-variant-numeric:lining-nums}
.on-dark .fact-n{color:var(--brass-lite)}
.fact-l{font-family:var(--label);font-size:.68rem;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-mute);margin-top:14px}
.on-dark .fact-l{color:rgba(247,242,233,.72)}

/* ---------------- FAQ ---------------- */
.faq{max-width:900px;margin:0 auto}
.faq-item{border-top:1px solid var(--line)}
.faq-item:last-child{border-bottom:1px solid var(--line)}
.faq-q{width:100%;text-align:left;display:flex;justify-content:space-between;gap:24px;align-items:center;padding:26px 0;font-family:var(--display);font-weight:560;font-size:clamp(1.15rem,1.7vw,1.4rem);color:var(--ink);transition:color .3s}
.faq-q:hover{color:var(--olive)}
.faq-icon{flex:none;width:24px;height:24px;position:relative}
.faq-icon::before,.faq-icon::after{content:"";position:absolute;background:var(--olive);transition:transform .4s var(--ease),opacity .3s}
.faq-icon::before{top:11px;left:2px;right:2px;height:1.5px}
.faq-icon::after{left:11px;top:2px;bottom:2px;width:1.5px}
.faq-item.open .faq-icon::after{transform:scaleY(0)}
.faq-a{max-height:0;overflow:hidden;transition:max-height .5s var(--ease)}
.faq-a-in{padding:0 0 28px;color:var(--ink-soft);max-width:760px}

/* ---------------- Forms · atelier ledger ---------------- */
.form-shell{position:relative;background:linear-gradient(168deg,var(--espresso-2),var(--espresso) 62%);color:var(--ivory);padding:clamp(30px,4.6vw,68px);box-shadow:0 50px 100px -50px rgba(20,16,10,.75);border-top:3px solid var(--olive)}
.form-shell::before,.form-shell::after{content:"";position:absolute;width:44px;height:44px;pointer-events:none;border:1px solid var(--brass-lite)}
.form-shell::before{top:16px;left:16px;border-right:0;border-bottom:0;border-top-left-radius:44px}
.form-shell::after{bottom:16px;right:16px;border-left:0;border-top:0;border-bottom-right-radius:44px}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:26px 30px}
.form-grid .full{grid-column:1/-1}
@media(max-width:680px){.form-grid{grid-template-columns:1fr}}
.fset{margin-bottom:38px}
.form-shell fieldset{border:0;padding:0;margin:0 0 38px;min-width:0}
.form-shell fieldset:last-of-type{margin-bottom:0}
.form-shell legend{padding:0;width:100%}
.fset:last-of-type{margin-bottom:0}
.fset-h{font-family:var(--label);font-size:.68rem;font-weight:600;letter-spacing:.24em;text-transform:uppercase;color:var(--brass-lite);margin-bottom:24px;display:flex;align-items:center;gap:14px}
.fset-h::before{content:"";width:26px;height:1px;background:var(--brass-lite)}
.field{display:flex;flex-direction:column;gap:9px}
.field label,.field .flabel{font-family:var(--label);font-size:.7rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:rgba(247,242,233,.78)}
.field label .req{color:var(--brass-lite)}
.field input,.field select,.field textarea{
  font-family:var(--text);font-size:1rem;color:var(--ivory);
  background:rgba(247,242,233,.05);border:0;border-bottom:1px solid rgba(247,242,233,.28);
  padding:13px 4px;transition:border-color .35s,background .35s;width:100%;
}
.field textarea{min-height:104px;resize:vertical;line-height:1.6}
.field input::placeholder,.field textarea::placeholder{color:rgba(247,242,233,.4)}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--brass-lite);background:rgba(247,242,233,.08)}
.field input:user-valid,.field textarea:user-valid,.field select:user-valid{border-color:rgba(203,175,116,.6)}
.field select{color:var(--ivory);appearance:none;cursor:pointer;background-image:linear-gradient(45deg,transparent 50%,var(--brass-lite) 50%),linear-gradient(135deg,var(--brass-lite) 50%,transparent 50%);background-position:calc(100% - 16px) 20px,calc(100% - 10px) 20px;background-size:6px 6px,6px 6px;background-repeat:no-repeat;color-scheme:dark}
.field select option{background:var(--espresso);color:var(--ivory)}
.field input:-webkit-autofill,.field textarea:-webkit-autofill{-webkit-text-fill-color:var(--ivory);-webkit-box-shadow:0 0 0 40px var(--espresso-2) inset}
.checks{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
@media(max-width:520px){.checks{grid-template-columns:1fr}}
.check{position:relative;display:flex;align-items:center;gap:13px;padding:15px 18px;background:rgba(247,242,233,.04);border:1px solid rgba(247,242,233,.14);cursor:pointer;transition:border-color .3s,background .3s;font-size:.95rem;color:rgba(247,242,233,.9)}
.check:hover{border-color:rgba(203,175,116,.5)}
.check input{position:absolute;opacity:0;width:0;height:0}
.check .box{flex:none;width:19px;height:19px;border:1px solid rgba(247,242,233,.4);border-radius:50%;position:relative;transition:border-color .3s}
.check .box::after{content:"";position:absolute;inset:4px;border-radius:50%;background:var(--brass-lite);transform:scale(0);transition:transform .3s var(--ease)}
.check input:checked~.box{border-color:var(--brass-lite)}
.check input:checked~.box::after{transform:scale(1)}
.check input:checked~span{color:var(--ivory)}
.form-submit{margin-top:36px;display:flex;flex-wrap:wrap;gap:20px;align-items:center}
.btn-gold-bar{background:var(--brass-lite);color:var(--espresso);border:0;padding:19px 46px;font-family:var(--label);font-size:.74rem;font-weight:600;letter-spacing:.22em;text-transform:uppercase;position:relative;overflow:hidden;isolation:isolate;transition:color .5s var(--ease)}
.btn-gold-bar::before{content:"";position:absolute;inset:0;z-index:-1;background:var(--ivory);transform:scaleX(0);transform-origin:left;transition:transform .5s var(--ease)}
.btn-gold-bar:hover::before{transform:scaleX(1)}
.form-note{font-family:var(--serif);font-style:italic;font-size:1rem;color:rgba(247,242,233,.66)}
.form-ok{display:none;margin-top:30px;padding:28px 30px;border:1px solid var(--brass-lite);background:rgba(203,175,116,.08);position:relative}
.form-ok h3{font-family:var(--display);font-weight:600;color:var(--ivory);font-size:1.3rem;margin-bottom:8px}
.form-ok p{color:rgba(247,242,233,.86);font-size:.98rem}
.form-ok #form-copy{margin-top:14px;color:var(--brass-lite);font-family:var(--label);font-size:.68rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;text-decoration:underline;text-underline-offset:.2em;cursor:pointer}

/* newsletter */
.news{display:flex;gap:0;max-width:440px;border-bottom:1px solid var(--line-ivory)}
.news input{flex:1;background:transparent;border:0;color:var(--ivory);font-family:var(--text);font-size:1rem;padding:13px 2px}
.news input::placeholder{color:rgba(247,242,233,.5)}
.news input:focus{outline:none}
.news button{flex:none;font-family:var(--label);font-size:.68rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--brass-lite);padding:0 6px}

/* ---------------- Contact rail ---------------- */
.crail{display:grid;gap:2px}
.crail-item{padding:26px 0;border-top:1px solid var(--line)}
.crail-item:last-child{border-bottom:1px solid var(--line)}
.crail-l{font-family:var(--label);font-size:.7rem;font-weight:600;letter-spacing:.22em;text-transform:uppercase;color:var(--olive);margin-bottom:10px}
.crail-v{font-family:var(--display);font-size:1.24rem;color:var(--ink);line-height:1.4}
.crail-v a{transition:color .3s}
.crail-v a:hover{color:var(--olive)}

/* ---------------- Lightbox ---------------- */
.lb{position:fixed;inset:0;z-index:200;background:rgba(15,11,5,.96);display:flex;align-items:center;justify-content:center;opacity:0;visibility:hidden;transition:opacity .4s,visibility .4s;padding:5vh 6vw}
.lb.on{opacity:1;visibility:visible}
.lb img{max-width:100%;max-height:90vh;object-fit:contain;box-shadow:0 40px 90px -30px rgba(0,0,0,.7)}
.lb-x,.lb-p,.lb-n{position:absolute;color:var(--ivory);font-size:1.6rem;width:56px;height:56px;display:grid;place-items:center;border:1px solid var(--line-ivory);transition:border-color .3s,color .3s,background .3s}
.lb-x:hover,.lb-p:hover,.lb-n:hover{border-color:var(--brass-lite);color:var(--brass-lite)}
.lb-x{top:4vh;right:5vw;font-size:1.9rem}
.lb-p{left:4vw;top:50%;transform:translateY(-50%)}
.lb-n{right:4vw;top:50%;transform:translateY(-50%)}
.lb-count{position:absolute;top:5vh;left:6vw;font-family:var(--label);font-size:.72rem;letter-spacing:.24em;color:var(--brass-lite);font-variant-numeric:tabular-nums}
.lb-cap{position:absolute;bottom:4vh;left:0;right:0;text-align:center;font-family:var(--serif);font-style:italic;color:rgba(247,242,233,.82);font-size:1rem;padding:0 6vw}
@media(max-width:680px){.lb-p{left:2vw}.lb-n{right:2vw}.lb-x{right:3vw}}

/* gallery grid (project pages) */
.gal{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(14px,1.4vw,22px);grid-auto-flow:row dense}
@media(max-width:820px){.gal{grid-template-columns:1fr 1fr}}
@media(max-width:520px){.gal{grid-template-columns:1fr}}
.gal-item{position:relative;overflow:hidden;background:var(--ivory-3);aspect-ratio:4/5;cursor:pointer}
.gal-item.tall{aspect-ratio:4/5}
.gal-item.wide{grid-column:span 2;aspect-ratio:auto}
@media(max-width:520px){.gal-item.wide{grid-column:span 1}}
.gal-item img{width:100%;height:100%;object-fit:cover;transition:transform .8s var(--ease)}
.gal-item:hover img{transform:scale(1.05)}
.gal-item::after{content:"";position:absolute;inset:0;background:rgba(15,11,5,0);transition:background .4s;pointer-events:none}
.gal-item:hover::after{background:rgba(15,11,5,.14)}
.gal-item .zoom{position:absolute;bottom:14px;right:14px;width:38px;height:38px;border:1px solid rgba(247,242,233,.6);border-radius:50%;display:grid;place-items:center;color:var(--ivory);opacity:0;transform:scale(.85);transition:opacity .4s,transform .4s;font-size:.9rem;pointer-events:none}
.gal-item:hover .zoom{opacity:1;transform:scale(1)}

/* project spec block */
.spec{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(20px,2.4vw,40px);padding:clamp(30px,3.6vw,54px) 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
@media(max-width:720px){.spec{grid-template-columns:1fr 1fr}}
.spec-l{font-family:var(--label);font-size:.7rem;font-weight:600;letter-spacing:.22em;text-transform:uppercase;color:var(--olive);margin-bottom:9px}
.spec-v{font-family:var(--display);font-size:1.1rem;color:var(--ink);line-height:1.35}

/* prev / next */
.pn{display:flex;justify-content:space-between;gap:20px;align-items:center;flex-wrap:wrap}
.pn a{font-family:var(--label);font-size:.72rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-soft);display:inline-flex;gap:12px;align-items:center;transition:color .3s}
.pn a:hover{color:var(--olive)}

/* ---------------- Footer ---------------- */
.footer{background:var(--espresso-3);color:rgba(247,242,233,.8);padding:clamp(64px,7vw,100px) 0 0}
.footer-top{display:grid;grid-template-columns:1.5fr 1fr 1fr 1.3fr;gap:clamp(34px,4vw,60px);padding-bottom:clamp(48px,5vw,70px)}
@media(max-width:900px){.footer-top{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.footer-top{grid-template-columns:1fr}}
.footer-brand .brand-name{color:var(--ivory);font-size:1.06rem}
.footer-brand .brand-sub{color:var(--brass-lite)}
.footer-tag{font-family:var(--serif);font-style:italic;font-size:1.24rem;color:rgba(247,242,233,.9);margin-top:22px;max-width:340px;line-height:1.45}
.footer-col h3{font-family:var(--label);font-size:.68rem;font-weight:600;letter-spacing:.22em;text-transform:uppercase;color:var(--brass-lite);margin-bottom:22px}
.footer-col a,.footer-col p{display:block;color:rgba(247,242,233,.78);font-size:.96rem;padding:6px 0;transition:color .3s}
.footer-col a:hover{color:var(--brass-lite)}
.footer-news p{font-size:.95rem;color:rgba(247,242,233,.72);margin-bottom:16px}
.footer-bottom{border-top:1px solid var(--line-ivory);padding:30px 0;display:flex;justify-content:space-between;gap:18px;flex-wrap:wrap;font-family:var(--label);font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;color:rgba(247,242,233,.6)}
.footer-bottom a:hover{color:var(--brass-lite)}
.footer-social{display:flex;gap:16px}

/* logo chip straddling a hairline */
.footer-chip{display:inline-flex;align-items:center;gap:13px;background:var(--espresso-3);padding-right:20px;position:relative;z-index:2}
.footer-rule{position:relative;height:1px;background:var(--line-ivory);margin:0 0 -1px;top:-11px}

/* ---------------- Reveal animations ---------------- */
.js .r{opacity:0;transform:translateY(28px);transition:opacity 1s var(--ease),transform 1s var(--ease)}
.js .r.in{opacity:1;transform:none}
.js .r-l{opacity:0;transform:translateX(-32px);transition:opacity 1.1s var(--ease),transform 1.1s var(--ease)}
.js .r-r{opacity:0;transform:translateX(32px);transition:opacity 1.1s var(--ease),transform 1.1s var(--ease)}
.js .r-l.in,.js .r-r.in{opacity:1;transform:none}
.js [data-stagger]>*{opacity:0;transform:translateY(26px);transition:opacity .9s var(--ease),transform .9s var(--ease)}
.js [data-stagger].in>*{opacity:1;transform:none}
.js [data-stagger].in>*:nth-child(1){transition-delay:.04s}
.js [data-stagger].in>*:nth-child(2){transition-delay:.12s}
.js [data-stagger].in>*:nth-child(3){transition-delay:.2s}
.js [data-stagger].in>*:nth-child(4){transition-delay:.28s}
.js [data-stagger].in>*:nth-child(5){transition-delay:.36s}
.js [data-stagger].in>*:nth-child(6){transition-delay:.44s}
.js [data-stagger].in>*:nth-child(7){transition-delay:.52s}
.js [data-stagger].in>*:nth-child(8){transition-delay:.6s}
.js [data-stagger].in>*:nth-child(9){transition-delay:.68s}

.js .curtain{position:relative;overflow:hidden}
.js .curtain::after{content:"";position:absolute;inset:0;background:var(--ivory-2);transform:scaleY(1);transform-origin:top;transition:transform 1.15s var(--ease) .08s;z-index:2}
.js .curtain.in::after{transform:scaleY(0);transform-origin:bottom}
.js .curtain img{transform:scale(1.12);transition:transform 1.7s var(--ease)}
.js .curtain.in img{transform:scale(1)}
/* hairline seam riding the reveal */
.js .curtain:not(.arc-frame)::before{content:"";position:absolute;left:0;right:0;top:0;height:1px;background:var(--brass-lite);z-index:3;transform:translateY(0);opacity:.9;transition:transform 1.15s var(--ease) .08s,opacity .5s ease 1s}
.js .curtain:not(.arc-frame).in::before{transform:translateY(100%);opacity:0}

.js .line-mask{display:block;overflow:hidden}
.js .line-mask>span{display:block;transform:translateY(112%);transition:transform 1.1s var(--ease)}
.js body.loaded .line-mask>span,.js .line-mask.in>span{transform:none}
.js .line-mask:nth-child(2)>span{transition-delay:.1s}
.js .line-mask:nth-child(3)>span{transition-delay:.2s}

@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .js .r,.js .r-l,.js .r-r,.js [data-stagger]>*{opacity:1;transform:none}
  .js .curtain::after,.js .curtain::before{display:none}
  .js .line-mask>span{transform:none}
  .hero-full .hero-media img,.scroll-cue::after,.frame img{transition:none;animation:none}
}
html.noload .r,html.noload .r-l,html.noload .r-r,html.noload [data-stagger]>*{opacity:1!important;transform:none!important;transition:none!important}
html.noload .line-mask>span{transform:none!important;transition:none!important}
html.noload .curtain::after,html.noload .curtain::before{display:none!important}
html.noload .curtain img,html.noload .hero-media img{transform:none!important;transition:none!important}

/* ---------------- Utilities ---------------- */
.eyebrow-num{font-family:var(--serif);font-style:italic;color:var(--olive);font-size:1.05rem}
.lead-in::first-letter{initial-letter:2.4;font-family:var(--serif);font-weight:500;color:var(--olive);margin-right:12px}
@supports not (initial-letter:2){.lead-in::first-letter{font-size:3.4em;float:left;line-height:.8;padding:6px 12px 0 0;font-family:var(--serif);color:var(--olive)}}
.hr-space{height:1px;background:var(--line);border:0;margin:0}
.badge-strip{display:flex;flex-wrap:wrap;gap:10px 30px;align-items:center;justify-content:center;font-family:var(--label);font-size:.7rem;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-mute)}
.badge-strip .sep{color:var(--brass);font-family:var(--serif)}
.on-dark .badge-strip{color:rgba(247,242,233,.72)}

/* print */
@media print{.header,.footer,.mnav,.scroll-cue,.cta-band{display:none}body{background:#fff;color:#000}}
