/* Resource Atlas (index + per-zone map). Public, player-facing page.
 * Derived from infra/landing/creatures/creatures.css (itself derived from scenes.css) so the
 * site stays visually consistent; kept self-contained (no cross-page @import).
 *
 * Committed to a dark surface, deliberately -- every sibling page on this site is dark, and the
 * chart palette is validated against --panel (#161d29), not auto-flipped from a light one. */
:root{
  --bg:#0b0e14; --panel:#161d29; --panel2:#1c2533; --line:#2a3445;
  --text:#e7ecf3; --muted:#9aa7bd; --gold:#d9b25a; --gold2:#f0cf85; --accent:#5aa9e6;
  /* Chart roles. Validated all-pairs against the --panel surface: normal-vision dE 17.4,
   * worst CVD dE 16.3, both marks over 3:1 contrast. Do not re-pick these by eye. */
  --series-1:#5aa9e6;   /* the selected resource type */
  --series-ctx:#6b7686; /* every other node, kept as context */
}
*{box-sizing:border-box}
[hidden]{display:none !important}
html,body{margin:0;min-height:100%}
html{background:#0a0c11}
body{
  font-family:"Segoe UI",Inter,system-ui,Arial,sans-serif; color:var(--text);
  background:
    radial-gradient(1200px 600px at 50% -10%, #1a2840 0%, rgba(26,40,64,0) 60%),
    linear-gradient(180deg,#0b0e14 0%, #0a0c11 100%);
  background-attachment:fixed; min-height:100%;
}

/* ---- header ---- */
header{
  display:flex; align-items:center; gap:16px; padding:20px 24px;
  border-bottom:1px solid var(--line); flex-wrap:wrap;
}
.crest{
  width:46px;height:46px;border-radius:50%;flex:none;
  background:radial-gradient(circle at 50% 35%, var(--gold2), var(--gold) 60%, #8a6d2c 100%);
  display:flex;align-items:center;justify-content:center;font-weight:700;color:#2a2208;font-size:18px;
}
.titles{flex:1 1 auto;min-width:0}
h1{margin:0;font-size:22px;letter-spacing:.5px}
h1 .accent{color:var(--gold2)}
.sub{margin:2px 0 0;color:var(--muted);font-size:13px;word-break:break-word}
.back{color:var(--accent);text-decoration:none;font-size:13px;white-space:nowrap}
.back:hover{text-decoration:underline}

main{max-width:1280px;margin:0 auto;padding:18px 16px 40px}
footer{text-align:center;color:var(--muted);font-size:12px;padding:18px;border-top:1px solid var(--line)}

.meta{color:var(--muted);font-size:13px;margin:6px 2px 14px}
.err{color:#e5534b;font-size:13px;margin:10px 2px}
.note{color:var(--muted);font-size:13.5px;margin:10px 2px}
.intro{color:var(--muted);max-width:78ch;line-height:1.6;font-size:14px;margin:4px 2px 18px}

/* ---- filter bar ---- */
.filters{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 14px}
.filters input[type=search],.filters select,.filters input[type=number]{
  background:var(--panel);color:var(--text);border:1px solid var(--line);
  border-radius:8px;padding:7px 10px;font-size:13px;font-family:inherit;
}
.filters input[type=search]{flex:1 1 200px;max-width:300px}
.filters input[type=number]{width:64px;padding:7px 6px}
.filters input:focus,.filters select:focus{outline:none;border-color:var(--accent)}
.filters .count{color:var(--muted);font-size:12.5px}
.rangelbl{color:var(--muted);font-size:12.5px;display:inline-flex;align-items:center;gap:5px;white-space:nowrap}
.chipbtn{
  background:var(--panel);color:var(--muted);border:1px solid var(--line);border-radius:8px;
  padding:7px 12px;font-size:13px;font-family:inherit;cursor:pointer;white-space:nowrap;
}
.chipbtn:hover{color:var(--text)}
.chipbtn[aria-pressed="true"]{background:var(--panel2);color:var(--gold2)}

/* ---- tables ---- */
.tablebox{
  background:linear-gradient(180deg,var(--panel),var(--panel2));
  border:1px solid var(--line);border-radius:10px;padding:6px 14px 10px;
  margin-top:2px;overflow-x:auto;
}
table.msgs{width:100%;border-collapse:collapse;font-size:13.5px}
table.msgs th{
  text-align:left;color:var(--muted);font-size:12.5px;font-weight:600;
  padding:7px 10px;border-bottom:1px solid var(--line);white-space:nowrap;
}
table.msgs td{padding:7px 10px;border-bottom:1px solid var(--line);vertical-align:top}
table.msgs tr:last-child td{border-bottom:none}
table.msgs th.num-c,table.msgs td.num-c{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
table.msgs th.sortable{cursor:pointer;user-select:none}
table.msgs th.sortable:hover{color:var(--text)}
table.msgs tbody tr:hover td{background:rgba(255,255,255,.025)}
td.name-cell a{color:var(--text);text-decoration:none}
td.name-cell a:hover{color:var(--gold2)}
tr.rowlink{cursor:pointer}
tr.rowlink[aria-selected="true"] td{background:rgba(90,169,230,.10)}

/* family group header inside the counts table */
tr.famrow td{
  color:var(--gold2);font-size:11.5px;font-weight:600;text-transform:uppercase;
  letter-spacing:.6px;padding-top:12px;border-bottom-color:transparent;
}
tr.famrow:first-child td{padding-top:4px}

/* ---- badges / chips ---- */
.chips{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 0}
.chip{
  font-size:12px;color:var(--muted);border:1px solid var(--line);border-radius:999px;
  padding:2px 10px;background:rgba(255,255,255,.02);white-space:nowrap;
}
.chip b{color:var(--text);font-weight:600}
.badge-tier{
  display:inline-block;font-size:11px;font-weight:600;color:var(--gold2);border:1px solid var(--gold);
  border-radius:999px;padding:0 8px;white-space:nowrap;font-variant-numeric:tabular-nums;
}
.badge-tier.t0{color:var(--muted);border-color:var(--line)}
.badge-muted{
  display:inline-block;font-size:11px;color:var(--muted);border:1px solid var(--line);
  border-radius:999px;padding:0 8px;margin:1px 4px 1px 0;white-space:nowrap;
}

/* ---- sections + panels ---- */
section{margin:0 0 26px}
section h2{
  font-size:15px;letter-spacing:.4px;border-bottom:1px solid var(--line);padding-bottom:8px;
  display:flex;align-items:center;gap:10px;margin:18px 0 0;flex-wrap:wrap;
}
section h2 .h2note{font-size:12px;font-weight:400;color:var(--muted)}
section h2 .spacer{flex:1 1 auto}

.panel{
  background:linear-gradient(180deg,var(--panel),var(--panel2));
  border:1px solid var(--line);border-radius:10px;padding:12px 14px;min-width:0;
}
.panel h3{
  margin:0 0 10px;font-size:12.5px;color:var(--muted);font-weight:600;
  text-transform:uppercase;letter-spacing:.6px;display:flex;align-items:center;gap:10px;flex-wrap:wrap;
}
.panel h3 .spacer{flex:1 1 auto}
.panel .empty{color:var(--muted);font-size:13px;margin:6px 0}

/* map beside its counts list; stacks on narrow screens */
.maplayout{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(280px,1fr);gap:14px;margin-top:12px}
@media (max-width:900px){ .maplayout{grid-template-columns:1fr} }

.chart{height:440px;margin-top:6px}
.chart.short{height:300px}
.chart-missing{
  display:flex;align-items:center;justify-content:center;text-align:center;
  color:var(--muted);font-size:12.5px;line-height:1.6;padding:14px 18px;min-height:120px;
  border:1px dashed var(--line);border-radius:8px;background:rgba(255,255,255,.015);
}

/* height slider */
.slider{display:flex;align-items:center;gap:10px;margin:2px 0 0;font-size:12px;color:var(--muted)}
.slider input[type=range]{flex:1 1 auto;accent-color:var(--accent);min-width:120px}
.slider .val{font-variant-numeric:tabular-nums;white-space:nowrap}

/* small multiples */
.facets{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:12px;margin-top:12px}
.facet{
  background:linear-gradient(180deg,var(--panel),var(--panel2));
  border:1px solid var(--line);border-radius:10px;padding:10px 12px 8px;min-width:0;
}
.facet h4{
  margin:0 0 2px;font-size:12.5px;color:var(--text);font-weight:600;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.facet .facetsub{color:var(--muted);font-size:11.5px;margin:0 0 6px;font-variant-numeric:tabular-nums}
.facet .fchart{height:150px}

.legendline{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin:10px 2px 0;font-size:12px;color:var(--muted)}
.swatch{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:6px;vertical-align:-1px}
.swatch.sel{background:var(--series-1)}
.swatch.ctx{background:var(--series-ctx)}
