/* ==========================================================================
   AMORFLEX — amorflex.in
   Design system: "Paper & Ink"
   Ground is warm uncoated stock; ink-dark bands are punctuation, not default.
   Display: Archivo (wide grotesque, press-nameplate). Body: Source Serif 4.
   Technical/spec: IBM Plex Mono (job-ticket type).
   ========================================================================== */

/* ---------- Tokens: light (paper) is the base for all three theme states --- */
:root{
  --paper:        #FAF7F1;
  --paper-2:      #F2ECE1;
  --paper-3:      #E8DFCE;
  --ink:          #17130D;
  --ink-2:        #3B332A;
  --ink-3:        #6B6053;
  --rule:         #DED4C2;
  --rule-strong:  #C6B99F;
  --gold:         #A87B1E;
  --gold-bright:  #C9992F;
  --gold-lift:    #E3B85C;
  --surface:      #FFFFFF;
  --surface-sunk: #F2ECE1;
  --band:         #17130D;
  --band-text:    #F3EDE2;
  --band-muted:   #A79B89;
  --band-rule:    #33291D;
  --shadow:       0 1px 0 rgba(23,19,13,.05), 0 12px 28px -18px rgba(23,19,13,.35);

  /* registration / process-ink accents — used only in the control strip */
  --reg-c: #0F8FB5;
  --reg-m: #B5387A;
  --reg-y: #D9A400;
  --reg-k: #17130D;

  --measure: 66ch;
  --shell: 1160px;
  --gut: clamp(18px, 4vw, 48px);

  --step--1: clamp(.78rem, .76rem + .1vw, .84rem);
  --step-0:  clamp(1rem, .97rem + .16vw, 1.09rem);
  --step-1:  clamp(1.22rem, 1.14rem + .36vw, 1.45rem);
  --step-2:  clamp(1.5rem, 1.34rem + .72vw, 1.95rem);
  --step-3:  clamp(1.86rem, 1.55rem + 1.4vw, 2.7rem);
  --step-4:  clamp(2.25rem, 1.7rem + 2.5vw, 3.9rem);
}

@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --paper:        #14110C;
    --paper-2:      #1D1811;
    --paper-3:      #262019;
    --ink:          #F4EFE4;
    --ink-2:        #D3C9B7;
    --ink-3:        #9C9080;
    --rule:         #2E2719;
    --rule-strong:  #463C28;
    --gold:         #E3B85C;
    --gold-bright:  #EFCC7C;
    --gold-lift:    #EFCC7C;
    --surface:      #1B1610;
    --surface-sunk: #221C14;
    --band:         #0C0A07;
    --band-text:    #F3EDE2;
    --band-muted:   #9C9080;
    --band-rule:    #2E2719;
    --shadow:       0 1px 0 rgba(0,0,0,.5), 0 14px 30px -18px rgba(0,0,0,.8);
    --reg-y: #E3B85C;
  }
}

:root[data-theme="dark"]{
  --paper:        #14110C;
  --paper-2:      #1D1811;
  --paper-3:      #262019;
  --ink:          #F4EFE4;
  --ink-2:        #D3C9B7;
  --ink-3:        #9C9080;
  --rule:         #2E2719;
  --rule-strong:  #463C28;
  --gold:         #E3B85C;
  --gold-bright:  #EFCC7C;
  --gold-lift:    #EFCC7C;
  --surface:      #1B1610;
  --surface-sunk: #221C14;
  --band:         #0C0A07;
  --band-text:    #F3EDE2;
  --band-muted:   #9C9080;
  --band-rule:    #2E2719;
  --shadow:       0 1px 0 rgba(0,0,0,.5), 0 14px 30px -18px rgba(0,0,0,.8);
  --reg-y: #E3B85C;
}

/* ---------- Base ---------------------------------------------------------- */
*,*::before,*::after{ box-sizing:border-box; }

html{ -webkit-text-size-adjust:100%; scroll-behavior:smooth; }
@media (prefers-reduced-motion: reduce){
  html{ scroll-behavior:auto; }
  *,*::before,*::after{ animation-duration:.001ms !important; animation-iteration-count:1 !important; transition-duration:.001ms !important; }
}

body{
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:"Source Serif 4","Iowan Old Style","Georgia",serif;
  font-size:var(--step-0);
  line-height:1.65;
  font-optical-sizing:auto;
  -webkit-font-smoothing:antialiased;
}

img{ max-width:100%; height:auto; display:block; }
a{ color:inherit; }

h1,h2,h3,h4{
  font-family:"Archivo","Helvetica Neue",Arial,sans-serif;
  font-weight:700;
  line-height:1.06;
  letter-spacing:-.015em;
  text-wrap:balance;
  margin:0;
}
h1{ font-size:var(--step-4); font-stretch:112%; letter-spacing:-.025em; }
h2{ font-size:var(--step-3); font-stretch:108%; }
h3{ font-size:var(--step-1); font-stretch:104%; letter-spacing:-.01em; }
h4{ font-size:var(--step-0); font-stretch:104%; }
p{ margin:0; }

::selection{ background:var(--gold-lift); color:#17130D; }

:where(a,button,input,select,textarea,summary):focus-visible{
  outline:2px solid var(--gold-bright);
  outline-offset:3px;
}

/* ---------- Shared layout primitives -------------------------------------- */
.shell{
  width:100%;
  max-width:var(--shell);
  margin-inline:auto;
  padding-inline:var(--gut);
}
.band{ padding-block:clamp(56px,8vw,104px); }
.band--tight{ padding-block:clamp(40px,5vw,64px); }
.band--sunk{ background:var(--surface-sunk); }
.band--ink{ background:var(--band); color:var(--band-text); }
.band--ink h1,.band--ink h2,.band--ink h3{ color:var(--band-text); }
.band--ink .lede,.band--ink p{ color:var(--band-muted); }
.band--ink .eyebrow{ color:var(--gold-lift); }
.band--ink .eyebrow::before{ background:var(--gold-lift); }

.stack{ display:flex; flex-direction:column; }
.stack-3{ gap:12px; } .stack-4{ gap:16px; } .stack-5{ gap:24px; }
.stack-6{ gap:32px; } .stack-7{ gap:48px; } .stack-8{ gap:clamp(40px,6vw,72px); }

.lede{
  font-size:var(--step-1);
  line-height:1.5;
  color:var(--ink-2);
  max-width:var(--measure);
}
.prose{ max-width:var(--measure); color:var(--ink-2); }
.prose + .prose{ margin-top:1em; }

/* ---------- Eyebrow / spec type ------------------------------------------- */
.eyebrow{
  font-family:"IBM Plex Mono",ui-monospace,"SFMono-Regular",Menlo,monospace;
  font-size:.72rem;
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--gold);
  display:flex;
  align-items:center;
  gap:10px;
  margin:0;
}
.eyebrow::before{
  content:"";
  width:26px; height:2px;
  background:var(--gold);
  flex:none;
}
.mono{ font-family:"IBM Plex Mono",ui-monospace,Menlo,monospace; font-size:var(--step--1); letter-spacing:.01em; }

