:root{
    --panel:#0b1020; --panel2:#111832; --border:#2a3663;
    --gold:#e8c165; --text:#dfe6ff; --dim:#8e9ac0; --good:#5fd18a; --bad:#e8617a; --fuel:#5be0c9;
  }
  *{box-sizing:border-box;}
  body{margin:0; font-family:'Segoe UI',Arial,sans-serif; background:radial-gradient(ellipse at 50% 0%,#0d1230,#020309 70%); color:var(--text); min-height:100vh;}
  #app{display:flex; gap:14px; padding:14px; max-width:1560px; margin:0 auto; align-items:flex-start; flex-wrap:wrap;}
  #boardOuter{width:660px; max-width:96vw; height:660px; overflow:hidden; position:relative; border:3px solid var(--border); border-radius:12px;
    background:#050813; box-shadow:0 0 60px rgba(80,110,255,0.12) inset; flex:0 0 auto; touch-action:none; cursor:grab;}
  #boardOuter.dragging{cursor:grabbing;}
  #zoomCtrls{position:absolute; top:10px; right:10px; display:flex; flex-direction:column; gap:6px; z-index:10;}
  #zoomCtrls button{width:36px; height:36px; padding:0; font-size:17px; line-height:1;}
  #sidebar{flex:1 1 380px; min-width:340px; max-width:470px; display:flex; flex-direction:column; gap:10px;}
  .panel{background:var(--panel); border:1px solid var(--border); border-radius:10px; padding:12px;}
  .panel h2{margin:0 0 8px 0; font-size:13px; letter-spacing:1px; color:var(--gold); text-transform:uppercase;}
  .playerRow{display:flex; align-items:center; gap:6px; padding:6px 8px; border-radius:8px; margin-bottom:5px; background:var(--panel2); border:1px solid #202a52; flex-wrap:wrap;}
  .playerRow.active{border-color:var(--gold); box-shadow:0 0 8px rgba(232,193,101,0.35);}
  .playerRow .dot{width:12px; height:12px; border-radius:50%; flex:0 0 auto; box-shadow:0 0 5px #000;}
  .playerRow .pname{font-weight:600; flex:1 1 auto; font-size:13px;}
  .playerRow .pcash{color:var(--good); font-variant-numeric:tabular-nums; font-size:12px;}
  .playerRow .pfuel{color:var(--fuel); font-size:11px;}
  .playerRow .pfuel.low{color:var(--bad); font-weight:700;}
  .playerRow .pstations{color:var(--dim); font-size:11px;}
  .playerRow.bankrupt{opacity:0.4; text-decoration:line-through;}
  #log{height:170px; overflow-y:auto; font-size:12px; line-height:1.5; color:var(--dim); background:#060914; border-radius:6px; padding:8px; border:1px solid #1a2040;}
  #log div.turn{color:var(--gold); font-weight:600; margin-top:4px;}
  #log div.buy{color:#8fd0ff;}
  #log div.rent{color:var(--bad);}
  #log div.event{color:#c9a9ff;}
  #log div.money{color:var(--good);}
  #log div.laser{color:#ff7a7a; font-weight:600;}
  #log div.fuel{color:var(--fuel);}
  button{background:linear-gradient(180deg,#2a3568,#1a2246); color:var(--text); border:1px solid #3a4890; border-radius:7px;
    padding:8px 12px; font-size:12.5px; cursor:pointer; font-weight:600;}
  button:hover:not(:disabled){filter:brightness(1.25);}
  button:disabled{opacity:0.35; cursor:not-allowed;}
  button.gold{background:linear-gradient(180deg,#e8c165,#b8912f); color:#1a1200; border-color:#8a6a1f;}
  button.danger{background:linear-gradient(180deg,#e8617a,#a83550); color:#fff; border-color:#7a2035;}
  #controls{display:flex; gap:6px; flex-wrap:wrap;}
  #actionList{display:flex; flex-direction:column; gap:5px; max-height:260px; overflow-y:auto;}
  .actionBtn{display:flex; align-items:center; gap:8px; text-align:left; width:100%; padding:9px 12px;}
  .actionBtn .aicon{font-size:15px; flex:0 0 auto;}
  .actionBtn .atext{flex:1;}
  .actionBtn .asub{display:block; font-size:10.5px; color:var(--dim); font-weight:400;}
  .actionBtn.primary{background:linear-gradient(180deg,#e8c165,#b8912f); color:#1a1200; border-color:#8a6a1f;}
  .actionBtn.primary .asub{color:#4a3a10;}
  .actionBtn.danger{background:linear-gradient(180deg,#e8617a,#a83550); color:#fff; border-color:#7a2035;}
  .actionBtn.danger .asub{color:#ffd4dd;}
  .actionHint{font-size:11px; color:var(--dim); padding:4px 2px;}
  #diceArea{display:flex; align-items:center; gap:10px; margin-bottom:8px;}
  .die{width:36px; height:36px; background:#fff; color:#111; border-radius:8px; display:flex; align-items:center; justify-content:center; font-weight:800; font-size:17px;}
  #ownedList{font-size:11.5px; color:var(--dim); max-height:130px; overflow-y:auto;}
  #modalBg{position:fixed; inset:0; background:rgba(0,0,0,0.65); display:none; align-items:center; justify-content:center; z-index:50; padding:14px;}
  #modal{background:#0d1230; border:1px solid var(--border); border-radius:12px; padding:20px; max-width:440px; max-height:82vh; overflow-y:auto; text-align:center;}
  #modal h3{margin-top:0; color:var(--gold);}
  #modal .mbtns{display:flex; gap:8px; justify-content:center; margin-top:14px; flex-wrap:wrap;}
  .badge{font-size:9px; padding:1px 6px; border-radius:10px; background:#1e2850; color:var(--dim); margin-left:4px;}
  #setupBg{position:fixed; inset:0; background:rgba(2,3,9,0.94); display:flex; align-items:center; justify-content:center; z-index:60;}
  #setupCard{background:var(--panel); border:1px solid var(--border); border-radius:14px; padding:26px; width:460px; max-width:92vw; max-height:92vh; overflow-y:auto;}
  #setupCard h1{color:var(--gold); text-align:center; letter-spacing:2px; margin-top:0;}
  .setupRow{display:flex; align-items:center; gap:8px; margin-bottom:8px;}
  .setupRow input[type=text]{flex:1; background:#060914; border:1px solid #2a3663; color:var(--text); padding:7px; border-radius:6px; min-width:0;}
  .setupRow select{background:#060914; border:1px solid #2a3663; color:var(--text); padding:7px; border-radius:6px;}
  .swatch{width:18px; height:18px; border-radius:50%; border:2px solid #fff; flex:0 0 auto;}
  ::-webkit-scrollbar{width:7px; height:7px;} ::-webkit-scrollbar-thumb{background:#2a3663; border-radius:4px;}
  .legend{display:flex; flex-wrap:wrap; gap:3px 10px; font-size:10px; color:var(--dim); margin-top:6px;}
  .legend span{display:inline-flex; align-items:center; gap:3px;}
  .legend i{width:9px; height:9px; border-radius:50%; display:inline-block;}
  .rulesNote{font-size:11px; color:var(--dim); line-height:1.5; margin-top:8px;}
/* v1.1.0 interface enhancements */
.quickbar{display:flex;gap:7px;padding:8px}.quickbar button{flex:1;white-space:nowrap}
.dangerBanner{background:rgba(232,97,122,.14);border:1px solid var(--bad);color:#ffd6df;border-radius:9px;padding:9px 11px;font-size:12px;font-weight:600}
.nodeTip{position:fixed;z-index:45;pointer-events:none;display:none;max-width:250px;background:#070b18;border:1px solid #3a4890;border-radius:7px;padding:7px 9px;color:var(--text);font-size:11px;box-shadow:0 6px 24px rgba(0,0,0,.45)}
.nodeTip b{color:var(--gold)}
.nodedot.legal{fill:rgba(95,209,138,.62)!important;stroke:#d8ffe6!important;stroke-width:2!important;filter:drop-shadow(0 0 4px #5fd18a)}
.tok.currentShip{r:5.2;stroke:var(--gold);stroke-width:2.5;filter:drop-shadow(0 0 5px #e8c165)}
.playerRow .statusWarn{flex-basis:100%;font-size:10.5px;color:var(--bad);padding-left:18px;font-weight:650}
.docChoice{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin:7px 0 12px}.docChoice button{width:100%}
@media(max-width:760px){.quickbar{position:sticky;top:0;z-index:20}.docChoice{grid-template-columns:1fr}}

/* v1.2.0 enhancements */
.quickbar{display:flex;gap:6px;flex-wrap:wrap}.quickbar button{flex:1;min-width:64px}
.soundOn{box-shadow:0 0 0 1px rgba(232,193,101,.45) inset}.kbdHint{font-size:10px;color:var(--dim);text-align:center;margin-top:5px}
.statsTable{width:100%;border-collapse:collapse;font-size:12px}.statsTable th,.statsTable td{padding:7px;border-bottom:1px solid rgba(255,255,255,.09);text-align:right}.statsTable th:first-child,.statsTable td:first-child{text-align:left}.leader{font-weight:700;color:var(--gold)}

.missionStrip{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;align-items:center;text-align:center;padding:8px!important}.missionStrip>div:not(.saveState){background:rgba(255,255,255,.035);border:1px solid rgba(255,255,255,.08);border-radius:6px;padding:6px 3px}.missionStrip span{display:block;color:var(--dim);font-size:9px;text-transform:uppercase;letter-spacing:.08em}.missionStrip b{display:block;margin-top:2px;font-size:12px;color:#eef1f8}.saveState{grid-column:1/-1;font-size:10px;color:var(--dim);text-align:right;padding-right:3px}.saveState.saved{color:#6bdc8f}.historyList{max-height:55vh;overflow:auto;border:1px solid rgba(255,255,255,.08);border-radius:7px;background:rgba(0,0,0,.16)}.historyItem{padding:7px 9px;border-bottom:1px solid rgba(255,255,255,.06);font-size:12px;line-height:1.35}.historyItem .hturn{color:var(--dim);font-size:10px;margin-right:7px}.historyItem.buy{color:#e8c165}.historyItem.money{color:#6bdc8f}.historyItem.laser{color:#ff8f8f}.historyItem.turn{font-weight:600}.historyEmpty{padding:18px;text-align:center;color:var(--dim)}

.ledgerGrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(155px,1fr));gap:8px;margin:10px 0}.ledgerCard{border:1px solid rgba(255,255,255,.09);border-radius:8px;padding:10px;background:rgba(255,255,255,.025)}.ledgerCard.leader{border-color:rgba(232,193,101,.55)}.ledgerName{font-weight:700;margin-bottom:7px}.ledgerValue{font-size:20px;color:#e8c165}.ledgerMeta{font-size:11px;color:var(--dim);line-height:1.5;margin-top:5px}.wealthBar{height:7px;background:rgba(255,255,255,.07);border-radius:8px;overflow:hidden;margin-top:7px}.wealthBar i{display:block;height:100%;background:currentColor}.econDelta.up{color:#6bdc8f}.econDelta.down{color:#ff8f8f}.econDelta.flat{color:var(--dim)}

/* v1.5.0 tactical focus */
.quickbar button.focusOn{border-color:rgba(107,220,143,.75);box-shadow:0 0 0 1px rgba(107,220,143,.18) inset}.routeRing{fill:none;stroke:#6bdc8f;stroke-width:2.2;vector-effect:non-scaling-stroke;pointer-events:none;filter:drop-shadow(0 0 2px rgba(107,220,143,.8))}.routeLine{fill:none;stroke:#6bdc8f;stroke-width:1.5;stroke-dasharray:4 3;opacity:.72;vector-effect:non-scaling-stroke;pointer-events:none}.routeLabel{font-size:9px;font-weight:700;fill:#eef1f8;stroke:#04060f;stroke-width:2px;paint-order:stroke;pointer-events:none}.focusReadout{margin-top:7px;padding:7px 8px;border:1px solid rgba(107,220,143,.2);border-radius:6px;background:rgba(107,220,143,.045);font-size:11px;color:var(--dim);line-height:1.45}.focusReadout b{color:#eef1f8}
