ISR / demo /styles /state.css
Zhen Ye
fix(demo): address code review issues for reasoning trace
cb42487
/* ── State-Driven Visibility ─────────────────────────────────── */
/* Start button: visible only in ready */
#startBtn { display: none; }
body[data-state="ready"] #startBtn { display: block; }
/* Progress overlay: visible only in processing */
#progressOverlay { display: none !important; }
body[data-state="processing"] #progressOverlay {
display: flex !important;
background: rgba(0,0,0,0.6);
}
/* Drawer tabs: hidden in ready (config panel shown instead) */
body[data-state="ready"] .drawer-tabs { display: none; }
/* Processing: only TRACKS tab available */
body[data-state="processing"] .drawer-tab[data-tab="inspect"],
body[data-state="processing"] .drawer-tab[data-tab="reasoning"] {
opacity: 0.3;
pointer-events: none;
}
/* Analysis: TRACKS + METRICS available, INSPECT disabled */
body[data-state="analysis"] .drawer-tab[data-tab="inspect"] {
opacity: 0.3;
pointer-events: none;
}
/* Inspect state: all tabs enabled, INSPECT forced active */
body[data-state="inspect"] .drawer-tab[data-tab="inspect"] {
opacity: 1;
pointer-events: auto;
}
/* Video controls: hidden in ready */
body[data-state="ready"] #videoControls { display: none; }
body[data-state="ready"] #videoBadges { display: none; }
body[data-state="ready"] #frameCounter { display: none; }
/* Processing pulse for top bar dot */
.topbar-dot-processing {
animation: processing-pulse 0.8s ease-in-out infinite !important;
}
/* Processing progress overlay fade */
body[data-state="processing"] #progressOverlay {
opacity: 1;
}
/* Top Bar Processing Progress Bar */
body[data-state="processing"] #topBarProgress {
opacity: 1;
}
/* New Analysis button visibility */
body[data-state="analysis"] #newAnalysisBtn { display: inline-flex; }
body[data-state="inspect"] #newAnalysisBtn { display: inline-flex; }
body[data-state="ready"] #newAnalysisBtn { display: none; }
body[data-state="processing"] #newAnalysisBtn { display: none; }
/* ── State-Driven MJPEG/Video/Cancel Visibility ──────────────── */
body[data-state="processing"] #mjpegStream { display: block; }
body[data-state="processing"] #cancelBtn { display: block; }
body[data-state="processing"] #videoCanvas { opacity: 0; }
body[data-state="ready"] #mjpegStream, body[data-state="analysis"] #mjpegStream, body[data-state="inspect"] #mjpegStream { display: none; }
body[data-state="ready"] #processedVideo, body[data-state="processing"] #processedVideo { display: none; }
body[data-state="ready"] #cancelBtn, body[data-state="analysis"] #cancelBtn, body[data-state="inspect"] #cancelBtn { display: none; }