/* ---------- Header -------------------------------------------------------- */
.site-head{
  position:sticky; top:0; z-index:60;
  background:color-mix(in srgb, var(--paper) 92%, transparent);
  backdrop-filter:saturate(150%) blur(10px);
  border-bottom:1px solid var(--rule);
}
.site-head__in{
  display:flex; align-items:center; gap:20px;
  min-height:68px;
}
.brand{ display:flex; align-items:center; gap:11px; text-decoration:none; flex:none; }
.brand img{ width:30px; height:auto; }
.brand__name{
  font-family:"Archivo",Arial,sans-serif;
  font-weight:800; font-stretch:120%;
  font-size:1.03rem; letter-spacing:.12em;
  line-height:1; color:var(--ink);
}
.brand__tag{
  display:block;
  font-family:"IBM Plex Mono",monospace;
  font-size:.55rem; letter-spacing:.16em;
  color:var(--gold); margin-top:4px; text-transform:uppercase;
}

.nav{ display:flex; align-items:center; gap:2px; margin-left:auto; }
.nav a{
  font-family:"Archivo",Arial,sans-serif;
  font-size:.83rem; font-weight:600; font-stretch:102%;
  letter-spacing:.02em;
  text-decoration:none; color:var(--ink-2);
  padding:9px 11px;
  border-bottom:2px solid transparent;
  white-space:nowrap;
  transition:color .15s ease, border-color .15s ease;
}
.nav a:hover{ color:var(--ink); border-bottom-color:var(--rule-strong); }
.nav a[aria-current="page"]{ color:var(--ink); border-bottom-color:var(--gold-bright); }

.has-sub{ position:relative; }
.has-sub > a::after{ content:""; display:inline-block; width:5px; height:5px; margin-left:7px; border-right:1.5px solid currentColor; border-bottom:1.5px solid currentColor; transform:translateY(-2px) rotate(45deg); opacity:.6; }
.subnav{
  position:absolute; top:100%; left:0;
  min-width:236px;
  background:var(--surface);
  border:1px solid var(--rule);
  box-shadow:var(--shadow);
  padding:6px;
  display:none;
  flex-direction:column;
}
.has-sub:hover .subnav,.has-sub:focus-within .subnav{ display:flex; }
.subnav a{ border:0; padding:9px 12px; font-size:.82rem; }
.subnav a:hover{ background:var(--surface-sunk); border:0; }

.navtoggle{
  margin-left:auto; display:none;
  background:none; border:1px solid var(--rule-strong);
  color:var(--ink); padding:9px 13px; cursor:pointer;
  font-family:"IBM Plex Mono",monospace; font-size:.7rem; letter-spacing:.14em; text-transform:uppercase;
}

/* ---------- Buttons ------------------------------------------------------- */
.btn{
  display:inline-flex; align-items:center; gap:9px;
  font-family:"Archivo",Arial,sans-serif;
  font-size:.85rem; font-weight:700; font-stretch:104%;
  letter-spacing:.04em; text-transform:uppercase;
  text-decoration:none; cursor:pointer;
  padding:13px 22px;
  border:1.5px solid var(--ink);
  background:var(--ink); color:var(--paper);
  transition:transform .14s ease, background .14s ease, color .14s ease;
}
.btn:hover{ background:var(--gold); border-color:var(--gold); color:#17130D; }
.btn:active{ transform:translateY(1px); }
.btn--ghost{ background:transparent; color:var(--ink); border-color:var(--rule-strong); }
.btn--ghost:hover{ background:var(--ink); color:var(--paper); border-color:var(--ink); }
.btn--gold{ background:var(--gold-bright); border-color:var(--gold-bright); color:#17130D; }
.btn--gold:hover{ background:var(--gold-lift); border-color:var(--gold-lift); }
.btn--sm{ padding:10px 16px; font-size:.76rem; }
.band--ink .btn--ghost{ color:var(--band-text); border-color:var(--band-rule); }
.band--ink .btn--ghost:hover{ background:var(--band-text); color:var(--band); border-color:var(--band-text); }
.btn-row{ display:flex; flex-wrap:wrap; gap:12px; }

/* ---------- Control strip (the press colour bar) -------------------------- */
.strip{ display:flex; height:9px; width:100%; overflow:hidden; }
.strip span{ flex:1 1 0; transform-origin:left center; }
.strip--load span{ animation:lay .5s cubic-bezier(.2,.7,.3,1) both; }
.strip--load span:nth-child(1){ animation-delay:.02s }
.strip--load span:nth-child(2){ animation-delay:.07s }
.strip--load span:nth-child(3){ animation-delay:.12s }
.strip--load span:nth-child(4){ animation-delay:.17s }
.strip--load span:nth-child(5){ animation-delay:.22s }
.strip--load span:nth-child(6){ animation-delay:.27s }
.strip--load span:nth-child(7){ animation-delay:.32s }
.strip--load span:nth-child(8){ animation-delay:.37s }
@keyframes lay{ from{ transform:scaleX(0) } to{ transform:scaleX(1) } }

/* registration target */
.regmark{ width:26px; height:26px; flex:none; opacity:.8; }

/* ---------- Hero ---------------------------------------------------------- */
.hero{ border-bottom:1px solid var(--rule); background:var(--paper); }
.hero__grid{
  display:grid;
  grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);
  gap:clamp(28px,5vw,64px);
  align-items:center;
  padding-block:clamp(44px,6.5vw,88px);
}
.hero h1{ margin-block:14px 0; }
.hero .lede{ margin-top:18px; }
.hero__cta{ margin-top:28px; }
.hero__fig{ position:relative; }
.hero__fig img{ width:100%; border:1px solid var(--rule); }
.hero__caption{
  position:absolute; left:0; bottom:0;
  background:var(--band); color:var(--band-text);
  font-family:"IBM Plex Mono",monospace; font-size:.66rem;
  letter-spacing:.13em; text-transform:uppercase;
  padding:8px 13px;
}

/* ticket = job-ticket spec strip */
.ticket{
  border-top:1px solid var(--rule);
  border-bottom:1px solid var(--rule);
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(160px,1fr));
}
.ticket div{
  padding:18px 20px;
  border-left:1px solid var(--rule);
}
.ticket div:first-child{ border-left:0; }
.ticket dt,.ticket .t-k{
  font-family:"IBM Plex Mono",monospace;
  font-size:.63rem; letter-spacing:.16em; text-transform:uppercase;
  color:var(--ink-3); margin:0 0 6px;
}
.ticket dd,.ticket .t-v{
  margin:0;
  font-family:"Archivo",Arial,sans-serif; font-stretch:106%;
  font-weight:700; font-size:1.02rem; line-height:1.25;
  color:var(--ink);
}

/* ---------- Section head -------------------------------------------------- */
.sechead{ display:flex; flex-direction:column; gap:14px; margin-bottom:clamp(28px,4vw,46px); }
.sechead--split{ flex-direction:row; align-items:flex-end; justify-content:space-between; gap:28px; flex-wrap:wrap; }
.sechead h2{ max-width:20ch; }
.sechead .lede{ max-width:54ch; }

/* ---------- Product cards ------------------------------------------------- */
.grid{ display:grid; gap:clamp(16px,2.2vw,26px); }
.grid--3{ grid-template-columns:repeat(auto-fit,minmax(272px,1fr)); }
.grid--2{ grid-template-columns:repeat(2,minmax(0,1fr)); }
.grid--4{ grid-template-columns:repeat(auto-fit,minmax(212px,1fr)); }
@media (max-width:760px){ .grid--2{ grid-template-columns:1fr; } }

