/* ============================================================================
   NOVA Ops — admin base styles.
   Shares the SAME design tokens as the customer app (one family) but a denser,
   more utilitarian skin: darker chrome, tighter spacing, data-first. This is a
   SEPARATE application (ADR-007), not a theme of the customer app.
   Depends on: /shared/design/tokens.css
   ========================================================================== */

*, *::before, *::after { box-sizing: border-box; }
body {
  margin: 0;
  font-family: var(--nova-font-text);
  color: var(--nova-ink);
  background: var(--nova-paper);
  font-size: var(--nova-fs-sm);
}
h1, h2, p { margin: 0; }
.mono, .num { font-variant-numeric: tabular-nums; font-feature-settings: "tnum" 1; }

/* Distinct admin chrome: a dark operations top bar. */
.ops-topbar {
  display: flex; align-items: center; justify-content: space-between;
  padding: 12px 24px;
  background: var(--nova-primary);
  color: var(--nova-primary-ink);
}
.ops-brand { display: flex; align-items: center; gap: 10px;
  font-family: var(--nova-font-display); font-weight: 700; letter-spacing: -0.02em; }
.ops-brand__tag { font-size: var(--nova-fs-xs); font-weight: 600; opacity: 0.8;
  border: 1px solid rgba(255,255,255,0.3); border-radius: 999px; padding: 2px 8px; }

.ops-shell { display: grid; grid-template-columns: 220px 1fr; min-height: calc(100vh - 49px); }
.ops-sidebar { border-right: 1px solid var(--nova-hairline); background: var(--nova-surface);
  padding: 16px 12px; }
.ops-nav a { display: block; padding: 8px 12px; border-radius: var(--nova-radius-sm);
  color: var(--nova-ink-2); font-weight: 500; }
.ops-nav a:hover { background: var(--nova-surface-2); text-decoration: none; }
.ops-nav a[aria-current="page"] { background: var(--nova-primary-soft); color: var(--nova-ink); }

.ops-main { padding: 24px; }
.ops-panel { background: var(--nova-surface); border: 1px solid var(--nova-hairline);
  border-radius: var(--nova-radius-md); padding: 20px; }

.ops-disclaimer { padding: 6px 24px; background: var(--nova-info-soft);
  color: var(--nova-info); font-size: var(--nova-fs-xs);
  border-bottom: 1px solid var(--nova-hairline); }

.ops-badge { display: inline-flex; align-items: center; gap: 6px; padding: 3px 10px;
  border-radius: 999px; font-size: var(--nova-fs-xs); font-weight: 600; }
