/* Observers admin page. Was #observers-view-css, appended after section styles.
   Hashed into the shell by scripts/build.mjs (ensure, after views-admin).
   The view appends this link at render so it still follows sheets injected later. */
.obs-wrap{max-width:960px;margin:0 auto;padding:24px 16px 60px}
.obs-page-heading{margin:0;font-size:22px;color:var(--text-1)}
.obs-intro{color:var(--text-2);font-size:13px;margin:8px 0 18px;line-height:1.5}
.obs-card{background:var(--bg-raised);border:1px solid var(--border-subtle);border-radius:var(--r-md,8px);padding:16px;margin:16px 0}
.obs-card-title{margin:0 0 6px;font-size:15px;color:var(--text-1)}
.obs-hint{color:var(--text-muted);font-size:12px;line-height:1.5;margin:0 0 10px}
.obs-field{display:flex;flex-direction:column;gap:4px;margin:8px 0}
.obs-label{font-size:11px;color:var(--text-2)}
.obs-input,.obs-select{
  height:34px;padding:0 10px;background:var(--bg-input);border:1px solid var(--border-subtle);
  border-radius:var(--r-sm);color:var(--text-1);font-size:13px;font-family:var(--font-ui);outline:none;
}
.obs-input:focus,.obs-select:focus{border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb, var(--accent) 22%, transparent)}
.obs-row{display:flex;align-items:center;gap:10px;margin-top:8px;flex-wrap:wrap}
.obs-pickers{display:flex;gap:16px;flex-wrap:wrap}
.obs-status{font-size:12px;color:var(--text-muted)}
.obs-error{color:var(--danger);font-size:12px}
.obs-empty{color:var(--text-muted);font-style:italic;font-size:12px}
.obs-checkbox-row{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--text-1)}
.obs-table{border-collapse:collapse;margin-top:8px;font-size:12px}
.obs-table td{padding:4px 8px;border-bottom:1px solid var(--border-subtle);color:var(--text-2);vertical-align:middle}
.obs-table td .obs-input{margin-right:6px}
.obs-table td button{margin-right:6px}
