:root{
  /* ---- Brand palette ---- */
  --ink:#17181B;              /* primary dark neutral */
  --paper:#F4F2EE;            /* primary light neutral */
  --slate:#45464A;            /* secondary neutral / body copy */
  --warrant-green:#1EA75B;    /* accent: granted actions only */
  --warrant-green-dark:#2FC271; /* accent, on dark backgrounds */

  /* ---- Neutrals derived from the palette ---- */
  --surface:#ffffff;          /* raised cards on paper */
  --paper-deep:#EAE7E1;       /* alt section bg */
  --rule:#DCD8D0;             /* borders */
  --slate-mute:#6A6B6F;       /* muted / eyebrow / metadata (AA on paper) */
  --on-ink:var(--paper);      /* text on ink */
  --on-ink-mute:rgba(244,242,238,.66);

  /* ---- Functional product states, kept apart from the accent ---- */
  --state-denied:#E5484D;
  --state-info:#4C8DFF;

  /* ---- Type ---- */
  --font-sans:'Archivo','Helvetica Neue',Helvetica,Arial,sans-serif;
  --font-mono:'IBM Plex Mono','SFMono-Regular','SF Mono',Menlo,'Liberation Mono',monospace;

  --radius:6px;
  --maxw:1160px;
}
*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:var(--font-sans);
  font-weight:400;
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3,h4{
  font-family:var(--font-sans);
  font-weight:600;
  line-height:1.1;
  margin:0;
  letter-spacing:-0.02em;
}
p{margin:0;}
a{color:inherit;text-decoration:none;}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 32px;position:relative;}
.eyebrow{
  display:inline-block;
  font-family:var(--font-mono);
  font-size:14px;
  letter-spacing:.02em;
  color:var(--slate-mute);
}

/* ---------- WORDMARK ---------- */
/* Always lowercase. ".ai" is part of the name: same weight, same size,
   tightened tracking, colour on the full stop only. Never set in mono. */
.wordmark{
  font-family:var(--font-sans);
  font-weight:500;
  letter-spacing:-0.01em;
  color:inherit;
  text-transform:lowercase;
}
.wordmark .tld{letter-spacing:-0.03em;}
.wordmark .stop{color:var(--warrant-green);}

/* ---------- SYMBOL, LOCKUP & MOTION ---------- */
/* Construction follows the identity's A unit, where A is the side of the
   warrant square: symbol 3A, wordmark x-height 2A, gap A between the closing
   bracket and the "s". Archivo's x-height is 0.526em, so a 2A x-height means
   a font-size of 2A / 0.526 = 3.802A. Soft radius on the brackets' outer
   corners only; the warrant square stays sharp on all four. */
.symbol{display:block;}
.symbol .ward{fill:var(--ink);}
.symbol .warrant{fill:var(--warrant-green);}

/* The symbol and wordmark are one locked unit: never rescaled, respaced or
   realigned independently. Set --A on the container and the rest follows.
   Laid out inline rather than with flexbox on purpose, because a replaced element's
   inline baseline is its bottom margin edge, which is what lets the negative
   margin below place the symbol's centre on the x-height band exactly,
   without depending on the font's ascender metrics. Keep the <svg> and the
   wordmark adjacent in the markup: whitespace between them would render as a
   space and widen the gap past A. */
.lockup{display:block;white-space:nowrap;}
.lockup .symbol{
  display:inline-block;
  vertical-align:baseline;
  width:calc(var(--A) * 3);
  height:calc(var(--A) * 3);
  /* Bottom margin edge rests on the baseline, so pulling it up by A/2 drops
     the symbol half a unit below the baseline, putting its centre A above
     it, on the centre of the wordmark's x-height band. */
  margin-bottom:calc(var(--A) * -0.5);
  margin-right:var(--A);            /* gap: exactly one square */
}
.lockup .wordmark{
  font-size:calc(var(--A) * 3.802);
  line-height:1;
}

/* The 3.8s canonical loop: 01 Request, 02 Ward, 03 Verify, 04 Warrant,
   05 Warden. Horizontal moves only, linear throughout, hard cuts between
   beats. No bounce, elasticity, rotation or glow. */
