:root{
  --bg:#14161a; --panel:#1c1f26; --panel2:#232730; --line:#2e333d;
  --fg:#e8e4dc; --dim:#9aa1ad; --accent:#c9a227; --green:#7fa650;
  --chest:#e0913a; --struct:#5b6b8a; --danger:#c2603f;
  --mono:ui-monospace,SFMono-Regular,Menlo,monospace;
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--fg);
  font:15px/1.5 system-ui,-apple-system,"Segoe UI",sans-serif}
header{display:flex;align-items:baseline;gap:16px;flex-wrap:wrap;
  padding:14px 20px;background:var(--panel)}
h1{margin:0;font-size:20px;letter-spacing:.5px;color:var(--accent)}
.meta{color:var(--dim);font-size:13px;font-family:var(--mono)}
.tabs{display:flex;gap:2px;padding:0 20px;background:var(--panel);
  border-bottom:1px solid var(--line)}
.tab{background:none;border:none;border-bottom:2px solid transparent;
  color:var(--dim);font:inherit;font-size:14px;padding:9px 16px;cursor:pointer}
.tab:hover{color:var(--fg)}
.tab.on{color:var(--accent);border-bottom-color:var(--accent)}
main{padding:0 16px 40px;max-width:1100px;margin:0 auto}
.mapwrap{position:sticky;top:0;z-index:20;background:var(--bg);
  border-bottom:1px solid var(--line);box-shadow:0 6px 18px rgba(0,0,0,.45)}
canvas#map{display:block;width:100%;height:42vh;min-height:260px;
  background:#0f1114;cursor:grab;touch-action:none}
canvas#map.drag{cursor:grabbing}
.mapbar{display:flex;align-items:center;gap:14px;flex-wrap:wrap;
  padding:7px 14px;background:var(--panel);font-size:12px;color:var(--dim)}
.mapmeta{margin-left:auto;font-family:var(--mono)}
.btn{background:var(--panel2);border:1px solid var(--line);color:var(--fg);
  font:inherit;font-size:12px;padding:4px 11px;border-radius:5px;cursor:pointer}
.btn:hover{border-color:var(--accent);color:var(--accent)}
.callout{position:absolute;pointer-events:none;background:rgba(20,22,26,.95);
  border:1px solid var(--accent);border-radius:6px;padding:7px 10px;font-size:12.5px;
  max-width:280px;transform:translate(-50%,-118%);z-index:30}
.callout .coord{display:block;margin-bottom:4px}
.hint{color:var(--dim);font-size:12.5px;margin:12px 2px 8px}
.tabs{position:sticky;top:calc(42vh + 34px);z-index:19}
.card{background:var(--panel);border:1px solid var(--line);border-radius:8px;
  overflow:hidden;margin-bottom:16px}
.chest.on{background:#2a2418;border-left:3px solid var(--accent)}
.grid tr.on td{background:#2a2418}
.card h2{margin:0;padding:11px 14px;font-size:12px;text-transform:uppercase;
  letter-spacing:1.2px;color:var(--dim);background:var(--panel2);
  border-bottom:1px solid var(--line)}
.card h2 .sub{text-transform:none;letter-spacing:0;font-size:12px;opacity:.75;
  margin-left:8px}
.card .body{padding:14px}
input[type=search]{width:100%;padding:10px 12px;font-size:15px;color:var(--fg);
  background:var(--panel2);border:1px solid var(--line);border-radius:6px;
  font-family:inherit}
input[type=search]:focus{outline:none;border-color:var(--accent)}
table.grid{width:100%;border-collapse:collapse;font-size:14px}
.grid th,.grid td{text-align:left;padding:7px 14px;border-bottom:1px solid var(--line)}
.grid th{color:var(--dim);font-size:11px;text-transform:uppercase;
  letter-spacing:1px;font-weight:600}
.grid td.r,.grid th.r{text-align:right}
.grid td.r{font-family:var(--mono);color:var(--accent)}
.grid tr.hit{cursor:pointer}
.grid tr.hit:hover{background:var(--panel2)}
.grid tr.det td{background:#171a1f;color:var(--dim);font-family:var(--mono);
  font-size:12.5px;padding-top:4px;padding-bottom:8px}
.bar{height:5px;background:var(--panel2);border-radius:3px;overflow:hidden;
  min-width:70px}
.bar i{display:block;height:100%;background:var(--accent);opacity:.75}
.chest{border-bottom:1px solid var(--line);padding:12px 14px}
.chest:last-child{border-bottom:none}
.chest h3{margin:0 0 7px;font-size:14px;font-weight:600;display:flex;
  align-items:baseline;gap:10px}
.coord{font-family:var(--mono);font-size:12px;color:var(--dim);font-weight:400}
.tot{margin-left:auto;font-family:var(--mono);font-size:12px;color:var(--accent)}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chip{background:var(--panel2);border:1px solid var(--line);border-radius:5px;
  padding:3px 9px;font-size:13px}
.chip b{color:var(--accent);font-family:var(--mono);margin-left:4px}
.chip.empty{color:var(--dim);font-style:italic}

.legend{display:flex;gap:16px;flex-wrap:wrap;padding:10px 14px;font-size:12px;
  color:var(--dim);border-top:1px solid var(--line)}
.dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:6px;
  vertical-align:middle}
.pill{display:inline-block;padding:2px 9px;border-radius:99px;font-size:11px;
  background:var(--panel2);border:1px solid var(--line);color:var(--dim);
  margin:0 5px 5px 0;font-family:var(--mono)}
.pill.on{border-color:var(--green);color:var(--green)}
.err{color:var(--danger);font-family:var(--mono);font-size:13px;padding:12px 14px}
.none{color:var(--dim);font-style:italic;padding:14px}

.chest{cursor:pointer}
.chest:hover{background:var(--panel2)}
.loc{cursor:pointer;display:inline-block;padding:2px 7px;margin:2px 4px 2px 0;
  border:1px solid var(--line);border-radius:4px;background:var(--panel2);
  font-family:var(--mono);font-size:12px;color:var(--dim)}
.loc:hover{border-color:var(--accent);color:var(--accent)}
