/*
 * op-article.css, OwnersPath article + hub body styles
 * ────────────────────────────────────────────────────
 * Loaded by /articles/ pages alongside op-chrome.css.
 * Self-contained design tokens so no op-base file is needed.
 * Pure utility: readable long-form, sticky study aids, clear
 * conversion paths. No scroll animation by design.
 */

/* ── TOKENS ─────────────────────────────────────── */
:root{
  --primary:#212121;
  --highlight:#3CE000;
  --highlight-dim:#7ebe2a;
  --bg:#F7F5F0;
  --ink:#2b2b2b;
  --muted:#5f6368;
  --line:#e7e4db;
  --card:#ffffff;
  --soft:#f4f7ee;
  --font:'Google Sans Flex','Google Sans',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;
  --maxw:1200px;
  --radius:14px;
  --ease:0.2s cubic-bezier(.4,0,.2,1);
  --risk:#c0392b;--risk-soft:#fbeae7;--safe:#2c8a00;
}

*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;font-family:var(--font);color:var(--ink);
  background:#fff;line-height:1.72;font-size:17px;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
}
img{max-width:100%;display:block}

/* ── SKIP LINK ──────────────────────────────────── */
.skip-link{position:absolute;left:-9999px;top:auto}
.skip-link:focus{
  left:16px;top:16px;z-index:2000;background:#fff;color:var(--primary);
  padding:10px 16px;border:2px solid var(--highlight);border-radius:8px;font-weight:600;
}