.pcard{
  display:flex; flex-direction:column;
  background:var(--surface);
  border:1px solid var(--rule);
  text-decoration:none; color:inherit;
  transition:border-color .16s ease, transform .16s ease, box-shadow .16s ease;
}
a.pcard:hover{ border-color:var(--gold); transform:translateY(-3px); box-shadow:var(--shadow); }
.pcard__fig{ aspect-ratio:4/3; overflow:hidden; background:var(--surface-sunk); border-bottom:1px solid var(--rule); }
.pcard__fig img{ width:100%; height:100%; object-fit:cover; transition:transform .5s cubic-bezier(.2,.7,.3,1); }
a.pcard:hover .pcard__fig img{ transform:scale(1.035); }
.pcard__body{ padding:20px 22px 24px; display:flex; flex-direction:column; gap:9px; flex:1; }
.pcard__spec{
  font-family:"IBM Plex Mono",monospace; font-size:.66rem;
  letter-spacing:.13em; text-transform:uppercase; color:var(--gold);
}
.pcard p{ color:var(--ink-3); font-size:.95rem; line-height:1.55; }
.pcard__more{
  margin-top:auto; padding-top:14px;
  font-family:"Archivo",Arial,sans-serif; font-weight:700; font-size:.78rem;
  letter-spacing:.06em; text-transform:uppercase; color:var(--ink);
  display:flex; align-items:center; gap:8px;
}
.pcard__more::after{ content:"→"; color:var(--gold); transition:transform .16s ease; }
a.pcard:hover .pcard__more::after{ transform:translateX(4px); }

/* ---------- Process sequence (genuinely ordered) -------------------------- */
/* 7 steps, laid out so no cell is ever left empty:
   4 across, then 3 with the last spanning the spare column. */
.flow{ display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:0; border:1px solid var(--rule); }
.flow__step{
  padding:24px 22px 28px; background:var(--surface);
  border-left:1px solid var(--rule); border-top:1px solid var(--rule);
}
.flow__step:nth-child(4n+1){ border-left:0; }
.flow__step:nth-child(-n+4){ border-top:0; }
.flow__step:last-child{ grid-column:span 2; }
@media (max-width:980px){
  .flow{ grid-template-columns:repeat(2,minmax(0,1fr)); }
  .flow__step{ border-left:1px solid var(--rule); border-top:1px solid var(--rule); }
  .flow__step:nth-child(odd){ border-left:0; }
  .flow__step:nth-child(-n+2){ border-top:0; }
}
@media (max-width:560px){
  .flow{ grid-template-columns:1fr; }
  .flow__step,.flow__step:nth-child(odd){ border-left:0; border-top:1px solid var(--rule); }
  .flow__step:first-child{ border-top:0; }
  .flow__step:last-child{ grid-column:auto; }
}
.flow__n{
  font-family:"IBM Plex Mono",monospace; font-size:.68rem; letter-spacing:.14em;
  color:var(--gold); display:block; margin-bottom:12px;
}
.flow__step h3{ font-size:1rem; margin-bottom:8px; }
.flow__step p{ font-size:.88rem; color:var(--ink-3); line-height:1.55; }

/* ---------- Feature list (spec sheet) ------------------------------------- */
.speclist{ list-style:none; margin:0; padding:0; display:grid; gap:0; }
.speclist li{
  display:flex; gap:13px; align-items:baseline;
  padding:11px 0;
  border-bottom:1px solid var(--rule);
  font-size:.96rem;
}
.speclist li::before{
  content:""; flex:none;
  width:7px; height:7px; margin-top:2px;
  background:var(--gold);
  transform:rotate(45deg);
}
.band--ink .speclist li{ border-bottom-color:var(--band-rule); color:var(--band-text); }
.band--ink .speclist li::before{ background:var(--gold-lift); }

.cols2{ columns:2; column-gap:clamp(24px,4vw,54px); }
.cols2 > *{ break-inside:avoid; }
@media (max-width:640px){ .cols2{ columns:1; } }

/* ---------- Chips --------------------------------------------------------- */
.chips{ display:flex; flex-wrap:wrap; gap:8px; list-style:none; margin:0; padding:0; }
.chips li{
  font-family:"IBM Plex Mono",monospace; font-size:.7rem;
  letter-spacing:.06em;
  padding:7px 12px;
  border:1px solid var(--rule-strong);
  border-radius:100px;
  color:var(--ink-2);
  background:var(--surface);
}
.band--ink .chips li{ border-color:var(--band-rule); color:var(--band-text); background:transparent; }

/* ---------- Split feature ------------------------------------------------- */
.split{ display:grid; grid-template-columns:repeat(auto-fit,minmax(300px,1fr)); gap:clamp(28px,4.5vw,60px); align-items:center; }
.split img{ border:1px solid var(--rule); width:100%; }
.band--ink .split img{ border-color:var(--band-rule); }
.split--rev > *:first-child{ order:2; }
@media (max-width:720px){ .split--rev > *:first-child{ order:0; } }

/* ---------- Stat row ------------------------------------------------------ */
.stats{ display:grid; grid-template-columns:repeat(auto-fit,minmax(168px,1fr)); border-top:1px solid var(--band-rule); }
.stats div{ padding:26px 22px; border-left:1px solid var(--band-rule); }
.stats div:first-child{ border-left:0; }
.stats b{
  display:block;
  font-family:"Archivo",Arial,sans-serif; font-weight:800; font-stretch:118%;
  font-size:clamp(1.9rem,1.4rem+1.9vw,2.8rem); line-height:1;
  color:var(--gold-lift); letter-spacing:-.02em;
  font-variant-numeric:tabular-nums;
}
.stats span{
  display:block; margin-top:10px;
  font-family:"IBM Plex Mono",monospace; font-size:.68rem;
  letter-spacing:.13em; text-transform:uppercase; color:var(--band-muted);
  line-height:1.5;
}

/* ---------- Market tiles -------------------------------------------------- */
.mkt{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); border-top:1px solid var(--rule); border-left:1px solid var(--rule); }
@media (max-width:900px){ .mkt{ grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:600px){ .mkt{ grid-template-columns:1fr; } }
.mkt article{ padding:26px 24px 30px; border-right:1px solid var(--rule); border-bottom:1px solid var(--rule); background:var(--surface); }
.mkt h3{ margin-bottom:9px; }
.mkt p{ font-size:.9rem; color:var(--ink-3); line-height:1.55; }
.mkt .mkt__ico{ color:var(--gold); margin-bottom:14px; display:block; }

/* ---------- Gallery ------------------------------------------------------- */
.gal{ display:grid; grid-template-columns:repeat(auto-fit,minmax(216px,1fr)); gap:clamp(12px,1.8vw,20px); }
.gal figure{ margin:0; border:1px solid var(--rule); background:var(--surface); }
.gal img{ width:100%; aspect-ratio:4/3; object-fit:cover; }
.gal figcaption{
  padding:11px 14px;
  font-family:"IBM Plex Mono",monospace; font-size:.66rem;
  letter-spacing:.11em; text-transform:uppercase; color:var(--ink-3);
  border-top:1px solid var(--rule);
}

/* ---------- Contact / form ------------------------------------------------ */
.contactgrid{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.2fr); gap:clamp(32px,5vw,64px); align-items:start; }
@media (max-width:860px){ .contactgrid{ grid-template-columns:1fr; } }

