/* Self-hosted fonts (latin subset, woff2). Replaces the Google Fonts
   network request: no third-party call, no visitor IP to Google (GDPR). */
@font-face{font-family:'Archivo';font-style:normal;font-weight:400 700;font-display:swap;src:url(/assets/fonts/archivo-var.woff2) format('woff2')}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:swap;src:url(/assets/fonts/ibm-plex-mono-400.woff2) format('woff2')}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:500;font-display:swap;src:url(/assets/fonts/ibm-plex-mono-500.woff2) format('woff2')}
@font-face{font-family:'Inter';font-style:normal;font-weight:300 500;font-display:swap;src:url(/assets/fonts/inter-var.woff2) format('woff2')}
@font-face{font-family:'Michroma';font-style:normal;font-weight:400;font-display:swap;src:url(/assets/fonts/michroma-400.woff2) format('woff2')}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
  --brown:#62413E; --cream:#E4E2DC; --grey:#A4A4A2;
  --esp-1:#4A3230; --esp-2:#332524; --esp-3:#241B1A; --esp-4:#1B1413;
  --red:#A2202F; --red-deep:#7C1622;
  --cream-70:rgba(228,226,220,.70); --cream-45:rgba(228,226,220,.45); --cream-25:rgba(228,226,220,.25);
  --ink:#2E2321; --ink-65:rgba(46,35,33,.65); --ink-40:rgba(46,35,33,.40);
  --hair-d:rgba(228,226,220,.13); --hair-l:rgba(46,35,33,.13);
  --display:'Archivo',sans-serif; --mono:'IBM Plex Mono',monospace; --body:'Inter',sans-serif;
  --gut:clamp(26px,5.4vw,92px);
}
html{scroll-behavior:smooth}
body{font-family:var(--body);background:var(--esp-4);color:var(--cream);overflow-x:hidden;-webkit-font-smoothing:antialiased}
body.locked{overflow:hidden;height:100vh}

.display{font-family:var(--display);font-weight:700;text-transform:uppercase;letter-spacing:-.005em;line-height:1.02;font-size:clamp(29px,4.5vw,60px)}
.lede{font-size:15px;line-height:1.9;font-weight:300;color:var(--cream-70);max-width:33em}

#loader{position:fixed;inset:0;z-index:200;background:var(--cream);transition:opacity .45s}
#loader.gone{opacity:0;pointer-events:none}
.curtain{position:fixed;top:0;height:100vh;width:50.3vw;z-index:190;background:var(--cream);transition:transform 1.45s cubic-bezier(.76,0,.24,1)}
.curtain.l{left:0} .curtain.r{right:0}
.curtain.open.l{transform:translateX(-101%)} .curtain.open.r{transform:translateX(101%)}
#loadTag{position:fixed;left:var(--gut);bottom:46px;z-index:212;font-family:var(--mono);font-size:9px;letter-spacing:.3em;color:rgba(46,35,33,.38);text-transform:uppercase;transition:opacity .4s}
#loadTag.gone{opacity:0}

#field{position:fixed;inset:0;pointer-events:none;z-index:210}
#field.behind{z-index:2}

nav{position:fixed;top:0;left:0;right:0;z-index:100;display:flex;align-items:center;justify-content:space-between;padding:24px var(--gut);opacity:0;transition:opacity .7s ease .3s}
nav.up{opacity:1}
.brand{font-family:var(--display);font-weight:700;font-size:13px;letter-spacing:.32em;text-transform:uppercase;text-decoration:none;color:var(--cream);display:flex;align-items:center;gap:10px;transition:color .5s}
.brand .pt{width:5px;height:5px;border-radius:50%;background:var(--red);flex:none}
.navlinks{display:flex;gap:clamp(15px,2.3vw,34px)}
.navlinks a{font-family:var(--mono);font-size:9.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--cream-45);text-decoration:none;transition:color .3s}
.navlinks a:hover{color:var(--cream)}
nav.onlight .brand{color:var(--ink)}
nav.onlight .navlinks a{color:var(--ink-40)}
nav.onlight .navlinks a:hover{color:var(--ink)}
@media(max-width:860px){.navlinks{display:none}}

section{position:static;padding:0 var(--gut)}
.inner{position:relative;z-index:3}
.eyebrow{display:flex;align-items:center;gap:18px;padding-top:clamp(64px,11vh,128px);margin-bottom:clamp(30px,5vh,54px)}
.eyebrow .n{font-family:var(--mono);font-size:10px;letter-spacing:.2em;color:var(--red)}
.eyebrow .t{font-family:var(--mono);font-size:10px;letter-spacing:.26em;text-transform:uppercase;color:var(--cream)}
.eyebrow .rule{flex:1;height:1px;background:var(--hair-d)}
.light .eyebrow .t{color:var(--ink)}
.light .eyebrow .rule{background:var(--hair-l)}
.rv{opacity:0;transform:translateY(22px);transition:opacity 1s cubic-bezier(.22,1,.36,1),transform 1s cubic-bezier(.22,1,.36,1)}
.rv.in{opacity:1;transform:none}
.fs{color:var(--red)}

#hero{background:radial-gradient(150% 110% at 76% 6%, rgba(98,65,62,.92) 0%, rgba(98,65,62,0) 55%),linear-gradient(157deg,#553936 0%,#3A2A28 42%,#261D1B 78%,#1E1716 100%)}
.hero-shell{position:relative;z-index:3;min-height:100vh;display:flex;flex-direction:column;justify-content:center}
.hero-coords{position:absolute;top:clamp(88px,11vh,116px);left:0;font-family:var(--mono);font-size:9.5px;letter-spacing:.2em;color:var(--cream-25);text-transform:uppercase}
.hero-copy{max-width:min(660px,48vw)}
@media(max-width:940px){.hero-copy{max-width:100%}}
.hero-tag{font-family:var(--mono);font-size:10px;letter-spacing:.34em;color:var(--cream-25);text-transform:uppercase;margin-bottom:28px}
#hero h1{font-family:var(--display);font-weight:700;text-transform:uppercase;font-size:clamp(30px,4.6vw,58px);line-height:1.03;letter-spacing:-.008em;margin-bottom:28px}
.hero-sub{margin-bottom:40px}
.cta{display:inline-block;padding:16px 36px;border:1px solid var(--cream-25);font-family:var(--mono);font-size:10.5px;letter-spacing:.22em;text-transform:uppercase;color:var(--cream);text-decoration:none;transition:background .4s,border-color .4s,color .4s}
.cta:hover{background:var(--red);border-color:var(--red);color:#fff}
.hero-cited{margin-top:46px;font-family:var(--mono);font-size:9.5px;letter-spacing:.18em;color:var(--cream-25);text-transform:uppercase}
.hero-foot{position:absolute;left:0;right:0;bottom:40px;display:flex;justify-content:space-between;align-items:center;font-family:var(--mono);font-size:9px;letter-spacing:.26em;color:var(--cream-25);text-transform:uppercase}
.scrollcue{display:flex;align-items:center;gap:12px}
.scrollcue i{display:block;width:1px;height:32px;background:var(--cream-25);animation:drop 2.6s ease-in-out infinite}
@keyframes drop{0%,100%{transform:scaleY(.25);transform-origin:top}50%{transform:scaleY(1);transform-origin:top}}
.coord{position:fixed;z-index:4;pointer-events:none;font-family:var(--mono);font-size:10px;letter-spacing:.16em;color:var(--cream);text-transform:uppercase;white-space:nowrap;opacity:0;transform:translateX(-6px);transition:opacity .35s,transform .35s}
.coord.on{opacity:1;transform:none}
.coord::before{content:"";position:absolute;left:-16px;top:50%;width:10px;height:1px;background:var(--red)}

#serve{background:var(--cream);color:var(--ink);padding-bottom:clamp(84px,15vh,180px)}
#serve h2{color:var(--ink);margin-bottom:clamp(60px,10vh,120px)}
.doors{display:grid;grid-template-columns:repeat(3,1fr);gap:0}
.door{padding:0 clamp(18px,2.6vw,46px);border-left:1px solid var(--hair-l);display:flex;flex-direction:column}
.door:first-child{border-left:none;padding-left:0}
.sigspace{height:clamp(140px,20vh,190px);margin-bottom:32px}
.kick{display:block;width:28px;height:2px;background:var(--red);margin-bottom:18px}
.door h3{font-family:var(--display);font-weight:600;font-size:11.5px;letter-spacing:.26em;text-transform:uppercase;margin-bottom:16px;color:var(--ink)}
.door p{font-size:14px;line-height:1.85;font-weight:300;color:var(--ink-65);margin-bottom:auto}
.go{display:inline-flex;align-items:center;gap:11px;margin-top:34px;font-family:var(--mono);font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--red);text-decoration:none;padding:10px 2px}
.go i{position:relative;display:block;width:0;height:1px;background:var(--red);transition:width .45s cubic-bezier(.22,1,.36,1)}
.go i::after{content:"";position:absolute;right:-1px;top:-3.5px;width:0;height:0;
  border-left:7px solid var(--red);border-top:4px solid transparent;border-bottom:4px solid transparent;
  opacity:0;transition:opacity .28s ease .14s}
.go:hover i::after{opacity:1}
.go:hover i{width:40px}
@media(max-width:880px){
  .doors{grid-template-columns:1fr}
  .door{border-left:none;border-top:1px solid var(--hair-l);padding:36px 0}
  .door:first-child{border-top:none;padding-top:0}
  .sigspace{height:120px}
}

#disc{background:var(--cream);color:var(--ink);padding-bottom:clamp(96px,17vh,200px)}
#disc h2{color:var(--ink);margin-bottom:clamp(54px,9vh,104px)}
.seam{position:relative;height:1px;margin-bottom:clamp(46px,7vh,80px)}
.dcols{display:grid;grid-template-columns:repeat(4,1fr);gap:0}
.dcol{padding:0 clamp(16px,2.2vw,40px);border-left:1px solid var(--hair-l);text-decoration:none;color:inherit;display:flex;flex-direction:column;min-height:clamp(190px,26vh,260px);opacity:0;transform:translateY(18px);transition:opacity .9s cubic-bezier(.22,1,.36,1),transform .9s cubic-bezier(.22,1,.36,1)}
.dcol.in{opacity:1;transform:none}
.dcol:first-child{border-left:none;padding-left:0}
.dcol .no{font-family:var(--mono);font-size:9.5px;letter-spacing:.2em;color:var(--red);margin-bottom:14px}
.dcol .nm{font-family:var(--display);font-weight:700;text-transform:uppercase;font-size:clamp(15px,1.5vw,20px);letter-spacing:.01em;line-height:1.15;margin-bottom:16px;color:var(--ink);transition:color .35s}
.dcol .ds{font-size:13.5px;line-height:1.85;font-weight:300;color:var(--ink-65);margin-bottom:auto}
.dcol .lk{margin-top:26px;font-family:var(--mono);font-size:9.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--red);display:inline-flex;align-items:center;gap:9px}
.dcol .lk i{position:relative;display:block;width:0;height:1px;background:var(--red);transition:width .45s cubic-bezier(.22,1,.36,1)}
.dcol .lk i::after{content:"";position:absolute;right:-1px;top:-3.5px;width:0;height:0;
  border-left:7px solid var(--red);border-top:4px solid transparent;border-bottom:4px solid transparent;
  opacity:0;transition:opacity .28s ease .14s}
