/* Woodstock Letters — research edition. Same visual family as Ignatiana:
   every colour is a variable, the light theme is one block. */
:root{
  color-scheme:dark;
  --bg:#100e0c; --bg2:#17140f; --panel:#1c1813; --panel2:#241f18;
  --line:#332c22; --line2:#463c2d;
  --fg:#f0e9dd; --fg2:#bcae99; --fg3:#8a7d6a;
  --acc:#c9a227; --acc2:#9db8a4; --acc3:#c07a5a;
  --ok:#7fae86; --warn:#c07a5a; --muted:#5b5244;
  --topbar:rgba(16,14,12,.94); --accfg:#171208;
  --markbg:rgba(211,162,74,.28);
  /* atlas: the section in which a term has its centre of gravity */
  --sec-articles:#9db8a4; --sec-varia:#c9a227; --sec-obituary:#c07a5a; --sec-supplement:#8fa3c9;
  /* people map: the class a person's title gives */
  --cls-father:#c9a227; --cls-brother:#9db8a4; --cls-mr:#8fa3c9; --cls-prelate:#c07a5a; --cls-pope:#c98fae;
  --serif:"Iowan Old Style","Palatino Linotype",Palatino,"Book Antiqua",Georgia,serif;
  --sans:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",sans-serif;
  --mono:"SF Mono",ui-monospace,"Cascadia Mono",Menlo,Consolas,monospace;
  --r:10px;
}
html[data-theme="light"]{
  color-scheme:light;
  --bg:#faf7f0; --bg2:#f2ecdf; --panel:#ffffff; --panel2:#f6f0e3;
  --line:#ddd2bd; --line2:#c7b99d;
  --fg:#211c14; --fg2:#5b5040; --fg3:#7d705c;
  --acc:#8a6b10; --acc2:#42604d; --acc3:#9c4f30;
  --ok:#3f6f4a; --warn:#9c4f30; --muted:#cfc4ae;
  --topbar:rgba(250,247,240,.94); --accfg:#fffdf5;
  --markbg:rgba(138,107,16,.18);
  --sec-articles:#42604d; --sec-varia:#8a6b10; --sec-obituary:#9c4f30; --sec-supplement:#4a6391;
  --cls-father:#8a6b10; --cls-brother:#42604d; --cls-mr:#4a6391; --cls-prelate:#9c4f30; --cls-pope:#8d4f73;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{background:var(--bg);color:var(--fg);font-family:var(--sans);font-size:15.5px;line-height:1.62;-webkit-font-smoothing:antialiased}
a{color:var(--acc2);text-decoration:none}
a:hover{text-decoration:underline}
h1,h2,h3{font-family:var(--serif);font-weight:600;line-height:1.25;margin:0 0 .5em}
h1{font-size:2.05rem;letter-spacing:-.01em}
h2{font-size:1.4rem}
h3{font-size:1.1rem}
p{margin:0 0 1em}
.fine{color:var(--fg3);font-size:.82rem}
.mono{font-family:var(--mono);font-size:.82rem}
:focus-visible{outline:2px solid var(--acc);outline-offset:2px}

/* topbar */
.topbar{position:sticky;top:0;z-index:40;display:flex;align-items:center;gap:1rem;padding:.6rem 1.4rem;background:var(--topbar);backdrop-filter:blur(12px);border-bottom:1px solid var(--line);flex-wrap:wrap}
.brand{display:flex;align-items:center;gap:.7rem;color:var(--fg)}
.brand:hover{text-decoration:none}
.brand svg{width:1.7rem;height:1.7rem;flex:none}
.brandtext{display:flex;flex-direction:column;line-height:1.25}
.brandtext strong{font-family:var(--serif);font-size:.98rem;font-weight:600}
.brandtext em{font-style:normal;font-size:.71rem;color:var(--fg3)}
#nav{display:flex;gap:.15rem;flex-wrap:wrap;margin-left:auto}
#nav a{color:var(--fg2);padding:.32rem .62rem;border-radius:7px;font-size:.84rem;white-space:nowrap}
#nav a:hover{background:var(--panel);color:var(--fg);text-decoration:none}
#nav a.active{background:var(--panel2);color:var(--acc)}
.iconbtn{background:none;border:1px solid var(--line2);color:var(--fg2);border-radius:99px;padding:.3rem .6rem;cursor:pointer;font-size:.8rem}
.iconbtn:hover{color:var(--fg);border-color:var(--acc)}

main{max-width:1080px;margin:0 auto;padding:2.2rem 1.4rem 4rem}
.lede{font-family:var(--serif);font-size:1.12rem;color:var(--fg2);max-width:46rem}
.kicker{font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:var(--acc);margin-bottom:.4rem}

/* stats */
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.8rem;margin:1.6rem 0 2rem}
.stat{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:.9rem 1rem}
.stat b{display:block;font-family:var(--serif);font-size:1.6rem;font-weight:600}
.stat span{font-size:.8rem;color:var(--fg3)}

