@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/IBMPlexSans-Regular.woff2) format('woff2')}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/IBMPlexSans-SemiBold.woff2) format('woff2')}
/* Closing Numbers — site.css v1
   One stylesheet for every page. Dark-first. No framework, no icon font.
   Font: IBM Plex Sans 400 + 600 (Google Fonts or self-hosted). */

/* ---------- 1. Tokens ---------- */
:root{
  /* colour — same family as the videos */
  --bg:#0d1117;          /* page + video background */
  --surface:#161b22;     /* cards, tables */
  --raised:#1c2128;      /* hover rows, active tab */
  --line:#30363d;        /* hairlines, control borders */
  --line-soft:#21262d;   /* quiet dividers */
  --text:#f0f6fc;        /* primary text   17.4:1 on bg */
  --text-2:#c9d1d9;      /* long-form text 12.3:1 on bg */
  --muted:#8b949e;       /* secondary text  6.2:1 on bg, 5.6:1 on surface */
  --accent:#1f6feb;      /* brand blue: fills, bars, primary button (white text 4.6:1) */
  --accent-press:#1158c7;
  --link:#58a6ff;        /* blue for TEXT on dark: 7.5:1 (accent alone is only 4.0:1) */
  --accent-tint:rgba(56,139,253,.14);
  --rank:#d2a8ff;        /* Rankings track colour */
  --up:#3fb950;          /* positive change 7.6:1 */
  --down:#f85149;        /* negative change 5.1:1 */
  --flat:#8b949e;
  --focus:#58a6ff;

  /* type */
  --font:'IBM Plex Sans',system-ui,-apple-system,'Segoe UI',Roboto,Arial,sans-serif;
  --fs-xs:.75rem;   /* 12 */
  --fs-sm:.875rem;  /* 14 */
  --fs-md:1rem;     /* 16 */
  --fs-lg:1.125rem; /* 18 */
  --fs-xl:1.5rem;   /* 24 */
  --fs-2xl:2rem;    /* 32 */
  --fs-3xl:2.75rem; /* 44 */
  --fs-stat:clamp(3.5rem,11vw,6.5rem);

  /* space (4-pt) */
  --sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:24px;--sp-6:32px;--sp-7:48px;--sp-8:64px;--sp-9:96px;

  /* shape */
  --r-sm:4px;--r:8px;--r-lg:12px;--r-pill:999px;
  --shadow:0 1px 0 rgba(240,246,252,.04) inset,0 16px 40px -16px rgba(1,4,9,.7);

  /* layout */
  --wrap:1180px;--measure:68ch;--gutter:16px;
  color-scheme:dark;
}
@media (min-width:720px){:root{--gutter:32px}}

/* ---------- 2. Base ---------- */
*,*::before,*::after{box-sizing:border-box}
html{background:var(--bg);-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--text);font:400 var(--fs-md)/1.55 var(--font);font-variant-numeric:tabular-nums lining-nums;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
h1,h2,h3{margin:0;font-weight:600;line-height:1.15;letter-spacing:-.015em;text-wrap:balance}
p{margin:0;text-wrap:pretty}
img{max-width:100%;display:block}
a{color:var(--link);text-decoration:underline;text-decoration-color:rgba(88,166,255,.4);text-underline-offset:3px;text-decoration-thickness:1px}
a:hover{text-decoration-color:currentColor}
:focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-radius:var(--r-sm)}
.i{width:20px;height:20px;flex:none;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}
.i-fill{fill:currentColor;stroke:none}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:absolute;left:-9999px;top:8px;z-index:10;background:var(--accent);color:#fff;padding:10px 14px;border-radius:var(--r)}
.skip:focus{left:var(--gutter)}
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 var(--gutter)}
.narrow{max-width:820px}
.up{color:var(--up)}.down{color:var(--down)}.flat{color:var(--flat)}
.muted{color:var(--muted)}

