/* ─────────────────────────────────────────────────────────────
   CHRISTIAN SIMPSON GLOBAL — christiansimpson.global
   Editorial luxury: cream / deep green / champagne gold.
   Scroll engine: JS writes ONE custom property per pinned
   section (--p, 0→1); every animation below derives from it.
   Transform/opacity only — 60fps everywhere.
   ───────────────────────────────────────────────────────────── */

:root{
  --cream:#F6F3EC; --cream2:#FBF9F4; --cream3:#EFEAE0;
  --green:#2A4A38; --green-deep:#20392C; --night:#0B0F0C; --night2:#111814;
  --gold:#B8956A; --gold-2:#CBA87A; --gold-dim:rgba(184,149,106,.34);
  --gold-ink:#8A6A3F; /* text-safe gold: ≥4.5:1 on cream — use for accents on light surfaces */
  --gold-lift:#D8B98C; /* brighter gold for text ON photography */
  --ink:#22302A; --muted:#6E675A; --muted2:#9C927E; --cream-ink:#F5EFE2;
  --hairline:rgba(34,48,42,.12); --hairline-d:rgba(245,239,226,.14);
  --serif:'Fraunces',Georgia,serif; --sans:'Outfit',system-ui,sans-serif;
  --ease:cubic-bezier(.16,1,.3,1);
  --pad:clamp(22px,5vw,84px);
}
*{box-sizing:border-box;margin:0;padding:0;}
html.smooth{scroll-behavior:smooth;}
/* anchor targets clear the fixed bar even when a section's vh padding is thin */
#about,#companies,#services,#contact{scroll-margin-top:96px;}
html,body{background:var(--cream);}
body{
  font-family:var(--sans);color:var(--ink);line-height:1.6;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
  overflow-x:clip;
}
::selection{background:rgba(184,149,106,.35);}
/* height:auto is load-bearing: images carry width/height attributes for layout stability,
   and without it a max-width-shrunk image keeps its attribute height — squashed sideways */
img{display:block;max-width:100%;height:auto;}
a{color:inherit;text-decoration:none;}
/* keyboard focus: one strong shared ring */
a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{
  outline:2px solid var(--gold-2);outline-offset:3px;border-radius:4px;}
.skip{position:fixed;top:-60px;left:16px;z-index:4000;background:var(--gold);color:var(--night);
  padding:12px 20px;border-radius:8px;font-weight:600;font-size:13px;transition:top .2s;}
.skip:focus{top:14px;}

/* no-JS / failed-JS: everything must simply be visible */
html:not(.js) #loader{display:none;}
html:not(.js) #hero .line{transform:none;}
html:not(.js) #hero .sub,html:not(.js) #hero .cue{opacity:1;}
html:not(.js) #hero .eyebrow{opacity:1;transform:none;}
html:not(.js) .rv{opacity:1;transform:none;}
html:not(.js) .kicker::before{transform:scaleX(1);}

/* film grain — one fixed layer, barely there */
body::after{
  content:"";position:fixed;inset:-50%;z-index:2000;pointer-events:none;opacity:.05;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='240' height='240' filter='url(%23n)' opacity='.55'/%3E%3C/svg%3E");
  animation:grain 9s steps(10) infinite;
}
@keyframes grain{
  0%,100%{transform:translate(0,0)}10%{transform:translate(-3%,2%)}30%{transform:translate(2%,-3%)}
  50%{transform:translate(-2%,3%)}70%{transform:translate(3%,1%)}90%{transform:translate(-1%,-2%)}
}

/* scroll progress hairline */
#progress{position:fixed;top:0;left:0;right:0;height:2px;z-index:1500;
  background:linear-gradient(90deg,var(--gold),var(--gold-2));transform-origin:0 50%;transform:scaleX(0);}

/* ── preloader ─────────────────────────────────────────────── */
#loader{position:fixed;inset:0;z-index:3000;background:var(--night);display:flex;align-items:center;justify-content:center;
  transition:transform 1s var(--ease);}