.dcol:hover .lk i::after{opacity:1}
.dcol:hover .lk i{width:36px}
.dcol:hover .nm{color:var(--red)}
@media(max-width:980px){
  .dcols{grid-template-columns:repeat(2,1fr)}
  .dcol{padding:30px clamp(16px,2.2vw,40px);border-top:1px solid var(--hair-l);min-height:0}
  .dcol:nth-child(-n+2){border-top:none}
  .dcol:nth-child(odd){border-left:none;padding-left:0}
}
@media(max-width:620px){
  .dcols{grid-template-columns:1fr}
  .dcol{border-left:none;padding-left:0;padding-right:0}
  .dcol:nth-child(2){border-top:1px solid var(--hair-l)}
}

/* ── platform: two products, registration marks (2026-08 revision) ── */
#platform{position:relative;background:radial-gradient(130% 90% at 88% 4%, rgba(98,65,62,.85) 0%, rgba(98,65,62,0) 52%),linear-gradient(168deg,#402E2C 0%,#2B2120 46%,#1E1716 100%);padding:clamp(90px,14vh,160px) var(--gut) clamp(90px,14vh,170px)}
.plat-lattice{position:absolute;inset:0;pointer-events:none;z-index:-1;background-image:linear-gradient(rgba(228,226,220,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(228,226,220,.035) 1px,transparent 1px);background-size:88px 88px;mask-image:linear-gradient(180deg,transparent,#000 12%,#000 86%,transparent)}
.plat-wrap{display:grid;grid-template-columns:minmax(260px,.85fr) 1.35fr;gap:clamp(30px,5vw,84px);align-items:start;perspective:1700px}
.plat-copy{position:sticky;top:26vh;padding-bottom:0;align-self:start}
.plat-copy h2{margin-bottom:26px}
.plat-copy h2 .l2{display:block;color:var(--red)}
.plat-tools{margin:28px 0 22px;font-family:var(--mono);font-size:10.5px;letter-spacing:.22em;color:var(--red);text-transform:uppercase}
.plat-note{font-size:13.5px;line-height:1.9;font-weight:300;color:var(--cream-70);max-width:31em;padding-top:22px;border-top:1px solid var(--hair-d)}
/* 190vh with a 100vh pin leaves a 90vh runway for two products, and the
   second segment runs to 1.0 — so the section releases the moment the
   sequence finishes. The original 300vh stage ended its last segment at
   90% and then held pinned and motionless through ~180px of dead scroll,
   which read as the bottom of the page. */
.plat-stack{position:relative;height:190vh;padding:0}
.plat-pin{position:sticky;top:0;height:100vh;display:block}
/* Two products, not three — so each one gets more room. The first sits
   high and flush left, the second overlaps it low and right, so the pair
   reads as a stack being built rather than a gallery. */
.screen{position:absolute;width:86%;left:0;will-change:transform,opacity;transform-origin:50% 50%}
.screen:nth-child(1){top:9%;left:0;z-index:1}
.screen:nth-child(2){top:46%;left:14%;z-index:2}
/* The screenshots used to carry a pale header band inside the image, and
   the caption sat on it. That band is trimmed off these exports, so the
   frame supplies its own — otherwise the label lands on dark map content
   and cannot be read. */
.frame{position:relative;border-radius:15px;padding-top:34px;background:#E9E7E1;
  box-shadow:0 44px 100px rgba(0,0,0,.6),0 8px 24px rgba(0,0,0,.35);
  will-change:clip-path,filter}
.frame img{width:100%;display:block;border-radius:0 0 14px 14px;will-change:transform;transform-origin:0 50%}
.sweep{position:absolute;top:34px;bottom:6px;width:1px;background:var(--red);
  box-shadow:0 0 26px 4px rgba(162,32,47,.75);z-index:4;pointer-events:none;
  opacity:0;transition:opacity .25s}
.capbar{position:absolute;top:0;left:0;right:0;height:34px;z-index:3;
  display:flex;align-items:center;gap:14px;padding:0 3.2%;
  font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;
  pointer-events:none;overflow:hidden}
.capbar b{color:var(--red);font-weight:500;flex:none}
.capbar span{color:rgba(46,35,33,.58);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

@media(max-width:940px){
  .plat-wrap{grid-template-columns:1fr;perspective:1700px}
  .plat-copy{position:static;padding-bottom:0}
  .plat-stack{padding:6vh 0 10vh;gap:60px;height:auto}
  /* stacked and centred — the pinned 300vh stage is a desktop device.
     On a phone the three screenshots sit in normal flow, centred, with
     equal air above and below each. */
  .plat-pin{position:static;height:auto;display:flex;flex-direction:column;
    align-items:center;justify-content:center;
    gap:clamp(54px,10vh,104px);padding:clamp(46px,9vh,96px) 0}
  .screen,
  .screen:nth-child(1),.screen:nth-child(2){
    position:static;top:auto;left:auto;width:94%;max-width:560px;margin:0 auto}
}

/* ══ REGISTRATION MARKS ═══════════════════════════════════════════════
   The concept: the grid is a registration system, and the PARTICLE FIELD
   is what does the registering.

   The site's field falls continuously from the top of the page down to
   the footer, where it forms the REDPOINT wordmark. Passing through this
   section it has a job: it gathers into precise corner brackets and a
   crosshair at the exact coordinates where each product will land, holds
   while the product locks in, then releases and flows down to register
   the next one — and onward out of the section afterwards.

   One field, doing precise work three times, then moving on. Precision is
   demonstrated rather than claimed, the dots keep their through-line, and
   every mark belongs to a specific product.

   Only two things here are DOM: the ghost outline that persists after a
   product locks (the layer the next one builds on), and the instrument
   label. Everything else is particles.
   ═══════════════════════════════════════════════════════════════════ */
.reg{position:absolute;pointer-events:none;z-index:0;
  border:1px solid rgba(228,226,220,0)}
.rlab{position:absolute;top:-19px;left:0;white-space:nowrap;
  font-family:var(--mono);font-size:8.5px;letter-spacing:.24em;
  text-transform:uppercase;color:rgba(228,226,220,.42)}
.rlab b{color:var(--red);font-weight:500}
@media(max-width:940px){
  .rlab{font-size:7.5px;letter-spacing:.18em}
  .frame{padding-top:26px;border-radius:11px}
  .frame img{border-radius:0 0 10px 10px}
  .capbar{height:26px;font-size:8px;letter-spacing:.12em;gap:9px}
  .sweep{top:26px}
}

/* ═══════════════════

#case{background:var(--cream);color:var(--ink);padding-bottom:clamp(84px,15vh,170px)}
.file-head{display:flex;flex-wrap:wrap;gap:11px 28px;align-items:center;padding-bottom:22px;border-bottom:1px solid var(--hair-l);margin-bottom:48px}
.file-head .cls{font-family:var(--mono);font-size:9px;letter-spacing:.26em;text-transform:uppercase;color:var(--red);border:1px solid var(--red);padding:5px 11px}
.file-head .meta{font-family:var(--mono);font-size:9.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-40)}
#case h2{color:var(--ink);margin-bottom:26px}
.stats{display:flex;flex-wrap:wrap;gap:clamp(28px,5.5vw,68px);margin-bottom:44px}
.stat .v{font-family:var(--display);font-weight:700;font-size:clamp(26px,3.3vw,42px);letter-spacing:-.01em;color:var(--ink)}
.stat .v em{color:var(--red);font-style:normal}
.stat .k{font-family:var(--mono);font-size:9px;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-40);margin-top:6px}
.cta-dark{display:inline-block;padding:16px 36px;background:var(--red);font-family:var(--mono);font-size:10.5px;letter-spacing:.22em;text-transform:uppercase;color:#fff;text-decoration:none;transition:background .35s}
.cta-dark:hover{background:var(--red-deep)}


footer{position:static;padding:0 var(--gut);background:radial-gradient(120% 100% at 60% 34%, rgba(98,65,62,.80) 0%, rgba(98,65,62,0) 58%),linear-gradient(178deg,#3A2A28 0%,#261D1B 52%,#1B1413 100%)}
.foot-shell{position:relative;z-index:3;min-height:100vh;display:flex;flex-direction:column;justify-content:flex-end;padding-bottom:44px}
.foot-main{display:flex;flex-wrap:wrap;gap:34px;justify-content:space-between;align-items:flex-end}
.fbrand{font-family:var(--display);font-weight:700;font-size:clamp(38px,7.4vw,100px);letter-spacing:.05em;text-transform:uppercase;line-height:.92;color:var(--cream)}
.ftag{font-family:var(--mono);font-size:10px;letter-spacing:.3em;text-transform:uppercase;color:var(--cream-25);margin-top:18px}
.fcta{margin-top:34px}
.fmail{margin-top:22px;font-family:var(--mono);font-size:9.5px;letter-spacing:.14em;color:var(--cream-25)}
.flinks{display:flex;flex-direction:column;gap:11px;text-align:right}
.flinks a{font-family:var(--mono);font-size:9.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--cream-45);text-decoration:none;transition:color .3s}
.flinks a:hover{color:var(--cream)}
.fbar{margin-top:clamp(44px,8vh,88px);padding-top:24px;border-top:1px solid var(--hair-d);display:flex;flex-wrap:wrap;gap:14px 32px;justify-content:space-between;font-family:var(--mono);font-size:9px;letter-spacing:.2em;text-transform:uppercase;color:rgba(228,226,220,.22)}
@media(max-width:760px){.flinks{text-align:left}}

@media(prefers-reduced-motion:reduce){
  *{animation:none!important;transition-duration:.01ms!important}
  .rv,.dcol{opacity:1!important;transform:none!important}
  .curtain{display:none}
}

/* ══ inner pages ══ */

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
  --brown:#62413E; --cream:#E4E2DC; --grey:#A4A4A2;
  --esp-1:#4A3230; --esp-2:#332524; --esp-3:#241B1A; --esp-4:#1B1413;
  --red:#C4283A; --red-deep:#7C1622;
  --cream-70:rgba(228,226,220,.82); --cream-45:rgba(228,226,220,.58); --cream-25:rgba(228,226,220,.38);
  --ink:#2E2321; --ink-65:rgba(46,35,33,.74); --ink-40:rgba(46,35,33,.50);
  --hair-d:rgba(228,226,220,.13); --hair-l:rgba(46,35,33,.13);
  --display:'Archivo',sans-serif; --mono:'IBM Plex Mono',monospace; --body:'Inter',sans-serif;
  --gut:clamp(26px,5.4vw,92px);
}
html{scroll-behavior:smooth}
body{font-family:var(--body);background:var(--esp-4);color:var(--cream);overflow-x:hidden;-webkit-font-smoothing:antialiased}
body.locked{overflow:hidden;height:100vh}

.display{font-family:var(--display);font-weight:700;text-transform:uppercase;letter-spacing:-.005em;line-height:1.02;font-size:clamp(29px,4.5vw,60px)}
.lede{font-size:15px;line-height:1.9;font-weight:300;color:var(--cream-70);max-width:33em}
.fs{color:inherit}
a:focus-visible,button:focus-visible{outline:1px solid var(--red);outline-offset:5px}

/* ── loader / curtains / route wipe ── */
#loader{position:fixed;inset:0;z-index:200;background:var(--cream);transition:opacity .45s}
#loader.gone{opacity:0;pointer-events:none}
.curtain{position:fixed;top:0;height:100vh;width:50.3vw;z-index:190;background:var(--cream);transition:transform 1.45s cubic-bezier(.76,0,.24,1)}
.curtain.l{left:0} .curtain.r{right:0}
.curtain.open.l{transform:translateX(-101%)} .curtain.open.r{transform:translateX(101%)}
#loadTag{position:fixed;left:var(--gut);bottom:46px;z-index:212;font-family:var(--mono);font-size:9px;letter-spacing:.3em;color:rgba(46,35,33,.38);text-transform:uppercase;transition:opacity .4s}
#loadTag.gone{opacity:0}
#wipe{position:fixed;inset:0;z-index:150;pointer-events:none;background:var(--esp-3);
  transform:scaleY(0);transform-origin:100% 100%;transition:transform .52s cubic-bezier(.76,0,.24,1)}
#wipe.in{transform:scaleY(1);transform-origin:100% 100%}
#wipe.out{transform:scaleY(0);transform-origin:0 0;transition-duration:.58s}
#wipeTag{position:fixed;left:var(--gut);bottom:44px;z-index:151;font-family:var(--mono);font-size:9px;
  letter-spacing:.3em;text-transform:uppercase;color:var(--cream-25);opacity:0;transition:opacity .3s;pointer-events:none}
#wipeTag.on{opacity:1}

#field{position:fixed;inset:0;pointer-events:none;z-index:210}
#field.behind{z-index:2}

/* ── nav ── */
nav{position:fixed;top:0;left:0;right:0;z-index:160;display:flex;align-items:center;justify-content:space-between;padding:24px var(--gut);opacity:0;transition:opacity .7s ease .3s}
nav.up{opacity:1}
.brand{font-family:'Michroma',var(--display);font-weight:400;font-size:11.5px;letter-spacing:.38em;text-transform:uppercase;text-decoration:none;color:var(--cream);display:flex;align-items:center;gap:10px;transition:color .5s}
.brand .pt{width:5px;height:5px;border-radius:50%;background:var(--red);flex:none}
.navlinks{display:flex;gap:clamp(15px,2.3vw,34px)}
.navlinks a{position:relative;font-family:var(--mono);font-size:9.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--cream-45);text-decoration:none;transition:color .3s;padding-bottom:5px}
.navlinks a:hover{color:var(--cream)}
.navlinks a.act{color:var(--cream)}
.navlinks a.act::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:var(--red)}
nav.onlight .brand{color:var(--ink)}
nav.onlight .navlinks a{color:var(--ink-40)}
nav.onlight .navlinks a:hover,nav.onlight .navlinks a.act{color:var(--ink)}
@media(max-width:860px){.navlinks{display:none}}