/* ---------- 3. Shell ---------- */
.site-header{border-bottom:1px solid var(--line-soft)}
.site-header .wrap{display:flex;flex-wrap:wrap;align-items:center;gap:0 var(--sp-4);min-height:64px}
.brand{display:inline-flex;align-items:center;gap:10px;min-height:44px;color:var(--text);text-decoration:none;font-weight:600;font-size:1.0625rem;letter-spacing:-.01em}
.brand .mark{width:28px;height:28px}
.mark-rect{fill:var(--accent)}
.mark-stroke{fill:none;stroke:#fff;stroke-width:3.5;stroke-linecap:butt}
.nav{order:3;display:flex;gap:var(--sp-1);width:100%;margin:0 calc(var(--sp-3) * -1);padding-bottom:var(--sp-1)}
.nav a{display:inline-flex;align-items:center;min-height:44px;padding:0 var(--sp-3);border-radius:var(--r);color:var(--muted);text-decoration:none;font-size:var(--fs-sm);font-weight:600}
.nav a:hover{color:var(--text);background:var(--surface)}
.nav a[aria-current="page"]{color:var(--text);box-shadow:inset 0 -2px 0 var(--accent);border-radius:0}
.header-yt{margin-left:auto}
@media (min-width:720px){
  .nav{order:0;width:auto;margin:0 0 0 auto;padding:0}
  .header-yt{margin-left:var(--sp-2)}
}
.site-footer{margin-top:var(--sp-8);border-top:1px solid var(--line-soft);padding:var(--sp-7) 0 var(--sp-6);font-size:var(--fs-sm);color:var(--muted)}
.footer-top{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:var(--sp-5)}
.footer-tag{margin-top:var(--sp-2);max-width:36ch}
.footer-links{display:flex;flex-wrap:wrap;gap:0 var(--sp-5)}
.footer-links a{display:inline-flex;align-items:center;min-height:44px;color:var(--text);text-decoration:none}
.footer-links a:hover{text-decoration:underline}
.footer-legal{margin-top:var(--sp-5);padding-top:var(--sp-5);border-top:1px solid var(--line-soft);display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--sp-2) var(--sp-5)}

/* ---------- 4. Buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);min-height:44px;padding:0 18px;border:1px solid transparent;border-radius:var(--r);font:600 var(--fs-sm)/1 var(--font);text-decoration:none;white-space:nowrap;cursor:pointer;transition:background-color .15s,border-color .15s,color .15s}
.btn .i{width:18px;height:18px}
.btn-primary{background:var(--accent);color:#fff}
.btn-primary:hover,.btn-primary.is-hover{background:var(--accent-press)}
.btn-secondary{background:var(--surface);color:var(--text);border-color:var(--line)}
.btn-secondary:hover,.btn-secondary.is-hover{background:var(--raised);border-color:#484f58}
.btn-ghost{background:transparent;color:var(--link);padding:0 var(--sp-3)}
.btn-ghost:hover,.btn-ghost.is-hover{background:var(--accent-tint)}
.btn.is-focus{outline:2px solid var(--focus);outline-offset:2px}
.btn:disabled,.btn[aria-disabled="true"]{opacity:.45;cursor:not-allowed;pointer-events:none}
.btn-icon{width:44px;padding:0}
@media (max-width:719px){.header-yt .label{display:none}.header-yt{width:44px;padding:0}}

/* ---------- 5. Badges ---------- */
.badge{display:inline-flex;align-items:center;gap:6px;height:22px;padding:0 8px;border:1px solid;border-radius:var(--r-sm);font-size:11px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;white-space:nowrap}
.badge::before{content:"";width:6px;height:6px;border-radius:1px;background:currentColor}
.badge-markets{color:var(--link);border-color:rgba(88,166,255,.35);background:rgba(56,139,253,.08)}
.badge-rankings{color:var(--rank);border-color:rgba(210,168,255,.35);background:rgba(163,113,247,.08)}
.badge-top{color:var(--text);border-color:var(--line);background:var(--raised)}
.badge-top::before{display:none}

/* ---------- 6. Stat ---------- */
.stat{display:grid;gap:var(--sp-2);align-content:start}
.stat-label{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2);font-size:var(--fs-sm);color:var(--muted)}
.stat-value{display:flex;align-items:center;gap:.1em;font-size:var(--fs-stat);font-weight:600;line-height:.95;letter-spacing:-.04em}
.stat-value .tri{width:.36em;height:.36em;fill:currentColor;margin-right:.06em}
.stat-unit{margin-left:.22em;font-size:.34em;font-weight:400;letter-spacing:0;color:var(--muted);align-self:flex-end;padding-bottom:.18em}
.stat-sub{font-size:var(--fs-lg);color:var(--muted)}
.stat-sub strong{color:var(--text);font-weight:600}
.stat-sm .stat-value{font-size:var(--fs-3xl);letter-spacing:-.03em}
.stat-sm .stat-sub{font-size:var(--fs-sm)}