#loader.done{transform:translateY(-101%);}
#loader .lm{text-align:center;}
#loader .lgw{opacity:0;animation:lm-in 1s var(--ease) .15s forwards;}
#loader .lglobe{width:118px;height:118px;display:block;margin:0 auto;animation:spin 6.5s linear infinite;}
#loader .lsub{margin-top:22px;font-size:15px;font-weight:500;letter-spacing:.3em;text-transform:uppercase;color:var(--cream-ink);
  opacity:0;animation:lm-in 1s var(--ease) .4s forwards;}
#loader .lbar{width:120px;height:1px;background:var(--hairline-d);margin:26px auto 0;overflow:hidden;}
#loader .lbar i{display:block;height:100%;background:var(--gold);transform-origin:0 50%;animation:lbar 1s var(--ease) .25s forwards;transform:scaleX(0);}
@keyframes lm-in{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
@keyframes lbar{to{transform:scaleX(1)}}
@keyframes spin{to{transform:rotate(360deg)}}

/* ── nav ───────────────────────────────────────────────────── */
#nav{position:sticky;top:0;z-index:1400;height:82px;margin-bottom:-82px;
  transition:background .45s,box-shadow .45s,backdrop-filter .45s;}
#nav .in{position:relative;max-width:1560px;margin:0 auto;padding:0 var(--pad);height:82px;display:flex;align-items:center;gap:20px;}
#nav .mark{display:flex;align-items:center;gap:13px;font-family:var(--serif);font-weight:600;font-size:18.5px;letter-spacing:.02em;color:var(--cream-ink);transition:color .45s;}
#nav .mark .gl{width:52px;height:52px;}
#nav .mark .gword{font-style:italic;font-weight:400;color:var(--gold-lift);transition:color .45s;}
#nav.scrolled .mark .gword,#nav.open .mark .gword{color:var(--gold-ink);}
#nav .mark .gl-dark{display:none;}
#nav.scrolled .mark .gl-light,#nav.open .mark .gl-light{display:none;}
#nav.scrolled .mark .gl-dark,#nav.open .mark .gl-dark{display:block;}
#nav .links{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:flex;align-items:center;gap:40px;}
/* text links only — the .cta pill manages its own colors in every nav state,
   otherwise the generic hover paints gold text on the gold pill (invisible) */
#nav .links a:not(.cta){font-size:14.5px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:rgba(245,239,226,.78);transition:color .3s;padding:10px 2px;}
#nav .links a:not(.cta):hover{color:var(--gold-2);}
#nav .links a:not(.cta){position:relative;}
#nav .links a:not(.cta)::after{content:"";position:absolute;left:0;right:0;bottom:-7px;height:2px;background:var(--gold);
  transform:scaleX(0);transform-origin:0 50%;transition:transform .35s var(--ease);}
#nav .links a:not(.cta).active::after{transform:scaleX(1);}
#nav .links a:not(.cta).active{color:var(--gold-2);}
#nav.scrolled .links a:not(.cta).active{color:var(--ink);}
#nav .cta{margin-left:auto;font-size:12.5px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;
  color:var(--night);background:var(--gold);padding:11px 22px;border-radius:999px;
  box-shadow:0 8px 22px -10px rgba(184,149,106,.6);transition:transform .3s var(--ease),background .3s,box-shadow .3s,opacity .3s;}
#nav .cta:hover{background:var(--gold-2);transform:translateY(-1px);box-shadow:0 12px 26px -10px rgba(203,168,122,.65);}
#nav.scrolled{background:rgba(246,243,236,.82);backdrop-filter:blur(16px);box-shadow:0 1px 0 var(--hairline);}
#nav.scrolled .mark{color:var(--ink);}
#nav.scrolled .links a:not(.cta){color:var(--muted);}
#nav.scrolled .links a:not(.cta):hover{color:var(--ink);}
@media (max-width:1080px){
  #about,#companies,#services,#contact{scroll-margin-top:78px;}
  #nav{height:66px;margin-bottom:-66px;}
  #nav .links{display:none;}
  #nav .in{height:66px;gap:12px;}
  #nav .mark{font-size:14.5px;white-space:nowrap;}
  #nav .mark .gl{width:38px;height:38px;}
  #nav .cta{margin-left:auto;font-size:11px;padding:13px 18px;white-space:nowrap;}
}
#menu-btn{display:none;margin-left:auto;width:44px;height:44px;border:0;background:none;cursor:pointer;
  flex-direction:column;align-items:center;justify-content:center;gap:5.5px;}