.symbol--motion{
  height:26px;width:52px;flex:none;
  /* The viewBox carries 30 units of runway on each side of the 60-unit symbol
     so the warrant square can travel in and out beyond the brackets. That
     runway is a quarter of the rendered box per side. */
  --runway:13px;
}
.symbol--motion .warrant{animation:warrant-travel 3.8s linear infinite, warrant-decide 3.8s linear infinite;}
.symbol--motion .ward-l{animation:ward-left 3.8s linear infinite;}
.symbol--motion .ward-r{animation:ward-right 3.8s linear infinite;}

@keyframes warrant-travel{
  0%{transform:translateX(-70px);}       /* 01 Request: enters from the left */
  14.5%{transform:translateX(-28px);}    /*    stops at the opening */
  23.7%{transform:translateX(-28px);}    /*    deliberate pause */
  35.5%{transform:translateX(0);}        /* 02 Ward: passes in */
  88.2%{transform:translateX(0);}        /* 03 Verify + 04 Warrant, held */
  96%{transform:translateX(70px);}       /* 05 Warden: exits through the passage */
  100%{transform:translateX(70px);}
}
@keyframes warrant-decide{
  0%,35.5%{fill:var(--ink);}
  43%{fill:#31333A;}                     /* 03 Verify: change is luminosity only */
  50%,55.2%{fill:var(--ink);}
  55.3%,100%{fill:var(--warrant-green);} /* 04 Warrant: the sole colour moment */
}
@keyframes ward-left{
  0%,23.7%{transform:translateX(-20px);}
  35.5%,100%{transform:translateX(0);}   /* 02 Ward: brackets close */
}
@keyframes ward-right{
  0%,23.7%{transform:translateX(20px);}
  35.5%,80.3%{transform:translateX(0);}
  88.2%,96%{transform:translateX(20px);} /* 05 Warden: a passage opens */
  100%{transform:translateX(0);}         /*    the perimeter closes */
}
/* At rest the square is locked to its granted state. */
@media (prefers-reduced-motion:reduce){
  .symbol--motion .warrant,
  .symbol--motion .ward-l,
  .symbol--motion .ward-r{animation:none;}
}

/* ---------- HEADER ---------- */
header{
  position:sticky;top:0;z-index:500;
  background:rgba(244,242,238,.9);
  backdrop-filter:blur(8px);
  border-bottom:1px solid var(--rule);
}
nav.wrap{
  display:flex;align-items:center;
  height:74px;
}
.logo{--A:7px;flex:none;}
.navright{display:flex;align-items:center;gap:14px;flex:none;margin-left:auto;}
.stealth-badge{
  font-family:var(--font-mono);
  font-size:12px;letter-spacing:.02em;
  color:var(--slate);
  border:1px solid var(--rule);
  padding:6px 12px;border-radius:var(--radius);
  display:flex;align-items:center;gap:7px;
  white-space:nowrap;
}
.stealth-badge .dot{
  width:6px;height:6px;border-radius:50%;background:var(--ink);
  animation:pulse 2.2s ease-in-out infinite;
}
@keyframes pulse{0%,100%{opacity:1;}50%{opacity:.2;}}

/* ---------- TABS ---------- */
/* Tabs are full-bleed to the header's height so the active indicator lands
   directly on the header rule, the way a tab strip should read. */
.tabs{display:flex;align-self:stretch;margin-left:34px;}
.tab{
  position:relative;display:flex;align-items:center;
  border-bottom:2px solid transparent;
  transition:border-color .15s ease;
}
.tab:hover{border-bottom-color:var(--rule);}
.tab.current{border-bottom-color:var(--ink);}
.tab-link{
  display:flex;align-items:center;height:100%;
  padding:0 16px;
  font-size:14.5px;font-weight:500;color:var(--slate);
  transition:color .15s ease;
}
.tab:hover .tab-link,
.tab.current .tab-link{color:var(--ink);}
.tab.has-menu .tab-link{padding-right:6px;}
.tab-caret{
  display:flex;align-items:center;height:100%;
  padding:0 13px 0 3px;margin:0;
  background:none;border:0;cursor:pointer;color:var(--slate-mute);
}
.tab-caret svg{width:9px;height:6px;transition:transform .18s ease;}
.tab:hover .tab-caret{color:var(--ink);}
.tab.has-menu.open .tab-caret svg{transform:rotate(180deg);}

/* Drop-down. The padding-top on the outer element bridges the gap to the tab
   so the pointer never leaves the hover area on the way down. */
.tab-menu{
  position:absolute;top:100%;left:0;
  padding-top:8px;min-width:246px;z-index:600;
  opacity:0;visibility:hidden;transform:translateY(-5px);
  transition:opacity .16s ease, transform .16s ease, visibility .16s;
}
.tab.has-menu:hover .tab-menu,
.tab.has-menu:focus-within .tab-menu,
.tab.has-menu.open .tab-menu{opacity:1;visibility:visible;transform:translateY(0);}
.tab-menu-inner{
  background:var(--surface);
  border:1px solid var(--ink);
  border-radius:var(--radius);
  padding:8px;
  box-shadow:0 14px 30px rgba(23,24,27,.10);
}
.tab-menu a{
  display:block;padding:9px 12px;border-radius:4px;
  font-size:14.5px;font-weight:500;color:var(--ink);
  transition:background .15s ease;
}
.tab-menu a:hover{background:var(--paper-deep);}
.tab-menu a .mi-note{
  display:block;margin-top:3px;
  font-family:var(--font-mono);font-weight:400;font-size:11.5px;
  color:var(--slate-mute);letter-spacing:.02em;
}

/* ---------- MENU BUTTON + MOBILE DROP-DOWN ---------- */
.menu-btn{
  display:none;width:40px;height:40px;
  align-items:center;justify-content:center;flex-direction:column;
  background:transparent;border:1px solid var(--rule);border-radius:var(--radius);
  color:var(--ink);cursor:pointer;padding:0;
}
.menu-btn .bar{
  display:block;width:16px;height:1.5px;background:currentColor;
  transition:transform .18s ease, opacity .18s ease;
}
.menu-btn .bar + .bar{margin-top:4px;}
header.nav-open .menu-btn .bar:nth-child(1){transform:translateY(5.5px) rotate(45deg);}
header.nav-open .menu-btn .bar:nth-child(2){opacity:0;}
header.nav-open .menu-btn .bar:nth-child(3){transform:translateY(-5.5px) rotate(-45deg);}

.mobile-menu{display:none;border-top:1px solid var(--rule);background:var(--paper);max-height:calc(100vh - 74px);overflow-y:auto;}
header.nav-open .mobile-menu{display:block;}
.mobile-menu .wrap{padding:10px 32px 24px;}
.mobile-menu .m-link{
  display:block;padding:14px 0;
  font-size:18px;font-weight:600;letter-spacing:-0.01em;color:var(--ink);
  border-bottom:1px solid var(--rule);
}
.mobile-menu .m-link.current{color:var(--ink);}
.mobile-menu .m-link.current::after{
  content:"";display:inline-block;
  width:8px;height:8px;margin-left:10px;vertical-align:1px;
  background:var(--warrant-green);
}
.mobile-menu .m-sub{padding:6px 0 10px;}
.mobile-menu .m-sub a{
  display:block;padding:9px 0 9px 16px;
  font-size:14.5px;color:var(--slate);
  border-left:1px solid var(--rule);
}
.mobile-menu .btn{margin-top:20px;width:100%;}

@media (max-width:900px){
  .tabs{display:none;}
  .navright .btn{display:none;}
  .menu-btn{display:flex;}
}
@media (min-width:901px){
  .mobile-menu{display:none !important;}
}
@media (max-width:460px){
  .stealth-badge{display:none;}
}

/* ---------- BUTTONS ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;
  font-family:var(--font-sans);font-weight:600;font-size:14.5px;
  padding:11px 22px;border-radius:var(--radius);
  background:var(--ink);color:var(--paper);
  border:1px solid var(--ink);
  transition:transform .15s ease, opacity .15s ease;
  white-space:nowrap;
}
.btn:hover{opacity:.78;transform:translateY(-1px);}
.btn.ghost{
  background:transparent;color:var(--ink);border:1px solid var(--ink);
}
.btn.ghost:hover{background:var(--ink);color:var(--paper);opacity:1;}

/* ---------- HERO ---------- */
.hero{
  padding:96px 0 64px;
  position:relative;
}
.hero .eyebrow{margin-bottom:22px;}
.hero h1{
  font-size:clamp(30px,4.4vw,58px);
  max-width:100%;
  white-space:normal;
}
.hero h1 em{font-style:italic;}
.hero .sub{
  margin-top:26px;
  font-size:19px;line-height:1.55;
  color:var(--slate);
  max-width:600px;
}
.hero .cta-row{
  margin-top:38px;display:flex;gap:14px;flex-wrap:wrap;
}

/* ---------- PAGE HERO (inner pages) ---------- */
.page-hero{padding:88px 0 0;}
.page-hero .eyebrow{margin-bottom:20px;}
.page-hero h1{font-size:clamp(30px,4.2vw,52px);}
.page-hero .sub{
  margin-top:24px;font-size:19px;line-height:1.55;
  color:var(--slate);max-width:640px;
}
.page-hero .cta-row{margin-top:34px;display:flex;gap:14px;flex-wrap:wrap;}

/* ---------- EQUATION STRIP ---------- */
.equation{
  margin-top:60px;
  background:var(--surface);
  border:1px solid var(--ink);
  border-radius:var(--radius);
  padding:32px 38px;
  font-family:var(--font-mono);
  font-size:16px;
  line-height:2.15;
  max-width:560px;
}
.equation .row{display:flex;align-items:center;justify-content:space-between;gap:24px;}
.equation .k{color:var(--ink);}
.equation .v{color:var(--slate);font-weight:500;}
.equation .v.solved{color:var(--ink);display:flex;align-items:center;gap:0;}
/* Pull the symbol's empty travel runway back out of the layout box so the
   square's resting edges line up with the values in the rows above rather
   than sitting 13px short of them. */
.equation .v.solved .symbol--motion{
  margin-right:calc(var(--runway) * -1);
  margin-left:-4px;
}

/* ---------- SECTION SHELL ---------- */
section{padding:100px 0;position:relative;}
/* Deep links from the Protocol drop-down land under a sticky header without
   this. */
section[id]{scroll-margin-top:92px;}
section.alt{background:var(--paper-deep);border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);}
/* A tinted section sitting directly under the header already has the header
   rule above it. */
