/* ============================================================================
   Expedition adventure MAP (branching rooms + corridors). Basic SVG for now.
   ========================================================================= */
.expmap { height: 100%; display: flex; flex-direction: column; min-height: 0; }

.expmap-head { position: relative; padding: 14px 20px 10px; border-bottom: 2px solid var(--edge); background: linear-gradient(180deg, rgba(20,18,30,.85), rgba(10,9,16,.7)); }
.expmap-title { display: flex; align-items: center; gap: 12px; }
.expmap-title h2 { color: var(--gold-hi); font-size: 36px; text-shadow: 0 2px 0 #000; }
.expmap-sub { color: var(--parchment-2); font-size: 20px; margin-top: 4px; max-width: 900px; }
.expmap-head .btn { position: absolute; top: 14px; right: 20px; }

.expmap-stage {
  flex: 1; min-height: 0; overflow: auto; padding: 18px;
  background:
    radial-gradient(ellipse at 50% 40%, rgba(30,26,48,.35), rgba(6,6,10,.6)),
    repeating-linear-gradient(0deg, transparent 0 38px, rgba(255,255,255,.02) 38px 39px),
    repeating-linear-gradient(90deg, transparent 0 38px, rgba(255,255,255,.02) 38px 39px),
    var(--ink);
}
.expmap-svg { width: 100%; height: 100%; max-height: 100%; display: block; margin: 0 auto; }
.expmap-svg text { font-family: var(--font); fill: var(--parchment); }

/* corridors */
.expmap-edge { stroke: var(--edge-hi); stroke-width: 7; stroke-linecap: round; opacity: .45; }
.expmap-edge.lit { stroke: var(--gold); opacity: .9; }

/* rooms */
.expmap-room { fill: #17161f; stroke: var(--edge-hi); stroke-width: 3; }
.expmap-room.start { fill: #201b30; stroke: var(--gold); }
.st-cleared .expmap-room { fill: #12141a; stroke: var(--ok); opacity: .55; }
.st-locked  .expmap-room { opacity: .4; }
.expmap-node.kind-final .expmap-room { stroke: var(--gold-hi); stroke-width: 4; }
.expmap-node.kind-bonus .expmap-room { stroke: #d9a441; stroke-dasharray: 6 5; }
.expmap-room.avail { stroke: var(--gold); stroke-width: 4; filter: drop-shadow(0 0 7px rgba(139,111,224,.65)); }
.expmap-node.clickable { cursor: pointer; }
.expmap-node.clickable:hover .expmap-room { fill: #23222f; }
.expmap-node.clickable:hover .expmap-room.avail { filter: drop-shadow(0 0 12px rgba(184,163,255,.9)); }

/* room text */
.expmap-kind { font-size: 15px; letter-spacing: 1.5px; fill: var(--gold); text-transform: uppercase; }
.expmap-node.kind-final .expmap-kind { fill: var(--gold-hi); }
.expmap-node.kind-bonus .expmap-kind { fill: #e6b95a; }
.expmap-name { font-size: 21px; fill: var(--parchment); }
.st-locked .expmap-name, .st-locked .expmap-kind { fill: var(--muted); }
.expmap-reqn { font-size: 19px; fill: var(--parchment-2); }
.expmap-reqimg { filter: brightness(0) invert(1); opacity: .92; }
.expmap-state { font-size: 15px; letter-spacing: 1px; }
.expmap-state.cleared { fill: var(--ok); }
.expmap-state.locked { fill: var(--muted); }
.expmap-start-t { font-size: 16px; letter-spacing: 1px; fill: var(--gold-hi); }

/* party bar */
.expmap-party { display: flex; gap: 10px; padding: 10px 16px; border-top: 2px solid var(--edge); background: #0c0b12f2; flex-wrap: wrap; }
.pm { display: flex; align-items: center; gap: 8px; padding: 6px 10px; border: 1px solid var(--edge); background: #14131c; min-width: 190px; }
.pm.dead { filter: grayscale(1); opacity: .5; }
.pm.resting { opacity: .7; }
.pm-portrait { width: 46px; height: 46px; object-fit: cover; border: 1px solid var(--edge-hi); }
.pm-name { color: var(--parchment); font-size: 21px; }
.pm-stat { color: var(--muted); font-size: 16px; }
.pm-rest { color: #d9a441; font-size: 16px; }
.pm-ready { color: var(--ok); font-size: 16px; }

/* investigator picker */
.picker { display: flex; flex-direction: column; gap: 8px; min-width: 340px; }
.pick-note { color: var(--muted); font-size: 14px; margin-bottom: 2px; }
.pick-row { display: flex; align-items: center; gap: 12px; padding: 8px 10px; border: 1px solid var(--edge-hi); background: #16151f; cursor: pointer; transition: background .12s, border-color .12s; }
.pick-row:hover { background: #221f30; border-color: var(--gold); }
.pick-row.resting { opacity: .5; cursor: not-allowed; border-color: var(--edge); }
.pick-row.resting:hover { background: #16151f; border-color: var(--edge); }
.pick-portrait { width: 52px; height: 52px; object-fit: cover; border: 2px solid var(--edge-hi); flex: none; }
.pick-info { flex: 1; min-width: 0; }
.pick-name { color: var(--gold-hi); font-size: 24px; }
.pick-lv { color: var(--muted); font-size: 19px; }
.pick-rest { color: #d9a441; font-size: 16px; margin-top: 3px; }
.pick-bars { display: flex; flex-direction: column; gap: 3px; margin-top: 3px; }
.pick-bar-row { display: flex; align-items: center; gap: 6px; font-size: 16px; }
.pick-bar-l { width: 30px; color: var(--muted); }
.pick-bar { flex: 1; height: 9px; background: #09080a; border: 1px solid #000; position: relative; }
.pick-bar > span { position: absolute; inset: 0; right: auto; }
.pick-bar.health > span { background: linear-gradient(180deg, #d5493a, #7c241a); }
.pick-bar.sanity > span { background: linear-gradient(180deg, #63a9c9, #2f5f77); }
.pick-bar-v { width: 46px; text-align: right; color: var(--parchment-2); }
