/* ============================================================
   The Fortress Lab — shared design system
   ============================================================ */
*,::before,::after{box-sizing:border-box;margin:0;padding:0}
:root{
  --ground:#FBFAF8;
  --ink:#0E1420;
  --body:#414957;
  --muted:#5D6573;
  --faint:#A2A7B0;
  --accent:#9E3B1E;
  --rule:#0E1420;
  --rule-soft:#DFDBD2;
  --panel:#F3F1EC;
  --pad:84px;
  --max:1272px;
}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{background:var(--ground);color:var(--ink);
  font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  font-weight:400;font-size:16px;line-height:1.6;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
a{color:inherit;text-decoration:none}
.wrap{max-width:var(--max);margin:0 auto;padding:0 var(--pad)}

/* ---------- primitives ---------- */
.mono{font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:10px;font-weight:400;
  letter-spacing:.17em;text-transform:uppercase;line-height:1.4}
.mono-accent{color:var(--accent)}
h1,h2,h3{font-weight:500;letter-spacing:-.035em;line-height:1.03}
h1{font-size:clamp(38px,5.2vw,70px);letter-spacing:-.036em;line-height:1.05;text-wrap:balance}
h2{font-size:clamp(27px,3.05vw,42px);letter-spacing:-.032em;line-height:1.1;text-wrap:balance}
h3{font-size:19px;letter-spacing:-.018em;line-height:1.3;font-weight:600}
.dim{color:#98A0AE}
.lede{font-size:17.5px;line-height:1.68;color:var(--body);font-weight:400}
p{color:var(--body)}
.hair{border-top:1px solid var(--rule-soft)}
.src{font-size:9.5px;line-height:1.55;color:var(--faint);letter-spacing:.005em}

.btn{display:inline-block;font-family:"IBM Plex Mono",monospace;font-size:10.5px;font-weight:500;
  letter-spacing:.15em;text-transform:uppercase;padding:15px 34px;border:1px solid var(--ink);
  transition:background .18s ease,color .18s ease,border-color .18s ease;cursor:pointer}
.btn-solid{background:var(--ink);color:var(--ground)}
.btn-solid:hover{background:var(--accent);border-color:var(--accent)}
.btn-line{background:transparent;color:var(--ink)}
.btn-line:hover{background:var(--ink);color:var(--ground)}
.actions{display:flex;flex-wrap:wrap;gap:12px}

.reveal{opacity:0;transform:translateY(16px);transition:opacity .7s cubic-bezier(.2,.7,.2,1),transform .7s cubic-bezier(.2,.7,.2,1)}
.reveal.in{opacity:1;transform:none}

/* ---------- masthead ---------- */
.masthead{position:sticky;top:0;z-index:50;background:rgba(251,250,248,.9);backdrop-filter:saturate(180%) blur(10px)}
.masthead .wrap{display:flex;justify-content:space-between;align-items:center;
  padding-top:22px;padding-bottom:18px;border-bottom:1px solid var(--rule)}
.brand{font-size:15px;font-weight:600;letter-spacing:-.014em}
.masthead nav{display:flex;align-items:center;gap:38px}
.masthead nav a.navlink{font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:12.5px;
  font-weight:500;letter-spacing:.09em;text-transform:uppercase;color:var(--body);
  padding-bottom:3px;border-bottom:1px solid transparent;transition:color .15s,border-color .15s}
.masthead nav a.navlink:hover{color:var(--ink);border-color:var(--accent)}
.masthead nav a.navlink.here{color:var(--ink);border-color:var(--accent)}

/* ---------- hero ---------- */
.hero .wrap{padding-top:104px;padding-bottom:56px}
.hero-grid{display:grid;grid-template-columns:1.32fr 1fr;gap:80px;align-items:end}
.hero h1{margin-top:26px}
.hero h1.long{font-size:clamp(33px,3.7vw,52px);letter-spacing:-.032em}
.hero .lede{padding-bottom:6px}
.hero .actions{margin-top:30px}

.exhibit{display:grid;grid-template-columns:repeat(4,1fr);margin-top:76px;padding-top:24px;border-top:1px solid var(--rule)}
.exhibit>div{padding-right:32px}
.exhibit>div+div{padding-left:32px;border-left:1px solid var(--rule-soft)}
.exhibit .n{font-size:40px;font-weight:500;letter-spacing:-.038em;line-height:1;margin-bottom:11px;
  font-variant-numeric:tabular-nums;white-space:nowrap}
.exhibit .n.pair{font-size:31px;letter-spacing:-.03em;padding-top:8px;padding-bottom:1px}
.exhibit .n.acc{color:var(--accent)}
.exhibit .c{font-size:12.5px;line-height:1.52;color:var(--muted)}
.exhibit-src{margin-top:24px}

/* ---------- section scaffold ---------- */
section{padding:106px 0}
section[id]{scroll-margin-top:74px}
.sec-head{display:grid;grid-template-columns:1.52fr 1fr;gap:72px;align-items:end;
  padding-bottom:28px;border-bottom:1px solid var(--rule)}
.sec-head h2{margin-top:22px}
.sec-head .lede{padding-bottom:5px}
.sec-head .lede .add{display:block;margin-top:14px;color:var(--ink)}

.quad{display:grid;grid-template-columns:repeat(4,1fr);margin-top:44px}
.quad>div{padding-right:30px}
.quad>div+div{padding-left:30px;border-left:1px solid var(--rule-soft)}
.trio{display:grid;grid-template-columns:repeat(3,1fr);margin-top:40px}
.trio>div{padding-right:38px}
.trio>div+div{padding-left:38px;border-left:1px solid var(--rule-soft)}

.voices .who{color:var(--accent);margin-bottom:12px}
.voices .said{font-size:20px;letter-spacing:-.024em;line-height:1.22;font-weight:500;color:var(--ink)}

/* story */
.storyhead{margin-top:76px;padding-bottom:16px;border-bottom:1px solid var(--rule-soft)}
.story{margin-top:0}
.story>div{display:flex;flex-direction:column}
.story .mo{color:var(--accent);margin-bottom:14px}
.story .ev{font-size:15px;line-height:1.58;color:var(--body);margin-bottom:22px}
.story .sys{margin-top:auto;font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:10.5px;
  letter-spacing:.05em;color:var(--faint);line-height:1.5}

.pull{margin-top:52px;padding-top:26px;border-top:1px solid var(--rule-soft);
  font-size:19px;line-height:1.52;letter-spacing:-.016em;color:var(--body);max-width:78ch}
.closeline{margin-top:44px;padding-top:26px;border-top:1px solid var(--rule-soft);
  font-size:22px;line-height:1.42;letter-spacing:-.022em;font-weight:500;color:var(--accent);max-width:70ch}

/* bottleneck */
.bn h3{margin-bottom:12px}
.bn p{font-size:14.5px;line-height:1.62;color:var(--muted)}
.leadpara{margin-top:40px;font-size:17px;line-height:1.7;color:var(--body);max-width:88ch}

/* objection */
.objection{display:grid;grid-template-columns:1.52fr 1fr;gap:72px;margin-top:96px;
  padding-top:34px;border-top:1px solid var(--rule);align-items:start}
.objection .q{font-size:clamp(22px,2.3vw,31px);font-weight:500;letter-spacing:-.028em;
  line-height:1.18;color:var(--ink);text-wrap:balance}
.objection p{font-size:15.5px;line-height:1.68;color:var(--muted)}

/* ledger */
.ledger{margin-top:12px}
.ledger .row{display:grid;grid-template-columns:150px 1fr 1.25fr;gap:44px;
  padding:26px 0;border-bottom:1px solid var(--rule-soft);align-items:start}
.ledger .row:last-child{border-bottom:0}
.ledger .lever{color:var(--accent);padding-top:5px}
.ledger .move{font-size:19px;font-weight:600;letter-spacing:-.018em;line-height:1.3}
.ledger .why{font-size:14.5px;line-height:1.6;color:var(--muted)}

/* phases */
.phases .wk{color:var(--accent);margin-bottom:14px}
.phases h3{margin-bottom:12px}
.phases p{font-size:14px;line-height:1.62;color:var(--muted)}

.terms{display:grid;grid-template-columns:repeat(3,1fr);margin-top:44px;
  border-top:1px solid var(--rule);padding-top:24px}
.terms>div{padding-right:40px}
.terms>div+div{padding-left:40px;border-left:1px solid var(--rule-soft)}
.terms .k{margin-bottom:11px;color:var(--accent)}
.terms .v{font-size:26px;font-weight:500;letter-spacing:-.03em;line-height:1.12;margin-bottom:9px}
.terms p{font-size:13.5px;line-height:1.55;color:var(--muted)}

/* criteria */
.crit{display:grid;grid-template-columns:1fr 1fr;gap:0 64px;margin-top:36px}
.crit div{padding:22px 0;border-bottom:1px solid var(--rule-soft);display:flex;gap:18px;align-items:baseline}
.crit .no{color:var(--accent);flex:0 0 auto}
.crit p{font-size:15px;line-height:1.55;color:var(--body)}

/* practice */
.practice{display:grid;grid-template-columns:1.52fr 1fr;gap:72px;margin-top:44px;align-items:start}
.practice .lead p{font-size:16.5px;line-height:1.72;margin-bottom:17px}
.practice .lead p:last-child{margin-bottom:0}
.pblocks{border-top:1px solid var(--rule)}
.pblocks div{padding:20px 0;border-bottom:1px solid var(--rule-soft)}
.pblocks div:last-child{border-bottom:0}
.pblocks h3{font-size:16px;margin-bottom:8px}
.pblocks p{font-size:14px;line-height:1.6;color:var(--muted)}

/* route cards (root only) */
.routes{display:grid;grid-template-columns:1fr 1fr;gap:0;margin-top:44px;
  border-top:1px solid var(--rule)}
.routes a{display:flex;flex-direction:column;padding:38px 44px 38px 0;transition:background .2s ease}
.routes a+a{padding-left:44px;border-left:1px solid var(--rule-soft)}
.routes .who{color:var(--accent);margin-bottom:16px}
.routes h3{font-size:clamp(22px,2vw,27px);font-weight:500;letter-spacing:-.028em;
  line-height:1.16;margin-bottom:14px}
.routes p{font-size:14.5px;line-height:1.62;color:var(--muted);margin-bottom:22px}
.routes .go{margin-top:auto;align-self:flex-start;font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:10.5px;
  letter-spacing:.15em;text-transform:uppercase;color:var(--ink);
  border-bottom:1px solid var(--rule-soft);padding-bottom:4px;transition:border-color .2s,color .2s}
.routes a:hover .go{color:var(--accent);border-color:var(--accent)}

/* bridge */
.bridge{display:grid;grid-template-columns:1.52fr 1fr;gap:72px;margin-top:44px;align-items:start}
.bridge .big{font-size:clamp(21px,2.1vw,27px);font-weight:500;letter-spacing:-.026em;
  line-height:1.32;color:var(--ink);margin-bottom:22px;text-wrap:balance}
.bridge p{font-size:15.5px;line-height:1.68;color:var(--muted);margin-bottom:14px}
.bridge .go{display:inline-block;margin-top:8px;font-family:"IBM Plex Mono",ui-monospace,monospace;
  font-size:11px;letter-spacing:.15em;text-transform:uppercase;color:var(--ink);
  border-bottom:1px solid var(--rule-soft);padding-bottom:4px;transition:color .2s,border-color .2s}
.bridge .go:hover{color:var(--accent);border-color:var(--accent)}

/* questions */
.questions{display:grid;grid-template-columns:1fr 1fr;gap:0 72px;margin-top:40px}
.questions>div{padding:26px 0;border-bottom:1px solid var(--rule-soft);display:flex;gap:20px;align-items:baseline}
.questions .no{color:var(--accent);flex:0 0 auto;padding-top:4px}
.questions p{font-size:17px;line-height:1.5;letter-spacing:-.012em;color:var(--ink);font-weight:400}

/* single route + credential */
.routes.single{grid-template-columns:1fr;border-top:0;margin-top:8px}
.routes.single a,.routes.single a+a{padding:38px 0;border-left:0}
.routes.single p{max-width:74ch}
.cred-sec{padding:78px 0}
.cred{display:grid;grid-template-columns:1.52fr 1fr;gap:72px;align-items:end}
.cred h2{margin-top:22px}

/* contact block */
.contact{margin-top:34px;padding-top:26px;border-top:1px solid var(--rule-soft)}
.contact .nm{font-size:19px;font-weight:600;letter-spacing:-.018em;line-height:1.3;margin-bottom:4px}
.contact .rl{font-size:14.5px;line-height:1.5;color:var(--muted);margin-bottom:16px}
.contact .ln{font-size:15.5px;line-height:1.6;margin-bottom:5px}
.contact .ln a{border-bottom:1px solid var(--rule-soft);padding-bottom:1px;transition:color .2s,border-color .2s}
.contact .ln a:hover{color:var(--accent);border-color:var(--accent)}
.srcline{margin-top:28px}

/* close */
.close{background:var(--panel)}
.close .wrap{padding-top:112px;padding-bottom:112px}
.close h2{margin:22px 0 24px;max-width:32ch}
.close .lede{max-width:64ch}
.close .lede+.lede{margin-top:16px}
.close .actions{margin-top:34px}
.close .direct{margin-top:26px;color:var(--muted);font-size:14.5px}
.close .fineprint{margin-top:30px;padding-top:18px;border-top:1px solid var(--rule-soft);
  font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:10.5px;letter-spacing:.13em;
  text-transform:uppercase;color:var(--faint);max-width:52ch}
.close .direct a{border-bottom:1px solid var(--rule-soft);padding-bottom:1px}
.close .direct a:hover{border-color:var(--accent);color:var(--accent)}

/* signoff */
.signoff .wrap{padding-top:78px;padding-bottom:78px;border-top:1px solid var(--rule-soft)}
.signoff p{font-size:clamp(26px,3.4vw,44px);font-weight:500;letter-spacing:-.034em;
  line-height:1.08;color:var(--ink)}

/* footer */
footer .wrap{display:flex;flex-wrap:wrap;gap:14px 30px;justify-content:space-between;
  align-items:center;padding-top:26px;padding-bottom:34px;border-top:1px solid var(--rule)}
footer .mono{color:var(--faint)}
footer .fnav{display:flex;flex-wrap:wrap;gap:26px;align-items:center}
footer a.mono:hover{color:var(--ink)}

/* legal page */
.legal .wrap{padding-top:84px;padding-bottom:96px;max-width:820px}
.legal h1{font-size:clamp(32px,4vw,50px);margin-bottom:8px}
.legal .upd{margin-bottom:44px;color:var(--faint)}
.legal h2{font-size:19px;font-weight:600;letter-spacing:-.018em;margin:38px 0 10px}
.legal p{font-size:15.5px;line-height:1.7;margin-bottom:12px}
.legal .back{margin-top:52px}

@media (max-width:1080px){
  :root{--pad:44px}
  .hero-grid,.sec-head,.practice,.objection{grid-template-columns:1fr;gap:30px;align-items:start}
  .exhibit,.quad{grid-template-columns:1fr 1fr}
  .trio{grid-template-columns:1fr}
  .exhibit>div,.quad>div{padding:22px 26px 22px 0;border-top:1px solid var(--rule-soft)}
  .exhibit>div+div,.quad>div+div{padding-left:26px}
  .exhibit>div:nth-child(odd),.quad>div:nth-child(odd){border-left:0;padding-left:0}
  .trio>div,.trio>div+div{padding:22px 0;border-left:0;border-top:1px solid var(--rule-soft)}
  .terms{grid-template-columns:1fr}
  .terms>div,.terms>div+div{padding:20px 0;border-left:0;border-top:1px solid var(--rule-soft)}
  .ledger .row{grid-template-columns:1fr;gap:12px}
  .crit{grid-template-columns:1fr}
  .questions{grid-template-columns:1fr;gap:0}
  .bridge{grid-template-columns:1fr;gap:28px}
  .cred{grid-template-columns:1fr;gap:26px;align-items:start}
  .routes{grid-template-columns:1fr}
  .routes a,.routes a+a{padding:32px 0;border-left:0}
  .routes a+a{border-top:1px solid var(--rule-soft)}
  .objection{margin-top:64px}
  .masthead nav a:not(.btn){display:none}
}
@media (max-width:640px){
  :root{--pad:22px}
  section{padding:68px 0}
  .exhibit,.quad{grid-template-columns:1fr}
  .exhibit>div+div,.quad>div+div{padding-left:0;border-left:0}
  .exhibit .n.pair{font-size:34px}
  .hero .wrap{padding-top:56px}
}
