:root{
  --ink:#1A2236; --ink-2:#4A5266; --ink-3:#5E5648; --terra:#B25E2E;
  --parchment:#FAF8F4; --card:#FFFFFF; --rule:#E3DED4; --rule-2:#D2CBBE;
  --green:#3F6B52;
  --serif:'Playfair Display',Georgia,'Times New Roman',serif;
  --sans:'DM Sans',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;
  --mono:'JetBrains Mono',ui-monospace,SFMono-Regular,Menlo,monospace;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--parchment);color:var(--ink);
  font:400 16px/1.6 var(--sans)}
a{color:var(--terra)}
a:hover{color:#8f4a24}
.wrap{max-width:900px;margin:0 auto;padding:28px 20px 72px}
.wrap-wide{max-width:1140px}
header.top{border-bottom:1px solid var(--rule);background:var(--card)}
header.top .inner{max-width:1140px;margin:0 auto;padding:14px 20px;
  display:flex;align-items:baseline;gap:14px;flex-wrap:wrap}
header.top .brand{font:600 19px var(--serif);color:var(--ink);text-decoration:none}
header.top .tag{font:400 12.5px var(--mono);color:var(--ink-2)}
header.top .spacer{margin-left:auto}
h1{font:600 30px/1.25 var(--serif);margin:0 0 10px}
h2{font:600 20px/1.3 var(--serif);margin:32px 0 10px}
.meta{font:400 14px var(--mono);color:var(--ink-2);margin:0 0 20px}
.card{background:var(--card);border:1px solid var(--rule);border-radius:10px;
  padding:20px 22px;margin:0 0 20px}
.attr{background:var(--card);border:1px solid var(--rule-2);border-left:4px solid var(--green);
  border-radius:8px;padding:16px 18px;margin:0 0 20px;font-size:15px}
.attr p{margin:0 0 8px}
.attr p:last-child{margin-bottom:0}
.attr-citation{font-weight:500}
.attr-licence,.attr-doi,.attr-redistribution,.attr-sharealike{color:var(--ink-2);font-size:14.5px}
.attr-sharealike{color:var(--green);font-weight:500}
.actions{display:flex;gap:10px;flex-wrap:wrap;margin:0 0 20px}
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:44px;
  padding:10px 18px;border-radius:8px;text-decoration:none;
  font:500 15px var(--sans);border:1px solid var(--rule-2);background:var(--card);color:var(--ink);
  cursor:pointer}
