.ops-body { background: linear-gradient(180deg, #f3f5fb 0%, #fafafa 40%); }
.ops-wrap { max-width: 1180px; margin: 0 auto; padding: 1.25rem 1rem 3rem; }
.ops-gate { max-width: 560px; margin: 2rem auto; }
.ops-toolbar { display:flex; flex-wrap:wrap; justify-content:space-between; gap:1rem; align-items:flex-end; margin: 0.5rem 0 1.25rem; }
.ops-toolbar-actions { display:flex; flex-wrap:wrap; gap:0.6rem; align-items:center; }
.scope-pill { display:flex; flex-direction:column; gap:0.25rem; font-size:0.8rem; font-weight:700; color:var(--navy); }
.scope-pill select { font:inherit; padding:0.45rem 0.7rem; border-radius:999px; border:1px solid var(--line); }
.demo-banner {
  display:flex; flex-wrap:wrap; gap:0.75rem; align-items:center;
  background: #fff7ed; border: 2px solid #fb923c; color: #9a3412;
  border-radius: 14px; padding: 0.85rem 1rem; margin-bottom: 1rem; font-weight: 600;
}
.demo-banner strong { background: var(--red); color:#fff; padding:0.2rem 0.55rem; border-radius:999px; font-size:0.75rem; letter-spacing:0.04em; }
.demo-tag { display:inline-block; background:var(--red); color:#fff; font-size:0.65rem; font-weight:800; padding:0.15rem 0.4rem; border-radius:999px; vertical-align:middle; }
.demo-row { background: #fffaf5; }
.ops-kpis { display:grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap:0.75rem; margin-bottom:1rem; }
.kpi { background:#fff; border:1px solid var(--line); border-radius:14px; padding:0.9rem 1rem; box-shadow: var(--shadow); }
.kpi-n { font-size:1.75rem; font-weight:800; color:var(--navy); line-height:1.1; }
.kpi-l { font-size:0.8rem; color:var(--muted); font-weight:600; margin-top:0.2rem; }
.ops-grid-charts { display:grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap:0.85rem; margin-bottom:1rem; }
.chart-card h2 { margin:0 0 0.75rem; font-size:1rem; color:var(--navy); }
.chart-card.wide { grid-column: 1 / -1; }
.bars { display:flex; flex-direction:column; gap:0.45rem; }
.bar-row { display:grid; grid-template-columns: 7.5rem 1fr 2rem; gap:0.45rem; align-items:center; font-size:0.8rem; }
.bar-label { color:var(--muted); font-weight:600; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.bar-track { height:0.55rem; background:#e8eef8; border-radius:999px; overflow:hidden; }
.bar-fill { display:block; height:100%; border-radius:999px; background:var(--blue); }
.bar-n { text-align:right; font-weight:700; color:var(--navy); }
.out-list { margin:0; padding-left:1.1rem; }
.out-list li { margin:0.35rem 0; }
.table-head { display:flex; flex-wrap:wrap; justify-content:space-between; gap:0.75rem; align-items:center; margin-bottom:0.75rem; }
.table-head input { min-width:220px; flex:1; max-width:360px; padding:0.55rem 0.8rem; border-radius:999px; border:1px solid var(--line); font:inherit; }
.ops-table { width:100%; border-collapse:collapse; font-size:0.9rem; }
.ops-table th { text-align:left; font-size:0.75rem; text-transform:uppercase; letter-spacing:0.04em; color:var(--muted); border-bottom:2px solid var(--line); padding:0.55rem 0.4rem; cursor:pointer; }
.ops-table td { border-bottom:1px solid var(--line); padding:0.65rem 0.4rem; vertical-align:top; }
.mini-prog { height:0.45rem; background:#e8eef8; border-radius:999px; overflow:hidden; min-width:70px; }
.mini-prog span { display:block; height:100%; background: linear-gradient(90deg, var(--navy), var(--blue)); }
.tiny { font-size:0.75rem; }
.ops-dialog { border:none; border-radius:16px; padding:1.25rem; width:min(720px, calc(100vw - 2rem)); max-height:85vh; overflow:auto; box-shadow:0 20px 50px rgba(14,31,88,0.25); }
.ops-dialog::backdrop { background: rgba(14,31,88,0.45); }
.dialog-close { float:right; }
.step-chips { display:flex; flex-wrap:wrap; gap:0.35rem; margin-bottom:0.75rem; }
.chip { font-size:0.72rem; font-weight:700; padding:0.25rem 0.5rem; border-radius:999px; background:#eef2ff; color:var(--navy); border:1px solid #c7d2fe; }
.chip.ok { background:#dcfce7; border-color:#86efac; color:#166534; }
.student-mini { border:1px solid var(--line); border-radius:12px; padding:0.7rem 0.85rem; margin:0.5rem 0; background:#fff; }
.hidden { display:none !important; }
@media (max-width: 700px) {
  .bar-row { grid-template-columns: 5.5rem 1fr 1.75rem; }
  .ops-table { font-size:0.8rem; }
}

/* v20261105g — filters, compact table, step chips, shared-scale notes */
.unit { font-weight: 600; color: var(--muted); font-size: 0.72rem; text-transform: none; letter-spacing: 0; }
.scale-note { margin-bottom: 0.35rem; }
.table-controls {
  display: flex; flex-wrap: wrap; gap: 0.5rem; align-items: end;
}
.table-controls label {
  display: flex; flex-direction: column; gap: 0.2rem;
  font-size: 0.72rem; font-weight: 700; color: var(--navy);
}
.table-controls select, .table-controls input {
  font: inherit; font-size: 0.85rem; padding: 0.4rem 0.55rem;
  border-radius: 10px; border: 1px solid var(--line); min-width: 7.5rem;
}
.table-controls input[type=search] { min-width: 14rem; flex: 1; }
.table-meta { display:flex; justify-content:space-between; align-items:center; gap:0.75rem; margin: 0.35rem 0 0.5rem; }
.ops-table.compact td, .ops-table.compact th { padding: 0.4rem 0.35rem; }
.ops-table.compact { font-size: 0.82rem; }
.sort-btn {
  appearance: none; background: none; border: 0; padding: 0; margin: 0;
  font: inherit; font-weight: 700; color: inherit; cursor: pointer;
  text-transform: uppercase; letter-spacing: 0.04em; font-size: 0.72rem;
}
.sort-btn:hover { color: var(--blue); }
.sort-ind { display: inline-block; min-width: 0.8rem; }
.pager { display:flex; gap:0.75rem; align-items:center; justify-content:flex-end; margin-top:0.75rem; }
.pill { display:inline-block; font-size:0.65rem; font-weight:800; padding:0.1rem 0.35rem; border-radius:999px; vertical-align:middle; }
.pill.warn { background:#fef3c7; color:#92400e; }
.pill.na { background:#e2e8f0; color:#475569; }
.chip.done, .chip.ok { background:#dcfce7; border-color:#86efac; color:#166534; }
.chip.missing { background:#fee2e2; border-color:#fca5a5; color:#991b1b; }
.chip.na { background:#e2e8f0; border-color:#cbd5e1; color:#475569; }
.ops-grid-charts { align-items: stretch; }
.chart-card.wide { margin-top: 0.15rem; }
.bar-row { grid-template-columns: 9.5rem minmax(4rem, 1fr) 2.25rem; }
.bar-label { white-space: normal; line-height: 1.15; }

@media (max-width: 900px) {
  .ops-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .table-controls { flex-direction: column; align-items: stretch; }
  .bar-row { grid-template-columns: 6.5rem 1fr 2rem; }
}
@media (max-width: 640px) {
  .ops-table.compact { font-size: 0.75rem; }
  .ops-toolbar { flex-direction: column; align-items: stretch; }
}
/* Evidence: responsive rules exist for ≤900px and ≤640px; GUI reflow not Shell-verified. */