/* run strip: one cell per volume */
.run{display:grid;grid-template-columns:repeat(auto-fill,minmax(34px,1fr));gap:4px;margin:.8rem 0 .6rem}
.run a{display:flex;flex-direction:column;align-items:center;justify-content:center;height:44px;border-radius:6px;font-size:.72rem;line-height:1.1;color:var(--fg2);background:var(--panel);border:1px solid var(--line)}
.run a small{font-size:.6rem;color:var(--fg3)}
.run a:hover{text-decoration:none;border-color:var(--acc)}
.run a.t-full{background:var(--acc);color:var(--accfg);border-color:var(--acc)}
.run a.t-full small{color:var(--accfg);opacity:.75}
.run a.t-pd{border-color:var(--acc);border-style:dashed}
.run a.t-check{background:var(--bg2)}
.run a.t-closed{background:var(--bg);color:var(--fg3)}
.legend{display:flex;flex-wrap:wrap;gap:1rem;font-size:.78rem;color:var(--fg3)}
.legend i{display:inline-block;width:.9rem;height:.9rem;border-radius:3px;vertical-align:-2px;margin-right:.35rem;border:1px solid var(--line2)}
.legend .t-full{background:var(--acc);border-color:var(--acc)}
.legend .t-pd{border:1px dashed var(--acc)}
.legend .t-check{background:var(--bg2)}
.legend .t-closed{background:var(--bg)}

/* cards and lists */
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:1.2rem 1.3rem;margin:0 0 1.2rem}
.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1rem}
table{width:100%;border-collapse:collapse;font-size:.88rem}
th,td{text-align:left;padding:.45rem .6rem;border-bottom:1px solid var(--line);vertical-align:top}
th{font-weight:600;color:var(--fg3);font-size:.75rem;text-transform:uppercase;letter-spacing:.06em}
.tag{display:inline-block;font-size:.7rem;padding:.08rem .45rem;border-radius:99px;border:1px solid var(--line2);color:var(--fg2);white-space:nowrap}
.tag.full{border-color:var(--acc);color:var(--acc)}
.tag.check{border-color:var(--warn);color:var(--warn)}
.toc{list-style:none;margin:0;padding:0}
.toc li{display:grid;grid-template-columns:4.2rem 1fr;gap:.8rem;padding:.55rem 0;border-bottom:1px solid var(--line)}
.toc .pg{font-family:var(--mono);font-size:.8rem;color:var(--fg3);padding-top:.15rem}
.toc .ti{font-family:var(--serif);font-size:1.02rem}
.toc .au{font-size:.82rem;color:var(--fg3)}
.toc h3{margin:1.6rem 0 .3rem;font-size:.78rem;letter-spacing:.1em;text-transform:uppercase;color:var(--acc);font-family:var(--sans)}

/* reader */
.reader{display:grid;grid-template-columns:minmax(0,1fr) 230px;gap:2.2rem}
.reader article{font-family:var(--serif);font-size:1.08rem;line-height:1.72;max-width:40rem}
.reader article p{margin:0 0 .9em;text-align:justify;hyphens:auto}
.reader article h4{font-family:var(--sans);font-size:.8rem;letter-spacing:.08em;text-transform:uppercase;color:var(--fg2);margin:1.6em 0 .6em}
.pb{font-family:var(--mono);font-size:.7rem;color:var(--acc);border:1px solid var(--line2);border-radius:5px;padding:0 .3rem;margin:0 .25rem;white-space:nowrap;vertical-align:.1em}
.pb:hover{border-color:var(--acc);text-decoration:none}
.pb.hit{background:var(--markbg)}
mark{background:var(--markbg);color:inherit;border-radius:2px}
.side{position:sticky;top:5rem;align-self:start;font-size:.84rem}
.side .card{padding:1rem}
.side h3{font-size:.95rem}
.btn{display:inline-block;background:var(--panel2);border:1px solid var(--line2);color:var(--fg);border-radius:7px;padding:.35rem .7rem;font-size:.82rem;cursor:pointer;font-family:var(--sans)}
.btn:hover{border-color:var(--acc);text-decoration:none}
.citebox{font-family:var(--mono);font-size:.76rem;background:var(--bg2);border:1px solid var(--line);border-radius:6px;padding:.5rem;margin:.5rem 0;word-break:break-word}
.pager{display:flex;justify-content:space-between;gap:1rem;margin-top:2rem;padding-top:1rem;border-top:1px solid var(--line);font-size:.88rem}

