/* Static - dark, dense, EVE-native. No framework. */

:root{
  --bg:#080b10; --panel:#0f141d; --panel2:#141a26; --raise:#1a2130;
  --line:#1f2836; --line2:#2b3547;
  --text:#ccd5e2; --dim:#7e8a9c; --faint:#4a5464;
  --gold:#d9a441; --cyan:#4fc3d9; --green:#4bbf8a; --amber:#e0a04a;
  --red:#e06055; --violet:#9a7fd0;
  --mono:ui-monospace,"SF Mono","Cascadia Mono","JetBrains Mono",Consolas,monospace;
  --ui:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
}

*{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0;background:var(--bg);color:var(--text);
  font:13px/1.45 var(--ui);
  -webkit-font-smoothing:antialiased;
  display:flex;flex-direction:column;overflow:hidden;
}

/* ------------------------------------------------------------------- bar */
.bar{
  flex:0 0 46px;display:flex;align-items:center;gap:24px;
  padding:0 16px;background:linear-gradient(180deg,#101725,#0c111a);
  border-bottom:1px solid var(--line2);
}
.brand{display:flex;align-items:center;gap:9px}
.mark{
  width:11px;height:11px;border-radius:50%;
  background:var(--gold);box-shadow:0 0 0 3px rgba(217,164,65,.14),0 0 14px rgba(217,164,65,.5);
}
.word{font-weight:700;letter-spacing:.22em;font-size:13px}
.tag{color:var(--faint);font-size:11px;letter-spacing:.06em}
.bar-mid{display:flex;gap:16px;margin-left:auto}
.bar-right{display:flex;align-items:center;gap:14px}
.ctl{display:flex;align-items:center;gap:7px;font-size:11px;color:var(--dim)}
.ctl span{text-transform:uppercase;letter-spacing:.1em}
select{
  background:var(--panel2);color:var(--text);border:1px solid var(--line2);
  border-radius:5px;padding:4px 8px;font:12px var(--ui);cursor:pointer;
}
select:focus{outline:none;border-color:var(--gold)}
.home{
  font:12px var(--mono);color:var(--cyan);
  background:rgba(79,195,217,.09);border:1px solid rgba(79,195,217,.25);
  padding:3px 9px;border-radius:5px;
}
.live{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--faint);
  text-transform:uppercase;letter-spacing:.1em}
.live i{width:6px;height:6px;border-radius:50%;background:var(--green);
  animation:pulse 2.4s infinite}
.live.stale i{background:var(--faint);animation:none}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.25}}

/* ------------------------------------------------------------------ grid */
.grid{
  flex:1;display:grid;grid-template-columns:340px minmax(0,1fr) 330px;
  gap:12px;padding:12px;overflow:hidden;
}
.rail{display:flex;flex-direction:column;gap:12px;overflow-y:auto;min-height:0}
.board{display:flex;flex-direction:column;gap:12px;overflow:hidden;min-height:0}

.panel{
  background:var(--panel);border:1px solid var(--line);border-radius:8px;
  padding:12px 13px;
}
.panel h2{
  margin:0 0 10px;font-size:10px;font-weight:600;letter-spacing:.16em;
  text-transform:uppercase;color:var(--faint);
}

/* ----------------------------------------------------------------- paste */
.paste{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:10px}
textarea{
  width:100%;height:74px;resize:vertical;background:#070a0e;color:var(--text);
  border:1px solid var(--line2);border-radius:6px;padding:9px 11px;
  font:12px/1.5 var(--mono);
}
textarea:focus{outline:none;border-color:var(--gold);box-shadow:0 0 0 3px rgba(217,164,65,.08)}
textarea::placeholder{color:var(--faint)}
.paste-actions{display:flex;align-items:center;gap:9px;margin-top:8px}
.paste-note{flex:1;font-size:11px;color:var(--faint)}
.btn{
  background:var(--raise);color:var(--text);border:1px solid var(--line2);
  border-radius:5px;padding:6px 13px;font:12px var(--ui);cursor:pointer;
}
.btn:hover:not(:disabled){border-color:var(--faint)}
.btn.primary{background:rgba(217,164,65,.14);border-color:rgba(217,164,65,.45);color:var(--gold)}
.btn.primary:hover:not(:disabled){background:rgba(217,164,65,.22)}
.btn:disabled{opacity:.35;cursor:default}

.scanline{font:11px var(--mono);color:var(--faint);padding:0 2px}
.scanline b{color:var(--dim);font-weight:500}

#sections{overflow-y:auto;display:block;min-height:0;padding-right:2px}
#sections > .sec{margin-bottom:12px}

/* --------------------------------------------------------------- sections */
.sec{background:var(--panel);border:1px solid var(--line);border-radius:8px;
  overflow:hidden;flex:0 0 auto}
.sec > header{
  display:flex;align-items:center;gap:9px;padding:9px 13px;
  background:var(--panel2);border-bottom:1px solid var(--line);
}
.sec h3{margin:0;font-size:11px;font-weight:600;letter-spacing:.13em;text-transform:uppercase}
.sec .sub{font-size:11px;color:var(--faint)}
.sec .count{margin-left:auto;font:11px var(--mono);color:var(--dim)}
.sec.run > header{border-left:3px solid var(--green)}
.sec.run h3{color:var(--green)}
.sec.blocked > header{border-left:3px solid var(--red)}
.sec.blocked h3{color:var(--red)}
.sec.defended > header{border-left:3px solid var(--amber)}
.sec.defended h3{color:var(--amber)}
.sec.unres > header{border-left:3px solid var(--faint)}
.sec.unres h3{color:var(--dim)}
.sec.holes > header{border-left:3px solid var(--violet)}
.sec.holes h3{color:var(--violet)}

