:root{
  --bg:#eef1f4;--card:#fff;--ink:#17212b;--muted:#65717d;--line:#d8dee4;
  --accent:#245fa8;--good:#237a43;--warn:#9c6500;--danger:#9b2f2f;
}
*{box-sizing:border-box}body{margin:0;font-family:Segoe UI,Arial,sans-serif;background:var(--bg);color:var(--ink)}
button,input,select,textarea{font:inherit}button{cursor:pointer;border:1px solid #b9c2cc;background:#f8fafc;border-radius:7px;padding:8px 11px}
button:hover{filter:brightness(.97)}button:disabled{opacity:.45;cursor:not-allowed}.primary{background:var(--accent);color:#fff;border-color:var(--accent)}
.topbar{display:flex;justify-content:space-between;align-items:center;padding:16px 22px;background:#16283b;color:#fff;position:sticky;top:0;z-index:10;box-shadow:0 2px 8px #0003}
h1,h2,h3{margin:0}.topbar h1{font-size:23px}.version{font-size:13px;font-weight:500;opacity:.7}.sub{font-size:13px;opacity:.75;margin-top:3px}
.savegroup{display:flex;gap:12px;align-items:center}.status{font-size:13px;padding:5px 9px;border-radius:99px}.clean{background:#ffffff1f}.dirty{background:#b46c00}.saving{background:#255c91}
main{padding:16px;max-width:1800px;margin:auto}.card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:14px;box-shadow:0 1px 3px #0000000b;margin-bottom:14px}
.grid3{display:grid;grid-template-columns:1fr 1fr auto;gap:12px;align-items:end}.loader label,.formgrid label{display:flex;flex-direction:column;gap:5px;font-size:12px;font-weight:600;color:#46525e}
input,select,textarea{width:100%;border:1px solid #bcc6d0;border-radius:6px;padding:8px;background:#fff;color:#17212b}textarea{resize:vertical}.openbox{display:flex;gap:10px;align-items:center}.path{font-family:Consolas,monospace;font-size:12px;color:var(--muted);margin-top:8px}
.workspace{display:grid;grid-template-columns:minmax(430px,42%) minmax(520px,58%);gap:14px}.leftcol,.rightcol{min-width:0}
.sectionTitle,.channelHead{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px}.sectionTitle h2,.channelHead h2{font-size:17px}.sectionTitle span,.hint{font-size:12px;color:var(--muted)}
.visualStage{aspect-ratio:16/9;background:#0b0e12;border-radius:8px;display:grid;place-items:center;overflow:hidden;color:#9aa4ae}.visualStage img{width:100%;height:100%;object-fit:contain;display:none}
.transportCard{position:sticky;top:84px;z-index:4}.transportCard input[type=range]{padding:0}.transport{display:flex;flex-wrap:wrap;gap:7px;align-items:center;margin-top:10px}.clock{font-family:Consolas,monospace;min-width:100px}
.back{background:#c85757;color:#fff;border-color:#b84747}.back.strong{background:#a93030}.back.light{background:#df7a7a}.forward{background:#347dcc;color:#fff;border-color:#276ebd}.forward.strong{background:#165fae}.forward.light{background:#6198d3}.event.prev{background:#d8a72d;color:#201800}.event.next{background:#7050b6;color:#fff}.play{background:#2e8b57;color:#fff;border-color:#247248;min-width:88px}
.formgrid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.wide{grid-column:1/-1}.list,.eventList{display:flex;flex-direction:column;gap:7px}.inlineAdd{display:grid;grid-template-columns:1fr 2fr auto;gap:8px;margin-top:8px}.pdfs{display:flex;flex-direction:column;gap:5px}.pdfs a{color:#1d5fa7}
.channelHead{align-items:flex-start}.headActions{display:flex;gap:6px}.clearScene{font-size:12px}.eventRow{display:grid;grid-template-columns:80px minmax(0,1fr) auto;gap:9px;align-items:start;border:1px solid #e0e5ea;border-radius:8px;padding:8px;background:#fbfcfd}.eventRow.active{border-color:#5184bd;background:#f1f7fd}.eventTime{font-family:Consolas,monospace;font-size:12px;color:#42505e;padding-top:3px;cursor:pointer}.eventBody{min-width:0}.eventMain{white-space:pre-wrap;overflow-wrap:anywhere}.eventMeta{font-size:11px;color:var(--muted);margin-top:3px}.rowActions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:4px}.rowActions button{font-size:11px;padding:5px 7px}.danger{color:#9b2f2f}.sourceTag{display:inline-block;font-size:10px;background:#e8edf2;border-radius:4px;padding:1px 4px;margin-left:5px;color:#596572}
.linkrow{display:grid;grid-template-columns:1fr 2fr auto;gap:7px;align-items:center;border:1px solid #e0e5ea;padding:7px;border-radius:7px}.linkrow a{overflow-wrap:anywhere}
dialog{border:0;border-radius:12px;box-shadow:0 18px 60px #0005;padding:0;max-width:680px;width:calc(100% - 30px)}dialog::backdrop{background:#0008}dialog form{padding:18px}.dialogActions{display:flex;justify-content:flex-end;gap:8px;margin-top:14px}
footer{padding:12px 20px;color:#6f7b86;font-size:11px;display:flex;justify-content:space-between}
@media(max-width:1050px){.workspace{grid-template-columns:1fr}.transportCard{position:static}.grid3{grid-template-columns:1fr}.openbox{justify-content:flex-start}}


/* 0.2 desktop production layout */
.desktopWorkspace{
  grid-template-columns:minmax(430px,44%) minmax(620px,56%);
  align-items:start;
}
.playbackRail{
  position:sticky;
  top:84px;
  align-self:start;
  max-height:calc(100vh - 96px);
}
.playbackRail .stageCard,
.playbackRail .transportCard{margin-bottom:14px}
.playbackRail .transportCard{position:static;top:auto}
.authoringWorkspace{min-width:0}
.workspaceToolbar{
  display:flex;
  justify-content:flex-end;
  gap:7px;
  margin:-2px 0 10px;
}
.editorPanel{padding:0;overflow:hidden}
.panelToggle{
  appearance:none;
  width:100%;
  border:0;
  border-radius:0;
  background:transparent;
  display:grid;
  grid-template-columns:22px auto minmax(0,1fr);
  align-items:center;
  gap:6px;
  text-align:left;
  padding:13px 14px;
  color:var(--ink);
}
.panelToggle:hover{background:#f6f8fa;filter:none}
.panelTitle{font-size:17px;font-weight:700;white-space:nowrap}
.panelSummary{
  font-size:12px;
  color:var(--muted);
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  text-align:right;
}
.chevron{font-size:14px;color:#566473;transition:transform .15s ease}
.panelBody{padding:0 14px 14px}
.editorPanel.isCollapsed .panelBody{display:none}
.editorPanel.isCollapsed .chevron{transform:rotate(-90deg)}
.panelHeaderWithActions{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  align-items:center;
  border-bottom:1px solid transparent;
}
.panelHeaderWithActions .panelToggle{min-width:0}
.panelActions{
  display:flex;
  gap:6px;
  padding-right:12px;
  flex-wrap:wrap;
  justify-content:flex-end;
}
.editorPanel:not(.isCollapsed) .panelHeaderWithActions{border-bottom:1px solid #edf0f3}
.editorPanel.isCollapsed .panelHeaderWithActions{border-bottom:0}
.editorPanel.isCollapsed .panelActions{padding-top:0;padding-bottom:0}
.speedSelect{width:auto;min-width:78px}
.transport{align-items:center}
.loader .panelBody{padding-top:0}
.channelHead{display:none}

/* desktop is the production target; tablet receives a graceful stacked fallback */
@media(max-width:1100px){
  .desktopWorkspace{grid-template-columns:1fr}
  .playbackRail{position:static;max-height:none}
  .panelHeaderWithActions{grid-template-columns:1fr}
  .panelActions{padding:0 14px 10px;justify-content:flex-start}
}

.maintenanceActions{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:8px}
.uploadWorkspace{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:10px;margin-bottom:12px}
.uploadBlock{border:1px solid #dfe5eb;border-radius:8px;padding:10px;background:#fafbfd}
.uploadBlock h3{margin:0 0 5px}.uploadBlock input,.uploadBlock select,.uploadBlock button{margin:4px 4px 4px 0}
#uploadProgress{width:100%;height:16px;margin:4px 0 8px}
.maintenanceHint{margin-bottom:10px}
.scanSummary{display:grid;grid-template-columns:repeat(auto-fit,minmax(135px,1fr));gap:7px;margin:8px 0 12px}
.scanMetric{border:1px solid #dfe5eb;border-radius:7px;padding:8px;background:#fafbfd}
.scanMetric strong{display:block;font-size:18px}.scanMetric span{font-size:11px;color:var(--muted)}
.scanResults{display:flex;flex-direction:column;gap:7px;max-height:420px;overflow:auto}
.scanRow{border:1px solid #e0e5ea;border-radius:8px;padding:8px;background:#fbfcfd}
.scanRow.change{border-color:#c79a2e;background:#fffaf0}.scanRow.error{border-color:#bb5b5b;background:#fff5f5}
.scanRowHead{display:flex;justify-content:space-between;gap:10px;font-family:Consolas,monospace;font-size:12px}
.scanStatus{font-family:Segoe UI,Arial,sans-serif;font-weight:700}
.scanDetail{font-size:12px;color:#4e5b67;margin-top:5px}.scanWarning{font-size:11px;color:#8b5c00;margin-top:4px}
