/* HOME HERO — measured from P01 · Homepage / C1 · Hero (1440 frame).
   Frame: navy, 812px tall = 112 pad-top + 491 grid + 121 GDSP strip + 88 pad-bottom.
   Grid: 720px copy + 80px gap + 400px specimen card = 1200px content width. */
.home-hero{background:var(--navy);padding-block:112px 88px;}
.home-hero__grid{
  display:grid;grid-template-columns:720px 400px;gap:80px;
  align-items:start;padding-inline:var(--gutter);
}
.home-hero__copy .eyebrow{color:var(--gold);}
.home-hero__copy .h-hero--split{
  font-size:46px;line-height:1.12;letter-spacing:-.01em;
  color:var(--white);max-inline-size:700px;margin-block-start:28px;
}
.home-hero__copy p{
  font-size:19px;line-height:1.65;color:var(--hero-sub);
  max-inline-size:660px;margin-block:28px 0;
}
.home-hero__actions{display:flex;gap:20px;align-items:center;flex-wrap:wrap;margin-block-start:28px;}
/* Hero primary is a GOLD OUTLINE button — distinct from the navy-filled header CTA */
.btn-outline{
  border:1px solid var(--gold);color:var(--gold);
  font-weight:500;font-size:15px;letter-spacing:.02em;
  padding:16px 28px;border-radius:var(--radius);display:inline-block;
  transition:background var(--t-fast) var(--ease),color var(--t-fast) var(--ease);
}
.btn-outline:hover{background:var(--gold);color:var(--navy);}
.home-hero__actions .link-arrow{color:var(--white);font-size:15px;}
.link-arrow{font-weight:500;font-size:14px;color:var(--gold-700);}
.cred{margin-block-start:18px;color:var(--meta);}
.home-hero__gdsp{padding-inline:var(--gutter);margin-block-start:0;}

/* Specimen card — 400x408, 28px inline / 26px block padding, 14px rhythm */
.specimen{
  background:var(--white);border-radius:var(--radius);
  padding:26px 28px;display:flex;flex-direction:column;gap:14px;
}
.specimen__head{display:flex;justify-content:space-between;align-items:baseline;}
.specimen__sector{font-family:var(--mono);font-size:10px;letter-spacing:.02em;color:var(--ink);}
.specimen__rule{block-size:1px;background:var(--rule);}
.specimen__big{display:flex;align-items:center;gap:14px;}
.specimen__big .num{font-family:var(--mono);font-weight:500;font-size:46px;line-height:1;}
.specimen__tierwrap{display:flex;flex-direction:column;gap:2px;}
.specimen__tierlabel{font-family:var(--mono);font-size:10px;letter-spacing:.02em;color:var(--ink);}
.specimen__tier{font-weight:500;font-size:13px;}
.specimen__rows div{
  display:flex;justify-content:space-between;align-items:center;
  font-family:var(--mono);font-size:10px;letter-spacing:.01em;color:var(--ink);
  padding-block-start:7px;border-block-start:1px solid var(--rule);min-block-size:31px;
}
.specimen__rows b{font-weight:500;font-size:12px;color:var(--charcoal);}
.specimen__verdict{
  align-self:flex-start;border:1px solid currentColor;border-radius:var(--radius);
  font-family:var(--mono);font-weight:500;font-size:12px;letter-spacing:.02em;
  padding:7px 14px;
}
@media(max-width:1200px){
  .home-hero__grid{grid-template-columns:1fr 400px;gap:56px;}
  .home-hero__copy .h-hero--split{font-size:40px;}
}
@media(max-width:1024px){
  .home-hero{padding-block:64px 56px;}
  .home-hero__grid{grid-template-columns:1fr;gap:36px;}
  .home-hero__copy .h-hero--split{font-size:34px;}
  .home-hero__copy p{font-size:17px;}
}

/* STATS — C3 · Stat Block. Columns 260/220/220/220 with 93.33px gutters across
   1200px; 1px hairline centred in each gutter; gold 28x2 rule caps each stat. */
.stats{
  display:grid;grid-template-columns:260px 220px 220px 220px;
  justify-content:space-between;padding-block:64px;
}
.stat{position:relative;display:flex;flex-direction:column;gap:10px;}
.stat__rule{inline-size:28px;block-size:2px;background:var(--gold);}
.stat .num{font-family:var(--mono);font-weight:500;font-size:44px;line-height:1;}
.stat p{font-size:13px;line-height:1.6;color:var(--ink);margin:0;}
.stat:not(:last-child)::after{
  content:"";position:absolute;inset-inline-end:-47px;inset-block-start:23px;
  inline-size:1px;block-size:64px;background:var(--rule);
}
@media(max-width:1200px){
  .stats{grid-template-columns:repeat(4,1fr);gap:40px;}
  .stat:not(:last-child)::after{display:none;}
}
@media(max-width:900px){.stats{grid-template-columns:repeat(2,1fr);gap:32px;}}

/* TWO CRISES — C2 · Two-Column: 580px copy + 80px gap + 520px navy document card.
   Section is 644px = 112 + 420 content + 112; columns are centred on each other. */
.twocrises{display:grid;grid-template-columns:580px 520px;gap:80px;align-items:center;padding-block:112px;}
.twocrises__copy{display:flex;flex-direction:column;gap:24px;}
.twocrises__copy>*{margin:0;}
.twocrises .h-sec{font-size:40px;line-height:1.15;}
.twocrises .body-copy{font-size:16px;line-height:1.7;}
.mono-block{
  background:var(--navy);color:var(--hero-sub);
  padding:56px 48px;border-radius:var(--radius);
  display:flex;flex-direction:column;gap:20px;
}
.mono-block__label{
  font-family:var(--mono);font-size:12px;letter-spacing:.02em;color:var(--meta);
}
.mono-block .num{font-family:var(--mono);font-weight:500;font-size:52px;line-height:1;color:var(--white);}
.mono-block p{margin:0;font-size:15px;line-height:1.7;}
.mono-block__rule{block-size:1px;background:var(--rule-navy);}
@media(max-width:1200px){.twocrises{grid-template-columns:1fr 460px;gap:56px;}}
@media(max-width:1024px){.twocrises{grid-template-columns:1fr;gap:36px;}}

/* MONUMENT — C4 · Statement: 566px = 110 + 346 content + 110, centred */
.monument{text-align:center;padding-block:110px;}
/* C·How It Works: 394px = 64 + 266 + 64 */
.steps{padding-block:64px;}
/* C8 · Document Cards: 579px = 112 + 355 + 112; 3 dossiers of 384 with 24px gutters */
.records{padding-block:112px;}
.records .card-grid{grid-template-columns:repeat(3,384px);gap:24px;justify-content:space-between;}
@media(max-width:1200px){.records .card-grid{grid-template-columns:repeat(3,1fr);}}
@media(max-width:900px){.records{padding-block:64px;}.records .card-grid{grid-template-columns:1fr;}}
.monument__year{
  display:block;font-family:var(--mono);font-weight:500;font-size:15px;
  letter-spacing:.02em;color:var(--meta);
}
.monument__rule{
  display:block;inline-size:64px;block-size:2px;background:var(--gold);
  margin:28px auto 0;
}
.monument__line{
  font-family:var(--serif);font-weight:500;font-size:34px;line-height:1.35;
  color:var(--white);max-inline-size:880px;margin:28px auto 0;
}
.monument__note{
  display:block;font-family:var(--mono);font-size:13px;line-height:1.5;
  color:var(--meta);max-inline-size:680px;margin:28px auto 0;
}
@media(max-width:900px){
  .monument{padding-block:64px 56px;}
  .monument__line{font-size:24px;}
}

/* OUTPUTS */
/* C5 · Feature List — header 164px (tick+14, eyebrow+14, 40px H2), two rows of
   568px features with 64px column / 30px row gutters. Section 660 = 72+516+72. */
.outputs .gold-tick{margin-block-end:14px;}
.outputs .h-sec{font-size:40px;line-height:1.15;margin-block:14px 30px;}
.outputs__grid{display:grid;grid-template-columns:1fr 1fr;gap:30px 64px;}
.output .hairline{margin-block-end:11px;}
.output .h-ed{font-size:26px;line-height:1.28;margin-block:10px;}
.output p{font-size:16px;line-height:1.625;max-inline-size:520px;}
@media(max-width:1024px){.outputs .h-sec{font-size:32px;}}
@media(max-width:900px){.outputs__grid{grid-template-columns:1fr;}}

/* MONUMENT — superseded by the measured C4 · Statement block above
   (110px padding, 34px serif at 1.35). The original 88px/27px values were
   overriding it purely by source order. */

