:root{
  color-scheme:light;
  --bg:#F2ECDF;--panel:#EAE2D1;--panel-2:#E3D9C5;--ink:#2F2A24;
  --ink-soft:#5E554A;--ink-faint:#8C8171;--rule:#D3C6AE;
  --key:#2E5E86;--val:#A2651C;--qry:#4E7340;--err:#9C3A3A;--focus:#2E5E86;
  --serif:"Literata","Iowan Old Style",Georgia,serif;
  --sans:"Instrument Sans","Helvetica Neue",Arial,sans-serif;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--serif);font-size:1.125rem;line-height:1.7;font-optical-sizing:auto;font-variant-numeric:oldstyle-nums}
.page{max-width:880px;margin:0 auto;padding:2.5rem 1.25rem 5rem}
.col{max-width:660px;margin-left:auto;margin-right:auto}
.topbar{font-family:var(--sans);font-size:.9rem;max-width:660px;margin:0 auto 3.5rem}
.topbar a{color:var(--ink);text-decoration:none;font-weight:600}
header.post h1{font-size:clamp(2.1rem,6vw,3.1rem);line-height:1.08;font-weight:500;letter-spacing:-.015em;margin:0 0 1rem}
header.post .dek{font-size:1.2rem;line-height:1.5;color:var(--ink-soft);margin:0 0 1.4rem;font-style:italic}
header.post .meta{font-family:var(--sans);font-size:.9rem;color:var(--ink-faint);margin:0;padding-bottom:2rem;border-bottom:1px solid var(--rule)}
h2{font-size:1.5rem;font-weight:500;line-height:1.25;margin:3.2rem 0 .8rem;letter-spacing:-.005em}
h3{font-size:1.15rem;font-weight:500;margin:2.2rem 0 .6rem}
h2 .n{font-family:var(--sans);font-size:.95rem;font-weight:500;color:var(--ink-faint);margin-right:.6rem;font-variant-numeric:lining-nums}
p{margin:0 0 1.1rem}
a{color:var(--ink);text-decoration-color:var(--rule);text-underline-offset:3px}
strong{font-weight:600}
a.cite{color:var(--ink-soft);text-decoration:none;border-bottom:1px solid var(--rule)}
.chip{font-family:var(--sans);font-size:.85em;font-weight:600;white-space:nowrap}
.chip.k{color:var(--key)}.chip.v{color:var(--val)}.chip.q{color:var(--qry)}
.note{border-left:2px solid var(--key);padding:.1rem 0 .1rem 1rem;margin:1.6rem 0;color:var(--ink-soft);font-size:1.02rem}
.note p:last-child{margin-bottom:0}
.katex-display{overflow-x:auto;overflow-y:hidden;max-width:100%;padding:.35rem 0;margin:1rem 0!important}
.ck{color:var(--key)}.cv{color:var(--val)}.cq{color:var(--qry)}
figure.fig{margin:2.4rem 0;padding:1.1rem;background:var(--panel);border-radius:10px}
figcaption{font-family:var(--sans);font-size:.92rem;line-height:1.55;color:var(--ink-soft);margin-top:1rem;max-width:660px}
figcaption b{color:var(--ink);font-weight:600}
.figure-title{font-family:var(--sans);font-size:.86rem;color:var(--ink-soft);margin:0 0 .5rem}
svg.viz{display:block;width:100%;height:auto;background:var(--bg);border-radius:6px;overflow:visible}
.controls{display:flex;flex-wrap:wrap;gap:.65rem 1.15rem;align-items:center;font-family:var(--sans);font-size:.9rem;margin-top:1rem;color:var(--ink-soft)}
button.btn{font:inherit;font-weight:500;color:var(--ink);background:var(--bg);border:1px solid var(--rule);border-radius:6px;min-height:40px;padding:.35rem .9rem;cursor:pointer}
button.btn:hover{border-color:var(--ink-faint)}
.seg{display:inline-flex;border:1px solid var(--rule);border-radius:6px;overflow:hidden;background:var(--bg)}
.seg button{font:inherit;color:var(--ink-soft);background:none;border:0;min-height:40px;padding:.35rem .9rem;cursor:pointer}
.seg button+button{border-left:1px solid var(--rule)}
.seg button[aria-pressed="true"]{background:var(--ink);color:var(--bg)}
.range{display:inline-flex;align-items:center;gap:.6rem;min-height:40px}
.range input{accent-color:var(--ink);width:150px}.range output{min-width:3.2em;color:var(--ink);font-variant-numeric:tabular-nums lining-nums}
.readout{font-family:var(--sans);font-size:.9rem;font-variant-numeric:tabular-nums lining-nums;color:var(--ink-soft);display:flex;flex-wrap:wrap;gap:.3rem 1.4rem;margin-top:.8rem}
.readout .val{color:var(--ink);font-weight:600}
.legend{display:flex;flex-wrap:wrap;gap:.4rem 1.2rem;font-family:var(--sans);font-size:.84rem;color:var(--ink-soft);margin:.7rem 0 0}
.swatch{display:inline-flex;align-items:center;gap:.4rem}.swatch::before{content:"";width:.8rem;height:.18rem;background:currentColor;border-radius:2px}
.swatch.target{color:var(--ink)}.swatch.forward{color:var(--key)}.swatch.reverse{color:var(--val)}.swatch.query{color:var(--qry)}
.two{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}
.panel{background:var(--bg);border-radius:6px;padding:.85rem;min-width:0}
.panel h3{font-family:var(--sans);font-size:.86rem;color:var(--ink-soft);font-weight:500;margin:0 0 .55rem}
table.small{border-collapse:collapse;width:100%;font-family:var(--sans);font-size:.88rem;font-variant-numeric:tabular-nums lining-nums}
table.small th,table.small td{text-align:right;padding:.4rem .45rem;border-bottom:1px solid var(--rule)}
table.small th:first-child,table.small td:first-child{text-align:left}
table.small th{color:var(--ink-faint);font-weight:500}
ul.refs{list-style:none;padding:0;margin:0;font-size:.95rem;line-height:1.55;color:var(--ink-soft)}
ul.refs li{padding-left:1.5em;text-indent:-1.5em;margin-bottom:.7rem;scroll-margin-top:1.5rem}
footer{max-width:660px;margin:4rem auto 0;padding-top:1.5rem;border-top:1px solid var(--rule);font-family:var(--sans);font-size:.9rem;color:var(--ink-faint)}
:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
@media(max-width:700px){.two{grid-template-columns:1fr}}
@media(max-width:560px){body{font-size:1.06rem}.page{padding-top:1.5rem}figure.fig{margin-left:-.5rem;margin-right:-.5rem;padding:.8rem}.range input{width:112px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
