:root{
  --bg:#ece3d2; --bg2:#e6dcc7; --panel:#fbf6ec; --panel2:#f4ecdc; --ink:#322c22; --muted:#8a7c64;
  --line:#dccfb6; --line2:#cdbf9f; --accent:#7a5326; --accent2:#a9854a; --gold:#b3924f; --link:#6d4f23;
  --notes:#8a6a35; --ans:#5d6a4a; --book:#7d4a50;
  --upd-bg:#f6edd8; --upd-bd:#cdaf6f; --gap-bg:#f3e3d6; --gap-bd:#cda98c;
  --side:312px; --top:58px;
  --serif:'Iowan Old Style','Palatino Linotype','Book Antiqua',Palatino,Georgia,'Times New Roman',serif;
  --sans:'Segoe UI',Roboto,-apple-system,Helvetica,Arial,'Noto Sans',sans-serif;
  --mono:ui-monospace,Menlo,Consolas,monospace;
  --shadow:0 1px 2px rgba(80,60,30,.06),0 8px 24px rgba(80,60,30,.05);
}
[data-theme="dark"]{
  --bg:#1f1a13; --bg2:#241e15; --panel:#2a2317; --panel2:#322a1b; --ink:#ede3cf; --muted:#b6a888;
  --line:#3d3424; --line2:#4a4030; --accent:#dcb877; --accent2:#d3ad6b; --gold:#d8b777; --link:#e3c489;
  --notes:#caa55f; --ans:#9fb07e; --book:#cf9aa0;
  --upd-bg:#322914; --upd-bd:#8a7233; --gap-bg:#33241c; --gap-bd:#7c5a44;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.65;
  background-image:radial-gradient(1200px 500px at 80% -10%, var(--bg2), transparent)}
a{color:var(--link);text-decoration:none}
a:hover{text-decoration:underline}
h1,h2,h3,h4{font-family:var(--serif)}

.topbar{position:sticky;top:0;z-index:40;height:var(--top);display:flex;align-items:center;gap:12px;padding:0 18px;
  background:linear-gradient(var(--panel),var(--panel2));border-bottom:1px solid var(--line2);
  box-shadow:0 1px 0 rgba(255,255,255,.5) inset, 0 2px 10px rgba(80,60,30,.05)}
.topbar::before{content:"";position:absolute;left:0;right:0;top:0;height:3px;background:linear-gradient(90deg,var(--accent),var(--gold),var(--accent))}
.brand{font-family:var(--serif);font-weight:700;font-size:17px;letter-spacing:.3px;color:var(--accent);white-space:nowrap}
.brand a{color:inherit}
.icon-btn{background:var(--panel);border:1px solid var(--line2);color:var(--ink);border-radius:9px;height:36px;min-width:36px;cursor:pointer;font-size:16px}
.icon-btn:hover{border-color:var(--gold);color:var(--accent)}
.pill{margin-left:auto;background:var(--upd-bg);border:1px solid var(--upd-bd);color:var(--accent);border-radius:999px;padding:7px 14px;cursor:pointer;font-size:13px;white-space:nowrap;font-weight:600}
.pill:hover{border-color:var(--gold)}
.search-wrap{position:relative;flex:1;max-width:540px;margin:0 8px}
#search{width:100%;height:38px;border:1px solid var(--line2);border-radius:10px;background:var(--panel);color:var(--ink);padding:0 14px;font-size:14px;font-family:var(--sans)}
#search:focus{outline:none;border-color:var(--gold);box-shadow:0 0 0 3px rgba(179,146,79,.15)}
#results{position:absolute;top:42px;left:0;right:0;background:var(--panel);border:1px solid var(--line2);border-radius:12px;max-height:64vh;overflow:auto;display:none;box-shadow:var(--shadow)}
#results.open{display:block}
.res{padding:9px 14px;border-bottom:1px solid var(--line);cursor:pointer;font-size:14px}
.res:last-child{border-bottom:none}
.res:hover,.res.sel{background:var(--panel2)}
.res small{color:var(--muted)}

.layout{display:flex;align-items:flex-start}
.sidebar{position:sticky;top:var(--top);height:calc(100vh - var(--top));width:var(--side);flex:0 0 var(--side);
  overflow:auto;background:linear-gradient(var(--panel),var(--bg));border-right:1px solid var(--line2)}
.side-inner{padding:16px 12px 48px}
.nav-root{list-style:none;margin:0;padding:0}
.nav-home a{display:block;font-weight:600;color:var(--accent);padding:8px 10px;border-radius:9px;font-family:var(--serif)}
.nav-home a:hover{background:var(--panel2);text-decoration:none}
.nav-paper{margin:3px 0}
.nav-paper-btn{display:block;width:100%;text-align:left;color:var(--ink);font-weight:700;font-family:var(--serif);
  font-size:14px;padding:9px 10px;border-radius:9px;line-height:1.35;border:1px solid transparent}
