/* Harmer Intelligence — site stylesheet. Tokens from Brand Sheet for Web V1 (Nov 2026). */
@font-face{font-family:'Wittgenstein';font-style:normal;font-weight:400 900;font-display:swap;src:url(./assets/fonts/Wittgenstein.woff2) format('woff2');}
@font-face{font-family:'Wittgenstein';font-style:italic;font-weight:400 900;font-display:swap;src:url(./assets/fonts/Wittgenstein-Italic.woff2) format('woff2');}
@font-face{font-family:'Nunito Sans';font-style:normal;font-weight:200 1000;font-display:swap;src:url(./assets/fonts/NunitoSans.woff2) format('woff2');}
@font-face{font-family:'Nunito Sans';font-style:italic;font-weight:200 1000;font-display:swap;src:url(./assets/fonts/NunitoSans-Italic.woff2) format('woff2');}
@font-face{font-family:'Cormorant Garamond';font-style:normal;font-weight:300 700;font-display:swap;src:url(./assets/fonts/CormorantGaramond.woff2) format('woff2');}
/* Display slot: Coax (Up Up Creative) once the web licence is supplied; Italiana (OFL) stands in. To swap, add an @font-face for 'Coax' pointing at the licensed WOFF2 and keep --f-display as is. */
@font-face{font-family:'Italiana';font-style:normal;font-weight:400;font-display:swap;src:url(./assets/fonts/Italiana.woff2) format('woff2');}


:root{
  --black:#1F2221; --white:#F3F1F2; --bayou:#3B5763; --leather:#866E57;
  --stone:#75777B; --nickel:#C1C5C9; --suit:#1F3744; --rule:#DDD9DA;
  --panel:#E6E3E4; --card:#FFFFFF; --veil:rgba(31,34,33,.42);
  --f-head:'Wittgenstein', Georgia, 'Times New Roman', serif;
  --f-body:'Nunito Sans', Arial, Helvetica, sans-serif;
  --f-name:'Cormorant Garamond', Georgia, serif;
  --f-display:'Coax', 'Italiana', 'Wittgenstein', Georgia, serif; /* H1 and the hero line; Coax when licensed, Italiana meanwhile */
  --nav-h:92px; --gutter:70px; --max:1200px;
  --sec:120px; --sec-sm:72px;
  --ease:cubic-bezier(.2,.7,.2,1);
}
@media (max-width:900px){ :root{ --nav-h:68px; --gutter:24px; --sec:72px; --sec-sm:48px; } }

*,*::before,*::after{ box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; scroll-behavior:smooth; }
@media (prefers-reduced-motion:reduce){ html{ scroll-behavior:auto; } }
body{
  margin:0; background:var(--white); color:var(--black);
  font-family:var(--f-body); font-size:17px; line-height:1.55;
  -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
}
img,svg,video{ display:block; max-width:100%; height:auto; }
a{ color:inherit; text-decoration:none; transition:color .2s var(--ease); }
a:hover{ color:var(--bayou); }
p a, .prose a{ text-decoration:underline; text-underline-offset:3px; text-decoration-color:var(--nickel); }
p a:hover, .prose a:hover{ text-decoration-color:var(--bayou); }
:focus-visible{ outline:2px solid var(--bayou); outline-offset:3px; }
::selection{ background:var(--bayou); color:var(--white); }
hr{ border:0; border-top:1px solid var(--rule); margin:0; }
button{ font:inherit; }

/* Type */
h1,h2,h3,h4{ font-family:var(--f-head); font-weight:500; margin:0; color:inherit; }
h1{ font-family:var(--f-display); font-weight:400; font-size:clamp(40px,5.4vw,62px); line-height:1.04; letter-spacing:.005em; max-width:18ch; text-wrap:balance; }
h1 em{ font-family:var(--f-head); font-style:italic; font-weight:400; font-size:.84em; }
h1 em,h2 em{ font-style:italic; font-weight:400; }
h2{ font-size:clamp(26px,3vw,32px); line-height:1.2; max-width:26ch; }
h3{ font-size:20px; line-height:1.3; }
p{ margin:0; }
p+p{ margin-top:1em; }
.measure{ max-width:60ch; }
.lede{ font-size:clamp(17px,1.5vw,19px); line-height:1.5; max-width:56ch; }
.small{ font-size:13px; line-height:1.5; color:var(--stone); }
.eyebrow{
  display:block; font-family:var(--f-body); font-weight:800; font-size:11px; line-height:1;
  letter-spacing:.30em; text-transform:uppercase; color:var(--stone); margin:0 0 20px;
}
.eyebrow::before{ content:""; display:block; width:40px; height:1px; background:var(--leather); margin-bottom:18px; }
.eyebrow.center{ text-align:center; }
.eyebrow.center::before{ margin-left:auto; margin-right:auto; }
.eyebrow.plain::before{ display:none; }
.on-dark{ color:var(--white); }
.on-dark .eyebrow{ color:var(--nickel); }
.on-dark .small{ color:var(--nickel); }
.on-dark a:hover{ color:var(--nickel); }
.name{ font-family:var(--f-name); font-weight:500; letter-spacing:.38em; text-transform:uppercase; }

