/* ============================================================
   ALPR-RU — Cameras page · Variant C
   Compact cards + unified settings workspace + toggles.
   ============================================================ */

/* --- Camera card --- */
.cam-card { display:flex; flex-direction:column; gap:0; }

/* Preview — fills card width */
.cam-card__preview {
  width:100%; aspect-ratio:16/9; max-height:200px;
  background:#050b16; border-bottom:1px solid var(--border);
  overflow:hidden; position:relative; cursor:pointer;
}
.cam-card__preview img { width:100%; height:100%; object-fit:cover; }
.cam-card__preview-overlay {
  position:absolute; inset:0;
  display:flex; align-items:center; justify-content:center;
  background:rgba(0,0,0,.4); opacity:0; transition:opacity .15s;
  color:var(--text); font-size:12px; font-weight:600;
}
.cam-card__preview:hover .cam-card__preview-overlay { opacity:1; }

/* Health row */
.cam-card__health {
  display:grid; grid-template-columns:repeat(2,1fr);
  gap:4px 12px; padding:var(--sp-3) var(--sp-4);
  background:var(--surface-2); border-bottom:1px solid var(--border-2);
}
.cam-card__health-item {
  display:flex; align-items:center; gap:5px;
  font-size:11.5px; color:var(--text-2); white-space:nowrap;
}
.cam-card__health-item strong { color:var(--text); font-family:var(--font-mono); font-weight:500; margin-left:auto; }
.cam-card__health-dot { display:flex; align-items:center; flex-shrink:0; }
.cam-card__health-item--wide { grid-column:1/-1; }

/* Actions bar */
.cam-card__actions {
  display:flex; gap:6px; padding:var(--sp-2) var(--sp-4);
}

/* --- Status pill --- */
.status-pill {
  display:inline-flex; align-items:center; gap:5px;
  font-size:11px; padding:2px 9px; border-radius:999px; font-weight:600;
}
.status-pill i { width:6px; height:6px; border-radius:50%; background:var(--muted); flex-shrink:0; }
.status-pill.is-online { color:var(--green); background:var(--green-soft); }
.status-pill.is-online i { background:var(--green); }
.status-pill.is-offline { color:var(--muted); background:var(--surface-3); }

/* ============================================================
   Unified Settings Workspace
   ============================================================ */

.cam-settings-container { }

/* Overlay */
.cam-settings-overlay {
  display:none; position:fixed; inset:0; z-index:200;
  background:rgba(5,9,16,.62); backdrop-filter:blur(3px);
  align-items:center; justify-content:center; padding:var(--sp-5);
}
.cam-settings-overlay.is-open { display:flex; }

/* Panel */
.cam-settings {
  background:var(--surface); border:1px solid var(--border);
  border-radius:var(--r-lg); box-shadow:0 20px 60px rgba(0,0,0,.5);
  width:min(1120px, calc(100vw - 80px)); max-height:86vh;
  display:flex; flex-direction:column; overflow:hidden;
}
.cam-settings--add { width:min(620px, calc(100vw - 80px)); }

.cam-settings__head {
  display:flex; align-items:center; justify-content:space-between;
  gap:12px; padding:var(--sp-4) var(--sp-5);
  border-bottom:1px solid var(--border);
  background:var(--panel-bg-strong); flex-shrink:0;
}
.cam-settings__head h3 { font-size:14px; font-weight:600; }

.cam-modal__close {
  display:flex; align-items:center; justify-content:center;
  width:32px; height:32px; border:none; border-radius:var(--r-xs);
  background:transparent; color:var(--text-2); cursor:pointer;
  font-size:18px; transition:background .12s;
}
.cam-modal__close:hover { background:var(--surface-3); color:var(--text); }
.cam-modal__close:focus-visible { outline:none; box-shadow:inset 0 0 0 2px var(--accent); }

/* Body: left nav + content */
.cam-settings__body {
  display:grid; grid-template-columns:200px 1fr;
  flex:1; overflow:hidden; min-height:0;
}

/* Left navigation */
.cam-settings__nav {
  display:flex; flex-direction:column; gap:2px;
  padding:var(--sp-3); border-right:1px solid var(--border);
  background:var(--surface-2); overflow-y:auto;
}
.cam-settings__nav-btn {
  display:flex; align-items:center; padding:9px 12px;
  border:none; border-radius:var(--r-sm);
  background:transparent; color:var(--text-2); cursor:pointer;
  font-family:var(--font-sans); font-size:12.5px; font-weight:500;
  text-align:left; transition:background .12s, color .12s;
}
.cam-settings__nav-btn:hover { background:var(--surface-3); color:var(--text); }
.cam-settings__nav-btn.is-active { background:var(--accent-soft); color:var(--accent); font-weight:600; }
.cam-settings__nav-btn:focus-visible { outline:none; box-shadow:inset 0 0 0 2px var(--accent); }
.cam-settings__nav-divider { border:none; border-top:1px solid var(--border); margin:6px 0; }

