:root {
  --bg: #080c10;
  --surface: #0d1520;
  --surface2: #111d2e;
  --border: #1e3a5f;
  --border2: #2a5080;
  --amber: #e8a020;
  --amber-dim: #7a520e;
  --amber-bright: #ffcc55;
  --red: #cc3030;
  --red-bright: #ff4444;
  --green: #20a060;
  --green-bright: #44cc88;
  --blue: #2080cc;
  --blue-bright: #44aaff;
  --teal: #20b0c0;
  --text: #c8d8e8;
  --text-dim: #607080;
  --text-bright: #e8f0f8;
  --panel-shadow: 0 0 20px rgba(0,100,200,0.08);
  --mono: 'Courier New', Consolas, monospace;
  --display: 'Arial Black', Impact, sans-serif;
  --body: Inter, system-ui, -apple-system, 'Segoe UI', Arial, sans-serif;
}

* { margin: 0; padding: 0; box-sizing: border-box; }

body {
  background: var(--bg);
  color: var(--text);
  font-family: var(--body);
  font-size: 14px;
  line-height: 1.6;
  min-height: 100vh;
  overflow-x: hidden;
}

.starfield {
  position: fixed; top: 0; left: 0;
  width: 100%; height: 100%;
  z-index: 0; pointer-events: none;
}

.game-wrapper {
  position: relative; z-index: 1;
  max-width: 1280px; margin: 0 auto;
  padding: 0 16px 40px;
}

/* ── HEADER (exact Pandora style) ── */
header {
  text-align: center;
  padding: 28px 0 18px;
  border-bottom: 1px solid var(--border);
  margin-bottom: 16px;
}
header h1 {
  font-family: var(--display);
  font-size: 28px; font-weight: 700;
  color: var(--amber); letter-spacing: 4px;
  text-transform: uppercase;
}
.subtitle {
  font-family: var(--mono);
  font-size: 11px; color: var(--text-dim);
  letter-spacing: 3px; margin-top: 6px;
}

/* ── ALERT BANNER (exact Pandora) ── */
.alert-banner {
  background: rgba(204,48,48,0.12);
  border: 1px solid var(--red);
  color: var(--red-bright);
  font-family: var(--mono); font-size: 11px;
  letter-spacing: 2px; text-align: center;
  padding: 7px 16px; margin-bottom: 14px;
  border-radius: 3px;
  animation: blink-alert 1.4s ease-in-out infinite;
}
@keyframes blink-alert { 0%,100%{opacity:1} 50%{opacity:.35} }

/* ── CORE TIMER — full-width bar above grid ── */
.core-banner {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 3px;
  padding: 9px 18px;
  margin-bottom: 16px;
  display: flex; align-items: center; gap: 16px;
}
.core-banner-lbl {
  font-family: var(--display);
  font-size: 9px; color: var(--text-dim);
  letter-spacing: 2px; line-height: 1.5;
  white-space: nowrap;
}
.core-track-wrap { flex: 1; }
.core-track {
  height: 10px; background: #060c16;
  border: 1px solid var(--border); border-radius: 2px;
  overflow: hidden;
}
.core-track-fill {
  height: 100%;
  background: linear-gradient(90deg, var(--green), var(--amber), var(--red-bright));
  transition: width 0.9s linear; border-radius: 2px;
}
.core-hint {
  font-family: var(--mono); font-size: 9px;
  color: var(--text-dim); margin-top: 3px;
  display: flex; justify-content: space-between;
}
.core-time {
  font-family: var(--display);
  font-size: 26px; font-weight: 700;
  color: var(--amber-bright); letter-spacing: 3px;
  white-space: nowrap; min-width: 80px; text-align: right;
}
.core-time.urgent {
  color: var(--red-bright);
  animation: blink-alert .35s ease-in-out infinite;
}

/* ── MAIN GRID (exact Pandora 3-col) ── */
.main-grid {
  display: grid;
  grid-template-columns: 280px 1fr 260px;
  gap: 16px;
  align-items: start;
}

/* ── PANEL (exact Pandora) ── */
.panel {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 4px;
  box-shadow: var(--panel-shadow);
  margin-bottom: 14px;
}
.panel:last-child { margin-bottom: 0; }

.panel-header {
  background: var(--surface2);
  border-bottom: 1px solid var(--border);
  padding: 8px 14px;
  font-family: var(--display);
  font-size: 10px; font-weight: 700;
  color: var(--amber); letter-spacing: 2px;
  text-transform: uppercase;
  display: flex; align-items: center; gap: 8px;
}
.dot {
  width: 7px; height: 7px; border-radius: 50%;
  background: var(--amber); flex-shrink: 0;
  box-shadow: 0 0 6px var(--amber);
}
.dot.red { background: var(--red-bright); box-shadow: 0 0 6px var(--red); }
.dot.green { background: var(--green-bright); box-shadow: 0 0 6px var(--green); }
.dot.blue { background: var(--blue-bright); box-shadow: 0 0 6px var(--blue); }