/* Layout */
.wrap{ width:100%; max-width:calc(var(--max) + var(--gutter)*2); margin:0 auto; padding:0 var(--gutter); }
.section{ padding:var(--sec) 0; }
.section.tight{ padding:var(--sec-sm) 0; }
.section.rule-top{ border-top:1px solid var(--rule); }
.grid{ display:grid; gap:32px; }
.grid-12{ grid-template-columns:repeat(12,minmax(0,1fr)); } .gap-wide{ gap:48px 80px; }
.col-4{ grid-column:span 4; } .col-5{ grid-column:span 5; } .col-6{ grid-column:span 6; }
.col-7{ grid-column:span 7; } .col-8{ grid-column:span 8; } .col-12{ grid-column:span 12; }
.head-row{ display:grid; grid-template-columns:minmax(0,5fr) minmax(0,7fr); gap:32px 64px; align-items:end; margin-bottom:56px; }
.head-row .lede{ margin-bottom:6px; }
@media (max-width:900px){
  .grid-12{ grid-template-columns:1fr; } .gap-wide{ gap:40px; }
  .grid-12 > *{ grid-column:1 / -1; }
  .head-row{ grid-template-columns:1fr; gap:20px; margin-bottom:40px; }
}

/* Buttons */
.btn{
  display:inline-block; font-family:var(--f-body); font-weight:700; font-size:11px; line-height:1;
  letter-spacing:.20em; text-transform:uppercase; padding:13px 20px; border:1px solid var(--black);
  border-radius:0; cursor:pointer; text-decoration:none; white-space:nowrap;
  transition:background-color .2s var(--ease), color .2s var(--ease), border-color .2s var(--ease);
  min-height:44px; display:inline-flex; align-items:center; justify-content:center;
}
.btn-primary{ background:var(--black); color:var(--white); }
.btn-primary:hover{ background:var(--suit); border-color:var(--suit); color:var(--white); }
.btn-secondary{ background:transparent; color:var(--black); }
.btn-secondary:hover{ background:var(--black); color:var(--white); }
.on-dark .btn-primary{ background:var(--white); color:var(--black); border-color:var(--white); }
.on-dark .btn-primary:hover{ background:var(--nickel); border-color:var(--nickel); color:var(--black); }
.on-dark .btn-secondary{ color:var(--white); border-color:var(--white); }
.on-dark .btn-secondary:hover{ background:var(--white); color:var(--black); }
.textlink{
  font-family:var(--f-body); font-weight:700; font-size:11px; letter-spacing:.20em; text-transform:uppercase;
  color:var(--black); display:inline-flex; align-items:center; gap:10px; min-height:44px;
}
.textlink::after{ content:""; width:18px; height:1px; background:currentColor; transition:width .2s var(--ease); }
.textlink:hover{ color:var(--bayou); } .textlink:hover::after{ width:28px; }
.on-dark .textlink{ color:var(--white); } .on-dark .textlink:hover{ color:var(--nickel); }
.actions{ display:flex; flex-wrap:wrap; gap:16px 28px; align-items:center; }

/* Surfaces */
.marble{
  position:relative; color:var(--white); background-color:var(--black);
  background-image:url(./assets/img/blackmarble-2400.jpg); background-size:cover; background-position:center;
}
.marble::before{ content:""; position:absolute; inset:0; background:var(--veil); }
.marble > *{ position:relative; }
@media (max-width:1400px){ .marble{ background-image:url(./assets/img/blackmarble-1400.jpg); } }
@media (max-width:700px){ .marble{ background-image:url(./assets/img/blackmarble-800.jpg); } }
.band{ background:var(--black); color:var(--white); }
.panel{ background:var(--panel); }
.card{ background:var(--card); border:1px solid var(--rule); border-radius:4px; padding:32px; }
.card h3{ margin-bottom:12px; }
.card p{ color:var(--black); }
.card .textlink{ margin-top:20px; }
.card-dark{ background:var(--black); color:var(--white); border-color:var(--black); }
.card-dark p{ color:var(--white); }

/* Header */
.skip{ position:absolute; left:-999px; top:8px; background:var(--black); color:var(--white); padding:12px 16px; z-index:200; }
.skip:focus{ left:8px; }
.site-header{
  position:sticky; top:0; z-index:100; height:var(--nav-h); background:var(--white); border-bottom:1px solid var(--rule);
}
.site-header .wrap{ height:100%; display:flex; align-items:center; justify-content:space-between; gap:32px; }
.brand{ display:block; width:168px; height:auto; }
.brand svg{ width:100%; height:auto; }
.nav{ display:flex; align-items:center; gap:30px; }
.nav a{
  font-family:var(--f-body); font-weight:700; font-size:11px; letter-spacing:.20em; text-transform:uppercase; color:var(--black);
  padding:14px 0; line-height:1;
}
.nav a:hover,.nav a[aria-current="page"]{ color:var(--bayou); }
.nav .btn{ margin-left:8px; }
.nav a.btn-primary{ color:var(--white); padding:13px 20px; }
.nav a.btn-primary:hover{ color:var(--white); }
.menu-btn{ display:none; background:none; border:0; width:44px; height:44px; padding:0; cursor:pointer; position:relative; margin-right:-10px; }
.menu-btn span{ position:absolute; left:10px; right:10px; height:1.5px; background:var(--black); transition:transform .25s var(--ease), opacity .2s; }
.menu-btn span:nth-child(1){ top:17px; } .menu-btn span:nth-child(2){ top:26px; }
.menu-btn[aria-expanded="true"] span:nth-child(1){ transform:translateY(4.5px) rotate(45deg); }
.menu-btn[aria-expanded="true"] span:nth-child(2){ transform:translateY(-4.5px) rotate(-45deg); }
@media (max-width:1100px){
  .brand{ width:132px; }
  .menu-btn{ display:block; }
  .nav{
    position:fixed; top:var(--nav-h); left:0; right:0; bottom:0; background:var(--white);
    flex-direction:column; align-items:flex-start; gap:0; padding:16px var(--gutter) 40px;
    transform:translateY(-8px); opacity:0; pointer-events:none; transition:opacity .25s var(--ease), transform .25s var(--ease);
    overflow:auto; border-top:1px solid var(--rule);
  }
  .nav.open{ transform:none; opacity:1; pointer-events:auto; }
  .nav a{ font-size:13px; padding:18px 0; width:100%; border-bottom:1px solid var(--rule); }
  .nav .btn{ margin:28px 0 0; width:auto; border-bottom:1px solid var(--black); }
  .nav .btn:hover{ border-bottom-color:var(--suit); }
}

