:root{
  --bg:#0d1014; --panel:#14181e; --panel2:#1a1f26; --border:#232a33;
  --text:#c8d1dc; --dim:#6b7785; --accent:#3fa7ff;
  --green:#40e07a; --amber:#ffc83d; --red:#ff5252;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%;background:var(--bg);color:var(--text);
  font:13px/1.4 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;overflow:hidden}
body{display:flex;flex-direction:column}

header{display:flex;align-items:center;gap:12px;padding:8px 14px;
  background:var(--panel);border-bottom:1px solid var(--border)}
header h1{font-size:14px;margin:0;font-weight:600;letter-spacing:.3px}
header h1 span{color:var(--dim);font-weight:400}
header .spacer{flex:1}
header .mini-btn{background:var(--panel2);color:var(--text);
  border:1px solid var(--border);padding:5px 10px;border-radius:6px;
  font:inherit;font-size:11px;cursor:pointer}
header .mini-btn:hover{border-color:var(--accent)}

main{display:flex;flex:1;min-height:0}
aside{width:260px;flex-shrink:0;padding:14px;background:var(--panel);
  border-right:1px solid var(--border);overflow-y:auto;
  display:flex;flex-direction:column;gap:14px}
.field{display:flex;flex-direction:column;gap:6px}
.field label{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--dim)}
.field input[type=file]{font-size:12px;color:var(--text)}
.field select,.field button{background:var(--panel2);color:var(--text);
  border:1px solid var(--border);padding:7px 10px;border-radius:6px;
  font:inherit;cursor:pointer}
.field button:hover{border-color:var(--accent)}
.row{display:flex;gap:6px}.row>*{flex:1}
.check{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--text);
  cursor:pointer;user-select:none}
.check input{cursor:pointer}
#status{font-size:11px;color:var(--dim);line-height:1.5}
#status b{color:var(--text);font-weight:500}

.monitor-list{display:flex;flex-direction:column;gap:2px;
  background:var(--panel2);padding:6px;border-radius:6px;
  border:1px solid var(--border)}
.monitor-list .check{padding:4px 6px;border-radius:4px;transition:background .12s}
.monitor-list .check:hover{background:rgba(63,167,255,.08)}
.monitor-list .mono-dot{width:8px;height:8px;border-radius:2px;flex-shrink:0}
.monitor-list .mono-name{flex:1}
.monitor-actions{display:flex;gap:6px;margin-top:4px}
.monitor-actions button{flex:1;background:var(--panel2);color:var(--text);
  border:1px solid var(--border);padding:4px 8px;border-radius:4px;
  font:inherit;font-size:11px;cursor:pointer}
.monitor-actions button:hover{border-color:var(--accent)}

.scopes{flex:1;min-width:0;display:grid;grid-template-columns:1fr 1fr;
  gap:1px;background:var(--border);padding:1px;overflow-y:auto;align-content:start}
.panel{position:relative;background:#0a0d11;padding:8px;
  display:flex;flex-direction:column;min-height:170px}
.panel.hidden{display:none !important}
.panel h2{font-size:10px;font-weight:600;text-transform:uppercase;
  letter-spacing:1px;color:var(--dim);margin:0 0 6px;
  display:flex;justify-content:space-between;align-items:center;
  cursor:pointer;user-select:none}
.panel h2:hover{color:var(--accent)}
.panel h2 .val{color:var(--accent);font-variant-numeric:tabular-nums;
  text-transform:none;letter-spacing:0;font-size:11px;font-weight:400}
.panel h2::after{content:"⤢";color:var(--dim);font-size:10px;
  margin-left:6px;opacity:.4}
.panel.focus-target h2::after{content:"⤡"}
.panel canvas{flex:1;width:100%;height:100%;min-height:0;
  display:block;object-fit:contain;background:#0a0d11}

.panel.preview{grid-column:span 2;min-height:auto}
.panel.preview canvas{aspect-ratio:16/9;height:auto;width:100%;
  max-height:44vh;flex:none}

.scopes.focused{grid-template-columns:1fr;align-content:stretch}
.scopes.focused .panel{display:none}
.scopes.focused .panel.focus-target{display:flex;grid-column:1/-1;
  min-height:0;height:100%}
.scopes.focused .panel.focus-target canvas{max-height:none;height:100%}
.scopes.focused .panel.preview.focus-target canvas{
  max-height:none;height:auto;aspect-ratio:16/9;flex:none}

.empty-hint{display:none;grid-column:1/-1;padding:60px 20px;
  text-align:center;color:var(--dim);font-size:13px}
.empty-hint b{color:var(--text);font-weight:500}
.scopes.empty .empty-hint{display:block}

.panel.shots{grid-column:span 2;min-height:240px}
.panel.shots .table-wrap{overflow:auto;flex:1;min-height:0;
  border:1px solid var(--border);border-radius:4px}
.panel.shots table{width:100%;border-collapse:collapse;
  font:11px/1.2 ui-monospace,SFMono-Regular,Consolas,monospace}
.panel.shots th{text-align:right;padding:4px 6px;color:var(--dim);
  border-bottom:1px solid var(--border);font-weight:500;
  text-transform:uppercase;letter-spacing:.5px;font-size:10px;
  position:sticky;top:0;background:#0a0d11;z-index:1}
.panel.shots th:first-child,.panel.shots td:first-child{text-align:left}
.panel.shots th:last-child,.panel.shots td:last-child{text-align:center}
.panel.shots td{padding:3px 6px;border-bottom:1px solid rgba(35,42,51,.5);
  text-align:right;font-variant-numeric:tabular-nums}
.panel.shots tr:hover td{background:rgba(63,167,255,.06)}
.panel.shots .controls{margin-top:8px;display:flex;gap:8px;
  align-items:center;flex-wrap:wrap;font-size:11px;color:var(--dim)}
.panel.shots .controls button{background:var(--panel2);color:var(--text);
  border:1px solid var(--border);padding:4px 10px;border-radius:4px;
  font:inherit;cursor:pointer}
.panel.shots .controls button:hover{border-color:var(--accent)}
.panel.shots .controls input[type=number]{background:var(--panel2);
  color:var(--text);border:1px solid var(--border);padding:3px 5px;
  border-radius:4px;width:45px;font:inherit}

.swatch{display:inline-block;width:14px;height:14px;border-radius:3px;
  vertical-align:middle;border:1px solid rgba(255,255,255,.2)}
.cluster-legend{margin-top:8px;display:flex;gap:10px;flex-wrap:wrap;
  font-size:11px;color:var(--text)}
.cluster-legend div{display:flex;align-items:center;gap:6px;
  background:var(--panel2);padding:4px 8px;border-radius:4px;
  border:1px solid var(--border)}
.dev-warn{color:var(--amber)}
.dev-bad{color:var(--red)}
.cam-dot{display:inline-block;width:8px;height:8px;border-radius:50%;
  margin-right:4px;vertical-align:middle}

#video{display:none}