/* player.css — тёмная научная тема 2D-плеера ДБР. Ноль зависимостей. */

:root{
  --bg-app:#080b10;
  --surface-1:#0e1218;
  --surface-2:#141a22;
  --surface-3:#1b232e;
  --border:#222b37;
  --border-strong:#334053;
  --text:#e8eaed;
  --text-2:#a9b0bb;
  --dim:#7d8593;
  --accent:#4da3ff;
  --accent-2:#f0a53c;
  --good:#2fbf6d;
  --warn:#fab219;
  --crit:#e2574c;
  --font-ui:Inter,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --font-mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
}

*{box-sizing:border-box;}
html,body{height:100%;margin:0;}
body{
  background:var(--bg-app);color:var(--text);
  font:13px/1.35 var(--font-ui);
  display:flex;flex-direction:column;overflow:hidden;
}
.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums;}
.dim{color:var(--dim);}
.spacer{flex:1 1 auto;}
.hidden{display:none !important;}
button,select,input{font-family:inherit;font-size:inherit;color:inherit;}
:focus-visible{outline:2px solid var(--accent);outline-offset:1px;border-radius:4px;}

/* ───────────────────────── topbar ───────────────────────── */
.topbar{
  flex:0 0 46px;display:flex;align-items:center;gap:14px;padding:0 14px;
  overflow-x:auto;overflow-y:hidden;scrollbar-width:thin;
  background:linear-gradient(180deg,#121821,#0d1218);
  border-bottom:1px solid var(--border);
}
.topbar>*{flex:0 0 auto;}
.topbar>.spacer{flex:1 1 auto;}
.brand{font-weight:650;letter-spacing:.02em;white-space:nowrap;}
.brand .bolt{color:var(--warn);}
.brand-sub{
  font-weight:400;font-size:11px;color:var(--text-2);
  border:1px solid var(--border-strong);border-radius:3px;padding:1px 5px;margin-left:4px;
}
.status{font-family:var(--font-mono);font-size:11px;color:var(--dim);white-space:nowrap;
  max-width:44vw;overflow:hidden;text-overflow:ellipsis;}
.status.err{color:var(--crit);}

.ctl{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;}
.ctl.grow{width:100%;}
.ctl.grow select{flex:1 1 auto;}
.ctl-lab{font-size:10px;text-transform:uppercase;letter-spacing:.07em;color:var(--dim);}
select{
  background:var(--surface-2);border:1px solid var(--border-strong);border-radius:4px;
  padding:3px 6px;font-size:12px;max-width:280px;
}
select:hover{background:var(--surface-3);}

.tbtn{
  background:var(--surface-2);border:1px solid var(--border-strong);border-radius:5px;
  padding:4px 9px;cursor:pointer;color:var(--text-2);line-height:1.2;white-space:nowrap;
}
.tbtn:hover{background:var(--surface-3);color:var(--text);}
.tbtn.on{background:#1d3552;border-color:#3d6ea8;color:#dbeaff;}
.tbtn.play{min-width:38px;font-size:14px;color:var(--text);}

/* ───────────────────────── layout ───────────────────────── */
#main{flex:1 1 auto;display:flex;min-height:0;}
#stage{
  position:relative;flex:1 1 auto;min-width:0;display:flex;gap:1px;
  background:#05070a;
}
.scene-slot{flex:1 1 0;min-width:0;position:relative;background:var(--bg-app);
  border-right:1px solid var(--border);}
.scene-slot:last-child{border-right:none;}
canvas.scene{width:100%;height:100%;display:block;}

.overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  background:rgba(6,9,13,.86);backdrop-filter:blur(2px);z-index:5;}
.overlay-box{max-width:560px;padding:20px 24px;border:1px solid var(--border-strong);
  border-radius:8px;background:var(--surface-1);}
.overlay-title{font-weight:650;font-size:15px;margin-bottom:8px;color:var(--warn);}
.overlay-text{color:var(--text-2);font-size:12.5px;white-space:pre-wrap;font-family:var(--font-mono);}

/* ───────────────────────── plots column ───────────────────────── */
#plots{
  flex:0 0 430px;min-width:0;overflow-y:auto;overflow-x:hidden;
  background:var(--surface-1);border-left:1px solid var(--border);
  padding:8px;display:flex;flex-direction:column;gap:8px;
}
#plots.hidden{display:none !important;}
.pl-panel{background:var(--surface-2);border:1px solid var(--border);border-radius:7px;
  display:flex;flex-direction:column;min-height:0;overflow:hidden;flex:0 0 auto;}