.row{
  display:grid;grid-template-columns:74px 1fr auto;gap:11px;align-items:center;
  padding:7px 13px;border-bottom:1px solid rgba(31,40,54,.55);
}
.row:last-child{border-bottom:none}
.row:hover{background:rgba(255,255,255,.017)}
.sig{font:11px var(--mono);color:var(--dim);letter-spacing:.02em}
.nm{display:flex;align-items:center;gap:8px;min-width:0}
.nm b{font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.meta{display:flex;align-items:center;gap:12px;font:11px var(--mono);color:var(--faint)}
.isk{color:var(--gold);font:12px var(--mono);text-align:right;min-width:64px}
.isk.zero{color:var(--faint)}
.why{font-size:11px;color:var(--faint);white-space:nowrap}

.chip{
  font-size:9.5px;letter-spacing:.09em;text-transform:uppercase;
  padding:2px 6px;border-radius:3px;border:1px solid;white-space:nowrap;
}
.chip.combat{color:var(--red);border-color:rgba(224,96,85,.35);background:rgba(224,96,85,.08)}
.chip.relic{color:var(--violet);border-color:rgba(154,127,208,.35);background:rgba(154,127,208,.08)}
.chip.data{color:var(--cyan);border-color:rgba(79,195,217,.3);background:rgba(79,195,217,.08)}
.chip.gas{color:var(--green);border-color:rgba(75,191,138,.3);background:rgba(75,191,138,.08)}
.chip.ore{color:var(--dim);border-color:var(--line2);background:rgba(255,255,255,.02)}
.chip.wormhole{color:var(--gold);border-color:rgba(217,164,65,.35);background:rgba(217,164,65,.08)}
.chip.new{color:var(--green);border-color:rgba(75,191,138,.4);background:rgba(75,191,138,.1)}

.empty{padding:14px 13px;color:var(--faint);font-size:12px}

/* ----------------------------------------------------------------- value */
.value .big{font:26px/1.1 var(--mono);color:var(--gold);letter-spacing:-.01em}
.split{display:flex;flex-direction:column;gap:5px;margin-top:11px}
.split > div{display:flex;justify-content:space-between;align-items:baseline;
  padding:4px 0;border-bottom:1px solid rgba(31,40,54,.5)}
.split .k{font-size:11px;color:var(--faint);text-transform:uppercase;letter-spacing:.08em}
.split b{font:13px var(--mono);font-weight:500}
.good{color:var(--green)}.bad{color:var(--red)}
.caveat{margin:10px 0 0;font-size:11px;line-height:1.5;color:var(--faint);
  border-left:2px solid var(--line2);padding-left:9px}
.caveat b{color:var(--dim)}

/* --------------------------------------------------------------- compare */
.compare{display:flex;flex-direction:column;gap:7px}
.cmp{padding:8px 10px;background:var(--panel2);border:1px solid var(--line);
  border-radius:6px;cursor:pointer}
.cmp:hover{border-color:var(--line2)}
.cmp.on{border-color:rgba(217,164,65,.5);background:rgba(217,164,65,.07)}
.cmp .lbl{font-size:11px;color:var(--dim);margin-bottom:5px}
.cmp.on .lbl{color:var(--gold)}
.cmp .n{display:flex;justify-content:space-between;align-items:baseline}
.cmp .n b{font:14px var(--mono);color:var(--green)}
.cmp .n span{font:11px var(--mono);color:var(--faint)}
.cmp .bar{height:3px;background:var(--line);border-radius:2px;margin-top:6px;overflow:hidden}
.cmp .bar i{display:block;height:100%;background:var(--green);border-radius:2px}

/* ----------------------------------------------------------------- regen */
.regen .hdr{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.pill{font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;padding:2px 7px;
  border-radius:3px;border:1px solid}
.pill.warn{color:var(--amber);border-color:rgba(224,160,74,.4);background:rgba(224,160,74,.09)}
.pill.ok{color:var(--green);border-color:rgba(75,191,138,.4);background:rgba(75,191,138,.09)}
.rrow{display:flex;justify-content:space-between;padding:3px 0;font-size:12px}
.rrow span{color:var(--dim)}
.rrow b{font:12px var(--mono);font-weight:500}
.regen .note{margin:9px 0 0;font-size:11px;color:var(--amber);line-height:1.5}

/* ----------------------------------------------------------------- fleet */
.fleet{display:flex;flex-direction:column;gap:2px}
.pilot{display:grid;grid-template-columns:7px 1fr auto;gap:9px;align-items:center;
  padding:6px 4px;border-bottom:1px solid rgba(31,40,54,.5)}
.pilot:last-child{border-bottom:none}
.dot{width:7px;height:7px;border-radius:50%;background:var(--faint)}
.dot.on{background:var(--green);box-shadow:0 0 7px rgba(75,191,138,.6)}
.pilot .who{min-width:0}
.pilot .who b{display:block;font-weight:500;font-size:12px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pilot .who small{color:var(--faint);font-size:10.5px}
.pilot .loc{text-align:right;font:11px var(--mono)}
.pilot .loc .wh{color:var(--gold)}
.pilot .loc .hs{color:var(--green)}
.pilot .loc .ls{color:var(--amber)}
.pilot .loc .ns{color:var(--red)}
.pilot .loc small{display:block;color:var(--faint);font-size:10px}

/* ----------------------------------------------------------------- chain */
.chain-wrap{background:#070a0e;border:1px solid var(--line);border-radius:6px}
#chain{width:100%;height:260px;display:block}
.hint{margin:8px 0 0;font-size:11px;color:var(--faint);line-height:1.5}

/* ------------------------------------------------------------------ prov */
.prov{display:flex;flex-direction:column;gap:6px;font-size:11px}
.prov .p{display:flex;justify-content:space-between;gap:10px;color:var(--faint)}
.prov .p b{color:var(--dim);font:11px var(--mono);font-weight:500;text-align:right}
.prov .cav{color:var(--amber);line-height:1.5;border-left:2px solid rgba(224,160,74,.3);
  padding-left:8px;margin-top:3px}

::-webkit-scrollbar{width:9px;height:9px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--line2);border-radius:5px}
::-webkit-scrollbar-thumb:hover{background:var(--faint)}

/* ======================================================== map view ======= */
.tabs{display:flex;gap:2px;margin-left:28px}
.tab{background:transparent;border:none;border-bottom:2px solid transparent;
  color:var(--faint);font:12px var(--ui);letter-spacing:.06em;padding:6px 14px;
  cursor:pointer;text-transform:uppercase}
.tab:hover{color:var(--dim)}
.tab.on{color:var(--gold);border-bottom-color:var(--gold)}
.bar .bar-right{margin-left:auto}
.view.hidden{display:none}
.board-view{grid-template-columns:minmax(0,1fr) 330px}

.mapwrap{display:flex;flex-direction:column;background:var(--panel);
  border:1px solid var(--line);border-radius:8px;overflow:hidden;min-width:0}
#map{flex:1;width:100%;display:block;background:#070a0e;user-select:none}
.toolbar{display:flex;align-items:center;gap:9px;padding:8px 10px;
  background:var(--panel2);border-bottom:1px solid var(--line)}
.tspacer{flex:1}
.tsearch{position:relative}
.tsearch input{background:#070a0e;border:1px solid var(--line2);border-radius:5px;
  color:var(--text);font:12px var(--ui);padding:5px 10px;width:190px}
.tsearch input:focus{outline:none;border-color:var(--gold)}
.results{position:absolute;top:32px;left:0;z-index:40;min-width:220px;
  background:var(--panel2);border:1px solid var(--line2);border-radius:6px;
  overflow:hidden;box-shadow:0 10px 30px rgba(0,0,0,.55)}
.results:empty{display:none}
.results button{display:block;width:100%;text-align:left;background:none;border:none;
  color:var(--text);font:12px var(--mono);padding:7px 11px;cursor:pointer}
.results button:hover{background:rgba(217,164,65,.14);color:var(--gold)}

.legend{display:flex;align-items:center;gap:7px;font-size:10.5px;color:var(--faint)}
.legend .ln{width:15px;height:2.5px;border-radius:2px;display:inline-block}
.legend .fresh{background:var(--green)}
.legend .reduced{background:var(--amber)}
.legend .critical{background:var(--red)}
.legend .eolline{background:repeating-linear-gradient(90deg,var(--dim) 0 4px,transparent 4px 7px)}
.hintbar{font-size:10.5px;color:var(--faint);margin-left:10px}
.hintbar.warn{color:var(--gold)}

/* ---------------------------------------------------------- context menu */
.ctx{position:fixed;z-index:100;min-width:212px;background:var(--panel2);
  border:1px solid var(--line2);border-radius:7px;padding:4px;
  box-shadow:0 16px 44px rgba(0,0,0,.7)}
.ctx.hidden{display:none}
.ctx .head{padding:7px 10px 8px;font:11px var(--mono);color:var(--gold);
  border-bottom:1px solid var(--line);margin-bottom:4px}
.ctx .sep{height:1px;background:var(--line);margin:4px 0}
.ctx button{display:block;width:100%;text-align:left;background:none;border:none;
  color:var(--text);font:12px var(--ui);padding:6px 10px;border-radius:4px;cursor:pointer}
.ctx button:hover{background:rgba(255,255,255,.06)}
.ctx button.on{color:var(--gold)}
.ctx button.on::after{content:' ✓';color:var(--gold)}
.ctx button.danger{color:var(--red)}
.ctx button.danger:hover{background:rgba(224,96,85,.12)}

/* ------------------------------------------------------------- inspector */
.insp-empty{color:var(--faint);font-size:12px;padding:6px 0}
.ititle{font:14px var(--mono);color:var(--text);margin-bottom:7px}
.imeta{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}
.iwhy{margin:0 0 10px;font-size:11px;color:var(--faint);line-height:1.5;
  border-left:2px solid var(--line2);padding-left:8px}
.inote{margin:6px 0 10px;font-size:11px;color:var(--amber);line-height:1.5;
  border-left:2px solid rgba(224,160,74,.35);padding-left:8px}
.irow{display:flex;justify-content:space-between;gap:10px;padding:4px 0;
  border-bottom:1px solid rgba(31,40,54,.5);font-size:11.5px}
.irow span{color:var(--faint)}
.irow b{font:11.5px var(--mono);font-weight:500;color:var(--dim);text-align:right}
.field{margin-top:11px}
.field label{display:block;font-size:10px;letter-spacing:.12em;text-transform:uppercase;
  color:var(--faint);margin-bottom:5px}
.field input{width:100%;background:#070a0e;border:1px solid var(--line2);border-radius:5px;
  color:var(--text);font:12px var(--mono);padding:6px 9px}
.field input:focus{outline:none;border-color:var(--gold)}
.seg{display:flex;gap:3px}
.seg button{flex:1;background:var(--raise);border:1px solid var(--line2);color:var(--dim);
  font:10.5px var(--ui);padding:6px 4px;border-radius:4px;cursor:pointer;
  text-transform:capitalize}
.seg button:hover{border-color:var(--faint)}
.seg button.on{color:#0a0d12;font-weight:600;border-color:transparent}
.seg button.on.fresh{background:var(--green)}
.seg button.on.reduced{background:var(--amber)}
.seg button.on.critical{background:var(--red)}
.seg button.on:not(.fresh):not(.reduced):not(.critical){background:var(--dim)}
.linkrow{display:block;width:100%;text-align:left;background:none;border:none;
  color:var(--cyan);font:11.5px var(--mono);padding:5px 0;cursor:pointer}
.linkrow:hover{color:var(--gold)}
.btn.wide{width:100%;margin-top:14px}
.btn.danger{color:var(--red);border-color:rgba(224,96,85,.4)}
.btn.danger:hover{background:rgba(224,96,85,.12)}

/* ------------------------------------------------------- map-rail panels */
textarea.mini{height:56px;font-size:11px}
.sysname{color:var(--cyan);font:11px var(--mono);letter-spacing:0;text-transform:none}
/* superseded by the resizable rule below - a max-height here silently
   overrode --sigH and made the box refuse to grow. */
.sigrow{display:grid;grid-template-columns:62px auto 1fr;gap:7px;align-items:center;
  padding:4px 0;border-bottom:1px solid rgba(31,40,54,.45)}
.sigrow .sig{font:10.5px var(--mono);color:var(--dim)}
.sigrow .snm{font-size:11px;color:var(--text);white-space:nowrap;overflow:hidden;
  text-overflow:ellipsis}
.sigrow .chip{font-size:8.5px;padding:1px 4px}

/* ------------------------------------------------------ signature panel */
.sigcount{float:right;font:10px var(--mono);color:var(--faint);letter-spacing:0}
.lazy{display:flex;align-items:center;gap:5px;font-size:10.5px;color:var(--dim);
  cursor:pointer;margin-right:auto;user-select:none}
.lazy input{accent-color:var(--gold);width:12px;height:12px;cursor:pointer}
.sigdiff{margin-top:9px;padding:8px 10px;border-radius:6px;font-size:11px;
  background:rgba(217,164,65,.08);border:1px solid rgba(217,164,65,.3)}
.sigdiff.hidden{display:none}
.sigdiff .d{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.sigdiff .add{color:var(--green);font:11px var(--mono)}
.sigdiff .rem{color:var(--red);font:11px var(--mono)}
.sigdiff .lnk{color:var(--cyan);font:11px var(--mono)}
.sigdiff button{margin-left:auto;background:none;border:1px solid var(--line2);
  color:var(--gold);border-radius:4px;font:11px var(--ui);padding:3px 9px;cursor:pointer}
.sigdiff button:hover{background:rgba(217,164,65,.15)}
.sigdiff .names{margin-top:5px;font:10.5px var(--mono);color:var(--faint);
  line-height:1.5}
.sigrow .lbl{font:10px var(--mono);color:var(--gold);background:rgba(217,164,65,.1);
  border:1px solid rgba(217,164,65,.28);border-radius:3px;padding:1px 5px;cursor:text}
.sigrow .lbl.empty{color:var(--faint);background:none;border-color:transparent;
  opacity:0}
.sigrow:hover .lbl.empty{opacity:1;border-color:var(--line2)}
.sigrow{grid-template-columns:62px auto 1fr auto}

.lifebox{margin:10px 0;padding:8px 10px;border-radius:6px;font-size:11px;
  line-height:1.5;border-left:3px solid var(--line2);background:var(--panel2)}
.lifebox b{display:block;font:10px var(--mono);letter-spacing:.1em;margin-bottom:3px;
  color:var(--dim)}
.lifebox span{color:var(--faint)}
.lifebox.good{border-left-color:var(--green)} .lifebox.good b{color:var(--green)}
.lifebox.warn{border-left-color:var(--amber)} .lifebox.warn b{color:var(--amber)}
.lifebox.bad{border-left-color:var(--red)}    .lifebox.bad b{color:var(--red)}
.sigrow{grid-template-columns:62px auto minmax(0,1fr) auto auto}

.zoomctl{display:flex;align-items:center;gap:5px}
.zoomctl #zoomLabel{font:11px var(--mono);color:var(--dim);min-width:38px;
  text-align:center}
.btn.zbtn{padding:4px 9px;font:13px var(--mono);line-height:1}
#map{cursor:grab}
#map:active{cursor:grabbing}
#map .node{cursor:grab}

/* ==================================================== resizable layout === */
#view-map.grid{grid-template-columns:var(--railL,340px) 6px minmax(240px,1fr) 6px var(--railR,330px)}
.hgrip{cursor:col-resize;background:transparent;border-radius:3px;
  transition:background .12s;position:relative}
.hgrip::after{content:'';position:absolute;inset:0 2px;border-radius:3px}
.hgrip:hover::after,.hgrip.on::after{background:var(--gold);opacity:.55}
.vgrip{height:7px;margin:4px -13px -8px;cursor:row-resize;border-radius:3px;
  position:relative}
.vgrip::after{content:'';position:absolute;left:50%;top:2px;width:34px;height:3px;
  transform:translateX(-50%);border-radius:2px;background:var(--line2)}
.vgrip:hover::after,.vgrip.on::after{background:var(--gold)}
body.resizing{cursor:col-resize;user-select:none}
body.resizing-v{cursor:row-resize;user-select:none}

/* ==================================================== signature table === */
.siglist{margin-top:10px;overflow:auto;height:var(--sigH,300px)}
.sigtable{width:100%;border-collapse:collapse;font-size:11px}
.sigtable th{position:sticky;top:0;z-index:2;background:var(--panel);
  text-align:left;font-weight:500;font-size:9.5px;letter-spacing:.09em;
  text-transform:uppercase;color:var(--faint);padding:5px 6px;cursor:pointer;
  white-space:nowrap;border-bottom:1px solid var(--line2)}
.sigtable th:hover{color:var(--dim)}
.sigtable th.sorted{color:var(--gold)}
.sigtable td{padding:4px 6px;border-bottom:1px solid rgba(31,40,54,.45);
  white-space:nowrap;vertical-align:middle}
.sigtable tr:hover td{background:rgba(255,255,255,.02)}
.sigtable .c-id{font:11px var(--mono);color:var(--cyan)}
.sigtable .c-grp{color:var(--dim)}
.sigtable .c-info{color:var(--text);max-width:200px;overflow:hidden;
  text-overflow:ellipsis}
.sigtable .c-desc{color:var(--faint);max-width:130px;overflow:hidden;
  text-overflow:ellipsis;cursor:text}
.sigtable .c-time{font:10.5px var(--mono);color:var(--faint);text-align:right}
.sigtable .c-char{color:var(--faint);font-size:10.5px}
.sigtable .c-ico{width:16px;text-align:center;font-size:11px}
.sigtable .edit{background:none;border:none;color:var(--faint);cursor:pointer;
  padding:0 3px;font-size:11px}
.sigtable .edit:hover{color:var(--gold)}
.sigtable tr.gone td{color:var(--red);opacity:.75}
.sigtable tr.gone .c-id{color:var(--red);text-decoration:line-through}
.exp{font:10.5px var(--mono);text-align:right}
.exp.young{color:var(--green)} .exp.aging{color:var(--amber)}
.exp.likely_eol,.exp.past_life,.exp.eol{color:var(--red)}
.exp.unknown{color:var(--faint)}
.k-wormhole{color:var(--gold)} .k-relic{color:var(--violet)}
.k-data{color:var(--cyan)} .k-gas{color:var(--green)}
.k-combat{color:var(--red)} .k-ore{color:var(--dim)}

/* ------------------------------------------------------ collapsible panel */
.panel.collapsible h2{display:flex;align-items:center;gap:7px;margin-bottom:8px}
.twist{background:none;border:none;color:var(--faint);cursor:pointer;padding:0;
  font-size:11px;line-height:1;transition:transform .15s;width:12px}
.twist:hover{color:var(--gold)}
.panel.shut .twist{transform:rotate(-90deg)}
.panel.shut > *:not(h2){display:none}
.panel.shut h2{margin-bottom:0}

/* wormholes first, and what they lead to */
.sigtable tr.wh td{background:rgba(217,164,65,.045)}
.sigtable .c-dest{font:10.5px var(--mono);color:var(--gold)}
.sigtable .c-dest.unset{color:var(--faint)}
.sigtable select.dest,.sigtable input.dest{
  font:10.5px var(--mono);color:var(--gold);background:transparent;
  border:1px solid transparent;border-radius:4px;padding:0 2px;max-width:128px;
  cursor:pointer}
.sigtable select.dest.unset{color:var(--faint)}
.sigtable select.dest:hover,.sigtable input.dest{border-color:var(--line2);
  background:var(--panel2)}
.sigtable select.dest option,.sigtable select.dest optgroup{
  color:var(--text);background:var(--panel2);font:11px var(--ui)}
.sigtable input.dest{width:110px;cursor:text}
.c-time.approx{color:var(--amber)}
.c-time.approx::after{content:'~';margin-left:2px;opacity:.8}

/* an identity carried forward from an earlier scan, not re-confirmed today */
.sigtable .c-info.recalled{opacity:.72;font-style:italic}
.sigtable .c-info.recalled::after{content:'·remembered';font-style:normal;
  font-size:8.5px;letter-spacing:.06em;color:var(--faint);margin-left:6px}

/* a ceiling derived from age, not an exact figure from a known hole type */
.exp.bounded{font-style:italic;opacity:.85}
.exp.bounded::before{content:'';}

/* ===================================================== kill intel panel === */
.intel{margin-top:4px}
.i-head{display:flex;align-items:baseline;gap:10px;margin-bottom:7px}
.i-big{display:flex;align-items:baseline;gap:6px}
.i-big b{font:22px/1 var(--mono);color:var(--red)}
.i-big span{font-size:10px;letter-spacing:.09em;text-transform:uppercase;
  color:var(--faint)}
.i-sub{display:flex;gap:9px;margin-left:auto;font:10.5px var(--mono);
  color:var(--faint)}

.spark{display:flex;align-items:flex-end;gap:1px;height:24px;margin:6px 0 11px;
  padding:0 1px;border-bottom:1px solid var(--line)}
.spark i{flex:1;min-width:2px;background:var(--red);opacity:.62;border-radius:1px}
.spark i:hover{opacity:1}

.i-label{margin:13px 0 6px;font-size:9.5px;letter-spacing:.13em;
  text-transform:uppercase;color:var(--faint);border-top:1px solid var(--line);
  padding-top:9px}

.i-bar{display:grid;grid-template-columns:1fr 62px 22px;gap:7px;align-items:center;
  padding:2px 0;font-size:11px}
.i-bar .nm{color:var(--dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.i-bar .track{height:4px;background:var(--line);border-radius:2px;overflow:hidden}
.i-bar .track i{display:block;height:100%;background:var(--violet);border-radius:2px}
.i-bar b{font:11px var(--mono);color:var(--dim);text-align:right}

.i-stack{display:flex;height:8px;border-radius:3px;overflow:hidden;margin:2px 0 5px}
.i-stack i{display:block;height:100%}
.i-legend{display:flex;flex-wrap:wrap;gap:9px;font-size:10px;color:var(--faint)}
.i-legend i{display:inline-block;width:8px;height:8px;border-radius:2px;
  margin-right:3px;vertical-align:-1px}
.g-solo{background:var(--red)} .g-2-3{background:var(--amber)}
.g-4-10{background:var(--cyan)} .g-11p{background:var(--violet)}

.i-kill{display:grid;grid-template-columns:64px 1fr auto;gap:7px;padding:3px 0;
  font-size:11px;text-decoration:none;border-bottom:1px solid rgba(31,40,54,.4)}
.i-kill:hover{background:rgba(255,255,255,.03)}
.i-kill .d{font:10.5px var(--mono);color:var(--faint)}
.i-kill .sh{color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.i-kill .v{font:10.5px var(--mono);color:var(--gold)}
.i-kill.npc .sh{color:var(--dim);font-style:italic}
.i-kill.npc .v{color:var(--faint)}
.lifebox .i-extra{display:block;margin-top:6px;padding-top:6px;
  border-top:1px solid rgba(255,255,255,.06)}

/* ------------------------------------------- signature / anomaly filter */
.sigfilter{float:right;display:flex;gap:2px;letter-spacing:0;text-transform:none}
.sigfilter button{background:var(--panel2);border:1px solid var(--line);
  color:var(--faint);font:10px var(--ui);padding:2px 7px;border-radius:4px;
  cursor:pointer;letter-spacing:.04em}
.sigfilter button:hover{border-color:var(--line2);color:var(--dim)}
.sigfilter button.on{background:rgba(217,164,65,.14);
  border-color:rgba(217,164,65,.45);color:var(--gold)}
.sigfilter button b{font-family:var(--mono);font-weight:500;margin-left:4px;
  opacity:.8}

/* the focused system - clicking it returns the panel to home */
.sysname.pinned{cursor:pointer;background:rgba(217,164,65,.12);
  border:1px solid rgba(217,164,65,.35);color:var(--gold);
  padding:1px 6px;border-radius:4px}
.sysname.pinned:hover{background:rgba(217,164,65,.22)}
.sysname.pinned::after{content:'\00d7';margin-left:5px;opacity:.65}

/* ------------------------------------------------------- k-space routing */
.routes{margin-top:4px}
.irow.route b{display:flex;align-items:baseline;gap:7px;justify-content:flex-end}
.irow.route .j{font:10.5px var(--mono);font-style:normal;color:var(--faint)}
.irow.route .sysn{font:11.5px var(--mono)}
.irow.route .sysn.hs{color:var(--green)}
.irow.route .sysn.ls{color:var(--amber)}
.irow.route .sysn.ns{color:var(--red)}
.irow.route b.dim{color:var(--faint);font-style:italic}
/* The action next to the answer. Deliberately quiet until hovered - the route
   is the information, the button is just what you do about it. */
.wpbtn{background:transparent;border:1px solid var(--line2);color:var(--faint);
  font:9.5px var(--mono);letter-spacing:.04em;padding:1px 5px;border-radius:3px;
  cursor:pointer;white-space:nowrap}
.wpbtn:hover:not(:disabled){border-color:var(--cyan);color:var(--cyan)}
.wpbtn:disabled{opacity:.5;cursor:default}
.routenote{font-size:10.5px;color:var(--gold);line-height:1.45;
  padding:4px 0 2px 9px;border-left:2px solid rgba(217,164,65,.35);margin:2px 0 4px}

/* ------------------------------------------------------------- rolling */
.rollbox{margin-top:12px}
.rollsel{width:100%;background:#070a0e;border:1px solid var(--line2);
  border-radius:5px;color:var(--text);font:11.5px var(--ui);padding:5px 8px;
  margin-bottom:8px}
.rollsel:focus{outline:none;border-color:var(--gold)}
.rollnum{display:flex;align-items:baseline;gap:8px;margin:2px 0 6px}
.rollnum b{font:22px/1 var(--mono);color:var(--gold)}
.rollnum span{font-size:10px;letter-spacing:.09em;text-transform:uppercase;
  color:var(--faint)}
.rollsum{margin:8px 0 0;font-size:11px;color:var(--faint);line-height:1.5;
  border-left:2px solid var(--line2);padding-left:8px}
.rollwarn{margin:7px 0 0;font-size:11px;color:var(--amber);line-height:1.5;
  border-left:2px solid rgba(224,160,74,.4);padding-left:8px}

/* -------------------------------------------------- signature lifetimes */
.lifetimes .rrow{display:flex;justify-content:space-between;padding:3px 0;
  font-size:11.5px}
.lifetimes .rrow span{color:var(--faint)}
.lifetimes .rrow b{font:11.5px var(--mono);font-weight:500;color:var(--dim)}
.lifetimes .i-label{margin-top:10px}
.lifetimes .note{margin:8px 0 0;font-size:11px;color:var(--amber);line-height:1.5}
.lifetimes .caveat{margin-top:8px}

/* ------------------------------------------------- wormhole system facts */
.whbox{margin:2px 0 12px;padding:10px 11px;background:var(--panel2);
  border:1px solid var(--line);border-left:3px solid var(--gold);border-radius:6px}
.whhead{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.whclass{font:15px var(--mono);color:var(--gold)}
.wheffect{font-size:10px;letter-spacing:.09em;text-transform:uppercase;
  color:var(--violet);border:1px solid rgba(154,127,208,.4);
  background:rgba(154,127,208,.1);border-radius:3px;padding:2px 7px}
.whnote{margin:7px 0 0;font-size:11px;color:var(--dim);line-height:1.5}
.whbox .i-label{border-top:1px solid var(--line);margin-top:10px}
.staticrow{padding:5px 0;border-bottom:1px solid rgba(31,40,54,.5)}
.staticrow:last-of-type{border-bottom:none}
.st-top{display:flex;align-items:baseline;gap:7px}
.st-top b{font:13px var(--mono);color:var(--gold);font-weight:500}
.st-top .arrow{color:var(--faint)}
.st-top .dest{font:12px var(--mono);color:var(--cyan)}
.st-sub{font:10.5px var(--mono);color:var(--faint);margin-top:2px}
.whsrc{margin:9px 0 0;font-size:10px;color:var(--faint);font-style:italic}

/* ----------------------------------------------------------- training tab */
/* A card per character, densest at the top: state, what is training, then the
   queue. Sorted by what needs attention, so reading order is priority order. */
.training-view{padding:16px 20px 40px;overflow:auto;height:100%}
.trainhead{display:flex;align-items:flex-end;justify-content:space-between;
  gap:16px;flex-wrap:wrap;margin-bottom:12px}
.trainstats{display:flex;gap:22px;flex-wrap:wrap}
.tstat{display:flex;flex-direction:column;gap:1px}
.tstat b{font:20px var(--mono);font-weight:500;color:var(--text);line-height:1.1}
.tstat span{font-size:10px;letter-spacing:.09em;text-transform:uppercase;
  color:var(--faint)}
.tstat.good b{color:var(--green)}
.tstat.warn b{color:var(--amber)}
.tstat.bad b{color:var(--red)}
.tstat.gold b{color:var(--gold)}
.trainacts{display:flex;align-items:center;gap:10px}
.trainfetched{font:10.5px var(--mono);color:var(--faint)}

/* The self-check verdict. Loud on purpose: every estimate below it depends on
   the model still reproducing the client, and a caveat nobody sees is no
   caveat at all. */
.trainnote{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;
  padding:8px 11px;border-radius:5px;margin-bottom:14px;
  border:1px solid var(--line);background:var(--panel)}
.trainnote b{font:10px var(--mono);letter-spacing:.1em}
.trainnote span{font-size:11px;color:var(--dim);line-height:1.5}
.trainnote.ok{border-left:3px solid var(--green)}
.trainnote.ok b{color:var(--green)}
.trainnote.warn{border-left:3px solid var(--amber)}
.trainnote.warn b{color:var(--amber)}
.trainnote.bad{border-left:3px solid var(--red);background:rgba(224,96,85,.07)}
.trainnote.bad b{color:var(--red)}

.traincards{display:grid;gap:12px;
  grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}
.tcard{background:var(--panel);border:1px solid var(--line);
  border-left:3px solid var(--line2);border-radius:6px;padding:11px 13px 12px}
.tcard.good{border-left-color:var(--green)}
.tcard.warn{border-left-color:var(--amber)}
.tcard.bad{border-left-color:var(--red)}
.tchead{display:flex;align-items:baseline;justify-content:space-between;gap:10px}
.tcname{font:14px var(--mono);font-weight:500;color:var(--text)}
.tcstate{font:9.5px var(--mono);letter-spacing:.1em;padding:2px 6px;
  border-radius:3px;border:1px solid var(--line2);color:var(--dim)}
.tcstate.good{color:var(--green);border-color:rgba(75,191,138,.4);
  background:rgba(75,191,138,.1)}
.tcstate.warn{color:var(--amber);border-color:rgba(224,160,74,.4);
  background:rgba(224,160,74,.1)}
.tcstate.bad{color:var(--red);border-color:rgba(224,96,85,.4);
  background:rgba(224,96,85,.1)}
.tcsub{display:flex;gap:12px;flex-wrap:wrap;margin-top:5px;
  font:10.5px var(--mono);color:var(--faint)}
.tcsub .gold{color:var(--gold)}

.tcnow{margin-top:10px}
.tcskill{display:flex;align-items:baseline;gap:7px}
.tcskill b{font:12.5px var(--mono);font-weight:500;color:var(--cyan)}
.tcskill .lvl,.tqrow .lvl{font:10.5px var(--mono);font-style:normal;
  color:var(--gold)}
.tcbar{height:4px;background:var(--raise);border-radius:2px;margin-top:6px;
  overflow:hidden}
.tcbar i{display:block;height:100%;background:var(--cyan)}
.tcard.warn .tcbar i{background:var(--amber)}
.tcline{display:flex;justify-content:space-between;margin-top:4px;
  font:10.5px var(--mono);color:var(--dim)}

.tcwhy{margin:9px 0 0;font-size:10.5px;color:var(--faint);line-height:1.55}
.tcnote{margin:6px 0 0;font:10px var(--mono);color:var(--amber);line-height:1.5}

.tcend{display:flex;justify-content:space-between;align-items:baseline;
  margin-top:10px;padding-top:8px;border-top:1px solid var(--line);
  font:10.5px var(--mono);color:var(--faint)}
.tcend b{font-weight:500;color:var(--dim);display:flex;align-items:baseline;gap:6px}
/* Whose number this is, said on the number rather than in a footnote. */
.tcend .src{font-style:normal;font-size:8.5px;letter-spacing:.08em;
  padding:1px 4px;border-radius:2px}
.tcend .src.esi{color:var(--green);background:rgba(75,191,138,.12)}
.tcend .src.computed{color:var(--amber);background:rgba(224,160,74,.12)}

.tcqueue{margin-top:8px;display:flex;flex-direction:column;gap:1px}
.tqrow{display:grid;grid-template-columns:1fr auto auto;gap:8px;
  align-items:baseline;padding:2px 0;font:10.5px var(--mono);color:var(--dim)}
.tqrow.on{color:var(--text)}
.tqrow .nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tqrow .dt{color:var(--faint);text-align:right;min-width:52px}
.tqrow.done .nm,.tqrow.done .lvl{color:var(--faint);text-decoration:line-through;
  text-decoration-color:var(--line2)}
.tqrow.done .dt{color:var(--green);opacity:.65}
.tcline.dim{color:var(--faint)}
.tqmore{margin-top:4px;align-self:flex-start;background:none;border:none;
  color:var(--cyan);font:10px var(--mono);cursor:pointer;padding:2px 0}
.tqmore:hover{text-decoration:underline}

.tcattrs{display:flex;gap:10px;margin-top:10px;padding-top:8px;
  border-top:1px solid var(--line)}
.tcattrs span{display:flex;gap:4px;align-items:baseline}
.tcattrs i{font-style:normal;font:9px var(--mono);color:var(--faint);
  text-transform:uppercase;letter-spacing:.06em}
.tcattrs b{font:11px var(--mono);font-weight:500;color:var(--dim)}

.trainloading,.trainerr{font:11px var(--mono);color:var(--faint);padding:8px 0}
.trainerr{color:var(--red)}
.trainfoot{margin:18px 0 0;font-size:10.5px;color:var(--faint);line-height:1.65;
  max-width:940px}
.trainfoot b{color:var(--dim);font-weight:500}

/* ------------------------------------------------------------ d-scan block */
.dscan{margin:4px 0 8px}
.struct{padding:5px 0 6px;border-bottom:1px dashed var(--line2)}
.struct:last-of-type{border-bottom:none}
.st-top{display:flex;align-items:baseline;gap:8px;min-width:0}
.st-type{font:10px var(--mono);text-transform:uppercase;letter-spacing:.06em;
  padding:1px 5px;border-radius:3px;white-space:nowrap;
  color:var(--gold);border:1px solid rgba(217,164,65,.35)}
.st-type.starbase{color:var(--violet);border-color:rgba(160,120,220,.35)}
.st-name{font:11.5px var(--mono);color:var(--text);overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap;min-width:0}
.owner{margin-top:4px}
.owner select.own{width:100%;font:11px var(--ui);color:var(--cyan);
  background:var(--panel2);border:1px solid var(--line2);border-radius:4px;
  padding:2px 6px}
.owner select.own.unset{color:var(--faint)}
.irow.ship b.shipname{color:var(--faint);font-weight:400;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap;max-width:60%}

/* ---------------------------------------------------------------- hosted */
.mapname{font-size:12px;color:var(--text);text-decoration:none;
  border:1px solid var(--line2);border-radius:5px;padding:3px 9px}
.mapname:hover{border-color:var(--gold);color:var(--gold)}
.rolebadge{font-size:10px;text-transform:uppercase;letter-spacing:.1em;
  color:var(--amber);border:1px solid rgba(224,160,74,.4);border-radius:4px;padding:2px 7px}

/* header help links (hosted): guide + bug reports, 25 Sep 2026 */
.helplink{font-size:12px;color:var(--dim);text-decoration:none}
.helplink:hover{color:var(--gold)}
