/* ============================================================
   TOKENS
   ============================================================ */
:root{
  --ink:        #0E0B14;
  --ink-2:      #171128;
  --purple-900: #1C1030;
  --purple-700: #35205C;
  --purple-500: #4C2A85;
  --gold:       #C9A961;
  --gold-lt:    #E3CE93;
  --paper:      #F6F2EA;
  --paper-2:    #ECE5D8;
  --graphite:   #241D33;
  --body-dark:  #2B2438;
  --on-ink:     #F6F2EA;
  --on-ink-mut: rgba(246,242,234,.62);
  --rule-dark:  rgba(246,242,234,.16);
  --rule-lt:    rgba(43,36,56,.18);

  --display: "Instrument Serif", "Libre Baskerville", Georgia, "Times New Roman", serif;
  --ui: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;

  --gut: clamp(20px, 5vw, 84px);
  --maxw: 1400px;
}

*,*::before,*::after{ box-sizing:border-box; }
html{ scroll-behavior:smooth; -webkit-text-size-adjust:100%; }
body{
  margin:0; background:var(--ink); color:var(--body-dark);
  font-family:var(--ui); font-weight:400; font-size:clamp(16px,1.05vw,18px); line-height:1.65;
  -webkit-font-smoothing:antialiased; overflow-x:hidden;
}
img{ max-width:100%; display:block; }
a{ color:inherit; }

.wrap{ max-width:var(--maxw); margin:0 auto; padding-inline:var(--gut); }

h1,h2,h3,h4,blockquote{
  font-family:var(--display); font-weight:400;
  margin:0; letter-spacing:-.005em; line-height:1.06;
}
h1{ font-size:clamp(2.6rem, 6.4vw, 6.1rem); }
h2{ font-size:clamp(2.1rem, 4.6vw, 4.2rem); }
h3{ font-size:clamp(1.35rem, 1.9vw, 1.85rem); letter-spacing:0; line-height:1.2; }

.eyebrow{
  font-family:var(--ui); font-size:.72rem; font-weight:500;
  letter-spacing:.22em; text-transform:uppercase; color:var(--gold);
  display:flex; align-items:center; gap:.9em;
}
.eyebrow::after{ content:""; height:1px; flex:1; max-width:120px; background:currentColor; opacity:.4; }
.eyebrow.center{ justify-content:center; }
.eyebrow.center::before{ content:""; height:1px; flex:1; max-width:80px; background:currentColor; opacity:.4; }

/* ============================================================
   BUTTONS
   ============================================================ */
.btn{
  display:inline-flex; align-items:center; gap:.7em;
  font-family:var(--ui); font-size:.82rem; font-weight:500;
  letter-spacing:.13em; text-transform:uppercase; text-decoration:none;
  padding:1.15em 2.1em; border:1px solid var(--gold); border-radius:2px;
  position:relative; overflow:hidden; transition:color .45s ease, border-color .45s ease;
}
.btn span{ position:relative; z-index:1; }
.btn::before{
  content:""; position:absolute; inset:0; background:var(--gold);
  transform:scaleX(0); transform-origin:left; transition:transform .5s cubic-bezier(.7,0,.2,1);
}
.btn:hover::before, .btn:focus-visible::before{ transform:scaleX(1); }
.btn-primary{ background:var(--gold); color:var(--ink); border-color:var(--gold); }
.btn-primary::before{ background:var(--gold-lt); }
.btn-primary:hover, .btn-primary:focus-visible{ color:var(--ink); }
.btn-ghost{ color:var(--gold); }
.btn-ghost:hover, .btn-ghost:focus-visible{ color:var(--ink); }
.btn-ghost-dark{ color:var(--purple-700); border-color:var(--purple-700); }
.btn-ghost-dark::before{ background:var(--purple-700); }
.btn-ghost-dark:hover, .btn-ghost-dark:focus-visible{ color:var(--paper); }
.btn .arw{ transition:transform .45s cubic-bezier(.7,0,.2,1); }
.btn:hover .arw{ transform:translateX(5px); }

:focus-visible{ outline:2px solid var(--gold); outline-offset:3px; }

/* ============================================================
   NAV
   ============================================================ */
