:root{
  --bg:#f8f7f4; --surface:#ffffff; --ink:#1c1b18; --ink-2:#4f4d47; --muted:#7a776f;
  --line:#e6e3dc; --line-2:#d9d5cc; --green:#1f5f44; --green-ink:#174a35; --green-soft:#e3efe8;
  --focus:#2f7a5a; --code:#f1efe9; --radius:10px; color-scheme:light;
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --bg:#17181a; --surface:#1e2023; --ink:#ecebe6; --ink-2:#c4c2bb; --muted:#8f8d85;
    --line:#2b2d31; --line-2:#383b40; --green:#7fc9a4; --green-ink:#9ad9b8; --green-soft:#1d2e26;
    --focus:#8fd6b1; --code:#25282c; color-scheme:dark;
  }
}
:root[data-theme="dark"]{
  --bg:#17181a; --surface:#1e2023; --ink:#ecebe6; --ink-2:#c4c2bb; --muted:#8f8d85;
  --line:#2b2d31; --line-2:#383b40; --green:#7fc9a4; --green-ink:#9ad9b8; --green-soft:#1d2e26;
  --focus:#8fd6b1; --code:#25282c; color-scheme:dark;
}
*{box-sizing:border-box}
html{scroll-padding-top:24px}
body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.6 "Inter",-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased}
a{color:var(--green-ink);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}
a:hover{color:var(--green)}
:focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-radius:4px}
.serif{font-family:"Newsreader",Georgia,"Times New Roman",serif}

.shell{display:grid;grid-template-columns:272px minmax(0,1fr);min-height:100vh}
.side{border-right:1px solid var(--line);background:var(--bg);position:sticky;top:0;height:100vh;overflow:auto;padding:28px 22px 32px;display:flex;flex-direction:column;gap:22px}
.brand{display:flex;align-items:baseline;gap:10px;text-decoration:none;color:var(--ink)}
.brand .name{font-family:"Newsreader",Georgia,serif;font-size:24px;font-weight:500;letter-spacing:-.01em}
.brand .tag{font-size:13px;color:var(--muted)}
.search{position:relative}
.search input{width:100%;padding:10px 12px 10px 36px;border:1px solid var(--line-2);border-radius:8px;background:var(--surface);color:var(--ink);font:inherit;font-size:14px}
.search input::placeholder{color:var(--muted)}
.search svg{position:absolute;left:12px;top:50%;transform:translateY(-50%);width:15px;height:15px;color:var(--muted);pointer-events:none}
.results{position:absolute;left:0;right:0;top:calc(100% + 6px);background:var(--surface);border:1px solid var(--line-2);border-radius:10px;box-shadow:0 12px 32px rgba(0,0,0,.12);z-index:20;max-height:60vh;overflow:auto;display:none}
.results.open{display:block}
.results a{display:block;padding:10px 12px;text-decoration:none;color:var(--ink);border-bottom:1px solid var(--line)}
.results a:last-child{border-bottom:0}
.results a:hover,.results a.active{background:var(--green-soft)}
.results .t{font-weight:600;font-size:14px}
.results .s{font-size:12.5px;color:var(--muted);margin-top:2px}
.results .empty{padding:12px;color:var(--muted);font-size:14px}
.nav h2{font:600 12px/1.4 "Inter",sans-serif;color:var(--muted);margin:14px 0 6px;letter-spacing:.02em}
.nav ul{list-style:none;margin:0;padding:0}
.nav li a{display:block;padding:7px 10px;margin:1px -10px;border-radius:7px;text-decoration:none;color:var(--ink-2);font-size:14.5px;line-height:1.4}
.nav li a:hover{background:var(--green-soft);color:var(--ink)}
.nav li a[aria-current="page"]{background:var(--green-soft);color:var(--green-ink);font-weight:600}
.side .dash{margin-top:auto;font-size:13.5px;color:var(--muted)}