.dl{ margin:0; display:grid; gap:0; }
.dl > div{ padding:16px 0; border-bottom:1px solid var(--rule); display:grid; gap:5px; }
.dl dt{ font-family:"IBM Plex Mono",monospace; font-size:.65rem; letter-spacing:.15em; text-transform:uppercase; color:var(--ink-3); }
.dl dd{ margin:0; font-size:1.02rem; }
.dl dd a{ text-decoration:none; border-bottom:1px solid var(--rule-strong); }
.dl dd a:hover{ border-bottom-color:var(--gold); color:var(--gold); }

.form{ background:var(--surface); border:1px solid var(--rule); padding:clamp(22px,3.4vw,34px); }
.field{ display:grid; gap:7px; margin-bottom:16px; }
.field label{
  font-family:"IBM Plex Mono",monospace; font-size:.65rem;
  letter-spacing:.14em; text-transform:uppercase; color:var(--ink-3);
}
.field .req{ color:var(--gold); }
.field input,.field select,.field textarea{
  font:inherit; font-size:.96rem;
  padding:11px 13px;
  background:var(--paper);
  border:1px solid var(--rule-strong);
  color:var(--ink);
  border-radius:0;
  width:100%;
}
.field textarea{ min-height:112px; resize:vertical; font-family:inherit; }
.field input:focus,.field select:focus,.field textarea:focus{ border-color:var(--gold); }
.field--row{ display:grid; grid-template-columns:1fr 1fr; gap:14px; }
@media (max-width:520px){ .field--row{ grid-template-columns:1fr; } }
.form__note{ font-size:.84rem; color:var(--ink-3); margin-top:14px; line-height:1.6; }
.form__err{ color:#B23A2E; font-size:.8rem; font-family:"IBM Plex Mono",monospace; }
:root[data-theme="dark"] .form__err,
:root:not([data-theme="light"]) .form__err{ color:#E88A7C; }
@media (prefers-color-scheme: light){ :root:not([data-theme="dark"]) .form__err{ color:#B23A2E; } }

.summary{
  margin-top:20px; padding:18px;
  background:var(--surface-sunk);
  border:1px dashed var(--rule-strong);
}
.summary pre{
  margin:0 0 14px; white-space:pre-wrap; word-break:break-word;
  font-family:"IBM Plex Mono",monospace; font-size:.78rem; line-height:1.65; color:var(--ink-2);
}

/* ---------- Locations ----------------------------------------------------- */
.locs{ display:grid; grid-template-columns:repeat(auto-fit,minmax(232px,1fr)); gap:0; border:1px solid var(--rule); }
.locs article{ padding:26px 24px; border-left:1px solid var(--rule); background:var(--surface); }
.locs article:first-child{ border-left:0; }
.locs .locs__role{ font-family:"IBM Plex Mono",monospace; font-size:.64rem; letter-spacing:.16em; text-transform:uppercase; color:var(--gold); }
.locs h3{ margin:10px 0 8px; }
.locs p{ font-size:.92rem; color:var(--ink-3); }

/* ---------- CTA band ------------------------------------------------------ */
.cta__in{ display:flex; align-items:center; justify-content:space-between; gap:32px; flex-wrap:wrap; }
.cta__in h2{ max-width:22ch; }

/* ---------- Footer -------------------------------------------------------- */
.site-foot{ background:var(--band); color:var(--band-muted); padding-block:0; }
.site-foot > .shell{ padding-block:clamp(48px,6vw,72px) 0; }
.foot__grid{ display:grid; grid-template-columns:minmax(0,1.35fr) repeat(3,minmax(0,1fr)); gap:clamp(26px,4vw,48px); }
@media (max-width:860px){ .foot__grid{ grid-template-columns:1fr 1fr; } }
@media (max-width:520px){ .foot__grid{ grid-template-columns:1fr; } }
.foot__grid h4{
  font-family:"IBM Plex Mono",monospace; font-weight:500;
  font-size:.65rem; letter-spacing:.17em; text-transform:uppercase;
  color:var(--gold-lift); margin-bottom:16px;
}
.foot__grid ul{ list-style:none; margin:0; padding:0; display:grid; gap:10px; }
.foot__grid a{ text-decoration:none; color:var(--band-text); font-size:.92rem; opacity:.82; }
.foot__grid a:hover{ opacity:1; color:var(--gold-lift); }
.foot__brand img{ width:44px; margin-bottom:16px; }
.foot__brand p{ font-size:.92rem; color:var(--band-muted); max-width:34ch; line-height:1.65; }
.foot__bar{
  margin-top:clamp(36px,5vw,56px);
  border-top:1px solid var(--band-rule);
  padding-block:22px;
  display:flex; justify-content:space-between; gap:16px; flex-wrap:wrap;
  font-family:"IBM Plex Mono",monospace; font-size:.68rem;
  letter-spacing:.08em; color:var(--band-muted);
}

/* ---------- Page header (interior pages) ---------------------------------- */
.phead{ border-bottom:1px solid var(--rule); background:var(--surface-sunk); }
.phead__in{ padding-block:clamp(40px,5.5vw,72px); display:grid; gap:16px; }
.phead h1{ font-size:var(--step-3); }
.crumb{
  font-family:"IBM Plex Mono",monospace; font-size:.66rem;
  letter-spacing:.13em; text-transform:uppercase; color:var(--ink-3);
}
.crumb a{ text-decoration:none; color:var(--ink-3); }
.crumb a:hover{ color:var(--gold); }

/* ---------- Skip link ----------------------------------------------------- */
.skip{
  position:absolute; left:-9999px; top:0; z-index:100;
  background:var(--ink); color:var(--paper); padding:12px 18px;
  font-family:"Archivo",Arial,sans-serif; font-size:.8rem;
}
.skip:focus{ left:8px; top:8px; }

/* ---------- Responsive ---------------------------------------------------- */
@media (max-width:960px){
  .hero__grid{ grid-template-columns:1fr; }
  .hero__fig{ order:-1; }
}
@media (max-width:880px){
  .navtoggle{ display:block; }
  .nav{
    display:none;
    position:absolute; top:100%; left:0; right:0;
    flex-direction:column; align-items:stretch;
    background:var(--paper);
    border-bottom:1px solid var(--rule);
    padding:10px var(--gut) 20px;
    max-height:calc(100dvh - 68px); overflow-y:auto;
  }
  .nav.is-open{ display:flex; }
  .nav a{ padding:12px 2px; border-bottom:1px solid var(--rule); font-size:.95rem; }
  .nav a[aria-current="page"]{ border-bottom-color:var(--gold-bright); }
  .has-sub > a::after{ display:none; }
  .subnav{ position:static; display:flex; border:0; box-shadow:none; padding:0 0 0 16px; background:transparent; }
  .subnav a{ font-size:.86rem; opacity:.85; }
  .nav .btn{ margin-top:14px; justify-content:center; border-bottom-width:1.5px; }
}
@media (max-width:640px){
  .ticket div,.flow__step,.locs article,.stats div{ border-left:0; border-top:1px solid var(--rule); }
  .ticket div:first-child,.flow__step:first-child,.locs article:first-child,.stats div:first-child{ border-top:0; }
  .stats div{ border-top-color:var(--band-rule); }
  .sechead--split{ flex-direction:column; align-items:flex-start; }
}

/* Spam trap — must be reachable by bots but invisible and unfocusable
   for people, so it is moved out of view rather than display:none. */
.hp{ position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden; }

/* ==========================================================================
   CINEMATIC LAYER — 2026 redesign
   Everything below adds motion, depth and scale to the paper & ink system.
   Nothing above was replaced; these are new components plus a few overrides.
   ========================================================================== */

/* ---------- Scroll reveal -------------------------------------------------- */
[data-rev]{
  opacity:0;
  transform:translateY(22px);
  transition:opacity .7s cubic-bezier(.22,.7,.24,1), transform .7s cubic-bezier(.22,.7,.24,1);
  transition-delay:var(--rev-d,0ms);
  will-change:opacity,transform;
}
[data-rev="left"]{ transform:translateX(-26px); }
[data-rev="right"]{ transform:translateX(26px); }
[data-rev="scale"]{ transform:scale(.965); }
[data-rev].is-in{ opacity:1; transform:none; }
.no-js [data-rev], .rm [data-rev]{ opacity:1; transform:none; }

/* ---------- Utility bar above the header ---------------------------------- */
.util{
  background:var(--band);
  color:var(--band-muted);
  font-family:"IBM Plex Mono",ui-monospace,Menlo,monospace;
  font-size:.68rem;
  letter-spacing:.1em;
}
.util__in{ display:flex; align-items:center; justify-content:space-between; gap:16px; min-height:38px; flex-wrap:wrap; }
.util a{ color:var(--band-text); text-decoration:none; opacity:.85; }
.util a:hover{ color:var(--gold-lift); opacity:1; }
.util__l,.util__r{ display:flex; align-items:center; gap:18px; flex-wrap:wrap; }
.util__dot{ width:5px; height:5px; background:var(--gold-lift); flex:none; transform:rotate(45deg); }
@media (max-width:720px){ .util__l{ display:none; } .util__in{ justify-content:center; } }

/* ---------- Header: shrink + elevate on scroll ---------------------------- */
.site-head{ transition:box-shadow .25s ease, background .25s ease; }
.site-head__in{ transition:min-height .25s ease; }
.site-head.is-stuck{
  background:color-mix(in srgb, var(--paper) 96%, transparent);
  box-shadow:0 10px 30px -22px rgba(23,19,13,.65);
}
.site-head.is-stuck .site-head__in{ min-height:58px; }
.site-head.is-stuck .brand img{ width:26px; }
.brand img{ transition:width .25s ease; }

/* header scroll-progress hairline */
.progress{
  position:absolute; left:0; bottom:-1px; height:2px;
  background:linear-gradient(90deg,var(--reg-c),var(--reg-m),var(--reg-y),var(--gold-bright));
  width:0; z-index:2;
}

/* ==========================================================================
   HERO SLIDER
   ========================================================================== */
.hx{
  position:relative;
  background:var(--band);
  color:var(--band-text);
  overflow:hidden;
  isolation:isolate;
}
.hx__viewport{
  position:relative;
  min-height:clamp(520px, 78vh, 780px);
}
.hx__slide{
  position:absolute; inset:0;
  opacity:0; visibility:hidden;
  transition:opacity .9s cubic-bezier(.4,0,.2,1), visibility 0s linear .9s;
}
.hx__slide.is-live{ opacity:1; visibility:visible; transition-delay:0s,0s; z-index:1; }

.hx__media{ position:absolute; inset:0; overflow:hidden; }
.hx__media img{
  width:100%; height:100%; object-fit:cover;
  transform:scale(1.1);
  transition:transform 9s linear;
  filter:saturate(.92) contrast(1.04);
}
.hx__slide.is-live .hx__media img{ transform:scale(1.005); }
.hx__media::after{
  content:"";
  position:absolute; inset:0;
  background:
    linear-gradient(100deg, rgba(10,8,5,.93) 0%, rgba(10,8,5,.80) 38%, rgba(10,8,5,.34) 68%, rgba(10,8,5,.55) 100%),
    linear-gradient(0deg, rgba(10,8,5,.72) 0%, rgba(10,8,5,0) 46%);
}
/* halftone texture, drawn not loaded */
.hx__media::before{
  content:""; position:absolute; inset:0; z-index:2;
  background-image:radial-gradient(rgba(255,255,255,.16) .6px, transparent .7px);
  background-size:4px 4px;
  opacity:.25; mix-blend-mode:overlay; pointer-events:none;
}

.hx__in{
  position:relative; z-index:3;
  min-height:clamp(520px, 78vh, 780px);
  display:flex; align-items:center;
  padding-block:clamp(72px,10vw,120px) clamp(96px,12vw,140px);
}
.hx__copy{ max-width:40rem; }
.hx__copy .eyebrow{ color:var(--gold-lift); }
.hx__copy .eyebrow::before{ background:var(--gold-lift); }
.hx h1{
  color:#FFFCF5;
  font-size:clamp(2.5rem, 1.5rem + 4.6vw, 5.2rem);
  line-height:.97; letter-spacing:-.03em;
  margin:18px 0 0;
  text-shadow:0 2px 30px rgba(0,0,0,.45);
}
.hx h1 span{ display:block; overflow:hidden; }
.hx h1 span b{
  display:block; font-weight:inherit;
  transform:translateY(105%);
  transition:transform .85s cubic-bezier(.16,.84,.3,1);
}
.hx h1 span:nth-child(2) b{ transition-delay:.09s; }
.hx__slide.is-live h1 span b{ transform:none; }
.hx h1 span:last-child b{ color:var(--gold-lift); }

.hx__lede{
  font-size:clamp(1.02rem,.96rem + .42vw,1.28rem);
  line-height:1.55;
  color:#E6DED0;
  max-width:44ch;
  margin-top:22px;
  opacity:0; transform:translateY(16px);
  transition:opacity .8s ease .28s, transform .8s cubic-bezier(.2,.7,.3,1) .28s;
}
.hx__btns{
  margin-top:32px;
  opacity:0; transform:translateY(16px);
  transition:opacity .8s ease .4s, transform .8s cubic-bezier(.2,.7,.3,1) .4s;
}
.hx__slide.is-live .hx__lede,.hx__slide.is-live .hx__btns{ opacity:1; transform:none; }
.hx .btn--ghost{ color:#FFFCF5; border-color:rgba(255,252,245,.4); backdrop-filter:blur(3px); }
.hx .btn--ghost:hover{ background:#FFFCF5; color:var(--band); border-color:#FFFCF5; }

/* caption chip, bottom-right of the frame */
.hx__cap{
  position:absolute; right:0; bottom:0; z-index:3;
  font-family:"IBM Plex Mono",monospace; font-size:.64rem;
  letter-spacing:.14em; text-transform:uppercase;
  color:var(--band-text);
  background:rgba(10,8,5,.55);
  border-left:2px solid var(--gold-bright);
  padding:9px 14px;
  opacity:0; transition:opacity .6s ease .5s;
}
.hx__slide.is-live .hx__cap{ opacity:1; }

/* controls */
.hx__ui{
  position:absolute; left:0; right:0; bottom:0; z-index:5;
  border-top:1px solid rgba(255,252,245,.16);
  background:linear-gradient(0deg, rgba(10,8,5,.55), rgba(10,8,5,0));
}
.hx__ui-in{ display:flex; align-items:center; gap:20px; padding-block:14px; flex-wrap:wrap; }
.hx__dots{ display:flex; gap:0; flex:1 1 260px; min-width:180px; }
.hx__dot{
  flex:1 1 0; appearance:none; background:none; border:0; cursor:pointer;
  padding:14px 0 12px; text-align:left;
  font-family:"IBM Plex Mono",monospace; font-size:.62rem;
  letter-spacing:.14em; text-transform:uppercase;
  color:rgba(255,252,245,.5);
  border-top:2px solid rgba(255,252,245,.2);
  transition:color .2s ease;
  position:relative;
}
.hx__dot:hover{ color:#FFFCF5; }
.hx__dot[aria-selected="true"]{ color:var(--gold-lift); }
.hx__dot::after{
  content:""; position:absolute; left:0; top:-2px; height:2px; width:0;
  background:var(--gold-bright);
}
.hx__dot[aria-selected="true"]::after{ width:var(--p,0%); }
.hx__dot span{ display:block; padding-right:10px; }
.hx__arrows{ display:flex; gap:8px; margin-left:auto; }
.hx__arrow{
  width:44px; height:44px; flex:none;
  display:grid; place-items:center;
  background:transparent; cursor:pointer;
  border:1px solid rgba(255,252,245,.3);
  color:#FFFCF5;
  transition:background .16s ease, border-color .16s ease, color .16s ease;
}
.hx__arrow:hover{ background:#FFFCF5; color:var(--band); border-color:#FFFCF5; }
.hx__arrow svg{ width:17px; height:17px; }
@media (max-width:700px){
  .hx__dot span{ display:none; }
  .hx__dot{ padding:12px 0; }
  .hx__dots{ gap:6px; }
  .hx__cap{ display:none; }
}

/* ==========================================================================
   COUNTERS
   ========================================================================== */
.counters{
  display:grid;
  grid-template-columns:repeat(5,minmax(0,1fr));
  border-top:1px solid var(--band-rule);
  border-bottom:1px solid var(--band-rule);
}
@media (max-width:1000px){ .counters{ grid-template-columns:repeat(3,minmax(0,1fr)); } }
@media (max-width:620px){ .counters{ grid-template-columns:repeat(2,minmax(0,1fr)); } }
.counters > div{
  padding:clamp(26px,3.2vw,38px) clamp(16px,2vw,26px);
  border-left:1px solid var(--band-rule);
  position:relative;
}
.counters > div:first-child{ border-left:0; }
@media (max-width:1000px){ .counters > div:nth-child(3n+1){ border-left:0; } }
@media (max-width:620px){ .counters > div:nth-child(odd){ border-left:0; } .counters > div{ border-top:1px solid var(--band-rule); } }
.counters b{
  display:block;
  font-family:"Archivo",Arial,sans-serif; font-weight:800; font-stretch:120%;
  font-size:clamp(2.4rem,1.6rem+2.6vw,3.7rem); line-height:.95;
  color:var(--gold-lift); letter-spacing:-.035em;
  font-variant-numeric:tabular-nums;
}
.counters b i{ font-style:normal; font-size:.42em; letter-spacing:.02em; margin-left:.12em; vertical-align:.35em; color:var(--band-text); }
.counters .c-l{
  display:block; margin-top:14px;
  font-family:"Archivo",Arial,sans-serif; font-weight:700; font-size:.92rem;
  color:var(--band-text); letter-spacing:.01em;
}
.counters .c-s{
  display:block; margin-top:7px;
  font-family:"IBM Plex Mono",monospace; font-size:.64rem; line-height:1.6;
  letter-spacing:.08em; color:var(--band-muted);
}

/* ==========================================================================
   TICKER (capability marquee)
   ========================================================================== */
.ticker{
  border-block:1px solid var(--rule);
  background:var(--surface);
  overflow:hidden;
  padding-block:15px;
  mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent);
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent);
}
.ticker__track{ display:flex; width:max-content; animation:slide-x 46s linear infinite; }
.ticker:hover .ticker__track{ animation-play-state:paused; }
.ticker__grp{ display:flex; flex:none; }
.ticker span{
  font-family:"IBM Plex Mono",monospace; font-size:.74rem;
  letter-spacing:.13em; text-transform:uppercase; color:var(--ink-3);
  padding-inline:22px; white-space:nowrap;
  display:flex; align-items:center; gap:22px;
}
.ticker span::after{ content:""; width:6px; height:6px; background:var(--gold); transform:rotate(45deg); flex:none; }
@keyframes slide-x{ from{ transform:translateX(0) } to{ transform:translateX(-50%) } }
@media (prefers-reduced-motion: reduce){ .ticker__track{ animation:none } }

/* ==========================================================================
   PRODUCT CARDS — richer treatment
   ========================================================================== */
.pcard{ position:relative; overflow:hidden; }
.pcard__fig{ aspect-ratio:16/11; position:relative; }
.pcard__fig::after{
  content:""; position:absolute; inset:0;
  background:linear-gradient(0deg, rgba(10,8,5,.55), rgba(10,8,5,0) 55%);
  opacity:0; transition:opacity .35s ease;
}
a.pcard:hover .pcard__fig::after{ opacity:1; }
a.pcard:hover .pcard__fig img{ transform:scale(1.07); }
.pcard__fig img{ transition:transform .8s cubic-bezier(.2,.7,.3,1); }
.pcard__no{
  position:absolute; top:0; left:0; z-index:2;
  font-family:"IBM Plex Mono",monospace; font-size:.62rem; letter-spacing:.16em;
  background:var(--band); color:var(--gold-lift);
  padding:7px 11px;
}
a.pcard::before{
  content:""; position:absolute; inset:0; z-index:3; pointer-events:none;
  border:0 solid var(--gold);
  transition:border-width .18s ease;
}
a.pcard:hover::before{ border-width:2px; }
a.pcard:hover{ transform:translateY(-5px); }

/* ==========================================================================
   INDUSTRIES CAROUSEL
   ========================================================================== */
.icar{ position:relative; }
.icar__track{
  display:grid;
  grid-auto-flow:column;
  grid-auto-columns:minmax(286px, 30%);
  gap:clamp(14px,1.8vw,22px);
  overflow-x:auto;
  scroll-snap-type:x mandatory;
  scroll-behavior:smooth;
  padding-bottom:6px;
  scrollbar-width:none;
}
.icar__track::-webkit-scrollbar{ display:none; }
@media (max-width:760px){ .icar__track{ grid-auto-columns:minmax(240px, 78%); } }
.icard{
  scroll-snap-align:start;
  position:relative;
  display:block; text-decoration:none; color:inherit;
  border:1px solid var(--rule);
  background:var(--surface);
  overflow:hidden;
}
.icard__fig{ aspect-ratio:4/3; overflow:hidden; position:relative; }
.icard__fig img{ width:100%; height:100%; object-fit:cover; transition:transform .8s cubic-bezier(.2,.7,.3,1); }
.icard:hover .icard__fig img{ transform:scale(1.06); }
.icard__fig::after{
  content:""; position:absolute; inset:0;
  background:linear-gradient(0deg, rgba(10,8,5,.82) 0%, rgba(10,8,5,.12) 58%, rgba(10,8,5,0) 100%);
}
.icard__tag{
  position:absolute; left:0; bottom:0; z-index:2; width:100%;
  padding:16px 18px;
  color:#FFFCF5;
  font-family:"Archivo",Arial,sans-serif; font-weight:700; font-stretch:106%;
  font-size:1.08rem; letter-spacing:-.01em;
}
.icard__n{
  position:absolute; top:0; right:0; z-index:2;
  font-family:"IBM Plex Mono",monospace; font-size:.62rem; letter-spacing:.14em;
  background:rgba(10,8,5,.62); color:var(--gold-lift); padding:7px 10px;
}
.icard__body{ padding:18px 18px 20px; }
.icard__body p{ font-size:.9rem; color:var(--ink-3); line-height:1.58; }
.icard__more{
  margin-top:14px; display:flex; align-items:center; gap:8px;
  font-family:"Archivo",Arial,sans-serif; font-weight:700; font-size:.74rem;
  letter-spacing:.06em; text-transform:uppercase; color:var(--ink);
}
.icard__more::after{ content:"→"; color:var(--gold); transition:transform .18s ease; }
.icard:hover .icard__more::after{ transform:translateX(4px); }

.carnav{ display:flex; align-items:center; gap:10px; }
.carbtn{
  width:42px; height:42px; flex:none; display:grid; place-items:center;
  background:transparent; border:1px solid var(--rule-strong); color:var(--ink);
  cursor:pointer; transition:background .16s ease, color .16s ease, border-color .16s ease;
}
.carbtn:hover:not(:disabled){ background:var(--ink); color:var(--paper); border-color:var(--ink); }
.carbtn:disabled{ opacity:.3; cursor:default; }
.carbtn svg{ width:16px; height:16px; }
.carrail{ height:2px; background:var(--rule); margin-top:22px; position:relative; overflow:hidden; }
.carrail i{ position:absolute; inset-block:0; left:0; background:var(--gold-bright); width:30%; transition:transform .2s ease; }

/* ==========================================================================
   TEAM CARDS
   ========================================================================== */
.team{ display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:0; border:1px solid var(--band-rule); }
@media (max-width:1000px){ .team{ grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:560px){ .team{ grid-template-columns:1fr; } }
.team article{
  padding:clamp(24px,2.6vw,32px);
  border-left:1px solid var(--band-rule);
  position:relative; overflow:hidden;
  transition:background .3s ease;
}
.team article:first-child{ border-left:0; }
@media (max-width:1000px){
  .team article:nth-child(odd){ border-left:0; }
  .team article:nth-child(n+3){ border-top:1px solid var(--band-rule); }
}
@media (max-width:560px){
  .team article{ border-left:0; border-top:1px solid var(--band-rule); }
  .team article:first-child{ border-top:0; }
}
.team article:hover{ background:rgba(227,184,92,.05); }
.team__mono{
  width:58px; height:58px; display:grid; place-items:center;
  border:1px solid var(--gold); color:var(--gold-lift);
  font-family:"Archivo",Arial,sans-serif; font-weight:800; font-stretch:112%;
  font-size:1.12rem; letter-spacing:.06em;
  margin-bottom:20px;
}
.team__role{
  font-family:"IBM Plex Mono",monospace; font-size:.62rem;
  letter-spacing:.16em; text-transform:uppercase; color:var(--gold-lift);
}
.team h3{ margin:10px 0 4px; font-size:1.12rem; color:var(--band-text); }
.team__loc{
  font-family:"IBM Plex Mono",monospace; font-size:.63rem;
  letter-spacing:.1em; color:var(--band-muted); margin-bottom:14px;
}
.team p{ font-size:.88rem; line-height:1.62; color:var(--band-muted); }

/* ==========================================================================
   PROCESS FLOW — numbered rail + hover
   ========================================================================== */
.flow__step{ position:relative; transition:background .25s ease; }
.flow__step::after{
  content:""; position:absolute; left:0; top:0; height:2px; width:0;
  background:var(--gold-bright); transition:width .4s cubic-bezier(.2,.7,.3,1);
}
.flow__step:hover{ background:var(--paper-2); }
.flow__step:hover::after{ width:100%; }
.flow__n{ display:flex; align-items:center; gap:9px; }
.flow__n::after{ content:""; height:1px; flex:1; background:var(--rule); }

/* ==========================================================================
   INTERIOR PAGE HERO — image banner
   ========================================================================== */
.phx{
  position:relative; background:var(--band); color:var(--band-text);
  overflow:hidden; isolation:isolate;
}
.phx__bg{ position:absolute; inset:0; }
.phx__bg img{ width:100%; height:100%; object-fit:cover; filter:saturate(.85); transform:scale(1.04); }
.phx__bg::after{
  content:""; position:absolute; inset:0;
  background:linear-gradient(95deg, rgba(10,8,5,.94) 0%, rgba(10,8,5,.82) 45%, rgba(10,8,5,.5) 100%);
}
.phx__bg::before{
  content:""; position:absolute; inset:0; z-index:2;
  background-image:radial-gradient(rgba(255,255,255,.14) .6px, transparent .7px);
  background-size:4px 4px; opacity:.28; mix-blend-mode:overlay;
}
.phx__in{
  position:relative; z-index:3;
  padding-block:clamp(58px,8vw,110px);
  display:grid; gap:18px;
}
.phx h1{ color:#FFFCF5; font-size:clamp(2.1rem,1.5rem+2.6vw,3.6rem); letter-spacing:-.028em; max-width:20ch; }
.phx .lede{ color:#E6DED0; max-width:58ch; }
.phx .crumb{ color:var(--band-muted); }
.phx .crumb a{ color:var(--band-muted); }
.phx .crumb a:hover{ color:var(--gold-lift); }

/* ==========================================================================
   MISC — quote band, back to top, figure captions, section index
   ========================================================================== */
.pull{
  border-left:3px solid var(--gold-bright);
  padding:6px 0 6px 22px;
  font-size:clamp(1.18rem,1.05rem+.7vw,1.65rem);
  line-height:1.38; letter-spacing:-.012em;
  font-family:"Archivo",Arial,sans-serif; font-weight:600; font-stretch:104%;
  max-width:30ch;
}

.figframe{ margin:0; position:relative; overflow:hidden; }
.figframe img{ width:100%; display:block; transition:transform 1.1s cubic-bezier(.2,.7,.3,1); }
.figframe:hover img{ transform:scale(1.035); }
.figframe__tag{
  position:absolute; left:0; bottom:0;
  background:var(--band); color:var(--band-text);
  font-family:"IBM Plex Mono",monospace; font-size:.63rem;
  letter-spacing:.14em; text-transform:uppercase; padding:8px 13px;
}

.totop{
  position:fixed; right:clamp(14px,2.4vw,28px); bottom:clamp(14px,2.4vw,28px);
  width:46px; height:46px; z-index:70;
  display:grid; place-items:center;
  background:var(--ink); color:var(--paper);
  border:0; cursor:pointer;
  opacity:0; transform:translateY(14px); pointer-events:none;
  transition:opacity .3s ease, transform .3s ease, background .16s ease;
}
.totop.is-on{ opacity:1; transform:none; pointer-events:auto; }
.totop:hover{ background:var(--gold); color:#17130D; }
.totop svg{ width:16px; height:16px; }

.sechead__idx{
  font-family:"IBM Plex Mono",monospace; font-size:.66rem;
  letter-spacing:.18em; color:var(--ink-3);
}

/* split image treatment upgrade */
.split .figframe img{ border:1px solid var(--rule); }
.band--ink .split .figframe img{ border-color:var(--band-rule); }

/* mkt tiles gain a hover lift */
.mkt article{ transition:background .25s ease, transform .25s ease; }
.mkt article:hover{ background:var(--paper-2); }

/* speclist reveal stagger helper */
.speclist li{ transition:padding-left .2s ease; }
.speclist li:hover{ padding-left:5px; }

/* dark-mode: heroes already sit on ink, keep the scrim honest */
@media (prefers-reduced-motion: reduce){
  .hx__media img,.hx__slide,.hx h1 span b,.hx__lede,.hx__btns{ transition:none !important; transform:none !important; }
  [data-rev]{ opacity:1 !important; transform:none !important; }
}

/* ==========================================================================
   FIXES & REFINEMENTS (pass 2)
   ========================================================================== */

/* section head: real two-column split that does not wrap at desktop */
.sechead--split{
  display:grid;
  grid-template-columns:minmax(0,1.08fr) minmax(0,.92fr);
  align-items:end;
  gap:clamp(24px,4vw,56px);
}
.sechead--split > *{ min-width:0; }
.sechead--split h2{ max-width:22ch; }
.sechead--split .lede{ max-width:100%; }
@media (max-width:900px){
  .sechead--split{ grid-template-columns:1fr; align-items:start; }
}
.sechead--split .carnav{ justify-content:flex-end; }
@media (max-width:900px){ .sechead--split .carnav{ justify-content:flex-start; } }

/* hero caption must clear the control bar */
.hx__cap{ bottom:74px; right:0; }
@media (max-width:900px){ .hx__cap{ display:none; } }

/* counter suffix */
.counters b i{
  font-family:"IBM Plex Mono",monospace;
  font-style:normal; font-weight:500;
  font-size:.26em; letter-spacing:.1em; text-transform:uppercase;
  margin-left:.28em; vertical-align:.78em;
  color:var(--gold);
}

/* industries carousel: equal-height cards */
.icar__track{ align-items:stretch; }
.icard{ display:flex; flex-direction:column; height:100%; }
.icard__body{ display:flex; flex-direction:column; flex:1; }
.icard__more{ margin-top:auto; padding-top:14px; }

/* "why" cards get a numbered rule, so the last band is not four plain paragraphs */
.whygrid{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:0; border-top:1px solid var(--rule); }
@media (max-width:760px){ .whygrid{ grid-template-columns:1fr; } }
.whygrid article{
  padding:clamp(26px,3vw,38px) clamp(20px,2.6vw,34px);
  border-bottom:1px solid var(--rule);
  border-left:1px solid var(--rule);
  position:relative; transition:background .25s ease;
}
.whygrid article:nth-child(odd){ border-left:0; }
@media (max-width:760px){ .whygrid article{ border-left:0; } }
.whygrid article:hover{ background:var(--surface); }
.whygrid .w-n{
  font-family:"IBM Plex Mono",monospace; font-size:.66rem; letter-spacing:.16em;
  color:var(--gold); display:flex; align-items:center; gap:10px; margin-bottom:14px;
}
.whygrid .w-n::after{ content:""; height:1px; flex:1; background:var(--rule); }
.whygrid h3{ margin-bottom:10px; }
.whygrid p{ color:var(--ink-3); font-size:.95rem; line-height:1.62; max-width:46ch; }

/* keep split figures from floating when the text column is much taller */
.split > div{ min-width:0; }
.figframe img{ width:100%; }

/* team card typography: tighten the hierarchy */
.team h3{ font-size:1.06rem; line-height:1.2; }
.team__loc{ margin-top:6px; }

/* gallery captions wrap tidily */
.gal figcaption{ min-height:3.1em; display:flex; align-items:center; }

/* counter suffix, legible */
.counters b i{
  font-size:.32em; vertical-align:.68em; margin-left:.24em;
  color:var(--band-text); opacity:.8; letter-spacing:.06em;
}
.team h3{ font-size:1.16rem; margin-top:12px; }

/* splits where the figure should match the height of a long text column */
.split--fill{ align-items:stretch; }
.split--fill > div{ display:flex; flex-direction:column; }
.split--fill .figframe{ flex:1; min-height:280px; }
.split--fill .figframe img{ height:100%; object-fit:cover; }
@media (max-width:760px){ .split--fill .figframe{ min-height:220px; } }

/* ---------- Safety: no sideways scroll, and headline sizes that hold at 360px */
html{ overflow-x:clip; }
.hx h1{ font-size:clamp(2.15rem, 1.35rem + 4.4vw, 5.2rem); }
.phx h1{ font-size:clamp(1.85rem, 1.35rem + 2.6vw, 3.6rem); }
h1,h2,h3{ overflow-wrap:break-word; }
@media (max-width:420px){
  .hx__viewport,.hx__in{ min-height:clamp(470px,86vh,700px); }
  .btn{ padding:12px 18px; font-size:.8rem; }
}
.site-head{ background:color-mix(in srgb, var(--paper) 95%, transparent); }
.site-head.is-stuck{ background:color-mix(in srgb, var(--paper) 98%, transparent); }

/* ==========================================================================
   HERO FIX — the slide box must grow with its content
   Previously each slide was absolutely positioned inside a fixed-height
   viewport, so on a short laptop window (under ~800px tall) the headline
   block overflowed and sat on top of the slide controls. Stacking the
   slides in one grid cell instead lets the tallest slide set the height,
   so nothing can ever collide with the control bar.
   ========================================================================== */
.hx__viewport{ display:grid; grid-template-columns:minmax(0,1fr); }
.hx__slide{
  grid-column:1; grid-row:1;
  position:relative; inset:auto;
}
.hx__in{
  min-height:clamp(460px, 74vh, 760px);
  padding-block:clamp(64px,8vw,110px) clamp(112px,13vw,150px);
}
.hx__viewport{ min-height:clamp(460px, 74vh, 760px); }

/* short laptop windows: bring the type down so the slide stays one screen */
@media (min-width:900px) and (max-height:860px){
  .hx h1{ font-size:clamp(2.2rem, .9rem + 2.9vw, 3.7rem); }
  .hx__lede{ font-size:1.02rem; margin-top:16px; max-width:52ch; }
  .hx__btns{ margin-top:24px; }
  .hx__in{
    min-height:0;
    padding-block:clamp(44px,5vh,72px) clamp(104px,12vh,124px);
  }
  .hx__viewport{ min-height:0; }
}
@media (min-width:900px) and (max-height:700px){
  .hx h1{ font-size:2.2rem; }
  .hx__lede{ font-size:.98rem; max-width:56ch; }
}

/* short windows: still fill the screen, just without the collision */
@media (min-width:900px) and (max-height:860px){
  .hx__in{ min-height:max(420px, calc(100dvh - 224px)); }
}

/* phones: keep the slider controls to a single row so the copy always clears them */
@media (max-width:640px){
  .hx__dots{ flex:1 1 110px; min-width:0; gap:5px; }
  .hx__arrow{ width:38px; height:38px; }
  .hx__arrows{ gap:6px; }
  .hx__ui-in{ flex-wrap:nowrap; gap:12px; padding-block:10px; }
  .hx__in{ padding-block:clamp(52px,9vw,90px) 118px; }
}
