/* ============================================================
   terminal.css — the observation chamber layout
   ============================================================ */

body.terminal{
  display:grid;
  height:100vh;
  padding:6px;
  gap:6px;
  grid-template-rows:32px 1fr 18px;
  grid-template-columns:298px minmax(0,1fr) 340px;
  grid-template-areas:
    "hdr  hdr   hdr"
    "left main  right"
    "ftr  ftr   ftr";
  background:
    radial-gradient(ellipse 120% 90% at 50% 0%, #07161a 0%, #03070a 62%);
}

/* ============================================================
   HEADER
   ============================================================ */
.hdr{
  grid-area:hdr;
  display:flex; align-items:center; gap:14px;
  padding:0 10px;
  border:1px solid var(--line-2);
  background:linear-gradient(to right, rgba(20,59,62,.55), rgba(6,16,20,.4) 55%, rgba(20,59,62,.35));
}
.hdr-mark{
  display:flex; align-items:baseline; gap:8px;
  font-family:var(--f-disp); letter-spacing:.14em;
}
.hdr-mark b{ font-size:16px; color:var(--hot); font-weight:400; }
.hdr-mark .tick{ color:var(--green); font-size:12px; }
.hdr-sub{ font-size:9px; letter-spacing:.22em; color:var(--dim); text-transform:uppercase; }
.hdr .sep{ width:1px; height:16px; background:var(--line-2); }
.hdr .spacer{ flex:1 }
.hdr-stat{ display:flex; align-items:center; gap:6px; font-size:9px; letter-spacing:.16em; text-transform:uppercase; }
.hdr a{ color:var(--dim); text-decoration:none; font-size:9px; letter-spacing:.16em; text-transform:uppercase; }
.hdr a:hover{ color:var(--green); }

/* ============================================================
   COLUMNS
   ============================================================ */
.col{
  display:flex; flex-direction:column; gap:6px;
  min-height:0; overflow:hidden;
}
.col.left{ grid-area:left }
.col.right{ grid-area:right }
.col .panel{ display:flex; flex-direction:column; min-height:0; }
.col .panel > .panel-bd{ overflow:auto; min-height:0; }
.grow{ flex:1 1 auto; min-height:0 }
.fixed{ flex:0 0 auto }

/* ============================================================
   MAIN / CHAMBER
   ============================================================ */
.main{
  grid-area:main;
  display:grid; gap:6px; min-height:0; min-width:0;
  grid-template-rows:minmax(0,1fr) auto 150px;
}

.chamber{
  position:relative; min-height:0;
  border:1px solid var(--line-2);
  background:#03070a;
  overflow:hidden;
}
.chamber canvas{ display:block; width:100%; height:100%; }

/* HUD overlay inside the chamber */
.hud{ position:absolute; inset:0; pointer-events:none; }
.hud-tl,.hud-tr,.hud-bl,.hud-br{ position:absolute; padding:8px 10px; }
.hud-tl{ top:0; left:0 } .hud-tr{ top:0; right:0; text-align:right }
.hud-bl{ bottom:0; left:0 } .hud-br{ bottom:0; right:0; text-align:right }

.hud-k{ font-size:8px; letter-spacing:.2em; color:var(--dim); text-transform:uppercase; }
.hud-n{ font-size:15px; font-family:var(--f-disp); color:var(--hot); line-height:1.1;
        font-variant-numeric:tabular-nums; }
.hud-row{ margin-bottom:7px }
.hud-v{ font-size:10px; letter-spacing:.16em; }

.hud-axes{
  position:absolute; left:10px; bottom:10px;
  display:flex; gap:10px; font-size:9px; letter-spacing:.14em;
}
.hud-axes span i{ font-style:normal; color:var(--dim) }

/* corner brackets on the chamber */
.chamber::before,.chamber::after{
  content:''; position:absolute; width:22px; height:22px;
  border-color:var(--line-3); border-style:solid; pointer-events:none; z-index:2;
}
.chamber::before{ top:6px; left:6px; border-width:1px 0 0 1px }
.chamber::after { bottom:6px; right:6px; border-width:0 1px 1px 0 }

.chamber-tag{
  position:absolute; top:6px; left:50%; transform:translateX(-50%);
  font-size:8px; letter-spacing:.3em; color:var(--line-3); text-transform:uppercase;
  pointer-events:none; z-index:2;
}

/* ============================================================
   CONTROL RAIL
   ============================================================ */
.rail{
  display:flex; gap:6px; align-items:stretch;
  border:1px solid var(--line-2);
  background:rgba(6,16,20,.7);
  padding:6px;
}
.ctl{
  flex:1 1 0; min-width:0;
  display:flex; flex-direction:column; gap:1px;
  padding:6px 9px; cursor:pointer; user-select:none;
  background:rgba(8,24,26,.65);
  border:1px solid var(--line-2);
  transition:background .12s, border-color .12s, box-shadow .12s;
}
.ctl:hover{ background:rgba(28,92,88,.32); border-color:var(--line-3); box-shadow:var(--glow); }
.ctl .k{ font-size:8px; letter-spacing:.24em; color:var(--dim); text-transform:uppercase; }
.ctl .v{ font-size:13px; font-family:var(--f-disp); color:var(--fg); letter-spacing:.06em;
         white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.ctl .n{ font-size:8px; color:var(--line-3); letter-spacing:.06em;
         white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.ctl .kb{ position:absolute }
.ctl.on{ border-color:var(--green); background:rgba(57,255,136,.1) }
.ctl.on .v{ color:var(--green) }

.rail-sep{ width:1px; background:var(--line-2); margin:0 2px }
.rail-mini{ display:flex; flex-direction:column; gap:4px; justify-content:center }
.mini-btn{
  font-size:8px; letter-spacing:.16em; text-transform:uppercase;
  padding:3px 8px; cursor:pointer; white-space:nowrap;
  color:var(--dim); background:rgba(8,24,26,.6); border:1px solid var(--line-2);
}
.mini-btn:hover{ color:var(--fg); border-color:var(--line-3) }
.mini-btn.on{ color:var(--green); border-color:var(--line-3); background:rgba(57,255,136,.1) }

/* ============================================================
   CONSOLE
   ============================================================ */
.console{
  border:1px solid var(--line-2);
  background:rgba(3,10,12,.8);
  display:flex; flex-direction:column; min-height:0;
}
.console-hd{
  display:flex; gap:8px; align-items:center;
  padding:3px 8px; border-bottom:1px solid var(--line-2);
  font-size:8px; letter-spacing:.2em; color:var(--dim); text-transform:uppercase;
}
.log{ flex:1; overflow-y:auto; padding:5px 8px; font-size:10px; line-height:1.5; }
.log-line{ display:flex; gap:9px; white-space:pre-wrap; word-break:break-word; }
.log-t{ color:#194b4b; flex:0 0 auto; font-variant-numeric:tabular-nums }
.log-m{ color:var(--mid) }
.log-line.ok   .log-m{ color:var(--green) }
.log-line.warn .log-m{ color:var(--amber) }
.log-line.err  .log-m{ color:var(--red) }

/* ============================================================
   INPUT BLOCK
   ============================================================ */
.inp-row{ display:flex; gap:5px; margin-bottom:5px }
.inp-row .field{ flex:1 }
#go{ width:100%; display:flex; flex-direction:column; gap:1px; align-items:flex-start; padding:7px 10px; }
#go .v{ font-family:var(--f-disp); font-size:13px; letter-spacing:.14em; }
#go .n{ font-size:8px; color:var(--line-3); letter-spacing:.1em; text-transform:none }

.samples{ display:flex; flex-wrap:wrap; gap:4px; margin-top:6px }
.sample{
  font-size:8px; letter-spacing:.1em; padding:3px 6px; cursor:pointer;
  color:var(--dim); border:1px dashed var(--line-2); background:transparent;
}
.sample:hover{ color:var(--green); border-color:var(--line-3); border-style:solid }

#ca-echo{
  font-size:8px; color:var(--line-3); word-break:break-all; margin-top:5px;
  letter-spacing:.02em;
}

/* ============================================================
   DOSSIER
   ============================================================ */
.dos-top{ display:flex; justify-content:space-between; align-items:flex-start; gap:8px }
.dos-sym{ font-family:var(--f-disp); font-size:22px; color:var(--hot); line-height:1 }
.dos-empty{ color:var(--line-3); font-size:9px; letter-spacing:.2em; padding:14px 0; text-align:center }

/* ============================================================
   REGISTRY
   ============================================================ */
#registry{ font-size:10px }
.reg-head, .reg-row{
  display:grid;
  grid-template-columns:16px 40px 1fr 1fr 1fr 26px;
  gap:4px; align-items:center;
}
.reg-head{
  font-size:8px; letter-spacing:.14em; color:var(--line-3);
  text-transform:uppercase; padding:0 0 3px; border-bottom:1px solid var(--line);
  position:sticky; top:0; background:#050f12; z-index:1;
}
.reg-head span:nth-child(n+3){ text-align:right }
.reg-group{
  display:flex; align-items:center; gap:5px;
  font-size:8px; letter-spacing:.18em; color:var(--gc); text-transform:uppercase;
  margin:7px 0 3px; opacity:.85;
}
.reg-gbar{ width:14px; height:1px; background:var(--gc) }
.reg-row{ padding:1px 0; border-bottom:1px solid rgba(13,37,41,.5) }
.reg-row:hover{ background:rgba(28,92,88,.16) }
.reg-id{ color:#17403f; font-size:8px }
.reg-code{ color:var(--gc); font-size:9px; letter-spacing:.06em }
.reg-row.proxy .reg-code::after{ content:'*'; color:var(--amber); }
.reg-v{ text-align:right; color:var(--mid); font-size:9px; font-variant-numeric:tabular-nums }
.reg-v.warm{ color:var(--fg) }
.reg-v.hot{ color:var(--hot); text-shadow:0 0 6px rgba(57,255,136,.5) }
.reg-bar{ height:3px; background:#0b2124; position:relative; overflow:hidden }
.reg-bar i{ position:absolute; left:0; top:0; bottom:0; width:0; background:var(--green);
  transition:width .25s ease }
.reg-row.alert{ background:rgba(255,43,61,.07) }

/* ============================================================
   MATRIX / SPECTRUM / DRIFT
   ============================================================ */
#cov{ width:100%; aspect-ratio:1/1; display:block; cursor:crosshair }
#cov-read{ font-size:9px; margin-top:5px; min-height:14px; letter-spacing:.04em }

#spec{ width:100%; height:78px; display:block; cursor:pointer }
#spec-read{ margin-top:6px }

#drift{ width:100%; height:54px; display:block }
#drift-read{ margin-top:5px }
#drift-comp{ margin-top:6px }

.mini{ display:grid; grid-template-columns:30px 1fr 32px; gap:5px; align-items:center;
       font-size:9px; margin-bottom:2px }
.mini-l{ color:var(--dim) }
.mini-b{ height:4px; background:#0b2124; position:relative; overflow:hidden }
.mini-b i{ position:absolute; inset:0 auto 0 0; background:var(--amber) }
.mini-v{ text-align:right; color:var(--mid) }

/* loadings rows */
.load{ display:grid; grid-template-columns:74px 1fr 52px; gap:6px; align-items:center;
       font-size:9px; margin-bottom:2px }
.load-l{ color:var(--gc, var(--fg)); letter-spacing:.04em }
.load-b{ height:4px; background:#0b2124; position:relative; overflow:hidden }
.load-b i{ position:absolute; inset:0 auto 0 0 }
.load-v{ text-align:right; color:var(--mid); font-variant-numeric:tabular-nums }

/* ============================================================
   NODE PANEL
   ============================================================ */
.empty{
  text-align:center; padding:18px 6px; color:var(--line-3);
  font-size:9px; letter-spacing:.2em; line-height:2;
}
.an-tbl{ width:100%; border-collapse:collapse; font-size:9px; margin-top:3px }
.an-tbl th{ text-align:left; font-weight:400; padding:2px 3px; border-bottom:1px solid var(--line) }
.an-tbl td{ padding:2px 3px; color:var(--mid); border-bottom:1px solid rgba(13,37,41,.5) }
.an-tbl tr[data-jump]{ cursor:pointer }
.an-tbl tr[data-jump]:hover td{ background:rgba(28,92,88,.2); color:var(--hot) }
.analog-sum{
  display:flex; justify-content:space-between; align-items:center; gap:6px;
  margin-top:5px; padding:4px 6px; font-size:9px;
  border:1px solid var(--line-2); background:rgba(8,24,26,.5);
}
.caveat{
  margin-top:5px; font-size:8px; line-height:1.5; letter-spacing:.06em;
  color:var(--red-dim); border-left:2px solid var(--red-dim); padding-left:6px;
}

/* ============================================================
   FOOTER
   ============================================================ */
.ftr{
  grid-area:ftr;
  display:flex; align-items:center; gap:12px;
  padding:0 8px; font-size:8px; letter-spacing:.18em;
  color:var(--line-3); text-transform:uppercase;
  border-top:1px solid var(--line);
}
.ftr .spacer{ flex:1 }

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media (max-width:1240px){
  body.terminal{
    grid-template-columns:260px minmax(0,1fr);
    grid-template-areas:
      "hdr  hdr"
      "left main"
      "right right"
      "ftr  ftr";
    grid-template-rows:32px minmax(0,1fr) auto 18px;
    height:auto; min-height:100vh; overflow-y:auto;
  }
  .col.right{ flex-direction:row; flex-wrap:wrap }
  .col.right > .panel{ flex:1 1 300px }
  .main{ min-height:70vh }
}
@media (max-width:820px){
  body.terminal{
    grid-template-columns:minmax(0,1fr);
    grid-template-areas:"hdr" "main" "left" "right" "ftr";
    grid-template-rows:auto auto auto auto auto;
  }
  .main{ min-height:60vh }
  .rail{ flex-wrap:wrap }
  .ctl{ flex:1 1 44% }
  .col.right{ flex-direction:column }
}

/* X button in the terminal header */
.hdr .x-btn{
  display:inline-flex; align-items:center; padding:4px 8px;
  color:var(--dim); border:1px solid var(--line-2); text-decoration:none;
  transition:color .15s, border-color .15s, background .15s;
}
.hdr .x-btn:hover{ color:var(--green); border-color:var(--line-3); background:rgba(57,255,136,.08); }