/* ---------- 7. Home ---------- */
.hero{padding:var(--sp-8) 0 var(--sp-7);display:grid;gap:var(--sp-5)}
.eyebrow{display:inline-flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-sm);color:var(--muted)}
.dot{width:8px;height:8px;border-radius:2px;background:var(--accent)}
.hero h1{font-size:clamp(2.25rem,6.2vw,4.25rem);letter-spacing:-.035em;line-height:1.02;max-width:15ch}
.hero-dek{font-size:var(--fs-lg);color:var(--muted);max-width:54ch}
.hero-actions{display:flex;flex-wrap:wrap;gap:var(--sp-3)}
.section{padding:var(--sp-6) 0}
.section-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:var(--sp-2) var(--sp-4);margin-bottom:var(--sp-4)}
.section-title{font-size:var(--fs-sm);font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.section-link{font-size:var(--fs-sm);font-weight:600;display:inline-flex;align-items:center;gap:4px;min-height:44px}
.latest{display:grid;gap:var(--sp-5);grid-template-columns:repeat(auto-fit,minmax(min(440px,100%),1fr))}

/* ---------- 8. Card ---------- */
.card{display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--line-soft);border-radius:var(--r-lg);overflow:hidden;transition:border-color .15s}
.card:hover{border-color:var(--line)}
.card-media{position:relative;display:block;aspect-ratio:16/9;background:#010409;border-bottom:1px solid var(--line-soft)}
.card-media img{width:100%;height:100%;object-fit:cover}
.card-body{flex:1;display:grid;gap:var(--sp-4);align-content:start;padding:var(--sp-5)}
.card-meta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2) var(--sp-3);font-size:var(--fs-sm);color:var(--muted)}
.card-title{font-size:var(--fs-lg);line-height:1.3;letter-spacing:-.01em}
.card-title a{color:var(--text);text-decoration:none}
.card-title a:hover{text-decoration:underline}
.card-actions{display:flex;flex-wrap:wrap;gap:var(--sp-3);margin-top:var(--sp-1)}

/* ---------- 9. Ledger (recent list + archive) ---------- */
.ledger{list-style:none;margin:0;padding:0;border-top:1px solid var(--line-soft)}
.ledger li{border-bottom:1px solid var(--line-soft)}
.ledger a{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:var(--sp-2) var(--sp-4);min-height:56px;padding:var(--sp-3) var(--sp-2);color:var(--text);text-decoration:none;transition:background-color .15s}
.ledger a:hover{background:var(--surface)}
.ledger .meta{display:flex;align-items:center;gap:var(--sp-3);width:13.5rem}
.ledger time{font-size:var(--fs-sm);color:var(--muted);width:6.25rem}
.ledger .title{min-width:0}
.ledger .chg{font-size:var(--fs-sm);font-weight:600}
.ledger .chev{color:var(--muted);width:18px;height:18px}
@media (max-width:719px){
  .ledger a{grid-template-columns:1fr auto;padding:var(--sp-3) 0}
  .ledger .meta{width:auto;grid-column:1}
  .ledger .title{grid-column:1}
  .ledger .chev{grid-column:2;grid-row:1 / span 2}
}
.month{display:grid;gap:var(--sp-3);margin-top:var(--sp-7)}
.month-head{display:flex;justify-content:space-between;align-items:baseline;gap:var(--sp-4)}
.month-head h2{font-size:var(--fs-xl)}
.month-head span{font-size:var(--fs-sm);color:var(--muted)}
.tabs{display:inline-flex;gap:var(--sp-1);padding:var(--sp-1);background:var(--surface);border:1px solid var(--line-soft);border-radius:10px}
.tabs a{display:inline-flex;align-items:center;gap:var(--sp-2);min-height:40px;padding:0 var(--sp-4);border-radius:7px;color:var(--muted);text-decoration:none;font-size:var(--fs-sm);font-weight:600}
.tabs a:hover{color:var(--text)}
.tabs a[aria-current="page"]{background:var(--raised);color:var(--text);box-shadow:inset 0 0 0 1px var(--line)}
.tabs .count{font-weight:400;color:var(--muted)}