.pl-h{display:flex;align-items:center;gap:7px;padding:4px 8px;font-size:10px;
  text-transform:uppercase;letter-spacing:.07em;color:var(--dim);
  border-bottom:1px solid var(--border);white-space:nowrap;}
.pl-hint{text-transform:none;letter-spacing:0;font-size:10px;color:#5f6875;
  overflow:hidden;text-overflow:ellipsis;}
.pl-body{position:relative;padding:2px;}
.pl-body canvas.plot{position:absolute;inset:2px;width:calc(100% - 4px);height:calc(100% - 4px);display:block;}
.h150{height:150px;} .h160{height:160px;} .h170{height:170px;} .h250{height:250px;}
.pl-metrics .pl-body{padding:4px;}
button.mini{background:var(--surface-3);border:1px solid var(--border-strong);border-radius:4px;
  padding:1px 7px;font-size:10.5px;cursor:pointer;color:var(--text-2);
  text-transform:none;letter-spacing:0;}
button.mini:hover{color:var(--text);border-color:#4a5b72;}
button.mini.on{background:#1d3552;border-color:#3d6ea8;color:#dbeaff;}
.tbtn.rec{background:#4a1d1d;border-color:#a04040;color:#ffd7d7;}

#side{
  flex:0 0 286px;overflow-y:auto;background:var(--surface-1);
  border-left:1px solid var(--border);padding:10px;display:flex;flex-direction:column;gap:10px;
}
.panel{background:var(--surface-2);border:1px solid var(--border);border-radius:7px;padding:9px 10px;}
.panel-h{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--dim);
  margin-bottom:8px;}
.row{display:flex;align-items:center;gap:8px;margin-bottom:7px;}
.row:last-child{margin-bottom:0;}
.row.wrap{flex-wrap:wrap;}
.chips{display:flex;flex-wrap:wrap;gap:5px;}
.chip{
  background:var(--surface-3);border:1px solid var(--border-strong);border-radius:20px;
  padding:3px 10px;font-size:11.5px;cursor:pointer;color:var(--text-2);
}
.chip:hover{color:var(--text);border-color:#4a5b72;}
.chip.on{background:#17324f;border-color:#3d78bd;color:#dceaff;}
.chip.off{opacity:.4;cursor:not-allowed;}

.seg{display:inline-flex;border:1px solid var(--border-strong);border-radius:5px;overflow:hidden;}
.seg button{background:var(--surface-3);border:0;padding:3px 9px;font-size:11.5px;
  cursor:pointer;color:var(--text-2);border-right:1px solid var(--border-strong);}
.seg button:last-child{border-right:0;}
.seg button.on{background:#1d3552;color:#dbeaff;}
.chk{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;color:var(--text-2);cursor:pointer;}
input[type=range]{flex:1 1 90px;min-width:80px;accent-color:var(--accent-2);height:16px;}

table.kv{width:100%;border-collapse:collapse;font-family:var(--font-mono);font-size:11px;}
table.kv td{padding:2px 0;}
table.kv td:first-child{color:var(--dim);white-space:nowrap;}
table.kv td:last-child{text-align:right;color:var(--text);font-variant-numeric:tabular-nums;}

.info{font-size:11px;color:var(--text-2);line-height:1.45;}
.info b{color:var(--text);font-weight:600;}
.info.warn{color:#d7c08a;}
.info .crash{color:#e0a08a;margin-top:6px;font-family:var(--font-mono);font-size:10.5px;
  max-height:8.2em;overflow:auto;}

/* ───────────────────────── transport ───────────────────────── */
#transport{
  flex:0 0 auto;background:linear-gradient(180deg,#0d1218,#0a0e14);
  border-top:1px solid var(--border);padding:8px 12px 6px;
}
.tbar{display:flex;align-items:center;gap:7px;margin-bottom:6px;flex-wrap:wrap;}
.divider{width:1px;height:20px;background:var(--border-strong);margin:0 4px;}
.clock{font-size:12px;color:var(--text);white-space:nowrap;}
#timeline{width:100%;height:172px;display:block;cursor:crosshair;}
.hint{font-size:10px;color:#5f6875;margin-top:2px;}
#loopInfo{font-size:11px;}

@media (max-width:1500px){ #plots{flex-basis:370px;} }
/* узкое окно: топбар не должен уезжать за край — режем подписи, а не кнопки */
@media (max-width:1400px){
  .brand-sub{display:none;}
  .topbar .lbl{display:none;}
  .topbar{gap:9px;}
  .status{max-width:22vw;}
  select{max-width:150px;}
  .ctl-lab{display:none;}
}
@media (max-width:1080px){
  #side{flex-basis:240px;}
  #plots{flex-basis:320px;}
  #stage{flex-direction:column;}
}