/* ── shared section furniture ── */
section{position:static;padding:0 var(--gut)}
.inner{position:relative;z-index:3}
.view{display:none}
.view.on{display:block}
.eyebrow{display:flex;align-items:center;gap:18px;padding-top:clamp(64px,11vh,128px);margin-bottom:clamp(30px,5vh,54px)}
.eyebrow .n{font-family:var(--mono);font-size:10px;letter-spacing:.2em;color:var(--red)}
.eyebrow .t{font-family:var(--mono);font-size:10px;letter-spacing:.26em;text-transform:uppercase;color:var(--cream)}
.eyebrow .rule{flex:1;height:1px;background:var(--hair-d)}
.light .eyebrow .t{color:var(--ink)}
.light .eyebrow .rule{background:var(--hair-l)}
.rv{opacity:0;transform:translateY(22px);transition:opacity 1s cubic-bezier(.22,1,.36,1),transform 1s cubic-bezier(.22,1,.36,1)}
.rv.in{opacity:1;transform:none}

.cta{display:inline-block;padding:16px 36px;border:1px solid var(--cream-25);font-family:var(--mono);font-size:10.5px;letter-spacing:.22em;text-transform:uppercase;color:var(--cream);text-decoration:none;transition:background .4s,border-color .4s,color .4s}
.cta:hover{background:var(--red);border-color:var(--red);color:#fff}
.cta-dark{display:inline-block;padding:16px 36px;background:var(--red);font-family:var(--mono);font-size:10.5px;letter-spacing:.22em;text-transform:uppercase;color:#fff;text-decoration:none;transition:background .35s}
.cta-dark:hover{background:var(--red-deep)}
.cta-line{display:inline-flex;align-items:center;gap:11px;font-family:var(--mono);font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--red);text-decoration:none;padding:10px 2px}
.cta-line i{position:relative;display:block;width:0;height:1px;background:var(--red);transition:width .45s cubic-bezier(.22,1,.36,1)}
.cta-line i::after{content:"";position:absolute;right:-1px;top:-3.5px;width:0;height:0;
  border-left:7px solid var(--red);border-top:4px solid transparent;border-bottom:4px solid transparent;
  opacity:0;transition:opacity .28s ease .14s}
.cta-line:hover i{width:40px}
.cta-line:hover i::after{opacity:1}

.file-head{display:flex;flex-wrap:wrap;gap:11px 28px;align-items:center;padding-bottom:20px;border-bottom:1px solid var(--hair-d);margin-bottom:clamp(34px,5vh,54px)}
.file-head .cls{font-family:var(--mono);font-size:9px;letter-spacing:.26em;text-transform:uppercase;color:var(--red);border:1px solid var(--red);padding:5px 11px}
.file-head .meta{font-family:var(--mono);font-size:9.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--cream-25)}
.light .file-head{border-bottom-color:var(--hair-l)}
.light .file-head .meta{color:var(--ink-40)}

/* ── 02 · services index ── */
#idx{background:radial-gradient(150% 110% at 78% 4%, rgba(98,65,62,.90) 0%, rgba(98,65,62,0) 55%),linear-gradient(157deg,#553936 0%,#3A2A28 44%,#261D1B 80%,#1E1716 100%);padding-bottom:clamp(70px,11vh,130px)}
.idx-head{padding-top:clamp(112px,17vh,178px);max-width:min(760px,62vw)}
@media(max-width:940px){.idx-head{max-width:100%}}
.idx-tag{font-family:var(--mono);font-size:10px;letter-spacing:.34em;color:var(--cream-25);text-transform:uppercase;margin-bottom:26px}
#idx h1{font-family:var(--display);font-weight:700;text-transform:uppercase;font-size:clamp(30px,4.6vw,58px);line-height:1.03;letter-spacing:-.008em;margin-bottom:26px}
.idx-sub{margin-bottom:clamp(46px,8vh,86px)}
.idx-list{border-top:1px solid var(--hair-d)}
.irow{position:relative;display:grid;grid-template-columns:52px minmax(0,1.05fr) minmax(0,1fr) clamp(158px,18vw,258px);
  gap:clamp(14px,2.6vw,48px);align-items:center;min-height:clamp(146px,19vh,208px);
  padding:clamp(22px,3vh,34px) 0;border-bottom:1px solid var(--hair-d);text-decoration:none;color:inherit}
.irow .no{font-family:var(--mono);font-size:10px;letter-spacing:.2em;color:var(--red);align-self:start;padding-top:6px}
.irow .nm{font-family:var(--display);font-weight:700;text-transform:uppercase;line-height:1;
  font-size:clamp(23px,3.5vw,48px);letter-spacing:-.01em;color:var(--cream);transition:color .4s,transform .55s cubic-bezier(.22,1,.36,1)}
.irow .txt{display:flex;flex-direction:column;align-items:flex-start;gap:16px}
.irow .ds{font-size:13.5px;line-height:1.85;font-weight:300;color:var(--cream-45);max-width:32em;transition:color .4s}
.irow .sig{height:clamp(104px,14vh,164px)}
.irow .lk{font-family:var(--mono);font-size:9.5px;
  letter-spacing:.18em;text-transform:uppercase;color:var(--red);display:inline-flex;align-items:center;gap:9px;opacity:0;transition:opacity .4s}
.irow .lk i{position:relative;display:block;width:0;height:1px;background:var(--red);transition:width .5s cubic-bezier(.22,1,.36,1)}
.irow .lk i::after{content:"";position:absolute;right:-1px;top:-3.5px;width:0;height:0;
  border-left:7px solid var(--red);border-top:4px solid transparent;border-bottom:4px solid transparent;
  opacity:0;transition:opacity .28s ease .16s}
.irow:hover .nm{color:var(--red);transform:translateX(10px)}
.irow:hover .ds{color:var(--cream-70)}
.irow:hover .lk{opacity:1}
.irow:hover .lk i{width:40px}
.irow:hover .lk i::after{opacity:1}
@media(max-width:1040px){
  .irow{grid-template-columns:44px minmax(0,1fr);row-gap:14px;min-height:0;align-items:start}
  .irow .no{padding-top:4px}
  .irow .txt{grid-column:2}
  .irow .sig{display:none}
  .irow .lk{opacity:1}
  .irow{padding-bottom:44px}
  .irow .lk i{width:28px}
  .irow:hover .nm{transform:none}
}
/* services collapsed into one page: each discipline expands in place */
.svc-panel{display:none}
.svc-panel.on{display:block}
.irow.open .nm{color:var(--red)}
.irow.open .lk{opacity:1}
.irow.open .lk i{width:40px;transform:rotate(90deg);transform-origin:left center}
.svc-panel .body-l .display+.display{margin-top:clamp(40px,7vh,72px)}