/* ---------- 10. Trust strip + newsletter ---------- */
.trust{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(260px,100%),1fr));gap:1px;background:var(--line-soft);border:1px solid var(--line-soft);border-radius:var(--r-lg);overflow:hidden}
.trust li{display:grid;gap:6px;align-content:start;padding:var(--sp-5);background:var(--bg)}
.trust .i{color:var(--link);width:22px;height:22px;margin-bottom:var(--sp-1)}
.trust strong{font-weight:600}
.trust p{font-size:var(--fs-sm);color:var(--muted)}
.newsletter{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(340px,100%),1fr));align-items:center;gap:var(--sp-5) var(--sp-7);padding:var(--sp-6);background:var(--surface);border:1px solid var(--line-soft);border-radius:var(--r-lg)}
.newsletter h2{font-size:var(--fs-xl)}
.newsletter p{margin-top:var(--sp-2);color:var(--muted)}
.field{display:grid;gap:6px}
.field label{font-size:var(--fs-sm);font-weight:600}
.form-row{display:flex;flex-wrap:wrap;gap:var(--sp-3)}
.input{flex:1 1 220px;width:100%;min-width:0;height:44px;padding:0 14px;background:var(--bg);border:1px solid var(--line);border-radius:var(--r);color:var(--text);font:inherit;font-size:var(--fs-md)}
.input::placeholder{color:var(--muted)}
.input:hover,.input.is-hover{border-color:#484f58}
.input:focus,.input.is-focus{outline:none;border-color:var(--focus);box-shadow:0 0 0 3px rgba(88,166,255,.3)}
.input.is-error{border-color:var(--down)}
.hint{font-size:var(--fs-xs);color:var(--muted)}
.hint.is-error{color:var(--down)}
.hint.is-ok{color:var(--up)}

/* ---------- 11. Data pages ---------- */
.crumbs{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2);padding-top:var(--sp-5);font-size:var(--fs-sm);color:var(--muted)}
.crumbs a{color:var(--muted);text-decoration:none}
.crumbs a:hover{color:var(--text);text-decoration:underline}
.page-head{display:grid;gap:var(--sp-3);padding:var(--sp-4) 0 var(--sp-6)}
.page-title{font-size:clamp(1.625rem,4vw,2.5rem);letter-spacing:-.025em;max-width:28ch}
.page-dek{color:var(--muted);max-width:var(--measure)}
.lead{display:grid;gap:var(--sp-6);grid-template-columns:minmax(0,1fr);grid-template-areas:"stat" "table" "video"}
.lead-stat{grid-area:stat}.lead-table{grid-area:table}.lead-video{grid-area:video}
@media (min-width:960px){
  .lead{grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);grid-template-areas:"stat video" "table video";column-gap:var(--sp-7)}
  .lead-wide{grid-template-areas:"stat video" "table table"}
}
.stat-row{display:flex;flex-wrap:wrap;gap:var(--sp-5) var(--sp-7);align-items:flex-end}
.breadth{display:grid;gap:var(--sp-2);min-width:220px;flex:1;max-width:340px;font-size:var(--fs-sm);color:var(--muted)}
.breadth-bar{display:flex;height:6px;gap:2px}
.breadth-bar span{display:block;height:100%;border-radius:2px}
.breadth-bar .adv{background:var(--up)}.breadth-bar .dec{background:var(--down)}
.breadth-legend{display:flex;justify-content:space-between;gap:var(--sp-3)}
.breadth-legend strong{color:var(--text);font-weight:600}
.video{display:grid;gap:var(--sp-3);align-content:start}
.video-frame{position:relative;aspect-ratio:16/9;overflow:hidden;background:#010409;border:1px solid var(--line-soft);border-radius:var(--r-lg)}
.video-frame img,.video-frame iframe{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border:0}
.video-cta{position:absolute;left:var(--sp-4);bottom:var(--sp-4);box-shadow:var(--shadow)}
.video-note{display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--sp-2);font-size:var(--fs-xs);color:var(--muted)}
.blocks{display:grid;gap:var(--sp-7) var(--sp-6);grid-template-columns:repeat(auto-fit,minmax(min(480px,100%),1fr));align-items:start;padding:var(--sp-7) 0 var(--sp-6)}
.block{display:grid;gap:var(--sp-3);align-content:start}
.block-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:var(--sp-1) var(--sp-3)}
.block-title{font-size:var(--fs-lg)}
.block-note{font-size:var(--fs-xs);color:var(--muted)}
.after{display:grid;gap:var(--sp-6);max-width:820px}
.after h2{font-size:var(--fs-lg)}
.movement{display:flex;flex-wrap:wrap;gap:var(--sp-2) var(--sp-5);font-size:var(--fs-sm);color:var(--muted)}
.movement strong{color:var(--text);font-weight:600}

