:root {
  --ink: #1d1d1b; --muted: #5a5a55; --line: #e6e4df; --soft: #f6f5f2;
  --accent: #2a78d6; --accent-ink: #1c5cab; --side: 290px;
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: 16px; }
body { margin: 0; background: #fff; color: var(--ink);
  font: 16px/1.62 -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; }

/* side contents */
#toc { position: fixed; inset: 0 auto 0 0; width: var(--side); overflow-y: auto; padding: 24px 16px 40px;
  background: var(--soft); border-right: 1px solid var(--line); font-size: 13.5px; line-height: 1.4; }
#toc .brand { display: block; font-weight: 700; font-size: 15px; color: var(--ink); text-decoration: none; }
#toc .sub { color: var(--muted); font-size: 12px; margin: 2px 0 16px; }
#toc ul { list-style: none; margin: 0; padding: 0; }
#toc > ul > li { margin-top: 10px; }
#toc > ul > li > a { font-weight: 600; }
#toc ul ul { padding-left: 12px; border-left: 1px solid var(--line); margin: 4px 0 0 2px; }
#toc a { display: block; padding: 3px 6px; border-radius: 6px; color: var(--muted); text-decoration: none; }
#toc a:hover { color: var(--ink); background: #ecebe7; }
#toc a.active { color: var(--accent-ink); background: #e3eefb; }
#toc-toggle { display: none; }

/* content */
main { margin-left: var(--side); padding: 32px clamp(16px, 4vw, 56px) 80px; max-width: calc(var(--side) + 1040px); }
main > * { max-width: 1000px; }
h1 { font-size: 2rem; line-height: 1.2; margin: 8px 0 8px; }
h2 { font-size: 1.6rem; margin: 56px 0 8px; padding-top: 16px; border-top: 2px solid var(--ink); }
h3 { font-size: 1.25rem; margin: 40px 0 4px; padding-top: 12px; border-top: 1px solid var(--line); }
h4 { font-size: 1.02rem; margin: 28px 0 6px; color: var(--accent-ink); }
p, li { max-width: 78ch; }
a { color: var(--accent-ink); }
img { max-width: 100%; height: auto; display: block; margin: 12px 0 18px; border-radius: 4px; }
blockquote { margin: 12px 0; padding: 8px 14px; background: var(--soft); border-left: 3px solid var(--accent); color: var(--muted); }
blockquote p { margin: 4px 0; }
code { font-size: 0.9em; background: var(--soft); padding: 1px 4px; border-radius: 4px; }
sub { font-size: 12px; color: var(--muted); }
hr { border: 0; border-top: 1px solid var(--line); margin: 24px 0; }

/* tables scroll inside themselves, never the page */
table { display: block; overflow-x: auto; border-collapse: collapse; font-size: 13.5px; margin: 10px 0 20px; max-width: 100%; }
th, td { padding: 5px 10px; border-bottom: 1px solid var(--line); text-align: left; vertical-align: top; }
th { background: var(--soft); font-weight: 600; white-space: nowrap; }
td { font-variant-numeric: tabular-nums; }
tbody tr:hover { background: #fafaf8; }

/* navigation bar lines inside the report */
p > strong:only-child > a { margin-right: 2px; }

@media (max-width: 900px) {
  #toc { transform: translateX(-100%); transition: transform .2s ease; z-index: 20; box-shadow: 4px 0 16px rgba(0,0,0,.08); }
  #toc.open { transform: none; }
  #toc-toggle { display: block; position: fixed; right: 16px; bottom: calc(16px + env(safe-area-inset-bottom, 0px)); z-index: 30;
    padding: 10px 16px; border: 0; border-radius: 20px; background: var(--ink); color: #fff; font: 600 14px/1 inherit; cursor: pointer; }
  main { margin-left: 0; padding-top: calc(20px + env(safe-area-inset-top, 0px)); }
  h1 { font-size: 1.6rem; }
}
@media print { #toc, #toc-toggle { display: none; } main { margin: 0; } }
