/* ==========================================================================
   Data repository: the catalogue (/data) and dataset pages (/data/<slug>).
   Public classes use the dr- prefix (tokens from site.css); the admin editor
   uses dra- (tokens from admin.css).
   ========================================================================== */

.dr-sr { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.dr-i { display: inline-block; flex-shrink: 0; vertical-align: -0.15em; }
.dr-muted { color: var(--muted); }
.dr-small { font-size: 0.86rem; }
.dr-nowrap { white-space: nowrap; }

.dr-h2 { font-size: clamp(1.35rem, 2vw, 1.6rem); margin: 0 0 var(--s-2); }
.dr-h3 { font-size: 1.08rem; margin: 0 0 0.5rem; }

/* ---------------------------------------------------------------- Hero */

.dr-hero { padding-bottom: var(--s-4); }
.dr-hero h1 { max-width: 22ch; }
.dr-hero-dataset h1 { font-size: clamp(2rem, 4vw, 3.3rem); }
.dr-hero .lede { margin-bottom: var(--s-3); }
.dr-crumbs ol { display: flex; flex-wrap: wrap; gap: 0.3rem; margin: 0 0 var(--s-3); padding: 0; list-style: none; font-size: 0.82rem; color: var(--on-ink-muted); }
.dr-crumbs li + li::before { content: "/"; margin-right: 0.3rem; opacity: 0.6; }
.dr-crumbs a { color: var(--on-ink); }
.dr-crumbs a:hover { color: #fff; text-decoration: underline; }
.dr-crumbs [aria-current] { color: var(--on-ink-muted); }
.dr-hero-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 0.4rem 0.8rem; margin: 0; font-size: 0.92rem; color: var(--on-ink); }

.dr-preview-banner { background: #FFF4D6; border-bottom: 1px solid #E9D8A6; color: #5A4710; font-size: 0.92rem; padding: 0.7rem 0; }

/* ------------------------------------------------------------- Licence */

.dr-license {
  display: inline-flex; align-items: center; gap: 0.4em; padding: 0.18rem 0.6rem 0.18rem 0.3rem;
  border: 1px solid var(--line); border-radius: 99px; background: var(--paper);
  font-size: 0.8rem; font-weight: 600; color: var(--ink); text-decoration: none; white-space: nowrap; vertical-align: middle;
}
a.dr-license:hover { border-color: var(--accent); color: var(--accent-dark); }
.dr-license-cc {
  display: inline-grid; place-items: center; width: 1.35em; height: 1.35em; border-radius: 50%;
  border: 1.5px solid currentColor; font-size: 0.72rem; font-weight: 750; line-height: 1; letter-spacing: -0.04em;
}
.dr-license-on-ink { background: transparent; border-color: var(--line-dark); color: #fff; }
a.dr-license-on-ink:hover { color: #fff; border-color: var(--accent-soft); }

/* ------------------------------------------------------------- Filters */

.dr-catalogue { padding-top: var(--s-4); }
.dr-filters {
  display: grid; grid-template-columns: minmax(13rem, 1.6fr) repeat(5, minmax(0, 1fr)) auto; gap: 0.75rem;
  align-items: end; padding: var(--s-2); background: var(--paper); border: 1px solid var(--line); margin: 0 0 var(--s-3);
}
.dr-field { display: flex; flex-direction: column; gap: 0.3rem; min-width: 0; }
.dr-field label { font-size: 0.72rem; font-weight: 650; letter-spacing: 0.1em; text-transform: uppercase; color: var(--muted); }
.dr-field select, .dr-field input {
  font: inherit; font-size: 0.93rem; color: var(--text); background: var(--paper); width: 100%; min-width: 0;
  border: 1px solid #CFC9D9; border-radius: var(--radius); padding: 0.58rem 0.7rem;
}
.dr-field select {
  padding-right: 1.9rem; appearance: none; -webkit-appearance: none; text-overflow: ellipsis;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%235D5B54' stroke-width='1.5'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right 0.7rem center;
}
.dr-field select:focus, .dr-field input:focus { outline: 2px solid var(--accent); outline-offset: 1px; border-color: var(--accent); }
.dr-go {
  font: inherit; font-size: 0.92rem; font-weight: 600; background: var(--ink); color: #fff; border: 0;
  border-radius: var(--radius); padding: 0.66rem 1.2rem; cursor: pointer; height: fit-content;
}
.dr-go:hover { background: var(--accent-dark); }
.dr-go:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }

.dr-results-head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 0.5rem 1.5rem; margin: 0 0 var(--s-2); }
.dr-results-title { font-size: 1.2rem; margin: 0; }
.dr-active { display: flex; flex-wrap: wrap; align-items: center; gap: 0.45rem; margin: 0; font-size: 0.86rem; color: var(--muted); }
.dr-chip { background: var(--paper); border: 1px solid var(--line); border-radius: 99px; padding: 0.15rem 0.7rem; color: var(--ink); }
.dr-chip:hover { border-color: var(--accent); }
.dr-clear { color: var(--accent-dark); text-decoration: underline; text-underline-offset: 2px; }

/* --------------------------------------------------------------- List */

.dr-list { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--line); }
.dr-item { border-bottom: 1px solid var(--line); background: var(--paper); }
.dr-item article { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: var(--s-2) var(--s-4); padding: var(--s-3); border-left: 3px solid transparent; }
.dr-kind-standalone article { border-left-color: var(--accent); }
.dr-kind-tracker article { border-left-color: var(--pine); }
.dr-kind-chart article { border-left-color: var(--accent-soft); }
.dr-kind-map article { border-left-color: var(--ink); }
.dr-item-kind { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.25rem 0.75rem; margin: 0 0 0.4rem; }
.dr-kind { font-size: 0.72rem; font-weight: 650; letter-spacing: 0.12em; text-transform: uppercase; color: var(--accent-dark); }
.dr-item-context { font-size: 0.86rem; color: var(--muted); }
.dr-item-context a { color: var(--muted); text-decoration: underline; text-underline-offset: 2px; }
.dr-item-context a:hover { color: var(--ink); }
.dr-item-title { font-family: var(--font-serif); font-weight: 500; font-size: 1.4rem; line-height: 1.25; margin: 0 0 0.4rem; }
.dr-item-title a { color: var(--ink); }
.dr-item-title a:hover { color: var(--accent-dark); }
.dr-item-summary { margin: 0 0 0.6rem; color: var(--text); max-width: 70ch; line-height: 1.55; }
.dr-item-meta { display: flex; flex-wrap: wrap; gap: 0.2rem 0; list-style: none; margin: 0; padding: 0; font-size: 0.86rem; color: var(--muted); }
.dr-item-meta li:not(:last-child)::after { content: "·"; margin: 0 0.55rem; color: var(--accent-soft); }
.dr-tags { display: flex; flex-wrap: wrap; gap: 0.35rem; margin: 0.7rem 0 0; }
.dr-tag { font-size: 0.78rem; padding: 0.12rem 0.55rem; background: var(--mist); color: var(--muted); border-radius: 99px; }
.dr-item-side { display: flex; flex-direction: column; align-items: flex-end; justify-content: space-between; gap: var(--s-2); min-width: 10rem; }
.dr-item-more { font-size: 0.9rem; font-weight: 600; color: var(--accent-dark); white-space: nowrap; }
.dr-item-more:hover { color: var(--ink); }

.dr-dls { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 0.4rem; list-style: none; margin: 0; padding: 0; }
.dr-dl {
  display: inline-flex; align-items: center; gap: 0.4rem; padding: 0.42rem 0.75rem; border: 1px solid var(--ink);
  border-radius: var(--radius); font-size: 0.84rem; font-weight: 650; color: var(--ink); white-space: nowrap;
}
.dr-dl:hover { background: var(--ink); color: #fff; }
.dr-dl-size { font-weight: 450; color: var(--muted); }
.dr-dl:hover .dr-dl-size { color: var(--on-ink); }

.dr-empty { background: var(--paper); border: 1px solid var(--line); padding: var(--s-4); max-width: 46rem; }
.dr-empty h3 { margin: 0 0 var(--s-1); font-size: 1.3rem; }
.dr-empty ul { margin: var(--s-2) 0; padding-left: 1.2rem; }
.dr-empty li { margin-bottom: 0.4rem; }
.dr-empty a { color: var(--accent-dark); text-decoration: underline; text-underline-offset: 2px; }
.dr-empty-small { padding: var(--s-3); }

.dr-about-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--s-4); }
.dr-about p { margin: 0; color: var(--muted); line-height: 1.6; }
.dr-about a { color: var(--accent-dark); text-decoration: underline; text-underline-offset: 2px; }
.dr-about code, .dr-vars code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0.86em; }

