/* Explora design system — admin: maps our tokens onto Django admin's CSS variables and
   fits the admin into the same sidebar shell. Admin pages only.
   Load order (a contract): tokens → base → shell → components [→ admin].
   Brand colours are injected inline after tokens (shell/_theme.html). */
/* ---- map our tokens onto Django admin's variables ---- */
:root, html[data-theme="light"], html[data-theme="dark"]{
  --primary: var(--brand);
  --secondary: var(--brand);
  --link-fg: var(--accent);
  --link-hover-color: var(--accent);
  --link-selected-fg: var(--accent);
  --body-bg: var(--bg);
  --body-fg: var(--ink);
  --body-quiet-color: var(--muted);
  --body-loud-color: var(--ink);
  --hairline-color: var(--border);
  --border-color: var(--border-strong);
  --darkened-bg: var(--panel-2);
  --selected-bg: var(--panel-2);
  --selected-row: color-mix(in srgb, var(--accent) 12%, transparent);
  --button-bg: var(--panel-2);
  --button-fg: var(--ink);
  --button-hover-bg: var(--border);
  --default-button-bg: var(--brand);
  --default-button-hover-bg: color-mix(in oklab, var(--brand) 70%, var(--electric));
  --close-button-bg: var(--muted);
  --close-button-hover-bg: var(--ink);
  --object-tools-bg: var(--ink);
  --object-tools-fg: var(--bg);
  --object-tools-hover-bg: var(--muted);
  --message-success-bg: var(--good-bg);
  --message-warning-bg: var(--warn-bg);
  --message-error-bg: color-mix(in srgb, var(--danger) 15%, transparent);
  --font-family-primary: var(--font);
  --font-family-monospace: var(--mono);
}

/* ---- fit admin into the shared shell ---- */
body:not(.login) #header{display:none}
body:not(.login) div.breadcrumbs{display:none}
#footer{display:none}
body{font-family:var(--font);font-size:14px}
#container{min-height:100vh}
.main{display:flex;align-items:stretch}
.main > #content-start.content, .main > .content{flex:1;min-width:0}
#content{padding:1.6rem 1.7rem 4rem}
#content > h1, #content .content-title h1{font-family:var(--display);font-size:1.7rem;letter-spacing:-.025em;font-weight:750}
#content{animation:rise .4s var(--ease) both}

/* ---- modules as cards ---- */
.module{background:var(--panel-glass);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;
  box-shadow:var(--shadow),inset 0 1px 0 var(--edge)}
.module > h2,.module caption,.inline-group h2,.module > table caption{
  background:var(--panel-2);color:var(--muted);font-family:var(--mono);
  font-size:.64rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;padding:.6rem .9rem}
.module caption a.section:link,.module caption a.section:visited{color:var(--muted)}

/* ---- changelist ---- */
#result_list{border-collapse:separate;border-spacing:0}
#result_list thead th{background:var(--panel-2);border-bottom:1px solid var(--border);font-family:var(--mono);
  text-transform:uppercase;letter-spacing:.1em;font-size:.64rem;color:var(--muted)}
#result_list thead th a{color:var(--muted)}
#result_list tbody td,#result_list tbody th{border-bottom:1px solid var(--border);padding:.5rem .75rem}
#result_list tbody tr:hover td,#result_list tbody tr:hover th{background:var(--panel-2)}
.paginator{border-top:1px solid var(--border);border-radius:0 0 12px 12px}

#changelist-search input[type=text]{width:auto;min-width:18rem}
#toolbar{background:transparent;border-bottom:1px solid var(--border)}

/* ---- filter rail ---- */
#changelist-filter{background:var(--panel-2);border:1px solid var(--border);border-radius:12px}
#changelist-filter h2{background:transparent;color:var(--muted);border-bottom:1px solid var(--border);
  text-transform:uppercase;letter-spacing:.05em;font-size:.68rem}
#changelist-filter li.selected{border-left:3px solid var(--accent)}
#changelist-filter a:focus,#changelist-filter a:hover{color:var(--accent)}

/* ---- forms ---- */
.form-row{border-bottom:1px solid var(--border)}
.aligned label{font-size:.85rem}
fieldset.module{border-radius:12px}

/* ---- buttons / object tools ---- */
.button,input[type=submit],input[type=button],.submit-row input,a.button{border-radius:10px;font-weight:600}
.submit-row input.default,input[type=submit].default{background:linear-gradient(135deg,var(--brand),color-mix(in oklab,var(--brand) 50%,var(--electric)));
  box-shadow:0 8px 22px -8px var(--glow)}
.submit-row{background:var(--panel-glass);border:1px solid var(--border);border-radius:var(--radius)}
input[type=text],input[type=password],input[type=email],input[type=url],input[type=number],input[type=tel],textarea,select,.vTextField{
  background:var(--field);border-radius:var(--radius-sm)}
.object-tools a{border-radius:8px;text-transform:none;font-weight:600;letter-spacing:0}
.object-tools a.toollink{background:var(--panel-2);color:var(--ink);border:1px solid var(--border-strong)}
.object-tools a.toollink:hover{background:var(--border);color:var(--ink)}

/* ---- login (no sidebar; keep a tidy centred card) ---- */
body.login #container{border:1px solid var(--border);border-radius:14px;overflow:hidden;
  box-shadow:var(--shadow)}
body.login #header{border-radius:0}

ul.messagelist li{border-radius:9px;border:1px solid var(--border)}
.selector-available,.selector-chosen,.inline-related{border-radius:10px}

/* ---- "Scan a document" hero (admin dashboard) ---- */
.scan-hero{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;
  border:1px solid var(--border);border-radius:14px;padding:1rem 1.25rem;margin:0 0 1.2rem;
  background:radial-gradient(120% 140% at 100% 0%, color-mix(in srgb,var(--accent) 16%,transparent), transparent 60%),var(--panel-2)}
.scan-hero-text{display:flex;flex-direction:column;gap:.15rem;min-width:14rem}
.scan-hero-text strong{font-size:1.05rem;color:var(--ink)}
.scan-hero-text span{color:var(--muted);font-size:.86rem;max-width:52ch}
/* raise specificity above admin's `a:link` so the label isn't blue-on-blue */
a.scan-hero-btn:link, a.scan-hero-btn:visited{background:linear-gradient(135deg,var(--brand),color-mix(in oklab,var(--brand) 50%,var(--electric)));color:#fff;font-weight:700;
  padding:.6rem 1.1rem;border-radius:10px;text-decoration:none;white-space:nowrap}
a.scan-hero-btn:hover{filter:brightness(1.06);color:#fff}

/* ---- long lists: easier to scan (owner 2026-09-28: "long tables, unreadable") ---- */
#changelist .results{border-radius:var(--radius);overflow:auto;max-height:calc(100vh - 12rem)}
#result_list thead th{position:sticky;top:0;z-index:2}
#result_list tbody tr:nth-child(even) td,#result_list tbody tr:nth-child(even) th{background:color-mix(in srgb,var(--panel-2) 55%,transparent)}
#result_list tbody tr:hover td,#result_list tbody tr:hover th{background:color-mix(in oklab,var(--accent-hi) 8%,transparent)}
#result_list tbody th a,#result_list tbody td.field-name a{font-weight:650}
#result_list td,#result_list th{line-height:1.35}
#changelist-search input[type=text]{min-width:22rem;padding:.5rem .7rem;border-radius:10px}
#changelist-search input[type=submit]{border-radius:10px}
#toolbar{padding:.7rem .8rem}
