:root{
  --paper:#F4F6F5;
  --raise:#FFFFFF;
  --ink:#12161B;
  --slate:#5E6C70;
  --hair:#D6DDDC;
  --oxide:#23555C;
  --oxide-soft:#E2ECEC;
  --neg:#A63D2F;
  --pos:#3F6B4A;
  --shadow:0 1px 2px rgba(18,22,27,.06);
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --paper:#0F1416;
    --raise:#161D20;
    --ink:#E8EDEC;
    --slate:#93A2A4;
    --hair:#283336;
    --oxide:#7FB8BD;
    --oxide-soft:#1A2A2D;
    --neg:#E08573;
    --pos:#7FB18C;
    --shadow:0 1px 2px rgba(0,0,0,.4);
  }
}
:root[data-theme="dark"]{
  --paper:#0F1416;
  --raise:#161D20;
  --ink:#E8EDEC;
  --slate:#93A2A4;
  --hair:#283336;
  --oxide:#7FB8BD;
  --oxide-soft:#1A2A2D;
  --neg:#E08573;
  --pos:#7FB18C;
  --shadow:0 1px 2px rgba(0,0,0,.4);
}

*{box-sizing:border-box}
body{
  margin:0;background:var(--paper);color:var(--ink);
  font-family:"Public Sans",ui-sans-serif,system-ui,sans-serif;
  font-size:16.5px;line-height:1.62;
  -webkit-font-smoothing:antialiased;
}
.wrap{max-width:1040px;margin:0 auto;padding-inline:24px;padding-block:56px 96px}
.col{max-width:68ch}

h1,h2,h3{font-family:Newsreader,Georgia,serif;font-weight:600;text-wrap:balance;margin:0}
h1{font-size:clamp(2.1rem,5vw,3.1rem);line-height:1.08;letter-spacing:-.015em}
h2{font-size:clamp(1.4rem,3vw,1.85rem);line-height:1.2;margin-top:4px}
h3{font-size:1.1rem;line-height:1.3}

.eyebrow{
  font-family:"IBM Plex Mono",ui-monospace,monospace;
  font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;
  color:var(--oxide);margin:0
}
.lede{font-size:1.16rem;color:var(--slate);max-width:60ch}
p{margin:0}
.stack{display:flex;flex-direction:column;gap:18px}
.stack-lg{display:flex;flex-direction:column;gap:56px}
section{display:flex;flex-direction:column;gap:18px}

.rule{height:1px;background:var(--hair);border:0;margin:0}

.meta{
  display:flex;flex-wrap:wrap;gap:8px 28px;
  font-family:"IBM Plex Mono",monospace;font-size:.78rem;color:var(--slate)
}
.meta b{color:var(--ink);font-weight:500}

/* ---- finding callout: one lifted object, used sparingly ---- */
.finding{
  background:var(--raise);border:1px solid var(--hair);
  border-left:3px solid var(--oxide);
  padding:22px 24px;display:flex;flex-direction:column;gap:10px;
  box-shadow:var(--shadow)
}
.finding .eyebrow{color:var(--slate)}
.finding p{max-width:62ch}

/* ---- tables ---- */
.tablewrap{overflow-x:auto;border:1px solid var(--hair);background:var(--raise)}
table{border-collapse:collapse;width:100%;font-size:.88rem;min-width:520px}
th,td{padding:10px 14px;text-align:left;border-bottom:1px solid var(--hair);vertical-align:top}
thead th{
  font-family:"IBM Plex Mono",monospace;font-size:.7rem;letter-spacing:.09em;
  text-transform:uppercase;color:var(--slate);font-weight:500;
  background:var(--oxide-soft);white-space:nowrap
}
tbody tr:last-child td{border-bottom:0}
.num{font-family:"IBM Plex Mono",monospace;font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}
.neg{color:var(--neg)}
.pos{color:var(--pos)}
code{font-family:"IBM Plex Mono",monospace;font-size:.88em;background:var(--oxide-soft);padding:1px 5px;border-radius:2px}

/* ---- variance chart ---- */
.chart{display:flex;flex-direction:column;gap:2px;font-family:"IBM Plex Mono",monospace;font-size:.75rem}
.crow{display:grid;grid-template-columns:62px 1fr;align-items:center;gap:10px}
.track{position:relative;height:26px}
.zero{position:absolute;left:77.8%;top:0;bottom:0;width:1px;background:var(--slate);opacity:.55}
.bar{position:absolute;height:9px;border-radius:1px}
.bar.b{top:3px;background:var(--neg)}
.bar.c{top:14px;background:var(--oxide)}
.axis{display:grid;grid-template-columns:62px 1fr;gap:10px;color:var(--slate);margin-top:6px}
.axis .ticks{position:relative;height:16px}
.axis .ticks span{position:absolute;transform:translateX(-50%);white-space:nowrap}
.legend{display:flex;flex-wrap:wrap;gap:18px;color:var(--slate);font-size:.78rem;font-family:"IBM Plex Mono",monospace}
.swatch{display:inline-block;width:11px;height:9px;margin-right:6px;vertical-align:baseline}

.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(248px,1fr));gap:1px;background:var(--hair);border:1px solid var(--hair)}
.cell{background:var(--raise);padding:18px 20px;display:flex;flex-direction:column;gap:6px}
.cell .k{font-family:"IBM Plex Mono",monospace;font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;color:var(--slate)}
.cell .v{font-family:"IBM Plex Mono",monospace;font-size:1.5rem;font-variant-numeric:tabular-nums;line-height:1.1}
.cell .n{font-size:.83rem;color:var(--slate)}

ul{margin:0;padding-left:1.15em;display:flex;flex-direction:column;gap:9px}
li{padding-left:2px}
li::marker{color:var(--oxide)}

.quote{
  font-family:Newsreader,Georgia,serif;font-size:1.12rem;font-style:italic;
  color:var(--ink);border-left:2px solid var(--hair);padding-left:18px;max-width:58ch
}
.foot{color:var(--slate);font-size:.9rem;max-width:64ch}
a{color:var(--oxide)}
@media (max-width:520px){
  .crow{grid-template-columns:48px 1fr}
  .axis{grid-template-columns:48px 1fr}
}

/* ---- site chrome: nav, footer, collection index ---- */
.sitenav{
  max-width:1040px;margin:0 auto;padding:22px 24px 0;
  font-family:"IBM Plex Mono",monospace;font-size:.78rem;
  letter-spacing:.04em;color:var(--slate)
}
.sitenav a{color:var(--slate);text-decoration:none;border-bottom:1px solid var(--hair)}
.sitenav a:hover{color:var(--oxide);border-bottom-color:var(--oxide)}
.sitenav .sep{margin:0 8px;opacity:.6}

.sitefoot{
  max-width:1040px;margin:0 auto;padding:0 24px 72px;
  display:flex;flex-wrap:wrap;gap:6px 24px;justify-content:space-between;
  font-family:"IBM Plex Mono",monospace;font-size:.78rem;color:var(--slate);
  border-top:1px solid var(--hair);padding-top:22px
}
.sitefoot p{margin:0}

.postlist{list-style:none;padding:0;gap:40px}
.postlist li{padding:0;max-width:68ch}
.postlist h2{margin:6px 0 8px;font-size:clamp(1.3rem,2.6vw,1.7rem)}
.postlist h2 a{color:var(--ink);text-decoration:none}
.postlist h2 a:hover{color:var(--oxide)}
.postlist .foot{max-width:66ch}
