/* Glenridge Games: tokens + base + components. Zero external requests. System fonts only.
   Dark ("the table") is the default register; prefers-color-scheme:light supplies day mode. */
:root{
  --graphite:#10201A; --graphite-2:#17291F; --graphite-3:#0A1712; --line:#2B4033;
  --paper:#10201A; --white:#17291F; --rule:#2B4033;
  --accent:#E8B13A; --accent-ink:#10201A;
  --accent-text:#E8B13A;         /* amber as TEXT: 8.7:1 on paper, 7.9:1 on surface; deepened in light mode */
  --alert:#E8B13A;               /* law and licensing flags, "Sample" tag: 8.7:1 on paper */
  --text:#EEF0E8; --muted:#9DB3A5; --link:#8CCBA6;
  --surface:#17291F; --surface-2:#1E3327; --ad-outline:#4B6657;
  --focus:#9BD6F5;
  --font-display:"Avenir Next","Century Gothic","Segoe UI Semibold","Segoe UI",system-ui,-apple-system,Roboto,Arial,sans-serif;
  --font-body:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  --font-mono:ui-monospace,"Cascadia Mono","SF Mono",Consolas,monospace;
  /* modular scale 1.25 from 16px */
  --fs-0:1rem; --fs-1:1.25rem; --fs-2:1.5625rem; --fs-3:1.953rem; --fs-4:2.441rem; --fs-5:3.052rem;
  --fs-s:.8125rem;
  /* 4px grid */
  --s1:4px; --s2:8px; --s3:12px; --s4:16px; --s5:24px; --s6:32px; --s7:48px; --s8:64px;
  --measure:68ch; --wrap:1200px; --rail:300px; --bw:1px;
}
@media (prefers-color-scheme:light){
  :root{
    --graphite:#F4F1E8; --graphite-2:#FFFFFF; --graphite-3:#E9E4D6; --line:#D6CFBC;
    --paper:#F4F1E8; --white:#FFFFFF; --rule:#D6CFBC;
    --accent-text:#7A5200;       /* 5.5:1 on #E9E4D6, 6.1:1 on paper; fills keep #E8B13A */
    --alert:#8A5A00;             /* deepened for AA text on paper: 5.3:1 */
    --text:#10201A; --muted:#4B6657; --link:#1F6B45;
    --surface:#FFFFFF; --surface-2:#E9E4D6; --ad-outline:#7C8A7E; --focus:#1F6B45;
  }
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--text);font:400 var(--fs-0)/1.55 var(--font-body)}
img,svg{max-width:100%;height:auto}
a{color:var(--link);text-decoration-thickness:2px;text-underline-offset:3px}
a:hover{background:var(--accent);color:var(--accent-ink)}
:focus-visible{outline:3px solid var(--focus);outline-offset:3px}
h1,h2,h3,h4{font-family:var(--font-display);font-weight:800;line-height:1.08;margin:0;letter-spacing:-.005em}
p{margin:0 0 var(--s4)}
ul,ol{margin:0;padding:0;list-style:none}
.skip{position:absolute;left:var(--s2);top:-100px;background:var(--accent);color:var(--accent-ink);padding:var(--s3) var(--s4);font-weight:700;z-index:99}
.skip:focus{top:var(--s2)}
.wrap{max-width:var(--wrap);margin-inline:auto;padding-inline:var(--s4)}
.vh{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* utility bar */
.util{background:var(--graphite-3);color:var(--text);font-size:var(--fs-s);border-block-end:1px solid var(--line)}
.util .wrap{display:flex;flex-wrap:wrap;gap:var(--s2) var(--s5);justify-content:space-between;align-items:center;min-block-size:44px}
.util a{color:var(--accent-text);font-weight:700;display:inline-flex;align-items:center;min-block-size:44px}
.util a:hover{background:var(--accent);color:var(--accent-ink)}
.util .ed{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.06em}

/* masthead */
.mast{background:var(--paper);border-block-end:var(--bw) solid var(--rule)}
.mast .wrap{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:0 var(--s3);padding-block:var(--s4) 0}
.logo{display:inline-flex;align-items:center;min-block-size:44px;gap:var(--s3);text-decoration:none;color:var(--text);background:none}
.logo:hover{background:none;color:var(--text)}
.logo-mark{display:block;inline-size:40px;block-size:40px;flex:none}
.logo-word{font:800 var(--fs-2)/1 var(--font-display);letter-spacing:-.02em;white-space:nowrap}
.logo-tag{margin-inline-start:var(--s2);padding-inline-start:var(--s3);border-inline-start:1px solid var(--rule);font:600 var(--fs-s)/1.3 var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}
@media (max-width:639px){.logo-tag{display:none}}
.nav{flex:1 0 100%;margin-block-start:var(--s3);border-block-start:1px solid var(--rule);margin-inline:calc(var(--s3) * -1)}
.nav ul{display:flex;flex-wrap:wrap;gap:0 var(--s1)}
.nav a{display:inline-flex;align-items:center;min-block-size:44px;padding:0 var(--s3);font:700 var(--fs-0)/1 var(--font-display);text-decoration:none}
.nav a[aria-current="page"]{box-shadow:inset 0 -4px 0 var(--accent)}
.nav a:hover{background:var(--accent);color:var(--accent-ink)}

/* market strip as a panel grid */
.market{background:var(--graphite-3);color:var(--text);border-block-end:3px solid var(--accent)}
.market .wrap{padding-block:var(--s3)}
.market-head{display:flex;justify-content:space-between;gap:var(--s3);font:600 var(--fs-s)/1.2 var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-block-end:var(--s2)}
.market-head .flag{color:var(--accent-text)}
.gauges{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}
.gauge{background:var(--graphite-2);padding:var(--s3) var(--s4)}
.gauge dt{font:600 var(--fs-s)/1.2 var(--font-mono);text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.gauge dd{margin:var(--s1) 0 0;font:800 var(--fs-4)/1 var(--font-display);color:var(--text);font-variant-numeric:tabular-nums}
.gauge dd small{font:600 var(--fs-s)/1 var(--font-mono);color:var(--muted);margin-inline-start:var(--s1)}
.gauge.warn dd{color:var(--accent-text)}

/* category tag on a tile */
.tag{display:inline-flex;align-items:center;gap:4px;background:var(--graphite-3);color:var(--text);font:700 var(--fs-s)/1 var(--font-mono);text-transform:uppercase;letter-spacing:.06em;padding:5px var(--s2);border:1px solid var(--line);margin-block-end:var(--s2)}
.tag.reg{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
.sample-tag{font:700 var(--fs-s)/1 var(--font-mono);text-transform:uppercase;color:var(--accent-text);border:1px solid currentColor;padding:2px 6px;margin-inline-start:var(--s2);white-space:nowrap}

/* item meta */
.meta{font:500 var(--fs-s)/1.4 var(--font-mono);color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.why{font-size:var(--fs-0);border-inline-start:3px solid var(--accent);padding-inline-start:var(--s3);margin-block:var(--s3)}
.why b{font:800 var(--fs-s)/1 var(--font-display);text-transform:uppercase;letter-spacing:.08em;display:block;margin-block-end:var(--s1)}
.item h2,.item h3 a{color:var(--text);text-decoration:none}
.item h2 a,.item h3 a{text-decoration:none}
.item h2 a:hover,.item h3 a:hover{text-decoration:underline;background:none}

/* layout */
main{padding-block:var(--s5) var(--s7)}

/* hero: centered headline + subhead + CTA, no photo, no split lead/secondary grid */
.hero-center{max-inline-size:760px;margin:0 auto var(--s6);padding-block:var(--s6) var(--s4);text-align:center}
.hero-center h1{font-size:var(--fs-4);line-height:1.08;letter-spacing:-.02em}
.hero-center .hl-2{color:var(--accent-text);display:block}
.hero-sub{font-size:var(--fs-1);line-height:1.5;color:var(--muted);max-inline-size:56ch;margin:var(--s4) auto 0}
.hero-cta{display:flex;flex-wrap:wrap;gap:var(--s3);justify-content:center;margin-block-start:var(--s5)}
.btn{display:inline-flex;align-items:center;min-block-size:48px;padding:0 var(--s5);font:800 var(--fs-0)/1 var(--font-display);text-decoration:none;border:var(--bw) solid transparent}
.btn-primary{background:var(--accent);color:var(--accent-ink)}
.btn-primary:hover{background:#fff;color:var(--accent-ink)}
.btn-secondary{background:none;color:var(--text);border-color:var(--line)}
.btn-secondary:hover{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}

/* bento: mixed-size coverage grid, the site's own unit board translated into a card grid.
   Category tiles vary in span the way cards and boxes vary in size. */
.bento{display:grid;grid-template-columns:1fr;gap:0;background:var(--surface);border:var(--bw) solid var(--line)}
.bento-tile{padding:var(--s5) var(--s4);display:flex;flex-direction:column;box-shadow:inset -1px -1px 0 var(--line)}
.b-top{gap:var(--s2)}
.b-top h2{font-size:var(--fs-3);margin-block-end:var(--s2);letter-spacing:-.015em}
.b-top h2 a{color:var(--text);text-decoration:underline;text-decoration-color:var(--accent-text);text-decoration-thickness:3px;text-underline-offset:6px;background:none}
.b-top h2 a:hover{background:none;color:var(--accent-text)}
.b-top h2 a:focus-visible{background:none}
.b-head{display:flex;align-items:center;gap:var(--s3);margin-block-end:var(--s3)}
.b-icon{color:var(--accent-text);flex:none;display:inline-flex}
.b-head h3{font-size:var(--fs-1)}
.b-head h3 a,.b-cat h3 a{color:var(--text);text-decoration:none}
.b-head h3 a:hover{text-decoration:underline}
.b-desc{font-size:.9375rem;color:var(--muted);margin:0}
.b-links{display:flex;flex-direction:column;gap:var(--s2)}
.b-links a{font-weight:600;color:var(--text);text-decoration:none}
.b-links a:hover{text-decoration:underline;background:none}
.b-flag{box-shadow:inset 3px 0 0 var(--accent),inset -1px -1px 0 var(--line)}
.b-board .b-head{justify-content:space-between}
.b-board .gauges{border:0;background:transparent;gap:var(--bw)}
.b-board .gauge{background:var(--graphite-3);padding:var(--s3)}
.b-board .gauge dd{font-size:var(--fs-3)}

/* ad slots: fixed reserved boxes, never styled like content */
.ad{margin-block:var(--s5);text-align:center}
.ad .cap{display:block;font:500 11px/1 var(--font-mono);text-transform:uppercase;letter-spacing:.1em;color:var(--muted);margin-block-end:var(--s1)}
.ad-box{max-inline-size:100%;margin-inline:auto;display:grid;place-items:center;border:2px dashed var(--ad-outline);background:transparent;color:var(--muted);font:500 var(--fs-s)/1 var(--font-mono);overflow:hidden}
.ad-lb .ad-box{inline-size:320px;block-size:100px}
.ad-mpu .ad-box{inline-size:300px;block-size:250px}
.ad-hp{display:none}
.ad-hp .ad-box{inline-size:300px;block-size:600px}
.ad-inf .ad-box{inline-size:300px;block-size:250px}
@media (min-width:768px){.ad-lb .ad-box{inline-size:728px;block-size:90px}.ad-inf .ad-box{inline-size:100%;max-inline-size:728px;block-size:250px}}
@media (min-width:1024px){.ad-lb .ad-box{inline-size:970px;block-size:90px}}

/* feed + sidebar */
.cols{display:grid;gap:var(--s6)}
.sec-h{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s3);border-block-end:var(--bw) solid var(--rule);margin-block-end:0;padding-block-end:var(--s2)}
.sec-h h2{font-size:var(--fs-2)}
.feed li{display:grid;grid-template-columns:64px 1fr;gap:var(--s4);padding-block:var(--s5);border-block-end:1px solid var(--rule)}
.feed .tn{inline-size:64px;block-size:64px;background:var(--graphite-3);color:var(--accent-text);display:grid;place-items:center;font:800 var(--fs-0)/1 var(--font-mono);border:1px solid var(--line)}
.feed h3{font-size:var(--fs-1);margin-block:var(--s1) var(--s2)}
.feed p{font-size:.9375rem;margin:0 0 var(--s2)}
.feed li.ad-row{display:block;border-block-end:1px solid var(--rule)}
.side>*+*{margin-block-start:var(--s5)}
.card{border:var(--bw) solid var(--rule);background:var(--surface);padding:var(--s4)}
.card h2{font-size:var(--fs-2);margin-block-end:var(--s2)}
.signup{background:var(--graphite-3);color:var(--text);border-color:var(--accent);border-inline-start-width:3px}
.signup h2{color:var(--accent-text)}
.signup p{color:var(--text)}
.signup label{display:block;font-weight:700;margin-block-end:var(--s1)}
.signup input[type=email]{inline-size:100%;min-block-size:48px;padding:0 var(--s3);border:var(--bw) solid var(--line);background:var(--graphite-2);color:var(--text);font:inherit;border-radius:0}
.signup button{margin-block-start:var(--s2);inline-size:100%;min-block-size:48px;background:var(--accent);color:var(--accent-ink);border:0;font:800 var(--fs-0)/1 var(--font-display);cursor:pointer}
.signup button:hover{background:#fff}
.signup small{display:block;margin-block-start:var(--s2);font-size:var(--fs-s);color:var(--muted)}
.most ol{counter-reset:m}
.most li{counter-increment:m;display:grid;grid-template-columns:32px 1fr;gap:var(--s3);padding-block:var(--s3);border-block-start:1px solid var(--rule)}
.most li::before{content:counter(m);font:800 var(--fs-2)/1 var(--font-mono);color:var(--accent-text)}
.most a{font-weight:600;display:inline-block;min-block-size:24px}
.sticky{position:static}

/* rails */
.rails{display:grid;gap:var(--s6);margin-block-start:var(--s7)}
.rail-items{display:grid;border:var(--bw) solid var(--rule);background:var(--surface)}
.rail-items .item{padding:var(--s4);border-block-end:1px solid var(--rule)}
.rail-items .item:last-child{border-block-end:0}
.rail-items h3{font-size:var(--fs-1);margin-block-end:var(--s2)}

/* article */
.art-head{max-inline-size:var(--measure)}
.art-head h1{font-size:var(--fs-4);letter-spacing:-.015em;margin-block:var(--s2) var(--s4)}
.byline{display:flex;flex-wrap:wrap;gap:var(--s1) var(--s4)}
.editor-note{background:var(--graphite-3);color:var(--text);border-inline-start:3px solid var(--accent);padding:var(--s5) var(--s4);margin-block:var(--s5);max-inline-size:var(--measure)}
.editor-note h2{font-size:var(--fs-1);margin-block-end:var(--s2);color:var(--accent-text)}
.editor-note p{font-size:var(--fs-1);line-height:1.4;font-weight:600;margin:0}
.source{max-inline-size:var(--measure);border:var(--bw) solid var(--rule);background:var(--surface);margin-block:var(--s5)}
.source h2{font-size:var(--fs-s);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;padding:var(--s2) var(--s4);background:var(--graphite-3);color:var(--accent-text)}
.source dl{margin:0;display:grid;grid-template-columns:auto 1fr}
.source dt,.source dd{margin:0;padding:var(--s3) var(--s4);border-block-end:1px solid var(--rule)}
.source dt{font:600 var(--fs-s)/1.4 var(--font-mono);text-transform:uppercase;color:var(--muted)}
.source .go{display:inline-flex;align-items:center;min-block-size:44px;font-weight:700}
.prose{max-inline-size:var(--measure);font-size:1.125rem;line-height:1.65}
.prose h2{font-size:var(--fs-2);margin-block:var(--s6) var(--s3)}
.crumbs{font:500 var(--fs-s)/1.4 var(--font-mono);margin-block-end:var(--s4)}
.crumbs a{display:inline-flex;align-items:center;min-block-size:44px}

/* footer */
.foot{background:var(--graphite-3);color:var(--text);padding-block:var(--s7) var(--s5);border-block-start:3px solid var(--accent)}
.foot a{color:var(--text)}
.foot a:hover{background:var(--accent);color:var(--accent-ink)}
.foot h2{font-size:var(--fs-1);color:var(--accent-text);margin-block-end:var(--s3)}
.foot h2.foot-brand{display:flex;align-items:center;gap:var(--s2);color:var(--text)}
.foot-brand img{display:block;flex:none}
.foot h2:not(.foot-brand){font:700 var(--fs-s)/1 var(--font-mono);text-transform:uppercase;letter-spacing:.1em}
.foot ul a{display:inline-flex;align-items:center;min-block-size:44px;min-inline-size:44px}
.foot-grid{display:grid;gap:var(--s6)}
.indep{border:1px solid var(--line);border-inline-start:3px solid var(--accent);padding:var(--s4);font-size:.9375rem}
.legal{margin-block-start:var(--s6);font:500 var(--fs-s)/1.5 var(--font-mono);color:var(--muted)}
.social{display:flex;flex-wrap:wrap;gap:var(--s3);margin-block-start:var(--s4)}
.social a{display:inline-flex;align-items:center;justify-content:center;min-inline-size:44px;min-block-size:44px;font:700 var(--fs-s)/1 var(--font-mono);text-transform:uppercase;letter-spacing:.06em;border:1px solid var(--line);padding:0 var(--s3)}
.social a:hover{border-color:var(--accent)}

@media (min-width:640px){
  .gauges{grid-template-columns:repeat(4,1fr)}
  .bento{grid-template-columns:repeat(2,1fr)}
  .b-top{grid-column:span 2}
  .hero-cta{flex-wrap:nowrap}
  .rail-items{grid-template-columns:repeat(3,1fr)}
  .rail-items .item{border-block-end:0;border-inline-end:1px solid var(--rule)}
  .rail-items .item:last-child{border-inline-end:0}
  .foot-grid{grid-template-columns:2fr 1fr 1fr}
}
@media (min-width:1024px){
  .ad-hp{display:block}
  .cols{grid-template-columns:minmax(0,1fr) var(--rail);gap:var(--s7)}
  .sticky{position:sticky;inset-block-start:var(--s4)}
  .art-head h1{font-size:var(--fs-5)}
  .hero-center h1{font-size:var(--fs-5)}
  .bento{grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-flow:dense}
  .bento-tile{min-block-size:176px;justify-content:center}
  .b-top{grid-column:span 2;grid-row:span 2;justify-content:flex-start}
  .b-top h2{font-size:var(--fs-4)}
  .b-w2{grid-column:span 2}
  .b-cat{justify-content:flex-start}
  .b-board{grid-column:1/-1}
}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

/* templating additions: lists, tags, corrections, pager, sources */
.tags{display:flex;flex-wrap:wrap;gap:var(--s2) var(--s4);margin-block:var(--s4);max-inline-size:var(--measure)}
.tags a{display:inline-flex;align-items:center;min-block-size:44px;font-weight:700}
.tags .k{font:600 var(--fs-s)/1 var(--font-mono);text-transform:uppercase;color:var(--muted);align-self:center}
.corr{max-inline-size:var(--measure);border:var(--bw) solid var(--alert);background:var(--surface);padding:var(--s4);margin-block:var(--s5)}
.corr h2{font-size:var(--fs-1);margin-block-end:var(--s2);color:var(--alert)}
.disclosure{max-inline-size:var(--measure);border-inline-start:3px solid var(--accent);padding-inline-start:var(--s3);margin-block:var(--s5);font-size:.9375rem}
.source .src{border-block-end:1px solid var(--rule)}
.source .src:last-child{border-block-end:0}
.source .src dl dt:nth-last-of-type(1),.source .src dl dd:nth-last-of-type(1){border-block-end:0}
.pager{display:flex;justify-content:space-between;gap:var(--s4);margin-block-start:var(--s5)}
.pager a{display:inline-flex;align-items:center;min-block-size:44px;font-weight:700}
.page-h{max-inline-size:var(--measure);margin-block-end:var(--s4)}
.page-h h1{font-size:var(--fs-4);margin-block-end:var(--s3)}
@media (min-width:1024px){.page-h h1{font-size:var(--fs-5)}}
.lede{font-size:var(--fs-1);line-height:1.4;max-inline-size:var(--measure)}
.linklist a{display:inline-flex;align-items:center;min-block-size:44px;font-weight:700}
.sec-h a{display:inline-flex;align-items:center;min-block-size:44px}
.ed-letter{max-inline-size:var(--measure);font-size:1.125rem;line-height:1.65;margin-block:var(--s5)}

/* Illustrative images (AI-generated; always labelled) */
.lead .thumb.has-img img{position:absolute;inset:0;inline-size:100%;block-size:100%;object-fit:cover;display:block}
.ai-tag{position:absolute;inset-inline-start:0;inset-block-end:0;background:var(--graphite-3);color:var(--accent-text);font:700 .75rem/1 var(--font-display);text-transform:uppercase;letter-spacing:.08em;padding:6px 10px}
.hero{margin:var(--s5) 0}
.hero-box{position:relative;border:var(--bw) solid var(--rule);background:var(--graphite-3);aspect-ratio:3/2}
.hero img{display:block;inline-size:100%;block-size:auto;aspect-ratio:3/2;object-fit:cover}
.hero figcaption{font-size:var(--fs-s);color:var(--muted);margin-block-start:var(--s2)}

/* === visual-design-pass 2026-10-16 === */
/* signature: tabletop felt edge */
.sig-rule{block-size:10px;background:
  linear-gradient(90deg, transparent 0 4%, var(--accent) 4% 8%, transparent 8% 12%, var(--accent) 12% 16%, transparent 16% 100%),
  var(--graphite-3);border-block:1px solid var(--line);margin-block:0 var(--s5)}
.home-hero{display:grid;gap:var(--s5);margin-block-end:var(--s5);padding-block:var(--s5) var(--s4);
  background:
    radial-gradient(80% 60% at 85% 20%, color-mix(in srgb, var(--accent) 16%, transparent), transparent 55%),
    var(--paper)}
@media (min-width:900px){.home-hero{grid-template-columns:1.05fr .95fr;align-items:end;gap:var(--s6)}}
.home-hero .eyebrow{font:700 var(--fs-s)/1.3 var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--accent-text);margin:0 0 var(--s3)}
.home-hero h1{font-size:clamp(1.75rem, 3.2vw, var(--fs-4));line-height:1.08;letter-spacing:-.02em;text-wrap:balance;max-inline-size:18ch}
.home-hero .lede{font-size:var(--fs-1);line-height:1.5;color:var(--muted);max-inline-size:42ch;margin:var(--s4) 0 0}
.home-hero .hero-cta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s3) var(--s4);margin-block-start:var(--s5)}
.home-hero .fine{margin:0;font-size:var(--fs-s);color:var(--muted);max-inline-size:28ch}
.hero-lead{background:transparent;border:0;border-inline-start:4px solid var(--accent);box-shadow:none;padding:var(--s2) 0 var(--s2) var(--s4)}
.hero-lead h2{font-size:var(--fs-2);line-height:1.15;letter-spacing:-.015em;margin:0}
.hero-lead h2 a{color:var(--text);text-decoration:none}
.hero-lead h2 a:hover{color:var(--accent-text);text-decoration:underline;background:none}
.hero-lead .why{margin:0;font-size:.95rem}
.hero-lead .why b{display:block;font:700 var(--fs-s)/1 var(--font-mono);text-transform:uppercase;letter-spacing:.06em;color:var(--accent-text);margin-block-end:var(--s2)}
/* retire centered scaffold hero */
.hero-center{display:none !important}

/* visual-design-pass polish: no floating card in hero; denser single-story board */
.hero-lead{background:transparent;border:0;border-inline-start:4px solid var(--accent);box-shadow:none;padding:var(--s2) 0 var(--s2) var(--s4)}
.hero-lead .tag,.hero-lead .plate,.hero-lead .lot,.hero-lead .kicker{margin-block-end:var(--s2)}
.bento:not(:has(.b-top)){display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:0}
.bento:not(:has(.b-top)) .bento-tile{min-block-size:0}

/* engine */
/* engine.css — rules the engine owns, appended to every site's site.css at build. Keep this file small and selector-light:
   a site's own stylesheet decides how it looks; this file only sets floors that must hold on all nine sites. */

/* 1. Target size (WCAG 2.5.8): a stand-alone link is at least 24px tall. Links inside a sentence are exempt, so this only
      names the places where a link stands on its own line or in a list. */
a[href="/newsletter/"],
li > a[href^="/category/"],
li > a[href="/latest/"],
.sec-title a,
.kicker a,
.crumbs a {
  display: inline-flex;
  align-items: center;
  min-block-size: 24px;
}

/* 2. Mobile menu. engine.js adds the button and the .nav-js class; without script the nav stays as the site styled it. */
.nav-toggle { display: none; }
@media (max-width: 759px) {
  .nav-js .nav-toggle {
    display: flex;
    align-items: center;
    justify-content: space-between;
    inline-size: 100%;
    min-block-size: 44px;
    padding: 0 .75rem;
    margin: 0;
    background: none;
    border: 0;
    border-block-start: 1px solid currentColor;
    border-radius: 0;
    color: inherit;
    font: inherit;
    font-weight: 700;
    letter-spacing: .02em;
    text-align: start;
    cursor: pointer;
  }
  .nav-js .nav-toggle::after { content: "+"; font-size: 1.25em; line-height: 1; }
  .nav-js .nav-toggle[aria-expanded="true"]::after { content: "\2212"; }
  .nav-js .nav { display: block; overflow: visible; -webkit-mask-image: none; mask-image: none; border-block-start: 0; }
  .nav-js .nav > ul,
  .nav-js .nav .wrap > ul { display: none; }
  .nav-js .nav.is-open > ul,
  .nav-js .nav.is-open .wrap > ul {
    display: flex;
    flex-direction: column;
    flex-wrap: nowrap;
    overflow: visible;
    min-inline-size: 0;
    padding-inline-end: 0;
    white-space: normal;
    gap: 0;
  }
  .nav-js .nav.is-open a { inline-size: 100%; justify-content: flex-start; }
}

/* 3. Reader-value blocks the engine injects into every story body (build.py enrich_body). They inherit the site's colours
      and fonts and only add structure, so they adapt to each site and to dark mode without per-site rules. */
.prose .pull { margin: 1.75rem 0; padding: .25rem 0 .25rem 1.1rem; border-inline-start: 4px solid currentColor; }
.prose .pull blockquote { margin: 0; padding: 0; border: 0; font-size: 1.35em; line-height: 1.35; font-weight: 600; }
.prose .pull blockquote p { margin: 0; }
.prose .pull blockquote p::before { content: "\201C"; }
.prose .pull blockquote p::after { content: "\201D"; }
.prose .pull figcaption { margin-top: .5rem; font-size: .875em; opacity: .85; }
.prose .pull figcaption::before { content: "\2014\00a0"; }
.end-cta { margin: 2rem 0 0; padding: 1rem 1.1rem; border: 2px solid currentColor; }
.end-cta p { margin: 0 0 .5rem; }
.end-cta .end-cta-h { font-weight: 700; font-size: 1.05em; }
.end-cta .end-cta-go { display: inline-flex; align-items: center; min-block-size: 44px; padding: 0 1.1rem; font-weight: 700; text-decoration: none; border: 2px solid currentColor; }
.end-cta .end-cta-go:hover, .end-cta .end-cta-go:focus-visible { text-decoration: underline; }
@media print { .end-cta { display: none; } }

/* 4. "More on this": the in-body related-story links the engine adds to every story (build.py link_related). */
.prose .more-on { margin: 2rem 0 0; padding: .9rem 1.1rem; border-block: 1px solid currentColor; }
.prose .more-on-h { margin: 0 0 .4rem; font-weight: 700; }
.prose .more-on ul { margin: 0; padding-inline-start: 1.1rem; }
.prose .more-on li { margin: .25rem 0; }
.prose .more-on-d { font-size: .875em; opacity: .8; white-space: nowrap; }
.prose .more-on-sec { margin: .6rem 0 0; font-size: .9375em; }

/* corrections and tips: end of every story */
.end-tips{margin-block:1.5rem;padding:.9rem 1rem;border:1px solid currentColor;border-inline-start-width:4px;border-radius:2px;font-size:.95em;opacity:.95}
.end-tips p{margin:0}.end-tips .end-tips-h{font-weight:700;margin-block-end:.25rem}

/* analysis key points, dated updates */
.key-points,.story-update{margin-block:1.25rem;padding:.9rem 1rem;border:1px solid currentColor;border-inline-start-width:4px;border-radius:2px}
.key-points-h{font-weight:700;margin:0 0 .35rem}.key-points ul{margin:0;padding-inline-start:1.1rem}.key-points li{margin-block:.25rem}
.story-update p{margin:.25rem 0}

/* tracker pages: a standing table with a source and an as-of date on every row (build.py tracker()) */
.tracker-wrap{overflow-x:auto;margin:1.25em 0}
.tracker{width:100%;border-collapse:collapse;font-size:.95em;line-height:1.4}
.tracker caption{text-align:left;font-weight:700;padding:0 0 .5em}
.tracker th,.tracker td{text-align:left;vertical-align:top;padding:.55em .7em;border-bottom:1px solid color-mix(in srgb,currentColor 22%,transparent)}
.tracker thead th{border-bottom:2px solid currentColor;white-space:nowrap}
.tracker td:last-child,.tracker td:nth-last-child(2){font-size:.9em}

/* house ads */
/* Glenridge Games house ads. Felt-green ground, amber top rule, mono ad label.
   Ground is graphite-3 in both schemes, so contrast is scheme-independent; light mode changes only the frame. */
.ggx{--ggx-g:#0E1012;--ggx-ink:#E4E9ED;--ggx-mute:#9AA3AB;--ggx-o:#FF6A1A;--ggx-line:#2C3136;--ggx-frame:#2C3136;
  --ggx-display:"Avenir Next","Century Gothic","Segoe UI Semibold","Segoe UI",system-ui,-apple-system,Roboto,Arial,sans-serif;
  --ggx-body:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  --ggx-mono:ui-monospace,"Cascadia Mono","SF Mono",Consolas,monospace;
  position:relative;display:flex;box-sizing:border-box;overflow:hidden;margin:0;
  background:var(--ggx-g);color:var(--ggx-ink);text-decoration:none;
  border:1px solid var(--ggx-frame);border-block-start:3px solid var(--ggx-o);
  font-family:var(--ggx-body);text-align:start}
.ggx *{box-sizing:border-box}
.ggx:hover .ggx-b{background:#FFFFFF;color:#0E1012}
.ggx:focus-visible{outline:3px solid #6FB1FF;outline-offset:-7px}
.ggx-tag{position:absolute;inset-block-start:4px;inset-inline-start:12px;font:500 11px/14px var(--ggx-mono);
  letter-spacing:.08em;text-transform:uppercase;color:var(--ggx-mute)}
.ggx-t{display:block;min-inline-size:0}
.ggx-h{display:block;font-family:var(--ggx-display);font-weight:800;line-height:1.15;color:var(--ggx-ink)}
.ggx-b{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-block-size:44px;padding-inline:16px;
  background:var(--ggx-o);color:#0E1012;font:800 16px/1.1 var(--ggx-display);text-align:center}
.ggx-rows{display:block}
.ggx-r{display:grid;grid-template-columns:72px 1fr;column-gap:8px;border-block-start:1px solid var(--ggx-line);padding-block:4px}
.ggx-r b{font:500 11px/16px var(--ggx-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--ggx-o)}
.ggx-r span{font-size:13px;line-height:16px;color:var(--ggx-ink)}

/* wide: one line plus CTA */
.ggx-970x90,.ggx-728x90{inline-size:970px;block-size:90px;align-items:center;gap:16px;padding:20px 12px 6px 16px}
.ggx-728x90{inline-size:728px}
.ggx-970x90 .ggx-t,.ggx-728x90 .ggx-t{flex:1}
.ggx-970x90 .ggx-h{font-size:24px}
.ggx-728x90 .ggx-h{font-size:20px}
.ggx-970x90 .ggx-b,.ggx-728x90 .ggx-b{flex:none;min-inline-size:184px}

/* phone banner */
.ggx-320x100{inline-size:320px;block-size:100px;align-items:center;gap:8px;padding:18px 8px 4px 12px}
.ggx-320x100 .ggx-t{flex:1}
.ggx-320x100 .ggx-h{font-size:16px}
.ggx-320x100 .ggx-b{flex:none;inline-size:104px;padding-inline:4px;font-size:15px}

/* rectangle and half-page */
.ggx-300x250,.ggx-300x600{inline-size:300px;flex-direction:column;padding:22px 12px 12px}
.ggx-300x250{block-size:250px}
.ggx-300x600{block-size:600px;padding:28px 16px 16px}
.ggx-300x250 .ggx-t,.ggx-300x600 .ggx-t{flex:1}
.ggx-300x250 .ggx-h{font-size:22px;margin-block-end:8px}
.ggx-300x600 .ggx-h{font-size:30px;margin-block-end:12px}
.ggx-300x600 .ggx-r{padding-block:6px}
.ggx-300x600 .ggx-r span{font-size:15px;line-height:20px}
.ggx-300x600 .ggx-r b{line-height:20px}
.ggx-300x250 .ggx-b{inline-size:100%}
.ggx-300x600 .ggx-b{inline-size:100%;min-block-size:48px;font-size:18px}

/* slot A: show the size that matches the breakpoint; slot box is fixed so nothing shifts */
.ggx-slot-a .ggx{display:none}
.ggx-slot-a .ggx-320x100{display:flex}
@media (min-width:768px){.ggx-slot-a .ggx-320x100{display:none}.ggx-slot-a .ggx-728x90{display:flex}}
@media (min-width:1024px){.ggx-slot-a .ggx-728x90{display:none}.ggx-slot-a .ggx-970x90{display:flex}}
.ggx-slot-a .ggx{margin-inline:auto}
@media (prefers-reduced-motion:reduce){.ggx,.ggx *{transition:none!important;animation:none!important}}

.ad-box.house{border:0;background:none;padding:0;display:flex;justify-content:center;align-items:flex-start}