#menu-btn span{display:block;width:22px;height:2px;background:var(--cream-ink);border-radius:2px;transition:transform .35s var(--ease),opacity .25s,background .45s;}
#nav.scrolled #menu-btn span,#nav.open #menu-btn span{background:var(--ink);}
#nav.open #menu-btn span:nth-child(1){transform:translateY(7.5px) rotate(45deg);}
#nav.open #menu-btn span:nth-child(2){opacity:0;}
#nav.open #menu-btn span:nth-child(3){transform:translateY(-7.5px) rotate(-45deg);}
#mnav{position:fixed;top:0;left:0;right:0;z-index:1390;background:rgba(246,243,236,.97);backdrop-filter:blur(20px);
  padding:92px var(--pad) 34px;box-shadow:0 30px 60px -30px rgba(34,48,42,.25);
  transform:translateY(-104%);visibility:hidden;transition:transform .5s var(--ease),visibility 0s .5s;}
#mnav.open{transform:none;visibility:visible;transition:transform .5s var(--ease);}
#mnav a{display:block;font-family:var(--serif);font-weight:500;font-size:32px;color:var(--ink);padding:13px 0;border-bottom:1px solid var(--hairline);}
#mnav a:last-of-type{border-bottom:none;}
#mnav .mcta{font-family:var(--sans);font-size:13px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;
  background:var(--gold);color:var(--night);border-radius:999px;text-align:center;padding:17px 20px;margin-top:18px;}
@media (max-width:1080px){
  /* the gold CTA stays in the bar beside the burger — text links collapse into the sheet */
  #menu-btn{display:flex;margin-left:0;}
  #nav.open{background:rgba(246,243,236,.97);}
  #nav.open .mark{color:var(--ink);}
  /* menu open: the overlay's own CTA takes over — the bar pill yields to avoid a doubled CTA */
  #nav.open .cta{opacity:0;visibility:hidden;pointer-events:none;transition:opacity .3s,visibility 0s .3s;}
}
/* below 560px the bar holds logo + CTA pill + burger — the wordmark text must yield */
@media (max-width:560px){#nav .mark .mktext{display:none;}}

/* ── hero ──────────────────────────────────────────────────── */
#hero{position:relative;height:112vh;overflow:clip;background:var(--night);}
#hero .media{position:absolute;inset:0;transform:scale(calc(1.07 - var(--hp,0)*.07));will-change:transform;}
#hero video,#hero .poster{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
#hero .tint{position:absolute;inset:0;background:
  linear-gradient(90deg,rgba(15,22,17,.58) 0%,rgba(15,22,17,.30) 42%,rgba(15,22,17,.06) 72%),
  linear-gradient(180deg,rgba(11,15,12,.5) 0%,rgba(11,15,12,.14) 34%,rgba(11,15,12,.16) 62%,rgba(11,15,12,.74) 100%);}
#hero .core{position:relative;z-index:2;height:100vh;display:flex;flex-direction:column;justify-content:flex-end;
  padding:120px var(--pad) clamp(56px,9vh,110px);max-width:1560px;margin:0 auto;
  transform:translateY(calc(var(--hp,0)*-9vh));opacity:calc(1 - var(--hp,0)*1.15);will-change:transform,opacity;}
#hero .eyebrow{font-size:clamp(10px,1.1vw,12.5px);font-weight:600;letter-spacing:.62em;text-transform:uppercase;color:rgba(245,239,226,.92);margin-bottom:26px;text-shadow:0 1px 18px rgba(0,0,0,.4);
  opacity:0;transform:translateY(14px);}
.loaded #hero .eyebrow{transition:opacity .9s var(--ease) .05s,transform .9s var(--ease) .05s;opacity:1;transform:none;}
/* tiny phones: .62em tracking would wrap the eyebrow below ~348px */
@media (max-width:400px){#hero .eyebrow{letter-spacing:.44em;}}
#hero h1{font-family:var(--serif);font-weight:500;color:var(--cream-ink);
  font-size:clamp(44px,7.2vw,108px);line-height:1.02;letter-spacing:-.015em;text-shadow:0 1px 26px rgba(0,0,0,.42);}