.btn-primary{background:var(--terra);border-color:var(--terra);color:#fff}
.btn-primary:hover{background:#8f4a24;color:#fff}
.btn-pub{background:var(--green);border-color:var(--green);color:#fff}
.btn-pub:hover{background:#33573f;color:#fff}
.viewer{border:1px solid var(--rule);border-radius:10px;overflow:hidden;background:var(--card);
  height:78vh;min-height:460px}
.viewer object,.viewer iframe{width:100%;height:100%;border:0;display:block}
.viewer .fallback{padding:28px;font-size:15px;color:var(--ink-2)}
.note{font-size:14.5px;color:var(--ink-2)}

/* ---- finder controls ---------------------------------------------------- */
/* Hidden in the served HTML and revealed by finder.js. Without script the
   search box and the three selects do nothing at all, and a control that does
   nothing is worse than no control: it invites a student to type a query and
   watch the page ignore it. The paginated list underneath needs no script. */
.finder{margin:0 0 16px}
.finder[hidden]{display:none}
.search-row{display:block;margin:0 0 10px}
.search-row input{width:100%;font:400 16px var(--sans);color:var(--ink);
  background:var(--card);border:1px solid var(--rule-2);border-radius:9px;
  padding:0 13px;min-height:48px}
.search-row input:focus{outline:2px solid var(--terra);outline-offset:1px}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;
  clip:rect(0 0 0 0);white-space:nowrap;border:0}
.filters-panel{background:var(--card);border:1px solid var(--rule-2);border-radius:9px}
.filters-panel>summary{display:flex;align-items:center;gap:9px;min-height:46px;
  padding:0 14px;cursor:pointer;font:500 15px var(--sans);color:var(--ink);
  list-style:none;user-select:none}
.filters-panel>summary::-webkit-details-marker{display:none}
.filters-panel>summary::after{content:'▾';margin-left:auto;color:var(--ink-2);font-size:13px}
.filters-panel[open]>summary::after{content:'▴'}
.fp-tag{font:400 12px var(--mono);color:var(--terra)}
.fp-body{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-end;
  padding:4px 14px 14px;border-top:1px solid var(--rule)}
.fp-body label{display:flex;flex-direction:column;gap:5px;font:500 13px var(--sans);color:var(--ink-2)}
.fp-body select{font:400 15px var(--sans);color:var(--ink);background:var(--card);
  border:1px solid var(--rule-2);border-radius:8px;padding:0 11px;min-width:170px;min-height:44px}
.count{font:400 14px var(--mono);color:var(--ink-2);margin:0 0 14px}
ul.results{list-style:none;margin:0 0 4px;padding:0}
ul.results li{background:var(--card);border:1px solid var(--rule);border-radius:10px;
  padding:15px 17px;margin:0 0 11px;overflow-wrap:break-word}
ul.results .t{font:500 17px/1.35 var(--serif);margin:0 0 5px}
ul.results .t a{text-decoration:none;color:var(--ink);display:inline-block;padding:2px 0}
ul.results .t a:hover{color:var(--terra)}
ul.results .a{font-size:14.5px;color:var(--ink-2);margin:0 0 6px}
ul.results .m{font:400 12.5px var(--mono);color:var(--ink-3)}
ul.results li.guide{border-left:4px solid var(--green)}
.pill{display:inline-block;border:1px solid var(--rule-2);border-radius:20px;
  padding:2px 9px;margin-right:6px;font:400 12px var(--mono);color:var(--ink-2)}
.pill-sa{border-color:var(--green);color:var(--green)}
.pill-guide{border-color:var(--green);background:var(--green);color:#fff}
.group-title{font:600 15px var(--sans);color:var(--ink-2);text-transform:uppercase;
  letter-spacing:.06em;margin:22px 0 10px}
.group-title:first-child{margin-top:0}
.more-wrap{margin:2px 0 0}
.empty{background:var(--card);border:1px solid var(--rule);border-radius:10px;padding:20px 22px}
.empty-t{font:500 17px/1.4 var(--serif);margin:0 0 8px}
.empty p{margin:0 0 12px}
.empty p:last-child{margin-bottom:0}

/* ---- pager -------------------------------------------------------------- */
.pager{display:flex;flex-wrap:wrap;gap:7px;align-items:center;margin:18px 0 0;
  padding-top:16px;border-top:1px solid var(--rule)}
.pg{display:inline-flex;align-items:center;justify-content:center;
  min-height:44px;min-width:44px;padding:0 13px;border-radius:8px;
  border:1px solid var(--rule-2);background:var(--card);color:var(--ink);
  text-decoration:none;font:500 14.5px var(--sans)}
.pg:hover{border-color:var(--terra);color:var(--terra)}
.pg-here{background:var(--ink);border-color:var(--ink);color:#fff}
.pg-here:hover{color:#fff}
.pg-off{border-style:dashed;color:var(--ink-2);opacity:.55}
.pg-gap{display:inline-flex;align-items:center;justify-content:center;
  min-height:44px;min-width:22px;color:var(--ink-2)}
.pg-status{font:400 13px var(--mono);color:var(--ink-2);margin-left:auto;padding-left:8px}

footer.foot{border-top:1px solid var(--rule);margin-top:44px;padding-top:18px;
  font-size:14px;color:var(--ink-2)}

/* ---- 640px and below. Checked at 380px. --------------------------------- */
@media(max-width:640px){
  .wrap{padding:20px 15px 56px}
  h1{font-size:25px}
  .viewer{height:62vh;min-height:360px}
  .fp-body{display:grid;grid-template-columns:1fr;gap:12px}
  .fp-body label{width:100%}
  .fp-body select{min-width:0;width:100%}
  .fp-body .btn{width:100%}
  ul.results li{padding:14px 15px}
  ul.results .t{font-size:16.5px}
  ul.results .a{font-size:15px}
  .pager{gap:6px}
  .pg{padding:0 11px;font-size:14px}
  .pg-status{width:100%;margin-left:0;padding-left:0;padding-top:4px}
  .actions .btn{width:100%}
}