/* Hero */
.hero{ padding:clamp(96px,12vw,160px) 0 clamp(88px,10vw,140px); text-align:center; }
.hero .wrap{ display:flex; flex-direction:column; align-items:center; }
.hero .mark{ width:clamp(56px,6vw,76px); margin-bottom:40px; }
.hero h1{ margin:0 auto 28px; max-width:30ch; font-size:clamp(38px,4.9vw,60px); }
.hero .eyebrow.plain, .hero-sub .eyebrow{ font-family:var(--f-display); text-transform:none; letter-spacing:.06em; font-size:clamp(16px,1.4vw,20px); font-weight:400; }
.hero .lede{ margin:0 auto 40px; color:var(--white); }
.hero .actions{ justify-content:center; }
.hero-sub{ padding:clamp(72px,9vw,120px) 0 clamp(56px,7vw,88px); }
.hero-sub .wrap{ display:grid; grid-template-columns:minmax(0,7fr) minmax(0,5fr); gap:32px 64px; align-items:end; }
.hero-sub h1{ margin-bottom:0; }
.hero-sub .lede{ color:var(--white); margin-bottom:6px; }
@media (max-width:900px){ .hero-sub .wrap{ grid-template-columns:1fr; gap:24px; } }

/* Mark animation: stem fades, point last */
.mark .stem{ opacity:0; animation:fadeup .3s var(--ease) forwards; }
.mark .point{ opacity:0; animation:fadeup .3s var(--ease) .3s forwards; }
@keyframes fadeup{ from{ opacity:0; transform:translateY(8px);} to{ opacity:1; transform:none; } }
@media (prefers-reduced-motion:reduce){ .mark .stem,.mark .point{ animation:none; opacity:1; } }

/* Credibility strip */
.cred{ padding:28px 0; border-bottom:1px solid var(--rule); }
.cred .wrap{ display:flex; flex-wrap:wrap; justify-content:center; gap:12px 48px; text-align:center; }
.cred span{ font-size:12px; font-weight:700; letter-spacing:.20em; text-transform:uppercase; color:var(--stone); }
.cred span b{ color:var(--black); font-weight:700; }

/* Lists & features */
.statements{ display:grid; grid-template-columns:repeat(3,1fr); gap:48px; }
.statements h3{ margin-bottom:12px; }
.statements li{ list-style:none; }
.statements ol{ display:contents; }
.statements .num{ display:block; font-family:var(--f-head); font-size:14px; color:var(--leather); margin-bottom:14px; letter-spacing:.1em; }
.closing{ margin-top:72px; padding-top:40px; border-top:1px solid var(--rule); }
.closing p{ font-family:var(--f-head); font-size:clamp(22px,2.4vw,28px); line-height:1.3; max-width:30ch; }
@media (max-width:900px){ .statements{ grid-template-columns:1fr; gap:36px; } .closing{ margin-top:48px; } }

.services{ display:grid; grid-template-columns:repeat(6,1fr); gap:24px; }
.services .card{ grid-column:span 2; display:flex; flex-direction:column; }
.services .card.wide{ grid-column:span 3; } .services .card.full{ grid-column:span 6; }
.services .card .eyebrow{ margin-bottom:16px; }
.services .card p{ flex:1; }
@media (max-width:900px){ .services{ grid-template-columns:1fr; } .services .card,.services .card.wide,.services .card.full{ grid-column:span 1; } }

.split{ display:grid; grid-template-columns:minmax(0,5fr) minmax(0,7fr); gap:48px 80px; align-items:center; }
.split.rev{ grid-template-columns:minmax(0,7fr) minmax(0,5fr); }
.split figure{ margin:0; }
.split img{ width:100%; height:auto; border-radius:4px; }
.split .list{ margin-top:32px; }
@media (max-width:900px){ .split,.split.rev{ grid-template-columns:1fr; gap:36px; } .split.rev figure{ order:-1; } }

