:root{
  --paper:#E7DFC8; --card:#F3EDDA; --ink:#211D15; --umber:#33291C;
  --stamp:#A32E22; --archive:#2E5266; --rule:#C9BC97; --dim:#6E634D;
}
*{box-sizing:border-box}
html,body{margin:0;background:var(--paper);color:var(--ink);
  font:15px/1.55 "Public Sans",system-ui,sans-serif}
a{color:var(--archive)}
:focus-visible{outline:3px solid var(--stamp);outline-offset:2px}

header{background:var(--umber);color:#EDE4CC;padding:14px 22px;
  display:flex;align-items:baseline;gap:18px;flex-wrap:wrap}
header h1{font:600 22px/1 Oswald,Arial Narrow,sans-serif;letter-spacing:.12em;
  text-transform:uppercase;margin:0}
header .sub{font:400 12px "Courier Prime",monospace;color:#B7A87F}
#corpus{margin-left:auto;font:400 12px "Courier Prime",monospace;color:#B7A87F}

nav{display:flex;gap:6px;padding:14px 22px 0;border-bottom:2px solid var(--umber)}
nav button{font:600 13px Oswald,Arial Narrow,sans-serif;letter-spacing:.1em;
  text-transform:uppercase;border:2px solid var(--umber);border-bottom:none;
  background:var(--card);color:var(--ink);padding:8px 18px;cursor:pointer;
  border-radius:8px 8px 0 0;position:relative;top:2px}
nav button[aria-selected=true]{background:var(--umber);color:#EDE4CC}

main{max-width:1060px;margin:0 auto;padding:24px 22px 80px}

.searchbar{display:flex;gap:10px;flex-wrap:wrap}
.searchbar input{flex:1;min-width:240px;font:16px "Courier Prime",monospace;
  padding:11px 14px;border:2px solid var(--umber);background:var(--card);color:var(--ink)}
.searchbar select{font:14px "Public Sans",sans-serif;border:2px solid var(--umber);
  background:var(--card);padding:0 10px;color:var(--ink)}
.searchbar button{font:600 14px Oswald,sans-serif;letter-spacing:.08em;
  text-transform:uppercase;background:var(--umber);color:#EDE4CC;border:none;
  padding:0 22px;cursor:pointer}

.topics{display:flex;gap:6px;flex-wrap:wrap;margin:14px 0 4px}
.topics button{font:12px "Courier Prime",monospace;background:transparent;
  border:1px solid var(--dim);color:var(--ink);padding:3px 10px;border-radius:2px;cursor:pointer}
.topics button[aria-pressed=true]{background:var(--ink);color:var(--paper);border-color:var(--ink)}

#meta{font:12px "Courier Prime",monospace;color:var(--dim);margin:14px 2px}

.result{background:var(--card);border:1px solid var(--rule);border-left:5px solid var(--umber);
  padding:12px 16px;margin-bottom:10px;cursor:pointer}
.result:hover{border-left-color:var(--stamp)}
.result .id{font:12px "Courier Prime",monospace;color:var(--dim)}
.result .title{font:600 15px "Public Sans",sans-serif;margin:2px 0 4px}
.result .snip{font:13px "Courier Prime",monospace;color:#3B3323}
.result .snip mark{background:var(--ink);color:var(--paper);padding:0 3px}
.result .tags{margin-top:6px}
.tag{display:inline-block;font:11px Oswald,sans-serif;letter-spacing:.08em;
  text-transform:uppercase;border:1px solid var(--dim);color:var(--dim);
  padding:1px 7px;margin-right:6px}

.pager{display:flex;gap:10px;align-items:center;margin-top:16px;
  font:13px "Courier Prime",monospace}
.pager button{border:1px solid var(--ink);background:var(--card);padding:4px 12px;cursor:pointer}
.pager button:disabled{opacity:.35;cursor:default}

.docview{background:var(--card);border:1px solid var(--rule);padding:26px 30px;position:relative}
.docview .back,.guide .back{font:13px "Courier Prime",monospace;background:none;border:none;
  color:var(--archive);cursor:pointer;padding:0;margin-bottom:14px;text-decoration:underline}
.stamp{position:absolute;top:20px;right:26px;transform:rotate(-7deg);
  border:3px double var(--stamp);color:var(--stamp);font:600 13px Oswald,sans-serif;
  letter-spacing:.14em;text-transform:uppercase;padding:5px 12px;opacity:.85;pointer-events:none}
.docview h2{font:600 20px "Public Sans",sans-serif;margin:4px 0 2px;max-width:78%}
.docview .id{font:13px "Courier Prime",monospace;color:var(--dim)}
.doclinks{margin:14px 0;font:13px "Courier Prime",monospace;display:flex;gap:16px;flex-wrap:wrap}
.docbody{font:14px/1.7 "Courier Prime",monospace;white-space:pre-wrap;
  border-top:1px solid var(--rule);padding-top:18px;margin-top:6px}

.guide{background:var(--card);border:1px solid var(--rule);padding:26px 34px;margin-bottom:26px}
.guide h1,.guide h2,.guide h3{font-family:Oswald,Arial Narrow,sans-serif;
  letter-spacing:.05em;text-transform:uppercase}
.guide h1{font-size:24px;border-bottom:2px solid var(--umber);padding-bottom:8px}
.guide code,.guide pre{font-family:"Courier Prime",monospace;background:var(--paper);padding:1px 5px}
.guide blockquote{border-left:4px solid var(--rule);margin:0;padding:2px 16px;color:#4A4131}
.toc{border:1px dashed var(--dim);background:var(--paper);padding:10px 16px;margin:16px 0;
  font:13px "Public Sans",sans-serif}
.toc strong{font:600 12px Oswald,sans-serif;letter-spacing:.1em;text-transform:uppercase;color:var(--dim)}
.toc a{display:inline-block;margin:3px 14px 3px 0;color:var(--archive)}

.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px}
.gallery figure{margin:0;background:var(--card);border:1px solid var(--rule);padding:10px}
.gallery img{width:100%;display:block}
.gallery figcaption{font:12px "Courier Prime",monospace;color:var(--dim);padding-top:6px}
img.zoom{cursor:zoom-in;transition:filter .12s}
img.zoom:hover{filter:brightness(1.04)}
.lightbox{position:fixed;inset:0;background:rgba(20,17,12,.93);display:none;
  align-items:center;justify-content:center;z-index:1000;cursor:zoom-out;padding:2vmin}
.lightbox.open{display:flex}
.lightbox img{max-width:97vw;max-height:97vh;object-fit:contain;border:1px solid #000;
  box-shadow:0 8px 48px rgba(0,0,0,.6);cursor:default}
.lightbox .close{position:fixed;top:14px;right:22px;font:400 40px/1 Arial,sans-serif;
  color:var(--paper);background:none;border:none;cursor:pointer;opacity:.8}
.lightbox .close:hover{opacity:1}

.sheetgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px}
.sheetcard{background:var(--card);border:1px solid var(--rule);border-top:5px solid var(--umber);
  padding:14px 16px;cursor:pointer;text-align:left;font:inherit;color:inherit}
.sheetcard:hover{border-top-color:var(--stamp)}
.sheetcard .name{font:600 16px Oswald,Arial Narrow,sans-serif;letter-spacing:.05em;text-transform:uppercase}
.sheetcard .alias{font:12px "Courier Prime",monospace;color:var(--dim);margin-top:2px}
.sheetcard .rel{font:11px "Public Sans",sans-serif;color:var(--dim);margin-top:8px}
.sheet{background:var(--card);border:1px solid var(--rule);padding:26px 34px}
.cardfig{margin:20px 0;text-align:center}
.cardfig img{max-width:100%;height:auto;border:1px solid var(--rule);box-shadow:0 1px 4px rgba(0,0,0,.2)}
.cardfig figcaption{font:11px "Courier Prime",monospace;color:var(--dim);margin-top:6px;letter-spacing:.04em}
.sheet .kicker{font:12px "Courier Prime",monospace;color:var(--dim)}
.sheet h1{font:600 26px Oswald,Arial Narrow,sans-serif;letter-spacing:.06em;text-transform:uppercase;margin:4px 0 2px}
.sheet h2{font:600 15px Oswald,sans-serif;letter-spacing:.08em;text-transform:uppercase;
  border-bottom:1px solid var(--rule);padding-bottom:4px;margin-top:26px}
.sheet a[data-concept]{color:var(--stamp);text-decoration-style:dotted}
.relchips{display:flex;gap:8px;flex-wrap:wrap;margin-top:18px}
.relchips button{font:12px "Courier Prime",monospace;background:var(--paper);
  border:1px solid var(--dim);padding:4px 12px;cursor:pointer;color:var(--ink)}
.relchips button:hover{border-color:var(--stamp);color:var(--stamp)}
.guideimgs{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px;
  border:1px dashed var(--dim);padding:12px;margin:16px 0}
.guideimgs img{width:100%;display:block}
.statgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}
.stat{background:var(--card);border:1px solid var(--rule);padding:14px 18px}
.stat .k{font:600 26px Oswald,sans-serif}
.stat .l{font:12px "Courier Prime",monospace;color:var(--dim)}
.empty{font:14px "Courier Prime",monospace;color:var(--dim);padding:30px 4px}

@media (prefers-reduced-motion:no-preference){
  .result{transition:border-color .12s}
}
@media (max-width:640px){
  .docview .stamp{position:static;display:inline-block;margin-bottom:10px}
  .docview h2{max-width:100%}
}