/* App styles. The paper/ink look of the original static site (pipeline/render.py) — tokens first; components use tokens only. */

:root{
  --paper:#EDE7DA; --card:#F6F2E9; --ink:#211D14; --faint:#8D8371;
  --rule:#CFC5B0; --stamp:#9E3B26; --need:#7A5C12;
}
*{box-sizing:border-box}
body{margin:0;background:var(--paper);color:var(--ink);
  font:16px/1.55 Georgia,'Times New Roman',serif}
a{color:inherit}
a:focus-visible{outline:2px solid var(--stamp);outline-offset:2px}
.wrap{max-width:60rem;margin:0 auto;padding:1.5rem 1.25rem 4rem}
header.site{border-bottom:3px double var(--ink);padding:1.25rem 0 .75rem;margin-bottom:1.5rem}
.kicker{font:600 .72rem/1 'Franklin Gothic Medium','Arial Narrow',Arial,sans-serif;
  letter-spacing:.22em;text-transform:uppercase;color:var(--faint)}
.kicker a{text-decoration:none}
h1.site{font:700 1.9rem/1.1 'Franklin Gothic Medium','Arial Narrow',Arial,sans-serif;
  letter-spacing:.02em;text-transform:uppercase;margin:.3rem 0 0}
.counts{font:.78rem/1.4 ui-monospace,Consolas,monospace;color:var(--faint);margin-top:.4rem}
nav.top{margin-bottom:1rem;font:.8rem ui-monospace,Consolas,monospace}
nav.top a{margin-right:1rem}

/* letter tiles + index tables */
.letters{display:flex;flex-wrap:wrap;gap:.4rem;margin:1rem 0}
.letters a{display:block;min-width:2.4rem;text-align:center;padding:.5rem .4rem;
  border:1px solid var(--rule);background:var(--card);text-decoration:none;
  font:700 1rem 'Franklin Gothic Medium','Arial Narrow',Arial,sans-serif}
.letters a:hover{border-color:var(--ink)}
.letters .n{display:block;font:.62rem ui-monospace,Consolas,monospace;color:var(--faint)}
table.docs{width:100%;border-collapse:collapse;font-size:.95rem}
table.docs td,table.docs th{padding:.45rem .6rem;border-bottom:1px solid var(--rule);
  text-align:left;vertical-align:baseline}
table.docs th{font:600 .7rem/1 'Franklin Gothic Medium','Arial Narrow',Arial,sans-serif;
  letter-spacing:.14em;text-transform:uppercase;color:var(--faint)}
table.docs td.num{font:.8rem ui-monospace,Consolas,monospace;text-align:right}
table.docs a{font-weight:700;text-decoration-color:var(--rule)}
.status{font:.7rem ui-monospace,Consolas,monospace;color:var(--faint)}

/* entry/entity blocks */
.entry{background:var(--card);border:1px solid var(--rule);margin:0 0 1.4rem;padding:0}
.entry>h2{font:700 1.25rem/1.15 'Franklin Gothic Medium','Arial Narrow',Arial,sans-serif;
  letter-spacing:.03em;text-transform:uppercase;margin:0;
  padding:.7rem .9rem;border-bottom:2px solid var(--ink)}
.entry>h2 .anchor{float:right}
.anchor{font:.68rem/1.8 ui-monospace,Consolas,monospace;color:var(--faint);
  white-space:nowrap;text-decoration:none}
