/* ─── TNX Data · brand identity system v3 ─────────────────────────── */
:root{
  --charcoal:#212427; --charcoal-800:#2A2D30; --charcoal-700:#3A3D40;
  --charcoal-600:#4A4D50; --charcoal-500:#55585B;
  --slate:#F2ECE5; --slate-100:#E7E0D7; --slate-rule:#BDBBB5;
  --white:#FFFFFF; --magenta:#FF75EB;
  --cool-700:#666B71; --cool-400:#A8ADB3; --cool-200:#D5D8DC;
  --harbour-600:#426E9C; --harbour-400:#7FA6CE;

  --display:Georgia,'Times New Roman',serif;
  --body:'Helvetica Neue',Helvetica,Arial,sans-serif;
  --mono:'IBM Plex Mono',ui-monospace,SFMono-Regular,Menlo,monospace;

  --wrap:1280px; --wrap-wide:1400px; --gut:clamp(20px,5vw,64px);
  --r-lg:24px; --r:16px; --r-sm:12px; --pill:999px;
  --hero-image:url('/assets/hero-poster.jpg');
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
body{margin:0;font-family:var(--body);color:var(--charcoal);background:var(--white);
  font-size:17px;line-height:1.62;-webkit-font-smoothing:antialiased}
img,svg{max-width:100%;display:block}

/* numerals in display type must be Helvetica — Georgia's figures are old-style */
.num{font-family:var(--body);letter-spacing:-.005em}

h1,h2,h3{font-family:var(--display);font-weight:700;letter-spacing:-.012em;margin:0}
h1{font-size:clamp(2.6rem,6.2vw,4.5rem);line-height:1.03}
h2{font-size:clamp(2rem,4.1vw,3.1rem);line-height:1.1}
h3{font-size:1.14rem;line-height:1.34;letter-spacing:-.005em}
p{margin:0 0 1.1em}
a{color:inherit}

.wrap{max-width:var(--wrap);margin-inline:auto;padding-inline:var(--gut)}
.hdr .wrap{max-width:var(--wrap-wide)}
.eyebrow{font-family:var(--body);font-size:.7rem;font-weight:700;letter-spacing:.17em;
  text-transform:uppercase;margin:0 0 1.5rem;color:var(--cool-700)}
.lede{font-size:clamp(1.08rem,1.8vw,1.32rem);line-height:1.55;color:var(--charcoal-500);
  max-width:60ch;margin-top:1.6rem}
section{padding:clamp(72px,10vw,128px) 0}
section[id],div[id]{scroll-margin-top:0}

/* surfaces — never two the same in a row */
.s-slate{background:var(--slate)}
.s-dark{background:var(--charcoal);color:var(--slate-100)}
.s-dark h2,.s-dark h3{color:var(--white)}
.s-dark .eyebrow{color:var(--cool-400)}
.s-dark .lede{color:var(--cool-400)}

.skip{position:absolute;left:-9999px;top:0;background:var(--charcoal);color:#fff;
  padding:.8rem 1.2rem;z-index:100}
.skip:focus{left:0}
:focus-visible{outline:2.5px solid var(--magenta);outline-offset:3px}

/* ─── header ─────────────────────────────────────────────────────── */
.hdr{position:fixed;inset-inline:0;top:18px;z-index:60}
/* The horizontal padding is the same clamp on both sides: the logo's inset from
   the left edge of the pill and the Log in button's from the right now match. */
.bar{display:grid;grid-template-columns:2.4fr auto 1fr;align-items:center;gap:1.5rem;
  padding:.62rem clamp(1.05rem,calc((100vw - var(--wrap))/2),
    calc((var(--wrap-wide) - var(--wrap))/2));border-radius:var(--r-lg);
  border:1px solid rgba(255,255,255,.25);background:rgba(33,36,39,.85);
  backdrop-filter:blur(12px);transition:box-shadow .3s,background .3s}
.hdr.stuck .bar{box-shadow:0 10px 34px rgba(0,0,0,.30);background:rgba(33,36,39,.93)}
.bar img{width:clamp(96px,10vw,120px)}
.bar>a:first-child{justify-self:start}
.nav{display:flex;gap:2.1rem;justify-self:center;list-style:none;padding:0;margin:0}
.nav a{font-size:.83rem;letter-spacing:.02em;color:var(--cool-400);
  text-decoration:none;padding-block:.35rem;border-bottom:1.5px solid transparent;transition:.18s}
.nav a:hover,.nav a:focus-visible{color:#fff;border-bottom-color:var(--charcoal-600)}
@media (max-width:900px){
  :root{--hero-image:url('/assets/hero-poster-1200.jpg')}
  .bar{grid-template-columns:1fr auto auto}
  /* narrow text spans full width, so the horizontal wash can't protect it */
  .hero-vid{display:none}
  .nav{gap:0;justify-self:end}
  .nav li:not(:last-child){display:none}
  .hdr{top:12px}
  .bar{padding:.55rem 1.05rem;gap:1rem}
}
/* Adding the Log in pill spends the slack the bar had at narrow widths.
   Measured: the bar needs 326.6px of content (16.8 pad + 96 logo + 16 gap +
   94 nav + 16 gap + 79 button + 8.8 pad), and below 400px the gutter is a flat
   20px each side, so available width is viewport - 40. That fits 390px with
   23px to spare — the width the handover doc calls out as tested — but not a
   360px Android, which would overflow by ~7px.
   Below 400px the nav link goes rather than the button: the demo CTA already
   appears twice in the page body, and signing in has nowhere else to live. */
@media (max-width:400px){
  /* the whole list, not its items: an emptied <ul> still occupies a grid cell,
     which pushes the button onto a second row */
  .nav{display:none}
  .bar{grid-template-columns:1fr auto}
}

.btn{display:inline-block;font-family:var(--body);font-size:.87rem;font-weight:600;
  letter-spacing:.015em;padding:.78rem 1.6rem;border:1.5px solid var(--charcoal);
  background:var(--charcoal);color:#fff;text-decoration:none;cursor:pointer;
  border-radius:var(--pill);transition:.18s;white-space:nowrap}
.btn:hover{background:var(--charcoal-700);border-color:var(--charcoal-700)}
.btn-accent{background:var(--magenta);border-color:var(--magenta);color:var(--charcoal)}
.btn-accent:hover{background:#ff8fef;border-color:#ff8fef}
.btn-light{background:#fff;border-color:#fff;color:var(--charcoal)}
.btn-light:hover{background:var(--slate-100);border-color:var(--slate-100)}
.btn-ghost{background:transparent;border-color:var(--cool-400);color:#fff}
.btn-ghost:hover{background:rgba(255,255,255,.08);border-color:#fff}
.bar .btn{justify-self:end;padding:.55rem 1.2rem;font-size:.8rem;
  background:#fff;border-color:#fff;color:var(--charcoal)}
.bar .btn:hover{background:var(--slate-100);border-color:var(--slate-100)}

/* ─── 01 hero ────────────────────────────────────────────────────── */
.hero{position:relative;background:var(--charcoal);color:#fff;overflow:hidden;
  padding:clamp(108px,9.5vw,140px) 0 clamp(32px,4vw,52px);
  background-image:var(--hero-image);background-size:cover;background-position:center 38%}
.hero-vid{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  object-position:center 42%;z-index:0}
.hero::before{content:'';position:absolute;inset:0;
  background-image:linear-gradient(to right,rgba(20,22,25,.64) 0%,rgba(20,22,25,.62) 35%,rgba(20,22,25,.56) 68%,rgba(20,22,25,.42) 100%);
  z-index:1}
.hero>.wrap{position:relative;z-index:2}
/* no motion, no video — the still shows through */
@media (prefers-reduced-motion:reduce){.hero-vid{display:none}}
.hero h1{color:#fff;max-width:16ch}
.hero .eyebrow{color:var(--cool-400);margin-bottom:1.7rem}
.hero .lede{color:#D8D5D1;max-width:866px}
.hero-cta{display:flex;flex-wrap:wrap;gap:.85rem;margin-top:2.6rem}

.stats.one{display:grid;grid-template-columns:auto auto;justify-content:start;
  align-items:stretch;gap:clamp(14px,1.6vw,22px)}
.chain{height:100%;aspect-ratio:1/1;background:rgba(24,26,29,.90);
  border:1px solid var(--charcoal-700);border-radius:var(--r);
  display:grid;place-items:center;padding:0}
.chain img{width:72%;height:72%}
.stat .acc{color:var(--magenta)}
@media (max-width:620px){.stats.one{grid-template-columns:1fr;justify-items:start}
  .chain{width:84px;height:84px;aspect-ratio:auto}}
.stats{display:grid;grid-template-columns:auto 1fr;align-items:stretch;
  gap:clamp(14px,1.6vw,22px);margin-top:clamp(32px,4vw,52px)}
.stat{background:rgba(24,26,29,.90);border:1px solid var(--charcoal-700);
  border-radius:var(--r);padding:1.5rem clamp(20px,2.2vw,30px) 1.6rem;
  display:flex;flex-direction:column;justify-content:center}
.stat>span{display:block;font-size:.8rem;line-height:1.45;color:var(--cool-400)}
.stat p .num{display:inline;font-size:inherit;color:inherit;line-height:inherit}
.stat b{display:block;margin-top:.35rem;font-family:var(--body);
  font-size:clamp(2rem,3.6vw,2.9rem);font-weight:600;letter-spacing:-.025em;
  line-height:1.05;color:var(--magenta);white-space:nowrap}
.stat.wide{width:fit-content;max-width:100%}
.stat.wide p{margin:0;font-size:clamp(.9rem,1.15vw,1rem);line-height:1.55;color:var(--slate-100)}
.stat.wide p+p{margin-top:.6rem;color:var(--cool-400)}
@media (max-width:820px){.stats{grid-template-columns:1fr}}

/* ─── 02 validation ──────────────────────────────────────────────── */
.quotes{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(28px,3.4vw,48px);margin-top:3.4rem}
.quotes blockquote{margin:0;padding-top:1.6rem;border-top:2px solid var(--charcoal)}
.quotes q{display:block;font-family:var(--display);font-size:clamp(1.16rem,1.85vw,1.42rem);
  line-height:1.34;letter-spacing:-.008em;quotes:'“' '”'}
.quotes cite{display:block;margin-top:1.1rem;font-family:var(--mono);font-size:.71rem;
  font-style:normal;line-height:1.55;color:var(--cool-700);letter-spacing:.005em}
.after{margin-top:3.4rem;padding-top:1.7rem;border-top:1px solid var(--slate-rule);
  font-family:var(--display);font-size:1.16rem;color:var(--charcoal);max-width:46ch}
@media (max-width:820px){.quotes{grid-template-columns:1fr;gap:2.2rem}}

/* world map with the instruments sitting on their jurisdictions */
.globe{position:relative;margin-top:clamp(48px,6vw,80px)}
.globe svg{width:100%;height:auto;display:block}
.globe svg path{fill:none;stroke:var(--slate-rule);stroke-width:.45;
  stroke-linejoin:round;stroke-linecap:round}
.pin{position:absolute;left:var(--x);top:var(--y);transform:translateY(-50%);max-width:25%;
  margin-left:-.95rem;padding:.8rem .95rem;border-radius:var(--r-sm);
  background:rgba(242,236,229,.74);backdrop-filter:blur(3px);
  border:1px solid var(--charcoal)}
.map-note{position:absolute;left:58%;top:87%;font-family:var(--mono);
  font-size:clamp(.58rem,.72vw,.72rem);letter-spacing:.02em;color:var(--cool-700);margin:0}
@media (max-width:820px){.map-note{position:static;margin-top:.4rem}}
.pin span{display:block;font-family:var(--mono);font-size:clamp(.64rem,.81vw,.81rem);
  line-height:1.85;letter-spacing:.02em;text-transform:uppercase;color:var(--charcoal)}
@media (max-width:820px){
  .globe{display:grid;gap:2.2rem;margin-top:2.8rem}
  .globe svg{display:none}
  .pin{position:static;max-width:none;transform:none;margin:0;padding:0;
    background:none;border:0;backdrop-filter:none}
  .pin span{font-size:.81rem;line-height:1.9}
}

/* ─── 03 obligation stack · diagram 1 ────────────────────────────── */
.stack{margin-top:3.4rem;border-top:1px solid var(--charcoal-700)}
.row{display:grid;grid-template-columns:minmax(150px,1.15fr) minmax(150px,1.15fr) 2.5fr;
  gap:clamp(16px,2.6vw,40px);padding:1.6rem 0;border-bottom:1px solid var(--charcoal-700);
  align-items:baseline}
.eq .m{display:none}
.row .inst{display:block;font-family:var(--mono);font-size:.73rem;letter-spacing:.04em;
  text-transform:uppercase;color:var(--cool-400)}
.row .inst .alt{display:block;margin-top:.6rem;font-size:.68rem;letter-spacing:.03em}
.row .ob{font-family:var(--display);font-size:1.16rem;font-weight:700;color:#fff}
.row .dem{font-size:.94rem;line-height:1.55;color:var(--cool-400);margin:0}
.row.dated .inst .num{color:var(--magenta)}
.stack-note{margin-top:2.5rem;font-family:var(--display);font-size:1.3rem;color:#fff}
.frame{margin-top:1.5rem;max-width:66ch;color:var(--cool-400);font-size:.98rem}
.carve{margin-top:2.2rem;padding:1rem 1.3rem;border-left:2px solid var(--charcoal-600);
  font-size:.87rem;color:var(--cool-400);max-width:60ch}
@media (max-width:820px){.row{grid-template-columns:1fr;gap:.5rem;padding:1.4rem 0}}

/* ─── 04 position · the breath ───────────────────────────────────── */
.breath{text-align:center}
.breath h2{max-width:18ch;margin-inline:auto;font-size:clamp(2.2rem,4.6vw,3.5rem)}
.breath .lede{margin-inline:auto;max-width:52ch}
.principles{display:flex;flex-wrap:wrap;justify-content:center;gap:.6rem 2.2rem;
  margin-top:3.2rem;padding-top:2.2rem;border-top:1px solid var(--cool-200)}
.principles span{font-family:var(--mono);font-size:.75rem;letter-spacing:.09em;
  text-transform:uppercase;color:var(--cool-700)}

/* ─── 05 mechanism · diagram 2 ───────────────────────────────────── */
.flow{margin-top:3.6rem;display:grid;gap:0;justify-items:center}
.node{width:100%;max-width:660px;text-align:center;border:1.5px solid var(--charcoal);
  background:var(--white);padding:1.5rem 1.7rem;border-radius:var(--r)}
.node .k{display:block;font-family:var(--mono);font-size:.71rem;letter-spacing:.11em;
  text-transform:uppercase;color:var(--cool-700)}
.node .v{display:block;font-family:var(--display);font-size:1.3rem;font-weight:700;margin-top:.5rem}
.node p{margin:.7rem 0 0;font-size:.9rem;line-height:1.5;color:var(--charcoal-500)}
.node.core{background:var(--charcoal);border-color:var(--charcoal);color:#fff}
.node.core .k{color:var(--cool-400)}
.node.core p{color:var(--cool-400)}
.arrow{width:1.5px;height:34px;background:var(--charcoal)}
.outs{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));
  gap:1px;background:var(--slate-rule);width:100%;border:1px solid var(--slate-rule);
  border-radius:var(--r);overflow:hidden}
.out{background:var(--slate);padding:1.15rem 1.3rem;font-size:.9rem;line-height:1.45}
.out b{display:block;font-family:var(--mono);font-size:.68rem;letter-spacing:.06em;
  text-transform:uppercase;color:var(--cool-700);margin-bottom:.4rem;font-weight:500}
.foot-note{margin-top:2.4rem;font-size:.88rem;color:var(--cool-700);max-width:64ch}

/* ─── 06 services ────────────────────────────────────────────────── */
.lens{display:inline-flex;margin-top:2.6rem;border:1.5px solid var(--charcoal);
  border-radius:var(--pill);padding:3px;gap:3px}
.lens button{font-family:var(--body);font-size:.83rem;font-weight:600;letter-spacing:.02em;
  padding:.7rem 1.4rem;border:0;background:transparent;color:var(--charcoal-500);cursor:pointer;transition:.15s}
.lens button{border-radius:var(--pill)}
.lens button[aria-selected=true]{background:var(--charcoal);color:#fff}
.svc{margin-top:2.8rem;border-top:1px solid var(--cool-200)}
.svc article{display:grid;grid-template-columns:minmax(190px,.95fr) 2.5fr;
  gap:clamp(18px,3vw,48px);padding:2rem 0;border-bottom:1px solid var(--cool-200)}
.svc .inst{font-family:var(--mono);font-size:.71rem;letter-spacing:.045em;
  text-transform:uppercase;color:var(--cool-700)}
.svc h3{margin-top:.5rem}
.svc .what{margin:0 0 1rem;color:var(--charcoal-500);font-size:.98rem}
.svc .lensbody{font-size:.95rem;line-height:1.55;padding:1rem 1.3rem;background:var(--slate);
  border-left:2px solid var(--charcoal);margin:0;border-radius:var(--r-sm)}
.svc .lensbody b{font-family:var(--mono);font-size:.68rem;letter-spacing:.06em;
  text-transform:uppercase;display:block;margin-bottom:.35rem;color:var(--cool-700);font-weight:500}
.svc .extra{margin:1rem 0 0;font-size:.9rem;color:var(--cool-700)}
[hidden]{display:none!important}
@media (max-width:820px){.svc article{grid-template-columns:1fr;gap:.9rem}}

/* ─── 07 defensibility ───────────────────────────────────────────── */
.points{columns:2;column-gap:clamp(30px,4.5vw,72px);margin-top:3.2rem}
.point{break-inside:avoid}
.point{padding:1.7rem 0;border-top:1px solid var(--slate-rule)}
.point .n{font-family:var(--mono);font-size:.73rem;color:var(--cool-700);letter-spacing:.06em}
.point h3{margin:.5rem 0 .6rem}
.point p{margin:0;font-size:.94rem;line-height:1.55;color:var(--charcoal-500)}
.s-dark .point{border-top-color:var(--charcoal-700)}
.s-dark .point .n,.s-dark .point p{color:var(--cool-400)}
.proof{margin-top:3.2rem;padding:1.6rem 1.9rem;border:1px solid var(--charcoal-600);border-radius:var(--r);
  font-family:var(--display);font-size:clamp(1.1rem,1.9vw,1.35rem);color:#fff;max-width:62ch}
.proof .num{color:#fff}
.closing{margin-top:2rem;font-size:.98rem;color:var(--cool-400);max-width:62ch}
.closing em{font-style:italic;color:#fff}
@media (max-width:820px){.points{columns:1}}

/* ─── 08 roles ───────────────────────────────────────────────────── */
.roles{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(12px,1.4vw,18px);margin-top:3.2rem}
.role{background:var(--white);border:1px solid var(--slate-rule);border-radius:var(--r);
  padding:1.7rem 1.5rem}
.role h3{font-size:1.05rem;margin-bottom:.8rem}
.role p{margin:0;font-size:.92rem;line-height:1.55;color:var(--charcoal-500)}
@media (max-width:980px){.roles{grid-template-columns:repeat(2,1fr)}}
@media (max-width:560px){.roles{grid-template-columns:1fr}}

/* ─── 09 confidentiality ─────────────────────────────────────────── */
.conf{display:grid;grid-template-columns:1fr 1.15fr;gap:clamp(30px,5vw,80px);align-items:start}
.conf ul{list-style:none;margin:0;padding:0}
.conf li{padding:1.05rem 0;border-bottom:1px solid var(--cool-200);font-size:.98rem}
.conf li:first-child{border-top:1px solid var(--cool-200)}
.conf .after{margin-top:1.7rem;border:0;padding:0;font-family:var(--body);
  font-size:.92rem;color:var(--cool-700)}
@media (max-width:820px){.conf{grid-template-columns:1fr}}

/* ─── 10 demo  ───────────────────────────────────────────────────── */
.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(12px,1.4vw,18px);margin-top:1.8rem}
.step{background:var(--charcoal-800);border:1px solid var(--charcoal-700);
  border-radius:var(--r);padding:1.6rem 1.5rem}
.step .n{font-family:var(--mono);font-size:.73rem;color:var(--cool-400);letter-spacing:.06em}
.step h3{font-size:1rem;margin:.55rem 0 .6rem}
.step p{margin:0;font-size:.88rem;line-height:1.5;color:var(--cool-400)}
@media (max-width:980px){.steps{grid-template-columns:repeat(2,1fr)}}
@media (max-width:520px){.steps{grid-template-columns:1fr}}

form{margin-top:3.4rem;display:grid;grid-template-columns:repeat(2,1fr);
  gap:1.3rem clamp(18px,2.4vw,32px);max-width:820px}
.field{display:flex;flex-direction:column}
.field.wide{grid-column:1/-1}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;
  clip:rect(0 0 0 0);white-space:nowrap;border:0}
input,textarea{font-family:var(--body);font-size:.97rem;padding:.95rem 1.15rem;
  background:var(--charcoal-800);border:1px solid var(--charcoal-600);color:#fff;
  border-radius:var(--r-sm)}
input::placeholder,textarea::placeholder{color:#8E949A;opacity:1}
input:focus,textarea:focus{border-color:var(--cool-400);outline:none}
textarea{resize:vertical;min-height:110px;border-radius:var(--r)}
.next-h{margin-top:3.6rem;font-family:var(--mono);font-size:.7rem;letter-spacing:.17em;
  text-transform:uppercase;color:var(--cool-400)}
.actions{grid-column:1/-1;display:flex;align-items:center;gap:1.5rem;flex-wrap:wrap;margin-top:.4rem}
.actions small{font-size:.84rem;color:var(--cool-400)}
.actions a{color:var(--harbour-400)}
@media (max-width:640px){form{grid-template-columns:1fr}}

/* ─── footer ─────────────────────────────────────────────────────── */
footer{background:var(--charcoal);color:var(--cool-400);padding:clamp(52px,6vw,76px) 0 3rem;
  border-top:1px solid var(--charcoal-700)}
.frow{display:flex;flex-wrap:wrap;gap:2rem;align-items:flex-start;justify-content:space-between}
footer img{width:118px;opacity:.94}
.flinks{display:flex;gap:1.6rem;list-style:none;padding:0;margin:0;flex-wrap:wrap}
footer a{color:var(--cool-400);text-decoration:none;font-size:.86rem}
footer a:hover{color:#fff}
.legal{margin-top:3rem;padding-top:1.6rem;border-top:1px solid var(--charcoal-700);
  display:flex;flex-wrap:wrap;align-items:center;gap:.5rem 1.5rem;
  font-size:.79rem;line-height:1.6;color:var(--charcoal-500)}
/* footer a sets .86rem, which made these links a size larger than the two spans
   beside them and left the baselines out of step. One size for the whole row. */
.legal a{font-size:inherit;line-height:inherit}
/* stage line */
.stage{margin:clamp(30px,3.4vw,44px) 0 0;padding-top:1.5rem;
  border-top:1px solid var(--slate-rule);font-size:.95rem;font-weight:700;
  color:var(--charcoal-500)}
.stage b{color:var(--charcoal);font-weight:700}
.stage a{display:inline-block;background:var(--magenta);color:var(--charcoal);
  font-weight:700;text-decoration:none;border-radius:var(--pill);
  padding:.12em .7em;line-height:1.35;transition:.18s}
.stage a:hover{background:#ff8fef}

/* services · five cards */
.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(14px,1.6vw,22px);margin-top:3.2rem}
.card{background:var(--white);border:1px solid var(--slate-rule);border-radius:var(--r);
  padding:1.15rem 1.3rem;display:flex;align-items:center;gap:1.05rem}
.card .ico{flex:0 0 52px;width:52px;height:52px;border-radius:var(--r-sm);
  background:var(--slate);display:grid;place-items:center}
.card .ico img{width:34px;height:34px}
.card h3{color:var(--charcoal);font-size:1.02rem;line-height:1.25;margin:0}
@media (max-width:980px){.cards{grid-template-columns:repeat(2,1fr)}}
@media (max-width:620px){.cards{grid-template-columns:1fr}}

/* services on Charcoal */
.s-dark .svc{border-top-color:var(--charcoal-700)}
.s-dark .svc article{border-bottom-color:var(--charcoal-700)}
.s-dark .svc .inst,.s-dark .svc .what,.s-dark .svc .extra{color:var(--cool-400)}
.s-dark .svc .lensbody{background:var(--charcoal-800);border-left-color:var(--cool-400);color:var(--slate-100)}
.s-dark .svc .lensbody b{color:var(--cool-400)}
.s-dark .lens{border-color:var(--cool-400)}
.s-dark .lens button{color:var(--cool-400)}
.s-dark .lens button[aria-selected=true]{background:#fff;color:var(--charcoal)}

/* ─── value created (mockup) ──────────────────────────────────────── */
.value{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(12px,1.4vw,18px);margin-top:3.2rem}
.val{background:var(--white);border:1px solid var(--slate-rule);border-radius:var(--r);
  padding:1.6rem 1.5rem 1.7rem;display:flex;flex-direction:column}
.val .n{font-family:var(--mono);font-size:.7rem;letter-spacing:.09em;color:var(--cool-700)}
.val h3{margin:.75rem 0 .65rem;font-size:1.06rem}
.val p{margin:0;font-size:.92rem;line-height:1.55;color:var(--charcoal-500)}
.fifth{margin-top:clamp(12px,1.4vw,18px);background:var(--charcoal);border-radius:var(--r);
  padding:clamp(20px,2.2vw,28px) clamp(24px,3vw,42px);
  display:grid;grid-template-columns:minmax(200px,.85fr) 2fr;
  column-gap:clamp(20px,3vw,56px);row-gap:1rem;align-items:start}
.fifth .n{grid-column:1/-1;font-family:var(--mono);font-size:.7rem;
  letter-spacing:.09em;color:var(--magenta)}
.fifth h3{color:#fff;font-size:clamp(1.2rem,2vw,1.55rem);margin:0;max-width:20ch;text-wrap:balance}
.fifth p{margin:0;font-size:clamp(.98rem,1.25vw,1.1rem);line-height:1.6;color:var(--cool-400);max-width:62ch}
@media (max-width:980px){.value{grid-template-columns:repeat(2,1fr)}}
@media (max-width:620px){.value{grid-template-columns:1fr}
  .fifth{grid-template-columns:1fr;gap:1.2rem}}

/* ─── contact form states ────────────────────────────────────────── */
/* .btn sets display:inline-block, which beats the UA sheet's [hidden] rule —
   without this the security submit is visible on every visit. */
.btn[hidden],.hp[hidden]{display:none!important}
.thanks{grid-column:1/-1;background:var(--charcoal-800);border:1px solid var(--charcoal-600);
  border-radius:var(--r);padding:1.7rem 1.8rem;margin-top:3.4rem;max-width:820px}
.thanks h3{color:#fff;margin:0 0 .5rem}
.thanks p{margin:0;color:var(--cool-400);font-size:.95rem}
.form-error{grid-column:1/-1;margin:0;font-size:.88rem;color:var(--magenta)}
form[aria-busy=true]{opacity:.6}

/* ─── cookie consent ─────────────────────────────────────────────── */
/* Rendered by assets/site.js only when analytics is configured and no choice
   has been stored yet. Nothing loads from Google before Accept is pressed. */
.consent{position:fixed;inset-inline:0;bottom:0;z-index:80;background:rgba(33,36,39,.97);
  border-top:1px solid var(--charcoal-600);backdrop-filter:blur(12px);
  padding:1rem var(--gut);display:flex;flex-wrap:wrap;gap:1rem 1.6rem;
  align-items:center;justify-content:center}
.consent p{margin:0;font-size:.86rem;color:var(--cool-400);max-width:62ch}
.consent a{color:var(--harbour-400)}
.consent .btn{padding:.5rem 1.15rem;font-size:.8rem}

/* mobile hero wash — must come after the base .hero::before rule or it loses on source order */
@media (max-width:900px){.hero::before{background-image:linear-gradient(rgba(20,22,25,.66),rgba(20,22,25,.66))}}
