:root {
  --bg: #FAF8FF;
  --surface: #FFFFFF;
  --text: #2B247C;
  --muted: #4A5568;
  --border: #E6E3EC;
  --primary: #5554D9;
  --highlight: #9F94E8;
  --cool: #AEC0F1;
  --danger: #C53030;
  --success: #2F855A;
  --warning: #D69E2E;
}
* { box-sizing: border-box; }
body { margin: 0; background: var(--bg); color: var(--text); font: 13px/1.35 system-ui, -apple-system, Segoe UI, sans-serif; }
a { color: var(--primary); text-decoration: none; }
a:hover { text-decoration: underline; }
.page { max-width: 1440px; margin: 0 auto; padding: 14px; }
h1 { margin: 4px 0 12px; font-size: 22px; font-weight: 700; }
h2 { margin: 18px 0 8px; font-size: 15px; }
nav { margin-bottom: 8px; }
table { width: 100%; border-collapse: collapse; background: var(--surface); border: 1px solid var(--border); }
th, td { padding: 5px 7px; border-bottom: 1px solid var(--border); vertical-align: top; }
th { position: sticky; top: 0; background: #f0edff; text-align: left; z-index: 1; }
.num { text-align: right; }
.mono { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; }
.small { font-size: 11px; }
.muted { color: var(--muted); }
.bad { color: var(--danger); font-weight: 600; }
.good { color: var(--success); font-weight: 600; }
.warn { color: var(--warning); font-weight: 600; }
.diff { margin: 0 0 12px; padding: 8px; overflow-x: auto; white-space: pre-wrap; background: var(--surface); border: 1px solid var(--border); color: #171236; }
.plot { width: 100%; height: 220px; background: var(--surface); border: 1px solid var(--border); margin-bottom: 12px; }
.plot line { stroke: var(--border); }
.plot circle { opacity: .85; }
.plot text { fill: var(--muted); font-size: 12px; text-anchor: middle; }
.bytegrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(24px, 1fr)); gap: 0; font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: 10px; line-height: 1; }
.byte { display: inline-block; min-width: 24px; padding: 3px 2px; text-align: center; color: #171236; }
.push-data { color: #10275f; }
