/* ==========================================================================
   seatbeltvendor.com — "The Component Blueprint" design system
   Self-contained. No external requests. No build step.
   ========================================================================== */

/* ---------- 1. Self-hosted typefaces ---------- */
@font-face{font-family:'Space Grotesk';font-style:normal;font-weight:300 700;font-display:swap;
  src:url(../fonts/SpaceGrotesk-var.woff2) format('woff2');}
@font-face{font-family:'Inter';font-style:normal;font-weight:100 900;font-display:swap;
  src:url(../fonts/Inter-var.woff2) format('woff2');}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:swap;
  src:url(../fonts/IBMPlexMono-400.woff2) format('woff2');}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:500;font-display:swap;
  src:url(../fonts/IBMPlexMono-500.woff2) format('woff2');}

/* ---------- 2. Tokens ---------- */
:root{
  --petrol-900:#08222B;
  --petrol-800:#0C3040;
  --petrol-700:#10404F;
  --petrol-600:#17566A;
  --petrol-400:#4C8395;
  --petrol-200:#B4CBD3;

  --copper-700:#8A5837;
  --copper-600:#935F3C;
  --copper-500:#B07A52;
  --copper-200:#E6CDB8;

  /* Signal orange, split by role so every use meets WCAG AA 4.5:1.
     --signal      : fills, borders, rules, dots (non-text)
     --signal-btn  : solid button background under white text
     --signal-text : orange TEXT on the light surfaces
     --signal-dark : orange TEXT on the petrol-900 surfaces */
  --signal:#E2560F;
  --signal-btn:#CC4E0E;
  --signal-text:#B9470C;
  --signal-dark:#F2782F;
  --signal-ink:#B93F06;
  --signal-wash:#FDEDE4;

  --warm-050:#F7F5F0;
  --warm-100:#F0EDE6;
  --warm-200:#E4E0D6;
  --warm-300:#D3CEC1;
  --paper:#FCFBF8;

  --graphite:#1F2528;
  --graphite-80:#3E484D;
  --graphite-60:#616E75;
  --graphite-40:#646D71;

  --line:#A7BAC2;
  --line-soft:#CBD6DB;
  --line-faint:rgba(16,64,79,.11);

  --ff-display:'Space Grotesk','Helvetica Neue',Helvetica,Arial,sans-serif;
  --ff-body:'Inter','Helvetica Neue',Helvetica,Arial,sans-serif;
  --ff-mono:'IBM Plex Mono',ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;

  --spine:74px;
  --headbar:34px;
  --headmain:70px;
  --header-h:calc(var(--headbar) + var(--headmain));

  --shell:1340px;
  --gut:clamp(20px,5vw,60px);

  --r-sm:3px;
  --r-md:5px;

  --ease:cubic-bezier(.22,.61,.36,1);
}