section.flush-top{border-top:none;}
.section-head{max-width:680px;margin-bottom:56px;}
.section-head h2{font-size:clamp(28px,3.6vw,40px);margin-top:16px;}
.section-head .sub{margin-top:16px;font-size:17px;color:var(--slate);line-height:1.6;}

.reveal{opacity:0;transform:translateY(16px);transition:opacity .6s ease, transform .6s ease;}
.reveal.show{opacity:1;transform:translateY(0);}

/* ---------- STATS ---------- */
.stat-grid{
  display:grid;grid-template-columns:repeat(4,1fr);gap:1px;
  background:var(--rule);
  border:1px solid var(--rule);
  border-radius:var(--radius);
  overflow:hidden;
}
.stat{background:var(--surface);padding:36px 28px;}
.stat .num{
  font-family:var(--font-sans);font-weight:600;
  font-size:clamp(32px,3.4vw,44px);
  letter-spacing:-0.03em;
  font-variant-numeric:tabular-nums;
  color:var(--ink);
}
.stat .label{margin-top:10px;font-size:14px;line-height:1.5;color:var(--slate);}
@media (max-width:860px){.stat-grid{grid-template-columns:repeat(2,1fr);}}

.market-note{margin-top:40px;font-size:17px;line-height:1.65;color:var(--slate);max-width:700px;}