#hero h1 em{font-style:italic;color:var(--gold-lift);font-weight:400;}
#hero .mask{overflow:clip;display:block;}
#hero .line{display:block;transform:translateY(112%);}
.loaded #hero .line{transition:transform 1.25s var(--ease);transform:none;}
.loaded #hero .line:nth-child(1){transition-delay:.10s}
.loaded #hero .mask:nth-of-type(2) .line{transition-delay:.22s}
.loaded #hero .mask:nth-of-type(3) .line{transition-delay:.34s}
#hero .sub{margin-top:26px;max-width:470px;font-size:clamp(15px,1.5vw,18px);line-height:1.65;color:rgba(245,239,226,.92);
  text-shadow:0 1px 16px rgba(0,0,0,.4);opacity:0;transform:translateY(16px);}
.loaded #hero .sub{transition:opacity 1s var(--ease) .7s,transform 1s var(--ease) .7s;opacity:1;transform:none;}
#hero .cue{position:absolute;right:var(--pad);bottom:clamp(64px,10vh,120px);display:flex;flex-direction:column;align-items:center;gap:12px;
  color:rgba(245,239,226,.6);font-size:10.5px;letter-spacing:.4em;text-transform:uppercase;writing-mode:vertical-rl;
  opacity:0;}
.loaded #hero .cue{transition:opacity 1s .9s;opacity:1;}
#hero .cue::after{content:"";width:1px;height:64px;background:linear-gradient(180deg,var(--gold),transparent);
  animation:cue 2.2s var(--ease) infinite;}
@keyframes cue{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}}

/* ── ticker (slow marquee under the hero) ──────────────────── */
#ticker{background:var(--night);border-top:1px solid rgba(245,239,226,.07);overflow:clip;padding:24px 0;}
#ticker .tk{display:flex;width:max-content;animation:tk 144s linear infinite;will-change:transform;}
#ticker:hover .tk{animation-play-state:paused;}
#ticker .seq{display:flex;align-items:center;flex:0 0 auto;}
#ticker span{font-family:var(--serif);font-style:italic;font-weight:400;font-size:clamp(15px,1.35vw,19px);
  letter-spacing:.02em;color:rgba(245,239,226,.52);white-space:nowrap;padding:0 clamp(22px,2.6vw,40px);}
#ticker .dot{width:5px;height:5px;border-radius:50%;background:var(--gold);opacity:.55;flex:0 0 auto;}
@keyframes tk{to{transform:translateX(-50%)}}

/* ── shared section furniture ──────────────────────────────── */
.wrap{max-width:1560px;margin:0 auto;padding-left:var(--pad);padding-right:var(--pad);}
.kicker{display:flex;align-items:center;gap:16px;font-size:11.5px;font-weight:600;letter-spacing:.5em;text-transform:uppercase;color:var(--gold-ink);}
.kicker::before{content:"";width:44px;height:1px;background:var(--gold);transform:scaleX(0);transform-origin:0 50%;transition:transform 1s var(--ease) .2s;}
/* dark surfaces: the bright gold reads fine there */
#companies .kicker,#services .kicker,#contact .kicker{color:var(--gold-2);}
.in .kicker::before{transform:scaleX(1);}
.rv{opacity:0;transform:translateY(34px);transition:opacity 1s var(--ease),transform 1s var(--ease);transition-delay:var(--d,0s);}
.in .rv,.rv.in{opacity:1;transform:none;}

/* ── manifesto (pinned word-ink) ───────────────────────────── */
#manifesto{position:relative;height:280vh;background:var(--cream);margin-top:9vh;}
#manifesto .pin{position:sticky;top:0;height:100vh;display:flex;align-items:center;overflow:clip;}
#manifesto .watermark{position:absolute;right:4vw;top:50%;width:46vh;height:46vh;opacity:.38;user-select:none;pointer-events:none;
  transform:translateY(calc(-50% + (var(--p,0) - .5)*-12vh));will-change:transform;}