/* Content area */
.cam-settings__content {
  padding:var(--sp-4); overflow-y:auto;
}
.cam-settings__form-foot {
  display:flex; gap:8px; justify-content:flex-end;
  margin-top:14px; padding-top:12px; border-top:1px solid var(--border-2);
}

/* Actions inline within content */
.cam-settings__actions-inline { margin-left:8px; display:inline-flex; gap:4px; }

/* Footer bar */
.cam-settings__foot {
  display:flex; align-items:center; justify-content:space-between;
  padding:var(--sp-3) var(--sp-5); border-top:1px solid var(--border);
  background:var(--surface-2); flex-shrink:0;
}
.cam-settings__foot-left { }
.cam-settings__foot-right { }

/* ============================================================
   Toggle switches
   ============================================================ */

.cam-toggle {
  --tw:44px; --th:24px; --tp:2px; --tk:calc(var(--th) - var(--tp)*2);
  position:relative; display:inline-block; width:var(--tw); height:var(--th);
  cursor:pointer; flex-shrink:0;
}
.cam-toggle input { opacity:0; width:0; height:0; position:absolute; }
.cam-toggle__slider {
  position:absolute; inset:0; border-radius:var(--th);
  background:var(--surface-3); border:1px solid var(--border);
  transition:background .15s, border-color .15s;
}
.cam-toggle__slider::before {
  content:""; position:absolute;
  left:var(--tp); top:var(--tp);
  width:var(--tk); height:var(--tk); border-radius:50%;
  background:var(--text-2); transition:transform .15s, background .15s;
}
.cam-toggle input:checked + .cam-toggle__slider { background:var(--green-soft); border-color:var(--green); }
.cam-toggle input:checked + .cam-toggle__slider::before { transform:translateX(calc(var(--tw) - var(--tk) - var(--tp)*2)); background:var(--green); }
.cam-toggle input:focus-visible + .cam-toggle__slider { box-shadow:0 0 0 2px var(--accent); }

.cam-toggle-row {
  display:flex; align-items:center; justify-content:space-between;
  padding:8px 0; gap:16px; font-size:12.5px; color:var(--text);
}

/* ============================================================
   Zone editor + direction in settings
   ============================================================ */

.cam-zone-editor { }
.cam-zone-editor[hidden] { display:none; }
.cam-zone-summary {
  display:flex; align-items:center; gap:8px;
  padding:var(--sp-2) 0;
}

/* Line help callout */
.cam-line-help {
  padding:8px 10px; margin:4px 0;
  border:1px solid rgba(59,130,246,.28); border-radius:8px;
  color:var(--muted); background:rgba(59,130,246,.08);
  line-height:1.4; font-size:12px;
}

/* Line editor */
.cam-line-editor__head {
  display:flex; flex-wrap:wrap; gap:8px; align-items:center;
  margin-bottom:8px;
}
.cam-line-frame {
  position:relative; overflow:hidden; border:1px solid var(--border);
  border-radius:10px; background:#050b16; cursor:crosshair;
}
.cam-line-frame img { display:block; width:100%; max-height:380px; object-fit:contain; }
.cam-line-frame svg { position:absolute; inset:0; width:100%; height:100%; pointer-events:none; }