.nav-paper-btn:hover{background:var(--panel2);text-decoration:none}
.nav-paper.active>.nav-paper-btn{color:var(--accent);background:var(--panel2);border-color:var(--line2)}
.nav-sub{list-style:none;margin:3px 0 8px 8px;padding:0 0 0 10px;border-left:2px solid var(--line2)}
.nav-sec{display:block;color:var(--muted);font-size:13px;padding:5px 9px;border-radius:7px}
.nav-sec:hover{color:var(--accent);background:var(--panel2);text-decoration:none}
.nav-sec.active{color:var(--accent);font-weight:600;background:var(--panel2)}
.legend{margin-top:20px;padding:11px;border:1px solid var(--line2);border-radius:10px;font-size:12px;color:var(--muted);line-height:2;background:var(--panel)}

.content{flex:1;min-width:0;padding:0 34px 90px;max-width:1000px;margin:0 auto}
.section,.paper,.topic-h,[id]{scroll-margin-top:72px}
.hero{padding:44px 0 16px}
.hero .eyebrow{font-family:var(--serif);font-style:italic;color:var(--accent2);font-size:15px;letter-spacing:.4px}
.hero h1{font-size:38px;line-height:1.15;margin:6px 0 10px;color:var(--accent);letter-spacing:.3px}
.hero p{color:var(--muted);margin:0 0 12px;max-width:74ch;font-size:16px}
.hero-meta{font-size:13px;color:var(--accent2);font-weight:600;letter-spacing:.3px}
.rule{height:1px;background:linear-gradient(90deg,var(--gold),transparent);margin:18px 0 6px}
.scope-note{margin-top:16px;font-size:13.5px;background:var(--gap-bg);border:1px solid var(--gap-bd);border-radius:11px;padding:12px 15px;max-width:78ch;color:var(--ink)}

/* paper cards (home) */
.pcards{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:18px;margin:26px 0}
.pcard{display:block;background:linear-gradient(var(--panel),var(--panel2));border:1px solid var(--line2);border-radius:16px;
  padding:20px 20px 16px;box-shadow:var(--shadow);transition:transform .15s,box-shadow .15s,border-color .15s;position:relative;overflow:hidden}
.pcard::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:linear-gradient(var(--accent),var(--gold))}
.pcard:hover{transform:translateY(-3px);border-color:var(--gold);text-decoration:none;box-shadow:0 10px 30px rgba(80,60,30,.12)}
.pcard h3{margin:0 0 6px;color:var(--accent);font-size:19px;line-height:1.25}
.pcard p{margin:0 0 12px;color:var(--muted);font-size:13.5px;line-height:1.55}
.pcard-meta{font-size:12px;color:var(--accent2);font-weight:600;letter-spacing:.3px}

.paper-head{padding:34px 0 4px}
.paper-head h1{font-size:30px;color:var(--accent);margin:0 0 6px;letter-spacing:.3px}
.paper-head .blurb{color:var(--muted);margin:0 0 8px;max-width:80ch}
.gap-banner{background:var(--gap-bg);border:1px solid var(--gap-bd);border-radius:12px;padding:13px 16px;margin:12px 0 6px;font-size:14px}

.section{background:var(--panel);border:1px solid var(--line2);border-radius:16px;padding:22px 24px;margin:20px 0;box-shadow:var(--shadow)}
.sec-head{display:flex;flex-wrap:wrap;align-items:center;gap:10px;border-bottom:1px solid var(--line);padding-bottom:12px;margin-bottom:8px}
.sec-head h2{font-size:22px;margin:0;color:var(--ink)}
.sec-note{font-size:13px;color:var(--muted);background:var(--panel2);border-radius:9px;padding:7px 11px;margin:9px 0;border:1px solid var(--line)}
.badge{font-size:11.5px;font-weight:600;padding:3px 10px;border-radius:999px;color:#fdf8ee;white-space:nowrap;font-family:var(--sans)}
.b-notes{background:var(--notes)} .b-ans{background:var(--ans)} .b-book{background:var(--book)}

.sec-body h2.topic-h{font-size:19px;margin:24px 0 8px;padding-top:8px;border-top:1px solid var(--line);color:var(--accent)}
.sec-body h3.topic-h{font-size:16.5px;margin:18px 0 5px;color:var(--accent2)}
.anchor{opacity:0;color:var(--muted);font-weight:400;margin-right:6px;text-decoration:none}
.topic-h:hover .anchor{opacity:.6}
.sec-body ul{margin:7px 0 7px 2px;padding-left:24px}
.sec-body li{margin:3px 0}
.sec-body li::marker{color:var(--accent2)}
.sec-body p{margin:9px 0}
.sec-body strong{color:var(--accent)}
.sec-body img{max-width:100%;height:auto;border:1px solid var(--line2);border-radius:12px;background:#fffdf8;display:block;margin:0 auto;padding:6px;box-sha