:root{--mx-font:"Inter","Segoe UI",system-ui,-apple-system,Roboto,Helvetica,Arial,sans-serif;--mx-font-heading:"Fraunces","Iowan Old Style",Georgia,"Times New Roman",serif;--mx-page:#ffffff;--mx-surface:#ffffff;--mx-soft:#eef9fc;--mx-text:#29393f;--mx-heading:#0c1f26;--mx-muted:#52646b;--mx-border:#e0edf0;--mx-border-strong:#b8d3da;--mx-grid:#ecf5f8;--mx-link:#0c7d95;--mx-link-hover:#0a566a;--mx-accent:#0c7d95;--mx-cta-bg:#063947;--mx-cta-text:#ffffff;--mx-cta-link:#f7b96b;--mx-pos:#0a566a;--mx-neg:#b5402e;--viz-1:#0e8aa6;--viz-2:#d95926;--viz-3:#6250d6;--viz-4:#6250d6;--viz-up:#0e8aa6;--viz-down:#e34948}
/* Blog article styles. Scoped to .mx-blog so they never touch the main site's own pages.
   Site colours come from the :root block that tools/make_css.py prepends (data/site.json "theme"). */
.mx-blog{display:block;padding:2rem 1rem 3rem;color:var(--mx-text);font-family:var(--mx-font);background:var(--mx-page)}
.mx-blog *,.mx-blog *::before,.mx-blog *::after{box-sizing:border-box}
.mx-article,.mx-index{max-width:760px;margin:0 auto}
.mx-index{max-width:960px}
.mx-blog a{color:var(--mx-link);text-decoration:underline;text-underline-offset:2px}
.mx-blog a:hover{color:var(--mx-link-hover)}
.mx-crumbs{font-size:13px;color:var(--mx-muted);margin:0 0 1rem}
.mx-crumbs a{color:var(--mx-muted);text-decoration:none}
.mx-head h1,.mx-index-head h1{font-family:var(--mx-font-heading);font-size:clamp(28px,4.4vw,42px);line-height:1.15;font-weight:800;color:var(--mx-heading);margin:0 0 .75rem;letter-spacing:-.01em}
.mx-meta{font-size:14px;color:var(--mx-muted);display:flex;flex-wrap:wrap;gap:.4rem;align-items:center;margin:0 0 .5rem}
.mx-meta a{color:var(--mx-heading);font-weight:600;text-decoration:none}
.mx-updated{color:var(--mx-accent);font-weight:600}
.mx-reviewed{font-size:13px;color:var(--mx-muted);margin:.25rem 0 0}
.mx-content{font-size:17.5px;line-height:1.75;margin-top:1.75rem}
.mx-content p{margin:0 0 1.1em}
.mx-content h2{font-family:var(--mx-font-heading);font-size:clamp(22px,3vw,28px);line-height:1.25;font-weight:800;color:var(--mx-heading);margin:2.2em 0 .6em;scroll-margin-top:90px}
.mx-content h3{font-family:var(--mx-font-heading);font-size:20px;line-height:1.3;font-weight:700;color:var(--mx-heading);margin:1.6em 0 .5em}
.mx-content ul,.mx-content ol{margin:0 0 1.2em;padding-left:1.4em}
.mx-content ul{list-style:disc}.mx-content ol{list-style:decimal}
.mx-content li{margin:0 0 .45em}
.mx-content strong{color:var(--mx-heading);font-weight:700}
.mx-content blockquote{margin:1.4em 0;padding:.8em 1.1em;border-left:4px solid var(--mx-accent);background:var(--mx-soft);border-radius:0 6px 6px 0}
.mx-content .lead{font-size:20px;line-height:1.65;color:var(--mx-heading)}
.mx-notice{font-size:14px;line-height:1.55;background:var(--mx-soft);border:1px solid var(--mx-border);border-radius:8px;padding:.85rem 1rem;margin:1.25rem 0}
.mx-notice p{margin:0 0 .4em}.mx-notice p:last-child{margin:0}
.mx-cta{margin:2.5rem 0 1.5rem;padding:1.2rem 1.3rem;border-radius:10px;background:var(--mx-cta-bg);color:var(--mx-cta-text);font-size:16px}
.mx-cta p{margin:0 0 .5em}.mx-cta p:last-child{margin:0}
.mx-cta a{color:var(--mx-cta-link);font-weight:700}
.mx-cta strong{color:var(--mx-cta-text)}
.mx-author{border-top:1px solid var(--mx-border);margin-top:2rem;padding-top:1rem;font-size:15px;color:var(--mx-muted)}
.mx-author p{margin:0 0 .3em}.mx-author strong{color:var(--mx-heading)}
.mx-related{margin-top:1.5rem;padding:1rem 1.2rem;border:1px solid var(--mx-border);border-radius:10px}
.mx-related h2{font-size:17px;margin:0 0 .5rem;color:var(--mx-heading)}
.mx-related ul{margin:0;padding-left:1.2em;list-style:disc}.mx-related li{margin:.3em 0}
.mx-postnav{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-top:1.5rem}
.mx-postnav a{display:block;padding:.85rem 1rem;border:1px solid var(--mx-border);border-radius:10px;text-decoration:none;color:var(--mx-heading);font-size:15px;line-height:1.35}
.mx-postnav a span{display:block;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--mx-accent);margin-bottom:.3rem}
.mx-postnav .next{text-align:right}
.mx-footnote{font-size:12.5px;color:var(--mx-muted);margin-top:2rem;line-height:1.5}
/* index */
.mx-index-head p{font-size:18px;color:var(--mx-muted);margin:0 0 1rem;max-width:720px}
.mx-cats{display:flex;flex-wrap:wrap;gap:.5rem;margin:0 0 1.5rem}
.mx-cats a{font-size:14px;padding:.35rem .8rem;border:1px solid var(--mx-border);border-radius:999px;text-decoration:none;color:var(--mx-heading)}
.mx-cats a[aria-current]{background:var(--mx-accent);border-color:var(--mx-accent);color:#fff}
.mx-cards{display:grid;gap:1rem}
.mx-card{padding:1.2rem 1.3rem;border:1px solid var(--mx-border);border-radius:12px;background:var(--mx-surface)}
.mx-card h2{font-family:var(--mx-font-heading);font-size:21px;line-height:1.3;margin:.3rem 0 .4rem;font-weight:800}
.mx-card h2 a{color:var(--mx-heading);text-decoration:none}
.mx-card h2 a:hover{color:var(--mx-link)}
.mx-card p{margin:0;color:var(--mx-muted);font-size:15.5px;line-height:1.55}
.mx-card-meta{display:flex;gap:.6rem;align-items:center;font-size:13px;color:var(--mx-muted)}
.mx-tag{font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--mx-accent)}
.mx-pages{display:flex;flex-wrap:wrap;gap:.4rem;justify-content:center;margin-top:2rem}
.mx-pages a,.mx-pages span{padding:.4rem .8rem;border:1px solid var(--mx-border);border-radius:8px;text-decoration:none}
.mx-pages span[aria-current]{background:var(--mx-accent);color:#fff;border-color:var(--mx-accent)}

/* ---- data blocks (tools/charts.py) ---- */
.mx-blog .eb-summary{background:var(--mx-soft);border-left:4px solid var(--mx-accent);border-radius:0 8px 8px 0;padding:1rem 1.25rem;margin:1.5em 0}
.mx-blog .eb-summary-title{margin:0 0 .5rem;font-size:13px;text-transform:uppercase;letter-spacing:.06em;color:var(--mx-accent)}
.mx-blog .eb-summary ul{margin:0;padding-left:1.2em;list-style:disc}
.mx-blog .eb-summary li{font-size:16px;margin-bottom:.35em}
.mx-blog .eb-toc{border:1px solid var(--mx-border);border-radius:8px;padding:.9rem 1.2rem;margin:1.5em 0;background:var(--mx-surface)}
.mx-blog .eb-toc strong{display:block;font-size:12.5px;text-transform:uppercase;letter-spacing:.06em;margin-bottom:.4rem}
.mx-blog .eb-toc ol{margin:0;padding-left:1.2em;list-style:decimal}
.mx-blog .eb-toc li{font-size:15px;margin:.15em 0}
.mx-blog .eb-callout{border-radius:8px;padding:1rem 1.2rem;margin:1.5em 0;background:var(--mx-soft);border-left:4px solid var(--viz-2)}
.mx-blog .eb-callout p:last-child{margin-bottom:0}
.mx-blog .eb-callout.my-take{border-left-color:var(--mx-accent)}
.mx-blog .eb-callout-title{display:block;font-weight:800;font-size:15px;margin-bottom:.35rem;color:var(--mx-heading)}
.mx-blog .eb-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.75rem;margin:1.5em 0}
.mx-blog .eb-stat{background:var(--mx-surface);border:1px solid var(--mx-border);border-radius:10px;padding:.85rem 1rem}
.mx-blog .eb-stat-label{display:block;font-size:13px;color:var(--mx-muted);line-height:1.35}
.mx-blog .eb-stat-value{display:block;font-size:26px;font-weight:800;color:var(--mx-heading);line-height:1.2;margin:.2rem 0}
.mx-blog .eb-stat-delta{display:block;font-size:13px;font-weight:600;color:var(--mx-muted)}
.mx-blog .eb-stat-delta.up::before{content:"▲ ";font-size:10px}
.mx-blog .eb-stat-delta.down::before{content:"▼ ";font-size:10px}
.mx-blog .eb-table-wrap{overflow-x:auto;margin:1.5em 0;-webkit-overflow-scrolling:touch}
.mx-blog .eb-table{width:100%;border-collapse:collapse;font-size:15px;background:var(--mx-surface)}
.mx-blog .eb-table caption{caption-side:top;text-align:left;font-weight:800;color:var(--mx-heading);padding:0 0 .5rem;font-size:16px}
.mx-blog .eb-table th{text-align:left;font-size:12.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--mx-muted);border-bottom:2px solid var(--mx-border-strong);padding:.55rem .6rem;white-space:nowrap}
.mx-blog .eb-table td,.mx-blog .eb-table tbody th{border-bottom:1px solid var(--mx-border);padding:.55rem .6rem;color:var(--mx-text);vertical-align:top}
.mx-blog .eb-table tbody th{text-transform:none;letter-spacing:0;font-size:15px;font-weight:600;white-space:normal;color:var(--mx-heading)}
.mx-blog .eb-table td.num,.mx-blog .eb-table th.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.mx-blog .eb-table .pos{color:var(--mx-pos);font-weight:600}
.mx-blog .eb-table .neg{color:var(--mx-neg);font-weight:600}
.mx-blog .eb-chart{margin:2em 0;padding:1rem 1rem .75rem;background:var(--mx-surface);border:1px solid var(--mx-border);border-radius:10px}
.mx-blog .eb-chart figcaption{margin-bottom:.75rem}
.mx-blog .eb-chart-title{display:block;font-weight:800;font-size:16.5px;color:var(--mx-heading);line-height:1.35}
.mx-blog .eb-chart-sub{display:block;font-size:13.5px;color:var(--mx-muted);margin-top:.15rem}
.mx-blog .eb-legend{display:flex;flex-wrap:wrap;gap:.35rem 1rem;margin:0 0 .6rem;padding:0;list-style:none;font-size:13px;color:var(--mx-muted)}
.mx-blog .eb-legend li{display:flex;align-items:center;gap:.4rem;margin:0}
.mx-blog .eb-legend .key{display:inline-block;width:14px;height:3px;border-radius:2px;background:var(--c)}
.mx-blog .eb-legend .key.sq{width:10px;height:10px}
.mx-blog .eb-source,.mx-blog .mx-content .eb-source{font-size:12.5px;color:var(--mx-muted);margin:.6rem 0 0;line-height:1.45}
.mx-blog .mx-content > .eb-source{margin-bottom:1.4em}
.mx-blog .eb-data{margin-top:.5rem;font-size:13px}
.mx-blog .eb-data summary{cursor:pointer;color:var(--mx-muted);font-weight:600}
.mx-blog .eb-hbars{display:grid;grid-template-columns:minmax(90px,max-content) 1fr minmax(64px,max-content);gap:6px 10px;align-items:center;font-size:13.5px}
.mx-blog .eb-hbars .lbl{color:var(--mx-heading);line-height:1.25}
.mx-blog .eb-hbars .track{position:relative;height:18px}
.mx-blog .eb-hbars .bar{position:absolute;top:0;bottom:0;background:var(--c,var(--viz-1));border-radius:0 4px 4px 0;min-width:2px}
.mx-blog .eb-hbars .bar.neg{border-radius:4px 0 0 4px}
.mx-blog .eb-hbars .zero{position:absolute;top:-3px;bottom:-3px;width:1px;background:var(--mx-border-strong)}
.mx-blog .eb-hbars .val{text-align:right;font-variant-numeric:tabular-nums;color:var(--mx-muted);font-weight:600;white-space:nowrap}
.mx-blog .eb-hbars .hl{font-weight:800}
.mx-blog .eb-plot-wrap{display:grid;grid-template-columns:auto 1fr;grid-template-rows:var(--h,260px) auto;column-gap:8px}
.mx-blog .eb-yaxis{position:relative;font-size:11.5px;color:var(--mx-muted);text-align:right;min-width:34px;font-variant-numeric:tabular-nums}
.mx-blog .eb-yaxis span{position:absolute;right:0;transform:translateY(50%);white-space:nowrap}
.mx-blog .eb-plot{position:relative;border-bottom:1px solid var(--mx-border-strong)}
.mx-blog .eb-plot .grid{position:absolute;left:0;right:0;height:0;border-top:1px solid var(--mx-grid)}
.mx-blog .eb-plot svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.mx-blog .eb-plot svg path{fill:none;stroke-width:2;stroke-linejoin:round;stroke-linecap:round;vector-effect:non-scaling-stroke}
.mx-blog .eb-plot svg path.area{stroke:none;opacity:.12}
.mx-blog .eb-dot{position:absolute;width:9px;height:9px;margin:-4.5px 0 0 -4.5px;border-radius:50%;background:var(--c);box-shadow:0 0 0 2px var(--mx-surface);pointer-events:none}
.mx-blog .eb-endlbl{position:absolute;transform:translate(8px,-50%);font-size:12px;font-weight:700;color:var(--mx-heading);white-space:nowrap;background:var(--mx-surface);padding:0 2px;border-radius:2px;pointer-events:none}
.mx-blog .eb-endlbl.left{transform:translate(calc(-100% - 8px),-50%)}
.mx-blog .eb-xaxis{grid-column:2;position:relative;height:22px;font-size:11.5px;color:var(--mx-muted)}
.mx-blog .eb-xaxis span{position:absolute;top:4px;transform:translateX(-50%);white-space:nowrap}
.mx-blog .eb-xaxis span.first{transform:none}.mx-blog .eb-xaxis span.last{transform:translateX(-100%)}
.mx-blog .eb-hit{position:absolute;top:0;bottom:0;z-index:2;cursor:crosshair}
.mx-blog .eb-hit::before{content:"";position:absolute;top:0;bottom:0;left:50%;border-left:1px solid var(--mx-border-strong);opacity:0}
.mx-blog .eb-hit:hover::before{opacity:1}
.mx-blog .eb-hit::after{content:attr(data-tip);position:absolute;bottom:calc(100% + 6px);left:50%;transform:translateX(-50%);background:var(--mx-heading);color:var(--mx-surface);font-size:12px;line-height:1.4;padding:.35rem .55rem;border-radius:4px;white-space:pre;opacity:0;pointer-events:none;transition:opacity .1s;z-index:5}
.mx-blog .eb-hit.edge-l::after{left:0;transform:none}.mx-blog .eb-hit.edge-r::after{left:auto;right:0;transform:none}
.mx-blog .eb-hit:hover::after{opacity:1}
.mx-blog .eb-cols{position:absolute;inset:0;display:flex;align-items:flex-end;justify-content:space-around;gap:2px}
.mx-blog .eb-colgroup{position:relative;flex:1;height:100%;display:flex;align-items:flex-end;justify-content:center;gap:2px}
.mx-blog .eb-col{width:min(24px,80%);background:var(--c,var(--viz-1));border-radius:4px 4px 0 0;min-height:1px;position:relative}
.mx-blog .eb-colgroup .cap{position:absolute;font-size:11px;font-weight:700;color:var(--mx-muted);white-space:nowrap;transform:translate(-50%,-4px);left:50%}
.mx-blog .eb-faq h3{margin-top:1.4em;font-size:18px}
.mx-blog .eb-sources{font-size:13.5px;color:var(--mx-muted);border-top:1px solid var(--mx-border);margin-top:2.5em;padding-top:1em}
.mx-blog .eb-sources h2{font-size:16px;margin:0 0 .5rem}
.mx-blog .eb-sources ol{padding-left:1.3em;margin:0;list-style:decimal}
.mx-blog .eb-sources li{font-size:13.5px;margin-bottom:.25em}
@media (max-width:640px){
  .mx-blog{padding:1.25rem .9rem 2.5rem}
  .mx-content{font-size:16.5px}
  .mx-postnav{grid-template-columns:1fr}.mx-postnav .next{text-align:left}
  .mx-blog .eb-hbars{grid-template-columns:minmax(70px,38%) 1fr minmax(52px,max-content);font-size:12.5px}
  .mx-blog .eb-plot-wrap{--h:220px}
  .mx-blog .eb-stat-value{font-size:22px}
}
@media print{.mx-blog .eb-hit,.mx-postnav,.mx-related{display:none}}
/* plain tables in post bodies */
.mx-content table:not(.eb-table){width:100%;border-collapse:collapse;margin:1.2em 0;font-size:15.5px}
.mx-content table:not(.eb-table) th{text-align:left;border-bottom:2px solid var(--mx-border-strong);padding:.5rem .6rem;color:var(--mx-heading)}
.mx-content table:not(.eb-table) td{border-bottom:1px solid var(--mx-border);padding:.5rem .6rem;vertical-align:top}
.mx-content img{max-width:100%;height:auto;border-radius:8px}