.ops-badge--ok { color: var(--nova-success); background: var(--nova-success-soft); }
.ops-badge--down { color: var(--nova-danger); background: var(--nova-danger-soft); }
.ops-badge--completed { color: var(--nova-success); background: var(--nova-success-soft); }
.ops-badge--pending, .ops-badge--processing { color: var(--nova-pending); background: var(--nova-pending-soft); }
.ops-badge--failed { color: var(--nova-danger); background: var(--nova-danger-soft); }
.ops-badge--reversed, .ops-badge--cancelled { color: var(--nova-info); background: var(--nova-info-soft); }
.ops-badge--high { color:#fff; background: var(--nova-danger); }
.ops-badge--medium { color: var(--nova-pending); background: var(--nova-pending-soft); }
.ops-badge--low { color: var(--nova-info); background: var(--nova-info-soft); }

/* Login — premium branded panel */
.ops-auth { min-height: 100vh; display: flex; flex-direction: column; align-items: center;
  background: radial-gradient(120% 80% at 50% -10%, #28406e 0, transparent 55%),
              linear-gradient(165deg, #21365f 0%, #16233f 48%, #0b1424 100%); padding: 0 20px; }
.ops-auth__brandbar { display: flex; align-items: center; gap: 10px; color: #fff;
  font-family: var(--nova-font-display); font-weight: 800; font-size: 20px; margin: 44px 0 26px; }
.ops-auth__mark { width: 34px; height: 34px; border-radius: 9px; background: #fff; color: #16233f;
  display: grid; place-items: center; font-weight: 800; }
.ops-auth__tag { font-size: 11px; font-weight: 700; letter-spacing: .12em; border: 1px solid rgba(255,255,255,.35);
  border-radius: 999px; padding: 3px 9px; opacity: .85; }
.ops-login { max-width: 400px; width: 100%; padding: 32px 28px 30px; background: var(--nova-surface);
  border: 1px solid var(--nova-hairline); border-radius: 18px; box-shadow: 0 24px 70px rgba(0,0,0,.35); }
.ops-login h1 { font-family: var(--nova-font-display); font-size: var(--nova-fs-h1); margin: 0 0 2px; }
.ops-demo { margin-top: 22px; padding: 12px 14px; background: var(--nova-primary-soft); border-radius: 10px;
  font-size: 13px; color: var(--nova-ink-2); text-align: center; }
/* Form primitives (admin app doesn't load the customer stylesheet) */
.form { display: flex; flex-direction: column; gap: 16px; }
.nova-field { display: flex; flex-direction: column; gap: 6px; }
.nova-label { font-size: 12px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--nova-ink-muted); }
.nova-input { min-height: 46px; padding: 0 14px; border: 1px solid var(--nova-hairline-2); border-radius: 10px;
  background: var(--nova-surface); color: var(--nova-ink); font-size: 15px; width: 100%; }
.nova-input:focus { outline: none; border-color: var(--nova-primary); box-shadow: 0 0 0 3px var(--nova-primary-soft); }
.ops-login .ops-btn { width: 100%; min-height: 50px; font-size: 15px; margin-top: 4px; }

/* Stat cards */
.stat-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:16px; margin-bottom:24px; }
.stat { background:var(--nova-surface); border:1px solid var(--nova-hairline); border-radius:var(--nova-radius-md); padding:18px; }
.stat .k { font-size:var(--nova-fs-xs); font-weight:600; letter-spacing:.06em; text-transform:uppercase; color:var(--nova-ink-muted); }
.stat .v { font-family:var(--nova-font-display); font-size:1.7rem; font-weight:700; margin-top:6px; font-variant-numeric:tabular-nums; }

/* Table */
.tbl { width:100%; border-collapse:collapse; font-size:var(--nova-fs-sm); }
.tbl th { text-align:left; font-size:var(--nova-fs-xs); text-transform:uppercase; letter-spacing:.05em; color:var(--nova-ink-muted); padding:10px 12px; border-bottom:1px solid var(--nova-hairline); }
.tbl td { padding:12px; border-bottom:1px solid var(--nova-hairline); }
.tbl tr:hover td { background:var(--nova-surface-2); }
.tbl .num { text-align:right; font-variant-numeric:tabular-nums; }
.tbl .clickable { cursor:pointer; }

/* Filters */
.filters { display:flex; gap:10px; flex-wrap:wrap; margin-bottom:16px; }
.filters input, .filters select { min-height:38px; padding:0 12px; border:1px solid var(--nova-hairline-2); border-radius:var(--nova-radius-sm); background:var(--nova-surface); color:var(--nova-ink); font-size:var(--nova-fs-sm); }

/* Buttons (admin) */
.ops-btn { min-height:38px; padding:0 16px; border-radius:var(--nova-radius-sm); border:1px solid var(--nova-hairline-2); background:var(--nova-surface); color:var(--nova-ink); font-weight:600; font-size:var(--nova-fs-sm); cursor:pointer; }
.ops-btn--primary { background:var(--nova-primary); color:var(--nova-primary-ink); border-color:transparent; }
.ops-btn--danger { background:var(--nova-danger); color:#fff; border-color:transparent; }

/* Risk cards */
.risk-card { border:1px solid var(--nova-hairline); border-left:4px solid var(--nova-pending); border-radius:var(--nova-radius-md); padding:16px; margin-bottom:12px; background:var(--nova-surface); }
.risk-card.high { border-left-color:var(--nova-danger); }
.risk-card .signals { display:flex; gap:6px; flex-wrap:wrap; margin-top:8px; }
.chip { font-size:var(--nova-fs-xs); padding:2px 8px; border-radius:99px; background:var(--nova-surface-2); border:1px solid var(--nova-hairline); }
.score-ring { font-family:var(--nova-font-display); font-weight:700; font-size:1.4rem; }

/* Modal + toast (self-contained for admin) */
.ops-backdrop { position:fixed; inset:0; background:rgba(10,10,8,.5); display:grid; place-items:center; z-index:50; }
.ops-modal { background:var(--nova-surface); border-radius:var(--nova-radius-lg); padding:24px; width:min(560px,92vw); max-height:88vh; overflow:auto; box-shadow:var(--nova-shadow-lg); }
.ops-toast { position:fixed; bottom:24px; left:50%; transform:translateX(-50%); background:var(--nova-ink); color:var(--nova-paper); padding:10px 18px; border-radius:99px; z-index:60; font-size:var(--nova-fs-sm); }
.ops-empty { text-align:center; padding:48px; color:var(--nova-ink-muted); }