#manifesto .statement{font-family:var(--serif);font-weight:500;font-size:clamp(28px,4.6vw,64px);line-height:1.22;letter-spacing:-.01em;
  max-width:20ch;color:var(--ink);}
#manifesto .statement .w{opacity:calc(.12 + .88*clamp(0,(var(--p,0)*36 - var(--i))/2.2,1));}
#manifesto .statement em{font-style:italic;color:var(--green);}
#manifesto .statement .gold{color:var(--gold-ink);}
#manifesto .mk{margin-bottom:44px;}

/* ── shared display type ───────────────────────────────────── */
#about h2,#companies h2,#services h2,.h2{font-family:var(--serif);font-weight:500;font-size:clamp(34px,5vw,68px);line-height:1.06;letter-spacing:-.015em;text-wrap:balance;}
.h2 em{font-style:italic;color:var(--green);}
#about h2 em{font-style:italic;color:var(--green);}
#companies h2 em,#services h2 em{font-style:italic;color:var(--gold-2);}

/* ── about (the founder) ───────────────────────────────────── */
#about{background:var(--cream);padding:15vh 0 14vh;position:relative;overflow:clip;}
#about .grid{display:grid;grid-template-columns:minmax(250px,400px) 1fr;gap:clamp(36px,7vw,110px);align-items:center;}
#about .portrait{position:relative;margin:0 0 0 clamp(0px,1.5vw,20px);}
#about .portrait img{width:100%;height:auto;aspect-ratio:4/5;object-fit:cover;border-radius:220px 220px 18px 18px;
  box-shadow:0 30px 70px -30px rgba(34,48,42,.35),0 0 0 1px var(--hairline);}
#about .portrait::after{content:"";position:absolute;inset:-14px;border:1px solid var(--gold-dim);
  border-radius:234px 234px 26px 26px;pointer-events:none;}
#about h2{margin-top:26px;}
#about .lead{margin-top:22px;font-size:clamp(15px,1.35vw,18px);line-height:1.75;color:var(--muted2);max-width:52ch;}

/* ── companies (index rows) ────────────────────────────────── */
#companies{background:var(--night);color:var(--cream-ink);padding:16vh 0;position:relative;overflow:clip;}
#companies::before{content:"";position:absolute;inset:0;background:radial-gradient(80% 55% at 85% -5%,rgba(42,74,56,.5),transparent 62%);pointer-events:none;}
#companies .wrap{position:relative;}
#companies .rows{margin-top:8vh;}
#companies .co{display:flex;gap:clamp(20px,4vw,64px);align-items:baseline;padding:clamp(26px,4.5vh,44px) 6px;border-top:1px solid var(--hairline-d);}
#companies .co:last-child{border-bottom:1px solid var(--hairline-d);}
#companies .no{font-family:var(--serif);font-style:italic;font-weight:400;font-size:15px;color:var(--gold-2);letter-spacing:.14em;min-width:44px;flex:0 0 auto;}
#companies h3{font-family:var(--serif);font-weight:500;font-size:clamp(28px,3.6vw,54px);line-height:1.05;letter-spacing:-.01em;}
#companies .ci p{margin-top:10px;font-size:clamp(13.5px,1.15vw,15.5px);line-height:1.65;color:rgba(245,239,226,.62);max-width:58ch;}

/* ── services (three ways in) ──────────────────────────────── */
#services{background:var(--green);color:var(--cream-ink);padding:15vh 0 16vh;position:relative;overflow:clip;}
#services::after{content:"";position:absolute;inset:0;background:radial-gradient(70% 90% at 12% 112%,rgba(184,149,106,.16),transparent 60%);pointer-events:none;}
#services .wrap{position:relative;z-index:1;}
#services .rows{margin-top:8vh;}
#services .sv{display:flex;gap:clamp(20px,4vw,64px);align-items:center;padding:clamp(26px,4.5vh,46px) 6px;border-top:1px solid rgba(245,239,226,.22);color:inherit;}
#services .sv:last-child{border-bottom:1px solid rgba(245,239,226,.22);}
#services .no{font-family:var(--serif);font-style:italic;font-weight:400;font-size:15px;color:var(--gold-2);letter-spacing:.14em;min-width:44px;flex:0 0 auto;}
#services h3{font-family:var(--serif);font-weight:500;font-size:clamp(30px,4.2vw,62px);line-height:1.04;letter-spacing:-.01em;transition:color .3s;}
#services .si p{margin-top:8px;font-size:clamp(13.5px,1.15vw,15.5px);line-height:1.65;color:rgba(245,239,226,.66);max-width:56ch;}
#services .arrow{margin-left:auto;flex:0 0 auto;color:var(--gold-2);opacity:.65;transition:transform .35s var(--ease),opacity .3s;}
@media (hover:hover){
  #services .sv:hover .arrow{transform:translateX(8px);opacity:1;}
  #services .sv:hover h3{color:var(--gold-2);}
}