/* ---------- INCIDENT CARDS ---------- */
.incident-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--rule);border:1px solid var(--rule);border-radius:var(--radius);overflow:hidden;}
.incident{background:var(--surface);padding:30px 26px;}
.incident .tag{font-family:var(--font-mono);font-size:12.5px;color:var(--slate-mute);}
.incident p{margin-top:16px;font-size:16px;line-height:1.6;color:var(--ink);}
.incident-caption{
  margin-top:36px;padding-top:28px;border-top:1px solid var(--rule);
  font-family:var(--font-sans);font-style:italic;font-weight:500;font-size:20px;line-height:1.5;
  letter-spacing:-0.01em;
  color:var(--ink);max-width:760px;
}
@media (max-width:860px){.incident-grid{grid-template-columns:1fr;}}

/* ---------- SOLUTION COMPARISON ---------- */
.compare{display:grid;grid-template-columns:1fr 1fr;gap:1px;margin-bottom:56px;background:var(--rule);border:1px solid var(--rule);border-radius:var(--radius);overflow:hidden;}
.compare-card{padding:32px 30px;}
.compare-card.bad{background:var(--surface);}
.compare-card.good{background:var(--ink);color:var(--paper);}
.compare-card h4{
  font-family:var(--font-mono);font-size:13px;font-weight:500;margin-bottom:22px;
  letter-spacing:.02em;
}
.compare-card.bad h4{color:var(--slate-mute);}
.compare-card.good h4{color:var(--on-ink-mute);}
.compare-card h4 .wordmark{font-size:14px;}
.compare-item{margin-bottom:20px;}
.compare-item:last-child{margin-bottom:0;}
.compare-item .t{font-family:var(--font-sans);font-size:19px;font-weight:600;margin-bottom:6px;letter-spacing:-0.01em;}
.compare-item .d{font-size:14.5px;line-height:1.55;}
.compare-card.bad .d{color:var(--slate);}
.compare-card.good .d{color:var(--on-ink-mute);}
@media (max-width:860px){.compare{grid-template-columns:1fr;}}