a.anchor:hover{color:var(--stamp)}
.bio,.refs{padding:.55rem .9rem;border-bottom:1px solid var(--rule)}
.bio p{margin:.15rem 0;font-size:.92rem}
.refs p{margin:.15rem 0;font-size:.85rem;font-style:italic;color:#4a4436}
.sect{font:600 .66rem/1 'Franklin Gothic Medium','Arial Narrow',Arial,sans-serif;
  letter-spacing:.18em;text-transform:uppercase;color:var(--faint);margin:0 0 .3rem}
.secthead{font:700 .9rem 'Franklin Gothic Medium','Arial Narrow',Arial,sans-serif;
  letter-spacing:.08em;text-transform:uppercase;
  padding:.5rem .9rem;border-bottom:1px solid var(--rule);background:#EFE9DC}
.yr{display:inline-block;min-width:2.9rem;font:700 .78rem/1.4 ui-monospace,Consolas,monospace;
  color:var(--stamp);margin-right:.35rem}

/* year groups (details/summary) */
details.year{border-bottom:1px solid var(--rule)}
details.year>summary{cursor:pointer;list-style:none;display:flex;align-items:baseline;
  gap:.6rem;padding:.45rem .9rem;background:#EFE9DC;
  font:700 .95rem 'Franklin Gothic Medium','Arial Narrow',Arial,sans-serif;
  letter-spacing:.06em}
details.year>summary::-webkit-details-marker{display:none}
details.year>summary:before{content:"▸";font-size:.7rem;color:var(--faint)}
details.year[open]>summary:before{content:"▾"}
details.year>summary .n{font:.72rem ui-monospace,Consolas,monospace;color:var(--faint);
  font-weight:400;letter-spacing:0}

.item{display:grid;grid-template-columns:1fr 11.5rem;gap:.9rem;
  padding:.75rem .9rem;border-bottom:1px solid var(--rule)}
.item:last-child{border-bottom:none}
.item .attr{font:600 .78rem/1.3 'Franklin Gothic Medium','Arial Narrow',Arial,sans-serif;
  letter-spacing:.06em;text-transform:uppercase;color:#5a523f}
.item .title{font-weight:700;font-size:1.02rem;margin:.1rem 0 .2rem}
.item .title a{text-decoration-color:var(--rule)}
.item .desc{font-size:.9rem;color:#3c362a}
.item .meta{font:.74rem/1.6 ui-monospace,Consolas,monospace;color:var(--faint);margin-top:.25rem}
.listing{font:.8rem/1.5 ui-monospace,Consolas,monospace;color:#4a4436;background:#EFE9DC;
  border-left:3px solid var(--rule);padding:.35rem .55rem;margin-top:.35rem;
  white-space:pre-wrap}
.rail{text-align:right}
.stamp{display:inline-block;border:2px solid var(--stamp);color:var(--stamp);
  padding:.35rem .55rem;font:700 .74rem/1.5 ui-monospace,Consolas,monospace;
  letter-spacing:.04em;transform:rotate(-1.2deg);text-align:left;max-width:100%}
.need{display:inline-block;border:2px dashed var(--need);color:var(--need);
  padding:.35rem .55rem;font:700 .74rem/1.4 ui-monospace,Consolas,monospace;
  transform:rotate(-.6deg)}
.nostatus{font:.72rem ui-monospace,Consolas,monospace;color:var(--faint)}
.flag{font:.68rem ui-monospace,Consolas,monospace;color:var(--stamp)}

/* figures: caption + images as one unit */
.figures{grid-column:1 / -1;display:flex;flex-direction:column;gap:.5rem;margin-top:.25rem}
.figure{border-left:3px solid var(--rule);padding:.3rem 0 .3rem .6rem}
.figure .cap{font-size:.84rem;color:#4a4436;margin:0 0 .3rem}
.figure .cap .anchor{margin-left:.4rem}
.thumbs{display:flex;flex-wrap:wrap;gap:.5rem}
.thumbs a{display:block;border:1px solid var(--rule);background:#fff;padding:3px}
.thumbs img{display:block;height:130px;width:auto;max-width:240px;object-fit:contain}
.missing{display:flex;align-items:center;justify-content:center;height:130px;width:100px;
  font:.65rem ui-monospace,Consolas,monospace;color:var(--faint);
  border:1px dashed var(--rule);background:#fff}

/* search */
.searchbox{width:100%;font:1.05rem Georgia,serif;padding:.6rem .8rem;
  border:1px solid var(--rule);background:var(--card)}
.filters{font:.78rem ui-monospace,Consolas,monospace;color:var(--faint);margin:.5rem 0 1rem}
.filters label{margin-right:1rem;cursor:pointer}
#results .hit{padding:.4rem 0;border-bottom:1px solid var(--rule);font-size:.95rem}
#results .hit .tag{display:inline-block;min-width:5.4rem;
  font:600 .66rem/1.6 'Franklin Gothic Medium','Arial Narrow',Arial,sans-serif;
  letter-spacing:.12em;text-transform:uppercase;color:var(--faint)}
#results .hit .x{font:.78rem ui-monospace,Consolas,monospace;color:var(--faint);
  margin-left:.5rem}
#status{font:.78rem ui-monospace,Consolas,monospace;color:var(--faint)}

@media (max-width:720px){.item{grid-template-columns:1fr}.rail{text-align:left}}
@media print{.entry{break-inside:avoid;border-color:#999}
  details.year{display:block}details.year>summary:before{content:""}}

/* --- app additions --- */
header.bar{display:flex;flex-wrap:wrap;align-items:center;gap:.6rem 1.2rem;border-bottom:1px solid var(--rule);
  padding:.6rem 1.25rem;font:.8rem ui-monospace,Consolas,monospace;background:var(--card)}
header.bar a{text-decoration:none}
header.bar a:hover{text-decoration:underline}
header.bar .brand{font:700 .85rem 'Franklin Gothic Medium','Arial Narrow',Arial,sans-serif;letter-spacing:.12em;text-transform:uppercase}
header.bar form{margin-left:auto;display:flex;gap:.4rem}
header.bar input{font:.85rem Georgia,serif;padding:.3rem .5rem;border:1px solid var(--rule);background:#fff;min-width:14rem}
header.bar button,.btn{font:.8rem ui-monospace,Consolas,monospace;padding:.3rem .7rem;border:1px solid var(--ink);background:var(--paper);cursor:pointer}
.loading,.err{font:.85rem ui-monospace,Consolas,monospace;color:var(--faint);padding:2rem 0}
.err{color:var(--stamp)}
.also{font:.74rem/1.5 ui-monospace,Consolas,monospace;color:#5a523f;margin-top:.3rem}
.also a{color:var(--stamp)}
.pager{display:flex;gap:1rem;align-items:center;margin:1rem 0;font:.8rem ui-monospace,Consolas,monospace}
mark{background:#E9D9A6;color:inherit;padding:0 .1em}
.signin{max-width:26rem;margin:4rem auto;background:var(--card);border:1px solid var(--rule);padding:1.5rem}
.signin input{width:100%;font:1rem Georgia,serif;padding:.5rem .6rem;border:1px solid var(--rule);margin:.6rem 0}
.signin .note{font:.8rem ui-monospace,Consolas,monospace;color:var(--faint)}
.docrow{display:grid;grid-template-columns:1fr 11.5rem;gap:.9rem}