.proof{ list-style:none; margin:0; padding:0; border-top:1px solid var(--rule); }
.proof li{ padding:20px 0; border-bottom:1px solid var(--rule); display:grid; grid-template-columns:40px 1fr; gap:16px; }
.proof .num{ font-family:var(--f-head); color:var(--leather); font-size:14px; letter-spacing:.1em; padding-top:4px; }
.proof strong{ display:block; font-family:var(--f-head); font-weight:500; font-size:19px; margin-bottom:4px; }

.steps{ display:grid; grid-template-columns:repeat(4,1fr); gap:0; border-top:1px solid var(--rule); border-left:1px solid var(--rule); }
.steps li{ list-style:none; padding:32px 28px 36px; border-right:1px solid var(--rule); border-bottom:1px solid var(--rule); background:var(--card); }
.steps .num{ display:block; font-family:var(--f-head); font-size:13px; letter-spacing:.14em; color:var(--leather); margin-bottom:28px; }
.steps h3{ margin-bottom:10px; }
.steps p{ font-size:16px; }
@media (max-width:1000px){ .steps{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:600px){ .steps{ grid-template-columns:1fr; } }

.practice{ list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(2,1fr); gap:0 64px; border-top:1px solid var(--rule); }
.practice li{ padding:22px 0; border-bottom:1px solid var(--rule); font-family:var(--f-head); font-size:clamp(18px,1.6vw,21px); line-height:1.35; }
@media (max-width:800px){ .practice{ grid-template-columns:1fr; } }

/* Playbook */
.posts{ display:grid; grid-template-columns:repeat(3,1fr); gap:24px; }
.post-card{ background:var(--card); border:1px solid var(--rule); border-radius:4px; padding:28px; display:flex; flex-direction:column; min-height:260px; }
.post-card .meta{ font-size:12px; letter-spacing:.20em; text-transform:uppercase; font-weight:700; color:var(--stone); margin-bottom:20px; }
.post-card h3{ margin-bottom:12px; font-size:21px; }
.post-card p{ flex:1; font-size:16px; }
.post-card .textlink{ margin-top:24px; }
@media (max-width:900px){ .posts{ grid-template-columns:1fr; } }
.post-list{ list-style:none; margin:0; padding:0; border-top:1px solid var(--rule); }
.post-list li{ border-bottom:1px solid var(--rule); }
.post-list a{ display:grid; grid-template-columns:160px 1fr auto; gap:24px; padding:28px 0; align-items:baseline; }
.post-list .meta{ font-size:12px; letter-spacing:.20em; text-transform:uppercase; font-weight:700; color:var(--stone); }
.post-list h3{ font-size:22px; margin-bottom:8px; }
.post-list p{ color:var(--black); font-size:16px; max-width:60ch; }
.post-list .textlink{ align-self:center; }
@media (max-width:800px){ .post-list a{ grid-template-columns:1fr; gap:10px; } .post-list .textlink{ display:none; } }

.article-head{ padding:clamp(64px,8vw,104px) 0 48px; border-bottom:1px solid var(--rule); }
.article-head h1{ font-size:clamp(36px,4.6vw,54px); max-width:22ch; margin:0 0 24px; }
.article-head .meta{ font-size:12px; letter-spacing:.20em; text-transform:uppercase; font-weight:700; color:var(--stone); display:flex; flex-wrap:wrap; gap:8px 24px; }
.article-body{ padding:64px 0 var(--sec); display:grid; grid-template-columns:minmax(0,3fr) minmax(0,8fr) minmax(0,1fr); gap:32px; }
.article-body .prose{ grid-column:2; }
.article-body aside{ grid-column:1; font-size:13px; color:var(--stone); line-height:1.6; position:sticky; top:calc(var(--nav-h) + 32px); align-self:start; }
.article-body aside p+p{ margin-top:12px; }
@media (max-width:900px){ .article-body{ grid-template-columns:1fr; } .article-body .prose,.article-body aside{ grid-column:1; } .article-body aside{ position:static; } }
.prose{ max-width:62ch; font-size:17px; }
.prose h2{ font-size:26px; margin:48px 0 16px; }
.prose h3{ margin:36px 0 12px; }
.prose p+p,.prose ul,.prose ol{ margin-top:1em; }
.prose ul,.prose ol{ padding-left:22px; }
.prose li+li{ margin-top:.5em; }
.prose blockquote{ margin:36px 0; padding:0 0 0 24px; border-left:1px solid var(--leather); font-family:var(--f-head); font-size:21px; line-height:1.4; }
.prose .callout{ margin:36px 0; padding:24px 28px; background:var(--panel); border-radius:4px; font-size:16px; }
.prose .callout strong{ font-family:var(--f-head); font-weight:500; font-size:18px; display:block; margin-bottom:8px; }

/* Who we help */
.audience{ display:grid; grid-template-columns:minmax(0,4fr) minmax(0,8fr); gap:24px 64px; padding:48px 0; border-top:1px solid var(--rule); }
.audience:last-child{ border-bottom:1px solid var(--rule); }
.audience h3{ font-size:24px; margin-bottom:8px; }
.audience .kw{ font-size:13px; color:var(--stone); }
.audience ul{ list-style:none; margin:0; padding:0; display:grid; grid-template-columns:1fr 1fr; gap:14px 32px; }
.audience li{ padding-left:18px; position:relative; font-size:16px; }
.audience li::before{ content:""; position:absolute; left:0; top:.75em; width:8px; height:1px; background:var(--leather); }
@media (max-width:900px){ .audience{ grid-template-columns:1fr; gap:20px; } .audience ul{ grid-template-columns:1fr; } }

/* Service detail */
.service{ display:grid; grid-template-columns:minmax(0,5fr) minmax(0,7fr); gap:32px 80px; padding:72px 0; border-top:1px solid var(--rule); }
.service:first-of-type{ border-top:0; padding-top:0; }
.service h2{ margin-bottom:16px; }
.service .detail{ display:grid; grid-template-columns:1fr 1fr; gap:32px 40px; margin-top:32px; padding-top:28px; border-top:1px solid var(--rule); }
.service .detail h3{ font-family:var(--f-body); font-weight:800; font-size:11px; letter-spacing:.30em; text-transform:uppercase; color:var(--stone); margin-bottom:12px; }
.service .detail ul{ margin:0; padding-left:18px; font-size:16px; }
.service .detail li+li{ margin-top:6px; }
.service .detail p{ font-size:16px; }
@media (max-width:900px){ .service{ grid-template-columns:1fr; padding:48px 0; } .service .detail{ grid-template-columns:1fr; } }

/* About */
.commit{ display:grid; grid-template-columns:repeat(3,1fr); gap:24px; }
.creds{ list-style:none; margin:0; padding:0; columns:2; column-gap:48px; }
.creds li{ padding:14px 0; border-bottom:1px solid var(--rule); break-inside:avoid; font-size:16px; }
@media (max-width:800px){ .commit{ grid-template-columns:1fr; } .creds{ columns:1; } }
.family{ display:grid; grid-template-columns:repeat(3,1fr); gap:24px; margin-top:40px; }
.family .card{ padding:28px; }
.family .card .name{ font-size:15px; letter-spacing:.30em; display:block; margin-bottom:10px; }
.family .card p{ font-size:15px; }
.family .card.current{ border-color:var(--black); }
@media (max-width:800px){ .family{ grid-template-columns:1fr; } }

/* Forms */
.form{ display:grid; gap:24px; }
.form .row{ display:grid; grid-template-columns:1fr 1fr; gap:24px; }
label{ display:block; font-weight:700; font-size:11px; letter-spacing:.20em; text-transform:uppercase; color:var(--stone); margin-bottom:10px; }
input[type=text],input[type=email],textarea,select{
  width:100%; font:inherit; font-size:16px; color:var(--black); background:var(--card);
  border:1px solid var(--nickel); border-radius:0; padding:14px 16px; min-height:48px; transition:border-color .2s;
}
textarea{ min-height:140px; resize:vertical; }
input:focus,textarea:focus,select:focus{ outline:2px solid var(--bayou); outline-offset:0; border-color:var(--bayou); }
.hp{ position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden; }
.form-note{ font-size:13px; color:var(--stone); }
.form-done{ display:none; padding:28px; border:1px solid var(--rule); background:var(--card); border-radius:4px; }
.form-done.show{ display:block; }
.form-done h3{ margin-bottom:8px; }
@media (max-width:700px){ .form .row{ grid-template-columns:1fr; } }
.booking{ border:1px solid var(--rule); background:var(--card); border-radius:4px; padding:32px; }
.booking iframe{ width:100%; min-height:640px; border:0; }

/* FAQ */
.faq{ border-top:1px solid var(--rule); }
.faq details{ border-bottom:1px solid var(--rule); }
.faq summary{ list-style:none; cursor:pointer; padding:22px 0; font-family:var(--f-head); font-size:20px; display:flex; justify-content:space-between; gap:24px; align-items:center; }
.faq summary::-webkit-details-marker{ display:none; }
.faq summary::after{ content:"+"; font-family:var(--f-body); font-weight:400; color:var(--stone); font-size:22px; line-height:1; }
.faq details[open] summary::after{ content:"–"; }
.faq details p{ padding:0 0 24px; max-width:60ch; }

/* Final band */
.cta-band{ padding:clamp(72px,9vw,112px) 0; }
.cta-band .wrap{ display:grid; grid-template-columns:minmax(0,8fr) minmax(0,4fr); gap:32px; align-items:center; }
.cta-band h2{ max-width:22ch; }
.cta-band .actions{ justify-content:flex-end; }
@media (max-width:900px){ .cta-band .wrap{ grid-template-columns:1fr; } .cta-band .actions{ justify-content:flex-start; } }

/* Footer */
.site-footer{ padding:clamp(72px,8vw,104px) 0 40px; }
.foot-grid{ display:grid; grid-template-columns:minmax(0,4fr) repeat(3,minmax(0,2fr)) minmax(0,2fr); gap:48px 32px; padding-bottom:56px; border-bottom:1px solid rgba(243,241,242,.18); }
.foot-logo{ width:150px; }
.foot-grid h4{ font-family:var(--f-body); font-weight:800; font-size:11px; letter-spacing:.30em; text-transform:uppercase; color:var(--nickel); margin:0 0 18px; }
.foot-grid ul{ list-style:none; margin:0; padding:0; }
.foot-grid li+li{ margin-top:10px; }
.foot-grid a{ font-size:15px; }
.foot-grid p{ font-size:15px; }
.foot-base{ display:flex; flex-wrap:wrap; justify-content:space-between; gap:12px 32px; padding-top:28px; }
.foot-base p,.foot-base a{ font-size:13px; color:var(--nickel); }
.foot-base .name{ font-size:12px; letter-spacing:.30em; color:var(--white); }
@media (max-width:1000px){ .foot-grid{ grid-template-columns:1fr 1fr; } .foot-grid > :first-child{ grid-column:span 2; } }
@media (max-width:560px){ .foot-grid{ grid-template-columns:1fr; } .foot-grid > :first-child{ grid-column:span 1; } }

/* Consent bar (only mounts when analytics is configured) */
.consent{ position:fixed; left:0; right:0; bottom:0; background:var(--white); border-top:1px solid var(--rule); padding:16px var(--gutter); display:none; z-index:90; }
.consent.show{ display:flex; flex-wrap:wrap; gap:16px 32px; align-items:center; justify-content:space-between; }
.consent p{ font-size:14px; max-width:70ch; }

/* Reveal on scroll (opacity + 8 px only) */
.js .reveal{ opacity:0; transform:translateY(8px); transition:opacity .3s var(--ease), transform .3s var(--ease); }
.js .reveal.in{ opacity:1; transform:none; }
@media (prefers-reduced-motion:reduce){ .js .reveal{ opacity:1; transform:none; transition:none; } }

/* Utilities */
.mt-8{ margin-top:8px; } .mt-16{ margin-top:16px; } .mt-24{ margin-top:24px; } .mt-32{ margin-top:32px; } .mt-40{ margin-top:40px; } .mt-56{ margin-top:56px; } .mt-72{ margin-top:72px; }
.mb-16{ margin-bottom:16px; } .mb-24{ margin-bottom:24px; } .mb-40{ margin-bottom:40px; } .mb-56{ margin-bottom:56px; }
.center{ text-align:center; }
.visually-hidden{ position:absolute!important; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }

/* Photography */
.photo{ margin:0; }
.photo img{ display:block; width:100%; height:auto; border-radius:4px; }
.photo figcaption{ font-size:13px; color:var(--stone); margin-top:12px; }
.photo-band{ position:relative; margin:48px 0 0; }
.photo-band img{ display:block; width:100%; height:clamp(300px,40vw,560px); object-fit:cover; object-position:center 60%; border-radius:4px; }
.photo-band figcaption{ padding:16px 0 0; font-size:12px; letter-spacing:.18em; text-transform:uppercase; font-weight:700; color:var(--stone); }
@media (max-width:900px){ .photo-band{ margin-top:36px; } }
.service .photo{ margin-top:28px; }
.service .photo img{ aspect-ratio:4/3; object-fit:cover; }
.post-card .cover{ margin:-28px -28px 24px; }
.post-card .cover img{ display:block; width:100%; aspect-ratio:3/2; object-fit:cover; border-radius:4px 4px 0 0; }
.post-list a{ grid-template-columns:200px 130px minmax(0,1fr) auto; align-items:start; } .post-list .textlink{ align-self:center; }
.post-list .thumb{ margin:0; }
.post-list .thumb img{ display:block; width:100%; aspect-ratio:3/2; object-fit:cover; border-radius:4px; }
@media (max-width:800px){ .post-list a{ grid-template-columns:1fr; } }
.article-cover{ margin:0; }
.article-cover img{ display:block; width:100%; height:clamp(260px,38vw,520px); object-fit:cover; }
.systems{ display:grid; grid-template-columns:repeat(3,1fr); gap:24px; }
.systems li{ list-style:none; background:var(--card); border:1px solid var(--rule); border-radius:4px; padding:28px; }
.systems li .num{ display:block; font-size:11px; letter-spacing:.30em; text-transform:uppercase; font-weight:800; color:var(--leather); margin-bottom:14px; }
.systems h3{ font-size:21px; margin-bottom:10px; }
.systems p{ font-size:16px; margin:0; }
.systems li.focus{ border-color:var(--black); }
@media (max-width:1000px){ .systems{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:640px){ .systems{ grid-template-columns:1fr; } }
.edu{ list-style:none; margin:0; padding:0; }
.edu li{ padding:18px 0; border-bottom:1px solid var(--rule); display:grid; grid-template-columns:minmax(0,1fr) auto; gap:4px 32px; align-items:baseline; }
.edu li:first-child{ border-top:1px solid var(--rule); }
.edu strong{ font-family:var(--f-head); font-weight:500; font-size:19px; color:var(--black); }
.edu span{ font-size:13px; color:var(--stone); }
.edu p{ grid-column:1 / -1; font-size:15px; margin:0; color:var(--stone); }
@media (max-width:600px){ .edu li{ grid-template-columns:1fr; } }

/* Marble light sweep, all viewports; still for anyone who prefers reduced motion. The same 16 s clip is reused on every marble section. */
.marble.motion{ position:relative; overflow:hidden; }
.sweep{ display:block; position:absolute; inset:0; width:100%; height:100%; object-fit:cover; z-index:0; opacity:.8; }
.marble.motion::before{ z-index:1; }
.marble.motion > .wrap{ position:relative; z-index:2; }
@media (prefers-reduced-motion:reduce){ .sweep{ display:none; } }
.hero-video{ display:none; }

/* Material strip (home): a low band of three, never a stack of full-width images */
.materials{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:24px; margin:0; padding:0; list-style:none; }
.materials li{ margin:0; }
.materials img{ display:block; width:100%; height:auto; aspect-ratio:16/9; object-fit:cover; border-radius:4px; }
.materials figcaption{ font-size:13px; color:var(--stone); margin-top:12px; letter-spacing:.02em; }
@media (max-width:900px){
  .materials{ gap:10px; }
  .materials img{ aspect-ratio:1/1; }
  .materials figcaption{ display:none; }
}

/* Service cards with covers */
.services .card.has-cover{ padding:0; overflow:hidden; }
.services .card.has-cover .cover{ display:block; margin:0; }
.services .card.has-cover .cover img{ display:block; width:100%; height:auto; aspect-ratio:3/2; object-fit:cover; border-bottom:1px solid var(--rule); }
.services .card.has-cover .body{ padding:28px 32px 32px; display:flex; flex-direction:column; flex:1; }
.services .card.has-cover .body p{ flex:1; }
.services .card.full.has-cover{ display:grid; grid-template-columns:minmax(0,5fr) minmax(0,7fr); }
.services .card.full.has-cover .cover img{ height:100%; aspect-ratio:auto; border-bottom:0; border-right:1px solid var(--rule); }
.services .card.full.has-cover .body{ padding:40px 48px; }
.services .card.full.has-cover .body .split{ gap:24px 64px; align-items:start; }
@media (max-width:900px){
  .services .card.full.has-cover{ grid-template-columns:1fr; }
  .services .card.full.has-cover .cover img{ height:auto; aspect-ratio:3/2; border-right:0; border-bottom:1px solid var(--rule); }
  .services .card.full.has-cover .body{ padding:28px 24px 32px; }
}

/* Photo pair (operator section): the inset sits over the empty wall in the top-right of the main portrait */
.photo-pair{ display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); grid-template-rows:auto auto; gap:16px; margin:0; padding-top:40px; }
.photo-pair img{ display:block; width:100%; height:auto; border-radius:4px; }
.photo-pair .main{ grid-column:1 / span 9; grid-row:1 / span 2; margin:0; }
.photo-pair .inset{ grid-column:8 / span 5; grid-row:1; margin:0; align-self:start; border:8px solid var(--white); border-radius:6px; transform:translateY(-40px); background:var(--white); }
.panel .photo-pair .inset{ border-color:var(--panel); background:var(--panel); }
.photo-pair .inset img{ aspect-ratio:1/1; object-fit:cover; }
@media (max-width:900px){ .photo-pair{ padding-top:24px; } .photo-pair .inset{ grid-column:8 / span 5; transform:translateY(-24px); border-width:6px; } }

/* Steps on marble */
.on-dark .steps{ border-color:rgba(243,241,242,.22); }
.on-dark .steps li{ background:rgba(31,34,33,.55); border-color:rgba(243,241,242,.22); color:var(--white); }
.on-dark .steps .num{ color:var(--nickel); }
.on-dark .steps h3{ color:var(--white); }
.on-dark .steps p{ color:var(--nickel); }
.on-dark .lede{ color:var(--nickel); }
.on-dark h2{ color:var(--white); }

/* Hero on marble and steel: the hero's own surface, with a slightly heavier veil so body copy holds over the steel */
.hero-steel{ background-image:url(./assets/img/hero-marble-steel-2400.jpg); background-position:center; }
.hero-steel.marble::before{ background:rgba(31,34,33,.55); }
@media (max-width:1400px){ .hero-steel{ background-image:url(./assets/img/hero-marble-steel-1600.jpg); } }
@media (max-width:700px){ .hero-steel{ background-image:url(./assets/img/hero-marble-steel-800.jpg); } }
/* Hero with the 3D mark. The video carries the mark, so the static one steps aside and the veil lightens;
   the type sits on stone that is already dark in the film. Applies only when motion is welcome:
   with reduced motion the film is hidden (rule above) and the hero falls back to the static mark on marble. */
@media (prefers-reduced-motion:no-preference){
  .hero-3d{ background-image:none; padding-top:max(clamp(252px, calc(198px + 8.2vw), 310px), calc(18.1vw + 28px)); }
  .hero-3d .sweep{ opacity:1; object-position:50% 0; }
  .hero-3d.marble::before{ background:rgba(31,34,33,.18); }
  .hero-3d .mark{ display:none; }
}
@media (prefers-reduced-motion:no-preference) and (max-width:700px){
  .hero-3d{ padding-top:calc(41.7vw + 28px); }
  .hero-3d .sweep{ inset:0 auto auto 50%; width:230%; max-width:none; height:auto; aspect-ratio:16/9; transform:translateX(-50%);
    -webkit-mask-image:linear-gradient(#000 58%,transparent); mask-image:linear-gradient(#000 58%,transparent); }
}

/* Method, Toolkit, Training (Nov 2026 rebuild) */
.steps.five{ grid-template-columns:repeat(5,1fr); }
@media (max-width:1100px){ .steps.five{ grid-template-columns:repeat(3,1fr); } }
@media (max-width:700px){ .steps.five{ grid-template-columns:1fr; } }
.steps.five li{ padding:28px 22px 32px; }
.steps.five p{ font-size:15px; }
.steps .sub{ display:block; font-family:var(--f-head); font-style:italic; font-size:16px; color:var(--stone); margin-bottom:12px; }
.on-dark .steps .sub{ color:var(--nickel); }

.ladder{ list-style:none; margin:0; padding:0; border-top:1px solid var(--rule); counter-reset:stage; }
.ladder li{ display:grid; grid-template-columns:72px minmax(0,3fr) minmax(0,5fr) minmax(0,4fr); gap:16px 40px; padding:28px 0; border-bottom:1px solid var(--rule); align-items:start; }
.ladder .num{ font-family:var(--f-display); font-size:30px; line-height:1; color:var(--leather); }
.ladder h3{ font-size:21px; margin-bottom:6px; }
.ladder .kw{ font-size:13px; color:var(--stone); }
.ladder p{ font-size:16px; }
.ladder .label{ display:block; font-weight:800; font-size:11px; letter-spacing:.30em; text-transform:uppercase; color:var(--stone); margin-bottom:8px; }
.ladder li.here{ background:var(--panel); margin:0 calc(-1 * var(--gutter)); padding-left:var(--gutter); padding-right:var(--gutter); }
.ladder li.here .num{ color:var(--bayou); }
@media (max-width:900px){ .ladder li{ grid-template-columns:56px 1fr; } .ladder li > :nth-child(n+3){ grid-column:2; } }

.compare{ display:grid; grid-template-columns:1fr 1fr; gap:24px; }
.compare .card ul{ list-style:none; margin:20px 0 0; padding:0; }
.compare .card li{ padding:12px 0 12px 20px; border-top:1px solid var(--rule); font-size:16px; position:relative; }
.compare .card li::before{ content:""; position:absolute; left:0; top:1.3em; width:9px; height:1px; background:var(--leather); }
.compare .card-dark li{ border-top-color:rgba(243,241,242,.18); }
.compare .card-dark li::before{ background:var(--nickel); }
.compare .card-dark .eyebrow{ color:var(--nickel); }
@media (max-width:800px){ .compare{ grid-template-columns:1fr; } }

.agents{ display:grid; grid-template-columns:repeat(2,1fr); gap:0 64px; list-style:none; margin:0; padding:0; border-top:1px solid var(--rule); }
.agents li{ display:grid; grid-template-columns:48px minmax(0,1fr); gap:0 16px; padding:24px 0; border-bottom:1px solid var(--rule); }
.agents .num{ font-family:var(--f-head); font-size:14px; letter-spacing:.1em; color:var(--leather); padding-top:5px; }
.agents h3{ font-size:20px; margin-bottom:6px; }
.agents p{ font-size:15px; }
.agents .io{ display:block; font-size:13px; color:var(--stone); margin-top:10px; }
@media (max-width:800px){ .agents{ grid-template-columns:1fr; } }

.tool{ display:grid; grid-template-columns:minmax(0,5fr) minmax(0,7fr); gap:32px 80px; padding:64px 0; border-top:1px solid var(--rule); }
.tool:first-of-type{ border-top:0; padding-top:0; }
.tool h2{ margin-bottom:14px; }
.tool .kw{ font-size:13px; color:var(--stone); }
.tool .detail{ display:grid; grid-template-columns:1fr 1fr; gap:28px 40px; margin-top:28px; padding-top:24px; border-top:1px solid var(--rule); }
.tool .detail h3{ font-family:var(--f-body); font-weight:800; font-size:11px; letter-spacing:.30em; text-transform:uppercase; color:var(--stone); margin-bottom:12px; }
.tool .detail ul{ margin:0; padding-left:18px; font-size:16px; }
.tool .detail li+li{ margin-top:6px; }
.tool .detail p{ font-size:16px; }
@media (max-width:900px){ .tool{ grid-template-columns:1fr; padding:48px 0; } .tool .detail{ grid-template-columns:1fr; } }

.entry-row{ display:grid; grid-template-columns:repeat(3,1fr); gap:24px; }
.entry-row .card .kw{ font-size:13px; color:var(--stone); margin:-6px 0 14px; }
.entry-row .card dl{ margin:18px 0 0; padding-top:16px; border-top:1px solid var(--rule); font-size:15px; }
.entry-row .card dt{ font-weight:800; font-size:11px; letter-spacing:.30em; text-transform:uppercase; color:var(--stone); margin-top:12px; }
.entry-row .card dd{ margin:4px 0 0; }
@media (max-width:900px){ .entry-row{ grid-template-columns:1fr; } }

.fig-tall img{ aspect-ratio:4/5; object-fit:cover; }
.address{ font-style:normal; font-size:16px; line-height:1.6; }
.address a{ text-decoration:underline; text-underline-offset:3px; text-decoration-color:var(--nickel); }

/* Nov 9 feedback: larger CTA button, larger footer contact, credentials inside education */
.cta-band .btn{ padding:22px 40px; font-size:13px; letter-spacing:.22em; min-height:60px; }
.foot-grid .foot-contact a{ font-size:18px; }
.foot-grid .foot-contact li:nth-child(n+3) a{ font-size:15px; }
.sub-head{ font-size:14px; font-family:var(--f-body); font-weight:800; letter-spacing:.24em; text-transform:uppercase; color:var(--stone); }
.edu.mt-16{ margin-top:16px; }
.split .photo figcaption{ font-size:13px; color:var(--stone); margin-top:12px; }