/* search */
.searchbar{display:flex;gap:.5rem;margin:1rem 0 1.4rem}
.searchbar input{flex:1;background:var(--panel);border:1px solid var(--line2);color:var(--fg);border-radius:8px;padding:.6rem .8rem;font-size:1rem;font-family:var(--sans)}
.kwic{padding:.6rem 0;border-bottom:1px solid var(--line)}
.kwic .src{font-size:.78rem;color:var(--fg3)}
.kwic .ctx{font-family:var(--serif)}

/* concordance and atlas */
.chip{display:inline-block;background:var(--panel);border:1px solid var(--line2);color:var(--fg2);border-radius:999px;padding:.15rem .6rem;margin:0 .3rem .35rem 0;font-size:.78rem;cursor:pointer;font-family:var(--sans)}
.chip:hover{border-color:var(--acc)}
.chip.on{background:var(--panel2);border-color:var(--acc);color:var(--fg)}
.chip .n{color:var(--fg3);margin-left:.25rem}
.tools{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;margin:0 0 1rem;font-size:.82rem;color:var(--fg3)}
.tools select{background:var(--panel);color:var(--fg);border:1px solid var(--line2);border-radius:7px;padding:.3rem .4rem;font-family:var(--sans)}
.scroll{overflow-x:auto}
table.conc{border-collapse:collapse;width:100%;font-family:var(--serif);font-size:.95rem}
table.conc td{border-bottom:1px solid var(--line);padding:.3rem .45rem;vertical-align:top}
table.conc .l{text-align:right;color:var(--fg2);white-space:nowrap}
table.conc .k{color:var(--acc);font-weight:600;white-space:nowrap}
table.conc .r{color:var(--fg2);white-space:nowrap}
table.conc .ref{font-family:var(--mono);font-size:.72rem;white-space:nowrap}
table.dist{border-collapse:collapse;font-size:.84rem;width:100%}
table.dist td{padding:.15rem .4rem}
table.dist .num{text-align:right;font-family:var(--mono);font-size:.78rem}
table.bio{border-collapse:collapse;font-size:.84rem;margin:.3rem 0 .2rem}
table.bio td{padding:.1rem .6rem .1rem 0;vertical-align:top}
table.bio td:first-child{color:var(--muted);white-space:nowrap}
.bar{height:8px;border-radius:4px;background:var(--panel2)}
.bar i{display:block;height:8px;border-radius:4px;background:var(--acc)}
.chartbox{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:.8rem;margin-bottom:1rem}
.chartbox canvas{display:block;width:100%;cursor:grab}
.legend .sec{border:0}
.chip .sw{display:inline-block;width:.6rem;height:.6rem;border-radius:2px;margin-right:.3rem}
.chip:not(.on) .sw{opacity:.35}
ul.plain{list-style:none;padding:0;margin:.3rem 0 .9rem;font-size:.86rem}
ul.plain li{margin:.15rem 0}

.prose{max-width:46rem}
.prose h2{margin-top:2rem}

/* plates: page images cut from the public-domain scans (data/plates.json, assets/plates/) */
.hero{display:grid;grid-template-columns:minmax(0,3fr) minmax(0,2fr);gap:1rem;margin:1.6rem 0 .4rem}
.hero figure,.plate{margin:0}
.plate img{display:block;width:100%;height:auto;border-radius:6px;border:1px solid var(--line);background:#fff}
.plate figcaption{font-size:.78rem;color:var(--fg3);margin:.45rem 0 0;line-height:1.45}
.plate figcaption b{color:var(--fg2);font-weight:500}
.plate figcaption a{color:var(--fg3);text-decoration:underline dotted}
.plate.portrait img{max-width:320px;margin:0 auto}
.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:1rem;margin:.6rem 0 1.6rem}
.gallery .plate img{aspect-ratio:4/3;object-fit:cover;object-position:top}
.gallery .plate figcaption{font-size:.74rem}
.hero .plate img{aspect-ratio:16/10;object-fit:cover}
.plate a.zoom{display:block}
.plate a.zoom:hover img{border-color:var(--acc)}