.nav{
  position:fixed; inset:0 0 auto 0; z-index:80;
  display:flex; align-items:center; justify-content:space-between;
  padding:1.35rem var(--gut); color:var(--on-ink);
  transition:background .5s ease, color .5s ease, padding .5s ease, border-color .5s ease;
  border-bottom:1px solid transparent;
}
.nav.scrolled{
  background:rgba(14,11,20,.86); backdrop-filter:blur(14px) saturate(140%);
  padding-block:.9rem; border-bottom-color:var(--rule-dark);
}
.nav.on-light{ color:var(--graphite); }
.nav.on-light.scrolled{ background:rgba(246,242,234,.9); border-bottom-color:var(--rule-lt); }
.nav-brand{ display:flex; align-items:center; gap:.62rem; text-decoration:none; white-space:nowrap; }
.brand-mark{
  height:34px; width:auto; flex:none; fill:none; stroke:var(--gold);
  stroke-width:4.5; stroke-linecap:round; stroke-linejoin:round;
  transition:stroke .5s ease;
}
.nav.on-light .brand-mark{ stroke:var(--purple-700); }
.brand-words{ display:flex; flex-direction:column; line-height:1; }
.brand-words b{
  font-family:var(--display); font-weight:400; font-size:clamp(.92rem,1.1vw,1.06rem);
  letter-spacing:.11em; text-transform:uppercase;
}
.brand-words i{
  font-style:normal; font-family:var(--ui); font-size:.55rem; font-weight:500;
  letter-spacing:.34em; text-transform:uppercase; opacity:.72; margin-top:.4em;
}
.nav-links{ display:flex; align-items:center; gap:clamp(1.2rem,2.4vw,2.6rem); }
.nav-links a{
  font-size:.76rem; letter-spacing:.15em; text-transform:uppercase;
  text-decoration:none; position:relative; padding-block:.4em; opacity:.85;
  transition:opacity .3s;
}
.nav-links a::after{
  content:""; position:absolute; left:0; bottom:0; height:1px; width:100%;
  background:var(--gold); transform:scaleX(0); transform-origin:right;
  transition:transform .4s cubic-bezier(.7,0,.2,1);
}
.nav-links a:hover{ opacity:1; }
.nav-links a:hover::after{ transform:scaleX(1); transform-origin:left; }
.nav-cta{
  border:1px solid currentColor; padding:.62em 1.3em !important; opacity:1 !important;
  transition:background .35s, color .35s, border-color .35s;
}
.nav-cta::after{ display:none; }
.nav-cta:hover{ background:var(--gold); border-color:var(--gold); color:var(--ink); }
@media (max-width:860px){
  .nav-links a:not(.nav-cta){ display:none; }
  .brand-mark{ height:28px; }
  .brand-words b{ font-size:.85rem; }
  .brand-words i{ font-size:.5rem; letter-spacing:.28em; }
  .nav-cta{ font-size:.66rem !important; letter-spacing:.1em; padding:.6em 1em !important; }
}

/* ============================================================
   HERO
   ============================================================ */
.hero{
  position:relative; min-height:100svh; background:var(--ink); color:var(--on-ink);
  display:grid; align-items:center; overflow:hidden; padding:8rem 0 4rem;
}
.hero-inner{
  position:relative; z-index:2; display:grid; gap:clamp(2rem,5vw,4.5rem);
  grid-template-columns:minmax(0,1.25fr) minmax(0,.9fr); align-items:center;
}
@media (max-width:960px){ .hero-inner{ grid-template-columns:1fr; } }

.hero h1{ margin:1.6rem 0 0; max-width:16ch; }
.hero h1 em{
  font-style:italic; color:var(--gold);
}
.hero-sub{
  margin:1.9rem 0 0; max-width:48ch; font-size:clamp(1rem,1.2vw,1.19rem);
  color:var(--on-ink-mut); line-height:1.72; font-weight:300;
}
.hero-actions{ display:flex; flex-wrap:wrap; gap:1rem; margin-top:2.6rem; }

/* word-by-word reveal */
.rv-word{ display:inline-block; overflow:hidden; vertical-align:bottom; }
.rv-word > span{
  display:inline-block; transform:translateY(105%);
  animation:wordUp .95s cubic-bezier(.16,1,.3,1) forwards;
}
@keyframes wordUp{ to{ transform:translateY(0); } }

.fade-seq{ opacity:0; transform:translateY(16px); animation:fadeSeq .9s cubic-bezier(.16,1,.3,1) forwards; }
@keyframes fadeSeq{ to{ opacity:1; transform:none; } }