.panel-body { padding: 12px 14px; }

/* ── STAT ROWS (exact Pandora) ── */
.stat-row {
  display: flex; justify-content: space-between;
  align-items: center; padding: 4px 0;
  border-bottom: 1px solid rgba(30,58,95,0.5);
}
.stat-row:last-child { border-bottom: none; }
.stat-label { font-family: var(--mono); font-size: 10px; color: var(--text-dim); letter-spacing: 1px; }
.stat-value { font-family: var(--display); font-size: 13px; font-weight: 700; color: var(--text-bright); }
.stat-value.good { color: var(--green-bright); }
.stat-value.warn { color: var(--amber-bright); }
.stat-value.bad  { color: var(--red-bright); }
.stat-value.blue { color: var(--blue-bright); }

/* bar sub-row */
.bar-sub {
  width: 100%; height: 5px; background: #060c16;
  border: 1px solid var(--border); border-radius: 2px;
  overflow: hidden; margin-top: 2px; margin-bottom: 6px;
}
.bar-sub-fill { height: 100%; border-radius: 2px; transition: width .35s; }
.bfill-hp  { background: linear-gradient(90deg,#0a2010,var(--green-bright)); }
.bfill-o2  { background: linear-gradient(90deg,#081020,var(--blue-bright)); }
.bfill-thr { background: linear-gradient(90deg,#180808,var(--red-bright)); }

/* noise pips */
.pip-row { display: flex; gap: 4px; margin-top: 4px; align-items: center; }
.pip-lbl { font-family: var(--mono); font-size: 9px; color: var(--text-dim); margin-right: 2px; }
.pip {
  width: 11px; height: 11px; border-radius: 50%;
  background: #0a1520; border: 1px solid var(--border);
  transition: all .25s;
}
.pip.lit { background: var(--red-bright); border-color: var(--amber); box-shadow: 0 0 5px var(--red); }

/* ── SHIP MAP ── */
.map-wrap { background: #040810; border-radius: 3px; padding: 8px; }
.hull-block { margin-bottom: 10px; }
.hull-block:last-child { margin-bottom: 0; }
.hull-hdr {
  font-family: var(--display); font-size: 8px;
  font-weight: 700; color: var(--amber-dim);
  letter-spacing: 2px; margin-bottom: 4px;
  padding-bottom: 3px; border-bottom: 1px solid var(--border);
}
.deck-row { display: flex; gap: 2px; margin-bottom: 2px; align-items: center; }
.deck-lbl {
  font-family: var(--mono); font-size: 6px;
  color: var(--text-dim); width: 26px; flex-shrink: 0;
  letter-spacing: 1px;
}
.sc {
  width: 56px; height: 34px; border: 1px solid #0d1a28;
  border-radius: 2px; cursor: pointer;
  display: flex; flex-direction: column;
  align-items: center; justify-content: center;
  transition: all .15s; flex-shrink: 0; position: relative;
}
.sc:hover { border-color: var(--blue) !important; }
.sc-ico { font-size: 10px; line-height: 1; }
.sc-nm {
  font-family: var(--mono); font-size: 5px;
  color: var(--text-dim); text-align: center;
  line-height: 1.15; padding: 0 1px; max-width: 100%;
}
.s-unk { background: #060c16; border-color: #0a1420 !important; }
.s-unk .sc-nm { opacity: .1; }
.s-unk .sc-ico { opacity: .07; }
.s-exp { background: #0a1624; }
.s-cur { background: #0a1e30; border-color: var(--blue-bright) !important; box-shadow: 0 0 7px rgba(68,170,255,.25); }
.s-cur .sc-nm { color: var(--blue-bright); }
.s-hos { background: #160a0a; border-color: rgba(204,48,48,.4) !important; }
.s-hos .sc-nm { color: #aa5050; }
.s-obj { background: #120e06; border-color: rgba(232,160,32,.35) !important; }
.s-obj .sc-nm { color: var(--amber-dim); }
.s-clr { background: #081008; border-color: rgba(32,160,96,.3) !important; }
.s-clr .sc-nm { color: #2a5030; }
.s-core { background: #160600; border-color: rgba(255,68,0,.5) !important; }
.map-legend {
  display: flex; flex-wrap: wrap; gap: 8px;
  margin-top: 8px; padding-top: 7px;
  border-top: 1px solid var(--border);
}
.leg { display: flex; align-items: center; gap: 4px; font-family: var(--mono); font-size: 8px; color: var(--text-dim); }
.leg-sw { width: 10px; height: 10px; border-radius: 1px; border: 1px solid rgba(255,255,255,.08); }

/* ── LOG OUTPUT (exact Pandora) ── */
.log-output {
  background: #040c18; border: 1px solid var(--border);
  border-radius: 3px; padding: 10px 12px;
  height: 300px; overflow-y: auto;
  font-family: var(--mono); font-size: 10px;
  line-height: 1.7;
  scrollbar-width: thin; scrollbar-color: var(--border) transparent;
}
.log-output::-webkit-scrollbar { width: 3px; }
.log-output::-webkit-scrollbar-thumb { background: var(--border); }
.log-line { padding: 1px 0; border-bottom: 1px solid rgba(255,255,255,.025); }
.log-line.sys    { color: var(--blue-bright); }
.log-line.warn   { color: var(--amber); }
.log-line.danger { color: var(--red-bright); }
.log-line.bio    { color: var(--green-bright); }
.log-line.loot   { color: var(--amber-bright); }
.log-line.info   { color: var(--text-dim); }

/* ── NAV STRIP (exact Pandora) ── */
.nav-strip {
  display: flex; flex-wrap: wrap; gap: 6px;
  padding: 10px 14px;
  border-top: 1px solid var(--border);
  background: var(--surface2);
  border-radius: 0 0 4px 4px;
}
.nav-btn {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 3px; padding: 6px 14px;
  color: var(--blue-bright); font-family: var(--mono);
  font-size: 10px; cursor: pointer;
  transition: all .15s; letter-spacing: 1px;
}
.nav-btn:hover:not(:disabled) { background: rgba(32,128,204,.2); border-color: var(--blue-bright); }
@keyframes endTurnFlash {
  0%   { background: var(--surface); color: var(--blue-bright); transform: scale(1); }
  25%  { background: var(--amber); color: #000; border-color: var(--amber-bright); transform: scale(1.08); box-shadow: 0 0 12px var(--amber); }
  70%  { background: var(--surface2); color: var(--amber-bright); border-color: var(--amber-dim); transform: scale(1.02); }
  100% { background: var(--surface); color: var(--blue-bright); border-color: var(--border); transform: scale(1); }
}
.nav-btn.auto-fire { animation: endTurnFlash 0.55s ease-out forwards; pointer-events: none; }
.nav-btn:disabled { opacity: .3; cursor: not-allowed; }
.nav-btn.amber { color: var(--amber-bright); border-color: var(--amber-dim); }
.nav-btn.amber:hover:not(:disabled) { background: rgba(232,160,32,.15); border-color: var(--amber); }
.nav-btn.red { color: var(--red-bright); border-color: rgba(204,48,48,.4); }
.nav-btn.red:hover:not(:disabled) { background: rgba(204,48,48,.15); border-color: var(--red-bright); }

/* ── SECTION DESCRIPTION (center of Pandora — like paragraph event) ── */
.section-display {
  background: #040c18; border: 1px solid var(--border2);
  border-radius: 3px; padding: 14px;
}
.sec-loc { font-family: var(--mono); font-size: 9px; color: var(--text-dim); letter-spacing: 2px; margin-bottom: 4px; }
.sec-name { font-family: var(--display); font-size: 15px; font-weight: 700; color: var(--amber-bright); margin-bottom: 6px; letter-spacing: 1px; }
.sec-desc { font-size: 12px; color: var(--text); line-height: 1.75; margin-bottom: 10px; }
.sec-exits { display: flex; flex-wrap: wrap; gap: 6px; }
.exit-btn {
  background: var(--surface2); border: 1px solid var(--border);
  color: var(--blue-bright); font-family: var(--mono); font-size: 9px;
  padding: 4px 11px; cursor: pointer; border-radius: 2px;
  transition: all .15s; letter-spacing: 1px;
}
.exit-btn:hover:not(:disabled) { border-color: var(--blue-bright); background: rgba(32,128,204,.15); }
.exit-btn:disabled { opacity: .3; cursor: default; }
.exit-btn.hx { color: var(--red-bright); border-color: rgba(204,48,48,.35); }
.exit-btn.hx:hover:not(:disabled) { background: rgba(204,48,48,.12); }

/* ── INVENTORY SLOTS (Pandora-style item rows) ── */
.inv-slot {
  display: flex; align-items: flex-start; gap: 8px;
  padding: 7px 6px; margin-bottom: 3px;
  border: 1px solid var(--border);
  background: var(--surface2);
  border-radius: 3px; cursor: pointer;
  transition: border-color .15s, background .15s;
}
.inv-slot:hover { border-color: var(--border2); background: rgba(32,128,204,.07); }
.inv-slot.eq { border-color: var(--amber-dim); background: rgba(232,160,32,.07); }
.inv-slot.eq-active { border-color: var(--amber); background: rgba(232,160,32,.12); }
.inv-slot .ii { font-size: 18px; flex-shrink: 0; width: 24px; text-align: center; line-height: 1.2; margin-top: 1px; }
.inv-slot .iinfo { flex: 1; min-width: 0; }
.inv-slot .iname { font-family: var(--mono); font-size: 10px; color: var(--text-bright); display: block; margin-bottom: 2px; }
.inv-slot.eq .iname { color: var(--amber-bright); }
.inv-slot.eq-active .iname { color: var(--amber-bright); }
.inv-slot .idesc { font-family: var(--mono); font-size: 8px; color: var(--text-dim); display: block; line-height: 1.4; }
.inv-slot .irow { display: flex; align-items: center; gap: 5px; margin-top: 4px; }
.inv-type-tag {
  font-family: var(--mono); font-size: 8px; letter-spacing: 1px;
  padding: 1px 5px; border-radius: 2px; border: 1px solid;
}
.itt-weapon  { color: var(--red-bright);   border-color: rgba(204,48,48,.4);   background: rgba(204,48,48,.08); }
.itt-consume { color: var(--green-bright);  border-color: rgba(32,160,96,.4);   background: rgba(32,160,96,.08); }
.itt-key     { color: var(--amber-bright);  border-color: rgba(232,160,32,.4);  background: rgba(232,160,32,.08); }
.itt-tool    { color: var(--blue-bright);   border-color: rgba(32,128,204,.4);  background: rgba(32,128,204,.08); }
.itt-data    { color: var(--teal);          border-color: rgba(32,176,192,.4);  background: rgba(32,176,192,.08); }
.inv-action-tag {
  font-family: var(--mono); font-size: 8px; letter-spacing: 1px;
  padding: 1px 5px; border-radius: 2px;
  color: var(--text-dim); border: 1px solid rgba(30,58,95,.5);
  background: var(--surface); cursor: pointer;
  transition: all .12s;
}
.inv-action-tag:hover { border-color: var(--blue-bright); color: var(--blue-bright); }
.inv-equipped-badge {
  font-family: var(--mono); font-size: 8px; letter-spacing: 1px;
  padding: 1px 5px; border-radius: 2px;
  color: var(--amber); border: 1px solid rgba(232,160,32,.5);
  background: rgba(232,160,32,.1);
}
.inv-shots { font-family: var(--mono); font-size: 8px; color: var(--text-dim); margin-left: auto; }
.inv-slot.empty-slot {
  border: 1px dashed rgba(30,58,95,.4); background: rgba(8,14,22,.5);
  cursor: default; opacity: .45;
}
.inv-slot.empty-slot:hover { border-color: rgba(30,58,95,.4); background: rgba(8,14,22,.5); }
.inv-slot.key-item { border-color: rgba(232,160,32,.3); background: rgba(232,160,32,.04); }
.inv-slot.key-item:hover { border-color: rgba(232,160,32,.55); }
.inv-empty { font-family: var(--mono); font-size: 9px; color: var(--text-dim); padding: 6px 0; text-align: center; letter-spacing: 1px; }
.inv-capacity {
  font-family: var(--mono); font-size: 8px; color: var(--text-dim);
  text-align: right; padding-top: 6px; border-top: 1px solid rgba(30,58,95,.4);
  letter-spacing: 1px;
}

/* ── OBJECTIVES ── */
.obj-item {
  display: flex; gap: 8px; align-items: flex-start;
  padding: 5px 0; border-bottom: 1px solid rgba(30,58,95,.4);
  font-family: var(--mono); font-size: 9px; color: var(--text-dim);
  line-height: 1.45;
}
.obj-item:last-child { border-bottom: none; }
.obj-item.done { color: var(--green); }
.obj-item.done .ochk { color: var(--green-bright); }
.ochk { flex-shrink: 0; }

/* ── COMBAT MODAL (Pandora popup style) ── */
.modal-overlay {
  position: fixed; inset: 0;
  background: rgba(4,8,16,.88);
  z-index: 100; display: none;
  align-items: center; justify-content: center;
}
.modal-overlay.open { display: flex; }
.modal-box {
  background: var(--surface);
  border: 1px solid var(--border2);
  border-radius: 4px;
  box-shadow: 0 0 40px rgba(0,80,180,.15);
  width: 460px; max-width: 96vw;
}
.modal-header {
  background: var(--surface2);
  border-bottom: 1px solid var(--border);
  padding: 10px 16px;
  display: flex; justify-content: space-between; align-items: center;
}
.modal-header h2 {
  font-family: var(--display); font-size: 12px;
  font-weight: 700; color: var(--red-bright);
  letter-spacing: 3px; text-transform: uppercase;
}
.modal-header .modal-sub { font-family: var(--mono); font-size: 9px; color: var(--text-dim); }
.modal-body { padding: 16px; }
.modal-ename { font-family: var(--display); font-size: 16px; font-weight: 700; color: var(--text-bright); margin-bottom: 4px; }
.modal-edesc { font-size: 11px; color: var(--text-dim); line-height: 1.6; margin-bottom: 14px; }
.modal-bars { margin-bottom: 14px; }
.mbar-row { display: flex; align-items: center; gap: 8px; margin-bottom: 5px; }
.mbar-lbl { font-family: var(--mono); font-size: 9px; color: var(--text-dim); width: 72px; flex-shrink: 0; }
.mbar-track { flex: 1; height: 8px; background: #040c18; border: 1px solid var(--border); border-radius: 2px; overflow: hidden; }
.mbar-fill { height: 100%; border-radius: 2px; transition: width .3s; }
.mfill-e { background: linear-gradient(90deg,#180606,var(--red-bright)); }
.mfill-p { background: linear-gradient(90deg,#061806,var(--green-bright)); }
.mbar-val { font-family: var(--mono); font-size: 9px; color: var(--text-dim); width: 48px; text-align: right; flex-shrink: 0; }
.modal-btns { display: flex; flex-wrap: wrap; gap: 7px; margin-bottom: 10px; }
.modal-btn {
  background: var(--surface2); border: 1px solid var(--border);
  border-radius: 3px; padding: 7px 18px;
  color: var(--blue-bright); font-family: var(--mono);
  font-size: 10px; cursor: pointer; transition: all .15s;
  letter-spacing: 1px;
}
.modal-btn:hover:not(:disabled) { background: rgba(32,128,204,.25); border-color: var(--blue-bright); }
.modal-btn.atk { color: var(--red-bright); border-color: rgba(204,48,48,.4); }
.modal-btn.atk:hover:not(:disabled) { background: rgba(204,48,48,.2); border-color: var(--red-bright); }
.modal-btn:disabled { opacity: .3; cursor: not-allowed; }
.modal-msg { font-family: var(--mono); font-size: 10px; color: var(--amber); min-height: 16px; line-height: 1.5; }

/* ── END / TITLE ── */
.full-overlay {
  position: fixed; inset: 0; background: rgba(4,8,14,.97);
  z-index: 200; display: none;
  align-items: center; justify-content: center;
  flex-direction: column;
}
.full-overlay.open { display: flex; }
.end-box {
  background: var(--surface); border: 1px solid var(--border2);
  border-radius: 4px; box-shadow: 0 0 60px rgba(0,80,180,.1);
  width: 500px; max-width: 95vw; text-align: center; padding: 36px;
}
.end-title { font-family: var(--display); font-size: 28px; font-weight: 700; letter-spacing: 6px; margin-bottom: 12px; }
.end-title.win { color: var(--green-bright); }
.end-title.lose { color: var(--red-bright); }
.end-body { font-size: 12px; color: var(--text); max-width: 360px; margin: 0 auto 14px; line-height: 1.85; }
.end-stats { font-family: var(--mono); font-size: 10px; color: var(--text-dim); line-height: 2.2; margin-bottom: 22px; }
.title-art {
  font-family: var(--mono); font-size: 8px; color: #182436;
  white-space: pre; text-align: center; line-height: 1.2;
  margin-bottom: 20px;
  animation: tflicker 7s ease-in-out infinite;
}
@keyframes tflicker { 0%,87%,100%{opacity:1} 88%{opacity:.1} 90%{opacity:1} 93%{opacity:.04} 95%{opacity:1} }
.title-h1 {
  font-family: var(--display); font-size: 44px; font-weight: 700;
  color: var(--amber); letter-spacing: 10px;
  text-shadow: 0 0 30px rgba(232,160,32,.25); margin-bottom: 6px;
}
.title-vessel { font-family: var(--mono); font-size: 11px; color: var(--text-dim); letter-spacing: 3px; margin-bottom: 3px; }
.title-class { font-family: var(--mono); font-size: 10px; color: var(--border2); letter-spacing: 2px; margin-bottom: 26px; }
.title-warn { font-family: var(--mono); font-size: 11px; color: var(--red-bright); letter-spacing: 1px; margin-bottom: 24px; animation: blink-alert 1s ease-in-out infinite; }
.btn-start {
  background: transparent; border: 1px solid var(--amber);
  color: var(--amber-bright); font-family: var(--mono);
  font-size: 11px; letter-spacing: 3px; padding: 11px 36px;
  cursor: pointer; border-radius: 2px; transition: all .2s;
}
.btn-start:hover { background: var(--amber-dim); box-shadow: 0 0 20px rgba(232,160,32,.25); }
.hidden { display: none !important; }

/* ── ADJACENT / REACHABLE cell highlight ── */
@keyframes adjPulse {
  0%,100% { box-shadow: 0 0 4px rgba(32,176,192,.3); border-color: rgba(32,176,192,.6) !important; }
  50%      { box-shadow: 0 0 12px rgba(32,176,192,.7); border-color: var(--teal) !important; }
}
@keyframes adjHosPulse {
  0%,100% { box-shadow: 0 0 4px rgba(204,48,48,.3); border-color: rgba(204,48,48,.7) !important; }
  50%      { box-shadow: 0 0 12px rgba(204,48,48,.7); border-color: var(--red-bright) !important; }
}
.s-adj {
  background: #091c22 !important;
  animation: adjPulse 1.3s ease-in-out infinite;
  cursor: pointer;
}
.s-adj .sc-nm { color: var(--teal) !important; opacity: 1 !important; }
.s-adj .sc-ico { opacity: 1 !important; }
.s-adj-hos {
  background: #1a0d0d !important;
  animation: adjHosPulse 1.3s ease-in-out infinite;
  cursor: pointer;
}
.s-adj-hos .sc-nm { color: var(--red-bright) !important; opacity: 1 !important; }
.s-adj-hos .sc-ico { opacity: 1 !important; }
.sc-dir-arrow {
  position: absolute; top: 1px; right: 2px;
  font-size: 8px; pointer-events: none; font-family: var(--mono);
}
.s-adj .sc-dir-arrow { color: var(--teal); }
.s-adj-hos .sc-dir-arrow { color: var(--red-bright); }

/* ── OBJECTIVE COMPLETE POPUP ── */
.obj-popup-overlay {
  position: fixed; inset: 0;
  background: rgba(4,8,16,.75);
  z-index: 150; display: none;
  align-items: center; justify-content: center;
  backdrop-filter: blur(3px);
}
.obj-popup-overlay.open { display: flex; }
.obj-popup {
  background: var(--surface);
  border: 1px solid var(--green);
  border-radius: 4px;
  box-shadow: 0 0 40px rgba(32,160,96,.3), 0 0 80px rgba(32,160,96,.1);
  width: 480px; max-width: 94vw;
  text-align: center;
  padding: 0;
  animation: objPopIn .35s cubic-bezier(.2,1.4,.4,1) forwards;
}
@keyframes objPopIn {
  from { transform: scale(.85); opacity: 0; }
  to   { transform: scale(1);   opacity: 1; }
}
.obj-popup-header {
  background: var(--surface2);
  border-bottom: 1px solid var(--green);
  padding: 10px 20px;
  display: flex; align-items: center; justify-content: center; gap: 10px;
}
.obj-popup-header h2 {
  font-family: var(--display); font-size: 11px; font-weight: 700;
  color: var(--green-bright); letter-spacing: 4px; text-transform: uppercase;
}
.obj-popup-icon {
  font-size: 40px; margin: 20px 0 10px;
  animation: iconBounce .5s .2s cubic-bezier(.2,1.6,.4,1) both;
}
@keyframes iconBounce {
  from { transform: scale(0) rotate(-15deg); opacity: 0; }
  to   { transform: scale(1) rotate(0deg);   opacity: 1; }
}
.obj-popup-title {
  font-family: var(--display); font-size: 18px; font-weight: 700;
  color: var(--green-bright); letter-spacing: 2px;
  margin-bottom: 8px; padding: 0 20px;
}
.obj-popup-desc {
  font-family: var(--mono); font-size: 10px; color: var(--text-dim);
  line-height: 1.7; padding: 0 24px 16px; letter-spacing: 1px;
}
.obj-popup-progress {
  background: var(--surface2); border-top: 1px solid var(--border);
  padding: 10px 20px; display: flex; align-items: center; gap: 10px;
}
.obj-popup-prog-lbl {
  font-family: var(--mono); font-size: 9px; color: var(--text-dim);
  letter-spacing: 1px; white-space: nowrap;
}
.obj-popup-prog-track {
  flex: 1; height: 7px; background: #060c16;
  border: 1px solid var(--border); border-radius: 2px; overflow: hidden;
}
.obj-popup-prog-fill {
  height: 100%; border-radius: 2px;
  background: linear-gradient(90deg, var(--green), var(--green-bright));
  transition: width .6s ease-out;
}
.obj-popup-prog-val {
  font-family: var(--display); font-size: 11px; font-weight: 700;
  color: var(--green-bright); white-space: nowrap;
}
.obj-popup-footer {
  padding: 12px 20px; border-top: 1px solid var(--border);
  display: flex; justify-content: center; gap: 10px;
}
.obj-popup-btn {
  background: transparent; border: 1px solid var(--green);
  color: var(--green-bright); font-family: var(--mono); font-size: 10px;
  letter-spacing: 2px; padding: 7px 24px; cursor: pointer;
  border-radius: 2px; transition: all .15s;
}
.obj-popup-btn:hover { background: rgba(32,160,96,.2); box-shadow: 0 0 10px rgba(32,160,96,.2); }
.obj-popup-time-bonus {
  background: rgba(232,160,32,.1); border: 1px solid rgba(232,160,32,.4);
  color: var(--amber-bright); font-family: var(--mono); font-size: 10px;
  letter-spacing: 1px; padding: 6px 16px; border-radius: 2px;
}

/* v1.1.0 usability additions */
.title-actions{display:flex;gap:12px;flex-wrap:wrap;justify-content:center}.title-save-note{margin-top:12px;font-family:var(--mono);font-size:9px;color:var(--text-dim);letter-spacing:1px}.map-controls,.hud-actions{margin-left:auto;display:flex;gap:5px}.map-controls button,.hud-actions button{background:#07101b;border:1px solid var(--border);color:var(--blue-bright);font-family:var(--mono);font-size:8px;padding:2px 6px;cursor:pointer}.map-controls button:hover,.hud-actions button:hover{border-color:var(--blue-bright)}.map-viewport{overflow:auto;max-height:620px;cursor:grab}.map-viewport.dragging{cursor:grabbing}#shipMap{transform-origin:top left;transition:transform .12s ease}.s-crumb:not(.s-cur){box-shadow:inset 0 0 0 1px rgba(232,160,32,.65)}.s-crumb:not(.s-cur)::after{content:'•';position:absolute;left:2px;top:-3px;color:var(--amber-bright);font-size:14px;line-height:1}.breadcrumb-sw{background:#0a1624;border-color:var(--amber)!important;box-shadow:inset 0 0 0 1px rgba(232,160,32,.55)}.save-flash{animation:saveFlash .45s ease}@keyframes saveFlash{50%{box-shadow:0 0 18px rgba(68,170,255,.7)}}.combat-hit{animation:hitFlash .2s ease}@keyframes hitFlash{50%{filter:brightness(1.9)}}
@media(max-width:900px){.main-grid{grid-template-columns:1fr}.game-wrapper{padding:0 8px 24px}.sc{width:52px}.title-art{display:none}.title-h1{font-size:34px;letter-spacing:6px}.core-banner{gap:8px;padding:8px}.core-banner-lbl{display:none}}

/* v1.2.0 mission profile enhancements */
.difficulty-select{display:flex;gap:6px;justify-content:center;align-items:center;flex-wrap:wrap;margin:14px auto 6px;font-family:var(--mono);font-size:9px;letter-spacing:1.4px;color:var(--text-dim)}
.diff-btn{background:#07111b;border:1px solid rgba(70,150,210,.35);color:var(--text-dim);padding:6px 10px;font-family:var(--mono);font-size:9px;letter-spacing:1px;cursor:pointer}
.diff-btn:hover,.diff-btn.active{border-color:var(--blue-bright);color:var(--blue-bright);box-shadow:0 0 10px rgba(50,150,255,.12)}
.difficulty-note{text-align:center;font-family:var(--mono);font-size:9px;color:var(--amber-dim);letter-spacing:.6px;margin-bottom:8px}

/* v1.3.0 mission intelligence and event feedback */
.mission-intel{font-family:var(--mono);font-size:9px;letter-spacing:.6px}
.intel-row{display:flex;justify-content:space-between;gap:8px;padding:4px 0;border-bottom:1px solid rgba(100,180,220,.09);color:var(--text-dim)}
.intel-row strong{color:var(--blue-bright);font-weight:600}
.intel-next{margin-top:8px;padding:7px;border:1px solid rgba(232,160,32,.25);background:rgba(232,160,32,.05);color:var(--amber-bright);line-height:1.4}
.intel-keys{margin-top:7px;color:var(--text-dim);font-size:8px;line-height:1.5}
.event-flash{animation:eventFlash .65s ease-out}
@keyframes eventFlash{0%{box-shadow:inset 0 0 0 9999px rgba(255,150,40,.12)}100%{box-shadow:inset 0 0 0 9999px rgba(255,150,40,0)}}
.map-focus .map-viewport{outline:1px solid var(--blue-bright);box-shadow:0 0 14px rgba(50,170,255,.18)}
@media (prefers-reduced-motion:reduce){.event-flash,.save-flash,.sc.s-crumb{animation:none!important}}

/* v1.4.0 exploration archive */
.map-toolbar,.log-tabs{display:flex;gap:5px;flex-wrap:wrap;margin-bottom:7px}.map-toolbar button,.log-tabs button{background:#07101b;border:1px solid var(--border);color:var(--text-dim);font-family:var(--mono);font-size:8px;padding:4px 7px;cursor:pointer}.map-toolbar button:hover,.log-tabs button:hover,.log-tabs button.active{color:var(--blue-bright);border-color:var(--blue-bright)}.s-filter-dim{opacity:.16!important;filter:saturate(.25)}.archive-output{font-family:var(--mono);font-size:9px;max-height:520px;overflow:auto}.archive-entry{padding:6px 3px;border-bottom:1px solid rgba(100,180,220,.09);line-height:1.4}.archive-entry b{color:var(--amber-bright);margin-right:6px}.room-note{padding:8px 3px;border-bottom:1px solid rgba(100,180,220,.12)}.room-note b{display:block;color:var(--blue-bright);letter-spacing:1px}.room-note span{font-size:8px;color:var(--amber-dim)}.room-note p{margin:4px 0 0;color:var(--text-dim);line-height:1.45}.archive-empty{color:var(--text-dim);padding:10px}.hidden{display:none!important}

/* v1.5.0 tactical waypoint routing */
.sc.s-route{box-shadow:inset 0 0 0 2px rgba(90,190,255,.75),0 0 9px rgba(90,190,255,.22);position:relative}
.sc.s-route:after{content:'•';position:absolute;right:3px;top:1px;color:#7fd8ff;font-size:12px;text-shadow:0 0 6px currentColor}
.sc.s-waypoint{outline:2px solid #ffd166!important;outline-offset:1px;box-shadow:0 0 12px rgba(255,209,102,.45)!important}
.route-sw{background:#0a2030!important;border-color:#7fd8ff!important;box-shadow:inset 0 0 0 1px #7fd8ff}
#waypointBtn{max-width:190px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* v1.6.0 sensor reconnaissance */
.sc.s-scan-clear{background:#07171a;border-color:rgba(62,205,190,.55);box-shadow:inset 0 0 0 1px rgba(62,205,190,.16)}
.sc.s-scan-obj{background:#171205;border-color:rgba(255,196,64,.7);box-shadow:inset 0 0 0 1px rgba(255,196,64,.18)}
.sc.s-scan-hos{background:#1a080b;border-color:rgba(255,72,90,.75);box-shadow:inset 0 0 0 1px rgba(255,72,90,.2)}
.sc.s-scan-clear:before,.sc.s-scan-obj:before,.sc.s-scan-hos:before{content:'◉';position:absolute;left:2px;bottom:0;font-size:8px;color:#65e7db;text-shadow:0 0 5px currentColor}
.sc.s-scan-obj:before{color:#ffd166}.sc.s-scan-hos:before{color:#ff5964}
.sensor-sw{background:#07171a!important;border-color:#65e7db!important;box-shadow:inset 0 0 0 1px rgba(101,231,219,.3)}

/* v1.7.0 advanced sensor suite + pointer/touch map */
.map-viewport{touch-action:none;overscroll-behavior:contain;user-select:none;-webkit-user-select:none}
.sc.s-scan-possible{outline:1px dashed rgba(130,205,255,.55);outline-offset:-3px}
.sc.s-scan-confirmed{outline:1px solid rgba(255,255,255,.35);outline-offset:-3px}
.possible-sw{background:#07171a;border:1px dashed rgba(130,205,255,.75)!important}
.confirmed-sw{background:#07171a;border:1px solid rgba(255,255,255,.55)!important}
@media (pointer:coarse){.map-toolbar button,.map-controls button{min-height:34px;min-width:38px;font-size:10px}.sc{min-width:72px;min-height:54px}.nav-btn{min-height:40px}}

/* v1.8.0 polish and accessibility */
.accessibility-tools{display:flex;justify-content:center;gap:6px;flex-wrap:wrap;margin:10px auto 2px}.accessibility-tools button{background:#07101b;border:1px solid var(--border);color:var(--text-dim);font-family:var(--mono);font-size:8px;letter-spacing:.7px;padding:5px 8px;cursor:pointer}.accessibility-tools button:hover,.accessibility-tools button.active{color:var(--blue-bright);border-color:var(--blue-bright);box-shadow:0 0 8px rgba(50,170,255,.12)}
.combat-feedback{font-family:var(--mono);font-size:9px;letter-spacing:1.5px;text-align:center;min-height:18px;margin:3px 0 8px;color:var(--amber-bright);text-transform:uppercase}.combat-feedback.hit{color:var(--red-bright);animation:combatFeedback .24s ease}.combat-feedback.crit{color:#fff;animation:combatCrit .34s ease}.combat-feedback.damage{color:var(--red-bright);animation:combatDamage .3s ease}.combat-feedback.miss{color:var(--text-dim)}
.combat-hit{animation:hitFlash .2s ease}.combat-damage{animation:damageFlash .28s ease}.combat-crit{animation:critFlash .34s ease}@keyframes hitFlash{50%{filter:brightness(1.9)}}@keyframes damageFlash{50%{box-shadow:0 0 24px rgba(220,50,50,.55)}}@keyframes critFlash{50%{filter:brightness(2.2);box-shadow:0 0 28px rgba(255,180,50,.55)}}@keyframes combatFeedback{50%{transform:scale(1.08)}}@keyframes combatCrit{50%{transform:scale(1.18);text-shadow:0 0 12px rgba(255,190,70,.9)}}@keyframes combatDamage{50%{transform:translateX(-3px)}}
.debrief-grid{display:grid;grid-template-columns:repeat(2,minmax(120px,1fr));gap:7px;max-width:430px;margin:0 auto 14px}.debrief-grid div{border:1px solid rgba(100,180,220,.16);background:rgba(5,12,20,.65);padding:8px;text-align:left}.debrief-grid span{display:block;font-family:var(--mono);font-size:7px;color:var(--text-dim);letter-spacing:1px}.debrief-grid strong{display:block;margin-top:3px;font-family:var(--display);font-size:17px;color:var(--blue-bright);letter-spacing:1px}.debrief-grid div:nth-child(2) strong{color:var(--amber-bright)}
.ui-large{font-size:115%}.ui-large .panel-body,.ui-large .sec-desc{font-size:115%}.ui-large button{font-size:110%}.high-contrast{--text-dim:#b8c8d8;--border:#3f6075}.high-contrast .panel,.high-contrast .map-wrap{border-color:#466a82}.high-contrast .intel-next{border-color:rgba(255,190,60,.55)}
@media(max-width:520px){.debrief-grid{grid-template-columns:1fr 1fr}.accessibility-tools button{min-height:34px}}
@media (prefers-reduced-motion:reduce){.combat-feedback,.combat-hit,.combat-damage,.combat-crit{animation:none!important}}
.reduce-motion *, .reduce-motion *::before, .reduce-motion *::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