/* Direction sides */
.cam-direction-sides {
  display:flex; flex-direction:column; gap:6px;
  padding:8px 10px; border:1px solid var(--border); border-radius:var(--r-sm);
}
.cam-direction-sides legend { padding:0 6px; font-size:12px; color:var(--muted); }
.cam-direction-sides .field--checkbox {
  display:flex; flex-direction:row; align-items:center; gap:6px;
}
.cam-direction-sides .field--checkbox input { width:auto; margin:0; }
.cam-direction-sides__controls { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.cam-direction-sides [hidden] { display:none; }
.cam-direction-diagnostics {
  padding:6px 8px; margin-top:4px;
  border-left:3px solid #60a5fa; line-height:1.4;
}

/* --- Line editor SVG styles --- */
.cam-line-frame line { opacity:0; stroke:#22c55e; stroke-width:5; stroke-linecap:round; vector-effect:non-scaling-stroke; filter:drop-shadow(0 1px 3px rgba(0,0,0,.8)); }
.cam-line-frame .camera-line-direction { stroke-width:3; stroke-dasharray:8 5; }
.cam-line-frame .camera-line-direction--entry { stroke:#22c55e; }
.cam-line-frame .camera-line-direction--exit { stroke:#60a5fa; }
.camera-line-arrowhead--entry { fill:#22c55e; }
.camera-line-arrowhead--exit { fill:#60a5fa; }
.camera-line-side-label { opacity:0; font:800 0.032px system-ui,sans-serif; text-anchor:middle; paint-order:stroke; stroke:rgba(3,9,22,.9); stroke-width:.008; vector-effect:non-scaling-stroke; }
.camera-line-side-label--entry { fill:#4ade80; }
.camera-line-side-label--exit { fill:#93c5fd; }
.cam-line-frame circle { opacity:0; fill:#f59e0b; stroke:#111827; stroke-width:3; vector-effect:non-scaling-stroke; filter:drop-shadow(0 1px 3px rgba(0,0,0,.8)); }
.cam-line-frame .is-visible { opacity:1; }

/* Zone editor SVG */
.camera-zone-frame svg { position:absolute; inset:auto; pointer-events:none; }
.camera-zone-frame polygon { opacity:0; fill:rgba(34,197,94,.18); stroke:#22c55e; stroke-width:4; stroke-linejoin:round; vector-effect:non-scaling-stroke; }
.camera-zone-frame line { opacity:0; stroke:#22c55e; stroke-width:4; stroke-linecap:round; vector-effect:non-scaling-stroke; }
.camera-zone-frame circle { pointer-events:all; cursor:grab; }
.camera-zone-frame .is-visible { opacity:1; }

/* Geometry */
.cam-geo-frame .is-visible { opacity:1; }
.cam-geo-toolbar { display:flex; gap:8px; flex-wrap:wrap; }
.cam-geo-body { display:grid; grid-template-columns:minmax(0,1.6fr) minmax(0,1fr); gap:12px; }
.cam-geo-frame { position:relative; aspect-ratio:16/9; background:#000; border-radius:8px; overflow:hidden; }
.cam-geo-frame img { width:100%; height:100%; object-fit:contain; display:block; }
.cam-geo-frame svg { position:absolute; inset:0; width:100%; height:100%; }
.cam-geo-frame polygon { fill:rgba(74,170,153,.25); stroke:var(--accent,#4a9); stroke-width:.004; }
.cam-geo-list { display:flex; flex-direction:column; gap:4px; }
.cam-geo-item {
  display:flex; gap:4px; align-items:center; padding:5px;
  border:1px solid var(--border); border-radius:6px; flex-wrap:wrap;
}
.cam-geo-item.is-active { border-color:var(--accent); box-shadow:0 0 0 1px var(--accent); }
.cam-geo-item__name { flex:1; min-width:80px; }
.cam-geo-legend { display:flex; gap:8px; flex-wrap:wrap; }
.geo-badge { font-size:11px; font-weight:600; padding:2px 7px; border-radius:5px; border:1px solid; }
.geo-badge--roi { color:var(--accent,#4a9); border-color:var(--accent,#4a9); }
.geo-badge--ignore { color:var(--amber,#e0a020); border-color:var(--amber,#e0a020); }

/* Diagnostics */
.cam-diag-grid { display:grid; grid-template-columns:repeat(3,minmax(140px,1fr)); gap:8px; }
.cam-diag-item {
  display:grid; gap:4px; min-width:0;
  padding:10px 12px; border:1px solid var(--border); border-radius:10px;
  background:rgba(15,23,42,.2);
}
.cam-diag-item span { color:var(--muted); font-size:12px; }
.cam-diag-item strong { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.cam-diag-item--ok { border-color:rgba(34,197,94,.35); background:rgba(34,197,94,.08); }
.cam-diag-item--warn { border-color:rgba(245,158,11,.35); background:rgba(245,158,11,.08); }
.cam-worker-debug {
  display:grid; grid-template-columns:1fr 1fr; gap:10px;
  padding:12px; border:1px solid var(--border); border-radius:10px;
  background:rgba(15,23,42,.18);
}
.cam-worker-debug strong { display:block; margin-bottom:4px; }
.cam-worker-debug ul {
  display:grid; gap:4px; margin:0; padding:0; list-style:none;
  color:var(--muted); font-family:var(--font-mono); font-size:12px;
}

/* Form grid */
.cam-form-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
.cam-form-grid > .cam-form-full { grid-column:1/-1; }

/* Legacy compat */
.camera-settings-form, .camera-trip-form, .camera-plate-reading-form,
.camera-geometry, .camera-diagnostics, .camera-worker-debug, .camera-line-editor,
.camera-preview, .camera-actions { }

/* ============================================================
   Responsive
   ============================================================ */

@media (max-width:1100px) {
  .cam-settings { width:calc(100vw - 60px); }
  .cam-diag-grid { grid-template-columns:repeat(2,minmax(140px,1fr)); }
  .cam-geo-body { grid-template-columns:1fr; }
}

@media (max-width:860px) {
  .cam-settings__body { grid-template-columns:1fr; }
  .cam-settings__nav {
    flex-direction:row; flex-wrap:wrap; overflow-y:visible;
    border-right:0; border-bottom:1px solid var(--border); padding:6px 8px;
  }
  .cam-settings__nav-btn { font-size:11px; padding:7px 10px; }
  .cam-settings__nav-divider { display:none; }
  .cam-settings__content { padding:var(--sp-3); }
  .cam-card__health { grid-template-columns:1fr; }
  .cam-diag-grid { grid-template-columns:1fr; }
  .cam-worker-debug { grid-template-columns:1fr; }
  .cam-form-grid { grid-template-columns:1fr; }
}

@media (max-width:760px) {
  .cam-settings { max-height:92vh; border-radius:0; }
  .cam-settings--add { width:100%; }
  .cam-card__preview { max-height:160px; }
  .cam-card__actions { flex-wrap:wrap; }
}