/* Space Needle mark */
.mark{ position:relative; }
.mark svg{ width:100%; height:auto; max-width:520px; margin-inline:auto; display:block; }
@media (max-width:960px){
  .mark svg{ max-width:260px; }
  .hero{ padding:7rem 0 3rem; }
  .scroll-cue{ display:none; }
}
.mark svg .ln{ fill:none; stroke:var(--gold); stroke-width:2.2; stroke-linecap:round; stroke-linejoin:round; }
.mark svg .ln.dim{ stroke:rgba(201,169,97,.42); stroke-width:1.6; }
.mark-glow{
  position:absolute; left:50%; top:52%; width:60%; aspect-ratio:1; translate:-50% -50%;
  background:radial-gradient(circle, rgba(76,42,133,.55), transparent 68%); filter:blur(38px); z-index:-1;
}

.scroll-cue{
  position:absolute; left:50%; bottom:2.2rem; translate:-50% 0; z-index:3;
  display:flex; flex-direction:column; align-items:center; gap:.75rem;
  font-size:.64rem; letter-spacing:.28em; text-transform:uppercase; color:var(--on-ink-mut);
  opacity:0; animation:fadeSeq 1s ease 2.4s forwards;
}
.scroll-cue i{ display:block; width:1px; height:52px; background:var(--rule-dark); position:relative; overflow:hidden; }
.scroll-cue i::after{
  content:""; position:absolute; inset:0; background:var(--gold);
  animation:cueRun 2.1s cubic-bezier(.7,0,.3,1) infinite;
}
@keyframes cueRun{ 0%{ transform:translateY(-100%);} 55%,100%{ transform:translateY(100%);} }

/* ============================================================
   TRUST BAR
   ============================================================ */
.trust{ background:var(--ink); color:var(--on-ink); padding:clamp(3.5rem,7vw,6rem) 0; border-top:1px solid var(--rule-dark); }
.trust-lead{
  font-size:.74rem; letter-spacing:.2em; text-transform:uppercase;
  color:var(--on-ink-mut); text-align:center; margin:0 0 2.6rem;
}
.logos{
  position:relative; overflow:hidden;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent);
          mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent);
}
.logos-track{ display:flex; width:max-content; animation:marquee 46s linear infinite; }
.logos:hover .logos-track, .logos:focus-within .logos-track{ animation-play-state:paused; }
.logos-set{
  display:flex; align-items:center; flex:none;
  gap:clamp(2rem,4.5vw,4rem); padding-right:clamp(2rem,4.5vw,4rem);
}
.logos-set span{
  font-family:var(--display); font-size:clamp(1.05rem,1.75vw,1.5rem);
  letter-spacing:.04em; color:var(--on-ink); opacity:.5; white-space:nowrap;
  transition:opacity .45s ease, color .45s ease;
}
.logos-set span:hover{ opacity:1; color:var(--gold-lt); }
@keyframes marquee{ from{ transform:translateX(0) } to{ transform:translateX(-50%) } }

/* ============================================================
   STATEMENT
   ============================================================ */