/* CASE LIBRARY */
.cs-tools{display:flex;gap:16px;align-items:center;margin-block-end:18px;flex-wrap:wrap;}
.cs-tools input,.cs-tools select{border:1px solid var(--rule);background:var(--white);padding:12px 14px;font:inherit;font-size:14px;min-inline-size:240px;}
.cs-legend{display:flex;gap:20px;flex-wrap:wrap;margin-block-end:14px;}
.cs-legend span{display:inline-flex;align-items:center;gap:7px;font-family:var(--mono);font-size:11px;color:var(--ink);}
.cs-legend i{inline-size:14px;block-size:8px;display:inline-block;}
.cs-table{inline-size:100%;border-collapse:collapse;background:var(--white);}
.cs-table th{background:var(--navy);color:var(--meta);font-family:var(--mono);font-weight:500;font-size:10px;letter-spacing:.01em;text-align:start;padding:12px 14px;}
.cs-table th.num-col,.cs-table td.num-col{text-align:end;}
.cs-table td{padding:13px 14px;font-size:13.5px;border-block-end:1px solid var(--rule);}
.cs-table tr:nth-child(even) td{background:var(--paper);}
.cs-table tr.bench td{background:var(--cream);border-inline-start:2px solid var(--gold);}
.cs-table .bar{position:relative;background:#EDF0F3;block-size:8px;inline-size:120px;display:inline-block;vertical-align:middle;margin-inline-end:8px;}
.cs-table .bar i{position:absolute;inset-block:0;inset-inline-start:0;inline-size:0;transition:inline-size .5s var(--ease);}
.barfill.fill .bar i{inline-size:var(--w);}
@media(max-width:768px){ /* table -> cards per M04 */
 .cs-table thead{display:none;}
 .cs-table,.cs-table tbody,.cs-table tr,.cs-table td{display:block;inline-size:100%;}
 .cs-table tr{border:1px solid var(--rule);margin-block-end:12px;background:var(--white);}
 .cs-table td{border:0;padding:8px 14px;}
 .cs-table td[data-l]::before{content:attr(data-l);display:block;font-family:var(--mono);font-size:9px;color:var(--ink);letter-spacing:.02em;}
}

/* FEE BAND */
.fee-band{text-align:center;padding-block:56px;}
.fee-band__line{font-family:var(--serif);font-weight:600;font-size:26px;line-height:1.45;color:#fff;max-inline-size:840px;margin:12px auto;}

/* TIER CARDS */
.tier-row{display:grid;grid-template-columns:repeat(5,1fr);gap:16px;align-items:end;}
.tier{background:var(--white);border:1px solid var(--rule);border-radius:var(--radius);padding:24px 22px;display:flex;flex-direction:column;gap:12px;}
.tier--featured{background:var(--cream);border:2px solid var(--gold);padding-block:28px;}
.tier__tag{align-self:flex-start;background:var(--gold-700);color:#fff;font-family:var(--mono);font-weight:500;font-size:9px;letter-spacing:.02em;padding:4px 9px;}
.tier__price{font-size:27px;}
.tier--featured .tier__price{font-size:32px;}
.tier__kv span{display:block;font-family:var(--mono);font-size:9px;letter-spacing:.015em;color:var(--ink);}
.tier__kv b{font-weight:500;font-size:13px;color:var(--charcoal);}
.tier p{font-size:12.5px;line-height:1.55;}
@media(max-width:1200px){.tier-row{grid-template-columns:repeat(2,1fr);}.tier--featured{grid-column:span 2;}}
@media(max-width:640px){.tier-row{grid-template-columns:1fr;}.tier--featured{grid-column:auto;}}

/* MATRIX */
/* Inclusion matrix column geometry, measured from P06: the label column is
   264px and each of the five scope columns is 174px (264 + 5x174 = 1134), which
   puts the ✓ marks at x=466/640/814/988/1162. Auto table layout sized them from
   content and drifted every tick ~70px right. */
.mx-table{inline-size:1134px;max-inline-size:100%;table-layout:fixed;border-collapse:collapse;background:var(--white);}
.mx-table th:first-child,.mx-table td:first-child{inline-size:264px;}
.mx-table th:not(:first-child),.mx-table td:not(:first-child){inline-size:174px;}
.mx-table th{background:var(--navy);color:var(--meta);font-family:var(--mono);font-weight:500;font-size:10px;line-height:1.5;letter-spacing:.01em;padding:12px 16px;text-align:center;}
.mx-table th:first-child{text-align:start;}
.mx-table th.mx-feat{color:var(--gold);}
.mx-table td{padding:13px 16px;font-size:14px;border-block-end:1px solid var(--rule);}
.mx-table tr:nth-child(even) td{background:var(--paper);}
.mx-c{text-align:center;font-family:var(--mono);font-weight:500;color:var(--d1);}
.mx-c.mx-feat{color:var(--gold-700);}
td.mx-c.mx-no{color:var(--rule);}   /* the "not included" em-dash */
/* The matrix scrolls inside its own container — the page itself must never
   scroll horizontally (C11 mobile rule: horizontal-scroll, frozen first column). */
.mx-scroll{max-inline-size:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;}
@media(max-width:900px){
  .mx-table{min-inline-size:560px;}
  .mx-table th,.mx-table td{padding:10px 12px;}
  .mx-table th:first-child,.mx-table td:first-child{
    position:sticky;inset-inline-start:0;background:var(--white);z-index:1;
  }
  .mx-table th:first-child{background:var(--navy);}
  .mx-table tr:nth-child(even) td:first-child{background:var(--paper);}
}

/* TIMELINE (About) */
.timeline{position:relative;}
.timeline__track{block-size:1px;background:var(--navy-700);margin-block:26px 0;position:relative;}
.timeline__row{display:grid;grid-template-columns:repeat(4,1fr);gap:32px;padding-block-start:22px;}
.timeline__node{position:relative;}
.timeline__node::before{content:"";position:absolute;inset-block-start:-27px;inset-inline-start:0;inline-size:9px;block-size:9px;border-radius:50%;background:var(--gold);}
@media(max-width:900px){.timeline__row{grid-template-columns:1fr 1fr;}}
.contrast__card{background:var(--navy);color:var(--hero-sub);border-radius:var(--radius);padding:36px;display:flex;flex-direction:column;gap:10px;}
.contrast__card b{color:var(--hero-sub);font-weight:500;font-size:14px;}
.contrast__card p{font-size:13.5px;line-height:1.65;}

/* QUESTION BAND (Delivers) */
.qband{padding-block:72px;}
.qband__grid{display:grid;grid-template-columns:1fr 1fr;}
.qband__grid>div{padding-inline:56px;}
.qband__grid>div:first-child{padding-inline-start:0;}
.qband__rdc{border-inline-start:1px solid var(--navy-700);}
.qband__q{font-family:var(--serif);font-size:25px;line-height:1.4;color:var(--hero-sub);margin-block-start:14px;max-inline-size:460px;}
.qband__q--strong{font-weight:600;color:#fff;}
@media(max-width:900px){.qband__grid{grid-template-columns:1fr;gap:32px;}.qband__rdc{border:0;padding-inline:0;border-block-start:1px solid var(--navy-700);padding-block-start:28px;}.qband__grid>div{padding-inline:0;}}

/* STEP SPINE (Delivers) */
.steps__spine{display:flex;gap:0;align-items:flex-start;margin-block-end:24px;flex-wrap:wrap;}
.step{flex:1;min-inline-size:150px;position:relative;padding-block-start:2px;}
.step__no{display:inline-flex;align-items:center;justify-content:center;inline-size:40px;block-size:40px;border:1px solid var(--rule);background:var(--white);color:var(--gold-700);font-weight:500;font-size:13px;}
.step:not(:last-child)::after{content:"";position:absolute;inset-block-start:21px;inset-inline-start:44px;inset-inline-end:8px;block-size:1px;background:var(--rule);}
.step--gold .step__no{background:var(--gold-700);border-color:var(--gold-700);color:#fff;}
.step__label{display:block;font-size:13.5px;line-height:1.55;margin-block-start:12px;max-inline-size:190px;}
.step--gold .step__label{font-weight:500;color:var(--charcoal);}
@media(max-width:900px){.steps__spine{flex-direction:column;gap:18px;}.step:not(:last-child)::after{display:none;}}

/* DIVERGENCE CARDS */
.divg{background:var(--white);border:1px solid var(--rule);border-radius:var(--radius);padding:28px;display:flex;flex-direction:column;gap:12px;}
.divg .hairline{margin-block:2px;}
.divg__row{display:flex;justify-content:space-between;align-items:center;gap:12px;}
.divg__chip{font-family:var(--mono);font-weight:500;font-size:12px;padding:5px 12px;border:1px solid;}
.divg__chip--agency{color:var(--meta);border-color:var(--meta);}
.divg__chip--up{color:var(--d1);border-color:var(--d1);background:var(--d1-bg);}
.divg__chip--down{color:var(--d6);border-color:var(--d6);background:var(--d6-bg);}
.divg p{font-size:13px;line-height:1.6;}

/* STAKEHOLDERS */
.stake-grid{display:grid;grid-template-columns:1fr 1fr;gap:26px 64px;}
.stake h3{font-family:var(--serif);font-weight:500;font-size:17px;color:var(--charcoal);margin-block:4px 6px;}
.stake p{font-size:13px;line-height:1.6;max-inline-size:520px;}
@media(max-width:900px){.stake-grid{grid-template-columns:1fr;}}

/* PIPELINE (System) */
.pipeline__flow{display:flex;align-items:stretch;gap:0;flex-wrap:wrap;}
.pl-node{background:var(--navy-node);border:1px solid var(--navy-700);border-radius:var(--radius);padding:20px 22px;display:flex;flex-direction:column;gap:8px;max-inline-size:220px;}
.pl-node b{font-family:var(--serif);font-weight:500;font-size:16px;color:#fff;line-height:1.3;}
.pl-node--final{background:#174372;border:2px solid var(--gold);}
.pl-seal{align-self:flex-start;border:1px solid var(--gold-700);color:var(--gold);font-family:var(--mono);font-size:9px;letter-spacing:.01em;padding:3px 8px;}
.pl-arrow{display:flex;flex-direction:column;align-items:center;justify-content:center;padding-inline:12px;gap:4px;}
.pl-arrow span{color:var(--gold);font-family:var(--mono);font-size:20px;}
.pl-arrow i{font-style:normal;color:var(--meta);font-size:9px;}
@media(max-width:1024px){.pipeline__flow{flex-direction:column;align-items:flex-start;gap:8px;}.pl-arrow{flex-direction:row;padding-block:4px;}}

/* ZONE LIST */
.zone-list{display:flex;flex-direction:column;gap:12px;max-inline-size:900px;}
.zone{background:var(--white);border:1px solid var(--rule);padding:16px 18px;display:flex;flex-direction:column;gap:6px;}
.zone__head{display:flex;align-items:center;gap:10px;}
.zone__head b{font-weight:500;font-size:14px;}

/* FORMS */
.hp{position:absolute;inset-inline-start:-9999px;}
.contact-grid{display:grid;grid-template-columns:1fr 340px;gap:48px;align-items:start;}
.form-card{background:var(--white);border:1px solid var(--rule);padding:32px;}
.form-card label,.ticket label{display:block;font-weight:500;font-size:13px;color:var(--charcoal);margin-block-end:14px;}
.form-card input,.form-card textarea,.ticket input{display:block;inline-size:100%;border:1px solid var(--rule);background:var(--white);padding:12px 14px;font:inherit;font-size:14px;margin-block-start:6px;}
.form-ok{background:var(--d1-bg);border:1px solid var(--d1);color:var(--d1);padding:20px 22px;font-size:14.5px;}
.contact-panel{background:var(--white);border:1px solid var(--rule);padding:24px;display:flex;flex-direction:column;gap:14px;}
.cp-row b{display:block;font-weight:500;font-size:13px;color:var(--charcoal);margin-block-start:4px;}
@media(max-width:1024px){.contact-grid{grid-template-columns:1fr;}}

/* ORDER */
.scope-list{display:flex;flex-direction:column;gap:0;background:var(--white);border:1px solid var(--rule);}
.scope{display:grid;grid-template-columns:24px 40px 1fr auto;gap:16px;align-items:center;padding:18px 22px;border-block-end:1px solid var(--rule);cursor:pointer;}
.scope:last-child{border-block-end:0;}
.scope--rec{background:var(--cream);border-inline-start:2px solid var(--gold);}
.scope input{accent-color:var(--gold-700);}
.scope__name b{display:block;font-weight:500;font-size:13px;color:var(--charcoal);letter-spacing:.01em;}
.scope__name em{font-style:normal;font-size:12.5px;color:var(--ink);}
.scope__tag{font-style:normal;background:var(--gold-700);color:#fff;font-size:9px;padding:2px 6px;margin-inline-start:8px;}
.scope__price{font-size:22px;}
.ticket{background:var(--white);border:1px solid var(--rule);padding:36px;margin-block-start:8px;}
.ticket__head{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-block-end:20px;}
.ticket__fields{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;}
.ticket__foot{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-block-start:6px;flex-wrap:wrap;}
.ticket__conf{margin-block-start:16px;padding-block-start:16px;border-block-start:1px solid var(--rule);color:var(--ink);}
.next-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:40px;}
@media(max-width:900px){.ticket__fields,.next-grid{grid-template-columns:1fr;}.scope{grid-template-columns:24px 1fr auto;}.scope>.mono:first-of-type{display:none;}}
.legal-copy h2{font-family:var(--serif);font-weight:500;font-size:24px;color:var(--charcoal);margin-block:32px 12px;}

/* CASE DETAIL */
.meta-cells{display:flex;gap:0;border:1px solid var(--rule);background:var(--white);margin-block-end:28px;flex-wrap:wrap;}
.meta-cells>div{flex:1;min-inline-size:180px;padding:16px 20px;}
.meta-cells>div+div{border-inline-start:1px solid var(--rule);}
.meta-cells b{display:block;font-weight:500;font-size:14px;color:var(--charcoal);margin-block-start:4px;}
.verdict-box{background:var(--white);border:1px solid var(--rule);padding:28px;display:flex;flex-direction:column;gap:18px;}

/* PDF VIEWER (Sample Report) */
.viewer{border:1px solid var(--rule);background:var(--white);}
.viewer__bar{display:flex;justify-content:space-between;align-items:center;gap:20px;background:var(--navy);color:var(--meta);padding:11px 18px;font-size:12px;}
.viewer__bar a{color:var(--gold);font-weight:500;font-family:var(--sans);font-size:13px;}
.viewer__stage{display:flex;justify-content:center;align-items:center;gap:28px;padding:56px 24px;}
.thumb{inline-size:200px;block-size:270px;background:var(--white);border:1px solid var(--rule);box-shadow:var(--shadow-card);padding:16px;display:flex;flex-direction:column;gap:8px;}
.thumb--main{inline-size:260px;block-size:340px;border:1.5px solid var(--gold);padding:18px;}
.thumb__brand{font-size:8px;font-weight:500;color:var(--navy);letter-spacing:.02em;}
.thumb__rule{inline-size:46px;block-size:2px;background:var(--gold);}
.thumb b{font-family:var(--serif);font-weight:600;font-size:12px;line-height:1.25;color:var(--charcoal);}
.thumb--main b{font-size:15px;}
.thumb i{display:block;block-size:4px;background:#E8EAEE;inline-size:80%;}
.thumb i:nth-of-type(odd){inline-size:65%;}
.thumb--main i{block-size:5px;}
@media(max-width:900px){.viewer__stage{flex-direction:column;}.thumb{display:none;}.thumb--main{display:flex;}}

/* SYSTEM: definition tables */
.def-table{inline-size:100%;max-inline-size:1000px;border-collapse:collapse;background:var(--white);margin-block:18px;}
.def-table th{background:var(--navy);color:var(--meta);font-family:var(--mono);font-weight:500;font-size:10px;text-align:start;padding:10px 14px;}
.def-table td{padding:12px 14px;font-size:13.5px;border-block-end:1px solid var(--rule);vertical-align:top;}
.def-table td.mono{font-weight:500;color:var(--navy);white-space:nowrap;}

/* FAQ */
.faq__item{max-inline-size:800px;border-block-end:1px solid var(--rule);padding-block:14px;}
.faq__item summary{font-family:var(--serif);font-weight:500;font-size:19px;color:var(--charcoal);cursor:pointer;list-style:none;display:flex;justify-content:space-between;gap:24px;}
.faq__item summary::after{content:"+";font-family:var(--mono);color:var(--gold-700);font-size:19px;}
.faq__item[open] summary::after{content:"—";}
.faq__item p{font-size:15px;margin-block-start:10px;max-inline-size:740px;}

/* SLEEVES (X-Ray) */
.sleeves{background:var(--white);border:1px solid var(--rule);padding:28px;margin-block-start:24px;}
.sleeve{margin-block-end:18px;}
.sleeve__head{display:flex;justify-content:space-between;gap:16px;font-size:14px;margin-block-end:8px;}
.sleeve__head b{font-weight:500;color:var(--charcoal);}
.sleeve__bar{position:relative;block-size:10px;background:#EDF0F3;}
.sleeve__bar i{position:absolute;inset-block:0;inset-inline-start:0;inline-size:0;transition:inline-size .5s var(--ease);}
.sleeve__bar.fill i{inline-size:var(--w);}
.req-access{display:flex;gap:0;max-inline-size:600px;}
.req-access input[type=email]{flex:1;border:1px solid var(--rule);padding:13px 16px;font:inherit;font-size:14px;}
.req-access .btn-ghost{border-radius:0;}

/* LICENSING REFERENCE */
.lic-note{border:1px solid var(--rule);border-inline-start:2px solid var(--gold-700);background:var(--white);padding:18px 22px;max-inline-size:900px;}
.lic-note p{font-size:13px;line-height:1.7;margin-block-start:6px;color:var(--ink);}


/* ===== FIGMA PARITY PASS — per-page corrections ===== */
/* Generated from measured Figma↔build diffs, one block per page frame. */


/* ---------- P02 ---------- */
/* ============================================================
   P02 · About — parity with Figma frame "P02 · About" (1440x4079).
   Shared components (hero-inner, editorial, cta-band) are scoped with
   .page-template-about so parallel page work cannot collide; the
   About-only components (.timeline, .contrast) are corrected in place.
   ============================================================ */

/* --- C1L · Hero Light — frame y=107..500, h=393, 1px #D8DCE3 stroke --- */
/* crumb: IBM Plex Mono 400 12/16.8  (Figma lineHeightPx 16.7999 = 1.4) */
.page-template-about .hero-inner .crumb{line-height:1.4;}
/* eyebrow "The Origin": Inter 500 13/15.6 (1.2); H1 then lands at y=232 */
.page-template-about .hero-inner .eyebrow{line-height:1.2;margin-block-end:18px;}
/* intro text box is 760 wide in the Figma, not 800 */
.page-template-about .hero-inner .intro{max-inline-size:760px;}
/* meta-rail: hairline at y=406 (40px below the intro), row at y=421 (+15),
   mono 10.5/14.7 (1.4). Frame closes at y=500 -> 62px tail + the 1px stroke. */
.page-template-about .hero-inner .meta-rail{margin-block-start:40px;padding-block:15px 62px;line-height:1.4;}
/* ghost folio "02": Figma x=1140 w=180 -> trailing edge 1320 = content column */
.page-template-about .hero-inner .folio{inset-inline-end:var(--gutter);}

/* --- C6 editorial sections (SECTION 01 / 02 / 03) -------------------- */
/* sec-no sits at y=588 in a frame starting at y=500 -> 88px lead.
   Frames are 868 / 556 / 556 for 618 / 309 / 280 of copy, so no single
   tail matches all three; 172 keeps every frame inside the +/-24 band. */
.page-template-about .editorial{padding-block:88px 172px;}
.page-template-about .editorial__body>p:last-child{margin-block-end:0;}
/* sec-no "SECTION 01": IBM Plex Mono 400 11/13.2 (1.2), tracking 0.44 = .04em */
.page-template-about .editorial__label{font-weight:400;line-height:1.2;}
/* h2: Source Serif 4 600 26/33.28 (1.28), tracking -0.13 = -.005em */
.page-template-about .h-ed{font-weight:600;letter-spacing:-.005em;}
/* body: Inter 400 17/28.9 (1.7) in a 680px measure, 20px between paragraphs */
.page-template-about .editorial__body>p{font-size:17px;line-height:1.7;}

/* --- C·Timeline — frame y=1368..1739, h=371 -------------------------- */
/* "THE CALIBRATION RECORD": IBM Plex Mono 400 13/15.6 (1.2),
   tracking 0.52 = .04em, #E8A300 — not the Inter/.12em .eyebrow role. */
.timeline__label{font-family:var(--mono);font-weight:400;font-size:13px;line-height:1.2;letter-spacing:.04em;color:var(--gold);}
/* events sit on a 300px pitch at x=120/420/720/1020; dots at y=1492,
   i.e. 36px below the label. Copy boxes are 230 wide inside the 300. */
.timeline .timeline__row{grid-template-columns:repeat(4,1fr);gap:0;margin-block-start:36px;padding-block-start:0;}
.timeline .timeline__node{padding-block-start:28px;padding-inline-end:70px;}
/* 10x10 amber dot (r=5) at the column origin (was 9px at -27px) */
.timeline .timeline__node::before{inset-block-start:0;inset-inline-start:0;inline-size:10px;block-size:10px;}
/* 290x1 #1A5088 connector at y=1496.5, i.e. dot edge to next dot;
   the 4th event carries no connector in the Figma */
.timeline .timeline__node::after{content:"";position:absolute;inset-block-start:4.5px;inset-inline-start:10px;inline-size:calc(100% - 10px);block-size:1px;background:var(--navy-700);}
.timeline .timeline__node:last-child::after{display:none;}
/* year: IBM Plex Mono 500 22/24.2 (1.1) #E8A300, top at y=1520 */
.timeline__node .mono{display:block;font-weight:500;font-size:22px;line-height:1.1;color:var(--gold);}
/* title: Source Serif 4 500 18/23.4 (1.3) #FFFFFF, 8px below the year */
.timeline__node h3{font-family:var(--serif);font-weight:500;font-size:18px;line-height:1.3;color:var(--white);margin-block:8px 0;}
/* body: Inter 400 13/20.8 (1.6) #C5CFDB, 8px below the title */
.timeline__node p{font-size:13px;line-height:1.6;color:var(--hero-sub);margin-block-start:8px;}

/* --- C·Contrast — frame y=1739..2142, h=403 -------------------------- */
/* cards are 275 tall starting at y=1803 -> 64px above and below */
.section.contrast{padding-block:64px;}
/* two 586px cards with a 28px gutter across the 1200px column */
.contrast .card-grid--2{gap:28px;}
/* 36px card padding, flat 14px rhythm: 36+14.3+14+41.8+14+21+14+1+14+69.3+36 = 275 */
.contrast .contrast__card{gap:14px;}
/* micro: IBM Plex Mono 400 11/14.3 (1.3), tracking 0.33 = .03em, #E8A300 */
.contrast__card .micro{font-size:11px;line-height:1.3;letter-spacing:.03em;color:var(--gold);}
/* figure: IBM Plex Mono 500 38/41.8 (1.1) #FFFFFF */
.contrast__card .num{font-size:38px;color:var(--white);}
/* lede: Inter 500 14/21 (1.5); Figma copy boxes are 480 inside the 514 box */
.contrast__card b{line-height:1.5;max-inline-size:480px;}
/* 200x1 #1A5088 rule — the 14px flex gap carries the rhythm, so no margin */
.contrast__card hr{border:0;border-block-start:1px solid var(--navy-700);inline-size:200px;margin:0;}
/* body: Inter 400 14/23.1 (1.65) */
.contrast__card p{font-size:14px;line-height:1.65;max-inline-size:480px;}

/* --- C9 · CTA Strip — frame h=328 ------------------------------------ */
/* copy block at y=88 with h=152 -> 88px top and bottom */
.page-template-about .cta-band{padding-block:88px;}
/* h2: Source Serif 4 600 36/43.2 (1.2) in a 640px box */
.page-template-about .cta-band h2{font-size:36px;line-height:1.2;max-inline-size:640px;}
/* p: Inter 400 16/25.6 (1.6) in a 560px box, 14px below the h2 */
.page-template-about .cta-band p{font-size:16px;line-height:1.6;max-inline-size:560px;margin-block-start:14px;}
/* btn 203x51 around a 139x15 label -> 31px inline / 17px block inside the 1px
   rule; label Inter 500 15/15, tracking 0.3 = .02em */
.page-template-about .cta-band .btn-ghost{font-size:15px;line-height:1;letter-spacing:.02em;padding:17px 31px;}

/* --- narrow viewports: shed the 1440-only tails, keep the M03 stack --- */
@media(max-width:1200px){
  .timeline .timeline__node{padding-inline-end:32px;}
}
@media(max-width:1024px){
  .page-template-about .editorial{padding-block:56px 64px;}
  .page-template-about .hero-inner .meta-rail{margin-block-start:28px;padding-block:15px 32px;}
  .page-template-about .cta-band{padding-block:56px;}
}
@media(max-width:900px){
  .page-template-about .hero-inner .folio{inset-inline-end:20px;}
  .timeline .timeline__row{grid-template-columns:1fr 1fr;gap:32px;}
  .timeline .timeline__node{padding-inline-end:0;}
  .timeline .timeline__node::after{display:none;}
}
/* M03 · Content Template (390): body Inter 400 15/25.5, h2 Source Serif 23/28.75 */
@media(max-width:640px){
  .page-template-about .editorial__body>p{font-size:15px;}
  .page-template-about .h-ed{font-size:23px;line-height:1.25;}
  .page-template-about .cta-band h2{font-size:28px;}
}


/* ---------- P03 ---------- */
/* ============================================================================
   P03 · What RDC Delivers — parity with the Figma frame "P03 · What RDC
   Delivers" (1440 × 3371). Everything is scoped to .dlv-page (body class added
   by page-templates/delivers.php) so the shared hero, CTA strip, editorial and
   outputs components keep their theme defaults on every other page. Geometry
   overrides sit in a desktop query so the theme's ≤1024 behaviour is untouched.
   ========================================================================== */

/* --- C14 · Step Flow: new vertical spine component (structural, all widths) --- */
.dlv-flow__list{list-style:none;}
/* Row = 48px node + 24px gap + label: node x=120→168, label x=192, w=880.
   6px block padding either side of the tallest child gives the Figma's 60px
   single-line rows (48px node) and 68px for the two-line row 04 (56px label). */
.dlv-flow__row{display:flex;align-items:center;gap:24px;padding-block:6px;}
/* spine-seg between rows: 1px × 22px hairline at x=149 (29px in from the
   content edge — replicated from the Figma, which sits it 5px off node centre) */
.dlv-flow__row+.dlv-flow__row{position:relative;margin-block-start:22px;}
.dlv-flow__row+.dlv-flow__row::before{
  content:"";position:absolute;inset-block-start:-22px;inset-inline-start:29px;
  inline-size:1px;block-size:22px;background:var(--rule);
}
/* node 48×48, 1px #B07A00, IBM Plex Mono 500 16/16 */
.dlv-flow__no{
  flex:none;display:inline-flex;align-items:center;justify-content:center;
  inline-size:48px;block-size:48px;border:1px solid var(--gold-700);
  font-family:var(--mono);font-weight:500;font-size:16px;line-height:1;color:var(--gold-700);
}
/* row 04 is the RDC step: filled node, white numeral, Inter 500 label */
.dlv-flow__row--mark .dlv-flow__no{background:var(--gold-700);color:var(--white);}
.dlv-flow__row--mark .dlv-flow__label{font-weight:500;}
/* labels Inter 400 17/28.05 (#1A202C), text column 880px */
.dlv-flow__label{font-size:17px;line-height:1.65;color:var(--charcoal);max-inline-size:880px;}

/* --- C5 · Outputs: item number, IBM Plex Mono 400 14/16.8, tracking 0.56 --- */
.dlv-outputs__no{
  display:block;font-family:var(--mono);font-size:14px;line-height:1.2;
  letter-spacing:.04em;color:var(--gold-700);
}

@media (min-width:1025px){

  /* --- C1L · Hero Light: frame y 107→562 (455px) --- */
  .dlv-page .crumb{line-height:1.4;}                                  /* mono 12/16.8 */
  .dlv-page .hero-inner .eyebrow{line-height:1.2;margin-block-end:18px;} /* Inter 13/15.6; eyebrow ends 213.6, H1 at 232 */
  .dlv-page .hero-inner .intro{max-inline-size:760px;}                /* intro node w=760, 4 lines × 31.35 = 124 */
  .dlv-page .folio{inset-inline-end:var(--gutter);}                    /* folio x=1140 w=180 → right edge 1320 */
  .dlv-page .meta-rail{margin-block-start:40px;padding-block:14px 0;} /* intro bottom 428 → rule 468 → labels 483 */
  .dlv-page .hero-inner{padding-block-end:64px;}                      /* meta-rail labels end 498 → frame ends 562 */

  /* --- C6 · The question RDC answers: frame y 562→1083 (521px) ---
     heading top 650 = 88 below the frame; ed-right ends 931; frame ends 1083. */
  .dlv-page .editorial{padding-block:88px 152px;}
  .dlv-page .editorial .h-ed{font-weight:600;letter-spacing:-.005em;} /* Source Serif 4 600 26/33.28, tracking -0.13 */
  .dlv-page .editorial__body>p{font-size:17px;}                       /* Inter 400 17/28.9 (1.7), measure 680 */
  .dlv-page .editorial__body>p:last-child{margin-block-end:0;}        /* ed-right height is 145+20+116 = 281 */

  /* --- C · Question Band: frame y 1083→1366 (283px = 72 + 139 + 72) --- */
  .dlv-page .qband .micro--wide{font-size:11px;line-height:1.4;letter-spacing:.03em;} /* mono 11/15.4, tracking 0.33 */
  .dlv-page .qband__q{font-size:26px;margin-block-start:15.6px;}      /* Source Serif 26/36.4; label ends 1170.4, question at 1186 */

  /* --- C14 · Step Flow: frame y 1366→1978 (612 = 88 + 40.12 + 396 rows + 88) --- */
  .dlv-page .dlv-flow{padding-block:88px;}                            /* heading top 1454, last row ends 1890 */

  /* --- C5 · Outputs: frame y 1978→2546 (568 = 88 + 40.12 + 40 + 149 + 40 + 123 + 88) --- */
  .dlv-page .outputs{padding-block:88px;}                             /* heading top 2066, grid ends 2458 */
  .dlv-page .outputs .h-sec{margin-block:0 40px;}                     /* heading ends 2106, row 1 at 2146 */
  .dlv-page .outputs__grid{gap:40px 64px;}                            /* row 1 ends 2295, row 2 at 2335; columns x=120 / x=752 */
  .dlv-page .output .h-ed{font-size:24px;line-height:1.25;margin-block:12px;} /* Source Serif 500 24/30; number ends 2162.8 → title 2175 → body 2217 */
  .dlv-page .output p{font-size:16px;}                                /* Inter 400 16/26.4, measure 520 */

  /* --- Section headings on this page: Source Serif 4 600 34/40.12, tracking -0.17 --- */
  .dlv-page .h-sec{font-size:34px;line-height:1.18;letter-spacing:-.005em;}

  /* --- C9 · CTA Strip instance: frame y 2546→2874 (328 = 88 + 152 + 88) --- */
  .dlv-page .cta-band{padding-block:88px;}
  .dlv-page .cta-band h2{font-size:36px;line-height:1.2;max-inline-size:640px;}   /* 36/43.2, node w=640 h=86 */
  .dlv-page .cta-band p{font-size:16px;line-height:1.6;max-inline-size:560px;margin-block-start:14px;} /* 16/25.6, node w=560 h=52 */
  .dlv-page .btn-ghost{font-size:15px;line-height:1;letter-spacing:.02em;padding:17px 32px;} /* btn 203×51, label inset 32, x-end 1320 */
}


/* ---------- P04 ---------- */
/* ============ P04 · WHO BENEFITS ============ */

/* C4 · Divergence — Figma section y=531 h=705; first element (rule) y=611 and last card
   bottom y=1156 give padding-block 80/80. Centred column. */
.divergence{padding-block:80px;text-align:center;}

/* C4 — gold rule 64×2 centred at x=688 (Figma "rule" x=688 y=611 w=64 h=2 fill #E8A300),
   statement follows 24px later (611+2 -> 637). */
.divergence__rule{inline-size:64px;block-size:2px;background:var(--gold);margin-inline:auto;margin-block-end:24px;}

/* C4 — statement: Source Serif 4 500 26/39 (Figma x=280 y=637 w=880 h=156, fill #1A202C). */
.divergence__line{font-family:var(--serif);font-weight:500;font-size:26px;line-height:1.5;color:var(--charcoal);max-inline-size:880px;margin-inline:auto;}

/* C4 — sub-line, missing from the build: IBM Plex Mono 400 13/20.8, fill #4A5568,
   24px below the statement (Figma y=817 h=21, statement bottom 793). */
.divergence__sub{font-family:var(--mono);font-size:13px;line-height:1.6;color:var(--ink);max-inline-size:880px;margin-inline:auto;margin-block-start:24px;}

/* C4 — card pair: two 440px cards, 28px gutter = 908 centred, 40px below the sub-line
   (Figma cards x=266/734 w=440, y=878; sub-line bottom 838).
   The two cards hug their own content in the Figma (h=257 and h=278), so they must not be
   stretched to a common height. */
.card-grid.divergence__cards{max-inline-size:908px;margin-inline:auto;margin-block-start:40px;gap:28px;text-align:start;align-items:start;}

/* C4 — card internals run on a uniform 14px rhythm (Figma y 906 / 948 / 976 / 991 / 1028 / 1065,
   28px padding all round: card x=266 vs content x=294, card bottom 1135 vs text bottom 1107). */
.divergence .divg{gap:14px;}
.divergence .divg .hairline{margin-block:0;}

/* C4 — card title Source Serif 4 500 22/27.5 (Figma "GFH Financial Group" y=906 h=28). */
.divergence .divg .h-card{font-weight:500;font-size:22px;line-height:1.25;}

/* C4 — card micro labels IBM Plex Mono 400 10/14 ls .2 (Figma y=948 h=14); the in-row
   labels sit on 10/13 (Figma y=996 h=13). */
.divergence .divg .micro{font-size:10px;line-height:1.4;}
.divergence .divg__row .micro{line-height:1.3;}

/* C4 — chips are 23px tall: IBM Plex Mono 500 13/13 ls .13 with 12px inline padding
   (Figma chip frame y=991 h=23, chip x=551 vs its text x=563). */
.divergence .divg__chip{font-size:13px;line-height:13px;letter-spacing:.01em;padding-block:4px;padding-inline:12px;}

/* C5 · Stakeholders — Figma section y=1236 h=1753; heading y=1324 gives padding-block-start 88,
   last body line ends 2885 + the 16px item tail + 88 = 2989. */
.stakeholders{padding-block:88px;}

/* C5 — heading Source Serif 4 600 34/40.12 ls -0.17px, wraps at 760 into two lines,
   44px above the grid (Figma x=120 y=1324 w=760 h=80; first item y=1448). */
.stakeholders .h-sec{font-size:34px;line-height:1.18;letter-spacing:-.005em;max-inline-size:760px;margin-block-end:44px;}

/* C5 — 2 × 568 columns with a 64px gutter and 44px row gap
   (Figma columns x=120 / x=752 w=568; row frames 1448 h=168 -> next row 1660). */
.stakeholders .stake-grid{gap:44px 64px;}

/* C5 — every Figma item frame runs 16px past its last text line (e.g. item 01 body ends
   1600, frame y=1448 h=168 -> 1616), so the visible row gap is 44+16=60. */
.stakeholders .stake{padding-block-end:16px;}

/* C5 — number and title share one baseline row: 15px number + 16px gutter puts the title
   at x+31 (Figma sk-no w=15 at x=120, title x=151), vertically centred against the title
   block (1-line 5.5px offset, 2-line 19px offset). */
.stakeholders .stake__head{display:flex;align-items:center;gap:16px;}
.stakeholders .stake__no{flex:none;inline-size:15px;font-size:12px;line-height:1.3;color:var(--gold-700);}

/* C5 — title Source Serif 4 500 21/27.3, wraps at 480 (Figma w=480, h=27 one line / 54 two). */
.stakeholders .stake h3{font-size:21px;line-height:1.3;max-inline-size:480px;margin-block:0;}

/* C5 — body Inter 400 14/23.1, 10px under the title, wraps at 520
   (Figma title frame bottom 1475 -> body y=1485 w=520). */
.stakeholders .stake p{font-size:14px;line-height:1.65;max-inline-size:520px;margin-block-start:10px;}

/* P04 — keep the theme's small-screen section rhythm (base.css .section 36px at <=640). */
@media(max-width:640px){.divergence,.stakeholders{padding-block:36px;}}


/* ---------- P05 ---------- */
/* ============================================================================
   SYSTEM (P05) — every value measured from the approved Figma frame
   "P05 · System" (1440 frame, 120px side padding, 1200px content column).
   Shared components (hero-inner, cta-band) are scoped to .page-template-system
   so parallel page work cannot collide; the same numbers hold for P02/P04/P06.
   ============================================================================ */

/* --- Inner hero: 107 → 616 = 509px tall --------------------------------- */
/* folio text box is x=1140..1320, i.e. flush with the content column edge */
.page-template-system .folio{inset-inline-end:var(--gutter);}
/* crumb "Home / System": IBM Plex Mono 12 / 16.8 (1.4) */
.page-template-system .crumb{line-height:1.4;}
/* eyebrow y=198 h=16 (Inter 13 / 15.6 = 1.2); H1 starts y=232 → 18px below it */
.page-template-system .hero-inner .eyebrow{line-height:1.2;margin-block-end:18px;}
/* intro ends y=482 · rule y=522 (+40) · row y=537 (+15, mono 10.5 / 14.7)
   · row ends y=552 · hero ends y=616 (+64) */
.page-template-system .meta-rail{margin-block-start:40px;padding-block:15px 64px;line-height:1.4;}

/* --- Trade-secret notice band: 616 → 729 = 113px, fill #FBF7EE ---------- */
/* Figma frame stroke is #E8A300 1px; the -1px pull lets the gold rule sit on the
   hero hairline exactly as the two strokes composite at y=616 in the frame. */
.ts-band{
  background:var(--cream);
  border-block:1px solid var(--gold);
  margin-block-start:-1px;
  padding-block:24px;padding-inline:var(--gutter);
}
/* label y=640 h=17: IBM Plex Mono 500 12 / 16.8, tracking 0.24 (.02em), #B07A00 */
.ts-band__label{
  display:block;font-family:var(--mono);font-weight:500;font-size:12px;
  line-height:1.4;letter-spacing:.02em;color:var(--gold-700);
}
/* note y=663 w=1100 h=42: Inter 13 / 20.8 (1.6), #4A5568, 6px under the label */
.ts-band__note{margin-block-start:6px;max-inline-size:1100px;font-size:13px;line-height:1.6;color:var(--ink);}

/* --- Deterministic pipeline: 729 → 1099 = 370px ------------------------- */
/* 64 pad + 16 label + 28 + 128 flow + 28 + 42 note + 64 */
.pipeline{padding-block:64px;}
/* section labels on this page are mono, not the sans .eyebrow:
   IBM Plex Mono 400 13 / 15.6 (1.2), tracking 0.52 (.04em) */
.sys-label{
  font-family:var(--mono);font-weight:400;font-size:13px;
  line-height:1.2;letter-spacing:.04em;color:var(--gold-700);
}
.sys-label--gold{color:var(--gold);}      /* pipeline label is #E8A300 on navy */
.pipeline .sys-label{margin-block-end:28px;}
/* flow y=837 h=128; the verdict node is only 103 tall and is centred on that rail */
.pipeline__flow{align-items:center;margin-block-end:28px;}
/* note y=993 w=880 h=42: Inter 13 / 20.8, inherits #C5CFDB from .section--navy */
.pipeline__note{max-inline-size:880px;font-size:13px;line-height:1.6;}
/* node 214x128; 1px rule + 21px inset = text at x=142 from a node at x=120,
   1px rule + 19px inset = label at y=857 from a node at y=837 */
.pl-node{inline-size:214px;max-inline-size:none;flex:none;padding:19px 21px;gap:8px;}
/* node label: IBM Plex Mono 400 10 / 13 (1.3), tracking 0.2 (.02em), #8FA1B5 */
.pl-node__label{
  font-family:var(--mono);font-size:10px;line-height:1.3;
  letter-spacing:.02em;color:var(--meta);
}
/* node title: Source Serif 4 500 17 / 21.25; Figma reserves 42px (two lines)
   in all four nodes, which is what keeps the rail on 128px */
.pl-node b{font-size:17px;line-height:1.25;min-block-size:42.5px;}
/* verdict node: fill #174372, 2px gold stroke, 103px tall, no seal —
   2+18 keeps the same 20px inset the 1px-ruled nodes have */
.pl-node--final{background:var(--node-navy);border-width:2px;padding:18px 20px;}
.pl-node--final .pl-node__label{color:var(--gold);}
/* seal 112x17 with text inset 8px/3px, so 1px rule + 7px/2px padding */
.pl-seal{padding:2px 7px;font-size:9px;line-height:1.2;letter-spacing:.01em;}
/* arrow column x=334 w=81 h=38: 20px glyph + 6px + 12px caption, all centred */
.pl-arrow{inline-size:81px;flex:none;padding-inline:0;gap:6px;}
.pl-arrow span{line-height:1;}
.pl-arrow i{
  font-family:var(--mono);font-size:9px;line-height:1.3;
  letter-spacing:.01em;color:var(--meta);
}

/* --- Phase definition sections ----------------------------------------- */
/* 72 pad + 16 label + 18 + 38 heading + 18 + 108 intro + 26 + table + 72 */
/* heading y=1205 h=38: Source Serif 4 600 32 / 38.4 (1.2) */
.phase-def .h-sec{font-size:32px;line-height:1.2;margin-block:18px 0;}
/* intro y=1261 w=800 h=108: Inter 16 / 26.88 (1.68), #1A202C */
.phase-def .body-copy{
  margin-block-start:18px;font-size:16px;line-height:1.68;
  max-inline-size:800px;color:var(--charcoal);
}

/* --- Definition table --------------------------------------------------- */
/* Spans the full 1200 column. Text columns are 110 / 250 / 790 inside a 16px
   start inset (x=136 / 246 / 496, last column ends x=1286).
   Header band 34px (10 + 14.3 + 10); rows 44px one-line / 64px two-line. */
.def-table{
  inline-size:100%;max-inline-size:none;table-layout:fixed;
  border-collapse:collapse;margin-block:26px 0;
}
.def-table th{font-size:11px;line-height:1.3;letter-spacing:.02em;padding:10px 0;}
.def-table th:first-child,.def-table td:first-child{inline-size:126px;padding-inline-start:16px;}
.def-table th:nth-child(2),.def-table td:nth-child(2){inline-size:250px;}
.def-table th:last-child,.def-table td:last-child{padding-inline-end:34px;}
/* definition column: Inter 400 13 / 20.15 (1.55), #4A5568, 12px block padding */
.def-table td{padding:12px 0;font-size:13px;line-height:1.55;border-block-end:1px solid var(--rule);}
.def-table tbody tr:first-child td{border-block-start:1px solid var(--rule);}
.def-table td:first-child{border-inline-start:1px solid var(--rule);}
.def-table td:last-child{border-inline-end:1px solid var(--rule);}
.def-table tbody tr:nth-child(odd) td{background:var(--white);}
.def-table tbody tr:nth-child(even) td{background:var(--paper);}
/* variable column: IBM Plex Mono 500 13 / 19.5, #104070 */
.def-table td.mono{font-size:13px;line-height:1.5;}
/* component column: Inter 500 13 / 19.5, #1A202C */
.def-table td:nth-child(2){font-weight:500;line-height:1.5;color:var(--charcoal);}

/* --- Phase 1 zone classification: 1909 → 2615 = 706px ------------------- */
/* 64 pad-top (not the usual 72) + 16 label + 18 + 36 heading + table + 72 */
.zone-sec{padding-block:64px 72px;}
/* heading y=2007 h=36: Source Serif 4 600 30 / 36 */
.zone-sec .h-sec{font-size:30px;line-height:1.2;margin-block:18px 0;}
/* Rows are separated: header band y=2061 h=34, then seven 46px rows at
   y=2113 / 2177 / 2241 / 2305 / 2369 / 2433 / 2497 — an 18px gutter throughout.
   border-spacing also adds 18px past the last row, hence the -18px end margin. */
.zone-table{
  inline-size:100%;table-layout:fixed;
  border-collapse:separate;border-spacing:0 18px;margin-block:0 -18px;
}
.zone-table th{
  background:var(--navy);color:var(--meta);font-family:var(--mono);font-weight:500;
  font-size:11px;line-height:1.3;letter-spacing:.01em;text-align:start;padding:10px 0;
}
/* columns x=136(200) / 336(190) / 526(230) / 756(200) / 956(330 → ends 1286) */
.zone-table th:first-child,.zone-table td:first-child{inline-size:216px;padding-inline-start:16px;}
.zone-table th:nth-child(2),.zone-table td:nth-child(2){inline-size:190px;}
.zone-table th:nth-child(3),.zone-table td:nth-child(3){inline-size:230px;}
.zone-table th:nth-child(4),.zone-table td:nth-child(4){inline-size:200px;}
.zone-table th:last-child,.zone-table td:last-child{padding-inline-end:34px;}
/* rows 46px = 14 + 18.2 + 14; interpretation column Inter 13 / 18.85 (1.45) */
.zone-table td{
  padding:14px 0;font-size:13px;line-height:1.45;color:var(--ink);
  border-block:1px solid var(--rule);
}
.zone-table td:first-child{border-inline-start:1px solid var(--rule);}
.zone-table td:last-child{border-inline-end:1px solid var(--rule);}
.zone-table tbody tr:nth-child(odd) td{background:var(--white);}
.zone-table tbody tr:nth-child(even) td{background:var(--paper);}
/* threshold columns: IBM Plex Mono 400 13 / 18.2 (1.4), #1A202C */
.zone-table td.mono{font-family:var(--mono);font-size:13px;line-height:1.4;color:var(--charcoal);}
/* GDSP rating cell: 31x18 chip, 10px gutter, then Inter 500 13 / 16.9 in the tier colour.
   Block-level flex, not inline-flex — an inline box would add the cell's line-height
   strut on top of the 18px chip and push every row past the 46px the Figma rows are. */
.zone-table__rating{display:flex;align-items:center;gap:10px;}
.zone-table__rating b{font-weight:500;font-size:13px;line-height:1.3;}
/* chip text x=534 y=2130 inside a chip at x=526 y=2127: 8px / 3px, mono 500 12 / 12 */
.zone-table .chip-tier{padding:3px 8px;font-size:12px;line-height:1;letter-spacing:.01em;}

/* --- C9 · CTA strip: 4339 → 4667 = 328px -------------------------------- */
/* 88 pad + 86 heading (36 / 43.2, 640 wide) + 14 + 52 note (16 / 25.6, 560 wide) + 88.
   Verified identical in the P02, P04 and P05 references. */
.page-template-system .cta-band{padding-block:88px;}
.page-template-system .cta-band h2{font-size:36px;line-height:1.2;max-inline-size:640px;}
.page-template-system .cta-band p{margin-block-start:14px;font-size:16px;line-height:1.6;max-inline-size:560px;}
/* button 203x51 with the label at x=1149 y=4495.5: 1px rule + 31px / 17px padding,
   Inter 500 15 / 15, tracking 0.3 (.02em) */
.page-template-system .cta-band .btn-ghost{padding:17px 31px;font-size:15px;line-height:1;letter-spacing:.02em;}

/* --- System responsive fallbacks ---------------------------------------- */
/* The 1440 parity rules above are unconditional and later in the cascade than
   the existing breakpoints, so each one they would otherwise defeat is restated. */
@media(max-width:1024px){
  .pipeline__flow{align-items:flex-start;}   /* restores the stacked flow */
  .pl-node{inline-size:100%;}
  .pl-arrow{inline-size:auto;}
}
@media(max-width:900px){
  .page-template-system .folio{inset-inline-end:20px;}
  /* same escape hatch .mx-table already uses, until the M07 table→cards pass */
  .def-table,.zone-table{display:block;overflow-x:auto;table-layout:auto;}
}
@media(max-width:640px){
  .pipeline,.zone-sec{padding-block:36px;}
  .phase-def .h-sec,.zone-sec .h-sec{font-size:24px;}
  .phase-def .body-copy{font-size:15px;}
}


/* ---------- P06 ---------- */
/* ============ P06 · PRICING & REQUIREMENTS ============ */

/* C·Fee Policy — the centred tick is 24x2 here (x 708..732 on the 1440 frame), not the
   28px default; it sits at frame-rel y=56, matching .fee-band's 56px block padding. */
.fee-band__tick{inline-size:24px;margin-inline:auto;}
/* "PRICING AS METHODOLOGY…" — IBM Plex Mono 400 11px / 15.4 (1.4), tracking 0.33px
   (.03em), #8FA1B5 = --meta. It sits 12px under the serif line (677 -> 689), which only
   works if it is a block; as an inline span the build was landing ~20px low. */
.fee-band__meta{display:block;font-size:11px;letter-spacing:.03em;color:var(--meta);}

/* C10 · Tiers — frame 760..1338 (578px): 80px top padding (760 -> heading 840) and 40px
   bottom (note ends 1298 -> 1338). */
.pr-tiers{padding-block:80px 40px;}
/* "Phase-based engagement fees" — Source Serif 4 600 34px / 40.12 (1.18), tracking
   -0.17px (-.005em); card row begins 28px below it (880 -> 908). */
.pr-tiers .h-sec{font-size:34px;line-height:1.18;letter-spacing:-.005em;margin-block-end:28px;}
/* Tier card mono rows are 10px / 14 (1.4) tracking 0.2px — not the global .micro 10.5px. */
.tier .micro{font-size:10px;}
/* Figma groups the tier label + subtitle into one 31px frame (14 + 3 + 14); the card's
   own 12px stack gap applies only between groups, so the pair must not inherit it. */
.tier__head{display:flex;flex-direction:column;gap:3px;}
.tier__label{color:var(--gold-700);font-weight:500;}
.tier__sub{color:var(--ink);}
/* DECISION-GRADE chip: IBM Plex Mono 500 9px / 9 (1.0) — with 4px/9px padding that is the
   Figma 96x17 tag (628.4..724.4 / 936..953). */
.tier__tag{line-height:1;}
/* The rule inside every tier card is a fixed 160px (x 142..302), not the content width. */
.tier .hairline{inline-size:160px;}
.tier--featured .hairline{border-block-start-color:var(--gold);}
/* KV pairs: label IBM Plex Mono 400 9px / 13.5 (1.5), value Inter 500 13px / 19.5 (1.5),
   stacked flush — Figma frame 1091..1126 = 35px. */
.tier__kv span{line-height:1.5;}
.tier__kv b{display:block;line-height:1.5;}
/* Footnote is Inter 400 13px / 20.8 (1.6) on a 1000px measure, 28px under the cards
   (1228 -> 1256) — the build was rendering it as mono .micro at 10.5px / 900px. */
.tier-note{font-size:13px;line-height:1.6;color:var(--ink);max-inline-size:1000px;margin-block-start:28px;}

/* C·Matrix — frame 1338..2105 (767px): 64px top padding (1338 -> eyebrow 1402). */
.pr-matrix{padding-block-start:64px;}
/* Section eyebrows on the reference board are IBM Plex Mono 400 13px / 15.6 (1.2)
   tracking 0.52px (.04em). The Inter 500 / 1.56 tracking treatment belongs to the hero
   eyebrow only, so it is corrected per-section rather than on the shared .eyebrow. */
.pr-matrix .eyebrow,.pr-req .eyebrow{font-family:var(--mono);font-weight:400;font-size:13px;line-height:1.2;letter-spacing:.04em;}
/* "What each engagement includes" — Source Serif 4 600 30px / 36 (1.2), tracking 0;
   eyebrow -> heading gap 20px (1418 -> 1438). Bottom margin is 0 because the table's own
   border-spacing supplies the next 20px (1474 -> header 1494). */
.pr-matrix .h-sec{font-size:30px;line-height:1.2;margin-block:20px 0;}
/* The matrix is a stack of separated bars, not a collapsed table: each row frame carries a
   1px #D8DCE3 border on all four sides with a 20px gap above it — header 1494..1548, rows
   at 1568, 1635, 1702, 1769, 1836, 1924, note at 1991. Vertical border-spacing reproduces
   the gaps including the 20px above the header and below the last row. */
.pr-matrix .mx-table{table-layout:fixed;border-collapse:separate;border-spacing:0 20px;background:transparent;}
/* Label column is 346px: text starts at x=136 (1px border + 15px) and runs the full 330px
   to the first value column at x=466. The five value columns split the remaining 854px. */
/* Label column 264px + five 174px scope columns. Derived from the ✓ marks in
   P06, which sit at x=466/640/814/988/1162 — a 346px label column pushes
   every tick ~83px right of the design. */
.pr-matrix .mx-table th:first-child,.pr-matrix .mx-table td:first-child{inline-size:264px;}
.pr-matrix .mx-table th:not(:first-child),.pr-matrix .mx-table td:not(:first-child){inline-size:174px;}
/* Row height 47px = 1px + 12px + 21px (Inter 400 14px / 1.5) + 12px + 1px; the two-line
   row 5 becomes 68px on the same padding, matching Figma 1836..1904. */
.pr-matrix .mx-table td{padding:12px 15px;line-height:1.5;border:0;border-block:1px solid var(--rule);background:var(--white);}
.pr-matrix .mx-table td:first-child{padding-inline-end:0;border-inline-start:1px solid var(--rule);}
.pr-matrix .mx-table td:last-child{border-inline-end:1px solid var(--rule);}
.pr-matrix .mx-table tr:nth-child(even) td{background:var(--paper);}
/* Closing note — Inter 400 13px / 20.8 (1.6); border-spacing already gives it the 20px
   gap from the last row (1971 -> 1991). */
.pr-matrix .mx-note{font-size:13px;line-height:1.6;color:var(--ink);max-inline-size:900px;}

/* C6 · Why Phase III + C6 · Program — both editorial frames start their content 80px in
   (2105 -> 2185 and 2597 -> 2677); the Program frame closes at 77px, so 80/80. */
.pr-ed{padding-block:80px;}
/* Editorial headings are Source Serif 4 600 26px / 33.28, tracking -0.13px (-.005em). */
.pr-ed .h-ed{font-weight:600;letter-spacing:-.005em;}
/* key-fig: 32px from the heading to the gold tick (2251 -> 2283), then 6px to the figure
   and 6px to the caption (2285 -> 2291, 2321 -> 2327). The tick must be a block — as an
   inline span its inline-size was being dropped and it measured 0px wide. */
.pr-ed .keyfig{margin-block-start:32px;}
.pr-ed .keyfig .gold-tick{display:block;}
.pr-ed .keyfig .num{margin-block:6px;line-height:1.15;}
/* Caption is IBM Plex Mono 400 10px / 16.5 (1.65), tracking 0.2px. */
.pr-ed .keyfig .micro{display:block;font-size:10px;line-height:1.65;margin-block-start:6px;}
/* Editorial body copy is Inter 400 17px / 28.9 (1.7) in #1A202C (--charcoal). */
.pr-ed .editorial__body>p{font-size:17px;color:var(--charcoal);}
/* Inquiry line — IBM Plex Mono 400 13px / 19.5 (1.5) in #B07A00 (--gold-700). */
.pr-ed .editorial__body>p.pr-inquiry{font-size:13px;line-height:1.5;color:var(--gold-700);}

/* C·Requirements — frame top 3750 -> eyebrow 3798 (48px), heading 3822 (8px),
   dossier card 3890 (28px). */
.pr-req{padding-block-start:48px;}
.pr-req .h-sec{font-size:34px;line-height:1.18;letter-spacing:-.005em;margin-block:8px 28px;}
/* The dossier card is 384px wide (x 120..504), not 480px. */
.pr-req__grid{grid-template-columns:minmax(0,384px);}
/* Spine text IBM Plex Mono 11px / 14.3 (1.3) -> 38px spine (12 + 14.3 + 12). */
.pr-req .dossier__spine{line-height:1.3;}
/* Rail: meta IBM Plex Mono 400 10px / 14 tracking 0.1px; action Inter 500 13px / 15.6. */
.pr-req .dossier__rail .micro{font-size:10px;letter-spacing:.01em;}
.pr-req .dossier__rail a{line-height:1.2;}


/* ---------- P07 ---------- */
/* ============ P07 · CASE STUDIES — ref frame "P07 · Case Studies" 1440x2269 ============ */

/* C1L · Hero Light: Figma frame y 107 -> 562 (455px tall), #FFFFFF, 1px #D8DCE3 base rule. */
/* Crumb y=163 = 56px under the hero top; IBM Plex Mono 12 / lineHeight 16.8. */
.hero-inner--p07 .crumb{line-height:1.4;}
/* Eyebrow y=198 (Inter 500 13 / lineHeight 15.6, ls 1.56) and H1 y=232 -> 18px gap;
   the shared inner hero ships 14px. */
.hero-inner--p07 .eyebrow{line-height:1.2;margin-block-end:18px;}
/* Intro y=304: Inter 400 19 / lineHeight 31.35 in a 760px box (Figma w=760, h=124 = 4 lines);
   base .intro measures 800px. */
.hero-inner--p07 .intro{max-inline-size:760px;}
/* meta-rail: Figma hairline y=468 = 40px under the intro, rail text y=483 = 14px under the
   hairline (IBM Plex Mono 10.5 / lineHeight 14.7), hero ends 562 = 64px under the rail text. */
.hero-inner--p07 .meta-rail{margin-block-start:40px;padding-block:14px 64px;line-height:1.4;}

/* table-meta (y 562->698) + C11 · Table (y 698->1444), both on #FAFAF8 / --paper. */
/* Meta line y=602: IBM Plex Mono 400 12 / lineHeight 20.4, ls 0.12px, #4A5568, 1200 wide
   (h=40 = 2 lines); tier legend text y=660 -> 18px gap. */
.cs-lib .cs-meta{font-size:12px;line-height:1.7;letter-spacing:.01em;color:var(--ink);margin-block-end:18px;}
/* Tier legend y=660: IBM Plex Mono 400 11 / lineHeight 14.3; table header row y=698 -> 24px gap. */
.cs-lib .cs-legend{margin-block-end:24px;}
.cs-lib .cs-legend span{line-height:1.3;}
/* Header row h=38: IBM Plex Mono 500 11 / lineHeight 14.3 (build shipped 10px). */
.cs-lib .cs-table th{font-size:11px;line-height:1.3;}
/* Body rows h=46: every cell is IBM Plex Mono 400 13 / lineHeight 18.2 (build shipped
   Inter 13.5 on the text columns); 2-line rows are vertically centred (Figma h=62). */
.cs-lib .cs-table td{font-family:var(--mono);font-size:13px;line-height:1.4;vertical-align:middle;}
/* Institution cell is #1A202C; every other cell #4A5568. */
.cs-lib .cs-table td:nth-child(2){color:var(--charcoal);}
/* GDSP composite cell: Figma draws no grey track — the tier bar is 6px tall and exactly
   `composite` px long (bar x=930, label x = bar end + 8 on all 12 reference rows). */
.cs-lib .cs-table .bar{background:none;block-size:6px;inline-size:var(--bw,0px);}
.cs-lib .cs-table .barfill.fill .bar i{inline-size:100%;}
/* Composite label: IBM Plex Mono 500 13 / lineHeight 15.6. */
.cs-lib .cs-gdsp{font-weight:500;line-height:1.2;}

@media(min-width:769px){
  /* Section lead-in: meta line y=602 against the table-meta frame origin y=562. */
  .cs-lib{padding-block-start:40px;}
  /* 1200px grid: Figma column text origins 136/190/480/690/800/930/1090/1210 and the
     1320 content edge give column widths 70/290/210/110/130/160/120/110 of 1200.
     16px inline-start on the first cell + 10px inline-end reproduce the Figma text boxes
     (44/280/200/100/120/150/110). */
  .cs-lib .cs-table{table-layout:fixed;}
  .cs-lib .cs-table th,.cs-lib .cs-table td{padding-inline:0 10px;}
  .cs-lib .cs-table th:first-child,.cs-lib .cs-table td:first-child{padding-inline-start:16px;}
  .cs-lib .cs-table th{padding-block:12px;}
  /* 13.5 + 18.2 + 13.5 + 1px rule = 46.2 against the Figma row height of 46. */
  .cs-lib .cs-table td{padding-block:13.5px;}
  .cs-lib .cs-table th:nth-child(1){inline-size:5.8333%;}
  .cs-lib .cs-table th:nth-child(2){inline-size:24.1667%;}
  .cs-lib .cs-table th:nth-child(3){inline-size:17.5%;}
  .cs-lib .cs-table th:nth-child(4){inline-size:9.1667%;}
  .cs-lib .cs-table th:nth-child(5){inline-size:10.8333%;}
  .cs-lib .cs-table th:nth-child(6){inline-size:13.3333%;}
  .cs-lib .cs-table th:nth-child(7){inline-size:10%;}
  .cs-lib .cs-table th:nth-child(8){inline-size:9.1667%;}
}
@media(min-width:901px){
  /* Ghost folio: Figma x=1140 w=180 -> right edge 1320 = the content column edge,
     i.e. --pad-x, not the 110px the shared component ships. */
  .hero-inner--p07 .folio{inset-inline-end:var(--gutter);}
}


/* ---------- P09 ---------- */
/* ============ P09 · SAMPLE REPORT ============ */

/* These six were authored unscoped and leaked onto every inner page — the
   .hero-inner tail in particular double-taxed heroes that already close with
   their own meta-rail padding. Scoped to P09. The folio is pinned to the
   content column with --gutter, not a hardcoded 120px, which would drift on
   viewports wider than 1440. */
/* These are the SHARED inner-hero values and are correct on every frame:
   crumb mono 12/16.8 = 1.4, eyebrow Inter 13/15.6 = 1.2, meta-rail mono
   10.5/14.7 = 1.4. Only the hero tail was page-specific — leaving it unscoped
   double-taxed heroes that already close with their own meta-rail padding. */
.folio{inset-inline-end:var(--gutter);}
.crumb{line-height:1.4;}
.eyebrow{line-height:1.2;}
.hero-inner .eyebrow{margin-block-end:18px;}
.meta-rail{margin-block-start:40px;padding-block:15px 0;line-height:1.4;}
.page-template-sample-report .hero-inner{padding-block-end:64px;}

/* C13 · PDF Viewer band 64/32 (Figma frame 562..1227, bar y=626, stage ends 1195) */
.page-template-sample-report .section--paper{padding-block:64px 32px;}
/* Viewer shell is 1040 wide and centred — not the 1200 column (Figma frame x=200 w=1040) */
.viewer{max-inline-size:1040px;margin-inline:auto;}
/* Bar 49px tall: 16px block padding + mono 13/16.9, label x=224 = 200+24
   (Figma bar y=626 h=49, label y=642 h=17, fill #C5CFDB = --hero-sub) */
.viewer__bar{padding:16px 24px;font-size:13px;line-height:1.3;color:var(--hero-sub);}
/* "Download ↓" Inter 500 13/13 +0.02em, right edge 1216 = 1240-24 (Figma x=1135 y=644 h=13) */
.viewer__bar a{line-height:1;letter-spacing:.02em;}
/* Stage 520 tall: 90px block padding around the 340px lead thumb (Figma stage 675..1195, lead thumb y=765) */
.viewer__stage{padding-block:90px;}
/* Lead thumb inner column x=606 = 590+16, first line y=783 = 765+18 (Figma) */
.thumb--main{padding-block:18px;padding-inline:16px;}
/* Gold wordmark rule 46x2 / 60x2 (Figma y=836 w=46 h=2; lead y=802 w=60 h=2). Needs
   .thumb i.thumb__rule to outrank .thumb i:nth-of-type(odd), which was painting it grey at 65%. */
.thumb i.thumb__rule{inline-size:46px;block-size:2px;background:var(--gold);}
.thumb--main i.thumb__rule{inline-size:60px;}
/* Thumb wordmark mono 8/9.6, lead thumb 9/10.8 (Figma y=818 h=10; lead y=783 h=11) */
.thumb__brand{line-height:1.2;}
.thumb--main .thumb__brand{font-size:9px;}

/* C8 · Phases — 40px above the head, 28px to the grid, 80px out
   (Figma frame 1227..1709, h2 y=1267 h=36, cards y=1331 ending 1629) */
.page-template-sample-report .phases{padding-block:40px 80px;}
.phases .h-sec{font-size:30px;}
.phases .card-grid{margin-block-start:28px;}
.phases__seals{display:flex;flex-wrap:wrap;gap:14px;margin-block-start:20px;}
/* Dossier spine mono 11/14.3 weight 500 -> 38px band (Figma "PHASE 1 · MYC E%" y=1343 h=14, spine h=38) */
.dossier__spine{font-weight:500;line-height:1.3;}
/* Dossier action Inter 500 13/15.6 (Figma "View ↓" y=1597 h=16) */
.dossier__rail a{line-height:1.2;}
/* P09 dossiers run 24px block padding and 21/26.25 titles, 12px to the copy
   (Figma title y=1393 h=26, copy y=1431; P01/P10 keep the 20px title) */
.page-template-sample-report .dossier__body{padding-block:24px;}
.page-template-sample-report .dossier__body .h-card{font-size:21px;line-height:1.25;margin-block-end:12px;}
/* Rail 46px tall, meta mono 10/14 +0.01em (Figma rail y=1583 h=46, "16 PAGES · …" y=1598 h=14) */
.page-template-sample-report .dossier__rail{padding-block:15px;}
.page-template-sample-report .dossier__rail .micro{font-size:10px;letter-spacing:.01em;}
/* P09 spine star is mono 12/14.4 with no tracking — P01 keeps the 11px spine star (Figma ★ y=1343 w=12) */
.page-template-sample-report .dossier__spine span:last-child:not(.meta){font-size:12px;font-weight:400;letter-spacing:0;line-height:1.2;}

/* Seal chip 28px tall: 7px block padding + mono 10.5/13.65 (Figma dossier chip y=1531 h=28, label h=14) */
.seal{line-height:1.3;}

/* C9 · CTA Strip button 203x51: 17px block padding + Inter 500 15/15 +0.02em
   (Figma btn y=1847.5 h=51, label y=1865.5 h=15 x=1149 = 1117+32) */
.cta-band .btn-ghost{padding-block:17px;line-height:1;letter-spacing:.02em;}

/* Keep the existing small-screen rhythm — the rules above outrank base.css by specificity */
@media(max-width:900px){.viewer__stage{padding-block:56px;}}
@media(max-width:640px){
  .page-template-sample-report .section--paper,.page-template-sample-report .phases{padding-block:36px;}
  .phases .h-sec{font-size:24px;}
}


/* ---------- P10 ---------- */
/* ================================================================
   P10 · Supportive Documents — parity with Figma "P10 - Supportive Documents".
   Everything is scoped under .p10 (wrapper added in the page template) so
   shared components are not altered for pages being worked in parallel.
   The rules marked [SHARED SPEC] were verified against P02/P11/P13 too and
   belong in components.css once the parallel pass is merged.
   ================================================================ */

/* --- C1L · Hero Light — Figma frame y=107 h=424 (ends y=531) ---------- */
/* [SHARED SPEC] Figma crumb IBM Plex Mono 12/16.8 (1.4); build inherited
   body line-height 1.65 -> 19.8 */
.p10 .crumb{line-height:1.4;}
/* [SHARED SPEC] Figma eyebrow Inter 500 13/15.6 (1.2); build inherited 1.65
   -> 21.45. Figma gap eyebrow (ends y=214) -> H1 (y=232) is 18px, not 14px */
.p10 .hero-inner .eyebrow{line-height:1.2;margin-block-end:18px;}
/* [SHARED SPEC] Figma intro ends y=397 and the meta-rail hairline sits at
   y=437 -> 40px, not 22px. Rail text 10.5/14.7 (1.4); build inherited 1.65
   -> 17.33 */
.p10 .meta-rail{margin-block-start:40px;line-height:1.4;}
/* [SHARED SPEC] Figma rail text ends y=467, hero frame ends y=531 -> 64px of
   air. .meta-rail already contributes 22px of that, so the hero closes 42px.
   Reproduces h=424 exactly (also 393 on P02/P11 and 313 on P13). */
.p10 .hero-inner{padding-block-end:42px;}
/* [SHARED SPEC] Figma folio "10" x=1140 w=180 -> right edge 1320, i.e. a
   120px inset; build shipped 110px */
.p10 .folio{inset-inline-end:var(--gutter);}

/* --- C8 · Library — Figma frame y=531 h=524 --------------------------- */
/* Figma cards start y=603 (72px in) and the frame closes 48px under the slot
   (slot ends y=1007, frame ends y=1055) */
.p10 .p10-library{padding-block:72px 48px;}
/* Figma dossiers are top-aligned at natural height (251 / 251 / 295), not
   stretched to a common row height */
.p10 .p10-library .card-grid{align-items:start;}
/* Figma spine: label IBM Plex Mono 500, meta 400, both 11/14.3 (1.3).
   Build rendered the label at 400 and inherited 1.65 -> 18.15, making the
   spine 42.14px instead of 38px */
.p10 .p10-library .dossier__spine{line-height:1.3;}
.p10 .p10-library .dossier__spine>span:first-child{font-weight:500;}
/* Figma spine meta tracking 0.11 on 11px = .01em (the label keeps .02em) */
.p10 .p10-library .dossier__spine .meta{letter-spacing:.01em;}
/* Figma rail h=44: micro IBM Plex Mono 10/14 tracking 0.1 = .01em, link
   Inter 500 13/15.6 (1.2). The build's 10.5px micro plus the inherited 1.65
   line-height forced both items to wrap and pushed the rail to 50-72px. */
.p10 .p10-library .dossier__rail .micro{font-size:10px;line-height:1.4;letter-spacing:.01em;}
.p10 .p10-library .dossier__rail a{line-height:1.2;}
/* Figma "slot" placeholder bar: x=120 w=1200 y=926 h=81, #FFFFFF, 1px
   #D8DCE3, radius 2, sitting 28px below the card grid. Label is centred on
   both axes (text x=586 w=268 -> centre 720; y=958 h=17 -> centre 966.5),
   IBM Plex Mono 400 12/16.8, tracking 0.24 = .02em, #8FA1B5. */
.p10 .doc-slot{
	margin-block-start:28px;
	min-block-size:81px;
	display:flex;
	align-items:center;
	justify-content:center;
	background:var(--white);
	border:1px solid var(--rule);
	border-radius:var(--radius);
	font-family:var(--mono);
	font-size:12px;
	line-height:1.4;
	letter-spacing:.02em;
	color:var(--meta);
	text-align:center;
}

/* --- req-access — Figma frame y=1055 h=233 (ends y=1288) -------------- */
/* Figma H2 at y=1103 (48px in); the form row ends y=1240 and the frame ends
   y=1288 (48px). Overrides the shared .section 72px. */
.p10 .p10-inquiry{padding-block:48px;}
/* Figma H2 Source Serif 4 500 24/31.2 #1A202C; build shipped an inline 22px
   at weight 600. H2 ends y=1134 -> email y=1144 = 10px */
.p10 .p10-inquiry .h-card{font-size:24px;font-weight:500;line-height:1.3;margin-block-end:10px;}
/* Figma email IBM Plex Mono 500 17/23.8 #B07A00; ends y=1168 -> input
   y=1192 = 24px */
.p10 .p10-inquiry .mono{font-size:17px;font-weight:500;line-height:1.4;color:var(--gold-700);margin-block-end:24px;}
/* Figma form row x=120 w=582 (input 340 + button 242, butted, no gap).
   Items are centred because the button (h=42) is shorter than the input
   (h=48) and both share centre y=1216. */
.p10 .p10-inquiry .req-access{max-inline-size:582px;align-items:center;}
/* Figma input 340x48, placeholder inset 16px, Inter 400 14/18.2 #4A5568 */
.p10 .p10-inquiry .req-access input[type=email]{padding-block:14px;padding-inline:16px;line-height:1.3;}
.p10 .p10-inquiry .req-access input[type=email]::placeholder{color:var(--ink);opacity:1;}
/* Figma button 242x42: Inter 500 14/14, tracking 0.14 = .01em, text x=482
   against a button starting at x=460 -> 22px inset */
.p10 .p10-inquiry .req-access .btn-ghost{padding:13px 22px;line-height:1;letter-spacing:.01em;}

/* --- C9 · CTA Strip — band height already matches (Figma 328) --------- */
/* [SHARED SPEC] Figma btn frame x=1117 w=203 h=51 with label Inter 500
   15/15 tracking 0.30 = .02em; build inherited 1.65 -> 24.75 and h=62.75.
   The button is centre-aligned in the band, so the band height is unaffected. */
.p10 .cta-band .btn-ghost{line-height:1;letter-spacing:.02em;}


/* ---------- P11 ---------- */
/* ============ P11 · CONTACT — parity with Figma "P11 · Contact" (1440 frame) ============
   Scoped to the .contact-page body class (theme convention, cf. .dlv-page in delivers.php)
   so overrides of shared components cannot leak onto the other 12 pages. */

/* C1L · Hero Light is 393px tall (frame y=107 -> 500). Figma stack, top to bottom:
   56 pad · crumb 17 · 18 · eyebrow 16 · 18 · H1 54 · 18 · intro 62 · 40 · rule 1 · 14 · meta 15 · 64 */
.contact-page .hero-inner .crumb{line-height:1.4;}                       /* mono 12/16.8, Figma h=17 */
.contact-page .hero-inner .eyebrow{line-height:1.2;margin-block-end:18px;} /* Inter 13/15.6; eyebrow ends y=214, H1 starts y=232 */
.contact-page .hero-inner .intro{max-inline-size:760px;}                 /* intro frame w=760, wraps to 2 lines (h=62) */
.contact-page .hero-inner .folio{inset-inline-end:var(--gutter);}                /* folio x=1140 w=180 -> right edge 1320 = content edge */
.contact-page .hero-inner .meta-rail{
  margin-block-start:40px;                                               /* intro ends y=366, rule at y=406 */
  padding-block:14px 64px;                                               /* rule 407 -> text 421; text ends 436, section ends 500 */
  line-height:1.4;                                                       /* mono 10.5/14.7, Figma h=15 */
}

/* commit-band — 58px tall (frame y=500 -> 558): 20 pad + 18 line + 20 pad, mono 12/18, +0.24 tracking, gold-700 */
.contact-page .commit-band{
  padding-block:20px;padding-inline:var(--pad-x);
  border-block-end:1px solid var(--rule);line-height:18px;
}
.contact-page .commit-band .micro{font-size:12px;line-height:18px;letter-spacing:.02em;color:var(--gold-700);}

/* contact-grid — frame y=558 h=768 -> 72 pad-top / 88 pad-bottom (card ends y=1238, section ends 1326).
   Columns: inquiry form 720 at x=120, contact panel 340 at x=904 -> 64px gutter. */
.contact-page .contact-grid{
  grid-template-columns:720px 340px;column-gap:64px;row-gap:64px;
  justify-content:start;padding-block:72px 88px;
}
@media(max-width:1200px){.contact-page .contact-grid{grid-template-columns:minmax(0,1fr) 340px;column-gap:48px;}}
@media(max-width:1024px){.contact-page .contact-grid{grid-template-columns:minmax(0,1fr);}}

/* C12 · Inquiry Form — 720x608 card at x=120, 40px padding, 20px rhythm:
   40 + 31 + 20 + 72 + 20 + 72 + 20 + 164 + 20 + 42 + 20 + 47 + 40 = 608 */
.contact-page .form-card{padding:40px;border-radius:var(--radius);}
.contact-page .form-card .h-card{font-weight:500;font-size:24px;line-height:1.3;margin-block-end:20px;} /* Source Serif 4 500 24/31.2 */
.contact-page .form-card form{display:flex;flex-direction:column;gap:20px;}
.contact-page .form-row{display:grid;grid-template-columns:1fr 1fr;gap:20px;}  /* two 310px fields, 20px gutter (x=160 / x=490) */
.contact-page .form-card label{margin-block-end:0;line-height:1.2;}            /* Inter 13/15.6, Figma h=16 */
.contact-page .form-card input,
.contact-page .form-card textarea{margin-block-start:8px;line-height:22px;border-radius:var(--radius);} /* label ends 737, field at 745; field 48 = 12+22+12+2 */
.contact-page .form-card textarea{block-size:140px;padding:12px 16px;font-size:15px;line-height:1.5;}   /* 640x140, placeholder Inter 15/22.5 at x=176 */

/* Turnstile confirmation block — 249x42 at x=160, paper fill, 1px rule, 18x18 D1 mark at x=176, label at x=206 */
.contact-page .form-verify{
  display:flex;align-items:center;gap:12px;align-self:flex-start;
  inline-size:249px;block-size:42px;padding-inline:15px;
  background:var(--paper);border:1px solid var(--rule);border-radius:var(--radius);
}
.contact-page .form-verify i{inline-size:18px;block-size:18px;background:var(--d1);flex:none;}
.contact-page .form-verify span{font-size:13px;line-height:1.2;color:var(--ink);}

/* Send inquiry — gold-outline button, 150x47 (label 94x15 at x=188/y=1167 inside a frame at x=160/y=1151) */
.contact-page .form-card__submit{
  align-self:flex-start;display:inline-block;
  border:1px solid var(--gold-700);color:var(--gold-700);background:none;
  font-weight:500;font-size:15px;line-height:15px;letter-spacing:.02em;
  padding:15px 27px;border-radius:var(--radius);
  transition:background var(--t-fast) var(--ease),color var(--t-fast) var(--ease);
}
.contact-page .form-card__submit:hover{background:var(--gold-700);color:var(--white);}

/* contact-panel — not a card in the Figma: plain column at x=904 (no fill, no border, no padding).
   Item = label 14 + 6 + value 24 = 44; 18px gaps around 1px x 300px rules -> 338 total. */
.contact-page .contact-panel{background:none;border:0;padding:0;gap:18px;}
.contact-page .contact-panel .hairline{inline-size:300px;}
.contact-page .cp-row span{display:block;font-family:var(--mono);font-size:11px;line-height:1.3;letter-spacing:.03em;color:var(--gold-700);}
.contact-page .cp-row b{font-family:var(--sans);font-weight:500;font-size:16px;line-height:1.5;color:var(--charcoal);margin-block-start:6px;}

/* C9 · CTA Strip button — 203x51: label 139x15 at x=1149 inside a 1px gold frame at x=1117/y=1464.5 */
.contact-page .cta-band .btn-ghost{padding:17px 31px;line-height:15px;letter-spacing:.02em;}

/* C7 · FAQ — 465px tall (frame y=1654 -> 2119): 64 pad-top · head 34 · 8 ·
   open item (18 + 24.7 + 10 + 3x24.75 + 18 + 1 rule) · 8 · closed item 62 · 8 · closed item 62 · 72 pad-bottom */
.contact-page .faq{padding-block:64px 72px;}
.contact-page .faq__item{padding-block:18px;margin-block-end:8px;}
.contact-page .faq__item:last-of-type{margin-block-end:0;}
.contact-page .faq__item summary{line-height:1.3;}                        /* Source Serif 4 19/24.7 */


/* ---------- P12 ---------- */
/* ============ P12 · PLACING YOUR ORDER ============
   Every rule is scoped to this page — the hero via the WordPress template body
   class, the three sections via classes added in page-templates/order.php —
   so nothing here can reach another page's build. */

/* C1L · Hero Light is 455px tall (Figma y=107→562); the build measured 372px.
   Crumb 12/16.8 = 1.4, eyebrow 13/15.6 = 1.2, 18px eyebrow→H1 (Figma 214→232). */
.page-template-order .crumb{line-height:1.4;}
.page-template-order .hero-inner .eyebrow{line-height:1.2;margin-block-end:18px;}
/* Hero intro measures 760px and wraps to 4 lines (Figma x=120 w=760 h=124). */
.page-template-order .hero-inner .intro{max-inline-size:760px;}
/* Ghost folio right edge sits on the 120px page margin (Figma x=1140 w=180). */
.page-template-order .folio{inset-inline-end:var(--gutter);}
/* Meta-rail: 40px intro→rule (Figma 428→468), 15px rule→text (468→483),
   10.5/14.7 = 1.4, and 64px text→hero edge (Figma 498→562). */
.page-template-order .hero-inner{padding-block-end:64px;}
.page-template-order .meta-rail{margin-block-start:40px;padding-block:15px 0;line-height:1.4;}
@media(max-width:900px){.page-template-order .folio{inset-inline-end:20px;}}

/* C6 · text sits on the paper ground (Figma fill #FAFAF8), 80px top /
   90px bottom (Figma 562→642 and 1030→1120). */
.editorial.order-intro{padding-block:80px 90px;}
/* SECTION 01 — mono 400 11/13.2 in the Figma, not 500. */
.order-intro .editorial__label{font-weight:400;line-height:1.2;}
/* Editorial body — Inter 400 17/28.9 in charcoal (Figma fill #1A202C), 680px
   measure, 20px paragraph rhythm, no trailing margin on the last paragraph. */
.order-intro .editorial__body>p{font-size:17px;line-height:1.7;color:var(--charcoal);}
.order-intro .editorial__body>p:last-child{margin-block-end:0;}

/* C14 · Order Flow sits on white (Figma fill #FFFFFF). */
/* Section head — Source Serif 4 600 32/38.4, 32px to the list (Figma 1230→1262). */
.order-flow .h-sec{font-size:32px;}
.order-flow .order-flow__head{margin-block-end:32px;}
/* scope-row = 98px tall: 25.5px block padding around a 46px name block plus the
   1px rule. Columns 22 / 18 / 1fr / auto with 28px gaps and 28px inline padding
   reproduce the Figma stops: radio x=148, index x=198, name x=244, price end 1292. */
.order-flow .scope{grid-template-columns:22px 18px 1fr auto;gap:28px;padding:25.5px 28px;}
.order-flow .scope input{inline-size:22px;block-size:22px;margin:0;}
/* Recommended row carries a 2px gold stroke on all four sides (Figma scope-row
   stroke #E8A300 w2); an inset shadow keeps it on the same 98px rhythm. */
.order-flow .scope--rec{border-inline-start:0;box-shadow:inset 0 0 0 2px var(--gold);}
/* Row index — mono 400 14/16.8, .02em, --meta (Figma #8FA1B5 / #B07A00 on row 03). */
.order-flow .scope__no{font-size:14px;line-height:1.2;letter-spacing:.02em;color:var(--meta);}
.order-flow .scope--rec .scope__no{color:var(--gold-700);}
/* Tier name is Inter in the Figma, not mono: 500 15/19.5, .02em, charcoal,
   5px down to the strap (Figma 1307→1312); strap Inter 400 14/21.7. */
.order-flow .scope__name b{font-family:var(--sans);font-size:15px;line-height:1.3;letter-spacing:.02em;margin-block-end:5px;}
.order-flow .scope__name em{font-size:14px;line-height:1.55;}
/* RECOMMENDED chip — mono 500 10/10 in an 84x16 box: 3px/8px padding,
   14px clear of the tier name (Figma name ends 492, chip starts 506). */
.order-flow .scope__tag{display:inline-block;font-size:10px;line-height:1;letter-spacing:.02em;padding:3px 8px;margin-inline-start:14px;}
/* Price — mono 500 30/33 (Figma h=33). */
.order-flow .scope__price{font-size:30px;}
/* Standfirst under the list — Inter 400 15/24.75 over 880px, 32px either side
   (Figma list ends 1752, note 1784→1834, ticket 1866). */
.order-flow .order-flow__note{font-size:15px;line-height:1.65;max-inline-size:880px;margin-block:32px;}
/* Order ticket = 329px: 36px pad, then 24px between head, fields, foot and the
   confidentiality rule (Figma 1930→1954, 2027→2051, 2102→2126). */
.order-flow .ticket__head{margin-block-end:24px;}
.order-flow .ticket__title{font-size:22px;font-weight:500;line-height:1.25;}
.order-flow .ticket__ref{font-size:10px;line-height:1.4;color:var(--ink);}
.order-flow .ticket label{line-height:1.3;margin-block-end:0;}
.order-flow .ticket input{block-size:48px;margin-block-start:8px;}
.order-flow .ticket__foot{margin-block-start:24px;min-block-size:51px;}
/* Submit button is 211x45: Inter 500 15/15 with 15px block / 28px inline padding
   (Figma submit x=156 w=211 h=45, label x=184 w=155). */
.order-flow .ticket__foot .btn-cta{font-size:15px;line-height:1;padding:15px 28px;}
.order-flow .ticket__direct{font-size:13px;line-height:1.4;color:var(--gold-700);}
/* Confidentiality strip — mono 10.5/16.8 = 1.6 (Figma h=17), 24px above the rule. */
.order-flow .ticket__conf{margin-block-start:24px;line-height:1.6;}

/* C·Next Steps sits on the paper ground (Figma fill #FAFAF8), 56px top /
   64px bottom (Figma 2267→2323 and 2496→2560). */
.section.order-next{padding-block:56px 64px;}
/* Kicker — mono 400 13/15.6, .04em, 24px to the grid (Figma 2339→2363). */
.order-next .order-next__kicker{font-size:13px;line-height:1.2;color:var(--gold-700);margin-block-end:24px;}
/* Three 400px columns with no gutter; columns 2–3 carry the Figma hairline and a
   40px indent, putting their copy at x=560 and x=960 (column 1 has no stroke). */
.order-next .next-grid{grid-template-columns:repeat(3,1fr);gap:0;}
.order-next .next-grid>div+div{border-inline-start:1px solid var(--rule);padding-inline-start:40px;}
/* Step: 20/22 mono index, 10px to a 19/24.7 serif head, 10px to 14/22.4 body
   over a 300px measure (Figma 2363 / 2395 / 2430, column height 133). */
.order-next .next-step__no{display:block;font-size:20px;color:var(--gold-700);}
.order-next .next-step__title{font-family:var(--serif);font-weight:500;font-size:19px;line-height:1.3;color:var(--charcoal);margin-block:10px;}
.order-next .next-step__body{font-size:14px;line-height:1.6;max-inline-size:300px;}

/* Responsive: re-assert the theme's own collapse behaviour, which the scoped
   selectors above would otherwise out-specify. */
@media(max-width:900px){
  .order-flow .scope{grid-template-columns:22px 1fr auto;gap:16px;padding:22px;}
  .order-next .next-grid{grid-template-columns:1fr;gap:32px;}
  .order-next .next-grid>div+div{border-inline-start:0;padding-inline-start:0;}
}
@media(max-width:640px){
  .order-flow .h-sec{font-size:24px;}
  .editorial.order-intro{padding-block:36px;}
  .section.order-next{padding-block:36px;}
}


/* ---------- P13 ---------- */
/* ================= P13 · LEGAL =================
   Every value below is read off the approved Figma frame "P13 · Legal"
   (1440 frame, 120px side padding, 1200px content column). The hero rules are
   scoped to this page: the same corrections are due on the shared hero
   component for every inner page, but components.css belongs to no one agent —
   see the shared-change list. */

/* C1L · Hero Light is 313px on Legal (the frame carries NO intro paragraph):
   56 pad-top + 16.8 crumb + 18 + 15.6 eyebrow + 18 + 53.76 H1 + 40 to the meta
   rule + 1 rule + 14 + 14.7 mono line + 64 pad-bottom + 1 hairline = 312.9. */
.page-template-legal .crumb{line-height:1.4;}                                       /* "Home / Legal" IBM Plex Mono 12/16.8 */
.page-template-legal .hero-inner .eyebrow{line-height:1.2;margin-block-end:18px;}   /* Inter 13/15.6; eyebrow y=198 ends 213.6, H1 y=232 */
.page-template-legal .meta-rail{margin-block-start:40px;padding-block:14px 64px;line-height:1.4;}  /* H1 ends y=286, rule y=326, mono y=341 (10.5/14.7), frame ends y=356, section ends y=420 */
.page-template-legal .folio{inset-inline-end:var(--gutter);}                                /* ghost folio x=1140, w=180, in a 1440 frame */

/* Anchor rail — frame "anchors" y=420 h=49: white surface over a 1px #D8DCE3
   base rule, 16px above and below one 16.8px mono line, items 28px apart
   (x=120 / 324 / 521 / 740, each label 176/169/191/176 wide). */
.lg-anchors{display:flex;flex-wrap:wrap;gap:28px;padding-block:16px;padding-inline:var(--pad-x);border-block-end:1px solid var(--rule);}
.lg-anchors a{font-family:var(--mono);font-size:12px;line-height:1.4;letter-spacing:.01em;color:var(--gold-700);}  /* IBM Plex Mono 12/16.8, tracking 0.12px, #B07A00 */

/* C6 editorial sections — frames at y=469 / 898 / 1298 / 1727. "SECTION 0x"
   sits 80px below each section top (549-469); the copy column starts at x=492
   (120 + 300 ed-left + 72 gutter, both tokens) and is 680px wide. The four
   frames leave 146/175/175/148px under their last line, so a single 140px base
   keeps all four within 15px of their Figma height (tolerance is 24px). */
.lg-ed{padding-block:80px 140px;scroll-margin-block-start:110px;}
.lg-ed .editorial__label{line-height:1.2;}                                          /* IBM Plex Mono 11/13.2, then 14px to the H2 at y=576 */
.lg-ed .h-ed{font-weight:600;}                                                      /* Source Serif 4 600 26/33.28 */
.lg-ed .editorial__body>p{font-size:17px;line-height:1.7;color:var(--charcoal);}    /* Inter 17/28.9, #1A202C, 20px between paragraphs (y=1952 -> 1972) */
@media(max-width:640px){
  /* M03 · Content Template — 390: 36px above the section head, body Inter 15/25.5. */
  .lg-ed{padding-block:36px 44px;}
  .lg-ed .editorial__body>p{font-size:15px;}
}


/* ---------- P16 ---------- */
/* ============ P16 · 404 ============
   Figma "P16 · 404 / 404": x=0 y=107 w=1440 h=715, fill #FAFAF8, no stroke,
   layoutMode VERTICAL, itemSpacing 20, padding 180 top/bottom + 120 left/right,
   counterAxisAlignItems CENTER. */
.p404{background:var(--paper);padding-block:180px;padding-inline:var(--pad-x);display:flex;flex-direction:column;align-items:center;gap:20px;text-align:center;}

/* "404 — NOT FOUND" — IBM Plex Mono 500 14px / lh 18.2px, letterSpacing 0.56px (=.04em), fill #B07A00 */
.p404__code{font-family:var(--mono);font-weight:500;font-size:14px;line-height:18.2px;letter-spacing:.04em;color:var(--gold-700);}

/* Headline — Source Serif 4 600 40px / lh 47.2px, letterSpacing 0, fill #1A202C,
   align CENTER, box w=760 h=94 (two 47.2px lines) */
.p404__title{font-family:var(--serif);font-weight:600;font-size:40px;line-height:47.2px;letter-spacing:0;color:var(--charcoal);max-inline-size:760px;text-align:center;}

/* Action line — Inter 500 15px / lh 24px, fill #B07A00 (single line, w=322 at 1440) */
.p404__actions{font-family:var(--sans);font-weight:500;font-size:15px;line-height:24px;letter-spacing:0;color:var(--gold-700);}
.p404__actions a{color:inherit;}
.p404__actions a:hover{text-decoration:underline;}

/* "sitemap" frame — HORIZONTAL, itemSpacing 64, paddingTop 18 (w=315, h=98, x=562.5) */
.p404__sitemap{display:flex;gap:64px;padding-block-start:18px;}
/* sitemap columns — VERTICAL, itemSpacing 10, intrinsic width (63 / 188), text align LEFT */
.p404__col{display:flex;flex-direction:column;gap:10px;text-align:start;}
/* sitemap links — IBM Plex Mono 400 13px / lh 19.5px, letterSpacing 0, fill #4A5568 */
.p404__col a{font-family:var(--mono);font-weight:400;font-size:13px;line-height:19.5px;letter-spacing:0;color:var(--ink);white-space:nowrap;}
.p404__col a:hover{color:var(--gold-700);}

/* "meta-rail" frame — paddingTop 26, single centred TEXT (w=339, x=550.5):
   IBM Plex Mono 400 10.5px / lh 14.7px, letterSpacing 0.21px (=.02em), fill #9AA5B1 */
.p404__rail{padding-block-start:26px;font-family:var(--mono);font-weight:400;font-size:10.5px;line-height:14.7px;letter-spacing:.02em;color:var(--meta-rail);}

/* Reflow below the 1440 reference frame — no Figma breakpoint exists for P16,
   so this follows the theme's existing --pad-x / .h-hero step-downs. */
@media(max-width:1024px){.p404{padding-block:120px;}.p404__title{font-size:34px;line-height:1.18;}}
@media(max-width:640px){.p404{padding-block:80px;gap:16px;}.p404__title{font-size:28px;line-height:1.2;}.p404__sitemap{gap:32px;}}

/* =========================================================================
   MOBILE — 390px, measured from M01 · Homepage.
   NOTE: the M-frames carry their own shorter copy (mobile H1 reads "Would your
   institution survive a depression-class crisis?", stat labels differ). We match
   the LAYOUT exactly but keep one copy set — two H1s would split the SEO signal
   and duplicate content in the DOM. Mobile-specific copy is an ACF/scope call
   for the client, flagged in CLIENT_DECISIONS.md.
   ========================================================================= */
@media(max-width:900px){
  /* M·Hero — navy, 48px lead-in, 24px gutters, 18px rhythm between blocks.
     .home-hero must be the flex container for `order` to reach the grid's
     children once the grid itself becomes display:contents. */
  .home-hero{padding-block:48px 40px;display:flex;flex-direction:column;}
  .home-hero__grid{display:contents;}
  .home-hero__copy{order:1;padding-inline:24px;}
  .home-hero__gdsp{order:2;padding-inline:24px;margin-block-start:0;}
  .specimen{order:3;margin:18px 24px 0;}
  .home-hero__copy .eyebrow{font-size:11px;}
  .home-hero__copy .h-hero--split{font-size:32px;line-height:1.16;margin-block-start:18px;}
  .home-hero__copy p{font-size:15px;line-height:1.67;margin-block-start:18px;}
  .home-hero__actions{margin-block-start:18px;gap:16px;}
  .btn-outline{padding:14px 22px;font-size:14px;}
  .home-hero__actions .link-arrow{font-size:14px;}
  .cred{margin-block-start:16px;font-size:9.5px;}

  /* M·Specimen — 342x172 card, 20px padding. The mobile frame drops the sector
     line and the rule, and runs the eyebrow as one continuous line. */
  .specimen{padding:20px;gap:10px;}
  .specimen__head{font-size:9px;justify-content:flex-start;gap:6px;}
  .specimen__head span:last-child::before{content:"· ";}
  .specimen .h-card{font-size:19px;}
  .specimen__sector,.specimen__rule{display:none;}
  .specimen__big{gap:10px;}
  .specimen__big .num{font-size:32px;}
  .specimen__tierlabel{display:none;}
  .specimen__tier{font-size:12px;}
  .specimen__rows div{font-size:9px;min-block-size:0;padding-block-start:6px;}
  .specimen__rows b{font-size:10px;}
  .specimen__verdict{font-size:10px;padding:5px 9px;}

  /* M·Stats — 2x2, 161px columns with 20px gutters, navy 24px figures */
  .stats{grid-template-columns:repeat(2,1fr);gap:20px;padding-block:32px;padding-inline:24px;}
  .stat{gap:6px;}
  .stat__rule{display:none;}
  .stat .num{font-size:24px;color:var(--navy);}
  .stat p{font-size:12px;line-height:1.5;max-inline-size:150px;}
  .stat:not(:last-child)::after{display:none;}

  /* Sections stack to the M03 content pattern */
  .section{padding-block:36px;padding-inline:24px;}
  .twocrises{padding-block:36px;gap:24px;}
  .mono-block{padding:28px 24px;}
  .mono-block .num{font-size:34px;}
  .monument{padding-block:48px;}
  .monument__line{font-size:22px;}
  .records{padding-block:36px;}
  .outputs .h-sec{font-size:24px;}
  .cta-band{padding:48px 24px;}
  .cta-band h2{font-size:24px;}
}

/* req-access: the email + submit row must wrap at 390, not push the page.
   Measured overflow was 4px from the button's intrinsic width. */
@media(max-width:640px){
  .req-access{flex-wrap:wrap;gap:12px;}
  .req-access input[type=email]{flex:1 1 100%;min-inline-size:0;}
  .req-access .btn-ghost{inline-size:100%;border-radius:var(--radius);}
}

/* =========================================================================
   LINE-HEIGHT CORRECTIONS — measured, not guessed.
   The body sets 1.65 for long-form copy; every element below is set tighter in
   the Figma and was silently inheriting 1.65 (86 of them at exactly 1.65/1.2).
   Values are figma lineHeightPx / fontSize.
   ========================================================================= */
.nav-desktop a{line-height:1.2;}          /* 16.8 / 14 */
.btn-cta{line-height:1;}                  /* 14 / 14   */
.btn-outline,.home-hero__actions .link-arrow{line-height:1;}  /* 15 / 15 */
.f-brand__mark{line-height:1.2;}          /* 26.4 / 22 */
.step__no{line-height:1;}                 /* 13 / 13   */
.micro{line-height:1.3;}                  /* 13 / 10   */
.specimen__sector,.specimen__rows div{line-height:1.4;}       /* 14 / 10 */
.specimen .h-card{line-height:1.2;}       /* 28.8 / 24 */
.mono-block__label{line-height:1.2;}      /* 14.4 / 12 */
.stat .num{line-height:1.1;}              /* 48.4 / 44 */
.outputs .h-sec,.records .h-sec{line-height:1.15;}            /* 46 / 40 */
.hero-inner .meta-rail b{line-height:1.4;}/* 14.7 / 10.5 */

/* =========================================================================
   P01 typography corrections — each value read from the P01 reference nodes.
   ========================================================================= */
/* GDSP hero strip: caption 12/14.4 tracking .04em; tier labels 11/13.2 tracking 0 */
.gdsp-caption{line-height:1.2;letter-spacing:.04em;}
.gdsp-strip--labeled em{line-height:1.2;letter-spacing:0;}
/* Stat figures: IBM Plex Mono 500 44/48.4, tracking -0.44 = -.01em */
.stat .num{letter-spacing:-.01em;}
/* Specimen card */
.specimen__head .micro{font-size:10px;font-weight:500;line-height:1.3;}
.specimen .h-card{font-size:24px;line-height:1.2;}
.specimen__tierlabel{line-height:1.3;}
.specimen__verdict{line-height:1;}
/* Hero credibility line: 11/15.4, tracking .02em */
.cred{font-size:11px;line-height:1.4;letter-spacing:.02em;}

/* Internal rhythm for the three short P01 sections, from the frame geometry:
   C5  header h2 ends -> feature rows start = 102px
   C·How It Works  eyebrow->h2 32, h2->spine 32, spine->link 36
   C8  header block ends -> dossier row = 48px                                */
.outputs .h-sec{margin-block:14px 102px;}
.steps .eyebrow{margin-block-end:32px;}
.steps .h-sec{margin-block:0 32px;}
.steps .steps__spine{margin-block-end:36px;}
.records .eyebrow{margin-block-end:14px;}
.records .h-sec{margin-block:0 48px;}

/* P01 typography, round 2 — every value from the P01 reference nodes */
.twocrises .h-sec,.outputs .h-sec,.records .h-sec{letter-spacing:-.005em;}  /* -0.20 / 40 */
.records .h-sec{font-size:40px;line-height:1.15;}
.steps .h-sec{font-size:32px;line-height:1.2;letter-spacing:-.005em;}
/* "Where RDC Fits" is mono in the design, unlike the Inter eyebrows elsewhere */
.steps .eyebrow{font-family:var(--mono);font-weight:400;font-size:13px;letter-spacing:.04em;}
.twocrises .link-arrow{font-size:15px;line-height:1;}
.steps .link-arrow{line-height:1.4;}                       /* 19.6 / 14 */
.mono-block__label{letter-spacing:.04em;}                  /* 0.48 / 12 */
.mono-block .num{line-height:1.1;letter-spacing:-.01em;}   /* 57.2 / 52 */
.output .micro{font-size:14px;letter-spacing:.04em;}       /* 0.56 / 14 */
.monument__year{line-height:1.2;letter-spacing:.08em;}     /* 18 / 15, 1.20 */
.monument__line{line-height:1.48;}                         /* 50.3 / 34 */
.footer-bottom{line-height:1.5;}                           /* 16.5 / 11 */
/* Only the left half of the specimen eyebrow is Medium; "SPECIMEN ★" is Regular */
.specimen__head .micro:last-child{font-weight:400;}
.dossier__spine .meta{font-weight:400;}


/* ===== RESIDUAL PARITY PASS ===== */

/* ---------- P02 ---------- */
/* =========================================================================
   P02 · About — parity round 2. Every value below is read from
   reference/P02_-_About.json (frame 1440x4079) against built/P02_1440.json.
   ========================================================================= */

/* C1L · Hero Light closes 64px under the mono row (Figma: meta-rail row ends
   y=436, frame ends y=500) and the About block already spends that as the
   meta-rail's own 62px tail + the hero's 1px #D8DCE3 stroke. The later
   unscoped `.hero-inner{padding-block-end:64px}` (pages.css:998, inside the
   P09 block) added a SECOND 64px tail, which is the whole of the reported
   'C1L · Hero Light height off by +64px'. Reset it for this page only:
   built hero 456.52 -> 392.5 against the Figma 393. */
.page-template-about .hero-inner{padding-block-end:0;}

/* The three C6 editorial frames do not share one tail — measured from the
   reference, tail = frame bottom minus ed-right bottom:
     SECTION 01  ed-right ends y=1208, frame 500..1368  -> 160
     SECTION 02  ed-right ends y=2540, frame 2142..2698 -> 158
     SECTION 03  ed-right ends y=3067, frame 2698..3254 -> 187
   The single 172 that was in place left S1 +9.8, S2 +12.9 and S3 -16.0, so
   160 becomes the base and SECTION 03 carries its own 187 via the modifier
   added to page-templates/about.php. Lead stays 88 (sec-no y=588 in a frame
   opening at y=500). Result: 865.7 / 556.9 / 555.0 vs 868 / 556 / 556. */
.page-template-about .editorial{padding-block:88px 160px;}
.page-template-about .editorial--sec3{padding-block-end:187px;}

/* Re-state the <=1024 step-down. It is declared earlier in the file
   (pages.css:463) and a media query carries no extra specificity, so the two
   rules above — appended later at the same specificity — would otherwise win
   at every width and drag the 1440-only tails onto narrow viewports. */
@media(max-width:1024px){
  .page-template-about .editorial{padding-block:56px 64px;}
  .page-template-about .editorial--sec3{padding-block-end:64px;}
}


/* ---------- P03 ---------- */
/* =========================================================================
   P03 · What RDC Delivers — parity round 3. Appended last so these win over
   the earlier duplicates for the same selectors (.qband* at pages.css:235-242
   and :539-540, .meta-rail at components.css:128 / pages.css:997 — none of
   which set a line-height). Values read from
   reference/P03_-_What_RDC_Delivers.json.
   ========================================================================= */

/* Hero meta-rail — Figma "RDC INSTITUTIONAL FINTECH PLATFORM" (x=120 y=483 h=15)
   and "DETERMINISTIC RESILIENCE INTELLIGENCE" (x=661) are IBM Plex Mono 400
   10.5/14.7, i.e. 14.7/10.5 = 1.4. Only the <b> DOSSIER item carried a
   line-height (pages.css:1494); the two spans were inheriting the body 1.65
   (17.33px), which also pushed the hero frame to 458.83 against the Figma 455. */
.dlv-page .hero-inner .meta-rail{line-height:1.4;}

@media (min-width:901px){
  /* C · Question Band — Figma frame y=1083..1366 = 283px (72 + 139 + 72); the
     build measures 320.55px. Cause: the RDC question (Source Serif 4 600
     26/36.4, Figma node w=460 h=108 = 3 lines) takes a 4th line in the browser
     because the shipped SourceSerif4 statics render ~6% wider than the cut
     Figma uses — checked against the auto-width nodes on this frame:
     "Investment Verdict" is 217.6px out of SourceSerif4-Medium.woff2 vs 203 in
     the Figma, "Self-Sufficiency Percentage" 308.3 vs 289. At 460px the set is
     ~30px short of fitting 3 lines. The RDC column frame is x=720 w=600 with a
     1px inside stroke and its text at x=776 — 55px inside the rule, nothing
     reserved on the trailing edge — so give the question that full 544px
     measure: 72 + 15.4 + 15.6 + 3x36.4 + 72 = 284.2px, and the label/question
     start on x=776 instead of 777. Guard mirrors the max-width:900px stack at
     pages.css:242, which zeroes this padding and drops the rule. */
  .dlv-page .qband__rdc{padding-inline:55px 0;}
  .dlv-page .qband__q--strong{max-inline-size:544px;}   /* 600 - 1px rule - 55 */
}

@media (min-width:1025px){
  /* C9 · CTA Strip — Figma btn frame x=1117 w=203 h=51 with a 1px inside
     stroke and the label at x=1149: the 32px inset INCLUDES the stroke
     (1117 + 32 = 1149, 1149 + 139 = 1288, 1288 + 32 = 1320 = column edge).
     pages.css:559 sets padding:17px 32px on top of the 1px border = a 33px
     inset, so the right-aligned button runs wide and drags the label left.
     31 + 1px border = the Figma 32 — the value P02/P05/P11 already use. */
  .dlv-page .cta-band .btn-ghost{padding-inline:31px;}
}


/* ---------- P04 ---------- */
/* =========================================================================
   P04 · WHO BENEFITS — parity round 2.
   Overrides of SHARED parts (hero-inner) are scoped to .wb-page, added by the
   template's body_class hook, so they cannot leak to the twelve other pages
   that render the same markup. .divergence / .stakeholders exist on this
   template only and stay unscoped. Appended last, so these win over the
   earlier P04 block (pages.css 563-634) and over the unscoped .meta-rail /
   .folio / .hero-inner defaults at pages.css 989-998.
   ========================================================================= */

/* C1L — ghost folio must ride the shared --gutter, never a hard 120px: Figma
   folio x=1140 w=180 -> trailing edge 1320 = the 1200 content column edge, so
   above 1440 it has to travel with the column like every other band. */
.wb-page .hero-inner .folio{inset-inline-end:var(--gutter);}

/* C1L — the intro text box is 760 wide in the Figma (node x=120 y=304 w=760
   h=93 = 3 lines of Inter 19/31.35), not the shared 800; at 800 the same three
   lines break at different words. */
.wb-page .hero-inner .intro{max-inline-size:760px;}

/* C1L — meta-rail: hairline y=437 (40px under the intro, which ends 397), mono
   row y=452 = 14px below it, labels IBM Plex Mono 10.5/14.7 = 1.4. The build
   inherited body 1.65 (measured 17.33) on the two spans — only the b had been
   corrected — which is +2.6px, and the shared 15px pad is 1px over. */
.wb-page .hero-inner .meta-rail{margin-block-start:40px;padding-block:14px 0;line-height:1.4;}

/* C1L — hero closes 64px under the mono row (Figma row ends 467, frame 107..531).
   Pinned here so a later unscoped .hero-inner rule cannot retune this page. */
.wb-page .hero-inner{padding-block-end:64px;}

/* C4 — the card stroke sits INSIDE the frame: Figma card x=266 w=440 with its
   content at x=294 and its rows w=384. 28px padding plus a 1px border gave a
   382px content box and pushed the text to x=295, so the border has to live
   inside the 28 (27 + 1 = 28; 440 - 2 - 54 = 384 exactly). */
.divergence .divg{padding:27px;}

/* C4 — same reading for the chips: Figma chip frame x=551 w=127 holds text
   x=563 w=103, i.e. 12px from the frame edge of which 1px is the stroke. */
.divergence .divg__chip{padding-inline:11px;}

/* C4 — verdict row: "RDC DETERMINISTIC READ" (137 in Figma, 136.4 rendered) plus
   the 234px chip needs 371 of the 384px row. At the inherited 12px flex gap the
   pair overflowed, so the label wrapped to two lines and the chip text to two,
   measuring card 1 at 271px against the Figma's 257 (Figma row 991..1014, h=23).
   The row is space-between, so the gap is only a floor — the Figma itself leaves
   13px of free space (label ends 431, chip starts 444) — and 8px restores the
   single line with 4px to spare. The label must never be the thing that wraps. */
.divergence .divg__row{gap:8px;}
.divergence .divg__row .micro{white-space:nowrap;}


/* ---------- P05 ---------- */
/* ---------- P05 · System — parity closeout ---------- */

/* C1L · Hero — Figma frame 107 -> 616 = 509px; the build measures 575 (+66).
   The 64px the frame leaves under the meta-rail row (row ends 552, frame ends
   616) is applied twice: once by .page-template-system .meta-rail{padding-block:
   15px 64px} (pages.css:654) and again by the unscoped .hero-inner{padding-block-end:64px}
   (pages.css:998). Keep it on the hero and zero it on the rail — the pairing
   .page-template-order already uses. 56 + 16.8 + 18 + 15.6 + 18 + 107.52 + 18 +
   125.4 + 40 + 1 + 15 + 14.7 + 64 = 510. */
.page-template-system .hero-inner{padding-block:56px 64px;}          /* crumb y=163 = 107 + 56 */
.page-template-system .hero-inner .meta-rail{padding-block:15px 0;}  /* rule y=522, row y=537 h=15 */

/* Definition tables (PHASE 1 / 2 / 3) — Figma row frames are 44px one-line and
   64px two-line INCLUDING their 1px rule (3795 -> 3839 -> 3903), text inset 12px
   (row 3795, text 3807). border-collapse puts that rule outside the padding box,
   so every row runs 1.2px long (measured 45.14 / 65.28).
   44 = 11.4 + 20.15 (Inter 13 / 1.55) + 11.4 + 1 · 64 = 11.4 + 40.3 + 11.4 + 1.
   Scoped, so the generic .def-table other templates use is untouched. */
.page-template-system .def-table td{padding-block:11.4px;}

/* PHASE 1 zone classification — Figma rows are 46px on a 64px pitch (2113 / 2177 /
   2241 … = 46 + 18px border-spacing), text inset 14px. border-collapse:separate
   counts BOTH 1px rules here, so 46 = 12.6 + 18.85 (Inter 13 / 1.45, the tallest
   cell) + 12.6 + 2; measured 48.84. */
.page-template-system .zone-table td{padding-block:12.6px;}


/* ---------- P09 ---------- */
/* ============ P09 · SAMPLE REPORT — parity closeout ============ */

/* C1L hero meta-rail: Figma mono 10.5 / lineHeightPx 14.7 = 1.4 on both rail
   labels. P09 was the one inner page left inheriting the 1.65 body leading
   (10.5 x 1.65 = 17.33px), which is the reported typography defect on
   "RDC INSTITUTIONAL FINTECH PLATFORM" and "DETERMINISTIC RESILIENCE
   INTELLIGENCE". Scoped to this page so the unscoped .meta-rail rule in the
   P09 block (pages.css:997) and every later page block stay untouched;
   .hero-inner .meta-rail b (pages.css:1494) already carried 1.4. */
.page-template-sample-report .hero-inner .meta-rail{line-height:1.4;}

/* C8 · Phases — in the approved Figma the verdict seal sits INSIDE each dossier
   body (seal frame x=140 y=1531 w=184 h=28, 12px under the paragraph), not in a
   strip beneath the grid. display:flex + fit-content keeps it a block-level box
   so the body's 26.4px inline strut cannot add leading; 6px block padding +
   1px border + 13.65 line = 27.65 = the 28px Figma frame, whose 1px stroke sits
   inside the 7px text inset (text y=1538 h=14 in a 1531..1559 frame). */
.page-template-sample-report .phases .dossier__body .seal{
  display:flex;inline-size:fit-content;margin-block-start:12px;padding-block:6px;
}
/* Card copy column is 330px in Figma (h3 and p frames x=140 w=330 inside the
   384px card) — that is what wraps Phase 1 to four lines (p h=88) and makes
   card 1 22px taller than cards 2-3 (p h=66). */
.page-template-sample-report .phases .dossier__body p{max-inline-size:330px;}
/* Figma does not equalise the row: card 1 ends at y=1629, cards 2-3 at y=1607. */
.page-template-sample-report .phases .card-grid{align-items:start;}


/* ---------- P10 ---------- */
/* ================================================================
   P10 · Supportive Documents — parity pass 2.
   Every value read from reference/P10_-_Supportive_Documents.json.
   ================================================================ */

/* --- C1L · Hero Light — Figma frame y=107 h=424, built 403.86 (-20.1) ---
   DUPLICATE-RULE BUG: pages.css:997 ships an UNSCOPED `.meta-rail{margin-block-start:40px;
   padding-block:15px 0}` (a P06 rule). It lands after components.css:128
   (`padding-block:14px 22px`) and after the P10 block, so the rail lost the 22px
   bottom that the comment at pages.css:1076-1078 assumed when it set the hero to
   close at 42px. Restored from the Figma stack instead of from that assumption:
   divider y=437 (h=1) -> rail text y=452  => 14px above the rail text;
   rail text ends y=467, frame ends y=531  => 64px below it.
   Model reproduces the measured 403.86 exactly and lands at 424.87 vs Figma 424. */
.p10 .hero-inner .meta-rail{padding-block:14px 0;}
.p10 .hero-inner{padding-block-end:64px;}

/* Figma folio "10" x=1140 w=180 -> right edge 1320 = the shared content edge.
   pages.css:1082 hardcodes 120px, which stops tracking the column above 1440
   where --gutter grows. Same treatment as P02/P03/P05. */
.p10 .hero-inner .folio{inset-inline-end:var(--gutter);}

/* --- C8 · Library, dossier card box ------------------------------------
   Figma dossier: 384 wide with a 1px #D8DCE3 stroke that does NOT offset the
   auto-layout — spine/body/rail text starts at x=140 (card 120 + 20 padding)
   and the inner box is 384-40 = 344. A CSS border pushes that to x=141 / 342,
   which is what made card 2's rail overflow (micro 213.6 + link 119 + the 12px
   gap floor = 344.6 > 342) so both items shrank and wrapped: rail 60.19 instead
   of 44, card 2 270.14 instead of 251. Draw the stroke as an inset shadow so the
   content box is the Figma 384/344, and keep --shadow-card. */
.p10 .p10-library .dossier{border:0;box-shadow:inset 0 0 0 1px var(--rule),var(--shadow-card);}
/* Figma rail is SPACE_BETWEEN and its real free space is 9px (micro ends x=762,
   link starts x=771); the 12px CSS gap floor is what forced the shrink. */
.p10 .p10-library .dossier__rail{column-gap:9px;}

/* --- req-access — Figma input frame x=120 w=340 h=48 --------------------
   The input is flex:1 (pages.css:362) so it took 336.22 of the 582 row, pushing
   the button label to x=479.22 instead of the Figma x=482 (460 + 22 inset).
   Pin it to the Figma 340 and drop the 582 cap, since the rendered button is
   245.78 wide (Figma 242 — Inter glyph metrics) and would otherwise be squeezed.
   Scoped to >=1025px: below that the row shrinks/stacks (pages.css:1471-1475)
   and a fixed 340 would overflow the narrower content column. */
@media (min-width:1025px){
  .p10 .p10-inquiry .req-access{max-inline-size:none;}
  .p10 .p10-inquiry .req-access input[type=email]{flex:0 0 340px;inline-size:340px;}
}


/* ---------- P11 ---------- */
/* ============================================================================
   P11 · CONTACT — parity pass 2. Appended after the earlier .contact-page block
   (pages.css:1152-1230), so at equal specificity these win by source order.
   ============================================================================ */

/* C1L · Hero Light: Figma frame y=107..500 (h=393), paddingBottom 64, 1px INSIDE
   stroke. That 64px close belongs to the hero and .hero-inner already carries it;
   the meta-rail was paying it a SECOND time (pages.css:1165 padding-block:14px 64px
   plus .hero-inner{padding-block-end:64px}), which is the entire +64px
   section-height defect (built 457.52 -> 393.5).
   Rail geometry: rule y=406, mono row y=421 (14px below it), row ends 436, frame ends 500. */
.contact-page .hero-inner .meta-rail{padding-block:14px 0;}
.contact-page .hero-inner{padding-block-end:64px;}

/* Ghost folio "11": Figma x=1140 w=180 -> right edge 1320, i.e. the content column
   edge, so it must track --gutter rather than a hard 120px above 1440. */
.contact-page .hero-inner .folio{inset-inline-end:var(--gutter);}
@media(max-width:900px){.contact-page .hero-inner .folio{inset-inline-end:20px;}}

/* commit-band is a full-bleed band, so its horizontal padding is --gutter, never
   --pad-x (pages.css:1171): with --pad-x the band stops sharing the header/footer
   column above 1440. Figma frame y=500 h=58 = 20 + 18 + 20 with the 1px stroke
   INSIDE the frame, so the bottom padding pays for the border: 20+18+19+1 = 58
   (built measured 61). */
.contact-page .commit-band{padding-block:20px 19px;padding-inline:var(--gutter);}
/* The label is the band's only content — IBM Plex Mono 12/18, Figma y=520 h=18.
   As an inline span it shared a line box with the band's 16px block strut and
   measured 20px, not 18. */
.contact-page .commit-band .micro{display:block;}

/* C12 · Turnstile block: the Figma 249x42 frame at x=160 carries exactly one text
   (Inter 400 13/15.6 at x=206) plus an 18x18 #2D5A3D square at x=176 that holds no
   text — so the square is drawn by the box itself and the wrapper's own type is the
   label's type. */
.contact-page .form-verify{font-size:13px;line-height:1.2;}
.contact-page .form-verify::before{content:"";inline-size:18px;block-size:18px;background:var(--d1);flex:none;}

/* contact-panel rows: the row carries the label spec (IBM Plex Mono 400 11/14.3,
   tracking 0.33 = .03em — Figma y=630/711/792/873/954), and the value pins
   Inter 500 16/24 tracking 0.0 so it cannot inherit the label's tracking. */
.contact-page .cp-row{font-family:var(--mono);font-size:11px;line-height:1.3;letter-spacing:.03em;}
.contact-page .cp-row b{letter-spacing:0;}

/* C7 · FAQ heading: Source Serif 4 600 28/33.6 (Figma y=1718 h=34), 8px down to the
   first item (h2 ends 1752, item at 1760). Moved off the template's inline style,
   which also defeated the 640px step-down. */
.contact-page .faq .h-sec{font-size:28px;line-height:1.2;margin-block-end:8px;}
@media(max-width:640px){.contact-page .faq .h-sec{font-size:24px;}}


/* ---------- P12 ---------- */
/* ===== P12 · PLACING YOUR ORDER — appended parity corrections ===== */

/* C14 · Order Flow — the scope rows measured 102.9px against the Figma's 98px
   (scope-row y=1262 / 1360 / 1458 / 1556 / 1654, h=98 each; scope-select h=490).
   That 5 x 4.9px is the whole +28px on this section. The Figma name block is 46px
   (Frame x=244 y=1288 w=840 h=46): tier name Inter 500 15/19.5, a 5px step
   (1307 -> 1312), then the strap Inter 400 14/21.7. In the build the strap was an
   inline sitting in the inherited 26.4px body line box, so the block came out
   50.9px. Laying the name span out as a wrapping flex row puts the RECOMMENDED
   chip on the name line — where the Figma has it, as a sibling frame, not nested
   in the name — and the strap on its own line: 19.5 + 5 + 21.7 = 46.2px, so the
   row is 25.5 + 46.2 + 25.5 + 1 = 98.2px and the list is 492px (Figma 490). */
.order-flow .scope__name{display:flex;flex-wrap:wrap;align-items:center;}
/* The 5px name -> strap step moves onto the strap, so the chip centres on the
   19.5px name line: Figma name text 1484–1503, chip frame 1485.5–1501.5. */
.order-flow .scope__name b{margin-block-end:0;}
.order-flow .scope__name em{flex:0 0 100%;margin-block-start:5px;}
/* RECOMMENDED chip is IBM Plex Mono 500 10/10, .02em (Figma text w=68 inside the
   84px frame at x=506). With no family it inherited Inter and rendered 81px of
   text in a 97px chip; the mono advance (11 x 6.0 + 11 x 0.2) restores 68/84. */
.order-flow .scope__tag{font-family:var(--mono);}


/* ---------- P13 ---------- */
/* =========================================================================
   P13 · LEGAL — parity round 2. Every value is read off the approved frame
   "P13 · Legal" (1440 frame, 120px margins, 1200px column). All rules are
   page-scoped so nothing leaks into the shared hero / editorial components.
   ========================================================================= */

/* C1L · Hero Light is 313px tall (frame y=107 -> 420). The meta-rail frame is
   y=304..356 (hairline y=326, mono row y=341 h=15, 14px between them) and the
   hero closes 64px under it: 420 - 356. pages.css applies that 64 TWICE —
   ".page-template-legal .meta-rail{padding-block:14px 64px}" (line 1347) plus
   the unscoped ".hero-inner{padding-block-end:64px}" (line 998, inside the P09
   block) — 355.8 + 64 + 64 + 1 hairline = 484.8, i.e. the entire +64px
   section-height defect. Keep the 14px above the mono row; close the band once. */
.page-template-legal .hero-inner .meta-rail{padding-block:14px 0;}
.page-template-legal .hero-inner{padding-block-end:64px;}

/* Ghost folio "13": Figma x=1140 w=180 -> trailing edge 1320, i.e. the content
   column edge, not a viewport-relative 120px (pages.css:1348 / :989). --gutter
   keeps it on the shared column above 1440 and still collapses to 20px at
   <=640, matching the shared component. */
.page-template-legal .hero-inner .folio{inset-inline-end:var(--gutter);}

/* Frame "anchors" y=420 h=49: full-bleed white band over a 1px #D8DCE3 rule,
   16px + one 16.8px mono line + 16px. Being full-bleed it must be padded with
   the shared --gutter; pages.css:1353 ships --pad-x, which walks off the 1200
   column the header, hero and footer share on wide viewports. Item spacing
   stays 28px (Figma x=120 / 324 / 521 / 740 over labels 176 / 169 / 191 / 176). */
.page-template-legal .lg-anchors{padding-inline:var(--gutter);}

/* "SECTION 01".."SECTION 04": Figma IBM Plex Mono 400 11/13.2, tracking 0.44
   (= .04em). components.css:184 ships weight 500. */
.page-template-legal .lg-ed .editorial__label{font-weight:400;}

/* C6 frames: y=469 h=429 · y=898 h=400 · y=1298 h=429 · y=1727 h=567. All four
   open 80px above "SECTION 0x" (549-469 / 978-898 / 1378-1298 / 1807-1727), and
   the copy column ends 146 / 175 / 175 / 148px above each frame's bottom edge
   (898-752 / 1298-1123 / 1727-1552 / 2294-2146) — so the closing pad is
   per frame, not one 140px average (pages.css:1361 lands -13 / +16 / +16 / -11
   off). The trailing paragraph's 20px margin is dropped so the padding is the
   only air under the last line. <=640 keeps the M03 mobile rhythm untouched. */
@media (min-width:641px){
  .page-template-legal .lg-ed .editorial__body>p:last-child{margin-block-end:0;}
  .page-template-legal #intellectual-property{padding-block:80px 146px;}
  .page-template-legal #no-investment-advice{padding-block:80px 175px;}
  .page-template-legal #no-proprietary-interest{padding-block:80px 175px;}
  .page-template-legal #governing-law-forum{padding-block:80px 148px;}
}

/* Optional counsel copy added in wp-admin (no Figma counterpart): it now starts
   on the column edge like every other band, so give it the approved body face of
   the four C6 sections — Inter 17/28.9 (#1A202C) on the 680px ed-right measure. */
.page-template-legal .legal-copy{max-inline-size:680px;font-size:17px;line-height:1.7;color:var(--charcoal);}