/* ── ethos ─────────────────────────────────────────────────── */
#ethos{background:var(--cream);padding:18vh 0;position:relative;overflow:clip;}
/* soft seams: a gold hairline eases the hard color steps */
#about::before,#ethos::before{content:"";position:absolute;left:0;right:0;top:0;height:1px;
  background:linear-gradient(90deg,transparent,var(--gold-dim) 30%,var(--gold-dim) 70%,transparent);}
#ethos blockquote{font-family:var(--serif);font-weight:400;font-style:italic;font-size:clamp(26px,3.8vw,54px);
  line-height:1.3;letter-spacing:-.01em;max-width:26ch;color:var(--ink);}
#ethos blockquote .gold{color:var(--gold-ink);}
#ethos .who{margin-top:40px;display:flex;align-items:center;gap:18px;}
#ethos .who .rule{width:54px;height:1px;background:var(--gold);}
#ethos .who span{font-size:12px;font-weight:600;letter-spacing:.3em;text-transform:uppercase;color:var(--muted);}

/* ── contact ───────────────────────────────────────────────── */
#contact{background:var(--night);color:var(--cream-ink);padding:16vh 0 0;position:relative;overflow:clip;}
#contact::before{content:"";position:absolute;inset:0;background:radial-gradient(80% 50% at 50% 0%,rgba(42,74,56,.5),transparent 65%);}
#contact .lead-h{font-family:var(--serif);font-weight:500;font-size:clamp(52px,10vw,150px);line-height:.98;letter-spacing:-.02em;position:relative;}
#contact .lead-h em{font-style:italic;color:var(--gold-2);}
#contact .duo{position:relative;display:grid;grid-template-columns:1.1fr 1fr;gap:clamp(40px,6vw,110px);margin-top:9vh;padding-bottom:13vh;}
#contact .duo p{color:rgba(245,239,226,.66);font-size:clamp(15px,1.3vw,17.5px);max-width:44ch;line-height:1.75;}
#contact .mail{display:inline-block;margin-top:30px;font-family:var(--serif);font-style:italic;font-size:clamp(19px,2vw,27px);color:var(--gold-2);
  border-bottom:1px solid var(--gold-dim);padding-bottom:6px;transition:border-color .3s,color .3s;}
#contact .mail:hover{color:var(--cream-ink);border-color:var(--gold-2);}
#contact form{display:grid;gap:18px;}
#contact .fld{position:relative;}
#contact .fld input,#contact .fld textarea{width:100%;background:rgba(245,239,226,.045);border:0;border-bottom:1.5px solid rgba(245,239,226,.30);
  border-radius:6px 6px 0 0;color:var(--cream-ink);font-family:var(--sans);font-size:15.5px;padding:16px 12px;outline:none;transition:border-color .35s,background .35s;resize:vertical;min-height:auto;}