/* reading paths */
ol.stations{list-style:none;padding:0;margin:1.4rem 0;max-width:46rem}
ol.stations li{padding:.9rem 0;border-top:1px solid var(--line)}
.st-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:.5rem .7rem}
.st-n{display:inline-flex;width:1.6rem;height:1.6rem;align-items:center;justify-content:center;border-radius:99px;background:var(--acc);color:var(--accfg);font-size:.78rem;font-weight:600;flex:none}
.st-head .ti{font-family:var(--serif);font-size:1.08rem}
.st-note{font-family:var(--serif);color:var(--fg2);margin:.4rem 0 0 2.3rem}
ol.stations table.bio{margin-left:2.3rem}

/* register */
table.reg td{padding:.4rem .5rem;font-size:.9rem}
table.reg td.h{width:18rem;font-family:var(--serif)}
table.reg .pb{margin:0 .3rem .25rem 0;display:inline-block}
table.reg .pb.ext{color:var(--fg3);border-style:dashed}
table.reg .pb small{font-size:.62rem;color:var(--fg3)}

/* essay and legal pages */
.essay{max-width:46rem}
.essay p{font-family:var(--serif);font-size:1.06rem;line-height:1.7;text-align:justify;hyphens:auto}
.essay h2{margin-top:2.2rem}
.essay .abstract{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:1rem 1.2rem;margin:1.2rem 0 1.6rem}
.essay .abstract p{font-family:var(--sans);font-size:.92rem;text-align:left;margin:0 0 .6em;hyphens:none}
.essay .refs p{font-family:var(--sans);font-size:.84rem;text-align:left;padding-left:1.6rem;text-indent:-1.6rem;margin:0 0 .55em;hyphens:none;color:var(--fg2)}
.essay .note{font-size:.84rem;color:var(--fg3);font-family:var(--sans);text-align:left;hyphens:none}
.essay figure{margin:1.4rem 0}
.legal .card h2{font-size:1.15rem;margin-top:0}
.legal ul{color:var(--fg2);font-size:.93rem}
footer{border-top:1px solid var(--line);color:var(--fg3);font-size:.78rem;padding:1.4rem;text-align:center}

@media (max-width:820px){
  .hero{grid-template-columns:1fr}
  .reader{grid-template-columns:1fr}
  .side{position:static}
  main{padding:1.4rem 16px 3rem}
  .topbar{padding:.6rem 16px}
  .brand{flex:1}
  #nav{margin-left:0;width:100%;order:3}
  h1{font-size:1.6rem}
}

/* discourse: a year-by-year line of a measure, with its band, the jubilees apart and the study's points */
.dchart{display:block;width:100%;height:auto}
.dchart .grid{stroke:var(--line);stroke-width:1}
.dchart .ax{fill:var(--fg3);font-size:11px;font-family:var(--sans)}
.dchart .ev{stroke:var(--line2);stroke-dasharray:3 4;stroke-width:1.5}
.dchart .band{opacity:.18}
.dchart .ln{fill:none;stroke-width:2}
.dchart .pt{cursor:pointer}
.dchart .pt.sel,.dchart .dia.sel{stroke:var(--fg);stroke-width:2}
.dchart .dia{fill:none;stroke:var(--acc);stroke-width:2;cursor:pointer}
.dchart .st{fill:var(--acc3);opacity:.9}
.legend .dia-k{display:inline-block;width:.6rem;height:.6rem;border:2px solid var(--acc);transform:rotate(45deg);margin-right:.35rem;background:none}
.legend .st-k{display:inline-block;width:.6rem;height:.6rem;background:var(--acc3);margin-right:.35rem}
.legend .ev-k{display:inline-block;width:0;height:.8rem;border-left:2px dashed var(--line2);margin-right:.35rem}
.dlist td{vertical-align:top}