.main{padding:40px 56px 80px;max-width:1120px;width:100%;display:grid;grid-template-columns:minmax(0,680px) 200px;gap:56px}
.crumb{font-size:13.5px;color:var(--muted);margin:0 0 14px}
.crumb a{color:var(--muted);text-decoration:none}
.crumb a:hover{color:var(--ink)}
h1{font-family:"Newsreader",Georgia,serif;font-weight:500;font-size:40px;line-height:1.15;letter-spacing:-.015em;margin:0 0 20px}
.article h2{font-family:"Newsreader",Georgia,serif;font-weight:500;font-size:25px;line-height:1.25;margin:40px 0 10px;letter-spacing:-.01em}
.article h2:first-of-type{margin-top:34px}
.article p{margin:0 0 16px;color:var(--ink-2)}
.article p:first-child{font-size:18px;line-height:1.55;color:var(--ink)}
.article ul,.article ol{padding-left:22px;margin:0 0 16px;color:var(--ink-2)}
.article li{margin:6px 0}
.article li::marker{color:var(--muted)}
.article strong{color:var(--ink);font-weight:600}
.article table{width:100%;border-collapse:collapse;margin:8px 0 22px;font-size:14.5px;display:block;overflow-x:auto}
.article th,.article td{text-align:left;vertical-align:top;padding:10px 12px;border-bottom:1px solid var(--line);color:var(--ink-2)}
.article th{color:var(--ink);font-weight:600;background:var(--code);border-bottom:1px solid var(--line-2)}
.article tr:last-child td{border-bottom:0}
.article tbody tr:nth-child(even) td{background:rgba(0,0,0,.015)}
.article code{background:var(--code);padding:1px 5px;border-radius:4px;font-size:.92em}
.pager{display:flex;justify-content:space-between;gap:16px;margin-top:56px;padding-top:22px;border-top:1px solid var(--line);font-size:14.5px}
.pager a{text-decoration:none;color:var(--ink-2);max-width:48%}
.pager a:hover{color:var(--green-ink)}
.pager .lbl{display:block;font-size:12.5px;color:var(--muted);margin-bottom:2px}
.pager .next{text-align:right;margin-left:auto}
.foot{margin-top:40px;font-size:13.5px;color:var(--muted)}

.toc{position:sticky;top:40px;align-self:start;font-size:13.5px}
.toc h3{font:600 12px/1.4 "Inter",sans-serif;color:var(--muted);margin:6px 0 8px;letter-spacing:.02em}
.toc ul{list-style:none;margin:0;padding:0;border-left:1px solid var(--line)}
.toc li a{display:block;padding:4px 0 4px 12px;color:var(--muted);text-decoration:none;margin-left:-1px;border-left:1px solid transparent;line-height:1.4}
.toc li a:hover,.toc li a.on{color:var(--ink);border-left-color:var(--green)}

/* home */
.home h1{font-size:46px;margin-bottom:8px}
.home .lede{font-size:18px;color:var(--ink-2);margin:0 0 36px;max-width:60ch}
.home h2{font-family:"Newsreader",Georgia,serif;font-weight:500;font-size:22px;margin:30px 0 12px}
.cards{display:grid;grid-template-columns:1fr;gap:10px}
.card{display:block;padding:16px 18px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);text-decoration:none;color:var(--ink)}
.card:hover{border-color:var(--green);color:var(--ink)}
.card .t{font-family:"Newsreader",Georgia,serif;font-size:19px;font-weight:500;line-height:1.3}
.card .x{font-size:14px;color:var(--muted);margin-top:4px}

/* mobile */
.topbar{display:none}
@media (max-width:1100px){.main{grid-template-columns:minmax(0,1fr)}.toc{display:none}}
@media (max-width:820px){
  .shell{display:block}
  .topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 18px;border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--bg);z-index:30}
  .topbar button{font:inherit;font-size:14px;padding:8px 12px;border:1px solid var(--line-2);border-radius:8px;background:var(--surface);color:var(--ink)}
  .side{display:none;position:static;height:auto;border-right:0;border-bottom:1px solid var(--line)}
  .side.open{display:flex}
  .main{padding:28px 20px 60px}
  h1{font-size:32px}
  .home h1{font-size:36px}
}
@media (prefers-reduced-motion:no-preference){.results a,.card,.nav li a{transition:background-color .12s,border-color .12s}}