#contact .fld textarea{min-height:96px;}
#contact .fld input::placeholder,#contact .fld textarea::placeholder{color:rgba(245,239,226,.62);letter-spacing:.02em;}
#contact .fld input:focus,#contact .fld textarea:focus{border-color:var(--gold);background:rgba(245,239,226,.07);}
#contact .fld input,#contact .fld textarea{caret-color:var(--gold-2);}
/* honeypot — visually gone, still in the DOM for the spam trap */
#contact .hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden;}
/* inline confirmation that replaces the form after a successful send */
#contact .sent{display:flex;flex-direction:column;justify-content:center;gap:14px;animation:sent-in .9s var(--ease);}
#contact .sent .big{font-family:var(--serif);font-style:italic;font-weight:400;font-size:clamp(32px,3.6vw,48px);color:var(--gold-2);line-height:1.1;}
#contact .sent .rule{width:54px;height:1px;background:var(--gold-dim);}
#contact .sent:focus{outline:none;}
@keyframes sent-in{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
#contact .send-err{margin-top:14px;font-size:14px;line-height:1.5;color:var(--gold-2);}
#contact button{justify-self:start;margin-top:10px;font-family:var(--sans);font-size:12.5px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;
  color:var(--night);background:var(--gold);border:0;border-radius:999px;padding:17px 38px;cursor:pointer;
  transition:transform .35s var(--ease),background .3s;}
#contact button:hover{background:var(--gold-2);transform:translateY(-2px);}
#contact .foot{position:relative;border-top:1px solid var(--hairline-d);padding:34px 0 40px;display:flex;align-items:center;gap:22px;flex-wrap:wrap;}
#contact .foot img{width:30px;height:30px;border-radius:8px;}
#contact .foot .c{font-size:12.5px;color:rgba(245,239,226,.45);letter-spacing:.06em;}
#contact .foot .links{margin-left:auto;display:flex;gap:26px;}
#contact .foot .links a{font-size:11.5px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:rgba(245,239,226,.5);transition:color .3s;}
#contact .foot .links a:hover{color:var(--gold-2);}

/* ── responsive ────────────────────────────────────────────── */
@media (max-width:1020px){
  #about .grid{grid-template-columns:1fr;gap:44px;}
  #about .portrait{max-width:340px;}
  #contact .duo{grid-template-columns:1fr;}
}
@media (max-width:700px){
  #hero{height:102vh;}
  #hero .cue{display:none;}                      /* overlaps the sub text on narrow screens */
  #manifesto{height:auto;margin-top:0;}
  #manifesto .pin{position:static;height:auto;padding:11vh 0 9vh;}
  #manifesto .statement .w{opacity:1;}
  #manifesto .watermark{width:58vw;height:58vw;right:-12vw;top:auto;bottom:-8vw;transform:none;opacity:.2;}
  #about{padding:10vh 0 9vh;}
  #about .grid{grid-template-columns:1fr;gap:38px;}
  #about .portrait{max-width:290px;}
  #companies{padding:9vh 0;}
  #companies .rows{margin-top:5vh;}
  #companies .co{gap:16px;padding:22px 2px;}
  #services{padding:9vh 0 10vh;}
  #services .rows{margin-top:5vh;}
  #services .sv{gap:14px;padding:20px 2px;}
  #services .arrow{width:18px;height:18px;}
  #ethos{padding:10vh 0;}
  #contact{padding:11vh 0 0;}
  #contact .duo{margin-top:5vh;padding-bottom:9vh;}
  #contact button{width:100%;}
  #contact .foot .links a{padding:8px 2px;}
}

/* ── reduced motion: everything readable, nothing moves ────── */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none !important;transition:none !important;}
  body::after{display:none;}
  #manifesto{height:auto;}
  #manifesto .pin{position:static;height:auto;padding:16vh 0;}
  #manifesto .statement .w{opacity:1;}
  #hero .line{transform:none;}
  #hero .sub,#hero .cue,#hero .eyebrow{opacity:1;transform:none;}
  .rv{opacity:1;transform:none;}
  #loader{display:none;}
  html.smooth{scroll-behavior:auto;}
}

/* returning visitors: no entrance choreography — everything lands already settled */
body.instant #hero .line,body.instant #hero .sub,body.instant #hero .eyebrow,body.instant #hero .cue{transition:none !important;}
/* after the entrance settles, the headline unclips — selection and hover paint cleanly */
body.hero-set #hero .mask{overflow:visible;}
body.hero-set #hero .line{transition:none;}
/* while the masks are still clipped, selection would paint broken boxes — guard only that window */
body:not(.hero-set) #hero h1{user-select:none;-webkit-user-select:none;cursor:default;}
