:root{
    --lcars-orange:#ff9c33; --lcars-gold:#ffcc66; --lcars-blue:#6699ff;
    --lcars-lav:#cc99ff; --lcars-red:#ee3d3d; --lcars-pink:#ff88aa; --lcars-teal:#66cccc;
    --bg:#000; --panel:#0a0a12;
  }
  *{box-sizing:border-box}
  html,body{margin:0;height:100%}
  body{background:var(--bg);color:#e8e8f0;font-family:"Antonio","Arial Narrow",Arial,sans-serif;letter-spacing:.5px;-webkit-font-smoothing:antialiased;overflow-x:hidden}
  .wrap{max-width:1180px;margin:0 auto;padding:8px 14px 16px}

  /* Top bar */
  .topbar{display:flex;align-items:stretch;gap:6px;margin-bottom:8px;height:52px}
  .cap{width:52px;background:var(--lcars-orange);border-radius:40px 0 0 40px}
  .cap.r{border-radius:0 40px 40px 0;width:36px;background:var(--lcars-lav)}
  .title{flex:1;background:var(--lcars-orange);color:#000;display:flex;flex-direction:column;justify-content:center;padding:4px 18px}
  .title h1{margin:0;font-size:23px;font-weight:700;letter-spacing:3px;text-transform:uppercase;line-height:1}
  .title .sub{font-size:10px;letter-spacing:4px;color:#3a1e00;text-transform:uppercase;margin-top:3px}
  .elbow{width:110px;background:var(--lcars-blue);position:relative}
  .elbow .pill{position:absolute;right:8px;top:6px;font-size:11px;color:#001;letter-spacing:2px;cursor:pointer}

  /* Red alert */
  .redalert{display:none;align-items:center;justify-content:center;gap:22px;background:var(--lcars-red);color:#fff;font-weight:700;letter-spacing:5px;text-transform:uppercase;font-size:18px;padding:9px 12px;border-radius:8px;margin-bottom:10px;box-shadow:0 0 22px rgba(238,61,61,.6)}
  .redalert.show{display:flex;animation:redflash .7s steps(1) infinite}
  @keyframes redflash{0%{background:var(--lcars-red);box-shadow:0 0 26px rgba(238,61,61,.85)}50%{background:#7a1414;box-shadow:0 0 6px rgba(238,61,61,.25)}}
  body.alert{animation:edgeflash 1s ease-in-out infinite}
  @keyframes edgeflash{0%,100%{box-shadow:none}50%{box-shadow:inset 0 0 60px rgba(238,61,61,.35)}}

  /* Status strip */
  .statusstrip{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:8px}
  .schip{background:var(--panel);border-left:7px solid var(--lcars-teal);border-radius:0 10px 10px 0;padding:4px 10px;flex:1;min-width:96px}
  .schip .lbl{font-size:9px;letter-spacing:2px;text-transform:uppercase;color:#9aa0c8}
  .schip .val{font-size:16px;font-weight:700;font-variant-numeric:tabular-nums}
  .schip.cond{border-color:var(--lcars-gold)}
  .bar{height:7px;background:#14172a;border-radius:6px;overflow:hidden;margin-top:4px}
  .bar>i{display:block;height:100%;border-radius:6px;transition:width .2s}
  .cond .val.GREEN{color:#38c172}.cond .val.YELLOW{color:var(--lcars-gold)}
  .cond .val.RED{color:var(--lcars-red)}.cond .val.DOCKED{color:var(--lcars-teal)}

  /* Tabs */
  .tabs{display:flex;gap:6px;margin-bottom:8px}
  .tab{flex:1;background:#2a2e44;color:#c8cce8;border:none;border-radius:14px 14px 0 0;padding:9px 8px;font-family:inherit;font-size:14px;font-weight:700;letter-spacing:3px;text-transform:uppercase;cursor:pointer;position:relative;transition:background .1s}
  .tab:hover{background:#3a3f5e}
  .tab.active{background:var(--lcars-orange);color:#000}
  .tab.lrs.active{background:var(--lcars-lav)}
  .tab.dmg.active{background:var(--lcars-teal)}
  .tab .badge{position:absolute;top:5px;right:10px;background:var(--lcars-red);color:#fff;font-size:11px;padding:1px 7px;border-radius:10px;letter-spacing:1px}

  .screen{display:none}
  .screen.active{display:block}
  .panel{background:var(--panel);border-left:12px solid var(--lcars-orange);border-radius:0 14px 14px 0;padding:10px 12px}
  .panel h2{margin:0 0 8px;font-size:14px;letter-spacing:3px;text-transform:uppercase;color:var(--lcars-orange)}
  .panel.lav{border-color:var(--lcars-lav)}.panel.lav h2{color:var(--lcars-lav)}
  .panel.teal{border-color:var(--lcars-teal)}.panel.teal h2{color:var(--lcars-teal)}

  .screenrow{display:grid;grid-template-columns:1fr 260px;gap:14px}
  @media(max-width:820px){.screenrow{grid-template-columns:1fr}}

  /* SRS grid */
  #srs{display:grid;grid-template-columns:repeat(8,1fr);gap:4px;width:100%;max-width:min(430px,38vh);margin:0 auto}
  .cell{background:#05060d;border:1px solid #14172a;border-radius:4px;display:flex;align-items:center;justify-content:center;font-size:clamp(15px,3.4vw,26px);cursor:pointer;user-select:none;aspect-ratio:1/1;transition:background .08s,box-shadow .08s}
  .cell:hover{background:#10132a}
  .cell.empty:hover{box-shadow:inset 0 0 0 2px var(--lcars-teal)}
  .cell.ent{color:#fff;text-shadow:0 0 10px #7bdcff}
  .cell.kling{color:var(--lcars-red);text-shadow:0 0 10px #ff5a5a}
  .cell.base{color:var(--lcars-teal);text-shadow:0 0 10px #66ffff}
  .cell.star{color:var(--lcars-gold);text-shadow:0 0 8px #ffcc66;cursor:default}
  body.mode-torp .cell.empty:hover,body.mode-torp .cell.kling:hover,body.mode-torp .cell.star:hover{box-shadow:inset 0 0 0 2px var(--lcars-red)}

  /* LRS galaxy */
  #galaxy{display:grid;grid-template-columns:repeat(8,1fr);gap:4px;width:100%;max-width:min(450px,42vh);margin:0 auto}
  .qcell{background:#05060d;border:1px solid #14172a;border-radius:4px;aspect-ratio:1.1/1;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:14px;font-variant-numeric:tabular-nums;letter-spacing:1px;color:#8890b8;cursor:pointer;transition:background .08s,box-shadow .08s}
  .qcell .code{font-weight:700}
  .qcell .cost{font-size:9px;color:#5a6088;letter-spacing:0}
  .qcell.unknown{color:#3a4060}
  .qcell.here{outline:2px solid var(--lcars-gold);color:var(--lcars-gold)}
  .qcell.hask .code{color:var(--lcars-red)}
  .qcell:hover{background:#141834;box-shadow:inset 0 0 0 2px var(--lcars-lav)}
  .qcell.here:hover{box-shadow:none;cursor:default}

  .legend{display:flex;flex-wrap:wrap;gap:10px;font-size:11px;color:#9aa0c8;margin-top:6px;justify-content:center}
  .legend span b{font-size:15px;margin-right:3px}
  .hint{font-size:11px;color:#7a80a8;letter-spacing:1px;margin:5px 2px 0;min-height:14px}

  /* command buttons */
  .cmds{display:flex;flex-direction:column;gap:6px}
  button.lc{border:none;border-radius:14px;padding:8px 8px;font-family:inherit;font-size:13px;letter-spacing:2px;text-transform:uppercase;font-weight:700;color:#000;background:var(--lcars-gold);cursor:pointer;transition:filter .1s,transform .05s}
  button.lc:hover{filter:brightness(1.12)}button.lc:active{transform:translateY(1px)}
  button.lc.b{background:var(--lcars-blue)}button.lc.o{background:var(--lcars-orange)}
  button.lc.l{background:var(--lcars-lav)}button.lc.r{background:var(--lcars-red);color:#fff}
  button.lc.t{background:var(--lcars-teal)}button.lc.g{background:#38c172}
  button.lc:disabled{background:#2a2e44;color:#5a5f80;cursor:not-allowed;filter:none}
  button.lc.armed{outline:3px solid #fff;filter:brightness(1.2)}

  /* Damage screen */
  .dmgtable{display:flex;flex-direction:column;gap:5px}
  .drow{display:grid;grid-template-columns:170px 1fr 90px 100px;gap:10px;align-items:center;background:#05060d;border-radius:8px;padding:5px 12px}
  @media(max-width:820px){.drow{grid-template-columns:1fr 90px 90px;grid-template-areas:"name status status" "bar bar bar" "sp repair repair"}.drow .dname{grid-area:name}.drow .dbar{grid-area:bar}.drow .dstat{grid-area:status;text-align:right}.drow .drepair{grid-area:repair}}
  .dname{font-size:14px;letter-spacing:1px}
  .dbar{height:10px;background:#14172a;border-radius:6px;overflow:hidden}
  .dbar>i{display:block;height:100%;transition:width .25s}
  .dstat{font-size:12px;font-weight:700;text-align:center;letter-spacing:1px}
  .drepair button{padding:6px 6px;font-size:11px;border-radius:12px}
  .repairnote{font-size:11px;color:#9aa0c8;line-height:1.5;margin-top:8px}

  /* Log */
  .panel.log{border-color:#38c172;margin-top:8px}
  .foot{margin-top:8px !important}
  .panel.log h2{color:#5fd68a}
  #log{height:70px;overflow-y:auto;background:#05060d;border-radius:8px;padding:6px 12px;font-family:"Courier New",monospace;font-size:12px;line-height:1.4}
  #log .l{margin:0}
  #log .sys{color:var(--lcars-gold)}#log .warn{color:var(--lcars-orange)}#log .bad{color:var(--lcars-red)}#log .good{color:#5fd68a}#log .info{color:#9aa8d8}

  .overlay{position:fixed;inset:0;background:rgba(0,0,10,.86);display:none;align-items:center;justify-content:center;z-index:50}
  .overlay.show{display:flex}
  .modal{max-width:460px;text-align:center;padding:34px 30px;border-radius:20px;background:#0a0a16;border:3px solid var(--lcars-orange)}
  .modal h2{font-size:30px;letter-spacing:4px;margin:0 0 10px;text-transform:uppercase}
  .modal.win h2{color:#5fd68a}.modal.lose h2{color:var(--lcars-red)}
  .modal p{color:#c8cce8;line-height:1.6;font-size:15px;white-space:pre-line}
  .modal button{margin-top:18px}
  .foot{text-align:center;margin-top:14px}
  .sound-tgl{cursor:pointer;color:#7a80a8;font-size:12px;letter-spacing:2px;margin-left:16px}

/* v1.1 LCARS interaction polish */
.cell.ent{outline:2px solid #fff;animation:enterprisePulse 1.4s ease-in-out infinite}
.cell.kling.target{outline:3px solid var(--lcars-red);box-shadow:inset 0 0 12px rgba(238,61,61,.55),0 0 16px rgba(238,61,61,.55);animation:targetPulse .8s ease-in-out infinite}
@keyframes enterprisePulse{50%{box-shadow:0 0 18px rgba(123,220,255,.85)}}
@keyframes targetPulse{50%{outline-color:#fff;box-shadow:inset 0 0 16px rgba(238,61,61,.8),0 0 24px rgba(238,61,61,.75)}}
.command-modal,.briefing-modal{width:min(92vw,560px)}
.lcars-input{width:100%;margin-top:12px;padding:14px 16px;border:2px solid var(--lcars-blue);border-radius:12px;background:#02030a;color:#fff;font:700 20px "Courier New",monospace;text-align:center;outline:none}
.lcars-input:focus{border-color:var(--lcars-gold);box-shadow:0 0 16px rgba(255,204,102,.35)}
.modal-actions{display:flex;gap:10px;justify-content:center}.modal-actions button{min-width:140px}
.difficulty-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin-top:16px}
.difficulty-grid button{min-height:90px;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:5px}
.difficulty-grid button b{font-size:16px}.difficulty-grid button span{font-size:10px;letter-spacing:.5px;line-height:1.3}
.briefing-modal>#briefResume{margin-top:14px;width:100%}
.combat-fx{position:fixed;inset:0;pointer-events:none;z-index:45;opacity:0}
.combat-fx.show{opacity:1}.combat-fx.phaser{background:linear-gradient(17deg,transparent 47%,rgba(255,120,80,.8) 49%,rgba(255,240,160,.95) 50%,rgba(255,120,80,.8) 51%,transparent 53%);animation:fxFade .32s ease-out}
.combat-fx.torpedo{background:radial-gradient(circle at 52% 44%,rgba(255,255,255,.9) 0 1%,rgba(255,153,51,.8) 2%,rgba(238,61,61,.45) 5%,transparent 12%);animation:fxFade .32s ease-out}
@keyframes fxFade{from{opacity:1}to{opacity:0}}
@media(max-width:700px){
  .wrap{padding:5px 7px 12px}.title .sub{display:none}.elbow{width:72px}.cap{width:28px}.cap.r{width:22px}
  .tabs{gap:3px}.tab{font-size:11px;letter-spacing:1px;padding:10px 4px}
  .cell,.qcell{touch-action:manipulation}.cmds button.lc,.foot button.lc{min-height:44px}
  .difficulty-grid{grid-template-columns:1fr}.difficulty-grid button{min-height:64px}
  .foot{display:flex;flex-wrap:wrap;gap:6px;justify-content:center}.sound-tgl{width:100%;margin:6px 0 0!important}
}

/* v1.2 command enhancements */
#btnComputer,#btnTactical{min-width:150px}
@media(max-width:900px){
  .statusstrip{flex-wrap:wrap}
  .schip{min-width:92px}
  #btnComputer,#btnTactical{min-width:0;flex:1 1 150px}
}

/* v1.3 tactical combat */
.cell.target{
  outline:3px solid currentColor;
  outline-offset:-4px;
  animation:targetPulse 1s ease-in-out infinite alternate;
}
@keyframes targetPulse{
  from{filter:brightness(1)}
  to{filter:brightness(1.65)}
}
#btnPhaserMode,#btnTarget{min-width:145px}
@media(max-width:900px){
  #btnPhaserMode,#btnTarget{min-width:0;flex:1 1 145px}
}

/* v1.4 bridge combat controls */
.contact-card{
  margin-top:10px;padding:9px 12px;border-radius:8px;
  border:1px solid #34384e;font-size:12px;letter-spacing:.08em;
  background:#11131d;color:#777d9b;
}
.contact-card.locked{border-color:var(--lcars-gold);color:#f0c96b}
.contact-card.danger{border-color:var(--lcars-red);color:#ff8f8f;animation:targetPulse .75s ease-in-out infinite alternate}
#btnBattleStations,#btnCruise{min-width:145px}
@media(max-width:900px){#btnBattleStations,#btnCruise{min-width:0;flex:1 1 145px}}

/* v1.5 mission operations */
.mission-card{
  margin-top:8px;padding:9px 12px;border-radius:8px;border:1px solid #34384e;
  background:#11131d;color:#777d9b;font-size:12px;letter-spacing:.055em
}
.mission-card.active{border-color:var(--lcars-teal);color:#8ce8d7}
.mission-card.complete{border-color:#5fd68a;color:#8ff0a9}
.mission-card.failed{border-color:var(--lcars-red);color:#ff8f8f}
.qcell.missionq{outline:3px solid var(--lcars-teal);outline-offset:-4px;box-shadow:inset 0 0 18px rgba(100,255,225,.14)}
#btnDistress{min-width:145px}
@media(max-width:900px){#btnDistress{min-width:0;flex:1 1 145px}}

/* v1.6 captain progression */
.rankv{font-size:13px!important;white-space:nowrap}
#btnRecord{min-width:145px}
@media(max-width:900px){#btnRecord{min-width:0;flex:1 1 145px}.rankv{font-size:12px!important}}

/* v1.7 persistent Starfleet career */
#btnCareer{min-width:145px}
@media(max-width:900px){#btnCareer{min-width:0;flex:1 1 145px}}

/* v1.8 command doctrine */
.doctrine-box{margin:14px 0 10px;padding-top:10px;border-top:1px solid #34384e}
.doctrine-box h3{margin:0 0 8px;font-size:12px;letter-spacing:.12em;color:#8c93b8;text-transform:uppercase}
.doctrine-grid .doctrine{opacity:.7}
.doctrine-grid .doctrine.active{opacity:1;outline:3px solid currentColor;outline-offset:2px}

/* v1.9 senior bridge officer */
.doctrine-grid .officer{opacity:.7}
.doctrine-grid .officer.active{opacity:1;outline:3px solid currentColor;outline-offset:2px}

/* v2.0 dynamic space */
#btnSpace{min-width:145px}
@media(max-width:900px){#btnSpace{min-width:0;flex:1 1 145px}}