/* ---------- 12. Data table ---------- */
.table-wrap{overflow-x:auto;background:var(--surface);border:1px solid var(--line-soft);border-radius:var(--r-lg);-webkit-overflow-scrolling:touch}
.data{width:100%;border-collapse:separate;border-spacing:0;font-size:var(--fs-sm)}
.data caption{text-align:left}
.data th,.data td{padding:11px 14px;text-align:right;white-space:nowrap;border-bottom:1px solid var(--line-soft);background:var(--surface);transition:background-color .1s}
.data tbody tr:last-child>*{border-bottom:0}
.data thead th{padding-top:10px;padding-bottom:10px;font-size:11px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--muted)}
.data th:first-child,.data td:first-child{position:sticky;left:0;z-index:1;text-align:left}
.data tbody th{font-weight:400}
.data tbody tr:hover>*{background:var(--raised)}
.data .sym{margin-left:6px;font-size:var(--fs-xs);color:var(--muted)}
.data .strong{font-weight:600}
.data .is-key>*{font-weight:600}
.data .group>*{padding-top:14px;padding-bottom:6px;background:var(--bg);font-size:11px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--muted);text-align:left}
.data .rank{width:2.75rem;color:var(--muted)}
.data .rank+th,.data .rank+td{position:sticky;left:2.75rem;z-index:1;text-align:left}
.data .bar-col{width:38%;min-width:140px}
.data .empty td{padding:var(--sp-6);text-align:center;white-space:normal;color:var(--muted)}
@media (max-width:559px){
  .data th,.data td{padding:10px}
  .data tbody th{white-space:normal}
  .data .sym{display:block;margin:2px 0 0}
  .data .bar-col{width:auto;min-width:64px}
  /* .stack: rows become two-line cards on phones (rankings) */
  .data.stack thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
  .data.stack tr{display:grid;grid-template-columns:2rem minmax(0,1fr) auto;gap:6px 10px;align-items:baseline;padding:14px 12px;border-bottom:1px solid var(--line-soft)}
  .data.stack tbody tr:last-child{border-bottom:0}
  .data.stack th,.data.stack td{display:block;position:static;padding:0;border:0;background:none;text-align:left;white-space:normal}
  .data.stack .rank{grid-area:1 / 1 / 4 / 2;width:auto}
  .data.stack .c-name{grid-area:1 / 2}
  .data.stack .c-now{grid-area:1 / 3;text-align:right;font-weight:600}
  .data.stack .bar-col{grid-area:2 / 2 / 3 / 4;min-width:0}
  .data.stack .c-then{grid-area:3 / 2;font-size:var(--fs-xs);color:var(--muted)}
  .data.stack .c-chg{grid-area:3 / 3;text-align:right;font-size:var(--fs-xs)}
  .data.stack [data-label]::before{content:attr(data-label) " "}
}
.dbar{display:flex;align-items:center;height:10px}
.dbar span{flex:1;display:flex;height:100%}
.dbar .neg{justify-content:flex-end;border-right:1px solid var(--line)}
.dbar i{display:block;height:100%}
.dbar .neg i{background:var(--down);border-radius:2px 0 0 2px}
.dbar .pos i{background:var(--up);border-radius:0 2px 2px 0}
.hbar{display:block;height:8px;background:var(--line-soft);border-radius:2px;overflow:hidden}
.hbar i{display:block;height:100%;background:var(--accent);border-radius:2px}