/* ---------- TERMINAL FLOW ---------- */
.flow-terminal{
  background:var(--ink);
  border-radius:var(--radius);
  padding:8px;
}
.flow-titlebar{display:flex;align-items:center;gap:7px;padding:12px 16px 8px;}
.flow-titlebar span{width:9px;height:9px;border-radius:50%;background:rgba(244,242,238,.22);}
.flow-body{
  padding:24px 30px 32px;
  font-family:var(--font-mono);
  font-size:14.5px;line-height:2.1;
  color:var(--on-ink);
}
.flow-body .prompt{color:rgba(244,242,238,.5);}
.flow-line{opacity:0;animation:fadeIn .5s ease forwards;}
/* Granted: the one product state that carries the accent. */
.flow-body .ok{color:var(--warrant-green-dark);font-weight:500;}
/* Denied / informational states draw from the functional set, not the accent. */
.flow-body .no{color:var(--state-denied);font-weight:500;}
.flow-body .blue{color:var(--state-info);}
.flow-body .dim{color:var(--on-ink-mute);}
/* In product the same square shifts colour with the decision. */
.wsq{
  display:inline-block;width:9px;height:9px;
  margin-right:9px;vertical-align:0;
  background:var(--on-ink-mute);
}
.wsq.granted{background:var(--warrant-green-dark);}
.wsq.denied{background:var(--state-denied);}
@keyframes fadeIn{to{opacity:1;}}
.fl1{animation-delay:.1s;}
.fl2{animation-delay:.9s;}
.fl3{animation-delay:1.7s;}
.fl4{animation-delay:2.5s;}
.fl5{animation-delay:3.3s;}

/* ---------- OUTCOME PILLARS ---------- */
.pillars{display:grid;grid-template-columns:repeat(4,1fr);gap:22px;margin-top:56px;}
.pillar .idx{font-family:var(--font-mono);font-size:13px;color:var(--slate-mute);}
.pillar h4{margin-top:14px;font-size:21px;font-weight:600;}
.pillar p{margin-top:10px;font-size:14.5px;line-height:1.6;color:var(--slate);}
@media (max-width:860px){.pillars{grid-template-columns:1fr 1fr;}}
@media (max-width:560px){.pillars{grid-template-columns:1fr;}}

/* ---------- TEAM ---------- */
.team-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--rule);border:1px solid var(--rule);border-radius:var(--radius);overflow:hidden;}
.team-grid.cols-2{grid-template-columns:repeat(2,1fr);}
.team-card{background:var(--surface);padding:30px 26px;}
.avatar{
  width:50px;height:50px;border-radius:var(--radius);
  display:flex;align-items:center;justify-content:center;
  font-family:var(--font-mono);font-weight:500;font-size:15px;letter-spacing:.02em;
  background:var(--surface);border:1px solid var(--ink);color:var(--ink);
  margin-bottom:18px;
}
.team-card h4{font-size:18.5px;font-weight:600;font-family:var(--font-sans);}
.team-card .role{margin-top:4px;font-family:var(--font-mono);font-size:12px;color:var(--slate);}
.team-card p.bio{margin-top:14px;font-size:14.5px;line-height:1.6;color:var(--slate);}
.team-card.open{background:var(--paper-deep);}
.team-card.open .avatar{border-style:dashed;color:var(--slate-mute);border-color:var(--slate-mute);}
.team-subhead{
  margin:56px 0 26px;font-family:var(--font-mono);font-size:13px;color:var(--slate-mute);
  display:flex;align-items:center;gap:14px;
}
.team-subhead::after{content:"";flex:1;height:1px;background:var(--rule);}
@media (max-width:860px){.team-grid{grid-template-columns:1fr;}}

