/* RecapWP Blog article — "Ledger" design, page sheet.
 *
 * A faithful port of the design handoff's article sheet:
 *   docs/design_handoff_marketing_site_Ledger/design_files/site/article-ledger.css
 * Ported VERBATIM so the design is pixel-exact. Local changes live in the marked
 * "THEME ADDITIONS" block at the foot — keep the ported rules untouched so the
 * next design drop can be diffed against this file.
 *
 * Layers ON TOP of ledger.css (the shared Ledger base), which must load first —
 * see the enqueue map in functions.php. Everything here is article-only: the
 * article hero, the contents rail, the prose atoms and the topic chips. Shared
 * blocks (closing band, footer) come from ledger.css.
 *
 * The prose atoms map 1:1 onto what the 25 body partials in blog/ actually use:
 *   p.lede            the standfirst paragraph (one per article)
 *   div.pull > q      the pull-quote (one per article)
 *   ol > li           the numbered step list, each step an h3 + Check/Fix paras
 *   p > span.lead-in  the short "Check:" / "Fix:" labels
 * Change either side and the other has to follow.
 */
/* RecapWP Blog article — "Ledger" · extends home-ledger.css */

/* ── hero ── */
.hero-art{padding:56px 0 60px}
.art-crumb{display:flex;align-items:center;gap:9px;font:600 9.5px var(--mono);letter-spacing:.16em;color:#8D97A1;margin-bottom:26px}
.art-crumb a{color:#8D97A1}
.art-crumb a:hover{color:color-mix(in oklab,var(--ac) 85%,#fff);text-decoration:none}
.art-crumb .sep{opacity:.5}
.art-crumb .here{color:color-mix(in oklab,var(--ac) 82%,#fff)}
.hero-art .art-tags{display:flex;align-items:center;gap:12px;font:600 10px var(--mono);letter-spacing:.16em;color:var(--ac);margin-bottom:18px}
.hero-art .art-tags .dot{width:3px;height:3px;border-radius:50%;background:currentColor;opacity:.55}
.hero-art .art-tags .rt{color:#9AA5AE}
.hero-art h1{font:500 clamp(30px,3.4vw,44px)/1.16 var(--serif);letter-spacing:-.01em;color:#F5F1E7;max-width:840px;text-wrap:balance}
.hero-art h1 em{font-style:normal;color:color-mix(in oklab,var(--ac) 82%,#fff)}
.hero-art .stand{font:400 16px/1.7 var(--sans);color:#A6B0B9;margin-top:20px;max-width:640px;text-wrap:pretty}
.art-byline{display:flex;align-items:center;gap:14px;margin-top:32px;padding-top:24px;border-top:1px solid var(--navy-ln);max-width:640px}
.art-byline .av{width:38px;height:38px;border-radius:2px;border:1px solid color-mix(in oklab,var(--ac) 55%,transparent);display:flex;align-items:center;justify-content:center;font:600 15px var(--serif);color:color-mix(in oklab,var(--ac) 85%,#fff);background:rgba(255,255,255,.03)}
.art-byline .who{font:600 13px var(--sans);color:#E7E1D4}
.art-byline .when{font:11px var(--mono);color:#8D97A1;margin-top:3px;letter-spacing:.04em}

/* ── body ── */
.art-main{padding:60px 0 96px}
.art-grid{display:grid;grid-template-columns:200px 1fr;gap:56px;align-items:start}

/* contents rail */
.art-rail{position:sticky;top:32px}
.art-rail .rl{font:600 9px var(--mono);letter-spacing:.2em;color:var(--hint);padding-bottom:12px;margin-bottom:12px;border-bottom:1px solid var(--card-ln)}
.art-rail a{display:flex;gap:10px;font:400 12.5px/1.4 var(--sans);color:var(--mut);padding:7px 0;text-decoration:none;border-left:2px solid transparent;padding-left:12px;margin-left:-12px}
.art-rail a .rn{font:600 10px var(--mono);color:var(--hint);flex-shrink:0}
.art-rail a:hover{color:var(--ink);text-decoration:none}
.art-rail a.on{color:var(--ink);border-left-color:var(--ac)}
.art-rail a.on .rn{color:var(--ac)}

/* prose */
.art-flow{max-width:680px}
.art-flow>p{font:400 16px/1.78 var(--sans);color:var(--ink);margin:0 0 22px;text-wrap:pretty}
.art-flow>p.lede{font-size:18px;line-height:1.72;color:var(--ink)}
.art-flow h2{font:500 25px/1.3 var(--serif);letter-spacing:-.01em;color:var(--ink);margin:44px 0 16px;scroll-margin-top:32px}
.art-flow h3{font:600 17px/1.4 var(--serif);color:var(--ink);margin:30px 0 12px;scroll-margin-top:32px}
.art-flow strong{font-weight:600;color:var(--ink)}
/* labeled lead-in lines, e.g. "Check:" / "Fix:" */
.art-flow p .lead-in{font:600 12px var(--mono);letter-spacing:.06em;color:var(--ac);text-transform:uppercase;margin-right:6px}
.art-flow a{color:var(--ac)}
.art-flow ul{margin:0 0 22px;padding:0;list-style:none}
.art-flow ul li{position:relative;font:400 15.5px/1.7 var(--sans);color:var(--ink);padding-left:22px;margin-bottom:11px}
.art-flow ul li::before{content:'';position:absolute;left:4px;top:11px;width:5px;height:5px;border-radius:50%;background:var(--ac)}
/* numbered step list — each item can carry its own h3 + Check/Fix paras */
.art-flow ol{counter-reset:step;margin:0 0 22px;padding:0;list-style:none}
.art-flow ol>li{counter-increment:step;position:relative;padding-left:52px;margin-bottom:26px}
.art-flow ol>li::before{content:counter(step,decimal-leading-zero);position:absolute;left:0;top:2px;font:600 13px var(--mono);color:var(--ac);width:34px;height:30px;display:flex;align-items:center;justify-content:center;border:1px solid var(--card-ln);border-radius:3px;background:var(--card)}
.art-flow ol>li h3{margin:2px 0 10px}
.art-flow ol>li p{font:400 15px/1.72 var(--sans);color:var(--ink);margin:0 0 10px}
.art-flow ol>li p:last-child{margin-bottom:0}
.art-flow code{font:500 13.5px var(--mono);background:color-mix(in oklab,var(--ac) 8%,#fff);border:1px solid var(--card-ln);border-radius:2px;padding:1px 6px;color:#7A5F27}

.pull{margin:34px 0;padding:26px 30px;background:var(--card);border:1px solid var(--card-ln);border-left:2px solid var(--ac);border-radius:3px}
.pull q{font:italic 500 19px/1.55 var(--serif);color:var(--ink);quotes:none}

/* footer of article */
.art-end{max-width:680px;margin-top:44px;padding-top:26px;padding-bottom:8px;border-top:1px solid var(--card-ln)}
.art-topics{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.art-topics .tl{font:600 9px var(--mono);letter-spacing:.16em;color:var(--hint);margin-right:4px}
.art-topics .tp{font:600 11px var(--sans);color:var(--mut);background:var(--card);border:1px solid var(--card-ln);border-radius:2px;padding:5px 11px}

@media (max-width:900px){
  .art-grid{grid-template-columns:1fr;gap:0}
  .art-rail{display:none}
}
@media (max-width:640px){
  .pull{padding:20px 22px}
}


/* ══════════════════════════════════════════════════════════════════════════
   THEME ADDITIONS — not in the design handoff's article-ledger.css.
   Everything above this line is the verbatim port. Keep new rules below it.
   ══════════════════════════════════════════════════════════════════════════ */

/* The rail is sticky, so it needs the WP admin bar's height when one is there.
   32px desktop / 46px on the mobile bar — but the rail is display:none below
   900px (the design's own rule), so the 46px companion would be dead code for
   every width the mobile bar exists at. One rule is correct here. */
body.admin-bar .art-rail{top:calc(32px + 32px)}

/* A rail taller than the viewport can't be reached: sticky pins its top and the
   overflow sits below the fold with nothing to scroll it. The design never hits
   this (its article has 5 headings) but the real corpus runs to 11, so the rail
   scrolls within itself once it would outgrow the screen. Scrollbar hidden
   until it's needed, and only on the rail — the page itself never nests one. */
.art-rail{max-height:calc(100vh - 64px);overflow-y:auto;overscroll-behavior:contain}
body.admin-bar .art-rail{max-height:calc(100vh - 96px)}

/* Keyboard focus. The design ships none for the rail links or the prose links. */
.art-rail a:focus-visible,
.art-flow a:focus-visible{outline:2px solid var(--ac);outline-offset:2px}

/* A heading the rail jumps to lands under the admin bar otherwise: the design's
   32px scroll-margin has no reason to know about it. */
body.admin-bar .art-flow h2,
body.admin-bar .art-flow h3{scroll-margin-top:64px}