/* ---------- 13. Sources, narration, disclaimer ---------- */
.sources{list-style:none;margin:0;padding:0;display:grid;gap:var(--sp-2);grid-template-columns:repeat(auto-fit,minmax(min(240px,100%),1fr))}
.sources a{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);min-height:52px;padding:var(--sp-3) var(--sp-4);background:var(--surface);border:1px solid var(--line-soft);border-radius:var(--r);color:var(--text);text-decoration:none;font-size:var(--fs-sm)}
.sources a:hover{border-color:var(--line)}
.sources .host{display:block;margin-top:2px;font-size:var(--fs-xs);color:var(--muted)}
.sources .i{width:16px;height:16px;color:var(--muted)}
.narration{background:var(--surface);border:1px solid var(--line-soft);border-radius:var(--r-lg)}
.narration summary{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);min-height:56px;padding:var(--sp-3) var(--sp-5);list-style:none;cursor:pointer;font-weight:600;border-radius:var(--r-lg)}
.narration summary::-webkit-details-marker{display:none}
.narration summary .meta{margin-left:auto;font-weight:400;font-size:var(--fs-sm);color:var(--muted)}
.narration summary .i{transition:transform .15s;color:var(--muted)}
.narration[open] summary .i{transform:rotate(180deg)}
.narration-body{display:grid;gap:var(--sp-3);max-width:var(--measure);padding:0 var(--sp-5) var(--sp-5);color:var(--text-2);line-height:1.7}
.disclaimer{display:flex;gap:var(--sp-3);align-items:flex-start;padding:var(--sp-3) var(--sp-4);border:1px solid var(--line);border-radius:var(--r);font-size:var(--fs-sm);color:var(--muted)}
.disclaimer .i{width:18px;height:18px;margin-top:1px}

/* ---------- 14. Pager, share, affiliate ---------- */
.pager{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(280px,100%),1fr));gap:var(--sp-3)}
.pager a,.pager .none{display:grid;gap:var(--sp-1);padding:var(--sp-4);border:1px solid var(--line-soft);border-radius:var(--r-lg);background:var(--surface);color:var(--text);text-decoration:none;font-size:var(--fs-sm)}
.pager a:hover{border-color:var(--line)}
.pager .dir{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--muted)}
.pager .dir .i{width:14px;height:14px}
.pager .next{text-align:right;justify-items:end}
.pager .none{background:transparent;border-style:dashed;color:var(--muted)}
.share{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2)}
.share-label{margin-right:var(--sp-2);font-size:var(--fs-sm);color:var(--muted)}
.share a{display:inline-flex;align-items:center;gap:var(--sp-2);min-height:44px;padding:0 var(--sp-4);border:1px solid var(--line);border-radius:var(--r-pill);color:var(--text);text-decoration:none;font-size:var(--fs-sm)}
.share a:hover{background:var(--surface)}
.affiliate{display:grid;gap:var(--sp-3);padding:var(--sp-5);background:var(--surface);border:1px solid var(--line-soft);border-radius:var(--r-lg)}
.affiliate-head{display:flex;justify-content:space-between;align-items:center;gap:var(--sp-3)}
.affiliate h3{font-size:var(--fs-md)}
.affiliate p{font-size:var(--fs-sm);color:var(--muted)}
.aff-label{display:inline-flex;align-items:center;height:22px;padding:0 8px;border:1px solid var(--line);border-radius:var(--r-sm);font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}

/* ---------- 15. Text pages + 404 ---------- */
.doc{display:grid;gap:var(--sp-6) var(--sp-8);grid-template-columns:minmax(0,1fr);padding-bottom:var(--sp-6)}
@media (min-width:1000px){.doc{grid-template-columns:200px minmax(0,var(--measure))}}
.toc{font-size:var(--fs-sm)}
.toc p{font-size:11px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--muted);margin-bottom:var(--sp-2)}
.toc ol{list-style:none;margin:0;padding:0;display:grid;border-left:1px solid var(--line-soft)}
.toc a{display:flex;align-items:center;min-height:36px;padding:0 var(--sp-3);color:var(--muted);text-decoration:none}
.toc a:hover{color:var(--text)}
.prose{max-width:var(--measure);font-size:1.0625rem;line-height:1.75;color:var(--text-2)}
.prose h2{margin:2.2em 0 .5em;font-size:var(--fs-xl);color:var(--text);scroll-margin-top:var(--sp-5)}
.prose h2:first-child{margin-top:0}
.prose p+p,.prose p+ul,.prose ul+p{margin-top:1em}
.prose ul{padding-left:1.25em;margin:0}
.prose li+li{margin-top:.4em}
.updated{font-size:var(--fs-sm);color:var(--muted)}
.nf{padding:var(--sp-9) 0 var(--sp-8);display:grid;gap:var(--sp-5);justify-items:start}
.nf-code{font-size:clamp(4.5rem,16vw,9rem);font-weight:600;line-height:.9;letter-spacing:-.05em;color:var(--line)}
.nf h1{font-size:var(--fs-2xl)}
.nf p{color:var(--muted);max-width:48ch}
