:root{
  --bg:#04060a; --panel:rgba(8,13,20,.86); --line:#1d2a38; --line2:#2a3b4f;
  --ink:#c9d6e3; --dim:#6f8396; --ai:#50ffd8; --warn:#ff5a5a; --gold:#ffcf5a; --ok:#57e389;
  --mono:'IBM Plex Mono',ui-monospace,Menlo,Consolas,monospace;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%;background:var(--bg);color:var(--ink);font:13px/1.4 var(--mono);overflow:hidden;user-select:none}
canvas#gl,canvas#cv{position:fixed;inset:0;width:100vw;height:100vh;display:block}
canvas#cv{cursor:crosshair;background:transparent}
#scan{position:fixed;inset:0;pointer-events:none;z-index:5;
  background:repeating-linear-gradient(to bottom,rgba(255,255,255,.018) 0 1px,transparent 1px 3px),
  radial-gradient(ellipse at center,transparent 55%,rgba(0,0,0,.55) 100%)}
.hidden{display:none!important}
button{font:inherit;color:var(--ink);background:#0d1520;border:1px solid var(--line2);padding:4px 8px;border-radius:3px;cursor:pointer}
button:hover:not(:disabled){border-color:var(--ai);color:#fff;background:#102233}
button:disabled{opacity:.35;cursor:not-allowed}
button.on{border-color:var(--ai);color:var(--ai)}
button.danger{border-color:#5a2630}
button.danger:hover:not(:disabled){border-color:var(--warn);background:#2a1016}
select{font:inherit;background:#0d1520;color:var(--ink);border:1px solid var(--line2);padding:3px;border-radius:3px;max-width:150px}

#hud{position:fixed;inset:0;pointer-events:none;z-index:10}
#hud>*{pointer-events:auto}
#topbar{position:absolute;left:0;right:0;top:0;height:40px;display:flex;align-items:center;gap:16px;padding:0 12px;
  background:linear-gradient(to bottom,rgba(4,8,12,.95),rgba(4,8,12,.6));border-bottom:1px solid var(--line)}
.brand{font-family:'Major Mono Display',var(--mono);color:var(--ai);font-size:18px;letter-spacing:4px;text-shadow:0 0 12px rgba(80,255,216,.5)}
.clock{color:var(--dim);min-width:56px}
.meter{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--dim)}
.mbar{width:110px;height:8px;background:#0a1118;border:1px solid var(--line2);border-radius:2px;overflow:hidden}
.mbar i{display:block;height:100%;width:100%;background:var(--ai);transition:width .2s}
.meter.warn span{color:var(--warn)} .meter.warn .mbar i{background:var(--warn)}
.spacer{flex:1}
.btns{display:flex;gap:4px}
.btns button{min-width:32px}

#roster{position:absolute;left:8px;top:48px;width:168px;display:flex;flex-direction:column;gap:2px;max-height:calc(100vh - 290px);overflow:auto}
.rc{display:flex;align-items:center;gap:6px;padding:3px 6px;background:var(--panel);border:1px solid var(--line);border-radius:3px;cursor:pointer;font-size:12px}
.rc:hover{border-color:var(--line2)} .rc.sel{border-color:var(--ai)}
.rc .dot{width:9px;height:9px;border-radius:50%;flex:none}
.rc .nm{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rc .st{font-size:11px;color:var(--dim)}
.rc.awake .st{color:var(--ok)} .rc.dead{opacity:.5} .rc.dead .nm{text-decoration:line-through} .rc.hostile .st{color:var(--warn)}
.rc.escaped{opacity:.55}

#panel{position:absolute;right:8px;top:48px;width:300px;max-height:calc(100vh - 56px);overflow:auto;background:var(--panel);border:1px solid var(--line);border-radius:4px;padding:10px 12px}
#panel:empty{display:none}
#panel h2{margin:0 0 2px;font-size:15px;color:#fff;font-weight:600;display:flex;align-items:center;gap:8px}
#panel .sub{color:var(--dim);font-size:11px;margin-bottom:8px}
#panel .sec{margin-top:10px;border-top:1px solid var(--line);padding-top:7px}
#panel .sec>b{display:block;font-size:10px;letter-spacing:2px;color:var(--dim);margin-bottom:5px;font-weight:400}
#panel .row{display:flex;flex-wrap:wrap;gap:4px;align-items:center}
#panel .row button{font-size:12px;padding:3px 7px}
#panel .dot{width:11px;height:11px;border-radius:50%;display:inline-block}
.bar{display:grid;grid-template-columns:78px 1fr 30px;align-items:center;gap:6px;font-size:11px;color:var(--dim);margin:2px 0}
.bar .tr{height:7px;background:#0a1118;border:1px solid var(--line);border-radius:2px;overflow:hidden}
.bar .tr i{display:block;height:100%;width:0}
.bar em{font-style:normal;text-align:right;color:var(--ink)}
.chips{display:flex;flex-wrap:wrap;gap:4px}
.chip{font-size:11px;padding:1px 6px;border:1px solid var(--line2);border-radius:10px;color:var(--ink)}
.secret{font-size:11.5px;margin:4px 0;padding:4px 6px;border-left:2px solid var(--line2);color:var(--dim)}
.secret.known{border-color:var(--gold);color:var(--ink)} .secret.known b{color:var(--gold)}
.bio{color:var(--dim);font-size:12px;margin:6px 0}
.note{font-size:11px;color:var(--dim);margin-top:4px}
.podlist{display:grid;grid-template-columns:1fr 1fr;gap:3px}
.podlist button{display:flex;align-items:center;gap:5px;text-align:left;font-size:11.5px}
.state-warn{color:var(--warn)} .state-ok{color:var(--ok)}

#log{position:absolute;left:8px;bottom:8px;width:min(520px,calc(100vw - 330px));height:220px;overflow:auto;background:linear-gradient(to top,rgba(4,8,12,.9),rgba(4,8,12,.55));
  border:1px solid var(--line);border-radius:4px;padding:6px 8px;font-size:12px}
#log div{margin:1px 0}
#log .ai{color:var(--ai)} #log .sys{color:var(--dim)} #log .warn{color:var(--warn)} #log .secret{color:var(--gold)} #log .good{color:var(--ok)}
#log .t{color:#3f5263;margin-right:6px}

#toasts{position:absolute;top:52px;left:50%;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:6px;pointer-events:none}
.toast{background:rgba(8,13,20,.95);border:1px solid var(--line2);padding:6px 14px;border-radius:3px;font-size:12.5px;animation:tin .25s ease-out;max-width:520px;text-align:center}
.toast.secret{border-color:var(--gold);color:var(--gold)} .toast.ach{border-color:var(--ai);color:var(--ai)} .toast.warn{border-color:var(--warn);color:var(--warn)}
@keyframes tin{from{opacity:0;transform:translateY(-8px)}to{opacity:1}}
#tip{position:fixed;pointer-events:none;background:rgba(5,9,14,.95);border:1px solid var(--line2);padding:3px 8px;font-size:11.5px;border-radius:3px;z-index:20;white-space:nowrap}
#pausedTag{position:absolute;top:50px;left:50%;transform:translateX(-50%);color:var(--gold);letter-spacing:6px;font-size:12px;pointer-events:none;margin-top:0}

#overlay{position:fixed;inset:0;z-index:30;background:rgba(2,4,7,.82);display:flex;align-items:center;justify-content:center;padding:16px}
#ovbox{width:min(860px,100%);max-height:100%;overflow:auto;background:rgba(6,10,16,.97);border:1px solid var(--line2);border-radius:6px;padding:28px 32px;box-shadow:0 0 60px rgba(80,255,216,.07)}
#ovbox h1{font-family:'Major Mono Display',var(--mono);color:var(--ai);font-size:54px;margin:0;letter-spacing:10px;font-weight:400;text-shadow:0 0 28px rgba(80,255,216,.45)}
#ovbox h2{color:#fff;font-size:20px;margin:0 0 12px;font-weight:600}
#ovbox h3{color:var(--dim);font-size:11px;letter-spacing:3px;margin:22px 0 8px;font-weight:400;border-bottom:1px solid var(--line);padding-bottom:4px}
#ovbox p{color:var(--ink);font-size:14px;line-height:1.65;max-width:680px}
#ovbox .tag{color:var(--dim);letter-spacing:3px;font-size:12px;margin:4px 0 22px}
#ovbox .menu{display:flex;gap:10px;flex-wrap:wrap;margin-top:24px;align-items:center}
#ovbox .menu button{padding:9px 18px;font-size:14px}
#ovbox .menu button.big{border-color:var(--ai);color:var(--ai)}
#ovbox ul{padding-left:18px;line-height:1.7;color:var(--ink);font-size:13px}
#ovbox ul b{color:#fff}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:8px}
.card{border:1px solid var(--line);border-radius:4px;padding:8px 10px;font-size:12px;color:var(--dim)}
.card b{display:block;color:var(--dim);font-size:13px;margin-bottom:2px}
.card.done{border-color:#2d5a52;color:var(--ink)} .card.done b{color:var(--ai)}
.card.sdone b{color:var(--gold)}
.crewsec{border:1px solid var(--line);border-radius:4px;padding:8px 10px}
.crewsec>div:first-child{display:flex;align-items:center;gap:6px;color:#fff;margin-bottom:4px}
.ending-text{font-size:16px!important;font-style:italic;color:#e6eef6!important}
.stats{display:flex;gap:18px;flex-wrap:wrap;color:var(--dim);font-size:12px}
.stats b{color:#fff}
.seedrow{color:var(--dim);font-size:12px;display:flex;gap:6px;align-items:center}
.seedrow input{font:inherit;background:#0d1520;color:var(--ink);border:1px solid var(--line2);padding:4px 6px;border-radius:3px;width:120px}
kbd{border:1px solid var(--line2);border-radius:3px;padding:0 4px;font-size:11px;color:#fff}

@media (max-width:900px){
  #roster{width:120px;font-size:11px}
  #panel{width:250px}
  #log{height:140px;width:calc(100vw - 280px)}
  .meter .mbar{width:60px}
}
