:root{color-scheme:dark;--bg:#0e1520;--panel:#172130;--line:#2a384b;--text:#e8edf3;--muted:#a7b6c8;--gold:#efbf64;--green:#83d5ba;--danger:#f09395;font-family:Inter,"Microsoft YaHei",system-ui,sans-serif;font-size:16px}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);padding:26px 32px;max-width:1680px;margin-inline:auto}header,footer,.row,.actions{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}header{margin-bottom:24px}.eyebrow{font-size:.75rem;letter-spacing:.15em;color:var(--gold)}h1{font-size:1.75rem;margin:6px 0 0;letter-spacing:.05em}h1 small{font-size:.8rem;font-weight:400;letter-spacing:0;color:var(--muted);margin-left:12px}h2{font-size:1.3rem;margin:0 0 14px}h3{font-size:1rem;margin:0 0 10px}p{line-height:1.65;margin:10px 0}.muted,small{color:var(--muted)}small{font-size:.8rem}.metrics{display:grid;grid-template-columns:repeat(4,1fr);background:var(--panel);border:1px solid var(--line);margin-bottom:22px;border-radius:10px}.metric{padding:15px 22px;border-right:1px solid var(--line)}.metric:last-child{border:0}.metric span{font-size:.85rem;color:var(--muted);display:block}.metric strong{display:block;font-size:1.4rem;margin-top:6px}.gold{color:var(--gold)}main{display:grid;grid-template-columns:minmax(210px, .8fr) minmax(390px,1.65fr) minmax(260px,1fr);gap:22px;align-items:start}.panel{padding:20px;border:1px solid var(--line);background:var(--panel);border-radius:12px;margin-bottom:16px}.boss-name{font-size:1.9rem;margin:10px 0}.tag{display:inline-block;font-size:.8rem;padding:4px 8px;background:#27354a;border-radius:5px;color:var(--muted);margin:3px 4px 3px 0}.mechanism{padding-block:14px;border-bottom:1px solid var(--line)}.mechanism:last-child{border-bottom:0}.mechanism p{font-size:.87rem;color:var(--muted);margin-bottom:0}.section-top{margin-bottom:18px}.section-top h2{margin-bottom:8px}.progress{height:5px;border-radius:3px;background:#29364a;margin:16px 0;overflow:hidden}.progress i{height:100%;display:block;background:var(--gold)}.grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:20px 0}.tile{aspect-ratio:1;min-height:70px;border:1px solid #3b4b60;background:#202e41;color:#dae3ee;border-radius:9px;font-size:1.2rem;letter-spacing:.12em;position:relative;display:grid;place-content:center}.tile small{font-size:.7rem;letter-spacing:0;margin-top:7px;color:inherit;opacity:.65}.tile:not(:disabled):hover{background:#2c4059;border-color:var(--gold);transform:translateY(-1px)}.tile:disabled{opacity:1;cursor:default}.tile.empty{background:#121c29;color:#63758b;border-color:#223045}.tile.gold,.tile.chest{background:#3a3020;color:#f5cd81;border-color:#685335}.tile.shop{background:#213b40;color:#a6ded6;border-color:#365c61}.tile.elite,.tile.trap{background:#382731;color:#ef9aaf;border-color:#613849}.tile.exit{background:#24463b;border-color:#63ad8b;color:#b9f1ce}.tile.boss{background:#583b23;color:#ffe1a0;border-color:var(--gold)}.explore-foot{padding:15px;background:#111b29;border-radius:8px}.explore-foot p{font-size:.88rem;margin-top:0}.wide{width:100%;margin-top:10px}button{font:inherit;border:1px solid #435168;color:var(--text);background:#233146;border-radius:7px;padding:10px 14px;cursor:pointer}button:hover{filter:brightness(1.15)}button:disabled{opacity:.42;cursor:not-allowed}button:focus-visible,a:focus-visible{outline:3px solid var(--gold);outline-offset:3px}button.primary{background:var(--gold);color:#201b11;border-color:var(--gold);font-weight:600}.danger{color:var(--danger)}button.subtle{background:transparent}.link{border:0;background:none;padding:0;color:var(--muted);text-decoration:underline}.unit{padding:12px 0;border-bottom:1px solid var(--line)}.unit:last-child{border-bottom:0}.unit .actions{justify-content:flex-start;margin-top:9px;gap:6px}.unit button{font-size:.8rem;padding:5px 8px}.unit p{font-size:.82rem;margin:5px 0;color:var(--muted)}.offers{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:20px 0}.offer{border:1px solid #43516a;border-radius:9px;padding:14px;background:#111b29}.offer h3{font-size:1.2rem}.offer p{font-size:.86rem;min-height:42px}.offer button{width:100%}.event{border-left:3px solid var(--gold);padding:16px;background:#253041;margin:16px 0}.event h3{font-size:1.2rem}.event p{font-size:.92rem}.log{font-size:.8rem;color:var(--muted);line-height:1.6;padding-left:18px;max-height:220px;overflow:auto}.log li{margin:8px 0}.stat-row{display:flex;justify-content:space-between;border-bottom:1px solid var(--line);padding:10px 0;font-size:.9rem}.battle-units{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:15px 0}.fighter{background:#111b29;padding:12px;border-radius:7px}.fighter.dead{opacity:.4}.hpbar{height:7px;background:#3b2733;border-radius:4px;margin:8px 0;overflow:hidden}.hpbar i{display:block;height:100%;background:var(--green)}table{width:100%;border-collapse:collapse;font-size:.85rem}th,td{padding:10px 6px;text-align:left;border-bottom:1px solid var(--line)}.summary{font-size:2.1rem;color:var(--gold);margin:25px 0 15px}.report-scroll{max-height:240px;overflow:auto}#notice{min-height:32px;margin-top:12px;color:var(--gold);font-size:.9rem}footer{border-top:1px solid var(--line);padding-top:18px;color:var(--muted);font-size:.8rem;line-height:1.8}footer div{display:flex;gap:16px;flex-wrap:wrap}a{color:var(--muted)}dialog{background:var(--panel);color:var(--text);border:1px solid #4c5c74;border-radius:12px;padding:26px;max-width:min(760px,94vw);max-height:88vh;width:600px}dialog::backdrop{background:#000b}dialog .actions{justify-content:flex-end;margin-top:20px}textarea{width:100%;height:46vh;background:#0e1520;color:var(--text);padding:14px;border:1px solid var(--line);font-size:.85rem;margin-top:10px;font-family:monospace}#config-error{color:var(--danger)}.seed{font-size:.75rem;overflow-wrap:anywhere}.kicker{color:var(--gold);font-size:.8rem;letter-spacing:.06em}.info{font-size:.85rem;color:var(--muted)}@media(max-width:1100px){body{padding:20px}main{grid-template-columns:minmax(350px,1.5fr) minmax(250px,1fr)}#boss-panel{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;gap:16px}#boss-panel .panel{margin:0}#play{grid-column:1}#roster{grid-column:2}}@media(max-width:680px){body{padding:16px 12px}header{align-items:flex-start}h1{font-size:1.5rem}h1 small{display:block;margin:7px 0}.metrics{grid-template-columns:1fr 1fr}.metric{padding:12px}.metric strong{font-size:1.2rem}main{display:flex;flex-direction:column;gap:12px}#play{order:0;width:100%}#roster{order:1;width:100%}#boss-panel{order:2;display:block;width:100%}#boss-panel .panel{margin-bottom:12px}.panel{padding:16px}.grid{gap:8px}.tile{min-height:58px;font-size:1.05rem}.offers{gap:8px}.offer{padding:12px}.metrics{margin-bottom:14px}.battle-units{grid-template-columns:1fr 1fr}.actions{gap:8px}.seed{margin-top:12px}}

#event-dialog{width:520px;max-width:calc(100vw - 28px);padding:22px}#event-dialog .event{border:0;background:none;margin:0;padding:0}#event-dialog .event h3{font-size:1.3rem}#event-dialog .offers{gap:10px;margin:14px 0}#event-dialog .offer{padding:12px}#event-dialog .offer p{min-height:0}.event-roster{margin-top:18px}.event-roster summary{cursor:pointer;color:var(--muted)}.event-roster .panel{margin:12px 0 0;padding:12px}#event-dialog-status{color:var(--gold);font-size:.85rem}body:has(#event-dialog[open]){overflow:hidden}

/* Compact map: roughly 40% of the previous area (60% reduction). */
#play .grid{width:63.25%;margin:16px auto;gap:7px}#play .tile{min-height:0;font-size:1rem;letter-spacing:.04em}#play .tile small{font-size:.7rem;margin-top:3px}.event-close{float:right;padding:2px 10px;font-size:1.5rem;margin:-10px -10px 8px 8px}#event-dialog-content{clear:both}@media(max-width:680px){#play .grid{width:75%;gap:6px}#play .tile{font-size:.9rem}#play .tile small{font-size:.65rem}}

.roster-divider{height:1px;background:var(--line);margin:20px 0}.unit strong,.offer h3{overflow-wrap:anywhere}.offer h3{font-size:1rem}.offer p{min-height:0}#roster>.panel{max-height:78vh;overflow:auto}dialog{overflow:auto}#encyclopedia-dialog{width:min(520px,94vw);max-height:78vh}#encyclopedia-dialog .mechanism{padding-block:11px}#encyclopedia-dialog .mechanism p{margin:5px 0}.special-count{font-size:.9rem;color:var(--muted);white-space:nowrap}.special-count strong{color:var(--gold);font-size:1.15em;font-weight:700}.special-events-link{border:0;background:none;padding:0;color:var(--green);font:inherit;font-weight:700;text-decoration:underline;text-underline-offset:3px;cursor:pointer}#swap-dialog{width:420px}@media(max-width:680px){#roster>.panel{max-height:none}}

#play .tile:not(:disabled) small{opacity:1;color:var(--gold)}#play .tile:disabled small{opacity:.8}

/* Character rarity labels, shared by shops and both roster zones. */
.rarity{font-weight:600}.rarity-1{color:#69b4ff}.rarity-2{color:#c38aff}.rarity-3{color:#ffa64d}

/* Highlight professions supplying this run’s required Boss traits. */
.unit.boss-match,.offer.boss-match{background:#1b4033;border:1px solid #47886b;border-radius:9px}.unit.boss-match{padding:10px;margin:8px 0}.boss-match-label{color:#9ee5b7;font-size:.8rem}.owned-summary{color:var(--text);font-size:.82rem;line-height:1.6;padding-top:8px;border-top:1px solid #425469}

.owned-summary{color:var(--muted)}.owned-summary.has-owned{color:#ffdc85;font-weight:700}
