/* Layout only: inference runs in the existing detector workers. */
.detector-page { background: var(--wash); }
.detector-intro { padding-block: 32px 24px; }
.detector-intro h1 { font-size: clamp(2rem, 5vw, 3.3rem); }
.detector-intro p { max-width: 780px; }
.detector-nav { display: flex; flex-wrap: wrap; gap: 12px 24px; margin-bottom: 24px; font-size: .9rem; }
.detector-note { color: var(--muted); font-size: .9rem; }
.detector-workspace { padding-bottom: 48px; }
.detector-toolbar { padding: 22px; border: 1px solid var(--line); border-radius: var(--radius); background: #fff; margin-bottom: 24px; }
.detector-controls { display: flex; flex-wrap: wrap; align-items: center; gap: 16px; }
.detector-upload { display: grid; gap: 8px; min-width: 0; }
.detector-upload label, .detector-camera-label { font-weight: 650; }
.detector-upload input { max-width: 100%; min-width: 0; font: inherit; font-size: .9rem; }
.detector-controls select { max-width: 100%; padding: 10px; border: 1px solid var(--line); border-radius: 6px; font: inherit; }
.detector-status { margin: 18px 0 0; color: var(--muted); overflow-wrap: anywhere; }
.detector-controls button:disabled { opacity: .55; cursor: not-allowed; }
.detector-panels, .detector-choices { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; }
.detector-panel { min-width: 0; margin: 0; }
.detector-panel h2 { font-size: 1.1rem; margin-bottom: 12px; }
.detector-frame { border: 1px solid var(--line); border-radius: 10px; overflow: hidden; background: #fff; }
.detector-frame canvas, .detector-preview { display: block; width: 100%; height: auto; }
.detector-preview { border-radius: 10px; }
.detector-choice { padding: 26px; background: #fff; border: 1px solid var(--line); border-radius: var(--radius); display: flex; flex-direction: column; align-items: flex-start; }
.detector-choice h2 { font-size: 1.4rem; }
.detector-choice p { color: var(--muted); flex: 1; }
.detector-camera { max-width: 960px; margin-inline: auto; }
.detector-camera canvas[hidden], .detector-camera img[hidden] { display: none; }
@media (max-width: 650px) {
  .detector-panels, .detector-choices { grid-template-columns: 1fr; }
  .detector-toolbar, .detector-choice { padding: 18px; }
  .detector-controls { align-items: flex-start; }
  .detector-upload { width: 100%; }
}

.detector-loading { margin-bottom: 24px; }
.detector-loading label { display: block; font-weight: 650; margin-bottom: 8px; }
.detector-loading progress { display: block; width: 100%; height: 20px; border: 0; border-radius: 6px; overflow: hidden; background: #e8edf0; accent-color: var(--ink); }
.detector-loading progress::-webkit-progress-bar { background: #e8edf0; }
.detector-loading progress::-webkit-progress-value { background: var(--ink); }
.detector-loading progress::-moz-progress-bar { background: var(--ink); }
.detector-loading p { margin: 8px 0 0; font-size: .9rem; color: var(--muted); }
.detector-camera video { display: block; width: 100%; height: auto; }
.detector-camera [hidden], .detector-loading[hidden] { display: none; }