/* ---------- WRITING ---------- */
.notes{
  display:grid;gap:1px;background:var(--rule);
  border:1px solid var(--rule);border-radius:var(--radius);overflow:hidden;
}
.note{background:var(--surface);padding:30px 28px;}
.note .note-meta{
  display:flex;align-items:center;gap:12px;
  font-family:var(--font-mono);font-size:12px;color:var(--slate-mute);
}
.note .status{
  border:1px solid var(--rule);border-radius:var(--radius);
  padding:3px 8px;letter-spacing:.02em;
}
.note h3{margin-top:16px;font-size:22px;font-weight:600;}
.note p{margin-top:12px;font-size:15.5px;line-height:1.6;color:var(--slate);max-width:640px;}
.notes-note{
  margin-top:36px;padding-top:28px;border-top:1px solid var(--rule);
  font-size:17px;line-height:1.65;color:var(--slate);max-width:680px;
}
.notes-note a{border-bottom:1.5px solid var(--ink);}

/* ---------- CONTACT ---------- */
.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:64px;align-items:start;}
.contact-info h2{font-size:clamp(28px,3.6vw,40px);margin-top:16px;}
.contact-info .sub{margin-top:18px;font-size:17px;line-height:1.6;color:var(--slate);max-width:420px;}
.contact-email{
  margin-top:32px;display:inline-flex;align-items:center;gap:10px;
  font-family:var(--font-mono);font-size:16px;
  padding-bottom:4px;border-bottom:1.5px solid var(--ink);
}
.contact-form{background:var(--surface);border:1px solid var(--rule);border-radius:var(--radius);padding:34px;}
.field{margin-bottom:20px;}
.field label{
  display:block;font-family:var(--font-mono);font-size:12px;color:var(--slate);margin-bottom:8px;
}
.field input,.field textarea{
  width:100%;border:1px solid var(--rule);background:var(--surface);
  border-radius:var(--radius);padding:12px 14px;font-family:var(--font-sans);font-size:15px;
  color:var(--ink);
}
.field textarea{resize:vertical;min-height:100px;}
.field input:focus,.field textarea:focus{outline:1.5px solid var(--ink);outline-offset:1px;}
.contact-form button{
  width:100%;padding:13px 22px;border-radius:var(--radius);border:none;
  background:var(--ink);color:var(--paper);font-family:var(--font-sans);
  font-weight:600;font-size:15px;cursor:pointer;transition:opacity .15s ease;
}
.contact-form button:hover{opacity:.8;}
@media (max-width:860px){.contact-grid{grid-template-columns:1fr;gap:40px;}}

/* ---------- NEXT-PAGE STRIP ---------- */
.next-strip{
  display:flex;align-items:center;justify-content:space-between;gap:28px;flex-wrap:wrap;
  background:var(--surface);border:1px solid var(--ink);border-radius:var(--radius);
  padding:34px 36px;
}
.next-strip .nx-k{font-family:var(--font-mono);font-size:12.5px;color:var(--slate-mute);}
.next-strip h3{margin-top:12px;font-size:clamp(22px,2.6vw,28px);}
.next-strip p{margin-top:12px;font-size:16px;line-height:1.6;color:var(--slate);max-width:520px;}

/* ---------- FOOTER ---------- */
footer{padding:36px 0;border-top:1px solid var(--rule);}
footer .wrap{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:16px;}
footer .fmark{--A:6px;}
footer .flinks{display:flex;align-items:center;gap:24px;font-size:13.5px;font-weight:500;color:var(--slate);}
footer .flinks a:hover{color:var(--ink);}
footer .fnote{font-size:12.5px;color:var(--slate-mute);font-family:var(--font-mono);}