/* ── HERO ───────────────────────────────────────── */
.art-hero{
  background:var(--bg);position:relative;overflow:hidden;
  padding:104px 24px 48px;border-bottom:1px solid var(--line);
}
.art-hero::before{
  content:'';position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(ellipse 60% 70% at 88% 30%,rgba(60,224,0,.08) 0%,transparent 70%);
}
.art-hero-inner{max-width:var(--maxw);margin:0 auto;position:relative;z-index:1}
.art-eyebrow{
  display:inline-block;background:rgba(60,224,0,.13);border:1px solid rgba(60,224,0,.28);
  color:#2c6a00;font-size:.72rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;
  padding:7px 13px;border-radius:999px;margin-bottom:18px;
}
.art-hero h1{
  font-size:clamp(2rem,4.3vw,3.05rem);line-height:1.12;font-weight:500;
  color:var(--primary);margin:0 0 16px;max-width:24ch;letter-spacing:-.01em;
}
.art-lead{font-size:1.12rem;color:#3a3a3a;max-width:74ch;margin:0}

/* ── BREADCRUMB ─────────────────────────────────── */
.breadcrumb{
  display:flex;flex-wrap:wrap;align-items:center;gap:8px;
  list-style:none;margin:0 0 22px;padding:0;font-size:.82rem;
}
.breadcrumb li{display:flex;align-items:center}
.breadcrumb a{color:var(--muted);text-decoration:none;transition:color var(--ease)}
.breadcrumb a:hover{color:var(--highlight-dim)}
.breadcrumb [aria-current]{color:#888}
.breadcrumb-sep{color:#bbb;margin:0 2px}

/* ── LAYOUT ─────────────────────────────────────── */
.art-wrap{
  max-width:var(--maxw);margin:0 auto;padding:44px 24px 72px;
  display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:52px;align-items:start;
}
.art-body{min-width:0}

/* ── ARTICLE TYPOGRAPHY ─────────────────────────── */
.art-intro{
  background:var(--soft);border-left:3px solid var(--highlight);
  border-radius:0 var(--radius) var(--radius) 0;padding:20px 24px;margin-bottom:30px;
}
.art-intro p{margin:0;font-size:1.05rem}
.art-body section{margin-bottom:6px}
.art-body h2{
  font-size:1.62rem;line-height:1.25;font-weight:600;color:var(--primary);
  margin:42px 0 14px;padding-top:6px;scroll-margin-top:84px;letter-spacing:-.01em;
}
.art-body h2::after{
  content:'';display:block;width:42px;height:3px;background:var(--highlight);
  border-radius:2px;margin-top:12px;
}
.art-body h3{font-size:1.22rem;font-weight:600;color:#1a1a1a;margin:26px 0 10px;scroll-margin-top:84px}
.art-body p{margin:0 0 17px}
.art-body ul,.art-body ol{margin:0 0 19px;padding-left:22px}
.art-body li{margin-bottom:9px}
.art-body .ta-left{text-align:left}
.art-body :is(p,li,blockquote,h2,h3) a{color:var(--highlight-dim);text-decoration:none;border-bottom:1px solid rgba(126,190,42,.35);transition:color var(--ease),border-color var(--ease)}
.art-body :is(p,li,blockquote,h2,h3) a:hover{color:#5e9418;border-color:#5e9418}
.art-body strong{font-weight:700;color:#1c1c1c}
.art-body blockquote{
  margin:24px 0;padding:18px 22px;border-left:3px solid var(--highlight);
  background:var(--soft);border-radius:0 10px 10px 0;color:#2c2c2c;font-size:1.06rem;
}
.art-body blockquote p{margin:0}

/* stat grid (data-led articles)
   Styles every cell whether or not it carries a .stat class, so any
   <div class="stat-grid"> with <div><strong>n</strong><span>label</span></div>
   children is dressed automatically. */
.stat-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:24px 0 30px}
.stat-grid>div,.stat{
  background:#fff;border:1px solid var(--line);border-radius:14px;padding:22px 20px;
  transition:border-color var(--ease),background var(--ease);
}
.stat-grid>div:hover,.stat:hover{border-color:var(--highlight-dim);background:rgba(60,224,0,.04)}
.stat-grid>div strong,.stat strong{
  display:block;font-size:2.1rem;font-weight:600;line-height:1;color:var(--primary);
  letter-spacing:-.02em;font-variant-numeric:tabular-nums;
}
.stat-grid>div strong::after,.stat strong::after{
  content:'';display:block;width:32px;height:3px;background:var(--highlight);
  border-radius:2px;margin:10px 0 12px;
}
.stat-grid>div span,.stat span{display:block;font-size:.9rem;color:var(--muted);line-height:1.5}

/* op-bureaus: responsive panel of named-entity cards, reuses .stat cells */
.op-bureaus{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:14px;margin:24px 0 30px}
.op-bureaus .stat strong{font-size:1.05rem;letter-spacing:0}
.op-bureaus .is-key{border-color:var(--highlight-dim);background:rgba(60,224,0,.05)}

/* op-compare: two-card functional comparison (neutral, not risk/fix) */
.op-compare{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:24px 0 30px}
.op-compare-col{background:#fff;border:1px solid var(--line);border-radius:14px;padding:20px 20px 18px}
.oc-head{margin:0 0 3px;font-size:1.08rem;font-weight:700;color:var(--primary)}
.oc-sub{margin:0 0 16px;font-size:.74rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.oc-list{list-style:none;margin:0 0 16px;padding:0;display:flex;flex-direction:column;gap:10px}
.oc-list li{display:flex;gap:10px;align-items:flex-start;font-size:.92rem;line-height:1.4;color:var(--primary)}
.oc-ic{flex:none;width:17px;height:17px;margin-top:1px;stroke-width:2.5;fill:none;stroke:currentColor}
.oc-yes{color:#2c8a00}
.oc-no{color:#9aa0a6}
.oc-foot{margin:0;padding-top:13px;border-top:1px solid var(--line);font-size:.82rem;color:var(--muted);font-weight:600}

/* op-stack: segmented goal bar (cumulative stack) + source legend.
   Segment/legend colours via .op-c-a/.op-c-b/.op-c-c (--_c). */
.op-stack-top{display:flex;justify-content:space-between;align-items:baseline;margin:0 0 8px}
.op-stack-top .s0{font-size:.78rem;color:var(--muted);font-weight:600}
.op-stack-top .sg{font-size:.82rem;color:var(--primary);font-weight:700;letter-spacing:.03em}
.op-stack-bar{width:100%;height:auto;display:block}
.op-stack-bar rect{stroke:#fff;stroke-width:.35;fill:var(--_c,var(--highlight))}
.op-stack-legend{display:grid;grid-template-columns:1fr 1fr;gap:12px 20px;margin:20px 0 0;padding:0;list-style:none}
.op-stack-legend li{display:flex;gap:9px;align-items:flex-start;font-size:.9rem;font-weight:600;color:var(--primary)}
.op-stack-legend .sw{flex:none;width:13px;height:13px;border-radius:3px;margin-top:3px;background:var(--_c,var(--highlight))}
.op-stack-legend .meta{display:block;font-weight:400;font-size:.8rem;color:var(--muted);line-height:1.4;margin-top:1px}

/* op-flow: process flow (horizontal on desktop, vertical on mobile). */
.op-flow{display:flex;flex-direction:column;gap:8px;margin:24px 0 30px}
.op-flow-step{background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px 16px;flex:1}
.op-flow-step .n{display:inline-flex;width:22px;height:22px;border-radius:50%;background:#eef6e6;color:#1f6b00;border:1px solid #cfe3b8;font-size:.78rem;font-weight:700;align-items:center;justify-content:center;margin-bottom:8px}
.op-flow-step .t{display:block;font-size:.95rem;font-weight:700;color:var(--primary);line-height:1.25}
.op-flow-step .s{display:block;font-size:.82rem;color:var(--muted);margin-top:3px;line-height:1.4}
.op-flow-sep{align-self:center;color:var(--highlight-dim);font-size:1.2rem;font-weight:700;line-height:1;transform:rotate(90deg)}
.op-flow-warn{margin:16px 0 0;padding:13px 16px;background:var(--risk-soft);border:1px solid #f0cfc8;border-radius:11px;font-size:.9rem;color:var(--primary);line-height:1.5}
.op-flow-warn b{color:var(--risk)}
.op-flow-info{margin:16px 0 0;padding:13px 16px;background:var(--soft);border:1px solid var(--line);border-radius:11px;font-size:.9rem;color:var(--primary);line-height:1.5}
.op-flow-info b{color:var(--primary)}

/* op-liens: colour-coded lien-type reference cards. */
.op-liens{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:24px 0 30px}
.lien{background:#fff;border:1px solid var(--line);border-radius:12px;padding:16px}
.lien-wide{grid-column:1 / -1}
.lien-tag{display:inline-block;font-size:.68rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;padding:4px 9px;border-radius:999px;margin-bottom:10px}
.lien-tag.block{background:var(--risk-soft);color:var(--risk);border:1px solid #f0cfc8}
.lien-tag.ok{background:#eef6e6;color:#1f6b00;border:1px solid #cfe3b8}
.lien-tag.neutral{background:var(--soft);color:var(--muted);border:1px solid var(--line)}
.lien strong{display:block;font-size:1rem;font-weight:700;color:var(--primary);margin-bottom:4px}
.lien .d{display:block;font-size:.86rem;color:var(--muted);line-height:1.45}

/* op-legs: four-up labelled cards (e.g. the four bankable legs). */
.op-legs{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:24px 0 30px}
.op-leg{background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px}
.op-leg .lg{display:inline-block;font-size:.68rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#1f6b00;background:#eef6e6;border:1px solid #cfe3b8;border-radius:999px;padding:3px 8px;margin-bottom:8px}
.op-leg strong{display:block;font-size:.96rem;color:var(--primary);margin-bottom:3px}
.op-leg span{display:block;font-size:.82rem;color:var(--muted);line-height:1.4}

/* op-journey: horizontal stage timeline (vertical on mobile). */
.op-journey{display:grid;grid-template-columns:repeat(5,1fr);margin:28px 0 30px}
.op-jstage{position:relative;text-align:center;padding:0 8px}
.op-jstage::before{content:"";position:absolute;top:13px;left:0;right:0;height:2px;background:var(--line);z-index:0}
.op-jstage:first-child::before{left:50%}
.op-jstage:last-child::before{right:50%}
.op-jnum{position:relative;z-index:1;width:28px;height:28px;border-radius:50%;background:var(--highlight);color:#0f2b00;font-weight:700;font-size:.85rem;display:flex;align-items:center;justify-content:center;margin:0 auto 12px;border:3px solid #fff}
.op-jstage strong{display:block;font-size:.83rem;color:var(--primary);line-height:1.25;margin-bottom:4px}
.op-jstage .sub{display:block;font-size:.75rem;color:var(--muted);line-height:1.35}

/* op-checklist: two-column requirement checklist (reuses .oc-ic/.oc-yes). */
.op-checklist{display:grid;grid-template-columns:1fr 1fr;gap:12px 24px;margin:24px 0 30px;padding:0;list-style:none}
.op-checklist li{display:flex;gap:11px;align-items:flex-start;font-size:.92rem;line-height:1.4;color:var(--primary)}

/* op-features: responsive feature-card grid (reuses .stat cells). */
.op-features{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:14px;margin:24px 0 30px}
.op-features .stat strong{font-size:1rem;letter-spacing:0}

/* ── charts (inline SVG, reusable shell) ─────────────
   .op-chart wraps any chart; palette slots .op-c-a..d set --_c, which
   both legend swatches and donut segments read. No JS, no inline styles. */
.op-chart{border:1px solid var(--line);border-radius:14px;background:#fff;padding:24px 24px 22px;margin:24px 0 30px}
.op-chart-cap{font-size:.74rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:0 0 18px}
.op-chart-note{margin:18px 0 0;font-size:.82rem;color:var(--muted);line-height:1.5}
.op-legend{display:flex;flex-direction:column;gap:14px;margin:0;padding:0;list-style:none}
.op-legend li{display:flex;gap:11px;align-items:flex-start}
.op-legend .sw{flex:none;width:14px;height:14px;border-radius:4px;margin-top:3px;background:var(--_c,var(--highlight-dim))}
.op-legend .lab{font-size:.96rem;font-weight:600;color:var(--primary)}
.op-legend .lab b{font-variant-numeric:tabular-nums}
.op-legend .meta{display:block;font-weight:400;font-size:.84rem;color:var(--muted);line-height:1.45;margin-top:2px}
.op-donut-wrap{display:grid;grid-template-columns:200px 1fr;gap:30px;align-items:center}
.op-donut{width:200px;height:200px;flex:none}
.op-donut .track{fill:none;stroke:#eef1ea;stroke-width:7}
.op-donut .seg{fill:none;stroke-width:7;stroke-linecap:butt;stroke:var(--_c,var(--highlight))}
.op-donut .ctr-num{font:600 7px var(--font);fill:var(--primary)}
.op-donut .ctr-lab{font:700 1.9px var(--font);fill:var(--muted);letter-spacing:.1em}
.op-c-a{--_c:#3CE000}
.op-c-b{--_c:#1f6b00}
.op-c-c{--_c:#9ccc63}
.op-c-d{--_c:#5e9418}

/* infographic: one hero number + contributor rows (red flag -> fix) */
.op-info{display:grid;grid-template-columns:200px 1fr;gap:26px;align-items:stretch}
.op-info-hero{background:var(--risk-soft);border:1px solid #f0cfc8;border-radius:13px;padding:22px 18px;display:flex;flex-direction:column;justify-content:center;text-align:center}
.op-info-hero .big{font-size:2.4rem;font-weight:700;line-height:1;color:var(--risk);letter-spacing:-.02em;font-variant-numeric:tabular-nums;white-space:nowrap}
.op-info-hero .cap{display:block;margin-top:8px;font-size:.78rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--risk)}
.op-info-list{display:flex;flex-direction:column;gap:13px;justify-content:center;margin:0;padding:0}
.op-info-head,.op-info-row{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:12px}
.op-info-head span{font-size:.7rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}
.op-info-head .h-risk{color:var(--risk)}
.op-info-head .h-fix{color:var(--safe)}
.op-info-row .risk-side,.op-info-row .fix-side{display:flex;align-items:center;gap:9px;font-size:.92rem}
.op-info-row .risk-side{color:var(--primary);font-weight:600}
.op-info-row .fix-side{color:var(--muted);font-weight:500}
.op-info-row .fix-side b{color:var(--safe);font-weight:600}
.op-info .dot{flex:none;width:9px;height:9px;border-radius:50%}
.op-info .dot.r{background:var(--risk)}
.op-info .dot.g{background:var(--safe)}
.op-info .arrow{flex:none;color:var(--highlight-dim);font-weight:700}

/* horizontal bar chart: SVG fill (rect width attr) + value in its own column */
.op-bc{display:flex;flex-direction:column;gap:14px;margin:0}
.bc-row{display:grid;grid-template-columns:190px 1fr 58px;gap:14px;align-items:center}
.bc-lab{font-size:.92rem;font-weight:600;color:var(--primary);text-align:right;line-height:1.25}
.bc-lab small{display:block;font-weight:400;font-size:.78rem;color:var(--muted);margin-top:1px}
.bc-lab.good{color:var(--safe)}
.bc-track{height:30px}
.bc-svg{width:100%;height:100%;display:block;border-radius:7px;overflow:hidden}
.bc-svg .bc-base{fill:var(--track)}
.bc-svg .bc-bar{fill:var(--risk)}
.bc-svg .bc-bar-tail{fill:var(--risk-tail)}
.bc-svg .bc-bar.good{fill:var(--safe)}
.bc-val{font-size:.85rem;font-weight:700;color:var(--primary);font-variant-numeric:tabular-nums}
.bc-axis-row{display:grid;grid-template-columns:190px 1fr 58px;gap:14px;margin-top:8px}
.bc-axis{grid-column:2;display:flex;justify-content:space-between;border-top:1px solid var(--line);padding-top:4px}
.bc-axis span{font-size:.7rem;color:var(--muted);font-variant-numeric:tabular-nums}

/* SBSS-style scoring gauge (horizontal 0-300 scale) */
.op-gauge{width:100%;height:auto;display:block}
.op-gauge .g-red{fill:var(--risk)}
.op-gauge .g-green{fill:var(--safe)}
.op-gauge .g-line{stroke:var(--primary);stroke-width:1.4}
.op-gauge .g-numr{fill:var(--risk);font:700 8px var(--font)}
.op-gauge .g-numg{fill:#2c8a00;font:700 8px var(--font)}
.op-gauge .g-tk{fill:var(--muted);font:400 7px var(--font)}
.op-gauge-zlabs{display:grid;grid-template-columns:55% 45%;gap:10px;margin-top:8px}
.op-gauge-zlabs div{font-size:.82rem;line-height:1.35}
.op-gauge-zlabs .l{color:var(--risk);font-weight:600}
.op-gauge-zlabs .r{color:var(--safe);font-weight:600;text-align:right}
.op-gauge-zlabs small{display:block;color:var(--muted);font-weight:400;margin-top:1px}

/* callout / author-note */
.callout{padding:18px 22px;background:#fffdf3;border:1px solid #efe4ba;border-radius:12px;margin:24px 0}
.callout strong{color:#7a5b00}
.author-note{padding:20px 22px;background:var(--soft);border:1px solid var(--line);border-radius:12px;margin:30px 0 0}
.author-note p{margin:0}

/* ── END-OF-ARTICLE CTA ─────────────────────────── */
.art-cta{
  position:relative;overflow:hidden;text-align:center;
  margin:48px 0 0;padding:44px 36px;
  color:#fff;border-radius:20px;
  background:
    radial-gradient(130% 150% at 50% -25%, rgba(60,224,0,.20) 0%, rgba(60,224,0,0) 55%),
    linear-gradient(168deg,#2a2a2a 0%,#1c1c1c 58%,#151515 100%);
  border:1px solid rgba(255,255,255,.09);
  box-shadow:0 22px 56px -20px rgba(0,0,0,.6), inset 0 1px 0 rgba(255,255,255,.06);
}
/* glowing green keyline at the top edge */
.art-cta::before{
  content:"";position:absolute;top:0;left:50%;transform:translateX(-50%);
  width:72px;height:4px;border-radius:0 0 4px 4px;
  background:var(--highlight);box-shadow:0 0 20px rgba(60,224,0,.75);
}
.art-cta h2{margin:16px 0 10px;font-size:1.65rem;font-weight:600;color:#fff;letter-spacing:-.01em}
.art-cta h2::after{display:none}
.art-cta p{margin:0 auto 26px;color:#d2d2d2;max-width:52ch;font-size:1.03rem}
.art-cta-actions{display:flex;flex-wrap:wrap;gap:14px;justify-content:center}

.art-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:7px;
  font-size:.96rem;font-weight:700;
  padding:13px 28px;border-radius:999px;text-decoration:none;
  transition:background var(--ease),box-shadow var(--ease),color var(--ease),border-color var(--ease);
}
/* green button: pure-black label + lift so the bright green stays legible */
.art-btn-primary{background:var(--highlight);color:#0a0a0b;box-shadow:0 8px 22px -6px rgba(60,224,0,.6)}
.art-btn-primary:hover{background:#34c900;color:#0a0a0b;box-shadow:0 10px 26px -6px rgba(60,224,0,.75)}
.art-btn-ghost{background:rgba(255,255,255,.05);color:#fff;border:1px solid rgba(255,255,255,.38)}
.art-btn-ghost:hover{border-color:#fff;background:rgba(255,255,255,.11)}

/* ── PREV / NEXT ────────────────────────────────── */
.art-prevnext{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:34px}
.art-pn{
  display:block;padding:18px 20px;border:1px solid var(--line);border-radius:12px;
  text-decoration:none;color:var(--primary);background:#fff;transition:border-color var(--ease),background var(--ease);
}
.art-pn:hover{border-color:var(--highlight-dim);background:#fcfdfa}
.art-pn .pn-label{display:block;font-size:.72rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:6px}
.art-pn .pn-title{font-size:.98rem;font-weight:600;line-height:1.35}
.art-pn.next{text-align:right}

.art-backtohub{display:inline-flex;align-items:center;gap:7px;margin-top:26px;font-size:.92rem;font-weight:600;color:var(--highlight-dim);text-decoration:none}
.art-backtohub:hover{color:#5e9418}

/* ── SIDEBAR ────────────────────────────────────── */
.art-aside{position:sticky;top:88px;display:flex;flex-direction:column;gap:18px}
.aside-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:20px}
.aside-card h2,.aside-card h3{margin:0 0 12px;font-size:.74rem;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--muted)}
.aside-card h2::after{display:none}
.toc-card a{display:block;padding:7px 0;font-size:.9rem;color:#3a3a3a;text-decoration:none;border-bottom:1px solid #eee;transition:color var(--ease)}
.toc-card a:last-child{border-bottom:none}
.toc-card a:hover{color:var(--highlight-dim)}
.related-card a{display:block;padding:9px 0;font-size:.9rem;line-height:1.4;color:var(--primary);text-decoration:none;border-bottom:1px solid #eee;transition:color var(--ease)}
.related-card a:last-child{border-bottom:none}
.related-card a:hover{color:var(--highlight-dim)}
.aside-cta{background:var(--soft);border:1px solid rgba(60,224,0,.25)}
.aside-cta p{margin:0 0 14px;font-size:.92rem;color:#333}
.aside-cta .art-btn{padding:10px 18px;font-size:.88rem;width:100%;justify-content:center}

/* ══════════════════════════════════════════════════
   HUB (articles index)
══════════════════════════════════════════════════ */
.hub-wrap{max-width:var(--maxw);margin:0 auto;padding:44px 24px 72px}
.hub-intro{max-width:74ch;margin:0 0 12px;color:#3a3a3a;font-size:1.06rem}
.hub-cluster{margin-top:52px}
.hub-cluster:first-of-type{margin-top:8px}
.hub-cluster-head{margin-bottom:20px;padding-bottom:14px;border-bottom:1px solid var(--line)}
.hub-cluster-head h2{font-size:1.4rem;font-weight:600;color:var(--primary);margin:0 0 6px}
.hub-cluster-head p{margin:0;color:var(--muted);font-size:.96rem;max-width:70ch}
.hub-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:18px}
.hub-card{
  display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);
  border-radius:var(--radius);padding:22px 22px 20px;text-decoration:none;
  transition:border-color var(--ease),background var(--ease);
}
.hub-card:hover{border-color:var(--highlight-dim);background:#fcfdfa}
.hub-card-kicker{font-size:.7rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--highlight-dim);margin-bottom:9px}
.hub-card h3{margin:0 0 9px;font-size:1.12rem;font-weight:600;line-height:1.3;color:var(--primary)}
.hub-card p{margin:0 0 16px;font-size:.92rem;color:var(--muted);line-height:1.55;flex:1}
.hub-card .hub-read{font-size:.86rem;font-weight:600;color:var(--highlight-dim)}

/* ══════════════════════════════════════════════════
   RESPONSIVE
══════════════════════════════════════════════════ */
@media (max-width:980px){
  .art-wrap{grid-template-columns:1fr;gap:36px}
  .art-aside{position:static;flex-direction:column}
  .art-prevnext{grid-template-columns:1fr}
}
@media (max-width:600px){
  body{font-size:16px}
  .art-hero{padding:96px 20px 40px}
  .art-wrap{padding:32px 20px 56px}
  .stat-grid{grid-template-columns:1fr}
  .op-donut-wrap{grid-template-columns:1fr;justify-items:center;gap:22px;text-align:left}
  .op-compare{grid-template-columns:1fr}
  .op-stack-legend{grid-template-columns:1fr}
  .op-liens{grid-template-columns:1fr}
  .op-legs{grid-template-columns:1fr 1fr}
  .op-checklist{grid-template-columns:1fr}
  .op-info{grid-template-columns:1fr;gap:18px}
  .op-info-head{display:none}
  .op-info-row{grid-template-columns:1fr;gap:4px}
  .op-info .arrow{display:none}
  .op-info-row .fix-side{padding-left:18px}
  .bc-row{grid-template-columns:1fr auto;grid-template-areas:"lab val" "bar bar";gap:6px 10px}
  .bc-lab{grid-area:lab;text-align:left}
  .bc-val{grid-area:val;text-align:right}
  .bc-track{grid-area:bar}
  .bc-axis-row{display:none}
  .art-cta{padding:26px 22px}
  .art-pn.next{text-align:left}
}

/* ── op-funnel ─────────────────────────────────────────────
   Filter-funnel infographic (intro count → gates → result).
   Lives inside .op-chart. Filters render as the HTML list below
   the SVG (.op-funnel-gates) so text never crowds the bands. */
.op-funnel{width:100%;max-width:440px;height:auto;display:block;margin:4px auto 0}
.op-funnel .ff-body{fill:var(--soft);stroke:var(--line);stroke-width:1.5}
.op-funnel .ff-gate{stroke:#c9c4b5;stroke-width:1.4;stroke-dasharray:4 4}
.op-funnel .ff-stem{stroke:var(--line);stroke-width:1.5}
.op-funnel .ff-badge{fill:#fff;stroke:#1f6b00;stroke-width:1.5}
.op-funnel .ff-badge-num{font:700 13px var(--font);fill:#1f6b00}
.op-funnel .ff-top-num{font:600 30px var(--font);fill:var(--primary)}
.op-funnel .ff-top-lab{font:700 11px var(--font);fill:var(--muted);letter-spacing:.08em}
.op-funnel .ff-result{fill:var(--highlight)}
.op-funnel .ff-result-num{font:700 26px var(--font);fill:#0f2b00}
.op-funnel .ff-result-lab{font:700 11px var(--font);fill:#0f2b00;letter-spacing:.06em}
.op-funnel-sub{font-size:.74rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:24px 0 14px}
.op-funnel-gates{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}
.op-funnel-gates li{display:flex;gap:12px;align-items:flex-start;font-size:.96rem;font-weight:600;color:var(--primary)}
.op-funnel-gates .g-num{flex:none;width:24px;height:24px;border-radius:50%;background:#eef6e6;color:#1f6b00;font-size:.82rem;font-weight:700;display:flex;align-items:center;justify-content:center;border:1px solid #cfe3b8}

@media(min-width:601px){.op-flow{flex-direction:row;align-items:stretch}.op-flow-sep{transform:none}}

@media(max-width:600px){
  .op-journey{grid-template-columns:1fr}
  .op-jstage{text-align:left;padding:0 0 20px 42px}
  .op-jstage::before{top:0;bottom:0;left:13px;right:auto;width:2px;height:auto}
  .op-jstage:first-child::before{top:14px;left:13px}
  .op-jstage:last-child::before{bottom:auto;height:14px;left:13px}
  .op-jnum{position:absolute;left:0;top:0;margin:0}
}