/* -------------------------------------------------------- Dataset page */

.dr-dataset { padding-top: var(--s-4); }
.dr-dataset-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(17rem, 22rem); gap: var(--s-4); align-items: start; }
.dr-dataset-main { min-width: 0; }
.dr-block + .dr-block { margin-top: var(--s-4); padding-top: var(--s-4); border-top: 1px solid var(--line); }
.dr-note { background: var(--paper); border: 1px solid var(--line); border-left: 3px solid var(--accent); padding: var(--s-3); }
.dr-block.dr-note { border-top: 1px solid var(--line); }

.dr-dataset-aside { display: flex; flex-direction: column; gap: var(--s-3); position: sticky; top: var(--s-3); }
.dr-box { background: var(--paper); border: 1px solid var(--line); padding: var(--s-3); }
.dr-box-title { font-size: 0.78rem; font-weight: 650; letter-spacing: 0.12em; text-transform: uppercase; color: var(--muted); margin: 0 0 var(--s-2); }
.dr-box-note { margin: var(--s-2) 0 0; font-size: 0.86rem; color: var(--muted); line-height: 1.55; }
.dr-box-note .dr-license { margin: 0 0.2rem 0.3rem 0; }

.dr-files { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 0.5rem; }
.dr-file {
  display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 0.75rem;
  padding: 0.7rem 0.8rem; border: 1px solid var(--line); border-radius: var(--radius); color: var(--ink);
}
.dr-file:hover { border-color: var(--ink); background: var(--mist); }
.dr-file-badge { font-size: 0.7rem; font-weight: 750; letter-spacing: 0.06em; padding: 0.3rem 0.45rem; border-radius: 3px; background: var(--ink); color: #fff; min-width: 3.1rem; text-align: center; }
.dr-fmt-csv { background: var(--pine); }
.dr-fmt-json { background: var(--accent); }
.dr-fmt-xlsx { background: #2F6B4F; }
.dr-file-text { display: flex; flex-direction: column; min-width: 0; }
.dr-file-name { font-weight: 600; font-size: 0.9rem; overflow-wrap: anywhere; }
.dr-file-meta { font-size: 0.8rem; color: var(--muted); }

.dr-details { margin: 0; display: flex; flex-direction: column; }
.dr-details div { display: grid; grid-template-columns: 7.5rem minmax(0, 1fr); gap: 0.75rem; padding: 0.5rem 0; border-top: 1px solid var(--line); font-size: 0.9rem; }
.dr-details div:first-child { border-top: 0; padding-top: 0; }
.dr-details dt { color: var(--muted); }
.dr-details dd { margin: 0; color: var(--ink); }

/* Preview tables scroll inside their own box, never the page. */
.dr-preview { margin: 0 0 var(--s-3); }
.dr-table-wrap { max-width: 100%; overflow-x: auto; border: 1px solid var(--line); background: var(--paper); -webkit-overflow-scrolling: touch; }
.dr-table-wrap:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.dr-table-wrap-plain { border: 0; background: transparent; }
.dr-table { width: 100%; border-collapse: collapse; font-size: 0.86rem; font-variant-numeric: tabular-nums; }
.dr-table caption { caption-side: top; text-align: left; padding: 0.7rem 0.8rem; font-size: 0.84rem; color: var(--muted); border-bottom: 1px solid var(--line); }
.dr-table th, .dr-table td { padding: 0.5rem 0.8rem; text-align: left; vertical-align: top; border-bottom: 1px solid var(--line); }
.dr-table td { white-space: nowrap; }
.dr-table td.dr-long { white-space: normal; min-width: 16rem; max-width: 26rem; overflow-wrap: break-word; }
.dr-table thead th { background: var(--mist); color: var(--ink); font-weight: 650; white-space: nowrap; position: sticky; top: 0; }
.dr-table tbody tr:last-child > * { border-bottom: 0; }
.dr-table tbody tr:nth-child(even) td { background: #FBFAFC; }
.dr-table .dr-num { text-align: right; white-space: nowrap; }
.dr-preview .dr-file-name { font-weight: 600; color: var(--ink); }
.dr-preview-note { margin: 0.6rem 0 0; font-size: 0.86rem; color: var(--muted); }
.dr-preview-note a { color: var(--accent-dark); text-decoration: underline; text-underline-offset: 2px; }

.dr-vars { display: flex; flex-wrap: wrap; gap: 0.4rem; list-style: none; margin: 0; padding: 0; }
.dr-vars li { background: var(--paper); border: 1px solid var(--line); padding: 0.2rem 0.55rem; border-radius: 3px; max-width: 100%; overflow-wrap: anywhere; }

/* ----------------------------------------------------- Cite & versions */

.dr-cite-grid { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); gap: var(--s-5); align-items: start; }
.dr-cite { margin: 0 0 var(--s-3); }
.dr-cite-label { font-size: 0.74rem; font-weight: 650; letter-spacing: 0.12em; text-transform: uppercase; color: var(--muted); margin: 0 0 0.4rem; }
.dr-cite-text { margin: 0 0 0.7rem; padding: var(--s-2); background: var(--mist); border-left: 3px solid var(--accent); line-height: 1.6; overflow-wrap: anywhere; }
.dr-bibtex {
  margin: 0 0 0.7rem; padding: var(--s-2); background: var(--ink-deep); color: #E8E3F0; border-radius: var(--radius);
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0.8rem; line-height: 1.6; overflow-x: auto; white-space: pre;
}
.dr-bibtex:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.dr-copy { font-size: 0.86rem; padding: 0.5rem 1rem; }
.dr-copy-status { min-height: 1.3em; margin: 0 0 0.3rem; font-size: 0.88rem; color: var(--pine); font-weight: 600; }
.dr-versions th[scope="row"] { font-weight: 650; color: var(--ink); white-space: nowrap; }
.dr-versions thead th { background: transparent; border-bottom: 2px solid var(--ink); }
.dr-versions td, .dr-versions th { padding-left: 0; }
.dr-versions td { white-space: normal; }
.dr-versions td.dr-nowrap { white-space: nowrap; }

.dr-related { padding-top: var(--s-4); }
.dr-related-list { list-style: none; margin: 0 0 var(--s-3); padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--s-2); }
.dr-related-list a { display: flex; flex-direction: column; gap: 0.35rem; height: 100%; padding: var(--s-2); background: var(--paper); border: 1px solid var(--line); color: var(--ink); }
.dr-related-list a:hover { border-color: var(--accent); }
.dr-related-title { font-family: var(--font-serif); font-size: 1.12rem; line-height: 1.3; }

/* ---------------------------------------------------------- Responsive */

@media (max-width: 1100px) {
  .dr-filters { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .dr-field-search { grid-column: 1 / -1; }
}
@media (max-width: 900px) {
  .dr-dataset-grid, .dr-cite-grid { grid-template-columns: minmax(0, 1fr); gap: var(--s-4); }
  .dr-dataset-aside { position: static; order: -1; }
  .dr-about-grid { grid-template-columns: minmax(0, 1fr); gap: var(--s-3); }
  .dr-related-list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 700px) {
  .dr-filters { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .dr-go { grid-column: 1 / -1; }
  .dr-item article { grid-template-columns: minmax(0, 1fr); padding: var(--s-2); }
  .dr-item-side { align-items: flex-start; min-width: 0; }
  .dr-dls { justify-content: flex-start; }
  .dr-related-list { grid-template-columns: minmax(0, 1fr); }
  .dr-item-title { font-size: 1.22rem; }
}

@media print {
  .dr-filters, .dr-copy, .dr-copy-status, .dr-dls { display: none !important; }
  .dr-table-wrap { overflow: visible; }
}

/* ============================================================== Admin */

.dra-form, .dra-form .card { min-width: 0; }
.dra-files td { overflow-wrap: anywhere; }
.dra-form .dra-big { font-size: 1.1rem; font-weight: 600; }
.dra-checks { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 0.35rem 1rem; margin-top: 0.4rem; }
.dra-check { display: inline-flex; align-items: center; gap: 0.5rem; font-weight: 400; cursor: pointer; }
.dra-check input { width: 1rem; height: 1rem; accent-color: var(--accent); }
.dra-fieldset { border: 0; padding: 0; margin: 0; min-width: 0; }
.dra-fieldset legend { padding: 0; font-weight: 600; }
.dra-errors { margin: 0.4rem 0 0; padding-left: 1.2rem; }
.dra-prefix { display: flex; align-items: stretch; }
.dra-prefix span { display: flex; align-items: center; padding: 0 0.6rem; background: var(--mist); border: 1px solid #CFC9D9; border-right: 0; border-radius: var(--radius) 0 0 var(--radius); color: var(--muted); font-size: 0.88rem; white-space: nowrap; }
.dra-prefix input { border-top-left-radius: 0 !important; border-bottom-left-radius: 0 !important; min-width: 0; flex: 1; }
.dra-files { margin-bottom: 1rem; }
.dra-fmt { display: inline-block; font-size: 0.68rem; font-weight: 750; letter-spacing: 0.05em; padding: 0.15rem 0.4rem; border-radius: 3px; background: #2A1B45; color: #fff; margin-right: 0.3rem; }
.dra-fmt-csv { background: #4A2F73; }
.dra-fmt-json { background: #6E42A6; }
.dra-fmt-xlsx { background: #2F6B4F; }
.dra-current { margin: 0 0 1rem; }
.dra-history { margin-top: 0.5rem; font-size: 0.9rem; }
.dra-history summary { cursor: pointer; color: var(--accent-dark); font-weight: 600; }
.dra-history ol { margin: 0.5rem 0 0; padding-left: 1.3rem; }
.dra-empty p { max-width: 60ch; }
@media (max-width: 640px) {
  .dra-prefix { flex-direction: column; }
  .dra-prefix span { border-right: 1px solid #CFC9D9; border-bottom: 0; border-radius: var(--radius) var(--radius) 0 0; padding: 0.3rem 0.6rem; }
  .dra-prefix input { border-radius: 0 0 var(--radius) var(--radius) !important; }
}