/* ── service hero ── */
.shero{background:radial-gradient(140% 105% at 74% 6%, rgba(98,65,62,.90) 0%, rgba(98,65,62,0) 54%),linear-gradient(157deg,#553936 0%,#3A2A28 42%,#261D1B 78%,#1E1716 100%);padding-bottom:clamp(60px,9vh,110px)}
.shero-shell{position:relative;z-index:3;min-height:clamp(520px,88vh,880px);display:flex;flex-direction:column;justify-content:center;padding-top:clamp(96px,13vh,150px)}
.shero-copy{max-width:min(640px,50vw)}
@media(max-width:1040px){.shero-copy{max-width:100%}}
.crumb{display:inline-flex;align-items:center;gap:10px;font-family:var(--mono);font-size:9.5px;letter-spacing:.22em;
  text-transform:uppercase;color:var(--cream-25);text-decoration:none;margin-bottom:26px;transition:color .3s}
.crumb:hover{color:var(--cream-70)}
.crumb b{font-weight:400;color:var(--red)}
.shero h1{font-family:var(--display);font-weight:700;text-transform:uppercase;font-size:clamp(25px,3.5vw,45px);line-height:1.06;letter-spacing:-.008em;margin-bottom:26px}
.shero-sub{margin-bottom:38px}
.shero-foot{position:absolute;left:0;right:0;bottom:0;display:flex;justify-content:space-between;align-items:center;
  font-family:var(--mono);font-size:9px;letter-spacing:.26em;color:var(--cream-25);text-transform:uppercase}
.scrollcue{display:flex;align-items:center;gap:12px}
.scrollcue i{display:block;width:1px;height:32px;background:var(--cream-25);animation:drop 2.6s ease-in-out infinite}
@keyframes drop{0%,100%{transform:scaleY(.25);transform-origin:top}50%{transform:scaleY(1);transform-origin:top}}
.hero-sig{position:absolute;right:0;top:50%;transform:translateY(-50%);width:min(38vw,420px);height:min(38vw,420px)}
@media(max-width:1040px){
  .hero-sig{order:2;position:static;transform:none;width:100%;height:30vh;margin-top:34px}
  .shero-copy{order:1}
  .shero-foot{order:3;position:static;margin-top:36px}
}

/* ── light body ── */
.body-l{background:var(--cream);color:var(--ink);padding-bottom:clamp(80px,14vh,168px)}
.body-l h2{color:var(--ink);margin-bottom:clamp(20px,3vh,34px)}
.sec-note{font-size:14px;line-height:1.9;font-weight:300;color:var(--ink-65);max-width:38em;margin-bottom:clamp(46px,7vh,84px)}
.cards{display:grid;gap:0}
.cards.c2{grid-template-columns:repeat(2,1fr)}
.cards.c3{grid-template-columns:repeat(3,1fr)}
.cards.c4{grid-template-columns:repeat(2,1fr)}
.card{position:relative;padding:0 clamp(18px,2.8vw,50px);border-left:1px solid var(--hair-l);display:flex;flex-direction:column}
.cards.c2 .card:nth-child(odd),.cards.c3 .card:nth-child(3n+1),.cards.c4 .card:nth-child(odd){border-left:none;padding-left:0}
.cards.c4 .card{padding-top:clamp(34px,5vh,54px);padding-bottom:clamp(34px,5vh,54px);border-top:1px solid var(--hair-l)}
.cards.c4 .card:nth-child(-n+2){border-top:none;padding-top:0}
.card .cno{font-family:var(--mono);font-size:9.5px;letter-spacing:.2em;color:var(--red);margin-bottom:16px}
.card h3{font-family:var(--display);font-weight:600;font-size:12px;letter-spacing:.26em;text-transform:uppercase;color:var(--ink);margin-bottom:16px}
.card p{font-size:14px;line-height:1.85;font-weight:300;color:var(--ink-65)}
.card .kick{display:block;width:28px;height:2px;background:var(--red);margin-bottom:20px}
.card ul{list-style:none;margin-top:26px}
.card li{position:relative;padding-left:22px;font-size:13px;line-height:1.6;font-weight:300;color:var(--ink-65);margin-bottom:11px}
.card li::before{content:"";position:absolute;left:0;top:.72em;width:11px;height:1px;background:var(--red)}
.card .cta-line{margin-top:auto;padding-top:32px}
@media(max-width:880px){
  .cards.c2,.cards.c3,.cards.c4{grid-template-columns:1fr}
  .card{border-left:none;padding:34px 0;border-top:1px solid var(--hair-l)}
  .cards.c2 .card:first-child,.cards.c3 .card:first-child,.cards.c4 .card:first-child{border-top:none;padding-top:0}
  .cards.c4 .card:nth-child(2){border-top:1px solid var(--hair-l);padding-top:34px}
}
/* escalating tiers — depth encoded as a rising bar */
.depth{display:flex;gap:4px;margin-bottom:22px}
.depth span{display:block;width:16px;height:2px;background:var(--hair-l)}
.depth span.on{background:var(--red)}

/* products list (geopolitical) */
.plist{border-top:1px solid var(--hair-l)}
.prow{display:grid;grid-template-columns:52px minmax(0,220px) minmax(0,1fr);gap:clamp(14px,2.6vw,44px);
  padding:clamp(26px,3.6vh,38px) 0;border-bottom:1px solid var(--hair-l);align-items:baseline}
.prow .pno{font-family:var(--mono);font-size:9.5px;letter-spacing:.2em;color:var(--red)}
.prow h3{font-family:var(--display);font-weight:700;font-size:clamp(15px,1.5vw,20px);letter-spacing:.01em;
  text-transform:uppercase;color:var(--ink);line-height:1.2}
.prow p{font-size:14px;line-height:1.85;font-weight:300;color:var(--ink-65);max-width:44em}
@media(max-width:880px){.prow{grid-template-columns:40px minmax(0,1fr);row-gap:12px}.prow p{grid-column:2}}

/* ── dark band ── */
.band{background:linear-gradient(168deg,#402E2C 0%,#2B2120 48%,#1E1716 100%);color:var(--cream);
  padding-top:clamp(76px,13vh,150px);padding-bottom:clamp(76px,13vh,150px);position:relative;overflow:hidden}
.band-lattice{position:absolute;inset:0;pointer-events:none;z-index:1;
  background-image:linear-gradient(rgba(228,226,220,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(228,226,220,.035) 1px,transparent 1px);
  background-size:88px 88px;mask-image:linear-gradient(180deg,transparent,#000 14%,#000 84%,transparent)}
.band .stamp{font-family:var(--mono);font-size:9.5px;letter-spacing:.28em;text-transform:uppercase;color:var(--red);margin-bottom:26px}
.band .stmt{font-family:var(--display);font-weight:700;text-transform:uppercase;line-height:1.06;letter-spacing:-.005em;
  font-size:clamp(23px,3.3vw,44px);max-width:17em}
.band .stmt em{font-style:normal;color:var(--red)}
.bandrule{height:1px;background:var(--hair-d);margin:clamp(40px,6vh,66px) 0 clamp(28px,4vh,40px)}
.band .pw{font-family:var(--mono);font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--cream-45);line-height:2.3}
.band .pw b{color:var(--cream);font-weight:400}

/* ── close + pager ── */
.close-l{background:var(--cream);color:var(--ink);padding-top:clamp(74px,12vh,140px);padding-bottom:clamp(50px,7vh,80px)}
.close-l h2{color:var(--ink);max-width:15em;margin-bottom:34px}
.pager{display:flex;flex-wrap:wrap;gap:18px 32px;justify-content:space-between;align-items:center;
  margin-top:clamp(56px,9vh,110px);padding-top:24px;border-top:1px solid var(--hair-l)}
.pager a{font-family:var(--mono);font-size:9.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-40);text-decoration:none;transition:color .3s}
.pager a:hover{color:var(--red)}
.pager .nx{color:var(--ink)}

/* ── trust + footer (carried from v22) ── */
footer{position:static;padding:0 var(--gut);background:radial-gradient(120% 100% at 60% 34%, rgba(98,65,62,.80) 0%, rgba(98,65,62,0) 58%),linear-gradient(178deg,#3A2A28 0%,#261D1B 52%,#1B1413 100%)}
.foot-shell{position:relative;z-index:3;min-height:100vh;display:flex;flex-direction:column;justify-content:flex-end;padding-bottom:44px}
.foot-main{display:flex;flex-wrap:wrap;gap:34px;justify-content:space-between;align-items:flex-end}
.ftag{font-family:var(--mono);font-size:10px;letter-spacing:.3em;text-transform:uppercase;color:var(--cream-25);margin-top:18px}
.fcta{margin-top:34px}
.fmail{margin-top:22px;font-family:var(--mono);font-size:9.5px;letter-spacing:.14em;color:var(--cream-25)}
.flinks{display:flex;flex-direction:column;gap:11px;text-align:right}
.flinks a{font-family:var(--mono);font-size:9.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--cream-45);text-decoration:none;transition:color .3s}
.flinks a:hover{color:var(--cream)}
.fbar{margin-top:clamp(44px,8vh,88px);padding-top:24px;border-top:1px solid var(--hair-d);display:flex;flex-wrap:wrap;gap:14px 32px;justify-content:space-between;font-family:var(--mono);font-size:9px;letter-spacing:.2em;text-transform:uppercase;color:rgba(228,226,220,.22)}
@media(max-width:760px){.flinks{text-align:left}}

@media(prefers-reduced-motion:reduce){
  *{animation:none!important;transition-duration:.01ms!important}
  .rv{opacity:1!important;transform:none!important}
  .curtain{display:none}
}

a,a:visited{text-decoration:none;color:inherit}

.fmail-main{font-family:var(--mono);font-size:clamp(13px,1.5vw,18px);letter-spacing:.08em;color:var(--cream);
  text-decoration:none;border-bottom:1px solid rgba(228,226,220,.22);padding-bottom:5px;transition:color .3s,border-color .3s;display:inline-block;margin-top:28px}
.fmail-main:hover{color:var(--red);border-bottom-color:var(--red)}

/* ── 07 · three doors in ── */
#cdoors{background:radial-gradient(150% 110% at 78% 4%, rgba(98,65,62,.90) 0%, rgba(98,65,62,0) 55%),linear-gradient(157deg,#553936 0%,#3A2A28 44%,#261D1B 80%,#1E1716 100%);padding-bottom:clamp(64px,10vh,120px)}
.dhead{padding-top:clamp(112px,17vh,178px);max-width:min(720px,60vw)}
@media(max-width:940px){.dhead{max-width:100%}}
.dhead .tag{font-family:var(--mono);font-size:10px;letter-spacing:.34em;color:var(--cream-25);text-transform:uppercase;margin-bottom:26px}
#cdoors h1{font-family:var(--display);font-weight:700;text-transform:uppercase;font-size:clamp(30px,4.6vw,58px);line-height:1.03;letter-spacing:-.008em;margin-bottom:26px}
.dgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:0;margin-top:clamp(46px,8vh,88px);border-top:1px solid var(--hair-d)}
.cdoor{position:relative;display:flex;flex-direction:column;text-decoration:none;color:inherit;
  padding:clamp(28px,4.2vh,48px) clamp(18px,2.6vw,48px) clamp(32px,4.6vh,54px);
  border-left:1px solid var(--hair-d);transition:background .55s}
.cdoor:first-child{border-left:none;padding-left:0}
.cdoor:last-child{padding-right:0}
.cdoor:hover{background:rgba(228,226,220,.026)}
.dsig{height:clamp(148px,23vh,258px);margin-bottom:clamp(24px,3.6vh,40px)}
.cdoor .kick{display:block;width:28px;height:2px;background:var(--red);margin-bottom:18px}
.cdoor h3{font-family:var(--display);font-weight:600;font-size:11.5px;letter-spacing:.26em;text-transform:uppercase;color:var(--cream);margin-bottom:16px;transition:color .4s}
.cdoor p{font-size:14px;line-height:1.85;font-weight:300;color:var(--cream-45);margin-bottom:auto;transition:color .4s}
.cdoor .lk{margin-top:clamp(26px,4vh,38px);font-family:var(--mono);font-size:9.5px;letter-spacing:.18em;
  text-transform:uppercase;color:var(--red);display:inline-flex;align-items:center;gap:9px}
.cdoor .lk i{position:relative;display:block;width:0;height:1px;background:var(--red);transition:width .5s cubic-bezier(.22,1,.36,1)}
.cdoor .lk i::after{content:"";position:absolute;right:-1px;top:-3.5px;width:0;height:0;
  border-left:7px solid var(--red);border-top:4px solid transparent;border-bottom:4px solid transparent;
  opacity:0;transition:opacity .28s ease .16s}
.cdoor:hover h3{color:var(--red)}
.cdoor:hover p{color:var(--cream-70)}
.cdoor:hover .lk i{width:40px}
.cdoor:hover .lk i::after{opacity:1}
@media(max-width:940px){
  .dgrid{grid-template-columns:1fr}
  .cdoor{border-left:none;border-top:1px solid var(--hair-d);padding:34px 0 40px}
  .cdoor:first-child{border-top:none}
  .dsig{height:180px}
}

/* relevant-service rows that link out to the service pages */
.prow.link h3{transition:color .35s}
.prow.link:hover h3{color:var(--red)}
.prow .arw{display:block;width:0;height:1px;background:var(--red);margin-top:12px;transition:width .45s cubic-bezier(.22,1,.36,1);position:relative}
.prow .arw::after{content:"";position:absolute;right:-1px;top:-3.5px;width:0;height:0;
  border-left:7px solid var(--red);border-top:4px solid transparent;border-bottom:4px solid transparent;
  opacity:0;transition:opacity .28s ease .14s}
.prow.link:hover .arw{width:38px}
.prow.link:hover .arw::after{opacity:1}
.prow .src{font-family:var(--mono);font-size:9px;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-40);margin-top:10px;display:block}

/* ── 11 · about ── */
.ahero{background:radial-gradient(148% 108% at 76% 5%, rgba(98,65,62,.90) 0%, rgba(98,65,62,0) 55%),linear-gradient(157deg,#553936 0%,#3A2A28 43%,#261D1B 79%,#1E1716 100%);padding-bottom:clamp(60px,9vh,110px)}

/* the firm — editorial two-column */
.firm{display:grid;grid-template-columns:minmax(0,.44fr) minmax(0,1fr);gap:clamp(24px,5vw,90px);align-items:start}
.firm-side{position:sticky;top:26vh}
.firm-side .kick{display:block;width:28px;height:2px;background:var(--red);margin-bottom:20px}
.firm-side .lab{font-family:var(--mono);font-size:9.5px;letter-spacing:.24em;text-transform:uppercase;color:var(--ink-40);line-height:2.1}
.para{padding-bottom:clamp(34px,5vh,56px);margin-bottom:clamp(34px,5vh,56px);border-bottom:1px solid var(--hair-l)}
.para:last-child{border-bottom:none;padding-bottom:0;margin-bottom:0}
.para .plab{font-family:var(--mono);font-size:9.5px;letter-spacing:.24em;text-transform:uppercase;color:var(--red);margin-bottom:18px}
.para p{font-size:16px;line-height:1.95;font-weight:300;color:var(--ink-65);max-width:36em}
.para.lead p{font-size:19px;line-height:1.8;color:var(--ink)}
@media(max-width:880px){
  .firm{grid-template-columns:1fr;gap:34px}
  .firm-side{position:static}
  .para p{font-size:15px}
  .para.lead p{font-size:17px}
}

/* values */
.vals{display:grid;grid-template-columns:repeat(3,1fr);gap:0;border-top:1px solid var(--hair-l)}
.val{padding:clamp(30px,4.4vh,50px) clamp(18px,2.6vw,46px) clamp(34px,5vh,58px);
  border-left:1px solid var(--hair-l);border-bottom:1px solid var(--hair-l);display:flex;flex-direction:column}
.val:nth-child(3n+1){border-left:none;padding-left:0}
.val:nth-child(3n){padding-right:0}
.val .vno{font-family:var(--mono);font-size:9.5px;letter-spacing:.2em;color:var(--red);margin-bottom:18px}
.val h3{font-family:var(--display);font-weight:700;text-transform:uppercase;font-size:clamp(15px,1.5vw,21px);
  line-height:1.15;letter-spacing:.005em;color:var(--ink);margin-bottom:16px}
.val p{font-size:13.5px;line-height:1.85;font-weight:300;color:var(--ink-65)}
.val.empty{border-bottom-color:transparent}
.vals-rule{height:1px;margin-top:clamp(40px,6vh,70px)}
@media(max-width:880px){
  .vals{grid-template-columns:1fr}
  .val{border-left:none;padding-left:0;padding-right:0}
  .val.empty{display:none}
}

/* close */
.close-l .note{font-size:14px;line-height:1.9;font-weight:300;color:var(--ink-65);max-width:32em;margin-bottom:34px}

/* ── 12 · our people ── */
.roster{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(26px,3.4vh,48px) clamp(16px,2vw,34px)}
.pcard{display:flex;flex-direction:column;text-align:left;background:none;border:none;padding:0;
  margin:0;font:inherit;color:inherit;cursor:pointer}
.pphoto{position:relative;display:block;aspect-ratio:3/4;margin-bottom:18px;overflow:hidden;
  background:rgba(46,35,33,.055);background-size:cover;background-position:center top;
  border:1px solid var(--hair-l);transition:border-color .45s,filter .45s}
.pphoto .ini{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  font-family:var(--display);font-weight:700;letter-spacing:.04em;
  font-size:clamp(24px,2.8vw,42px);color:rgba(46,35,33,.13)}
.pphoto .idx{position:absolute;top:11px;left:12px;font-family:var(--mono);font-size:9px;
  letter-spacing:.2em;color:rgba(46,35,33,.32)}
.pphoto .bar{position:absolute;left:0;bottom:0;height:2px;width:0;background:var(--red);
  transition:width .55s cubic-bezier(.22,1,.36,1)}
.pcard:hover .pphoto{border-color:rgba(46,35,33,.34)}
.pcard:hover .pphoto .bar,.pcard[aria-expanded="true"] .pphoto .bar{width:100%}
.pcard h3{font-family:var(--display);font-weight:700;text-transform:uppercase;line-height:1.18;
  font-size:clamp(12.5px,1.1vw,16px);letter-spacing:.012em;color:var(--ink);margin-bottom:8px;transition:color .35s}
.pcard .role{font-family:var(--mono);font-size:9px;letter-spacing:.15em;text-transform:uppercase;
  color:var(--red);margin-bottom:11px;line-height:1.7}
.pcard .prov{font-size:12.5px;line-height:1.7;font-weight:300;color:var(--ink-65)}
.pcard:hover h3,.pcard[aria-expanded="true"] h3{color:var(--red)}

.pdetail{grid-column:1/-1;display:grid;grid-template-columns:minmax(0,.36fr) minmax(0,1fr);
  gap:clamp(20px,4vw,64px);border-top:1px solid var(--hair-l);border-bottom:1px solid var(--hair-l);
  padding:clamp(30px,4.4vh,52px) 0;margin:clamp(6px,1vh,14px) 0 clamp(10px,1.4vh,20px);
  opacity:0;transform:translateY(-8px);transition:opacity .5s cubic-bezier(.22,1,.36,1),transform .5s cubic-bezier(.22,1,.36,1)}
.pdetail.in{opacity:1;transform:none}
.pdetail .side .kick{display:block;width:28px;height:2px;background:var(--red);margin-bottom:18px}
.pdetail .side h4{font-family:var(--display);font-weight:700;text-transform:uppercase;
  font-size:clamp(16px,1.7vw,24px);line-height:1.15;color:var(--ink);margin-bottom:12px}
.pdetail .side .role{font-family:var(--mono);font-size:9.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--red);line-height:1.8}
.pdetail .side a{display:inline-flex;align-items:center;gap:9px;margin-top:22px;font-family:var(--mono);
  font-size:9.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-40);text-decoration:none;transition:color .3s}
.pdetail .side a:hover{color:var(--red)}
.pdetail p{font-size:15px;line-height:1.95;font-weight:300;color:var(--ink-65);max-width:44em}
.pdetail .close{margin-top:26px;font-family:var(--mono);font-size:9px;letter-spacing:.2em;
  text-transform:uppercase;color:var(--ink-40);background:none;border:none;padding:0;cursor:pointer;transition:color .3s}
.pdetail .close:hover{color:var(--red)}

@media(max-width:1100px){.roster{grid-template-columns:repeat(3,1fr)}}
@media(max-width:760px){
  .roster{grid-template-columns:repeat(2,1fr);gap:30px 18px}
  .pdetail{grid-template-columns:1fr;gap:22px}
  .pcard .prov{display:none}
}

/* ── 13 · contact ── */
.cform{display:grid;grid-template-columns:repeat(2,1fr);gap:clamp(28px,3.6vh,46px) clamp(20px,3vw,56px)}

.chips{display:flex;flex-wrap:wrap;gap:9px}
.chips input{position:absolute;opacity:0;width:0;height:0}
.chip{display:inline-block;padding:10px 17px;border:1px solid var(--hair-l);cursor:pointer;
  font-family:var(--mono);font-size:9.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-65);
  transition:border-color .3s,color .3s,background .3s}
.chip:hover{border-color:rgba(46,35,33,.38);color:var(--ink)}
.chips input:checked + .chip{border-color:var(--red);color:var(--red)}
.chips input:focus-visible + .chip{outline:1px solid var(--red);outline-offset:3px}

.fsend{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:20px 34px;align-items:center;margin-top:clamp(8px,1.4vh,18px)}
.fsend .micro{font-family:var(--mono);font-size:9px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-40);max-width:34em;line-height:1.9}
button.cta-dark{border:none;cursor:pointer;font-family:var(--mono)}

.fdone{display:none;border-top:1px solid var(--hair-l);border-bottom:1px solid var(--hair-l);
  padding:clamp(40px,7vh,80px) 0;max-width:36em}
.fdone.on{display:block}
.fdone .kick{display:block;width:28px;height:2px;background:var(--red);margin-bottom:22px}
.fdone h3{font-family:var(--display);font-weight:700;text-transform:uppercase;font-size:clamp(20px,2.4vw,32px);
  line-height:1.1;color:var(--ink);margin-bottom:18px}
.fdone p{font-size:15px;line-height:1.9;font-weight:300;color:var(--ink-65)}
.cform.sent{display:none}

/* direct lines */
.lines{display:grid;grid-template-columns:repeat(3,1fr);gap:0;border-top:1px solid var(--hair-l)}
.line{padding:clamp(30px,4.4vh,50px) clamp(18px,2.6vw,46px) clamp(34px,5vh,56px);
  border-left:1px solid var(--hair-l);display:flex;flex-direction:column}
.line:first-child{border-left:none;padding-left:0}
.line:last-child{padding-right:0}
.line .lno{font-family:var(--mono);font-size:9.5px;letter-spacing:.2em;color:var(--red);margin-bottom:16px}
.line h3{font-family:var(--display);font-weight:600;font-size:11.5px;letter-spacing:.26em;text-transform:uppercase;
  color:var(--ink);margin-bottom:18px}
.line p{font-size:14px;line-height:1.85;font-weight:300;color:var(--ink-65);margin-bottom:auto}
.line a.big{display:inline-block;margin-top:20px;font-family:var(--mono);font-size:12px;letter-spacing:.06em;
  color:var(--ink);text-decoration:none;border-bottom:1px solid var(--hair-l);padding-bottom:4px;transition:color .3s,border-color .3s}
.line a.big:hover{color:var(--red);border-bottom-color:var(--red)}
.line .addr{font-family:var(--mono);font-size:11.5px;letter-spacing:.06em;line-height:2;color:var(--ink);margin-top:20px}
@media(max-width:880px){
  .cform{grid-template-columns:1fr}
  .lines{grid-template-columns:1fr}
  .line{border-left:none;border-top:1px solid var(--hair-l);padding:32px 0 38px}
  .line:first-child{border-top:none}
}

/* ── 14 · newsroom ── */
.nlist{border-top:1px solid var(--hair-l)}
.nitem{display:grid;grid-template-columns:clamp(90px,11vw,150px) minmax(0,1fr);gap:clamp(18px,3vw,52px);
  padding:clamp(30px,4.4vh,50px) 0;border-bottom:1px solid var(--hair-l);text-decoration:none;color:inherit;
  transition:background .45s}
a.nitem:hover{background:rgba(46,35,33,.022)}
.nitem .ndate{font-family:var(--mono);font-size:9.5px;letter-spacing:.18em;text-transform:uppercase;
  color:var(--ink-40);padding-top:5px;line-height:1.9}
.nitem .ncopy{display:flex;flex-direction:column;gap:10px}
.nitem .nsrc{display:inline-flex;align-items:center;gap:10px;font-family:var(--mono);font-size:9px;
  letter-spacing:.22em;text-transform:uppercase;color:var(--red)}
.nitem .nsrc .dot{width:4px;height:4px;border-radius:50%;background:var(--red);flex:none}
.nitem h3{font-family:var(--display);font-weight:700;text-transform:uppercase;line-height:1.14;
  font-size:clamp(16px,1.7vw,24px);letter-spacing:.005em;color:var(--ink);transition:color .35s}
a.nitem:hover h3{color:var(--red)}
.nitem .nexc{font-size:14px;line-height:1.85;font-weight:300;color:var(--ink-65);max-width:44em;font-style:italic}
.nitem .ntag{font-family:var(--mono);font-size:9px;letter-spacing:.18em;text-transform:uppercase;
  color:var(--ink-40);margin-top:4px}
.nitem .narrow{display:inline-flex;align-items:center;gap:8px;margin-top:8px;font-family:var(--mono);
  font-size:9px;letter-spacing:.18em;text-transform:uppercase;color:var(--red);opacity:0;transition:opacity .4s}
a.nitem:hover .narrow{opacity:1}
@media(max-width:760px){
  .nitem{grid-template-columns:1fr;gap:8px}
  .nitem .ndate{padding-top:0}
  .nitem .narrow{opacity:1}
}

/* ══════════════════════════════════════════════════════════════════════
   AUGUST FEEDBACK PASS — navigation, mobile, accordions, type scale
   Appended last so it wins over everything above it.
   ══════════════════════════════════════════════════════════════════════ */

/* ── 1 · red emphasis replaces the red full-stop (trademark safe) ── */
.hl{color:var(--red)}
.light .hl{color:var(--red)}

/* ── 2 · nav: solid ground, SVG mark, dropdowns ── */
nav{background:linear-gradient(180deg,rgba(30,23,22,.94) 0%,rgba(30,23,22,.78) 62%,rgba(30,23,22,0) 100%);
  backdrop-filter:blur(9px);-webkit-backdrop-filter:blur(9px);padding-bottom:30px}
nav.onlight{background:linear-gradient(180deg,rgba(228,226,220,.96) 0%,rgba(228,226,220,.82) 62%,rgba(228,226,220,0) 100%)}
.brand{gap:0}
.brand .pt{display:none}
.blogo{display:block;height:13px;width:auto;color:var(--cream);transition:color .5s}
nav.onlight .blogo{color:var(--ink)}
@media(max-width:860px){.blogo{height:11px}}

.ndrop{position:relative}
.ndrop>a{display:inline-flex;align-items:center;gap:7px}
.chev{width:5px;height:5px;border-right:1px solid currentColor;border-bottom:1px solid currentColor;
  transform:rotate(45deg) translate(-1px,-1px);opacity:.6;transition:transform .25s,opacity .25s}
.ndrop:hover .chev,.ndrop.open .chev{opacity:1;transform:rotate(225deg) translate(-2px,-2px)}
.dmenu{position:absolute;top:100%;left:-16px;min-width:236px;padding:10px 0 8px;margin-top:12px;
  background:var(--esp-3);border:1px solid var(--hair-d);
  box-shadow:0 22px 50px rgba(0,0,0,.42);
  opacity:0;visibility:hidden;transform:translateY(-6px);
  transition:opacity .22s ease,transform .22s ease,visibility .22s;z-index:170}
.ndrop:hover .dmenu,.ndrop:focus-within .dmenu,.ndrop.open .dmenu{opacity:1;visibility:visible;transform:translateY(0)}
/* a hover bridge so the pointer can cross the gap without the menu closing */
.ndrop::after{content:"";position:absolute;top:100%;left:0;right:0;height:16px}
.dmenu a{display:block;padding:9px 20px;font-family:var(--mono);font-size:9.5px;letter-spacing:.16em;
  text-transform:uppercase;color:var(--cream-45);text-decoration:none;transition:color .22s,background .22s}
.dmenu a:hover{color:var(--cream);background:rgba(228,226,220,.05)}
.dmenu .dall{margin-top:6px;padding-top:12px;border-top:1px solid var(--hair-d);color:var(--red)}
nav.onlight .dmenu{background:#F3F1EC;border-color:var(--hair-l);box-shadow:0 22px 50px rgba(46,35,33,.13)}
nav.onlight .dmenu a{color:var(--ink-40)}
nav.onlight .dmenu a:hover{color:var(--ink);background:rgba(46,35,33,.045)}

/* ── 3 · mobile navigation (there was none — links were simply hidden) ── */
.navtog{display:none;width:38px;height:38px;background:none;border:0;cursor:pointer;
  padding:0;position:relative;margin:-6px -8px -6px 0}
.navtog span{position:absolute;left:9px;right:9px;height:1px;background:var(--cream);
  transition:transform .32s cubic-bezier(.76,0,.24,1),opacity .2s}
.navtog span:first-child{top:16px}
.navtog span:last-child{top:22px}
nav.onlight .navtog span{background:var(--ink)}
.navtog[aria-expanded="true"] span:first-child{transform:translateY(3px) rotate(45deg)}
.navtog[aria-expanded="true"] span:last-child{transform:translateY(-3px) rotate(-45deg)}

.mnav{position:fixed;inset:0;z-index:155;background:var(--esp-4);
  opacity:0;visibility:hidden;transition:opacity .34s ease,visibility .34s;
  overflow-y:auto;-webkit-overflow-scrolling:touch;display:none}
.mnav.on{opacity:1;visibility:visible}
.mnav-in{padding:104px var(--gut) 64px;display:flex;flex-direction:column}
.mgrp{border-bottom:1px solid var(--hair-d)}
.macc{width:100%;display:flex;align-items:center;justify-content:space-between;gap:12px;
  background:none;border:0;padding:20px 0;cursor:pointer;text-align:left;
  font-family:var(--display);font-weight:700;text-transform:uppercase;letter-spacing:.02em;
  font-size:19px;color:var(--cream)}
.macc .chev{width:7px;height:7px;opacity:.55}
.macc[aria-expanded="true"] .chev{transform:rotate(225deg) translate(-2px,-2px);opacity:1}
.msub{max-height:0;overflow:hidden;transition:max-height .38s cubic-bezier(.76,0,.24,1)}
.macc[aria-expanded="true"]+.msub{max-height:420px}
.msub a{display:block;padding:13px 0 13px 2px;font-family:var(--mono);font-size:11px;letter-spacing:.14em;
  text-transform:uppercase;color:var(--cream-45);text-decoration:none}
.msub a:last-child{padding-bottom:22px}
.mlink{display:block;padding:20px 0;border-bottom:1px solid var(--hair-d);text-decoration:none;
  font-family:var(--display);font-weight:700;text-transform:uppercase;letter-spacing:.02em;
  font-size:19px;color:var(--cream)}
.mmail{margin-top:34px;font-family:var(--mono);font-size:11px;letter-spacing:.1em;
  color:var(--red);text-decoration:none;word-break:break-all}
body.mopen{overflow:hidden}

@media(max-width:860px){
  .navlinks{display:none}
  .navtog{display:block}
  .mnav{display:block}
  nav{padding-top:18px;padding-bottom:22px}
}

/* ── 4 · jump up ── */
.jumpup{position:fixed;right:clamp(16px,3vw,34px);bottom:clamp(16px,3vw,34px);z-index:120;
  width:46px;height:46px;border-radius:50%;border:1px solid var(--hair-d);cursor:pointer;
  background:rgba(30,23,22,.80);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
  opacity:0;visibility:hidden;transform:translateY(10px);
  transition:opacity .32s,visibility .32s,transform .32s,background .32s,border-color .32s}
.jumpup.on{opacity:1;visibility:visible;transform:translateY(0)}
.jumpup i{position:absolute;top:50%;left:50%;width:8px;height:8px;
  border-left:1px solid var(--cream);border-top:1px solid var(--cream);
  transform:translate(-50%,-28%) rotate(45deg)}
.jumpup.light{background:rgba(243,241,236,.88);border-color:var(--hair-l)}
.jumpup.light i{border-color:var(--ink)}
.jumpup:hover{border-color:var(--red)}

/* ── 5 · statement bands: the line leads, the label sits under it ── */
.stamp.under{margin-top:20px;margin-bottom:0;opacity:.72}
.stmt.big{font-size:clamp(24px,3.4vw,44px)}

/* ── 6 · accordion rows (products / relevant services) ── */
/* turning the row into a <button> collapsed it to one narrow block —
   restore the grid the non-accordion rows already use */
.prow.acc{display:grid;grid-template-columns:52px minmax(0,220px) minmax(0,1fr);
  gap:clamp(14px,2.6vw,44px);width:100%;text-align:left;background:none;cursor:pointer;
  border-left:0;border-right:0;font:inherit;color:inherit;position:relative;
  align-items:start;padding-right:46px}
.prow.acc>*{pointer-events:none}
.prow.acc .accbody{grid-column:3}
@media(max-width:880px){
  .prow.acc{grid-template-columns:40px minmax(0,1fr);row-gap:12px}
  .prow.acc p,.prow.acc .accbody{grid-column:2}
}
/* the toggle sits at the right edge of the row, not trailing the copy */
.accx{position:absolute;right:8px;top:clamp(28px,4vh,42px);width:12px;height:12px}
.accx::before,.accx::after{content:"";position:absolute;background:var(--red);transition:transform .3s,opacity .3s}
.accx::before{left:0;right:0;top:5px;height:1px}
.accx::after{top:0;bottom:0;left:5px;width:1px}
.prow.acc[aria-expanded="true"] .accx::after{transform:scaleY(0);opacity:0}
.accbody{max-height:0;overflow:hidden;transition:max-height .4s cubic-bezier(.76,0,.24,1)}
.prow.acc[aria-expanded="true"] .accbody{max-height:340px}
.accbody p{padding-top:14px;font-size:14px;line-height:1.85;font-weight:300;color:var(--ink-65);max-width:46em}
.accbody b{font-weight:500;color:var(--ink)}

/* ── 7 · contact: routed email cards instead of a form ── */
.rlead{font-size:14.5px;line-height:1.9;font-weight:300;color:var(--ink-65);max-width:40em;margin-bottom:34px}
.rgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;background:var(--hair-l);
  border:1px solid var(--hair-l)}
.rcard{position:relative;display:flex;flex-direction:column;gap:9px;padding:26px 54px 28px 26px;
  background:var(--cream);text-decoration:none;transition:background .35s}
.rcard:hover{background:#EFEDE7}
.rcard .rk{font-family:var(--display);font-weight:700;text-transform:uppercase;font-size:15px;
  letter-spacing:.01em;color:var(--ink)}
.rcard .rn{font-size:13.5px;line-height:1.75;font-weight:300;color:var(--ink-65)}
.rcard i{position:absolute;right:26px;top:29px;width:7px;height:7px;
  border-right:1px solid var(--red);border-top:1px solid var(--red);
  transform:rotate(45deg);transition:transform .35s}
.rcard:hover i{transform:rotate(45deg) translate(3px,-3px)}
@media(max-width:720px){.rgrid{grid-template-columns:1fr}.rcard{padding:22px 48px 24px 20px}}

/* ── 8 · single CTA where there used to be two ── */
.onecta{margin-top:clamp(34px,5vh,54px);display:flex;flex-direction:column;align-items:flex-start;gap:16px}
.ctanote{font-size:13px;line-height:1.8;font-weight:300;color:var(--ink-65);max-width:38em}

/* ── 9 · footer offices ── */
.foffices{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:26px 34px}
.foff{display:flex;flex-direction:column;gap:8px;font-family:var(--mono);font-size:10px;
  line-height:1.85;letter-spacing:.06em;color:var(--cream-45)}
.foff .fcity{color:var(--cream);letter-spacing:.2em;text-transform:uppercase;font-size:9.5px}
@media(max-width:820px){.foffices{grid-template-columns:1fr;gap:22px}}

/* ── 10 · legibility: comparable elements, comparable size ── */
.hero-coords{color:rgba(228,226,220,.62)}
.file-head .meta{color:rgba(228,226,220,.60)}
.eyebrow .t,.idx-tag,.tag,.stamp{font-size:10px}
.light .eyebrow .t{color:var(--ink)}
.sec-note{font-size:14.5px;line-height:1.9}
a{text-decoration:none}
.addr{margin-bottom:16px}
.addr b{color:var(--ink);font-weight:500}

/* ══════════════════════════════════════════════════════════════════════
   11 · MOBILE PASS — most clients arrive on a phone
   ══════════════════════════════════════════════════════════════════════ */
@media(max-width:760px){
  /* type: headline sizes were tuned for desktop and ran too large */
  h1{font-size:clamp(27px,7.4vw,38px);line-height:1.14}
  .display{font-size:clamp(24px,6.6vw,34px)}
  .lede{font-size:14.5px;line-height:1.85}
  .hero-copy{padding-right:0}
  .hero-sub{max-width:100%}
  .hero-coords{font-size:8.5px;letter-spacing:.12em}
  .file-head{gap:8px 14px;flex-wrap:wrap}
  .file-head .meta{font-size:8.5px}

  /* touch targets: nothing interactive under 44px */
  .cta,.cta-dark,.cta-line,.go,.lk,.crumb,.pager a{min-height:44px;
    display:inline-flex;align-items:center}
  /* full-width rows, not inline chips */
  .msub a,.dmenu a{min-height:44px;display:flex;align-items:center}
  .prow,.prow.acc,.irow,.cdoor,.pcard,.nitem,.rcard{min-height:56px}

  /* the particle field costs more on phone silicon: keep the shapes,
     drop the density and the cursor work that a touch screen never uses */
  #field{opacity:.9}

  .doors{grid-template-columns:1fr}
  .rgrid{grid-template-columns:1fr}
  .jumpup{width:42px;height:42px}
  .stmt{font-size:clamp(20px,5.6vw,28px)}
  .stmt.big{font-size:clamp(21px,5.8vw,30px)}
  /* the footer reserved a full viewport, leaving ~305px of dead space
     above the wordmark on a 390×844 screen. The block is now sized to
     its content plus a fixed cap, which more than halves the gap while
     still leaving the wordmark clear of the tagline. */
  .foot-shell{padding-bottom:56px;min-height:auto;
    padding-top:clamp(104px,17vh,150px)}
  .fbar{flex-direction:column;align-items:flex-start;gap:10px}
  .pager{flex-direction:column;gap:14px;align-items:flex-start}
}
@media(max-width:420px){
  .mnav-in{padding-top:92px}
  .macc,.mlink{font-size:17px}
}


/* ── final pass ────────────────────────────────────────────────────── */

/* About: the discipline stack was set at caption size and read as a
   footnote rather than a spine for the section */
.firm-side .lab{font-family:var(--display);font-weight:700;text-transform:uppercase;
  font-size:clamp(15px,1.7vw,22px);line-height:1.5;letter-spacing:.01em;color:var(--ink);opacity:.88}

/* Service and client pages: make it unmistakable which page you are on.
   The classification stamp carries the page name at real size. */
.shero .file-head .meta:first-of-type{color:var(--red);letter-spacing:.24em}
.shero h1,.ahero h1{font-size:clamp(30px,4.4vw,56px)}

/* Values grid closes where the content ends — the empty sixth cell was
   removed, so the grid no longer needs to reserve a slot for it */
.vals{align-items:start}

/* Pager: previous / next were the same weight as body links */
.pager a{font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase}
.pager a.nx{color:var(--red)}

/* Statement bands read as the headline they are */
.stmt{line-height:1.24}


/* ══════════════════════════════════════════════════════════════════════
   DESKTOP CHANGE PASS — from the marked-up screenshots
   ══════════════════════════════════════════════════════════════════════ */

/* ── 1 · link colour: :visited was beating .go on specificity ──────────
   `a:visited{color:inherit}` scores (0,1,1) and outranked `.go` (0,1,0),
   so an action link turned from red to ink the moment you had clicked it
   once. That is why "See what we do for governments" was red and the two
   the user had already visited were not. Scoped to unclassed anchors. */
a,a:visited{color:inherit}
.go,.go:visited,.lk,.lk:visited,.cta-line,.cta-line:visited,
.crumb,.crumb:visited,.pager a,.pager a:visited{color:var(--red)}
.cta,.cta:visited{color:var(--cream)}
.cta-dark,.cta-dark:visited{color:var(--cream)}
.navlinks a,.navlinks a:visited,.dmenu a,.dmenu a:visited,
.mlink,.mlink:visited,.msub a,.msub a:visited,
.nitem,.nitem:visited,.nitem h3,.brand,.brand:visited{color:inherit}
.dmenu .dall,.dmenu .dall:visited,.mmail,.mmail:visited{color:var(--red)}

/* ── 2 · WHO WE SERVE ─────────────────────────────────────────────── */
/* +1pt on the card headings and the action links, matched by the same
   step on the equivalent elements elsewhere so the site stays consistent */
.door h3,.cdoor h3{font-size:12.5px}
.go{font-size:11px}
.cdoor .lk{font-size:10.5px}

/* bottom-align the three action links: .door was the flex column but the
   revealed content sat in a plain wrapper, so margin-bottom:auto on the
   paragraph had nothing to push against */
.door>.rv{display:flex;flex-direction:column;flex:1}
.door p{margin-bottom:auto}
.go{margin-top:34px;align-self:flex-start}

/* ── 3 · CLIENT DOORS: equal padding, hover no longer bleeds ───────── */
.dgrid{padding:0 clamp(14px,1.6vw,26px)}
.cdoor{padding-left:clamp(18px,2.6vw,48px);padding-right:clamp(18px,2.6vw,48px)}
.cdoor:first-child{padding-left:clamp(18px,2.6vw,48px)}
.cdoor:last-child{padding-right:clamp(18px,2.6vw,48px)}
.cdoor:first-child{border-left:1px solid transparent}
@media(max-width:940px){
  .dgrid{padding:0}
  .cdoor,.cdoor:first-child,.cdoor:last-child{padding-left:0;padding-right:0}
}

/* ── 4 · ABOUT: values grid, equal row heights ────────────────────── */
/* the cells were sized by their own content, so a two-line heading next
   to a three-line one broke the row rule at two different heights */
.vals{grid-auto-rows:1fr}
.val{height:100%}

/* ── 5 · text measure: fewer, longer lines ────────────────────────── */
.lede{max-width:46em}
.sec-note{max-width:52em}
.val p,.card p,.door p,.cdoor p{max-width:34em}
.accbody p{max-width:56em}
.firm-side .lab{white-space:nowrap}

/* ── 6 · TEAM: initials read as a mark, not a caption ──────────────── */
.pcard .pini{display:inline-flex;align-items:center;justify-content:center;
  width:26px;height:26px;border-radius:50%;background:var(--red);
  font-family:var(--mono);font-size:8.5px;font-weight:500;letter-spacing:.06em;
  color:var(--cream);margin-bottom:10px;flex:none}

/* ── 7 · SERVICES rows: tighter rhythm ────────────────────────────── */
.irow{padding-top:clamp(26px,3.4vh,40px);padding-bottom:clamp(26px,3.4vh,40px)}

/* the open service no longer offers a redundant way in — it is already
   red, already open. The other three keep their link, revealed on hover. */
.irow .lk{opacity:0;transition:opacity .3s}
.irow:hover .lk{opacity:1}
.irow.open .lk{display:none}
.irow.open .nm{color:var(--red)}

/* ── 8 · GEOPOLITICAL: no toggles, no double gap ──────────────────── */
.prow .accbody{max-height:none!important;overflow:visible}
.prow .accbody p{padding-top:0;margin-top:.55em}
.prow{padding-right:0}

/* ── 9 · CONTACT: "Not sure yet" is a different kind of door ───────── */
.rcard.alt{background:#F4F2ED;border:1px dashed rgba(98,65,62,.34)}
.rcard.alt:hover{background:#FAF8F4}
.rcard.alt .rk{color:var(--red)}


/* team initials: the .ini span is a direct child of .pcard (there is no
   .pphoto wrapper in this markup), so the photo-watermark rule never
   applied and it rendered as plain 16px text above the name */
.pcard>.ini{display:inline-flex;align-items:center;justify-content:center;
  width:19px;height:19px;border-radius:50%;background:var(--red);
  font-family:var(--mono);font-size:6.5px;font-weight:500;letter-spacing:.05em;
  color:var(--cream);margin-bottom:12px;align-self:flex-start;flex:none;
  line-height:1;padding-left:.05em}


/* ══════════════════════════════════════════════════════════════════════
   MOBILE CHANGE PASS
   ══════════════════════════════════════════════════════════════════════ */
@media(max-width:940px){
  }

@media(max-width:760px){
  /* ── hero: more brown below the copy so the globe has somewhere to be ── */
  .hero-shell{min-height:124svh;min-height:124vh;padding-bottom:clamp(90px,18vh,190px)}
  .hero-foot{padding-bottom:clamp(20px,4vh,40px)}

  /* ── mobile menu: the overview row reads as the parent page ── */
  .msub a.mall,.msub a.mall:visited{color:var(--red)}

  /* ── geopolitical: the toggles stay on mobile ──
     Desktop shows everything at once; on a phone that is a wall of text,
     so the rows collapse again and carry a +/- control. */
  .prow.mob .accbody{max-height:0!important;overflow:hidden;
    transition:max-height .38s cubic-bezier(.76,0,.24,1)}
  .prow.mob[aria-expanded="true"] .accbody{max-height:520px!important}
  .prow.mob{position:relative;padding-right:34px;cursor:pointer}
  .mtog{position:absolute;right:2px;top:clamp(24px,3.4vh,36px);
    width:13px;height:13px;pointer-events:none}
  .mtog::before,.mtog::after{content:"";position:absolute;background:var(--red);
    transition:transform .3s,opacity .3s}
  .mtog::before{left:0;right:0;top:6px;height:1px}
  .mtog::after{top:0;bottom:0;left:6px;width:1px}
  .prow.mob[aria-expanded="true"] .mtog::after{transform:scaleY(0);opacity:0}
}


/* the accordion body must sit in the copy column, not the number gutter.
   The desktop rules keyed off `.prow.acc`, and that class went away when
   the toggles were removed, so the body was landing in column 1. */
.prow .accbody{grid-column:3}
@media(max-width:880px){ .prow .accbody{grid-column:2} }


/* ── fast entry: every page except the first homepage visit per session.
   html.fast is set by gate.js before first paint. ── */
html.fast #loader,html.fast .curtain,html.fast #loadTag{display:none}
html.fast body.locked{overflow:auto;height:auto}
html.fast nav{opacity:1;transition:none}

/* ── skip link (H2) ── */
.skip{position:absolute;left:-9999px;top:12px;z-index:300;background:var(--red);color:var(--cream);padding:12px 18px;
  font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;text-decoration:none}
.skip:focus{left:var(--gut)}
/* ── nav: dropdown parents sat on a line box and rendered a few px low ── */
.ndrop{display:flex;align-items:center}
.ndrop>a{display:flex}
/* ── hero: coordinates and scroll cue are flow items, so they can never sit on the copy (E4) ── */
.hero-shell{justify-content:space-between;padding-top:clamp(88px,11vh,116px);padding-bottom:40px}
.hero-coords{position:static}
.hero-copy{margin:auto 0;padding:5vh 0}
.hero-foot{position:static}
/* ── contact: one office pane after folding enquiries into the routed cards ── */
.lines{grid-template-columns:1fr}
/* ── footer legal links (F2: :visited stated explicitly) ── */
.fbar a,.fbar a:visited{color:inherit;text-decoration:none;border-bottom:1px solid transparent;transition:border-color .3s}
.fbar a:hover,.fbar a:focus-visible{border-bottom-color:currentColor}
/* ── legal pages ── */
.legal{max-width:62ch;margin-top:clamp(30px,5vh,56px)}
.legal .para p{margin-bottom:14px} .legal .para p:last-child{margin-bottom:0}
.legal a,.legal a:visited{color:var(--red);text-decoration:none;border-bottom:1px solid rgba(162,32,47,.35)}


/* ══ FIX PASS — 2026-08-26 ═══════════════════════════════════════════ */

/* 9 · NOT CHANGED — the newsroom "Speak with an advisor" uses .cta-dark,
   the site's standard filled-red button, and it renders identically on
   every other closing section. No stuck hover state was reproducible, so
   nothing was altered rather than risk a regression on approved styling. */

/* 7 · "Powered by" and the capability list read as two unrelated blocks.
   Pulled together into one unit with a single hairline between them. */
.band .stamp.under{margin-top:14px}
.pw{margin-top:14px!important;padding-top:14px}
.bandrule{margin:18px 0 0!important;opacity:.5}

/* 8 · the briefing CTA sat low and alone in a full-height band. Scoped
   to that one section — applying it to every .close-l centred the note
   under the Overwatch CTA while its button stayed left. */

/* 10 · LinkedIn action on a roster card */
.pli{display:inline-flex;align-items:center;gap:7px;margin-top:10px;
  font-family:var(--mono);font-size:8.5px;letter-spacing:.2em;text-transform:uppercase;
  color:var(--red);text-decoration:none}
.pli svg{width:11px;height:11px;fill:currentColor;flex:none}
.pli:hover{text-decoration:underline}

/* ── ABOUT · origin ────────────────────────────────────────────────── */
.etym{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));
  gap:1px;background:var(--hair-l);border:1px solid var(--hair-l);
  margin-top:clamp(34px,5vh,56px)}
.ety{background:var(--cream);padding:clamp(24px,3vw,40px)}
.ety-h{display:flex;align-items:baseline;gap:12px;margin-bottom:16px}
.ety-n{font-family:var(--display);font-weight:700;text-transform:uppercase;
  font-size:clamp(16px,1.7vw,21px);letter-spacing:.01em;color:var(--ink)}
.ety-t{font-family:var(--mono);font-size:9px;letter-spacing:.22em;
  text-transform:uppercase;color:var(--red)}
.ety-d{font-size:14.5px;line-height:1.9;font-weight:300;color:var(--ink-65);max-width:36em}
.ety-w{margin-top:16px;padding-top:14px;border-top:1px solid var(--hair-l);
  font-family:var(--mono);font-size:10px;letter-spacing:.13em;line-height:1.85;
  text-transform:uppercase;color:var(--ink)}
@media(max-width:820px){.etym{grid-template-columns:1fr}}

.ety-join{display:flex;gap:clamp(16px,2.4vw,30px);margin-top:clamp(30px,4.5vh,50px);
  align-items:flex-start}
.ety-join-l{flex:none;width:34px;height:1px;background:var(--red);margin-top:14px}
.ety-join p{font-size:15.5px;line-height:1.9;font-weight:300;color:var(--ink);max-width:46em}

/* the timeline is a route: each hold sits higher than the last, and the
   final one — the redpoint — is marked in red */
.route{margin-top:clamp(40px,6vh,70px);position:relative;padding-bottom:8px}
.route-line{position:absolute;left:0;right:0;bottom:34px;height:1px;background:var(--hair-l)}
.route-steps{padding-bottom:0}
.route-steps{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));
  gap:clamp(10px,1.8vw,26px);align-items:end;position:relative}