/* ---------- 3. Reset & base ---------- */
*,*::before,*::after{box-sizing:border-box;}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto;}}
body{
  margin:0;
  background:var(--warm-100);
  color:var(--graphite);
  font-family:var(--ff-body);
  font-size:16px;
  line-height:1.68;
  font-weight:400;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  overflow-x:hidden;
}
img{max-width:100%;height:auto;display:block;border:0;}
svg{display:block;}
a{color:inherit;text-decoration:none;}
button{font:inherit;color:inherit;}
h1,h2,h3,h4,h5{margin:0;font-family:var(--ff-display);font-weight:600;letter-spacing:-.018em;line-height:1.06;color:var(--petrol-900);}
p{margin:0 0 1.1em;}
p:last-child{margin-bottom:0;}
ul,ol{margin:0 0 1.1em;padding-left:1.15em;}
li{margin-bottom:.45em;}
hr{border:0;border-top:1px solid var(--line-faint);margin:0;}
::selection{background:var(--signal-btn);color:#fff;}

.skip{
  position:absolute;left:-9999px;top:0;z-index:999;
  background:var(--signal-btn);color:#fff;padding:12px 20px;
  font-family:var(--ff-mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;
}
.skip:focus{left:0;}

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

/* ---------- 4. Layout shell ---------- */
.shell{max-width:var(--shell);margin:0 auto;padding-left:var(--gut);padding-right:var(--gut);width:100%;}
.page{padding-top:var(--header-h);}
main{display:block;}

/* Left engineering spine — desktop only */
.spine{display:none;}
@media (min-width:1180px){
  body{padding-left:var(--spine);}
  .spine{
    display:block;position:fixed;inset:0 auto 0 0;width:var(--spine);
    background:var(--petrol-900);z-index:60;
    border-right:1px solid rgba(255,255,255,.09);
  }
  .spine__mark{
    position:absolute;top:22px;left:0;right:0;text-align:center;
    font-family:var(--ff-mono);font-size:11px;font-weight:500;color:var(--signal-dark);
    letter-spacing:.1em;
  }
  .spine__rot{
    position:absolute;top:50%;left:50%;
    transform:translate(-50%,-50%) rotate(180deg);
    writing-mode:vertical-rl;
    font-family:var(--ff-mono);font-size:10.5px;letter-spacing:.34em;
    text-transform:uppercase;color:rgba(255,255,255,.58);white-space:nowrap;
  }
  .spine__ticks{position:absolute;top:70px;bottom:70px;right:0;width:11px;}
  .spine__ticks i{
    position:absolute;right:0;height:1px;background:rgba(255,255,255,.24);width:5px;display:block;
  }
  .spine__ticks i:nth-child(5n+1){width:11px;background:rgba(255,255,255,.42);}
  .spine__foot{
    position:absolute;bottom:20px;left:0;right:0;text-align:center;
    font-family:var(--ff-mono);font-size:9.5px;color:rgba(255,255,255,.58);letter-spacing:.06em;
  }
}

/* ---------- 5. Header ---------- */
.hdr{position:fixed;top:0;left:0;right:0;z-index:70;}
@media (min-width:1180px){.hdr{left:var(--spine);}}

.hdr__bar{
  height:var(--headbar);background:var(--petrol-900);color:rgba(255,255,255,.62);
  display:flex;align-items:center;
  font-family:var(--ff-mono);font-size:10.5px;letter-spacing:.11em;text-transform:uppercase;
}
.hdr__bar .shell{display:flex;align-items:center;justify-content:space-between;gap:18px;}
.hdr__barleft{display:flex;align-items:center;gap:22px;min-width:0;}
.hdr__barleft span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.hdr__dot{width:6px;height:6px;background:var(--signal);border-radius:50%;flex:none;
  box-shadow:0 0 0 3px rgba(226,86,15,.22);}
.hdr__barright{display:flex;align-items:center;gap:20px;flex:none;}
.hdr__barright a{color:rgba(255,255,255,.78);border-bottom:1px solid transparent;transition:border-color .2s,color .2s;}
.hdr__barright a:hover{color:#fff;border-bottom-color:var(--signal);}
@media (max-width:900px){.hdr__barleft span.is-optional{display:none;}}
@media (max-width:640px){
  .hdr__bar{font-size:9.5px;letter-spacing:.07em;}
  .hdr__barright a.is-optional{display:none;}
}

.hdr__main{
  height:var(--headmain);background:rgba(252,251,248,.94);
  backdrop-filter:saturate(160%) blur(10px);-webkit-backdrop-filter:saturate(160%) blur(10px);
  border-bottom:1px solid var(--line-faint);
}
.hdr__main .shell{height:100%;display:flex;align-items:center;justify-content:space-between;gap:22px;}
.hdr.is-stuck .hdr__main{box-shadow:0 1px 22px rgba(8,34,43,.09);}

.brand{display:flex;align-items:center;gap:11px;flex:none;}
.brand__glyph{
  width:30px;height:30px;flex:none;border:1.5px solid var(--petrol-700);
  position:relative;border-radius:2px;
}
.brand__glyph::before{
  content:"";position:absolute;left:50%;top:3px;bottom:3px;width:1.5px;
  background:var(--signal);transform:translateX(-50%) rotate(24deg);transform-origin:50% 50%;
}
.brand__glyph::after{
  content:"";position:absolute;left:4px;right:4px;bottom:6px;height:1.5px;background:var(--petrol-700);
}
.brand__txt{display:flex;flex-direction:column;line-height:1;}
.brand__name{font-family:var(--ff-display);font-weight:700;font-size:16.5px;letter-spacing:-.02em;color:var(--petrol-900);}
.brand__name em{font-style:normal;color:var(--graphite-40);font-weight:500;}
.brand__sub{font-family:var(--ff-mono);font-size:8.5px;letter-spacing:.22em;text-transform:uppercase;color:var(--copper-600);margin-top:4px;}
@media (max-width:400px){.brand__name{font-size:14.5px;} .brand__sub{letter-spacing:.16em;}}

.nav{display:flex;align-items:center;gap:2px;}
@media (max-width:1099px){.nav{display:none;}}
.nav a{
  position:relative;padding:9px 11px;white-space:nowrap;
  font-size:13.5px;font-weight:500;color:var(--graphite-80);letter-spacing:-.005em;
  transition:color .18s var(--ease);
}
.nav a::after{
  content:"";position:absolute;left:11px;right:11px;bottom:2px;height:1.5px;
  background:var(--signal);transform:scaleX(0);transform-origin:left;
  transition:transform .28s var(--ease);
}
.nav a:hover{color:var(--petrol-900);}
.nav a:hover::after{transform:scaleX(1);}
.nav a[aria-current="page"]{color:var(--petrol-900);font-weight:600;}
.nav a[aria-current="page"]::after{transform:scaleX(1);}

.hdr__cta{display:flex;align-items:center;gap:12px;flex:none;}
@media (max-width:1099px){.hdr__cta .btn{display:none;}}

/* Burger */
.burger{
  display:none;width:46px;height:40px;border:1px solid var(--line-soft);background:var(--paper);
  border-radius:var(--r-sm);cursor:pointer;padding:0;position:relative;
  transition:border-color .2s,background .2s;
}
.burger:hover{border-color:var(--petrol-400);}
@media (max-width:1099px){.burger{display:block;}}
.burger i{
  position:absolute;left:12px;right:12px;height:1.6px;background:var(--petrol-800);display:block;
  transition:transform .3s var(--ease),opacity .18s;
}
.burger i:nth-child(1){top:14px;}
.burger i:nth-child(2){top:19.2px;}
.burger i:nth-child(3){top:24.4px;}
.burger[aria-expanded="true"] i:nth-child(1){transform:translateY(5.2px) rotate(45deg);}
.burger[aria-expanded="true"] i:nth-child(2){opacity:0;}
.burger[aria-expanded="true"] i:nth-child(3){transform:translateY(-5.2px) rotate(-45deg);}

/* ---------- 6. Mobile drawer ---------- */
.drawer{
  position:fixed;inset:0;z-index:65;background:var(--petrol-900);color:#fff;
  padding:calc(var(--header-h) + 16px) 0 34px;
  overflow-y:auto;-webkit-overflow-scrolling:touch;
  opacity:0;visibility:hidden;transform:translateY(-10px);
  /* visibility is switched, never interpolated: instant on open, delayed on close
     so the fade-out is still seen. Interpolating it is unreliable across engines. */
  transition:opacity .28s var(--ease),transform .32s var(--ease),visibility 0s linear .32s;
}
.drawer.is-open{
  opacity:1;visibility:visible;transform:none;
  transition:opacity .28s var(--ease),transform .32s var(--ease),visibility 0s linear 0s;
}
@media (min-width:1100px){.drawer{display:none;}}
.drawer__grid{border-top:1px solid rgba(255,255,255,.12);}
.drawer__grid a{
  display:flex;align-items:baseline;gap:14px;
  padding:15px 2px;border-bottom:1px solid rgba(255,255,255,.12);
  font-family:var(--ff-display);font-size:22px;font-weight:500;letter-spacing:-.02em;color:#fff;
  transition:padding-left .25s var(--ease),color .2s;
}
.drawer__grid a:hover,.drawer__grid a:focus-visible{padding-left:12px;color:var(--signal-dark);}
.drawer__grid a[aria-current="page"]{color:var(--signal-dark);}
.drawer__grid a b{font-family:var(--ff-mono);font-size:11px;font-weight:400;color:rgba(255,255,255,.58);flex:none;width:26px;}
.drawer__grid a[aria-current="page"] b{color:var(--signal-dark);}
.drawer__foot{margin-top:28px;display:grid;gap:10px;}
.drawer__foot .btn{width:100%;justify-content:center;}
.drawer__meta{
  margin-top:26px;padding-top:18px;border-top:1px solid rgba(255,255,255,.12);
  font-family:var(--ff-mono);font-size:11px;letter-spacing:.05em;color:rgba(255,255,255,.55);
  display:grid;gap:7px;
}
.drawer__meta a{color:#fff;}
body.is-locked{overflow:hidden;}

/* ---------- 7. Buttons ---------- */
.btn{
  display:inline-flex;align-items:center;gap:10px;
  padding:13px 21px;border-radius:var(--r-sm);border:1.5px solid transparent;
  font-family:var(--ff-mono);font-size:11.5px;font-weight:500;letter-spacing:.13em;text-transform:uppercase;
  cursor:pointer;text-align:left;
  transition:background .22s var(--ease),color .22s var(--ease),border-color .22s var(--ease),transform .22s var(--ease);
}
.btn svg{width:13px;height:13px;flex:none;transition:transform .28s var(--ease);}
.btn:hover svg{transform:translateX(4px);}
.btn--signal{background:var(--signal-btn);color:#fff;border-color:var(--signal-btn);}
.btn--signal:hover{background:var(--signal-ink);border-color:var(--signal-ink);}
.btn--petrol{background:var(--petrol-800);color:#fff;border-color:var(--petrol-800);}
.btn--petrol:hover{background:var(--petrol-900);border-color:var(--petrol-900);}
.btn--ghost{background:transparent;color:var(--petrol-800);border-color:var(--line);}
.btn--ghost:hover{border-color:var(--petrol-700);background:rgba(16,64,79,.05);}
.btn--onDark{background:transparent;color:#fff;border-color:rgba(255,255,255,.34);}
.btn--onDark:hover{border-color:#fff;background:rgba(255,255,255,.09);}
.btn--sm{padding:10px 15px;font-size:10.5px;letter-spacing:.11em;}
@media (max-width:420px){.btn{padding:12px 16px;font-size:10.5px;letter-spacing:.1em;}}

/* Text link with technical arrow */
.tlink{
  display:inline-flex;align-items:center;gap:8px;
  font-family:var(--ff-mono);font-size:11.5px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;
  color:var(--petrol-700);border-bottom:1px solid var(--line-soft);padding-bottom:3px;
  transition:color .2s,border-color .2s;
}
.tlink:hover{color:var(--signal-text);border-color:var(--signal-text);}
.tlink svg{width:12px;height:12px;transition:transform .26s var(--ease);}
.tlink:hover svg{transform:translateX(4px);}

/* Inline prose link */
.ilink{color:var(--petrol-600);border-bottom:1px solid var(--petrol-200);transition:color .2s,border-color .2s;}
.ilink:hover{color:var(--signal-text);border-bottom-color:var(--signal-text);}

/* ---------- 8. Blueprint devices ---------- */
.bp-grid{
  background-image:
    linear-gradient(to right,var(--line-faint) 1px,transparent 1px),
    linear-gradient(to bottom,var(--line-faint) 1px,transparent 1px);
  background-size:64px 64px;
}
.bp-grid--fine{
  background-image:
    linear-gradient(to right,rgba(16,64,79,.055) 1px,transparent 1px),
    linear-gradient(to bottom,rgba(16,64,79,.055) 1px,transparent 1px);
  background-size:22px 22px;
}
.bp-dark{
  background-image:
    linear-gradient(to right,rgba(255,255,255,.055) 1px,transparent 1px),
    linear-gradient(to bottom,rgba(255,255,255,.055) 1px,transparent 1px);
  background-size:58px 58px;
}

/* corner tick frame */
.tickframe{position:relative;}
.tickframe::before,.tickframe::after{
  content:"";position:absolute;width:15px;height:15px;pointer-events:none;
}
.tickframe::before{top:-1px;left:-1px;border-top:1.5px solid var(--copper-500);border-left:1.5px solid var(--copper-500);}
.tickframe::after{bottom:-1px;right:-1px;border-bottom:1.5px solid var(--copper-500);border-right:1.5px solid var(--copper-500);}

/* mono technical label */
.tlabel{
  font-family:var(--ff-mono);font-size:10.5px;font-weight:500;
  letter-spacing:.2em;text-transform:uppercase;color:var(--copper-600);
}
.tlabel--muted{color:var(--graphite-40);}
.tlabel--signal{color:var(--signal-text);}
.tlabel--light{color:rgba(255,255,255,.55);}

/* section eyebrow: § 01 ————— TITLE */
.eyebrow{display:flex;align-items:center;gap:14px;margin-bottom:20px;}
.eyebrow__num{
  font-family:var(--ff-mono);font-size:11px;font-weight:500;letter-spacing:.16em;
  color:var(--signal-text);flex:none;
}
.eyebrow__txt{
  font-family:var(--ff-mono);font-size:10.5px;font-weight:500;letter-spacing:.22em;
  text-transform:uppercase;color:var(--graphite-60);flex:none;
}
.eyebrow__rule{flex:1;height:1px;background:var(--line-soft);min-width:16px;}
.eyebrow--light .eyebrow__txt{color:rgba(255,255,255,.6);}
.eyebrow--light .eyebrow__rule{background:rgba(255,255,255,.2);}
@media (max-width:520px){
  .eyebrow{gap:10px;flex-wrap:wrap;}
  .eyebrow__txt{letter-spacing:.16em;font-size:9.5px;}
}

/* dimension line (horizontal, with end caps) */
.dimline{position:relative;height:1px;background:var(--line);margin:0;}
.dimline::before,.dimline::after{
  content:"";position:absolute;top:-4px;width:1px;height:9px;background:var(--line);
}
.dimline::before{left:0;}
.dimline::after{right:0;}

/* annotation callout w/ leader */
.callout{position:relative;padding-left:26px;}
.callout::before{
  content:"";position:absolute;left:0;top:8px;width:16px;height:1px;background:var(--copper-500);
}
.callout::after{
  content:"";position:absolute;left:16px;top:5.5px;width:6px;height:6px;border-radius:50%;
  border:1.5px solid var(--copper-500);background:var(--paper);
}

/* ---------- 9. Typography scale ---------- */
.h-xl{font-size:clamp(2.5rem,6.4vw,5.1rem);line-height:.98;letter-spacing:-.032em;font-weight:600;}
.h-lg{font-size:clamp(2.05rem,4.6vw,3.5rem);line-height:1.03;letter-spacing:-.028em;}
.h-md{font-size:clamp(1.55rem,2.9vw,2.3rem);line-height:1.1;letter-spacing:-.022em;}
.h-sm{font-size:clamp(1.16rem,1.9vw,1.42rem);line-height:1.22;letter-spacing:-.014em;}
.h-xs{font-size:1.02rem;line-height:1.3;letter-spacing:-.008em;font-weight:600;}
.lede{font-size:clamp(1.02rem,1.55vw,1.19rem);line-height:1.62;color:var(--graphite-80);max-width:62ch;}
.body-lg{font-size:1.03rem;line-height:1.7;color:var(--graphite-80);}
.muted{color:var(--graphite-60);}
.on-dark{color:#fff;}
.on-dark .lede,.on-dark .body-lg,.on-dark p{color:rgba(255,255,255,.76);}
.on-dark h1,.on-dark h2,.on-dark h3,.on-dark h4{color:#fff;}
.mono{font-family:var(--ff-mono);}
.measure{max-width:66ch;}
.measure-sm{max-width:52ch;}

/* ---------- 10. Sections ---------- */
.sec{padding:clamp(58px,8vw,110px) 0;position:relative;}
.sec--tight{padding:clamp(44px,5.5vw,74px) 0;}
.sec--paper{background:var(--paper);}
.sec--warm{background:var(--warm-200);}
.sec--petrol{background:var(--petrol-900);color:#fff;}
.sec--petrol h2,.sec--petrol h3{color:#fff;}
.sec--rule{border-top:1px solid var(--line-faint);}

/* ---------- 11. Page masthead ---------- */
.mast{
  position:relative;overflow:hidden;
  background:var(--petrol-900);color:#fff;
  padding:clamp(52px,7.5vw,96px) 0 clamp(46px,6vw,80px);
}
.mast__bg{position:absolute;inset:0;opacity:.5;}
.mast__glow{
  position:absolute;right:-16%;top:-40%;width:62%;padding-bottom:62%;
  background:radial-gradient(circle,rgba(23,86,106,.72),transparent 68%);pointer-events:none;
}
.mast .shell{position:relative;z-index:2;}
.mast__crumb{
  display:flex;flex-wrap:wrap;align-items:center;gap:9px;margin-bottom:26px;
  font-family:var(--ff-mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;
  color:rgba(255,255,255,.58);
}
.mast__crumb a{color:rgba(255,255,255,.72);border-bottom:1px solid transparent;}
.mast__crumb a:hover{color:#fff;border-bottom-color:var(--signal);}
.mast__crumb span[aria-current]{color:var(--signal-dark);}
.mast__grid{display:grid;grid-template-columns:1fr;gap:clamp(26px,4vw,54px);align-items:end;}
@media (min-width:940px){.mast__grid{grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);}}
.mast h1{color:#fff;}
.mast__lede{color:rgba(255,255,255,.76);font-size:clamp(1rem,1.5vw,1.15rem);line-height:1.62;max-width:56ch;}
.mast__spec{
  border-top:1px solid rgba(255,255,255,.18);padding-top:18px;
  display:grid;gap:13px;
}
.mast__spec dl{margin:0;display:grid;grid-template-columns:auto 1fr;gap:6px 16px;align-items:baseline;}
.mast__spec dt{font-family:var(--ff-mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:rgba(255,255,255,.58);}
.mast__spec dd{margin:0;font-size:13.5px;color:rgba(255,255,255,.88);}

/* ---------- 12. Hero (home) ---------- */
.hero{position:relative;overflow:hidden;background:var(--warm-100);padding:clamp(34px,5vw,60px) 0 clamp(52px,7vw,96px);}
.hero__bg{position:absolute;inset:0;opacity:.85;pointer-events:none;}
.hero .shell{position:relative;z-index:2;}
.hero__grid{display:grid;grid-template-columns:1fr;gap:clamp(34px,4.5vw,58px);align-items:center;}
@media (min-width:1000px){.hero__grid{grid-template-columns:minmax(0,1.02fr) minmax(0,1fr);gap:clamp(40px,4vw,64px);}}
.hero__kicker{display:flex;align-items:center;gap:12px;margin-bottom:22px;flex-wrap:wrap;}
.hero__kicker .pill{
  display:inline-flex;align-items:center;gap:8px;
  border:1px solid var(--line-soft);background:var(--paper);border-radius:100px;
  padding:6px 13px;font-family:var(--ff-mono);font-size:10px;font-weight:500;
  letter-spacing:.16em;text-transform:uppercase;color:var(--petrol-700);
}
.hero__kicker .pill i{width:5px;height:5px;border-radius:50%;background:var(--signal);display:block;flex:none;}
.hero h1{margin-bottom:22px;}
.hero h1 .ln{display:block;}
.hero h1 .accent{color:var(--copper-600);}
.hero__lede{margin-bottom:30px;max-width:50ch;}
.hero__acts{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:34px;}
.hero__stats{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(146px,1fr));
  border-top:1px solid var(--line-soft);
}
.hero__stat{padding:16px 16px 4px 0;}
.hero__stat dt{font-family:var(--ff-mono);font-size:9.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--signal-text);margin-bottom:7px;}
.hero__stat dd{margin:0;font-size:13.2px;line-height:1.5;color:var(--graphite-80);}

/* Hero component plate */
.plate{position:relative;}
.plate__inner{
  position:relative;background:var(--paper);border:1px solid var(--line-soft);
  border-radius:var(--r-md);padding:clamp(24px,3.4vw,40px);
  box-shadow:0 24px 60px -34px rgba(8,34,43,.4);
}
.plate__head{
  display:flex;align-items:center;justify-content:space-between;gap:14px;
  padding-bottom:12px;margin-bottom:clamp(14px,2vw,22px);
  border-bottom:1px solid var(--line-faint);
}
.plate__figure{position:relative;}
.plate__img{
  width:100%;height:auto;display:block;
  aspect-ratio:1/1;object-fit:contain;object-position:center;
  background:transparent;
}
@supports not (aspect-ratio:1/1){.plate__img{max-height:380px;}}
.plate__cross{position:absolute;inset:0;pointer-events:none;}
.plate__foot{
  display:flex;flex-wrap:wrap;gap:10px 22px;justify-content:space-between;align-items:center;
  border-top:1px solid var(--line-faint);margin-top:clamp(14px,2vw,20px);padding-top:12px;
}
.plate__tags{display:flex;flex-wrap:wrap;gap:7px;}
.plate__tags span{
  font-family:var(--ff-mono);font-size:9.5px;letter-spacing:.13em;text-transform:uppercase;
  border:1px solid var(--line-soft);color:var(--graphite-60);padding:4px 8px;border-radius:2px;
}
.plate__note{
  position:relative;z-index:3;margin-top:14px;
  background:var(--petrol-900);color:#fff;border-radius:var(--r-sm);
  padding:13px 16px;
  box-shadow:0 16px 34px -22px rgba(8,34,43,.55);
  display:grid;grid-template-columns:auto 1fr;gap:4px 16px;align-items:baseline;
}
.plate__note b{font-family:var(--ff-mono);font-size:9.5px;letter-spacing:.16em;color:var(--signal-dark);font-weight:500;white-space:nowrap;}
.plate__note span{font-size:12px;line-height:1.45;color:rgba(255,255,255,.8);display:block;}
@media (max-width:560px){.plate__note{grid-template-columns:1fr;gap:5px;}}

/* ---------- 13. Component map ---------- */
.cmap{display:grid;grid-template-columns:1fr;gap:clamp(24px,3.4vw,44px);align-items:start;}
@media (min-width:980px){.cmap{grid-template-columns:minmax(0,1fr) minmax(0,1.08fr) minmax(0,1fr);}}
.cmap__col{display:grid;gap:14px;}
.cmap__stage{
  position:relative;border:1px solid var(--line-soft);background:var(--paper);
  border-radius:var(--r-md);padding:clamp(18px,2.4vw,28px);
  display:flex;align-items:center;justify-content:center;min-height:250px;
}
.cmap__stage img{width:100%;height:auto;max-height:360px;object-fit:contain;object-position:center;}
.cmap__ring{
  position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  width:min(88%,300px);aspect-ratio:1/1;border:1px dashed var(--line);border-radius:50%;
  opacity:.55;pointer-events:none;
}
.cmap__ring::after{
  content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  width:62%;height:62%;border:1px dashed var(--copper-200);border-radius:50%;
}
.zone{
  position:relative;border:1px solid var(--line-soft);background:var(--paper);
  border-radius:var(--r-sm);padding:16px 17px 17px;
  transition:border-color .25s var(--ease),transform .25s var(--ease),box-shadow .25s var(--ease);
}
.zone:hover{border-color:var(--petrol-400);transform:translateY(-2px);box-shadow:0 14px 30px -22px rgba(8,34,43,.5);}
.zone__n{
  font-family:var(--ff-mono);font-size:10px;font-weight:500;letter-spacing:.16em;color:var(--signal-text);
  display:block;margin-bottom:7px;
}
.zone h3{font-size:1.02rem;margin-bottom:7px;letter-spacing:-.012em;}
.zone p{font-size:13.4px;line-height:1.58;color:var(--graphite-60);margin:0;}
.zone::after{
  content:"";position:absolute;top:18px;width:9px;height:9px;border-radius:50%;
  border:1.5px solid var(--copper-500);background:var(--paper);opacity:0;transition:opacity .25s;
}
@media (min-width:980px){
  .cmap__col--l .zone::after{right:-30px;opacity:1;}
  .cmap__col--r .zone::after{left:-30px;opacity:1;}
  .cmap__col--l .zone{border-right-width:1px;}
}

/* ---------- 14. Spectrum (horizontal editorial rail) ---------- */
.spectrum{
  display:grid;grid-template-columns:1fr;gap:1px;background:var(--line-soft);
  border:1px solid var(--line-soft);border-radius:var(--r-md);overflow:hidden;
}
@media (min-width:760px){.spectrum{grid-template-columns:repeat(2,1fr);}}
@media (min-width:1100px){.spectrum{grid-template-columns:repeat(4,1fr);}}
.spec{
  background:var(--paper);padding:0;display:flex;flex-direction:column;
  transition:background .25s var(--ease);
}
.spec:hover{background:var(--warm-050);}
.spec__media{
  position:relative;background:var(--warm-200);
  aspect-ratio:4/3;display:flex;align-items:center;justify-content:center;overflow:hidden;
}
@supports not (aspect-ratio:4/3){.spec__media{height:210px;}}
.spec__media img{width:100%;height:100%;object-fit:contain;object-position:center;}
.spec__media .idx{
  position:absolute;left:12px;top:12px;z-index:2;
  font-family:var(--ff-mono);font-size:9.5px;font-weight:500;letter-spacing:.14em;
  background:var(--petrol-900);color:#fff;padding:4px 8px;border-radius:2px;
}
.spec__body{padding:20px 20px 24px;display:flex;flex-direction:column;flex:1;gap:12px;}
.spec__body h3{font-size:1.08rem;letter-spacing:-.015em;}
.spec__body p{font-size:13.4px;line-height:1.6;color:var(--graphite-60);margin:0;}
.spec__meta{margin:0;display:grid;gap:8px;border-top:1px solid var(--line-faint);padding-top:12px;}
.spec__meta div{display:grid;grid-template-columns:auto 1fr;gap:4px 10px;}
.spec__meta dt{font-family:var(--ff-mono);font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--graphite-40);}
.spec__meta dd{margin:0;font-size:12.4px;line-height:1.45;color:var(--graphite-80);}
.spec__cta{margin-top:auto;padding-top:14px;}

/* ---------- 15. Generic grids & cards ---------- */
.grid{display:grid;gap:clamp(16px,2vw,24px);}
.grid-2{grid-template-columns:1fr;}
.grid-3{grid-template-columns:1fr;}
.grid-4{grid-template-columns:1fr;}
@media (min-width:700px){.grid-2{grid-template-columns:repeat(2,1fr);} .grid-4{grid-template-columns:repeat(2,1fr);} .grid-3{grid-template-columns:repeat(2,1fr);}}
@media (min-width:1020px){.grid-3{grid-template-columns:repeat(3,1fr);} .grid-4{grid-template-columns:repeat(4,1fr);}}

.card{
  background:var(--paper);border:1px solid var(--line-soft);border-radius:var(--r-md);
  padding:clamp(20px,2.4vw,28px);position:relative;
  transition:border-color .25s var(--ease),box-shadow .25s var(--ease);
}
.card:hover{border-color:var(--petrol-400);box-shadow:0 16px 36px -28px rgba(8,34,43,.5);}
.card h3{margin-bottom:10px;}
.card p{font-size:13.8px;line-height:1.64;color:var(--graphite-60);}
.card__n{
  font-family:var(--ff-mono);font-size:10px;font-weight:500;letter-spacing:.16em;color:var(--signal-text);
  display:block;margin-bottom:12px;
}
.card--dark{background:rgba(255,255,255,.045);border-color:rgba(255,255,255,.14);}
.card--dark h3{color:#fff;}
.card--dark p{color:rgba(255,255,255,.68);}
.card--dark:hover{border-color:rgba(255,255,255,.3);}

/* two-column editorial split */
.split{display:grid;grid-template-columns:1fr;gap:clamp(26px,4vw,58px);align-items:center;}
@media (min-width:900px){.split{grid-template-columns:repeat(2,minmax(0,1fr));}}
.split--wideL{grid-template-columns:1fr;}
@media (min-width:900px){.split--wideL{grid-template-columns:minmax(0,1.18fr) minmax(0,1fr);}}
.split--wideR{grid-template-columns:1fr;}
@media (min-width:900px){.split--wideR{grid-template-columns:minmax(0,1fr) minmax(0,1.18fr);}}
@media (min-width:900px){.split--flip>*:first-child{order:2;}}
.split--top{align-items:start;}

/* framed figure */
.fig{position:relative;margin:0;}
.fig__box{
  background:var(--warm-200);border:1px solid var(--line-soft);border-radius:var(--r-md);
  padding:clamp(12px,1.6vw,20px);position:relative;overflow:hidden;
}
.fig__box img{width:100%;height:auto;display:block;border-radius:2px;}
.fig--contain .fig__box{display:flex;align-items:center;justify-content:center;}
.fig--contain .fig__box img{object-fit:contain;max-height:min(70vh,560px);width:auto;max-width:100%;}
.fig figcaption{
  margin-top:11px;display:flex;flex-wrap:wrap;gap:6px 16px;justify-content:space-between;align-items:baseline;
  font-family:var(--ff-mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--graphite-40);
}
.fig figcaption b{font-weight:500;color:var(--copper-600);}
.fig__badge{
  position:absolute;left:0;top:16px;z-index:3;
  background:var(--petrol-900);color:#fff;padding:6px 11px 6px 14px;border-radius:0 2px 2px 0;
  font-family:var(--ff-mono);font-size:9.5px;font-weight:500;letter-spacing:.15em;text-transform:uppercase;
}

/* ---------- 16. Process ladder ---------- */
.ladder{display:grid;gap:0;border-top:1px solid var(--line-soft);}
.step{
  display:grid;grid-template-columns:1fr;gap:12px;
  padding:clamp(22px,3vw,34px) 0;border-bottom:1px solid var(--line-soft);
  position:relative;
}
@media (min-width:860px){
  .step{grid-template-columns:96px minmax(0,1fr) minmax(0,1.25fr);gap:clamp(20px,3vw,44px);align-items:start;}
}
.step__n{
  font-family:var(--ff-mono);font-size:clamp(1.6rem,3vw,2.3rem);font-weight:400;line-height:1;
  color:var(--line);letter-spacing:-.02em;transition:color .3s var(--ease);
}
.step:hover .step__n{color:var(--signal-text);}
.step__t h3{margin-bottom:8px;}
.step__t p{font-size:13.4px;color:var(--graphite-60);margin:0;}
.step__d p{font-size:14.6px;line-height:1.68;color:var(--graphite-80);}
.step__list{margin:14px 0 0;padding:0;list-style:none;display:grid;gap:9px;}
.step__list li{
  position:relative;padding-left:22px;font-size:13.4px;line-height:1.55;color:var(--graphite-80);margin:0;
}
.step__list li::before{
  content:"";position:absolute;left:0;top:8px;width:11px;height:1px;background:var(--copper-500);
}

/* ---------- 17. Matrix table ---------- */
.tablewrap{overflow-x:auto;-webkit-overflow-scrolling:touch;border:1px solid var(--line-soft);border-radius:var(--r-md);background:var(--paper);}
table.matrix{width:100%;border-collapse:collapse;min-width:640px;font-size:13.6px;}
table.matrix caption{
  text-align:left;padding:16px 18px;border-bottom:1px solid var(--line-soft);
  font-family:var(--ff-mono);font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--graphite-60);
}
table.matrix th,table.matrix td{padding:14px 18px;text-align:left;vertical-align:top;border-bottom:1px solid var(--line-faint);}
table.matrix thead th{
  font-family:var(--ff-mono);font-size:9.5px;font-weight:500;letter-spacing:.15em;text-transform:uppercase;
  color:var(--graphite-40);background:var(--warm-050);border-bottom:1px solid var(--line-soft);white-space:nowrap;
}
table.matrix tbody th{font-family:var(--ff-display);font-weight:600;font-size:14.5px;color:var(--petrol-900);width:22%;}
table.matrix tbody tr:last-child th,table.matrix tbody tr:last-child td{border-bottom:0;}
table.matrix tbody tr:hover{background:var(--warm-050);}
.scrollhint{
  display:flex;align-items:center;gap:8px;margin-top:9px;
  font-family:var(--ff-mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--graphite-40);
}
@media (min-width:820px){.scrollhint{display:none;}}

/* ---------- 18. Accordion ---------- */
.acc{border-top:1px solid var(--line-soft);}
.acc__item{border-bottom:1px solid var(--line-soft);}
.acc__btn{
  width:100%;display:flex;align-items:flex-start;gap:14px;text-align:left;
  background:none;border:0;cursor:pointer;padding:19px 0;
  font-family:var(--ff-display);font-size:clamp(1rem,1.7vw,1.14rem);font-weight:600;
  letter-spacing:-.014em;color:var(--petrol-900);line-height:1.32;
  transition:color .2s;
}
.acc__btn:hover{color:var(--signal-text);}
.acc__btn > .qn{
  font-family:var(--ff-mono);font-size:10.5px;font-weight:500;letter-spacing:.12em;
  color:var(--signal-text);flex:none;padding-top:5px;width:26px;
}
.acc__btn > .qt{flex:1;min-width:0;}
.acc__ic{
  flex:none;width:22px;height:22px;border:1px solid var(--line);border-radius:50%;
  position:relative;margin-top:2px;transition:border-color .25s,background .25s;
}
.acc__btn:hover .acc__ic{border-color:var(--signal);}
.acc__ic::before,.acc__ic::after{
  content:"";position:absolute;left:50%;top:50%;background:var(--petrol-700);
  transform:translate(-50%,-50%);transition:transform .3s var(--ease),opacity .2s;
}
.acc__ic::before{width:9px;height:1.4px;}
.acc__ic::after{width:1.4px;height:9px;}
.acc__btn[aria-expanded="true"] .acc__ic{border-color:var(--signal-btn);background:var(--signal-btn);}
.acc__btn[aria-expanded="true"] .acc__ic::before{background:#fff;}
.acc__btn[aria-expanded="true"] .acc__ic::after{opacity:0;transform:translate(-50%,-50%) rotate(90deg);}
.acc__panel{overflow:hidden;height:0;transition:height .32s var(--ease);}
@media (prefers-reduced-motion:reduce){.acc__panel{transition:none;}}
.acc__inner{padding:0 0 22px 40px;max-width:74ch;}
.acc__inner p{font-size:14.6px;line-height:1.72;color:var(--graphite-80);}
.acc__inner ul{font-size:14.4px;line-height:1.68;color:var(--graphite-80);}
@media (max-width:560px){.acc__inner{padding-left:0;}}

/* ---------- 19. Forms ---------- */
.form{display:grid;gap:18px;}
.form__row{display:grid;grid-template-columns:1fr;gap:18px;}
@media (min-width:640px){.form__row--2{grid-template-columns:repeat(2,1fr);}}
.field{display:grid;gap:7px;min-width:0;}
.field label{
  font-family:var(--ff-mono);font-size:10px;font-weight:500;letter-spacing:.15em;
  text-transform:uppercase;color:var(--graphite-60);
}
.field label .req{color:var(--signal-text);}
.field input,.field select,.field textarea{
  width:100%;font-family:var(--ff-body);font-size:16px;line-height:1.5;color:var(--graphite);
  background:var(--paper);border:1px solid var(--line-soft);border-radius:var(--r-sm);
  padding:12px 14px;transition:border-color .2s,box-shadow .2s,background .2s;
  -webkit-appearance:none;appearance:none;
}
.field select{
  background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath fill='none' stroke='%23647178' stroke-width='1.4' d='M1 1.5 6 6.5 11 1.5'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 14px center;background-size:12px 8px;padding-right:38px;
}
.field textarea{resize:vertical;min-height:132px;}
.field input:focus,.field select:focus,.field textarea:focus{
  outline:none;border-color:var(--petrol-600);box-shadow:0 0 0 3px rgba(23,86,106,.14);
}
.field .hint{font-size:12px;color:var(--graphite-40);line-height:1.45;}
.field .err{
  font-family:var(--ff-mono);font-size:10.5px;letter-spacing:.06em;color:var(--signal-ink);
  display:none;align-items:center;gap:6px;
}
.field.is-bad input,.field.is-bad select,.field.is-bad textarea{border-color:var(--signal);background:var(--signal-wash);}
.field.is-bad .err{display:flex;}
.form__note{
  border:1px solid var(--line-soft);border-left:3px solid var(--copper-500);
  background:var(--warm-050);border-radius:var(--r-sm);padding:15px 17px;
  font-size:13.2px;line-height:1.6;color:var(--graphite-80);
}
.form__note b{color:var(--petrol-900);}
.formstatus{
  display:none;border-radius:var(--r-sm);padding:15px 17px;font-size:13.6px;line-height:1.6;
  border:1px solid var(--petrol-200);background:#fff;color:var(--graphite-80);
}
.formstatus.is-on{display:block;}
.formstatus b{display:block;font-family:var(--ff-mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--petrol-700);margin-bottom:6px;}

/* ---------- 20. Contact channels ---------- */
.chan{display:grid;gap:14px;}
.chanbox{
  display:flex;align-items:flex-start;gap:15px;
  border:1px solid var(--line-soft);background:var(--paper);border-radius:var(--r-md);
  padding:20px;transition:border-color .25s,transform .25s var(--ease);
}
.chanbox:hover{border-color:var(--petrol-400);transform:translateY(-2px);}
.chanbox__ic{
  width:40px;height:40px;flex:none;border:1px solid var(--line-soft);border-radius:var(--r-sm);
  display:flex;align-items:center;justify-content:center;color:var(--petrol-700);background:var(--warm-050);
}
.chanbox__ic svg{width:18px;height:18px;}
.chanbox__b{min-width:0;}
.chanbox__b b{display:block;font-family:var(--ff-mono);font-size:9.5px;letter-spacing:.17em;text-transform:uppercase;color:var(--graphite-40);margin-bottom:5px;font-weight:500;}
.chanbox__b > a,.chanbox__b > span{
  font-family:var(--ff-display);font-size:clamp(1rem,2.2vw,1.16rem);font-weight:600;color:var(--petrol-900);
  letter-spacing:-.016em;word-break:break-word;display:inline-block;
  border-bottom:1px solid transparent;transition:color .2s,border-color .2s;
}
.chanbox__b > a:hover{color:var(--signal-text);border-bottom-color:var(--signal-text);}
.chanbox__b p{font-size:12.8px;color:var(--graphite-60);margin:6px 0 0;line-height:1.55;}

/* ---------- 21. Callout band ---------- */
.band{
  position:relative;overflow:hidden;background:var(--petrol-900);color:#fff;
  border-radius:var(--r-md);padding:clamp(28px,4vw,52px);
}
.band__bg{position:absolute;inset:0;opacity:.6;pointer-events:none;}
.band .in{position:relative;z-index:2;display:grid;gap:22px;align-items:center;}
@media (min-width:880px){.band .in{grid-template-columns:minmax(0,1.4fr) auto;gap:34px;}}
.band h2{color:#fff;margin-bottom:12px;}
.band p{color:rgba(255,255,255,.74);max-width:56ch;font-size:15px;}
.band__acts{display:flex;flex-wrap:wrap;gap:11px;}

/* ---------- 22. Note / safety block ---------- */
.note{
  border:1px solid var(--line-soft);border-left:3px solid var(--petrol-600);
  background:var(--paper);border-radius:var(--r-sm);padding:clamp(18px,2.2vw,24px);
}
.note--signal{border-left-color:var(--signal);}
.note--copper{border-left-color:var(--copper-500);}
.note b.k{
  display:block;font-family:var(--ff-mono);font-size:10px;letter-spacing:.17em;text-transform:uppercase;
  color:var(--copper-600);margin-bottom:8px;font-weight:500;
}
.note--signal b.k{color:var(--signal-ink);}
.note p{font-size:13.8px;line-height:1.66;color:var(--graphite-80);}
.note p:last-child{margin-bottom:0;}

/* checklist */
.checks{list-style:none;margin:0;padding:0;display:grid;gap:11px;}
.checks li{position:relative;padding-left:28px;font-size:14.2px;line-height:1.6;color:var(--graphite-80);margin:0;}
.checks li::before{
  content:"";position:absolute;left:0;top:4px;width:15px;height:15px;
  border:1px solid var(--line);border-radius:2px;background:var(--paper);
}
.checks li::after{
  content:"";position:absolute;left:4.5px;top:8px;width:6px;height:3px;
  border-left:1.6px solid var(--signal);border-bottom:1.6px solid var(--signal);
  transform:rotate(-45deg);
}
.checks--light li{color:rgba(255,255,255,.78);}
.checks--light li::before{border-color:rgba(255,255,255,.42);background:transparent;}

/* definition rows */
.deflist{display:grid;gap:0;border-top:1px solid var(--line-soft);margin:0;}
.deflist>div{
  display:grid;grid-template-columns:1fr;gap:5px;
  padding:16px 0;border-bottom:1px solid var(--line-faint);
}
@media (min-width:700px){.deflist>div{grid-template-columns:minmax(0,.72fr) minmax(0,1.6fr);gap:26px;align-items:baseline;}}
.deflist dt{font-family:var(--ff-display);font-weight:600;font-size:15.2px;color:var(--petrol-900);letter-spacing:-.014em;}
.deflist dd{margin:0;font-size:14px;line-height:1.66;color:var(--graphite-80);}

/* stat strip */
.strip{
  display:grid;grid-template-columns:1fr;gap:1px;background:var(--line-soft);
  border:1px solid var(--line-soft);border-radius:var(--r-md);overflow:hidden;
}
@media (min-width:640px){.strip{grid-template-columns:repeat(2,1fr);}}
@media (min-width:1000px){.strip{grid-template-columns:repeat(4,1fr);}}
.strip>div{background:var(--paper);padding:22px 20px;}
.strip b{display:block;font-family:var(--ff-mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--signal-text);margin-bottom:9px;font-weight:500;}
.strip p{font-size:13.6px;line-height:1.6;color:var(--graphite-80);margin:0;}
.strip h3{font-size:1rem;margin-bottom:7px;}

/* resource entries */
.res{
  display:grid;grid-template-columns:1fr;gap:clamp(20px,3vw,42px);align-items:center;
  padding:clamp(26px,3.6vw,44px) 0;border-bottom:1px solid var(--line-soft);
}
@media (min-width:880px){
  .res{grid-template-columns:minmax(0,.82fr) minmax(0,1.3fr);}
  .res:nth-child(even)>.res__media{order:2;}
}
.res:first-child{border-top:1px solid var(--line-soft);}
.res__media{position:relative;}
.res__media .fig__box{background:var(--warm-200);}
.res__b h3{margin-bottom:12px;}
.res__b p{font-size:14.4px;line-height:1.68;color:var(--graphite-80);}
.res__take{
  margin-top:16px;border-left:2px solid var(--copper-500);padding:2px 0 2px 15px;
}
.res__take b{display:block;font-family:var(--ff-mono);font-size:9.5px;letter-spacing:.17em;text-transform:uppercase;color:var(--copper-600);margin-bottom:5px;font-weight:500;}
.res__take span{font-size:13.6px;line-height:1.6;color:var(--graphite-80);}
.res__acts{margin-top:20px;display:flex;flex-wrap:wrap;gap:12px 20px;align-items:center;}

/* ---------- 23. Footer ---------- */
.ftr{background:var(--petrol-900);color:rgba(255,255,255,.7);position:relative;overflow:hidden;}
.ftr__bg{position:absolute;inset:0;opacity:.55;pointer-events:none;}
.ftr .shell{position:relative;z-index:2;}
.ftr__top{padding:clamp(44px,6vw,74px) 0 clamp(30px,4vw,46px);}
.ftr__grid{display:grid;grid-template-columns:1fr;gap:clamp(28px,3.6vw,44px);}
@media (min-width:820px){.ftr__grid{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr) minmax(0,1fr);}}
.ftr__brand .brand__name{color:#fff;}
.ftr__brand .brand__name em{color:rgba(255,255,255,.58);}
.ftr__brand .brand__glyph{border-color:rgba(255,255,255,.5);}
.ftr__brand .brand__glyph::after{background:rgba(255,255,255,.5);}
.ftr__blurb{margin-top:18px;font-size:13.6px;line-height:1.66;color:rgba(255,255,255,.62);max-width:42ch;}
.ftr h4,.ftr .ftr__h{
  font-family:var(--ff-mono);font-size:10px;font-weight:500;letter-spacing:.2em;text-transform:uppercase;
  color:var(--signal-dark);margin-bottom:16px;
}
.ftr__nav{list-style:none;margin:0;padding:0;display:grid;gap:9px;}
.ftr__nav li{margin:0;}
.ftr__nav a{
  font-size:13.6px;color:rgba(255,255,255,.72);display:inline-flex;align-items:center;gap:8px;
  transition:color .2s,gap .22s var(--ease);
}
.ftr__nav a::before{content:"";width:0;height:1px;background:var(--signal);transition:width .24s var(--ease);}
.ftr__nav a:hover{color:#fff;}
.ftr__nav a:hover::before{width:12px;}
.ftr__con{display:grid;gap:13px;}
.ftr__con a,.ftr__con span{font-size:14.2px;color:#fff;word-break:break-word;}
.ftr__con a{border-bottom:1px solid rgba(255,255,255,.24);transition:border-color .2s,color .2s;}
.ftr__con a:hover{color:var(--signal-dark);border-bottom-color:var(--signal-dark);}
.ftr__con .k{display:block;font-family:var(--ff-mono);font-size:9.5px;letter-spacing:.16em;text-transform:uppercase;color:rgba(255,255,255,.58);margin-bottom:5px;}
.ftr__social{display:flex;flex-wrap:wrap;gap:9px;margin-top:20px;}
.ftr__social a{
  width:38px;height:38px;border:1px solid rgba(255,255,255,.2);border-radius:var(--r-sm);
  display:flex;align-items:center;justify-content:center;color:rgba(255,255,255,.72);
  transition:border-color .22s,color .22s,background .22s,transform .22s var(--ease);
}
.ftr__social a:hover{border-color:var(--signal-btn);color:#fff;background:var(--signal-btn);transform:translateY(-2px);}
.ftr__social svg{width:16px;height:16px;fill:currentColor;}
.ftr__socialnote{
  margin-top:11px;font-family:var(--ff-mono);font-size:9.5px;letter-spacing:.07em;
  color:rgba(255,255,255,.58);line-height:1.6;max-width:40ch;
}
.ftr__bot{
  border-top:1px solid rgba(255,255,255,.13);padding:20px 0 26px;
  display:flex;flex-wrap:wrap;gap:10px 26px;justify-content:space-between;align-items:center;
  font-family:var(--ff-mono);font-size:10.5px;letter-spacing:.07em;color:rgba(255,255,255,.58);
}
.ftr__bot a{color:rgba(255,255,255,.78);border-bottom:1px solid rgba(255,255,255,.22);transition:color .2s,border-color .2s;}
.ftr__bot a:hover{color:var(--signal-dark);border-bottom-color:var(--signal-dark);}

/* ---------- 24. Motion ---------- */
/* Hidden only when JS is running — without it, every section renders normally. */
.js .reveal{opacity:0;transform:translateY(18px);transition:opacity .7s var(--ease),transform .7s var(--ease);}
.reveal.is-in{opacity:1;transform:none;}
.reveal.is-in{opacity:1;transform:none;}
.reveal[data-d="1"]{transition-delay:.07s;}
.reveal[data-d="2"]{transition-delay:.14s;}
.reveal[data-d="3"]{transition-delay:.21s;}
.reveal[data-d="4"]{transition-delay:.28s;}
.draw{stroke-dasharray:var(--len,600);stroke-dashoffset:var(--len,600);transition:stroke-dashoffset 1.4s var(--ease);}
.is-in .draw,.draw.is-in{stroke-dashoffset:0;}
@media (prefers-reduced-motion:reduce){
  .js .reveal,.reveal{opacity:1;transform:none;transition:none;}
  .draw{stroke-dashoffset:0;transition:none;}
  .btn,.tlink,.card,.zone,.chanbox{transition:none;}
  *{animation-duration:.001ms !important;animation-iteration-count:1 !important;}
}

/* ---------- 25. Utilities ---------- */
.stack{display:grid;}
.stack-sm{gap:12px;}
.stack-md{gap:20px;}
.stack-lg{gap:clamp(26px,3.4vw,44px);}
.flexrow{display:flex;flex-wrap:wrap;gap:12px;align-items:center;}
.mt-sm{margin-top:16px;}
.mt-md{margin-top:26px;}
.mt-lg{margin-top:clamp(30px,4vw,52px);}
.center{text-align:center;}
.head-block{max-width:74ch;}
.head-block .lede{margin-top:16px;}
.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;
}
.nowrap{white-space:nowrap;}

/* 404 */
.oops{min-height:56vh;display:flex;align-items:center;padding:clamp(50px,8vw,110px) 0;}

/* ---------- 26. Desktop nav density (fits 8 items + CTA from 1100px up) ---------- */
.lbl-short{display:none;}

/* 1100–1499: tighten the nav so eight labels stay on one line */
@media (min-width:1100px) and (max-width:1499px){
  .nav a{font-size:12.4px;padding:9px 8px;}
  .nav a::after{left:8px;right:8px;}
}
/* 1100–1339 only: also shorten the CTA and drop the brand sub-label */
@media (min-width:1100px) and (max-width:1339px){
  .hdr__cta .btn{padding:11px 13px;font-size:9.8px;letter-spacing:.09em;gap:8px;}
  .lbl-long{display:none;}
  .lbl-short{display:inline;}
  .brand__sub{display:none;}
}
@media (min-width:1500px){
  .nav{gap:4px;}
}

/* ---------- 27. Hero plate annotations ---------- */
.anno{
  position:absolute;z-index:3;display:inline-flex;align-items:baseline;gap:6px;
  font-family:var(--ff-mono);font-size:9.5px;font-weight:500;letter-spacing:.13em;text-transform:uppercase;
  color:var(--graphite-60);background:var(--paper);padding:3px 7px;border:1px solid var(--line-soft);
  border-radius:2px;white-space:nowrap;pointer-events:none;
}
.anno b{color:var(--signal-text);font-weight:500;}
.anno--a{left:6%;top:-8px;}
.anno--b{right:-6px;top:70%;}
@media (max-width:700px){.anno--b{right:0;}}
@media (max-width:560px){.anno{display:none;}}

/* ---------- 28. Editorial spectrum rail ---------- */
.rail{display:grid;grid-template-columns:1fr;gap:clamp(26px,3.4vw,48px);align-items:start;}
@media (min-width:960px){.rail{grid-template-columns:minmax(0,.78fr) minmax(0,1.6fr);}}
.rail__feature{position:sticky;top:calc(var(--header-h) + 22px);}
@media (max-width:959px){.rail__feature{position:static;}}
.rail__note{
  margin-top:16px;font-size:13px;line-height:1.62;color:var(--graphite-60);
  border-left:2px solid var(--copper-500);padding-left:14px;
}
.rail__list{list-style:none;margin:0;padding:0;border-top:1px solid var(--line-soft);}
.railitem{
  display:grid;grid-template-columns:1fr;gap:10px;margin:0;
  padding:clamp(20px,2.6vw,30px) 0;border-bottom:1px solid var(--line-soft);
}
@media (min-width:620px){.railitem{grid-template-columns:64px minmax(0,1fr);gap:clamp(16px,2.4vw,32px);align-items:start;}}
.railitem__n{
  font-family:var(--ff-mono);font-size:clamp(1.4rem,2.6vw,2rem);line-height:1;
  color:var(--line);letter-spacing:-.02em;transition:color .3s var(--ease);
}
.railitem:hover .railitem__n{color:var(--signal-text);}
.railitem__b h3{font-size:clamp(1.12rem,2.1vw,1.42rem);letter-spacing:-.018em;margin-bottom:9px;}
.railitem__b > p{font-size:14.2px;line-height:1.66;color:var(--graphite-80);margin-bottom:14px;max-width:60ch;}
.railitem__meta{margin:0 0 16px;display:grid;gap:7px;}
.railitem__meta div{display:grid;grid-template-columns:auto 1fr;gap:4px 14px;align-items:baseline;}
.railitem__meta dt{font-family:var(--ff-mono);font-size:9px;letter-spacing:.15em;text-transform:uppercase;color:var(--graphite-40);white-space:nowrap;}
.railitem__meta dd{margin:0;font-size:12.8px;line-height:1.5;color:var(--graphite-80);}

/* ---------- 29. Inline blueprint diagrams ---------- */
.diagram{
  background:var(--paper);border:1px solid var(--line-soft);border-radius:var(--r-md);
  padding:clamp(20px,2.6vw,30px);
}
.diagram__head{
  display:flex;align-items:center;justify-content:space-between;gap:14px;
  padding-bottom:12px;margin-bottom:20px;border-bottom:1px solid var(--line-faint);
}
.diagram__svg{width:100%;height:auto;display:block;overflow:visible;}
.diagram__cap{
  margin:20px 0 0;padding-top:13px;border-top:1px solid var(--line-faint);
  font-size:12.4px;line-height:1.6;color:var(--graphite-60);
}
.diagram--dark{background:rgba(255,255,255,.045);border-color:rgba(255,255,255,.15);}
.diagram--dark .diagram__head{border-bottom-color:rgba(255,255,255,.14);}
.diagram--dark .diagram__cap{border-top-color:rgba(255,255,255,.14);}
.diagram--dark.tickframe::before,.diagram--dark.tickframe::after{border-color:var(--copper-200);}

/* ---------- 30. Document sheets ---------- */
.sheets{display:grid;grid-template-columns:1fr;gap:clamp(16px,2vw,22px);}
@media (min-width:820px){.sheets{grid-template-columns:repeat(3,1fr);}}
.sheet{
  background:var(--warm-050);border:1px solid var(--line-soft);border-radius:var(--r-md);
  padding:clamp(20px,2.4vw,26px);display:flex;flex-direction:column;gap:14px;
  position:relative;transition:border-color .25s var(--ease),box-shadow .25s var(--ease);
}
.sheet:hover{border-color:var(--petrol-400);box-shadow:0 16px 36px -30px rgba(8,34,43,.55);}
.sheet__hd{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding-bottom:11px;border-bottom:1px solid var(--line-soft);
}
.sheet__n{font-family:var(--ff-mono);font-size:10px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--signal-text);}
.sheet > p{font-size:13.4px;line-height:1.62;color:var(--graphite-60);margin:0;}
.sheet .checks li{font-size:13.2px;}
.sheet .res__take{margin-top:0;}
.sheet > .tlink{margin-top:auto;align-self:flex-start;}

/* ---------- 31. Form wrapper ---------- */
.formwrap{
  background:var(--paper);border:1px solid var(--line-soft);border-radius:var(--r-md);
  padding:clamp(22px,3vw,36px);position:relative;
}
.formwrap::before{
  content:"";position:absolute;top:-1px;left:-1px;width:15px;height:15px;
  border-top:1.5px solid var(--signal);border-left:1.5px solid var(--signal);
}
.formwrap::after{
  content:"";position:absolute;bottom:-1px;right:-1px;width:15px;height:15px;
  border-bottom:1.5px solid var(--signal);border-right:1.5px solid var(--signal);
}

/* ---------- 32. Prose directly after a display heading ---------- */
h2.h-lg + p,
h2.h-md + p{margin-top:16px;}
/* components that already carry their own heading spacing */
.band h2.h-md + p{margin-top:0;}