.statement{
  background:var(--paper); color:var(--graphite);
  padding:clamp(6rem,15vw,13rem) 0;
}
.statement .big{
  font-family:var(--display); font-size:clamp(1.9rem,4.4vw,4rem); line-height:1.14;
  letter-spacing:-.008em; max-width:19ch; margin:2.5rem 0 0;
}
.statement .big b{ font-weight:400; font-style:italic; color:var(--purple-500); }
.statement-foot{
  display:grid; grid-template-columns:repeat(auto-fit,minmax(230px,1fr));
  gap:2.5rem; margin-top:clamp(3.5rem,7vw,6rem);
  padding-top:2.6rem; border-top:1px solid var(--rule-lt);
}
.statement-foot p{ margin:0; max-width:42ch; color:#4A4159; font-weight:300; }
.statement-foot h4{
  font-family:var(--ui); font-size:.74rem; letter-spacing:.19em;
  text-transform:uppercase; color:var(--purple-500); margin:0 0 .9rem; font-weight:600;
}

/* ============================================================
   PINNED PILLARS
   ============================================================ */
.pillars{ background:var(--paper); position:relative; }
.pillars-track{ height:300vh; position:relative; }
.pillars-stick{
  position:sticky; top:0; height:100svh; display:flex; align-items:center; overflow:hidden;
}
.pillars-inner{
  width:100%; max-width:var(--maxw); margin-inline:auto; padding-inline:var(--gut);
  display:grid; grid-template-columns:minmax(0,.72fr) minmax(0,1.28fr); gap:clamp(2rem,6vw,6rem);
  align-items:center;
}
@media (max-width:900px){ .pillars-inner{ grid-template-columns:1fr; gap:2.2rem; } }
.pillars-aside h2{ margin:1.4rem 0 1.6rem; }
.pillars-count{
  font-family:var(--display); font-size:.95rem; letter-spacing:.1em; color:var(--purple-500);
  display:flex; align-items:center; gap:.8rem;
}
.pillars-count .bar{ width:110px; height:2px; background:var(--rule-lt); position:relative; }
.pillars-count .bar b{
  position:absolute; inset:0 auto 0 0; background:var(--purple-500); width:33.33%;
  transition:width .45s cubic-bezier(.7,0,.2,1);
}
.pillar-stage{ position:relative; min-height:min(58vh,470px); }
.pillar{
  position:absolute; inset:0; opacity:0;
  display:flex; flex-direction:column; justify-content:center;
  pointer-events:none; will-change:opacity, transform;
}
.pillar.is-on{ opacity:1; transform:none; pointer-events:auto; }
.pillar-no{
  font-family:var(--display); font-size:clamp(3.4rem,7vw,6.4rem); line-height:1;
  color:transparent; -webkit-text-stroke:1px rgba(76,42,133,.4); display:block; margin-bottom:.4rem;
}
.pillar h3{ color:var(--purple-700); margin-bottom:1.2rem; }
.pillar ul{ list-style:none; margin:0; padding:0; display:grid; gap:.1rem; }
.pillar li{
  padding:.85rem 0 .85rem 1.7rem; border-top:1px solid var(--rule-lt);
  position:relative; font-size:clamp(.95rem,1.05vw,1.05rem); color:#463D5C; font-weight:300;
}
.pillar li::before{
  content:""; position:absolute; left:0; top:1.5em; width:8px; height:1px; background:var(--gold);
}
.pillar li:last-child{ border-bottom:1px solid var(--rule-lt); }

/* ============================================================
   SERVICES GRID
   ============================================================ */
.services{ background:var(--paper-2); padding:clamp(5rem,11vw,9rem) 0; }
.services-head{ display:flex; flex-wrap:wrap; justify-content:space-between; align-items:flex-end; gap:2rem; margin-bottom:clamp(2.5rem,5vw,4rem); }
.svc-grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,270px),1fr)); gap:1px; background:var(--rule-lt); border:1px solid var(--rule-lt); }
.svc{
  background:var(--paper-2); padding:clamp(1.6rem,2.6vw,2.4rem);
  position:relative; overflow:hidden;
  opacity:0; transform:translateY(26px);
  transition:opacity .8s cubic-bezier(.16,1,.3,1), transform .8s cubic-bezier(.16,1,.3,1), background .5s ease;
}
.svc-grid.in .svc{ opacity:1; transform:none; }
.svc-grid.in .svc:nth-child(1){ transition-delay:.00s } .svc-grid.in .svc:nth-child(2){ transition-delay:.07s }
.svc-grid.in .svc:nth-child(3){ transition-delay:.14s } .svc-grid.in .svc:nth-child(4){ transition-delay:.21s }
.svc-grid.in .svc:nth-child(5){ transition-delay:.28s } .svc-grid.in .svc:nth-child(6){ transition-delay:.35s }
.svc-grid.in .svc:nth-child(7){ transition-delay:.42s } .svc-grid.in .svc:nth-child(8){ transition-delay:.49s }
.svc-grid.in .svc:nth-child(9){ transition-delay:.56s }
@media (min-width:1100px){ .svc-grid{ grid-template-columns:repeat(3,1fr); } }
.svc::after{
  content:""; position:absolute; left:0; bottom:0; height:2px; width:100%;
  background:var(--gold); transform:scaleX(0); transform-origin:left;
  transition:transform .55s cubic-bezier(.7,0,.2,1);
}
.svc:hover{ background:var(--paper); }
.svc:hover::after{ transform:scaleX(1); }
.svc-no{ font-family:var(--ui); font-size:.7rem; letter-spacing:.2em; color:var(--purple-500); font-weight:600; }
.svc h3{ font-size:clamp(1.15rem,1.5vw,1.4rem); margin:.9rem 0 .7rem; color:var(--graphite); }
.svc p{ margin:0; font-size:.94rem; line-height:1.6; color:#514868; font-weight:300; }

/* ============================================================
   PROOF / TESTIMONIALS
   ============================================================ */
.proof{ background:var(--purple-900); color:var(--on-ink); position:relative; }
.proof-track{ height:480vh; position:relative; }
.proof-stick{ position:sticky; top:0; height:100svh; display:flex; align-items:center; overflow:hidden; }
.proof-inner{
  width:100%; max-width:var(--maxw); margin-inline:auto; padding-inline:var(--gut);
  display:grid; grid-template-columns:minmax(0,.72fr) minmax(0,1.28fr); gap:clamp(2rem,6vw,6rem);
  align-items:center;
}
@media (max-width:900px){
  .proof-inner{ grid-template-columns:1fr; gap:1.6rem; }
  .proof-stage{ min-height:min(46vh,370px) !important; }
  .pillar-stage{ min-height:min(52vh,430px) !important; }
  .proof-aside h2{ margin-bottom:1.4rem; }
}
.proof-aside h2{ margin:1.4rem 0 2rem; max-width:13ch; }
.proof-stage{ position:relative; min-height:min(56vh,450px); }
.quote{
  position:absolute; inset:0; margin:0; opacity:0;
  display:flex; flex-direction:column; justify-content:center;
  pointer-events:none; will-change:opacity, transform;
}
.quote.is-on{ opacity:1; transform:none; }
.quote blockquote{
  font-family:var(--display);
  font-size:clamp(1.3rem,2.35vw,2.2rem); line-height:1.36; letter-spacing:-.005em;
  max-width:24ch; margin:0;
}
.quote blockquote::before{ content:"\201C"; color:var(--gold); }
.quote blockquote::after{ content:"\201D"; color:var(--gold); }
.quote cite{
  display:block; margin-top:2.2rem; font-style:normal; font-family:var(--ui);
  font-size:.82rem; letter-spacing:.06em; color:var(--on-ink-mut); line-height:1.6;
}
.quote cite b{ display:block; color:var(--gold); font-weight:500; letter-spacing:.13em; text-transform:uppercase; font-size:.74rem; margin-bottom:.35rem; }
.proof-dots{ display:flex; gap:.6rem; }
.proof-dots i{ width:26px; height:2px; background:var(--rule-dark); transition:background .45s ease; }
.proof-dots i.on{ background:var(--gold); }

/* ============================================================
   ABOUT
   ============================================================ */
.about{ background:var(--paper); padding:clamp(5.5rem,12vw,10rem) 0; }
.about-inner{ display:grid; grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr); gap:clamp(2.5rem,6vw,6rem); align-items:center; }
@media (max-width:900px){ .about-inner{ grid-template-columns:1fr; } }
.portrait{
  aspect-ratio:4/5; background:linear-gradient(145deg,var(--purple-700),var(--purple-900));
  position:relative; overflow:hidden;
}
.portrait img{
  position:absolute; inset:0; width:100%; height:100%; object-fit:cover; object-position:50% 22%;
}
.portrait::before{
  content:""; position:absolute; inset:14px; border:1px solid rgba(246,242,234,.45);
  z-index:2; pointer-events:none;
}
.about h2{ color:var(--graphite); margin:1.4rem 0 1.6rem; }
.about p{ max-width:52ch; color:#4A4159; font-weight:300; margin:0 0 1.15rem; }
.about-stats{ display:flex; flex-wrap:wrap; gap:clamp(1.8rem,4vw,3.4rem); margin:2.6rem 0; padding-top:2rem; border-top:1px solid var(--rule-lt); }
.about-stats div strong{
  display:block; font-family:var(--display); font-size:clamp(2rem,3.4vw,3rem);
  color:var(--purple-500); line-height:1; letter-spacing:-.01em;
}
.about-stats div span{ font-size:.73rem; letter-spacing:.16em; text-transform:uppercase; color:#6A6182; }

/* ============================================================
   CTA
   ============================================================ */
.cta{
  background:var(--purple-700); color:var(--on-ink); text-align:center;
  padding:clamp(5.5rem,12vw,10rem) 0; position:relative; overflow:hidden;
}
.cta::before{
  content:""; position:absolute; inset:0;
  background:radial-gradient(ellipse at 50% 120%, rgba(201,169,97,.22), transparent 60%);
}
.cta-inner{ position:relative; }
.cta h2{ margin:1.6rem auto 1.6rem; max-width:16ch; }
.cta h2 em{ font-style:italic; color:var(--gold); }
.cta p{ max-width:50ch; margin:0 auto 2.8rem; color:rgba(246,242,234,.75); font-weight:300; }

/* ============================================================
   FOOTER
   ============================================================ */
.foot{ background:var(--ink); color:var(--on-ink); padding:clamp(3.5rem,7vw,5.5rem) 0 2.5rem; }
.foot-top{ display:grid; grid-template-columns:repeat(auto-fit,minmax(210px,1fr)); gap:2.6rem; padding-bottom:3rem; border-bottom:1px solid var(--rule-dark); }
.foot-brand{ font-family:var(--display); font-size:1.05rem; letter-spacing:.14em; text-transform:uppercase; }
.foot h5{ font-family:var(--ui); font-size:.72rem; letter-spacing:.19em; text-transform:uppercase; color:var(--gold); margin:0 0 1.1rem; font-weight:600; }
.foot ul{ list-style:none; margin:0; padding:0; display:grid; gap:.65rem; }
.foot a{ text-decoration:none; color:var(--on-ink-mut); font-size:.93rem; transition:color .3s; }
.foot a:hover{ color:var(--gold-lt); }
.badge{
  display:inline-block; border:1px solid var(--gold); color:var(--gold);
  padding:.7em 1.15em; font-size:.68rem; letter-spacing:.15em; text-transform:uppercase; line-height:1.7;
}
.foot-bot{ display:flex; flex-wrap:wrap; justify-content:space-between; gap:1rem; padding-top:2rem; font-size:.78rem; color:rgba(246,242,234,.45); }

/* ============================================================
   SCROLL REVEALS
   ============================================================ */
.rv{ opacity:0; transform:translateY(30px); transition:opacity .9s cubic-bezier(.16,1,.3,1), transform .9s cubic-bezier(.16,1,.3,1); }
.rv.in{ opacity:1; transform:none; }
.rv[data-d="1"]{ transition-delay:.1s } .rv[data-d="2"]{ transition-delay:.2s }
.rv[data-d="3"]{ transition-delay:.3s } .rv[data-d="4"]{ transition-delay:.4s }
.rv[data-d="5"]{ transition-delay:.5s } .rv[data-d="6"]{ transition-delay:.6s }
.rv[data-d="7"]{ transition-delay:.7s }

/* ============================================================
   NO-JS FALLBACK — everything readable if the script never runs
   ============================================================ */
.no-js .rv, .no-js .fade-seq, .no-js .svc{ opacity:1 !important; transform:none !important; }
.no-js .rv-word > span{ transform:none !important; animation:none !important; }
.no-js .pillars-track, .no-js .proof-track{ height:auto !important; }
.no-js .pillars-stick, .no-js .proof-stick{ position:static !important; height:auto !important; padding-block:4rem; }
.no-js .pillar-stage, .no-js .proof-stage{ position:static; min-height:0; display:grid; gap:3.5rem; }
.no-js .pillar, .no-js .quote{ position:static; opacity:1 !important; transform:none !important; visibility:visible !important; pointer-events:auto; }
.no-js .scroll-cue, .no-js .pillars-count, .no-js .proof-dots{ display:none; }
.no-js .mark svg .ln{ stroke-dasharray:none !important; stroke-dashoffset:0 !important; }

/* ============================================================
   REDUCED MOTION — content fully visible, no movement
   ============================================================ */
@media (prefers-reduced-motion: reduce){
  html{ scroll-behavior:auto; }
  *,*::before,*::after{ animation-duration:.001ms !important; animation-iteration-count:1 !important; transition-duration:.001ms !important; }
  .rv,.fade-seq,.svc{ opacity:1 !important; transform:none !important; }
  .rv-word > span{ transform:none !important; }
    .pillars-track,.proof-track{ height:auto !important; }
  .pillars-stick,.proof-stick{ position:static !important; height:auto !important; padding-block:4rem; }
  .pillar-stage,.proof-stage{ position:static; min-height:0; display:grid; gap:3.5rem; }
  .pillar,.quote{ position:static; opacity:1 !important; transform:none !important; visibility:visible !important; pointer-events:auto; }
  .scroll-cue{ display:none; }
  .logos{ -webkit-mask-image:none; mask-image:none; }
  .logos-track{ animation:none !important; width:auto; flex-wrap:wrap; justify-content:center; }
  .logos-set{ flex-wrap:wrap; justify-content:center; padding-right:0; }
  .logos-set[aria-hidden="true"]{ display:none; }
}

/* ============================================================
   INTERIOR PAGES
   ============================================================ */
.page-hero{
  background:var(--ink); color:var(--on-ink); position:relative; overflow:hidden;
  padding:clamp(9rem,16vw,13rem) 0 clamp(4rem,8vw,7rem);
}
.page-hero::after{
  content:""; position:absolute; left:0; right:0; bottom:0; height:1px; background:var(--rule-dark);
}
.page-hero .wrap{ position:relative; }
.page-hero h1{ margin:1.6rem 0 0; max-width:15ch; }
.page-hero h1 em{ font-style:italic; color:var(--gold); }
.page-lede{
  margin:1.9rem 0 0; max-width:56ch; font-size:clamp(1rem,1.2vw,1.15rem);
  color:var(--on-ink-mut); line-height:1.72; font-weight:300;
}

.sec-light{ background:var(--paper); color:var(--body-dark); padding:clamp(4.5rem,10vw,8rem) 0; }
.sec-tint{ background:var(--paper-2); color:var(--body-dark); padding:clamp(4.5rem,10vw,8rem) 0; }
.sec-light h2, .sec-tint h2{ color:var(--graphite); }
.sec-head{ max-width:60ch; margin-bottom:clamp(2.5rem,5vw,4rem); }
.sec-head h2{ margin:1.3rem 0 1.3rem; }
.sec-head p{ margin:0; color:#4A4159; font-weight:300; max-width:56ch; }

/* Static practice-area blocks (Services page) */
.pblock{
  display:grid; grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);
  gap:clamp(1.6rem,5vw,5rem); padding:clamp(2.4rem,5vw,3.6rem) 0;
  border-top:1px solid var(--rule-lt);
}
.pblock:last-of-type{ border-bottom:1px solid var(--rule-lt); }
@media (max-width:860px){ .pblock{ grid-template-columns:1fr; gap:1.4rem; } }
.pblock-no{
  font-family:var(--display); font-size:clamp(2.6rem,5vw,4.4rem); line-height:1;
  color:transparent; -webkit-text-stroke:1px rgba(76,42,133,.4); display:block; margin-bottom:.6rem;
}
.pblock h3{ color:var(--purple-700); max-width:16ch; }
.pblock ul{ list-style:none; margin:0; padding:0; }
.pblock li{
  padding:.8rem 0 .8rem 1.7rem; position:relative;
  font-size:clamp(.95rem,1.05vw,1.05rem); color:#463D5C; font-weight:300;
  border-bottom:1px solid var(--rule-lt);
}
.pblock li:last-child{ border-bottom:0; }
.pblock li::before{ content:""; position:absolute; left:0; top:1.45em; width:8px; height:1px; background:var(--gold); }

/* Testimonial cards */
.t-grid{ columns:2; column-gap:clamp(1.2rem,2.5vw,2rem); }
@media (max-width:900px){ .t-grid{ columns:1; } }
.t-card{
  break-inside:avoid; margin:0 0 clamp(1.2rem,2.5vw,2rem);
  background:var(--paper); border:1px solid var(--rule-lt);
  padding:clamp(1.6rem,3vw,2.4rem); position:relative;
}
.t-card::before{
  content:""; position:absolute; left:-1px; top:-1px; width:3px; height:56px; background:var(--gold);
}
.t-card blockquote{
  margin:0 0 1.5rem; font-family:var(--display);
  font-size:clamp(1.02rem,1.25vw,1.18rem); line-height:1.55; color:var(--graphite);
  letter-spacing:0;
}
.t-card cite{
  font-style:normal; font-family:var(--ui); font-size:.84rem; color:#5B5273; line-height:1.55;
  display:block; padding-top:1.1rem; border-top:1px solid var(--rule-lt);
}
.t-card cite b{
  display:block; color:var(--purple-500); font-weight:600; font-size:.72rem;
  letter-spacing:.15em; text-transform:uppercase; margin-bottom:.4rem;
}

/* About page */
.bio-grid{ display:grid; grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr); gap:clamp(2.5rem,6vw,5.5rem); align-items:start; }
@media (max-width:900px){ .bio-grid{ grid-template-columns:1fr; } }
.prose p{ max-width:60ch; color:#4A4159; font-weight:300; margin:0 0 1.2rem; }
.prose p:last-child{ margin-bottom:0; }
.prose strong{ color:var(--graphite); font-weight:600; }

/* Contact page */
.contact-grid{ display:grid; grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr); gap:clamp(2.5rem,6vw,5.5rem); align-items:start; }
@media (max-width:900px){ .contact-grid{ grid-template-columns:1fr; } }
.field{ margin-bottom:1.5rem; }
.field label{
  display:block; font-size:.72rem; letter-spacing:.16em; text-transform:uppercase;
  color:var(--purple-500); font-weight:600; margin-bottom:.6rem;
}
.field input, .field textarea, .field select{
  width:100%; font-family:var(--ui); font-size:1rem; color:var(--graphite);
  background:var(--paper); border:1px solid rgba(43,36,56,.6); border-radius:2px;
  padding:.95em 1.05em; transition:border-color .3s, box-shadow .3s;
}
.field textarea{ min-height:170px; resize:vertical; }
.field input:focus, .field textarea:focus, .field select:focus{
  outline:none; border-color:var(--purple-500); box-shadow:0 0 0 3px rgba(76,42,133,.14);
}
.field-row{ display:grid; grid-template-columns:1fr 1fr; gap:1.2rem; }
@media (max-width:520px){ .field-row{ grid-template-columns:1fr; gap:0; } }
.form-note{ font-size:.84rem; color:#6A6182; margin:1.4rem 0 0; }
.contact-aside dl{ margin:0; }
.contact-aside dt{
  font-size:.72rem; letter-spacing:.16em; text-transform:uppercase;
  color:var(--purple-500); font-weight:600; margin-bottom:.5rem;
}
.contact-aside dd{
  margin:0 0 1.9rem; font-size:1.02rem; color:#4A4159; font-weight:300;
}
.contact-aside dd a{ color:var(--purple-700); text-decoration:underline; text-underline-offset:3px; }
.contact-aside dd a:hover{ color:var(--purple-500); }

/* 404 */
.err{ min-height:70svh; display:grid; place-items:center; text-align:center; background:var(--ink); color:var(--on-ink); padding:9rem 0 5rem; }
.err h1{ margin:1.4rem 0; }
.err p{ color:var(--on-ink-mut); max-width:44ch; margin:0 auto 2.4rem; font-weight:300; }

/* Utility */
.center{ text-align:center; }
.mt-lg{ margin-top:clamp(2.5rem,5vw,4rem); }

/* Contact form submit states */
.form-status{
  margin:1.4rem 0 0; padding:1rem 1.15rem; border-radius:2px;
  font-size:.94rem; line-height:1.55; border:1px solid;
}
.form-status.is-ok{ background:rgba(76,42,133,.07); border-color:var(--purple-500); color:var(--purple-700); }
.form-status.is-err{ background:rgba(140,30,30,.06); border-color:#8C1E1E; color:#7A1A1A; }
.form-status a{ color:inherit; text-decoration:underline; text-underline-offset:3px; }
form.is-sending button[type=submit]{ opacity:.55; pointer-events:none; }

/* ============================================================
   MOBILE — pinned scroll scenes are replaced entirely.
   Sticky positioning fights the dynamic viewport on phones (the
   URL bar collapsing changes innerHeight mid-scroll), and momentum
   scrolling makes fixed-height scenes easy to fling past. Below
   900px the practice areas stack and the testimonials become a
   native swipe carousel — both use ordinary scrolling.
   ============================================================ */
@media (max-width:900px){

  /* --- practice areas: stacked --- */
  .pillars-track{ height:auto; }
  .pillars-stick{ position:static; height:auto; display:block; padding:clamp(3rem,9vw,5rem) 0; }
  .pillars-inner{ display:block; }
  .pillars-aside{ margin-bottom:2.6rem; }
  .pillars-count{ display:none; }
  .pillar-stage{ position:static; min-height:0 !important; display:grid; gap:0; }
  .pillar{
    position:static; display:block;
    opacity:1 !important; transform:none !important; visibility:visible !important;
    pointer-events:auto !important;
    padding:2.2rem 0; border-top:1px solid var(--rule-lt);
  }
  .pillar:last-child{ border-bottom:1px solid var(--rule-lt); }
  .pillar-no{ font-size:2.6rem; margin-bottom:.2rem; }

  /* --- testimonials: native horizontal swipe carousel --- */
  .proof-track{ height:auto; }
  .proof-stick{ position:static; height:auto; display:block; padding:clamp(3rem,9vw,5rem) 0; }
  .proof-inner{ display:block; }
  .proof-aside h2{ margin-bottom:1.6rem; }
  .proof-stage{
    position:static; min-height:0 !important;
    display:flex; gap:1rem; overflow-x:auto; overscroll-behavior-x:contain;
    scroll-snap-type:x mandatory; -webkit-overflow-scrolling:touch;
    scrollbar-width:none; padding-bottom:.5rem;
    margin-inline:calc(var(--gut) * -1); padding-inline:var(--gut);
    margin-top:2.6rem;
  }
  .proof-stage::-webkit-scrollbar{ display:none; }
  .quote{
    position:static; flex:0 0 84%; scroll-snap-align:center;
    opacity:1 !important; transform:none !important; visibility:visible !important;
    padding-left:1.3rem; border-left:2px solid var(--gold);
  }
  .quote blockquote{ max-width:none; font-size:1.16rem; line-height:1.45; }
  .quote cite{ margin-top:1.4rem; }
  .proof-dots{ margin-top:1.6rem; }
  .proof-dots i{ transition:background .3s ease; }
}