/* each hold sits higher than the last and drops a riser to the ground
   line, so the row reads as the profile of a route being climbed */
.rstep{display:flex;flex-direction:column;gap:9px;position:relative;padding-left:20px}
.rstep:nth-child(1){padding-bottom:26px}
.rstep:nth-child(2){padding-bottom:52px}
.rstep:nth-child(3){padding-bottom:78px}
.rstep:nth-child(4){padding-bottom:104px}
.rdot{position:absolute;left:0;top:3px;width:7px;height:7px;
  background:var(--ink);border-radius:50%}
.rstep.is-top .rdot{background:var(--red);box-shadow:0 0 0 4px rgba(162,32,47,.16)}
.rstep::after{content:"";position:absolute;left:3px;top:12px;bottom:34px;width:1px;
  background:var(--hair-l)}
.ryr{font-family:var(--mono);font-size:9.5px;letter-spacing:.2em;
  text-transform:uppercase;color:var(--red)}
.rlb{font-size:13.5px;line-height:1.7;font-weight:300;color:var(--ink-65);max-width:15em}
.rstep.is-top .rlb{color:var(--ink)}
.route-cap{margin-top:16px;font-family:var(--mono);font-size:9px;letter-spacing:.22em;
  text-transform:uppercase;color:var(--ink-40)}
@media(max-width:820px){
  .route-steps{grid-template-columns:1fr;gap:0}
  .route-line{display:none}
  .rstep,.rstep:nth-child(1),.rstep:nth-child(2),.rstep:nth-child(3),.rstep:nth-child(4){
    padding-bottom:26px;padding-left:22px}
  .rdot{left:0;bottom:auto;top:5px}
  .rstep::after{left:3px;top:14px;bottom:auto;height:calc(100% - 14px)}
  .rstep:last-child::after{display:none}
  .rlb{max-width:100%}
}

/* ── mobile: the hero scroll cue was invisible against the brown; red on phones only ── */
@media(max-width:760px){
  .hero-foot .scrollcue{color:var(--red)}
  .hero-foot .scrollcue i{background:var(--red)}
}
/* ── client pages: the file-head bar reads as tappable, so it is — a tap re-settles the field ── */
#v-ind .file-head,#v-corp .file-head,#v-gov .file-head{cursor:pointer}
