/* ==========================================================================
   NEYLUM Tenant Admin — design system (AC-22X)
   Scope: `.tenant-ui` is set on `.admin-shell` only for tenant-plane sessions,
   so public, campus and Control Tower surfaces keep their own language.
   Layers: tokens → shell → primitives → components → legacy adapters →
   view compositions → responsive → motion. See docs/ui/TENANT_ADMIN_DESIGN_SYSTEM.md
   ========================================================================== */

/* ---------- 1. Tokens ---------------------------------------------------- */
.tenant-ui {
  --n-canvas: #F3EFE7;
  --n-canvas-deep: #E9E3D7;
  --n-paper: #FFFFFF;
  --n-paper-2: #FBF9F5;
  --n-ink: #17141F;
  --n-ink-2: #231F2D;
  --n-ink-3: #37324180;
  --n-text: #1D1A24;
  --n-muted: #6B6674;
  --n-faint: #9A95A2;
  --n-line: #E7E1D6;
  --n-line-2: #D7CFC0;
  --n-violet: #6C4BFF;
  --n-violet-600: #5A38F0;
  --n-violet-700: #4424C4;
  --n-violet-100: #EFEBFF;
  --n-violet-200: #DDD3FF;
  --n-violet-on-ink: #B9A8FF;

  --n-good: #1B7A52;  --n-good-bg: #E1F2E9;
  --n-warn: #93580A;  --n-warn-bg: #FAEFD9;
  --n-bad: #B0373A;   --n-bad-bg: #F9E4E2;
  --n-info: #3252C4;  --n-info-bg: #E6EBFA;
  --n-none: #6B6674;  --n-none-bg: #EEEBE5;

  --n-font-display: 'Hanken Grotesk', 'Inter', system-ui, sans-serif;
  --n-font-body: 'Inter', system-ui, sans-serif;

  --n-r-xs: 8px;
  --n-r-sm: 12px;
  --n-r-md: 16px;
  --n-r-lg: 22px;
  --n-r-xl: 30px;
  --n-pill: 999px;

  --n-s1: 4px; --n-s2: 8px; --n-s3: 12px; --n-s4: 16px; --n-s5: 20px;
  --n-s6: 24px; --n-s7: 32px; --n-s8: 40px; --n-s9: 56px;

  --n-shadow-1: 0 1px 2px rgba(23, 20, 31, .04);
  --n-shadow-2: 0 1px 2px rgba(23, 20, 31, .04), 0 14px 34px -18px rgba(23, 20, 31, .22);
  --n-shadow-3: 0 30px 70px -30px rgba(23, 20, 31, .42);
  --n-ease: cubic-bezier(.2, .7, .2, 1);
  --n-fast: 140ms;
  --n-base: 240ms;

  background: var(--n-canvas);
  color: var(--n-text);
  font-family: var(--n-font-body);
  font-feature-settings: 'cv11', 'ss01';
}

/* ---------- 2. Shell ----------------------------------------------------- */
.tenant-ui.admin-shell { grid-template-columns: 272px minmax(0, 1fr); }
.tenant-ui.admin-shell.is-sidebar-collapsed { grid-template-columns: 80px minmax(0, 1fr); }

.tenant-ui .admin-sidebar {
  width: 272px;
  padding: 18px 0 14px;
  background: var(--n-paper);
  border-right: 1px solid var(--n-line);
  box-shadow: none;
  color: var(--n-text);
}
.tenant-ui .admin-sidebar.is-collapsed { width: 80px; }
.tenant-ui .admin-sidebar .brand {
  min-height: 52px;
  margin: 0 14px 6px;
  padding: 0 6px 14px;
  border-bottom: 1px solid var(--n-line);
  gap: 10px;
}
.tenant-ui .admin-sidebar .brand-logo { max-height: 34px; max-width: 150px; width: auto; object-fit: contain; }
.tenant-ui .n-brand { display: flex; align-items: center; gap: 10px; min-width: 0; }
.tenant-ui .n-brand__mark {
  position: relative; flex: 0 0 auto; display: grid; place-items: center;
  width: 34px; height: 34px; border-radius: 11px;
  background: var(--n-ink); color: #fff;
  font: 800 17px/1 var(--n-font-display);
}
.tenant-ui .n-brand__mark::after {
  content: ''; position: absolute; right: 6px; top: 6px; width: 6px; height: 6px;
  border-radius: 50%; background: var(--n-violet-on-ink);
}
.tenant-ui .n-brand__text { display: grid; min-width: 0; line-height: 1.15; }
.tenant-ui .n-brand__text strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--n-ink); font: 750 15px/1.2 var(--n-font-display); letter-spacing: -.01em; }
.tenant-ui .n-brand__text small { color: var(--n-faint); font-size: 12px; }
.tenant-ui .admin-sidebar.is-collapsed .n-brand__text { display: none; }
.tenant-ui .admin-brand-mark { display: none; }

.tenant-ui .admin-sidebar-collapse,
.tenant-ui .admin-mobile-close {
  border: 1px solid var(--n-line); border-radius: 10px;
  background: var(--n-paper); color: var(--n-muted);
}
.tenant-ui .admin-sidebar-collapse:hover,
.tenant-ui .admin-sidebar-collapse:focus-visible,
.tenant-ui .admin-mobile-close:hover { background: var(--n-canvas); color: var(--n-ink); }

.tenant-ui .admin-nav { gap: 2px; padding: 10px 12px 12px; scrollbar-width: thin; scrollbar-color: var(--n-line-2) transparent; }
.tenant-ui .n-nav-home { display: grid; gap: 2px; padding-bottom: 10px; margin-bottom: 6px; border-bottom: 1px solid var(--n-line); }

.tenant-ui .admin-nav-group-toggle {
  min-height: 34px; margin-top: 6px; padding: 6px 10px;
  grid-template-columns: minmax(0, 1fr) 18px;
  border-radius: 10px; background: transparent;
  color: var(--n-faint); font: 600 12.5px/1.2 var(--n-font-body); letter-spacing: .01em;
}
.tenant-ui .admin-nav-group-toggle .admin-nav-ic { display: none; }
.tenant-ui .admin-nav-group-toggle:hover,
.tenant-ui .admin-nav-group-toggle:focus-visible,
.tenant-ui .admin-nav-group.is-open > .admin-nav-group-toggle { background: transparent; color: var(--n-ink); }
.tenant-ui .admin-nav-group.has-active > .admin-nav-group-toggle { color: var(--n-violet-700); }
.tenant-ui .admin-nav-chevron { color: var(--n-faint); font-size: 13px; }

.tenant-ui .admin-nav-links { gap: 2px; padding: 2px 0 6px; }
.tenant-ui .admin-nav a,
.tenant-ui .admin-nav-links a {
  display: flex; align-items: center; gap: 10px;
  min-height: 38px; padding: 6px 10px 6px 6px;
  border: 0; border-radius: var(--n-r-sm);
  background: transparent; color: var(--n-muted);
  font: 500 14px/1.2 var(--n-font-body);
  transition: background var(--n-fast) ease, color var(--n-fast) ease;
}
.tenant-ui .admin-nav a .admin-nav-ic,
.tenant-ui .admin-nav-links a .admin-nav-ic {
  display: inline-grid; place-items: center; flex: 0 0 auto;
  width: 26px; height: 26px; border-radius: 8px;
  background: var(--n-canvas); color: var(--n-muted); font-size: 12px;
}
.tenant-ui .admin-nav a:hover,
.tenant-ui .admin-nav-links a:hover { background: var(--n-canvas); color: var(--n-ink); }
.tenant-ui .admin-nav a.router-link-active,
.tenant-ui .admin-nav-links a.router-link-active,
.tenant-ui .admin-nav a[aria-current="page"] {
  background: var(--n-ink); color: #fff; box-shadow: none; border: 0;
}
.tenant-ui .admin-nav a.router-link-active .admin-nav-ic,
.tenant-ui .admin-nav a[aria-current="page"] .admin-nav-ic { background: var(--n-violet); color: #fff; }

.tenant-ui .admin-sidebar.is-collapsed .admin-nav-group-toggle { grid-template-columns: 1fr; }
.tenant-ui .admin-sidebar.is-collapsed .admin-nav-group-toggle .admin-nav-ic { display: inline-grid; place-items: center; width: 30px; height: 30px; border-radius: 9px; background: var(--n-canvas); color: var(--n-muted); }
.tenant-ui .admin-sidebar.is-collapsed .n-nav-home a { justify-content: center; padding: 6px; }
.tenant-ui .admin-sidebar.is-collapsed .n-nav-home .admin-nav-link-label { display: none; }
.tenant-ui .admin-sidebar.is-collapsed .admin-nav-links {
  border: 1px solid var(--n-line); border-radius: var(--n-r-md);
  background: var(--n-paper); box-shadow: var(--n-shadow-3);
}

.tenant-ui .admin-logout {
  margin: 10px 14px 0; min-height: 40px;
  border: 1px solid var(--n-line); border-radius: var(--n-r-sm);
  background: var(--n-paper); color: var(--n-muted); font: 600 13.5px var(--n-font-body);
}
.tenant-ui .admin-logout:hover { background: var(--n-canvas); color: var(--n-ink); }

.tenant-ui .admin-main { background: transparent; min-width: 0; }
.tenant-ui .admin-topbar {
  position: sticky; top: 0; z-index: 30;
  height: auto; min-height: 72px; margin: 0; padding: 12px clamp(18px, 3vw, 40px);
  border: 0; border-bottom: 1px solid transparent; border-radius: 0;
  background: color-mix(in srgb, var(--n-canvas) 86%, transparent);
  backdrop-filter: saturate(1.2) blur(14px);
  box-shadow: none;
}
.tenant-ui .admin-topbar-title { display: grid; gap: 3px; min-width: 0; }
.tenant-ui .n-crumbs { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin: 0; padding: 0; list-style: none; color: var(--n-faint); font-size: 12.5px; }
.tenant-ui .n-crumbs li + li::before { content: '/'; margin-right: 6px; color: var(--n-line-2); }
.tenant-ui .n-crumbs a { color: var(--n-muted); text-decoration: none; }
.tenant-ui .n-crumbs a:hover { color: var(--n-violet-700); }
.tenant-ui .admin-topbar-title h2 { margin: 0; color: var(--n-ink); font: 750 20px/1.15 var(--n-font-display); letter-spacing: -.02em; }
.tenant-ui .admin-topbar-right { gap: 10px; }
.tenant-ui .n-tenant-chip { display: inline-flex; align-items: center; gap: 8px; max-width: 240px; padding: 6px 12px 6px 8px; border: 1px solid var(--n-line); border-radius: var(--n-pill); background: var(--n-paper); color: var(--n-muted); font-size: 13px; white-space: nowrap; }
.tenant-ui .n-tenant-chip span { overflow: hidden; text-overflow: ellipsis; }
.tenant-ui .n-tenant-chip i { flex: 0 0 auto; width: 8px; height: 8px; border-radius: 50%; background: var(--n-good); }
.tenant-ui .admin-topbar-user { display: inline-flex; align-items: center; gap: 8px; color: var(--n-ink); font-weight: 600; font-size: 14px; }
.tenant-ui .admin-topbar-avatar { width: 34px; height: 34px; border-radius: 50%; background: var(--n-violet-100); color: var(--n-violet-700); box-shadow: none; font: 750 13px var(--n-font-display); }
.tenant-ui .admin-topbar-logout { min-height: 36px; padding: 0 12px; border: 1px solid var(--n-line); border-radius: 10px; background: var(--n-paper); color: var(--n-muted); font-weight: 600; }
.tenant-ui .admin-topbar-logout:hover { color: var(--n-ink); background: var(--n-canvas-deep); }
.tenant-ui .admin-menu-toggle { border: 1px solid var(--n-line); border-radius: 11px; background: var(--n-paper); color: var(--n-ink); }

.tenant-ui .admin-content {
  width: 100%; max-width: 1480px; margin: 0 auto;
  padding: clamp(12px, 1.6vw, 20px) clamp(18px, 3vw, 40px) 64px;
  background: transparent;
}

/* ---------- 3. Typography & primitives ----------------------------------- */
.tenant-ui .admin-content h1 { margin: 0; color: var(--n-ink); font: 750 clamp(28px, 2.7vw, 40px)/1.08 var(--n-font-display); letter-spacing: -.03em; }
.tenant-ui .admin-content h2 { color: var(--n-ink); font-family: var(--n-font-display); font-weight: 700; letter-spacing: -.015em; }
.tenant-ui .admin-content h3,
.tenant-ui .admin-content h4 { color: var(--n-ink); font-family: var(--n-font-display); letter-spacing: -.01em; }
.tenant-ui .admin-content p { color: var(--n-muted); }
.tenant-ui .admin-content strong, .tenant-ui .admin-content b { color: inherit; }
.tenant-ui .admin-content .eyebrow {
  display: block; margin: 0 0 8px; color: var(--n-violet-700);
  font: 600 13px/1.3 var(--n-font-body); letter-spacing: 0; text-transform: none;
}
.tenant-ui .n-num { font-family: var(--n-font-display); font-variant-numeric: tabular-nums; letter-spacing: -.03em; }
.tenant-ui a { text-underline-offset: 3px; }
.tenant-ui .admin-content a:not(.btn):not(.adm-quick-card):not(.n-quick):not(.n-link-row) { color: var(--n-violet-700); }

/* Buttons: ink primary, paper secondary, violet only for data emphasis. */
.tenant-ui .btn,
.tenant-ui .adm-btn,
.tenant-ui .base-button {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  min-height: 40px; padding: 0 16px;
  border: 1px solid transparent; border-radius: var(--n-r-sm);
  font: 600 14px/1 var(--n-font-body); letter-spacing: 0; text-transform: none;
  text-decoration: none; cursor: pointer; white-space: nowrap;
  transition: background var(--n-fast) ease, border-color var(--n-fast) ease, color var(--n-fast) ease, transform var(--n-fast) ease;
}
.tenant-ui .btn-primary,
.tenant-ui .adm-btn-primary,
.tenant-ui .cms-editor-actions .primary { border-color: var(--n-ink); background: var(--n-ink); color: #fff; box-shadow: none; }
.tenant-ui .btn-primary:hover:not(:disabled),
.tenant-ui .adm-btn-primary:hover:not(:disabled) { background: var(--n-ink-2); border-color: var(--n-ink-2); color: #fff; transform: none; }
.tenant-ui .btn-secondary,
.tenant-ui .adm-btn-secondary { border-color: var(--n-line-2); background: var(--n-paper); color: var(--n-ink); }
.tenant-ui .btn-secondary:hover:not(:disabled),
.tenant-ui .adm-btn-secondary:hover:not(:disabled) { border-color: var(--n-ink); background: var(--n-paper); color: var(--n-ink); }
.tenant-ui .btn-ghost { border-color: transparent; background: transparent; color: var(--n-ink); }
.tenant-ui .btn-ghost:hover:not(:disabled) { background: var(--n-canvas-deep); }
.tenant-ui .btn-accent { border-color: var(--n-violet); background: var(--n-violet); color: #fff; }
.tenant-ui .btn-accent:hover:not(:disabled) { background: var(--n-violet-600); }
.tenant-ui .btn-on-ink { border-color: rgba(255,255,255,.22); background: rgba(255,255,255,.06); color: #fff; }
.tenant-ui .btn-on-ink:hover:not(:disabled) { background: rgba(255,255,255,.14); color: #fff; }
.tenant-ui .btn-sm { min-height: 32px; padding: 0 12px; font-size: 13px; border-radius: 10px; }
.tenant-ui .btn:disabled,
.tenant-ui button:disabled { opacity: .5; cursor: not-allowed; }
.tenant-ui .crm-view,
.tenant-ui .table-action-btn {
  display: inline-flex; align-items: center; min-height: 32px; padding: 0 12px;
  border: 1px solid var(--n-line-2); border-radius: 10px;
  background: var(--n-paper); color: var(--n-ink);
  font: 600 13px/1 var(--n-font-body); cursor: pointer;
}
.tenant-ui .crm-view:hover { border-color: var(--n-ink); background: var(--n-paper); color: var(--n-ink); }
.tenant-ui .crm-view-danger, .tenant-ui .crm-btn-danger { color: var(--n-bad); border-color: color-mix(in srgb, var(--n-bad) 35%, transparent); }
.tenant-ui .crm-view-danger:hover, .tenant-ui .crm-btn-danger:hover { background: var(--n-bad-bg); border-color: var(--n-bad); color: var(--n-bad); }
.tenant-ui .crm-close {
  display: inline-grid; place-items: center; width: 36px; height: 36px; flex: 0 0 auto;
  border: 1px solid var(--n-line); border-radius: 10px; background: var(--n-paper); color: var(--n-muted); font-size: 16px;
}
.tenant-ui .crm-close:hover { color: var(--n-ink); border-color: var(--n-ink); }

/* Focus is always visible and never color-only. */
.tenant-ui :is(a, button, input, select, textarea, [tabindex]):focus-visible {
  outline: 2px solid var(--n-violet); outline-offset: 2px;
}

/* Form controls */
.tenant-ui .admin-content .field { display: grid; gap: 6px; margin-bottom: 14px; }
.tenant-ui .admin-content label,
.tenant-ui .admin-content .field label { color: var(--n-ink); font: 600 13px/1.3 var(--n-font-body); letter-spacing: 0; text-transform: none; }
.tenant-ui .admin-content input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]):not([type="file"]),
.tenant-ui .admin-content select,
.tenant-ui .admin-content textarea,
.tenant-ui .admin-content .base-input,
.tenant-ui .admin-content .base-select {
  width: 100%; min-height: 42px; padding: 9px 12px;
  border: 1px solid var(--n-line-2); border-radius: var(--n-r-sm);
  background: var(--n-paper); color: var(--n-text);
  font: 400 14.5px/1.35 var(--n-font-body); box-shadow: none;
  transition: border-color var(--n-fast) ease, box-shadow var(--n-fast) ease;
}
.tenant-ui .admin-content select { padding-right: 34px; }
.tenant-ui .admin-content textarea { min-height: 104px; resize: vertical; }
.tenant-ui .admin-content input::placeholder, .tenant-ui .admin-content textarea::placeholder { color: var(--n-faint); }
.tenant-ui .admin-content input:hover:not(:focus), .tenant-ui .admin-content select:hover:not(:focus), .tenant-ui .admin-content textarea:hover:not(:focus) { border-color: var(--n-faint); }
.tenant-ui .admin-content input:focus, .tenant-ui .admin-content select:focus, .tenant-ui .admin-content textarea:focus {
  outline: 0; border-color: var(--n-violet); box-shadow: 0 0 0 4px color-mix(in srgb, var(--n-violet) 16%, transparent);
}
.tenant-ui .admin-content label > input, .tenant-ui .admin-content label > select, .tenant-ui .admin-content label > textarea { margin-top: 6px; font-weight: 400; }
.tenant-ui .admin-content input[type="checkbox"], .tenant-ui .admin-content input[type="radio"] { accent-color: var(--n-violet); }
.tenant-ui .form-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); align-items: end; gap: 12px 16px; }
.tenant-ui .form-row label { display: grid; }

/* Status pills — text + glyph, never color alone. */
.tenant-ui .n-pill,
.tenant-ui .status-badge,
.tenant-ui .badge {
  display: inline-flex; align-items: center; gap: 6px;
  min-height: 24px; padding: 3px 10px;
  border: 0; border-radius: var(--n-pill);
  background: var(--n-none-bg); color: var(--n-none);
  font: 600 12.5px/1.1 var(--n-font-body); letter-spacing: 0; text-transform: none; white-space: nowrap;
}
.tenant-ui .n-pill::before { content: ''; width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
.tenant-ui .n-pill--good, .tenant-ui .status-success, .tenant-ui .badge-success { background: var(--n-good-bg); color: var(--n-good); }
.tenant-ui .n-pill--warn, .tenant-ui .status-warning, .tenant-ui .badge-warning { background: var(--n-warn-bg); color: var(--n-warn); }
.tenant-ui .n-pill--bad, .tenant-ui .status-danger, .tenant-ui .badge-danger { background: var(--n-bad-bg); color: var(--n-bad); }
.tenant-ui .n-pill--info, .tenant-ui .status-info, .tenant-ui .badge-info { background: var(--n-violet-100); color: var(--n-violet-700); }
.tenant-ui .n-pill--none, .tenant-ui .status-neutral, .tenant-ui .badge-neutral { background: var(--n-none-bg); color: var(--n-none); }
.tenant-ui .n-pill--none::before { background: transparent; border: 1.5px dashed currentColor; width: 7px; height: 7px; }
.tenant-ui .n-pill--ink { background: var(--n-ink); color: #fff; }
.tenant-ui .n-pill--on-ink { background: rgba(255,255,255,.1); color: #fff; }

/* Alerts */
.tenant-ui .alert,
.tenant-ui .adm-alert,
.tenant-ui .admin-inline-alert {
  display: flex; gap: 10px; align-items: flex-start;
  margin: 0; padding: 12px 16px;
  border: 1px solid var(--n-line); border-left: 0; border-radius: var(--n-r-sm);
  background: var(--n-paper); color: var(--n-text); box-shadow: none; font-size: 14px;
}
.tenant-ui .alert::before, .tenant-ui .adm-alert::before, .tenant-ui .admin-inline-alert::before { content: 'i'; flex: 0 0 auto; display: grid; place-items: center; width: 20px; height: 20px; border-radius: 50%; background: var(--n-info-bg); color: var(--n-info); font: 700 12px/1 var(--n-font-display); }
.tenant-ui .alert-error, .tenant-ui .adm-alert-error, .tenant-ui .admin-inline-alert.is-error { border-color: color-mix(in srgb, var(--n-bad) 30%, var(--n-line)); background: var(--n-bad-bg); color: #7B2326; }
.tenant-ui .alert-error::before, .tenant-ui .adm-alert-error::before, .tenant-ui .admin-inline-alert.is-error::before { content: '!'; background: var(--n-bad); color: #fff; }
.tenant-ui .alert-success, .tenant-ui .adm-alert-success { border-color: color-mix(in srgb, var(--n-good) 30%, var(--n-line)); background: var(--n-good-bg); color: #14543A; }
.tenant-ui .alert-success::before, .tenant-ui .adm-alert-success::before { content: '✓'; background: var(--n-good); color: #fff; }
.tenant-ui .adm-alert p { color: inherit; }

/* ---------- 4. Components ------------------------------------------------ */
/* Page header */
.tenant-ui .admin-page,
.tenant-ui .dash,
.tenant-ui .crm,
.tenant-ui .crm-admin,
.tenant-ui .set,
.tenant-ui .crm-workspace,
.tenant-ui .gateway-settings { display: grid; gap: var(--n-s6); width: 100%; min-width: 0; }
.tenant-ui .admin-page-header,
.tenant-ui .crm-head,
.tenant-ui .set-head,
.tenant-ui .cms-admin-head,
.tenant-ui .n-page-header {
  display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between;
  gap: 16px 24px; margin: 0; padding: 8px 0 4px;
}
.tenant-ui :is(.admin-page-header, .crm-head, .set-head, .n-page-header) > div:first-child { min-width: min(100%, 320px); flex: 1 1 420px; }
.tenant-ui :is(.admin-page-header, .crm-head, .set-head, .n-page-header) p { max-width: 68ch; margin: 8px 0 0; font-size: 15px; line-height: 1.55; }
.tenant-ui .crm-head-actions,
.tenant-ui .crm-workspace__actions,
.tenant-ui .n-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.tenant-ui .admin-page-header > label { display: grid; gap: 6px; min-width: 180px; }

/* Cards — hierarchy by role, not one-size-fits-all. */
.tenant-ui .card,
.tenant-ui .admin-card,
.tenant-ui .crm-card,
.tenant-ui .n-card {
  position: relative; min-width: 0;
  padding: clamp(18px, 2vw, 26px);
  border: 1px solid var(--n-line); border-radius: var(--n-r-lg);
  background: var(--n-paper); box-shadow: var(--n-shadow-1);
}
.tenant-ui .card:hover { border-color: var(--n-line); box-shadow: var(--n-shadow-1); }
.tenant-ui .n-card--ink { border-color: var(--n-ink); background: var(--n-ink); color: #EDEAF3; }
.tenant-ui .n-card--ink :is(h1, h2, h3, h4, strong, b) { color: #fff; }
.tenant-ui .n-card--ink p { color: #B9B3C6; }
.tenant-ui .n-card--soft { background: var(--n-paper-2); box-shadow: none; }
.tenant-ui .n-card--flat { box-shadow: none; }
.tenant-ui .card-label { margin: 0 0 12px; color: var(--n-muted); font: 600 13px var(--n-font-body); letter-spacing: 0; text-transform: none; }
.tenant-ui .admin-card > h2:first-child,
.tenant-ui .card > h2:first-child,
.tenant-ui .crm-card > h3:first-child { margin: 0 0 14px; font-size: 19px; }

.tenant-ui .n-section-head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 8px 16px; margin: 0 0 16px; }
.tenant-ui .n-section-head h2 { margin: 0; font-size: 19px; line-height: 1.2; }
.tenant-ui .n-section-head p { margin: 4px 0 0; font-size: 13.5px; }
.tenant-ui .n-section-head .n-link { font: 600 13.5px var(--n-font-body); color: var(--n-violet-700); text-decoration: none; }
.tenant-ui .n-section-head .n-link:hover { text-decoration: underline; }

/* Metric tiles */
.tenant-ui .n-metric { display: grid; align-content: space-between; gap: 14px; min-height: 148px; }
.tenant-ui .n-metric__label { color: var(--n-muted); font: 500 14px/1.3 var(--n-font-body); }
.tenant-ui .n-metric__value { margin: 0; color: var(--n-ink); font: 700 clamp(34px, 3.4vw, 46px)/1 var(--n-font-display); font-variant-numeric: tabular-nums; letter-spacing: -.04em; }
.tenant-ui .n-metric__meta { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; color: var(--n-muted); font-size: 13px; }
.tenant-ui .n-card--ink .n-metric__label, .tenant-ui .n-card--ink .n-metric__meta { color: #B9B3C6; }
.tenant-ui .n-card--ink .n-metric__value { color: #fff; }
.tenant-ui .n-metric--unavailable .n-metric__value { color: var(--n-faint); font-size: 30px; }

.tenant-ui .n-delta { display: inline-flex; align-items: center; gap: 4px; padding: 2px 8px; border-radius: var(--n-pill); background: var(--n-none-bg); color: var(--n-none); font: 600 12.5px/1.4 var(--n-font-body); font-variant-numeric: tabular-nums; }
.tenant-ui .n-delta--up { background: var(--n-good-bg); color: var(--n-good); }
.tenant-ui .n-delta--down { background: var(--n-bad-bg); color: var(--n-bad); }
.tenant-ui .n-delta--context { background: var(--n-violet-100); color: var(--n-violet-700); }

/* Meters */
.tenant-ui .n-meter { position: relative; height: 8px; overflow: hidden; border-radius: var(--n-pill); background: var(--n-canvas-deep); }
.tenant-ui .n-meter > span { position: absolute; inset: 0 auto 0 0; width: calc(var(--v, 0) * 1%); border-radius: inherit; background: var(--n-ink); transition: width 700ms var(--n-ease); }
.tenant-ui .n-meter--violet > span { background: var(--n-violet); }
.tenant-ui .n-meter--good > span { background: var(--n-good); }
.tenant-ui .n-meter--warn > span { background: #C98A1F; }
.tenant-ui .n-meter--bad > span { background: var(--n-bad); }
.tenant-ui .n-card--ink .n-meter { background: rgba(255,255,255,.12); }
.tenant-ui .n-card--ink .n-meter > span { background: var(--n-violet-on-ink); }
/* Missing data is hatched, never an empty "good" bar. */
.tenant-ui .n-hatch { background: repeating-linear-gradient(135deg, var(--n-canvas-deep) 0 6px, transparent 6px 11px); }
.tenant-ui .n-card--ink .n-hatch { background: repeating-linear-gradient(135deg, rgba(255,255,255,.14) 0 6px, transparent 6px 11px); }

/* Progress ring — only for real 0–100 values. */
.tenant-ui .n-ring {
  --size: 132px; --track: var(--n-canvas-deep); --fill: var(--n-ink);
  position: relative; display: grid; place-items: center;
  width: var(--size); height: var(--size); border-radius: 50%;
  background: conic-gradient(var(--fill) calc(var(--v, 0) * 1%), var(--track) 0);
}
.tenant-ui .n-ring::before { content: ''; position: absolute; inset: 11px; border-radius: 50%; background: var(--n-paper); }
.tenant-ui .n-ring > * { position: relative; }
.tenant-ui .n-card--ink .n-ring { --track: rgba(255,255,255,.12); --fill: var(--n-violet-on-ink); }
.tenant-ui .n-card--ink .n-ring::before { background: var(--n-ink); }

/* Lists */
.tenant-ui .n-list { display: grid; margin: 0; padding: 0; list-style: none; }
.tenant-ui .n-list > li { display: flex; align-items: center; gap: 12px; min-width: 0; padding: 12px 0; border-top: 1px solid var(--n-line); }
.tenant-ui .n-list > li:first-child { border-top: 0; padding-top: 2px; }
.tenant-ui .n-list__main { display: grid; flex: 1 1 auto; gap: 2px; min-width: 0; }
.tenant-ui .n-list__main strong { overflow: hidden; color: var(--n-ink); font-weight: 600; font-size: 14.5px; text-overflow: ellipsis; white-space: nowrap; }
.tenant-ui .n-list__main span { overflow: hidden; color: var(--n-muted); font-size: 13px; text-overflow: ellipsis; white-space: nowrap; }
.tenant-ui .n-list__aside { flex: 0 0 auto; color: var(--n-muted); font-size: 13px; text-align: right; }
.tenant-ui .n-avatar { display: grid; place-items: center; flex: 0 0 auto; width: 36px; height: 36px; border-radius: 50%; background: var(--n-canvas-deep); color: var(--n-ink); font: 700 13px var(--n-font-display); }
.tenant-ui .n-avatar--lg { width: 64px; height: 64px; font-size: 22px; }
.tenant-ui .n-avatar--violet { background: var(--n-violet-100); color: var(--n-violet-700); }

/* Timeline — a real sequence, so a rail is justified. */
.tenant-ui .n-timeline { position: relative; display: grid; gap: 0; margin: 0; padding: 0 0 0 22px; list-style: none; }
.tenant-ui .n-timeline::before { content: ''; position: absolute; left: 6px; top: 6px; bottom: 6px; width: 1px; background: var(--n-line-2); }
.tenant-ui .n-timeline > li { position: relative; padding: 0 0 16px; }
.tenant-ui .n-timeline > li::before { content: ''; position: absolute; left: -20px; top: 5px; width: 9px; height: 9px; border: 2px solid var(--n-paper); border-radius: 50%; background: var(--n-violet); box-shadow: 0 0 0 1px var(--n-line-2); }
.tenant-ui .n-timeline strong { display: block; color: var(--n-ink); font-weight: 600; font-size: 14px; }
.tenant-ui .n-timeline time, .tenant-ui .n-timeline small { color: var(--n-muted); font-size: 12.5px; }

/* Definition grid */
.tenant-ui .n-facts { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 16px 20px; margin: 0; }
.tenant-ui .n-facts > div { min-width: 0; }
.tenant-ui .n-facts dt { color: var(--n-muted); font-size: 12.5px; }
.tenant-ui .n-facts dd { margin: 3px 0 0; overflow-wrap: anywhere; color: var(--n-ink); font-weight: 600; font-size: 14.5px; }

/* Tabs (segmented) */
.tenant-ui .admin-tabs,
.tenant-ui .crm-tabs,
.tenant-ui .cms-admin-tabs,
.tenant-ui .n-tabs {
  display: flex; gap: 2px; width: fit-content; max-width: 100%; overflow-x: auto;
  margin: 0; padding: 4px; border: 1px solid var(--n-line); border-radius: 14px;
  background: var(--n-paper); scrollbar-width: none;
}
.tenant-ui :is(.admin-tabs, .crm-tabs, .cms-admin-tabs, .n-tabs) button,
.tenant-ui .crm-tab,
.tenant-ui .seo-tab {
  flex: 0 0 auto; min-height: 34px; padding: 0 14px;
  border: 0; border-radius: 10px; background: transparent;
  color: var(--n-muted); font: 600 13.5px/1 var(--n-font-body); white-space: nowrap; cursor: pointer;
}
.tenant-ui :is(.admin-tabs, .crm-tabs, .cms-admin-tabs, .n-tabs) button:hover { color: var(--n-ink); background: var(--n-canvas); }
.tenant-ui :is(.admin-tabs, .cms-admin-tabs, .n-tabs) button.active,
.tenant-ui :is(.admin-tabs, .n-tabs) button[aria-selected="true"],
.tenant-ui .crm-tab.is-active,
.tenant-ui .seo-tab.is-active { background: var(--n-ink); color: #fff; box-shadow: none; }

/* Filter bar */
.tenant-ui .crm-filters,
.tenant-ui .n-filterbar {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); align-items: end;
  gap: 12px 14px; margin: 0; padding: 16px 18px;
  border: 1px solid var(--n-line); border-radius: var(--n-r-lg);
  background: var(--n-paper); box-shadow: none;
}
.tenant-ui .crm-filters .field, .tenant-ui .n-filterbar .field { margin: 0; }
.tenant-ui .n-filterbar label { display: grid; gap: 6px; }

/* Tables */
.tenant-ui .crm-table,
.tenant-ui .n-table-card { padding: 0; overflow: hidden; border: 1px solid var(--n-line); border-radius: var(--n-r-lg); background: var(--n-paper); box-shadow: var(--n-shadow-1); }
.tenant-ui .crm-table .base-table-wrap,
.tenant-ui .base-table-wrap,
.tenant-ui .n-table-scroll { overflow-x: auto; border: 0; border-radius: 0; background: transparent; box-shadow: none; }
.tenant-ui .admin-content :is(.base-table, .admin-table, .adm-table, .n-table),
.tenant-ui .admin-content :where(.admin-card, .card, .crm-card) > table {
  width: 100%; border: 0; border-collapse: separate; border-spacing: 0; background: transparent; font-size: 14px;
}
.tenant-ui .admin-content :is(.base-table, .admin-table, .adm-table, .n-table) thead th,
.tenant-ui .admin-content :where(.admin-card, .card, .crm-card) > table thead th {
  position: sticky; top: 0; z-index: 1;
  padding: 11px 16px; border-bottom: 1px solid var(--n-line);
  background: var(--n-paper-2); color: var(--n-muted);
  font: 600 12.5px/1.2 var(--n-font-body); letter-spacing: 0; text-align: left; text-transform: none; white-space: nowrap;
}
.tenant-ui .admin-content :is(.base-table, .admin-table, .adm-table, .n-table) tbody td,
.tenant-ui .admin-content :where(.admin-card, .card, .crm-card) > table tbody td {
  padding: 13px 16px; border-bottom: 1px solid var(--n-line); color: var(--n-text); vertical-align: middle;
}
.tenant-ui .admin-content :is(.base-table, .admin-table, .adm-table, .n-table) tbody tr:last-child td,
.tenant-ui .admin-content :where(.admin-card, .card, .crm-card) > table tbody tr:last-child td { border-bottom: 0; }
.tenant-ui .admin-content :is(.base-table, .admin-table, .adm-table, .n-table) tbody tr:hover td,
.tenant-ui .admin-content :where(.admin-card, .card, .crm-card) > table tbody tr:hover td { background: var(--n-paper-2); }
.tenant-ui .admin-content :where(.admin-card, .card) > table { display: block; overflow-x: auto; margin-top: 12px; border: 1px solid var(--n-line); border-radius: var(--n-r-md); }
.tenant-ui .n-table tbody tr.is-clickable { cursor: pointer; }
.tenant-ui .n-table .n-cell-strong { color: var(--n-ink); font-weight: 600; }
.tenant-ui .n-table .n-cell-num { font-variant-numeric: tabular-nums; text-align: right; white-space: nowrap; }
.tenant-ui .n-table th.n-cell-num { text-align: right; }
.tenant-ui .crm-count, .tenant-ui .n-table-foot { margin: 0; padding: 12px 16px; border-top: 1px solid var(--n-line); color: var(--n-muted); font: 500 13px var(--n-font-body); }
.tenant-ui .crm-cell-name { display: flex; align-items: center; gap: 12px; min-width: 0; }
.tenant-ui .crm-cell-name strong { color: var(--n-ink); font-weight: 600; }
.tenant-ui .crm-cell-sub { color: var(--n-muted); font: 400 13px/1.35 var(--n-font-body); }
.tenant-ui .crm-avatar { width: 36px; height: 36px; border-radius: 50%; background: var(--n-violet-100); color: var(--n-violet-700); box-shadow: none; font: 700 13px var(--n-font-display); }

/* Empty / loading / error */
.tenant-ui .empty-state,
.tenant-ui .adm-empty,
.tenant-ui .n-empty,
.tenant-ui .module-placeholder {
  display: grid; justify-items: center; gap: 6px;
  padding: clamp(24px, 4vw, 44px) 20px;
  border: 1px dashed var(--n-line-2); border-radius: var(--n-r-md);
  background: var(--n-paper-2); color: var(--n-muted); text-align: center;
}
.tenant-ui :is(.empty-state-title, .n-empty strong) { margin: 0; color: var(--n-ink); font: 650 16px var(--n-font-display); }
.tenant-ui :is(.empty-state-text, .n-empty p) { max-width: 46ch; margin: 0; color: var(--n-muted); font-size: 14px; }
.tenant-ui .adm-loading, .tenant-ui .n-loading { display: flex; align-items: center; gap: 10px; padding: 18px; border-radius: var(--n-r-md); background: transparent; color: var(--n-muted); }
.tenant-ui .adm-spinner { border-color: var(--n-canvas-deep); border-top-color: var(--n-violet); }
.tenant-ui .n-skeleton { display: block; border-radius: var(--n-r-sm); background: linear-gradient(90deg, var(--n-canvas-deep) 0%, var(--n-canvas) 50%, var(--n-canvas-deep) 100%); background-size: 200% 100%; animation: n-shimmer 1.4s linear infinite; }
@keyframes n-shimmer { to { background-position: -200% 0; } }

/* Drawer (legacy crm-panel + gateway drawer) */
.tenant-ui .crm-panel-overlay,
.tenant-ui .gateway-drawer-backdrop { background: rgba(23, 20, 31, .38); backdrop-filter: blur(3px); }
.tenant-ui .crm-panel,
.tenant-ui .gateway-drawer {
  border-left: 1px solid var(--n-line); background: var(--n-paper);
  box-shadow: -30px 0 80px -30px rgba(23, 20, 31, .38);
  padding: 24px clamp(18px, 2.4vw, 30px);
}
.tenant-ui .crm-panel-head, .tenant-ui .gateway-drawer__head { align-items: flex-start; padding-bottom: 16px; margin-bottom: 4px; border-bottom: 1px solid var(--n-line); }
.tenant-ui .crm-panel-head strong { display: block; color: var(--n-ink); font: 700 20px/1.2 var(--n-font-display); letter-spacing: -.015em; }
.tenant-ui .crm-panel-section, .tenant-ui .gateway-drawer__section { padding: 18px 0; border-top: 1px solid var(--n-line); }
.tenant-ui .crm-panel-head + .crm-panel-section, .tenant-ui .crm-panel-badges + .crm-panel-section { border-top: 0; }
.tenant-ui .crm-panel-section h4 { margin: 0 0 12px; color: var(--n-ink); font: 650 15px var(--n-font-display); letter-spacing: -.005em; text-transform: none; }
.tenant-ui .crm-panel-actions { gap: 8px; }
.tenant-ui .crm-data li { padding: 8px 0; border-bottom: 1px solid var(--n-line); color: var(--n-ink); font-size: 14px; }
.tenant-ui .crm-data li:last-child { border-bottom: 0; }
.tenant-ui .crm-data li span { color: var(--n-muted); }
.tenant-ui .crm-note { border: 1px solid var(--n-line); border-radius: var(--n-r-sm); background: var(--n-paper-2); }

/* Quick actions */
.tenant-ui .n-quick-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.tenant-ui .n-quick {
  display: grid; align-content: space-between; gap: 18px; min-height: 104px; padding: 14px;
  border: 1px solid var(--n-line); border-radius: var(--n-r-md);
  background: var(--n-paper-2); color: var(--n-ink); text-decoration: none;
  transition: border-color var(--n-fast) ease, background var(--n-fast) ease;
}
.tenant-ui .n-quick:hover { border-color: var(--n-ink); background: var(--n-paper); }
.tenant-ui .n-quick__ic { display: grid; place-items: center; width: 32px; height: 32px; border-radius: 10px; background: var(--n-ink); color: #fff; font-size: 14px; }
.tenant-ui .n-quick strong { font: 650 14.5px/1.25 var(--n-font-body); }
.tenant-ui .n-quick small { display: block; margin-top: 2px; color: var(--n-muted); font-size: 12.5px; }

/* ---------- 5. Legacy adapters ------------------------------------------ */
.tenant-ui .crm-metrics,
.tenant-ui .stats-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 12px; margin: 0; }
.tenant-ui .stat-card,
.tenant-ui .metric-card,
.tenant-ui .stats-grid article,
.tenant-ui .crm-workspace__summary article {
  display: grid; align-content: space-between; gap: 10px; min-height: 108px; padding: 18px;
  border: 1px solid var(--n-line); border-radius: var(--n-r-md);
  background: var(--n-paper); box-shadow: none; overflow: hidden;
}
.tenant-ui .crm-workspace__summary article::after { display: none; }
.tenant-ui .stat-card .stat-label, .tenant-ui .metric-card__lbl { color: var(--n-muted); font: 500 13.5px var(--n-font-body); letter-spacing: 0; text-transform: none; }
.tenant-ui .stat-card .stat-value, .tenant-ui .metric-card__val,
.tenant-ui .crm-workspace__summary strong,
.tenant-ui .stats-grid article b { margin: 0; color: var(--n-ink); font: 700 30px/1 var(--n-font-display); font-variant-numeric: tabular-nums; letter-spacing: -.03em; }
.tenant-ui .crm-workspace__summary span, .tenant-ui .stats-grid article span { color: var(--n-muted); font-size: 13.5px; }
.tenant-ui .crm-workspace__summary { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.tenant-ui .crm-workspace__summary article:first-child { border-color: var(--n-ink); background: var(--n-ink); }
.tenant-ui .crm-workspace__summary article:first-child strong { color: #fff; }
.tenant-ui .crm-workspace__summary article:first-child span { color: #B9B3C6; }
.tenant-ui .finance-account { padding: 18px; border: 1px solid var(--n-line); border-radius: var(--n-r-md); background: var(--n-paper-2); }

/* Settings */
.tenant-ui .set-layout { grid-template-columns: 232px minmax(0, 1fr); gap: 20px; align-items: start; }
.tenant-ui .set-tabs { top: 88px; gap: 2px; padding: 8px; border: 1px solid var(--n-line); border-radius: var(--n-r-lg); background: var(--n-paper); box-shadow: none; }
.tenant-ui .set-tab { min-height: 38px; padding: 8px 12px; border: 0; border-radius: 10px; color: var(--n-muted); font: 500 14px var(--n-font-body); }
.tenant-ui .set-tab:hover { background: var(--n-canvas); color: var(--n-ink); }
.tenant-ui .set-tab.is-active { border: 0; background: var(--n-ink); color: #fff; font-weight: 600; }
.tenant-ui .set-content { padding: clamp(20px, 2.6vw, 34px); border: 1px solid var(--n-line); border-radius: var(--n-r-lg); background: var(--n-paper); box-shadow: var(--n-shadow-1); }
.tenant-ui .set-panel h2 { margin: 0 0 6px; font-size: 22px; }
.tenant-ui .set-panel > h2 + * { margin-top: 18px; }
.tenant-ui .set-hint { margin: 0 0 20px; color: var(--n-muted); font-size: 14px; }
.tenant-ui .set-row { gap: 16px; }
.tenant-ui .set-saved, .tenant-ui .form-success { color: var(--n-good); font-weight: 600; }

/* CRM board */
.tenant-ui .crm-board { gap: 12px; padding: 2px 0 10px; scroll-snap-type: x proximity; }
.tenant-ui .crm-board__column { min-height: 320px; padding: 12px; border: 0; border-radius: var(--n-r-lg); background: var(--n-canvas-deep); scroll-snap-align: start; }
.tenant-ui .crm-board__column header { padding: 4px 4px 12px; }
.tenant-ui .crm-board__column h2 { color: var(--n-ink); font: 650 15px var(--n-font-display); }
.tenant-ui .crm-board__cards { gap: 8px; }
.tenant-ui .crm-opportunity { gap: 8px; padding: 14px; border: 1px solid transparent; border-radius: var(--n-r-md); background: var(--n-paper); box-shadow: var(--n-shadow-1); }
.tenant-ui .crm-opportunity:hover { border-color: var(--n-line-2); box-shadow: var(--n-shadow-2); }
.tenant-ui .crm-opportunity__head strong { color: var(--n-ink); font-weight: 650; font-size: 14.5px; }
.tenant-ui .crm-opportunity p { color: var(--n-text); font-size: 13.5px; }
.tenant-ui .crm-opportunity small { color: var(--n-muted); font-size: 12.5px; }
.tenant-ui .crm-opportunity__actions { gap: 6px; padding-top: 8px; border-top: 1px solid var(--n-line); }
.tenant-ui .crm-opportunity__actions .crm-view { min-height: 30px; padding: 0 10px; font-size: 12.5px; }
.tenant-ui .crm-board__empty { padding: 16px 6px; color: var(--n-muted); font-size: 13px; }

/* Gateway cards (AC-21B) */
.tenant-ui .gateway-card { border: 1px solid var(--n-line); border-radius: var(--n-r-lg); background: var(--n-paper); box-shadow: var(--n-shadow-1); }
.tenant-ui .gateway-card__logo { border-radius: 12px; background: var(--n-ink); }
.tenant-ui .gateway-card h2 { color: var(--n-ink); }
.tenant-ui .gateway-card__facts { border-top-color: var(--n-line); }
.tenant-ui .gateway-card__facts dd { color: var(--n-ink); }
.tenant-ui .gateway-settings__security { border-color: var(--n-line); border-radius: var(--n-r-md); background: var(--n-paper); color: var(--n-ink); }
.tenant-ui .gateway-webhook code { border-color: var(--n-line); border-radius: var(--n-r-sm); background: var(--n-paper-2); color: var(--n-ink); }
.tenant-ui .gateway-status.is-ready, .tenant-ui .gateway-active { background: var(--n-good-bg); color: var(--n-good); }
.tenant-ui .gateway-status.is-pending { background: var(--n-warn-bg); color: var(--n-warn); }
.tenant-ui .gateway-status.is-empty, .tenant-ui .gateway-inactive { background: var(--n-none-bg); color: var(--n-none); }

/* CMS */
.tenant-ui .cms-page-card, .tenant-ui .cms-metric-grid article { border: 1px solid var(--n-line); border-radius: var(--n-r-lg); background: var(--n-paper); box-shadow: var(--n-shadow-1); }
.tenant-ui .cms-editor-fields, .tenant-ui .cms-block-canvas, .tenant-ui .cms-settings-form { border: 1px solid var(--n-line); border-radius: var(--n-r-lg); background: var(--n-paper); }
.tenant-ui .cms-editor-actions { border-bottom: 1px solid var(--n-line); background: color-mix(in srgb, var(--n-paper) 92%, transparent); }
.tenant-ui .cms-block-card { border: 1px solid var(--n-line); border-radius: var(--n-r-md); background: var(--n-paper); }

/* Legacy dashboard quick cards (kept for other callers) */
.tenant-ui .adm-quick-card { border: 1px solid var(--n-line); border-radius: var(--n-r-md); box-shadow: none; }
.tenant-ui .adm-quick-card:hover { border-color: var(--n-ink); transform: none; }
.tenant-ui .adm-quick-ic { border-radius: 10px; background: var(--n-ink); color: #fff; }

/* ---------- 6. View compositions ---------------------------------------- */
.tenant-ui .n-grid { display: grid; gap: var(--n-s4); min-width: 0; }
.tenant-ui .n-grid--kpis { grid-template-columns: 1.35fr repeat(3, minmax(0, 1fr)); }
.tenant-ui .n-grid--main { grid-template-columns: minmax(0, 1.6fr) minmax(300px, 1fr); align-items: start; }
.tenant-ui .n-grid--halves { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.tenant-ui .n-grid--perspectives { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.tenant-ui .n-stack { display: grid; gap: var(--n-s4); align-content: start; min-width: 0; }

/* Dashboard hero */
.tenant-ui .n-hero {
  display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(260px, .9fr); gap: clamp(20px, 3vw, 44px);
  padding: clamp(24px, 3.2vw, 40px); border-radius: var(--n-r-xl);
}
.tenant-ui .n-hero h1 { color: #fff; font-size: clamp(32px, 3.6vw, 52px); letter-spacing: -.035em; }
.tenant-ui .n-hero__lead { max-width: 52ch; margin: 14px 0 0; color: #C8C2D4 !important; font-size: 16px; line-height: 1.55; }
.tenant-ui .n-hero__date { margin: 0 0 14px; color: var(--n-violet-on-ink) !important; font-weight: 600; font-size: 14px; }
.tenant-ui .n-hero .n-actions { margin-top: 24px; }
.tenant-ui .n-hero__read { display: grid; align-content: space-between; gap: 16px; padding: 20px; border: 1px solid rgba(255,255,255,.12); border-radius: var(--n-r-lg); background: rgba(255,255,255,.04); }
.tenant-ui .n-hero__read h2 { margin: 0; color: #fff; font-size: 15px; font-weight: 600; font-family: var(--n-font-body); letter-spacing: 0; }
.tenant-ui .n-hero__score { display: flex; align-items: baseline; gap: 10px; }
.tenant-ui .n-hero__score b { color: #fff; font: 700 64px/1 var(--n-font-display); font-variant-numeric: tabular-nums; letter-spacing: -.05em; }
.tenant-ui .n-hero__score span { color: #B9B3C6; font-size: 14px; }
.tenant-ui .n-hero__read p { margin: 0; font-size: 13.5px; }

/* Perspective pulse (dashboard) */
.tenant-ui .n-pulse { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0; }
.tenant-ui .n-pulse > a { display: grid; gap: 10px; min-width: 0; padding: 4px 18px; border-left: 1px solid var(--n-line); color: inherit; text-decoration: none; }
.tenant-ui .n-pulse > a:first-child { padding-left: 0; border-left: 0; }
.tenant-ui .n-pulse > a:hover .n-pulse__name { color: var(--n-violet-700); }
.tenant-ui .n-pulse__name { color: var(--n-ink); font: 650 15px var(--n-font-display); }
.tenant-ui .n-pulse__metric { display: grid; gap: 2px; }
.tenant-ui .n-pulse__metric b { color: var(--n-ink); font: 700 26px/1.1 var(--n-font-display); font-variant-numeric: tabular-nums; letter-spacing: -.03em; }
.tenant-ui .n-pulse__metric span { overflow: hidden; color: var(--n-muted); font-size: 13px; text-overflow: ellipsis; white-space: nowrap; }

/* Attention list */
.tenant-ui .n-attention { display: grid; margin: 0; padding: 0; list-style: none; }
.tenant-ui .n-attention > li { display: grid; grid-template-columns: 4px minmax(0, 1fr) auto; align-items: center; gap: 14px; padding: 12px 0; border-top: 1px solid var(--n-line); }
.tenant-ui .n-attention > li:first-child { border-top: 0; padding-top: 0; }
.tenant-ui .n-attention__bar { align-self: stretch; border-radius: 4px; background: var(--n-line-2); }
.tenant-ui .n-attention > li.is-critical .n-attention__bar, .tenant-ui .n-attention > li.is-high .n-attention__bar { background: var(--n-bad); }
.tenant-ui .n-attention > li.is-attention .n-attention__bar, .tenant-ui .n-attention > li.is-medium .n-attention__bar { background: #C98A1F; }
.tenant-ui .n-attention__body { display: grid; gap: 3px; min-width: 0; }
.tenant-ui .n-attention__body strong { color: var(--n-ink); font-weight: 600; font-size: 14.5px; }
.tenant-ui .n-attention__body span { color: var(--n-muted); font-size: 13px; }

/* ===== Executive BSC ===== */
.tenant-ui .n-bsc { display: grid; gap: var(--n-s5); }
.tenant-ui .n-bsc-toolbar { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; }
.tenant-ui .n-period { display: inline-flex; padding: 4px; border: 1px solid var(--n-line); border-radius: 14px; background: var(--n-paper); }
.tenant-ui .n-period select { min-height: 34px !important; border: 0 !important; background: transparent !important; font-weight: 600 !important; box-shadow: none !important; }

.tenant-ui .n-bsc-hero {
  display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: clamp(24px, 4vw, 56px);
  padding: clamp(24px, 3.4vw, 44px); border-radius: var(--n-r-xl); overflow: hidden;
}
.tenant-ui .n-bsc-hero__status { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 0 0 18px; }
.tenant-ui .n-bsc-hero__score { display: flex; align-items: flex-end; gap: 14px; margin: 0; }
.tenant-ui .n-bsc-hero__score b { color: #fff; font: 700 clamp(88px, 11vw, 148px)/.82 var(--n-font-display); font-variant-numeric: tabular-nums; letter-spacing: -.06em; }
.tenant-ui .n-bsc-hero__score span { padding-bottom: 10px; color: #8F88A0; font: 600 22px var(--n-font-display); }
.tenant-ui .n-bsc-hero h2 { margin: 14px 0 0; max-width: 22ch; color: #fff; font: 650 clamp(22px, 2.2vw, 30px)/1.15 var(--n-font-display); letter-spacing: -.02em; }
.tenant-ui .n-bsc-hero__insufficient { margin: 0; max-width: 18ch; color: #fff; font: 700 clamp(34px, 4vw, 54px)/1.02 var(--n-font-display); letter-spacing: -.035em; }
.tenant-ui .n-bsc-hero__meta { display: flex; flex-wrap: wrap; gap: 8px 18px; margin-top: 22px; color: #9D96AE; font-size: 13px; }
.tenant-ui .n-bsc-hero__side { display: grid; align-content: space-between; gap: 22px; }
.tenant-ui .n-bsc-hero__side h3 { margin: 0 0 12px; color: #fff; font: 600 14px var(--n-font-body); letter-spacing: 0; }

/* Contribution strip: widths are the service's fixed weights. */
.tenant-ui .n-contrib { display: flex; gap: 4px; height: 58px; }
.tenant-ui .n-contrib__seg { position: relative; display: flex; flex-direction: column; justify-content: flex-end; min-width: 44px; flex: var(--w) 1 0; padding: 8px 10px; border-radius: 12px; background: rgba(255,255,255,.08); color: #fff; overflow: hidden; }
.tenant-ui .n-contrib__seg.is-good { background: #2E7D5A; }
.tenant-ui .n-contrib__seg.is-attention { background: var(--n-violet); }
.tenant-ui .n-contrib__seg.is-nodata { background: repeating-linear-gradient(135deg, rgba(255,255,255,.16) 0 6px, rgba(255,255,255,.04) 6px 12px); color: #C8C2D4; }
.tenant-ui .n-contrib__seg b { font: 700 13px/1.1 var(--n-font-body); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.tenant-ui .n-contrib__seg small { font-size: 11.5px; opacity: .8; white-space: nowrap; }
.tenant-ui .n-contrib-legend { display: flex; flex-wrap: wrap; gap: 6px 14px; margin: 10px 0 0; padding: 0; list-style: none; color: #9D96AE; font-size: 12.5px; }
.tenant-ui .n-contrib-legend i { display: inline-block; width: 10px; height: 10px; margin-right: 6px; border-radius: 3px; vertical-align: -1px; }

.tenant-ui .n-coverage { display: grid; gap: 10px; }
.tenant-ui .n-coverage__row { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; color: #C8C2D4; font-size: 13.5px; }
.tenant-ui .n-coverage__row b { color: #fff; font: 700 26px var(--n-font-display); font-variant-numeric: tabular-nums; }

.tenant-ui .n-bsc-summary { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); overflow: hidden; border: 1px solid var(--n-line); border-radius: var(--n-r-lg); background: var(--n-paper); }
.tenant-ui .n-bsc-summary > div { display: grid; gap: 4px; padding: 16px 20px; border-left: 1px solid var(--n-line); }
.tenant-ui .n-bsc-summary > div:first-child { border-left: 0; }
.tenant-ui .n-bsc-summary b { color: var(--n-ink); font: 700 28px/1.05 var(--n-font-display); font-variant-numeric: tabular-nums; }
.tenant-ui .n-bsc-summary span { display: flex; align-items: center; gap: 6px; color: var(--n-muted); font-size: 13px; }
.tenant-ui .n-bsc-summary span i { width: 8px; height: 8px; border-radius: 50%; background: var(--n-line-2); }
.tenant-ui .n-bsc-summary .is-good i { background: var(--n-good); }
.tenant-ui .n-bsc-summary .is-warn i { background: #C98A1F; }
.tenant-ui .n-bsc-summary .is-bad i { background: var(--n-bad); }
.tenant-ui .n-bsc-summary .is-none i { background: transparent; border: 1.5px dashed var(--n-faint); }

/* Alert center */
.tenant-ui .n-alerts { display: grid; margin: 0; padding: 0; list-style: none; counter-reset: none; }
.tenant-ui .n-alert { display: grid; grid-template-columns: 56px minmax(0, 1fr) auto; align-items: center; gap: 16px; padding: 16px 0; border-top: 1px solid var(--n-line); }
.tenant-ui .n-alert:first-child { border-top: 0; padding-top: 4px; }
.tenant-ui .n-alert__prio { display: grid; place-items: center; width: 56px; height: 56px; border-radius: 16px; background: var(--n-warn-bg); color: var(--n-warn); }
.tenant-ui .n-alert__prio b { font: 700 20px/1 var(--n-font-display); font-variant-numeric: tabular-nums; }
.tenant-ui .n-alert__prio small { font-size: 10.5px; font-weight: 600; }
.tenant-ui .n-alert.is-critical .n-alert__prio { background: var(--n-bad); color: #fff; }
.tenant-ui .n-alert__body { display: grid; gap: 4px; min-width: 0; }
.tenant-ui .n-alert__body strong { color: var(--n-ink); font: 650 16px/1.25 var(--n-font-display); }
.tenant-ui .n-alert__evidence { display: flex; flex-wrap: wrap; gap: 4px 12px; color: var(--n-muted); font-size: 12.5px; }
.tenant-ui .n-alert__evidence code { padding: 1px 6px; border-radius: 6px; background: var(--n-canvas); color: var(--n-ink); font: 500 12px/1.5 ui-monospace, SFMono-Regular, Menlo, monospace; }

/* Story */
.tenant-ui .n-story { display: grid; gap: 0; margin: 0; padding: 0; list-style: none; }
.tenant-ui .n-story > li { display: grid; grid-template-columns: 28px minmax(0, 1fr); gap: 12px; padding: 14px 0; border-top: 1px solid var(--n-line); }
.tenant-ui .n-story > li:first-child { border-top: 0; padding-top: 0; }
.tenant-ui .n-story__glyph { display: grid; place-items: center; width: 28px; height: 28px; border-radius: 9px; background: var(--n-violet-100); color: var(--n-violet-700); font: 700 13px var(--n-font-display); }
.tenant-ui .n-story p { margin: 0; color: var(--n-ink); font: 500 16.5px/1.45 var(--n-font-display); letter-spacing: -.005em; }
.tenant-ui .n-story small { display: block; margin-top: 4px; color: var(--n-muted); font-size: 12.5px; }

/* Perspective cards */
.tenant-ui .n-persp { display: grid; grid-template-rows: auto auto 1fr auto; gap: 14px; padding: 20px; }
.tenant-ui .n-persp__head { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.tenant-ui .n-persp__head h3 { margin: 0; font: 700 17px var(--n-font-display); }
.tenant-ui .n-persp__glyph { display: grid; place-items: center; width: 34px; height: 34px; border-radius: 11px; background: var(--n-canvas); color: var(--n-ink); font: 700 15px var(--n-font-display); }
.tenant-ui .n-persp__hl { display: grid; gap: 4px; padding: 14px 0; border-block: 1px solid var(--n-line); }
.tenant-ui .n-persp__hl b { color: var(--n-ink); font: 700 34px/1 var(--n-font-display); font-variant-numeric: tabular-nums; letter-spacing: -.035em; }
.tenant-ui .n-persp__hl span { color: var(--n-muted); font-size: 13px; }
.tenant-ui .n-persp__hl.is-nodata b { color: var(--n-faint); font-size: 22px; letter-spacing: -.01em; }
.tenant-ui .n-persp__foot { display: grid; gap: 6px; color: var(--n-muted); font-size: 12.5px; }
.tenant-ui .n-persp.is-attention { border-color: color-mix(in srgb, var(--n-violet) 45%, var(--n-line)); box-shadow: inset 0 3px 0 var(--n-violet), var(--n-shadow-1); }

/* Metrics table inside perspective */
.tenant-ui .n-mrows { display: grid; margin: 0; padding: 0; list-style: none; }
.tenant-ui .n-mrow { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 4px 12px; padding: 12px 0; border-top: 1px solid var(--n-line); }
.tenant-ui .n-mrow:first-child { border-top: 0; padding-top: 0; }
.tenant-ui .n-mrow__label { color: var(--n-ink); font-weight: 600; font-size: 14px; }
.tenant-ui .n-mrow__value { color: var(--n-ink); font: 700 18px/1.2 var(--n-font-display); font-variant-numeric: tabular-nums; text-align: right; }
.tenant-ui .n-mrow__value.is-nodata { color: var(--n-faint); font: 600 12.5px var(--n-font-body); }
.tenant-ui .n-mrow__meta { grid-column: 1 / -1; display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; color: var(--n-muted); font-size: 12.5px; }
.tenant-ui .n-mrow__meta a { font-weight: 600; }

.tenant-ui .n-method { display: grid; gap: 12px; }
.tenant-ui .n-method__row { display: grid; grid-template-columns: 140px minmax(0, 1fr) 150px; align-items: center; gap: 14px; font-size: 13.5px; }
.tenant-ui .n-method__row span:last-child { color: var(--n-muted); text-align: right; }
.tenant-ui .executive-lineage { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 8px; padding: 6px 2px; color: var(--n-muted); font-size: 12.5px; }

/* ===== Student 360 ===== */
.tenant-ui .n-student-hero { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 20px; padding: clamp(20px, 2.6vw, 30px); border-radius: var(--n-r-xl); }
.tenant-ui .n-student-hero h2 { margin: 0; font: 700 clamp(26px, 2.6vw, 36px)/1.1 var(--n-font-display); letter-spacing: -.025em; }
.tenant-ui .n-student-hero p { margin: 6px 0 0; }
.tenant-ui .n-student-hero .n-actions { margin-top: 12px; }
.tenant-ui .n-risk { display: grid; gap: 8px; min-width: 220px; padding: 16px 18px; border: 1px solid var(--n-line); border-radius: var(--n-r-lg); background: var(--n-paper-2); }
.tenant-ui .n-risk strong { color: var(--n-ink); font: 700 22px/1.1 var(--n-font-display); }
.tenant-ui .n-risk span { color: var(--n-muted); font-size: 13px; }
.tenant-ui .n-risk.is-high, .tenant-ui .n-risk.is-critical { border-color: color-mix(in srgb, var(--n-bad) 35%, var(--n-line)); background: var(--n-bad-bg); }
.tenant-ui .n-risk.is-medium { border-color: color-mix(in srgb, #C98A1F 40%, var(--n-line)); background: var(--n-warn-bg); }
.tenant-ui .n-risk.is-low { background: var(--n-good-bg); border-color: color-mix(in srgb, var(--n-good) 30%, var(--n-line)); }
.tenant-ui .n-signal { display: grid; gap: 4px; padding: 12px 14px; border: 1px solid var(--n-line); border-radius: var(--n-r-sm); background: var(--n-paper); }
.tenant-ui .n-signal strong { color: var(--n-ink); font-size: 13.5px; }
.tenant-ui .n-signal span { color: var(--n-muted); font-size: 12.5px; }
.tenant-ui .n-enroll { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 6px 12px; padding: 14px 0; border-top: 1px solid var(--n-line); }
.tenant-ui .n-enroll:first-child { border-top: 0; padding-top: 0; }
.tenant-ui .n-enroll strong { color: var(--n-ink); font-weight: 650; }
.tenant-ui .n-enroll span { color: var(--n-muted); font-size: 13px; }

/* ===== Retention ===== */
.tenant-ui .n-queue-summary { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 10px; }
.tenant-ui .n-queue-summary button { display: grid; gap: 8px; min-height: 96px; padding: 14px 16px; border: 1px solid var(--n-line); border-radius: var(--n-r-md); background: var(--n-paper); color: var(--n-ink); text-align: left; cursor: pointer; transition: border-color var(--n-fast) ease; }
.tenant-ui .n-queue-summary button:hover { border-color: var(--n-ink); }
.tenant-ui .n-queue-summary button[aria-pressed="true"] { border-color: var(--n-ink); background: var(--n-ink); color: #fff; }
.tenant-ui .n-queue-summary button[aria-pressed="true"] span { color: #C8C2D4; }
.tenant-ui .n-queue-summary b { font: 700 30px/1 var(--n-font-display); font-variant-numeric: tabular-nums; }
.tenant-ui .n-queue-summary span { color: var(--n-muted); font-size: 13px; }
.tenant-ui .retention-item {
  display: grid; grid-template-columns: 6px minmax(0, 1.2fr) minmax(0, 1.4fr) auto; align-items: stretch; gap: 18px;
  margin: 0; padding: 18px 20px 18px 0; overflow: hidden;
  border: 1px solid var(--n-line); border-radius: var(--n-r-lg); background: var(--n-paper); box-shadow: var(--n-shadow-1);
}
.tenant-ui .retention-item + .retention-item { margin-top: 10px; }
.tenant-ui .retention-item__rail { background: var(--n-line-2); }
.tenant-ui .retention-item.is-high .retention-item__rail, .tenant-ui .retention-item.is-critical .retention-item__rail { background: var(--n-bad); }
.tenant-ui .retention-item.is-medium .retention-item__rail { background: #C98A1F; }
.tenant-ui .retention-item.is-low .retention-item__rail { background: var(--n-good); }
.tenant-ui .retention-item.is-insufficient_data .retention-item__rail { background: repeating-linear-gradient(180deg, var(--n-line-2) 0 6px, transparent 6px 10px); }
.tenant-ui .retention-item h2 { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 0; font: 700 17px/1.25 var(--n-font-display); }
.tenant-ui .retention-item h2 span { color: var(--n-muted); font: 500 13px var(--n-font-body); }
.tenant-ui .retention-item p { margin: 6px 0 0; font-size: 13.5px; }
.tenant-ui .retention-item ul { display: grid; gap: 6px; margin: 0; padding: 0; list-style: none; }
.tenant-ui .retention-item__actions { display: flex; flex-direction: column; justify-content: center; gap: 8px; }
.tenant-ui .n-attendance { display: grid; gap: 6px; margin-top: 12px; max-width: 280px; }
.tenant-ui .n-attendance small { color: var(--n-muted); font-size: 12.5px; }

/* Finance */
.tenant-ui .n-standing-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 12px; }
.tenant-ui .n-standing { display: grid; gap: 10px; padding: 18px; border: 1px solid var(--n-line); border-radius: var(--n-r-md); background: var(--n-paper); }
.tenant-ui .n-standing b { color: var(--n-ink); font: 700 26px/1 var(--n-font-display); font-variant-numeric: tabular-nums; letter-spacing: -.02em; }
.tenant-ui .n-standing.is-overdue { border-color: color-mix(in srgb, var(--n-bad) 35%, var(--n-line)); }
.tenant-ui .n-obligations { display: grid; margin: 12px 0 0; padding: 0; list-style: none; }
.tenant-ui .n-obligations > li { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 8px 16px; padding: 12px 0; border-top: 1px solid var(--n-line); }
.tenant-ui .n-obligations > li > div:last-child { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 6px; }
.tenant-ui .n-receipt { display: grid; gap: 20px; }
.tenant-ui .n-receipt__total { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; padding-top: 16px; border-top: 1px solid var(--n-line); }
.tenant-ui .n-receipt__total b { color: var(--n-ink); font: 700 32px var(--n-font-display); font-variant-numeric: tabular-nums; }
.tenant-ui .n-checks { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 8px; margin: 0; padding: 0; list-style: none; }
.tenant-ui .n-checks li { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 10px 12px; border: 1px solid var(--n-line); border-radius: var(--n-r-sm); background: var(--n-paper-2); color: var(--n-ink); font-size: 13.5px; }
.tenant-ui .n-form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 4px 16px; }
.tenant-ui .n-form-grid label { display: grid; margin-bottom: 12px; }
.tenant-ui .n-form-grid .is-wide { grid-column: 1 / -1; }
.tenant-ui .n-form-foot { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; margin-top: 8px; padding-top: 16px; border-top: 1px solid var(--n-line); }

/* ---------- 7. Responsive ----------------------------------------------- */
@media (max-width: 1240px) {
  .tenant-ui .n-grid--kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .tenant-ui .n-grid--perspectives { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .tenant-ui .n-pulse { grid-template-columns: repeat(2, minmax(0, 1fr)); row-gap: 20px; }
  .tenant-ui .n-pulse > a:nth-child(3) { padding-left: 0; border-left: 0; }
  .tenant-ui .n-queue-summary { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .tenant-ui .retention-item { grid-template-columns: 6px minmax(0, 1fr) minmax(0, 1fr); }
  .tenant-ui .retention-item__actions { grid-column: 2 / -1; flex-direction: row; flex-wrap: wrap; justify-content: flex-start; }
}
@media (max-width: 1100px) {
  .tenant-ui .n-grid--main,
  .tenant-ui .n-bsc-hero,
  .tenant-ui .n-hero { grid-template-columns: minmax(0, 1fr); }
  .tenant-ui .n-bsc-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .tenant-ui .n-bsc-summary > div:nth-child(3) { border-left: 0; }
  .tenant-ui .n-bsc-summary > div:nth-child(n+3) { border-top: 1px solid var(--n-line); }
}
@media (max-width: 900px) {
  .tenant-ui .admin-sidebar,
  .tenant-ui .admin-sidebar.is-collapsed { width: min(86vw, 320px); box-shadow: var(--n-shadow-3); }
  .tenant-ui .admin-sidebar.is-collapsed .n-brand__text { display: grid; }
  .tenant-ui .admin-sidebar.is-collapsed .n-nav-home .admin-nav-link-label { display: inline; }
  .tenant-ui .admin-sidebar.is-collapsed .n-nav-home a { justify-content: flex-start; padding: 6px 10px 6px 6px; }
  .tenant-ui .admin-sidebar.is-collapsed .admin-nav-links { border: 0; box-shadow: none; }
  .tenant-ui .admin-topbar { min-height: 64px; padding: 10px 16px; }
  .tenant-ui .n-tenant-chip { display: none; }
  .tenant-ui .set-layout { grid-template-columns: minmax(0, 1fr); }
  .tenant-ui .set-tabs { position: static; flex-direction: row; overflow-x: auto; }
  .tenant-ui .n-student-hero { grid-template-columns: auto minmax(0, 1fr); }
  .tenant-ui .n-student-hero .n-risk { grid-column: 1 / -1; }
  .tenant-ui .crm-workspace__summary { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .tenant-ui .n-method__row { grid-template-columns: 110px minmax(0, 1fr); }
  .tenant-ui .n-method__row span:last-child { grid-column: 1 / -1; text-align: left; }
}
@media (max-width: 720px) {
  .tenant-ui .admin-content { padding: 8px 14px 48px; }
  .tenant-ui .admin-topbar-user { font-size: 0; gap: 0; }
  .tenant-ui .admin-topbar-logout { padding: 0 10px; font-size: 13px; }
  .tenant-ui .n-grid--kpis,
  .tenant-ui .n-grid--halves,
  .tenant-ui .n-grid--perspectives,
  .tenant-ui .n-pulse,
  .tenant-ui .crm-workspace__summary,
  .tenant-ui .n-form-grid { grid-template-columns: minmax(0, 1fr); }
  .tenant-ui .n-pulse > a { padding: 14px 0 0; border-left: 0; border-top: 1px solid var(--n-line); }
  .tenant-ui .n-pulse > a:first-child { padding-top: 0; border-top: 0; }
  .tenant-ui .n-queue-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .tenant-ui .n-queue-summary button:first-child { grid-column: 1 / -1; }
  .tenant-ui .n-hero, .tenant-ui .n-bsc-hero { border-radius: var(--n-r-lg); padding: 22px; }
  .tenant-ui .n-bsc-hero__score b { font-size: 92px; }
  .tenant-ui .n-contrib { height: auto; flex-wrap: wrap; }
  .tenant-ui .n-contrib__seg { flex: 1 1 calc(50% - 4px); min-height: 52px; }
  .tenant-ui .n-alert { grid-template-columns: 44px minmax(0, 1fr); }
  .tenant-ui .n-alert__prio { width: 44px; height: 44px; border-radius: 12px; }
  .tenant-ui .n-alert > :last-child { grid-column: 2; justify-self: start; }
  .tenant-ui .n-student-hero { grid-template-columns: minmax(0, 1fr); }
  .tenant-ui .n-student-hero .n-avatar--lg { width: 52px; height: 52px; }
  .tenant-ui .retention-item { grid-template-columns: 5px minmax(0, 1fr); gap: 12px; padding-right: 16px; }
  .tenant-ui .retention-item > :nth-child(3), .tenant-ui .retention-item__actions { grid-column: 2; }
  .tenant-ui .retention-item__actions .btn { flex: 1 1 auto; }
  .tenant-ui :is(.admin-page-header, .crm-head, .set-head, .n-page-header) { align-items: stretch; }
  .tenant-ui .admin-page-header > label { width: 100%; }
  .tenant-ui .n-obligations > li { grid-template-columns: minmax(0, 1fr); }
  .tenant-ui .n-obligations > li > div:last-child { justify-content: flex-start; }
  .tenant-ui .crm-panel, .tenant-ui .gateway-drawer { width: 100vw; max-width: 100vw; padding: 18px 16px; }
  /* Card rows for tables that declare data-label cells. */
  .tenant-ui .n-table--stack thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  .tenant-ui .n-table--stack, .tenant-ui .n-table--stack tbody, .tenant-ui .n-table--stack tr, .tenant-ui .n-table--stack td { display: block; width: 100%; }
  .tenant-ui .admin-content .n-table--stack tbody tr { padding: 12px 16px; border-bottom: 1px solid var(--n-line); }
  .tenant-ui .admin-content .n-table--stack tbody tr:last-child { border-bottom: 0; }
  .tenant-ui .admin-content .n-table--stack tbody td { display: flex; justify-content: space-between; gap: 12px; padding: 4px 0; border: 0; text-align: right; }
  .tenant-ui .admin-content .n-table--stack tbody td::before { content: attr(data-label); flex: 0 0 auto; color: var(--n-muted); font-size: 12.5px; text-align: left; }
  .tenant-ui .admin-content .n-table--stack tbody td[data-label=""]::before { content: none; }
  .tenant-ui .admin-content .n-table--stack tbody td:first-child { justify-content: flex-start; padding-bottom: 6px; text-align: left; font-size: 15px; }
  .tenant-ui .admin-content .n-table--stack tbody td:first-child::before { content: none; }
  .tenant-ui .admin-content .n-table--stack tbody tr:hover td { background: transparent; }
  /* Legacy tables: controlled horizontal scroll inside their card. */
  .tenant-ui .admin-content :is(.base-table, .admin-table, .adm-table):not(.n-table--stack) { min-width: 640px; }
}

/* ---------- 8. Motion ---------------------------------------------------- */
/* One orchestrated entrance on executive surfaces only. */
.tenant-ui .n-enter > * { animation: n-rise 420ms var(--n-ease) both; }
.tenant-ui .n-enter > *:nth-child(2) { animation-delay: 60ms; }
.tenant-ui .n-enter > *:nth-child(3) { animation-delay: 120ms; }
.tenant-ui .n-enter > *:nth-child(4) { animation-delay: 180ms; }
.tenant-ui .n-enter > *:nth-child(n+5) { animation-delay: 220ms; }
@keyframes n-rise { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) {
  .tenant-ui *, .tenant-ui *::before, .tenant-ui *::after { animation-duration: 1ms !important; animation-delay: 0ms !important; animation-iteration-count: 1 !important; transition-duration: 1ms !important; scroll-behavior: auto !important; }
}

/* Link-shaped cards keep card typography. */
.tenant-ui .admin-content a.n-link-row { color: inherit; text-decoration: none; }
.tenant-ui .admin-content a.n-card.n-link-row { transition: border-color var(--n-fast) ease, box-shadow var(--n-fast) ease; }
.tenant-ui .admin-content a.n-card.n-link-row:hover { border-color: var(--n-ink); box-shadow: var(--n-shadow-2); }
.tenant-ui .n-hero__read p { color: #B9B3C6; }

/* AC-22X review pass 1 */
.tenant-ui .admin-content .n-metric__value { color: var(--n-ink); }
.tenant-ui .admin-content .n-card--ink .n-metric__value { color: #fff; }
.tenant-ui .n-contrib { height: 16px; gap: 3px; }
.tenant-ui .n-contrib__seg { min-width: 10px; padding: 0; border-radius: 6px; }
.tenant-ui .n-contrib-rows { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px 16px; margin: 14px 0 0; padding: 0; list-style: none; }
.tenant-ui .n-contrib-rows li { display: grid; grid-template-columns: 10px minmax(0, 1fr); column-gap: 8px; align-items: center; }
.tenant-ui .n-contrib-rows i { width: 10px; height: 10px; border-radius: 3px; background: rgba(255,255,255,.2); }
.tenant-ui .n-contrib-rows i.is-good { background: #2E7D5A; }
.tenant-ui .n-contrib-rows i.is-attention { background: var(--n-violet); }
.tenant-ui .n-contrib-rows i.is-nodata { background: repeating-linear-gradient(135deg, rgba(255,255,255,.45) 0 2px, transparent 2px 4px); outline: 1px solid rgba(255,255,255,.3); }
.tenant-ui .n-contrib-rows span { color: #fff; font-weight: 600; font-size: 13.5px; }
.tenant-ui .n-contrib-rows small { grid-column: 2; color: #9D96AE; font-size: 12px; }
.tenant-ui .n-mrows { align-content: start; }
.tenant-ui .n-persp__hl .n-mrow__meta { margin-top: 8px; }
@media (max-width: 720px) { .tenant-ui .n-contrib { height: 14px; flex-wrap: nowrap; } .tenant-ui .n-contrib__seg { flex: var(--w) 1 0; min-height: 0; } }
.tenant-ui .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
/* Closed off-canvas drawers must not cast a shadow into the page. */
.tenant-ui .crm-panel:not(.is-open) { box-shadow: none; }

/* AC-22X responsive pass */
.tenant-ui .admin-topbar-logout { white-space: nowrap; }
@media (max-width: 900px) {
  .tenant-ui .admin-sidebar:not(.is-mobile-open) { box-shadow: none; }
  /* Tables that declare data-label cells switch to card rows on tablets too. */
  .tenant-ui .n-table--stack thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  .tenant-ui .n-table--stack, .tenant-ui .n-table--stack tbody, .tenant-ui .n-table--stack tr, .tenant-ui .n-table--stack td { display: block; width: 100%; }
  .tenant-ui .admin-content .n-table--stack tbody tr { padding: 12px 16px; border-bottom: 1px solid var(--n-line); }
  .tenant-ui .admin-content .n-table--stack tbody tr:last-child { border-bottom: 0; }
  .tenant-ui .admin-content .n-table--stack tbody td { display: flex; justify-content: space-between; gap: 12px; padding: 4px 0; border: 0; text-align: right; }
  .tenant-ui .admin-content .n-table--stack tbody td::before { content: attr(data-label); flex: 0 0 auto; color: var(--n-muted); font-size: 12.5px; text-align: left; }
  .tenant-ui .admin-content .n-table--stack tbody td[data-label=""]::before { content: none; }
  .tenant-ui .admin-content .n-table--stack tbody td:first-child { justify-content: flex-start; padding-bottom: 6px; text-align: left; font-size: 15px; }
  .tenant-ui .admin-content .n-table--stack tbody tr:hover td { background: transparent; }
}
@media (max-width: 720px) {
  .tenant-ui .n-crumbs { display: none; }
  .tenant-ui .admin-topbar-title h2 { font-size: 18px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .tenant-ui .crm-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .tenant-ui .crm-metrics > :first-child:nth-last-child(odd) { grid-column: 1 / -1; }
  .tenant-ui .stat-card { min-height: 92px; padding: 14px; }
  .tenant-ui .stat-card .stat-value { font-size: 24px; }
  .tenant-ui .n-filterbar label[style*="span 2"] { grid-column: auto !important; }
}
/* Off-canvas sidebar: undo the legacy ≤768px horizontal strip (row + visible
   overflow let the logout button leak past the translated panel). */
@media (max-width: 900px) {
  .tenant-ui .admin-sidebar { display: flex; flex-direction: column; align-items: stretch; gap: 0; padding: 16px 0 14px; overflow: hidden; }
  .tenant-ui .admin-sidebar .brand { margin: 0 14px 6px; padding: 0 6px 14px; border-right: 0; border-bottom: 1px solid var(--n-line); white-space: normal; }
  .tenant-ui .admin-nav { flex-direction: column; flex: 1 1 auto; min-height: 0; overflow-y: auto; }
  .tenant-ui .admin-nav a { white-space: normal; border-bottom: 0; }
  .tenant-ui .admin-logout { flex: 0 0 auto; margin: 10px 14px 0; }
}

/* AC-22X page hierarchy: breadcrumb (location) → page title (h1) → description → actions.
   The topbar echoes the page name only as a compact, non-heading label on narrow
   screens where breadcrumbs are hidden; page-header eyebrows repeated the
   breadcrumb group and are hidden. */
.tenant-ui .n-topbar-page { display: none; margin: 0; color: var(--n-ink); font: 700 17px/1.2 var(--n-font-display); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tenant-ui .admin-content :is(.admin-page-header, .crm-head, .set-head, .n-page-header) .eyebrow { display: none; }
.tenant-ui .admin-content :is(.admin-page-header, .crm-head, .set-head, .n-page-header) { padding-top: 0; }
.tenant-ui .admin-topbar { min-height: 60px; }
@media (max-width: 720px) { .tenant-ui .n-topbar-page { display: block; } }

/* ==========================================================================
   AC-22X product readiness — cockpit widget grid, charts, IAM surfaces
   ========================================================================== */
/* Widget grid: 12 columns; spans are computed by the packer (no orphan holes). */
.tenant-ui .n-wgrid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: var(--n-s4); align-items: stretch; }
.tenant-ui .n-widget { grid-column: span var(--span-d, 12); display: grid; min-width: 0; position: relative; }
.tenant-ui .n-widget > .n-card, .tenant-ui .n-widget > .n-persp-row { height: 100%; }
.tenant-ui .n-cockpit.is-editing .n-widget { padding: 36px 6px 6px; border: 1.5px dashed var(--n-line-2); border-radius: var(--n-r-lg); background: color-mix(in srgb, var(--n-paper) 55%, transparent); cursor: grab; }
.tenant-ui .n-widget.is-dragging { opacity: .45; }
.tenant-ui .n-widget__edit { position: absolute; inset: 4px 6px auto 10px; display: flex; align-items: center; gap: 8px; min-height: 30px; font-size: 13px; }
.tenant-ui .n-widget__handle { color: var(--n-faint); font-size: 16px; }
.tenant-ui .admin-content select.n-widget__size { width: auto; min-height: 30px; padding: 2px 28px 2px 8px; font-size: 12.5px; }
.tenant-ui .n-widget-tray .btn small { margin-left: 4px; }
@media (max-width: 1100px) { .tenant-ui .n-widget { grid-column: span var(--span-t, 12); } }
@media (max-width: 720px) { .tenant-ui .n-widget { grid-column: 1 / -1; } .tenant-ui .n-widget__edit { flex-wrap: wrap; position: static; margin-bottom: 6px; } .tenant-ui .n-cockpit.is-editing .n-widget { padding-top: 6px; } }

/* Hero */
.tenant-ui .n-cockpit-hero { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); gap: clamp(20px, 3.5vw, 48px); padding: clamp(22px, 3vw, 38px); border-radius: var(--n-r-xl); }
.tenant-ui .n-cockpit-hero h2 { margin: 10px 0 0; color: #fff; font: 650 clamp(22px, 2.2vw, 30px)/1.15 var(--n-font-display); letter-spacing: -.02em; max-width: 26ch; }
.tenant-ui .n-cockpit-hero__lead { max-width: 56ch; margin: 12px 0 18px !important; color: #C8C2D4 !important; font-size: 15px; line-height: 1.55; }
.tenant-ui .n-cockpit-hero__side { display: flex; flex-wrap: wrap; align-items: center; gap: 24px; }
.tenant-ui .n-cockpit-hero__side h3 { margin: 0 0 10px; color: #fff; font: 600 14px var(--n-font-body); }
.tenant-ui .n-ring--lg { --size: 150px; }
.tenant-ui .n-ring > span { display: grid; justify-items: center; line-height: 1.05; }
.tenant-ui .n-ring b { color: var(--n-ink); font: 700 30px var(--n-font-display); }
.tenant-ui .n-ring small { color: var(--n-muted); font-size: 12px; }
.tenant-ui .n-card--ink .n-ring b { color: #fff; }
.tenant-ui .n-card--ink .n-ring small { color: #B9B3C6; }

/* Perspective tiles */
.tenant-ui .n-persp-row { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--n-s4); }
.tenant-ui .n-persp-tile { display: grid; gap: 8px; align-content: start; padding: 18px; }
.tenant-ui .n-persp-tile__name { color: var(--n-ink); font: 700 16px var(--n-font-display); }
.tenant-ui .n-persp-tile__value { margin-top: 6px; color: var(--n-ink); font: 700 36px/1 var(--n-font-display); letter-spacing: -.035em; }
.tenant-ui .n-persp-tile.is-warn { box-shadow: inset 0 3px 0 var(--n-violet), var(--n-shadow-1); }
.tenant-ui .n-persp-tile.is-none .n-persp-tile__value { color: var(--n-faint); }
@media (max-width: 1100px) { .tenant-ui .n-persp-row { grid-template-columns: repeat(2, minmax(0, 1fr)); } .tenant-ui .n-cockpit-hero { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 520px) { .tenant-ui .n-persp-row { grid-template-columns: minmax(0, 1fr); } }

/* Period comparison (paired bars, one axis per metric row, direct labels) */
.tenant-ui .n-compare { display: grid; margin: 0; padding: 0; list-style: none; }
.tenant-ui .n-compare > li { display: grid; grid-template-columns: minmax(140px, 1.1fr) minmax(120px, 2fr) auto auto auto; align-items: center; gap: 8px 16px; padding: 12px 0; border-top: 1px solid var(--n-line); }
.tenant-ui .n-compare > li:first-child { border-top: 0; }
.tenant-ui .n-compare__label strong { display: block; color: var(--n-ink); font-weight: 600; font-size: 14px; }
.tenant-ui .n-compare__label small, .tenant-ui .n-compare__values small { color: var(--n-muted); font-size: 12px; }
.tenant-ui .n-compare__bars { display: grid; gap: 3px; }
.tenant-ui .n-compare__bar { display: block; height: 10px; min-width: 2px; border-radius: 0 4px 4px 0; }
.tenant-ui .n-compare__bar.is-current, .tenant-ui .n-legend i.is-current { background: var(--n-violet); }
.tenant-ui .n-compare__bar.is-previous, .tenant-ui .n-legend i.is-previous { background: var(--n-line-2); }
.tenant-ui .n-compare__values { display: grid; justify-items: end; }
.tenant-ui .n-compare__values b { color: var(--n-ink); font: 700 18px var(--n-font-display); }
.tenant-ui .n-compare__link { font-weight: 600; font-size: 13px; }
.tenant-ui .n-legend { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 14px; margin: 10px 0 0; color: var(--n-muted); font-size: 12.5px; }
.tenant-ui .n-legend i { display: inline-block; width: 12px; height: 8px; margin-right: 6px; border-radius: 2px; }
@media (max-width: 720px) { .tenant-ui .n-compare > li { grid-template-columns: minmax(0, 1fr) auto; } .tenant-ui .n-compare__bars { grid-column: 1 / -1; order: 3; } }

/* Coverage, bars, funnel, stacked distribution */
.tenant-ui .n-coverage-big { display: flex; align-items: baseline; gap: 12px; margin-bottom: 14px; }
.tenant-ui .n-coverage-big b { color: var(--n-ink); font: 700 44px/1 var(--n-font-display); letter-spacing: -.04em; }
.tenant-ui .n-bars { display: grid; gap: 10px; margin: 0; padding: 0; list-style: none; }
.tenant-ui .n-bars > li { display: grid; grid-template-columns: minmax(96px, auto) minmax(60px, 1fr) auto; align-items: center; gap: 12px; font-size: 13.5px; color: var(--n-ink); }
.tenant-ui .n-bars small { color: var(--n-muted); font-variant-numeric: tabular-nums; }
.tenant-ui .n-funnel { display: grid; gap: 8px; margin: 0; padding: 0; list-style: none; }
.tenant-ui .n-funnel > li { display: grid; grid-template-columns: minmax(110px, 160px) minmax(0, 1fr) 44px; align-items: center; gap: 12px; }
.tenant-ui .n-funnel__name { overflow: hidden; color: var(--n-ink); font-size: 13.5px; text-overflow: ellipsis; white-space: nowrap; }
.tenant-ui .n-funnel__track { position: relative; height: 22px; border-radius: 6px; background: var(--n-canvas); overflow: hidden; }
.tenant-ui .n-funnel__track > span { position: absolute; inset: 0 auto 0 0; border-radius: 0 6px 6px 0; background: var(--n-violet); transition: width 600ms var(--n-ease); }
.tenant-ui .n-funnel b { color: var(--n-ink); font: 700 16px var(--n-font-display); text-align: right; }
.tenant-ui .n-stack-bar { display: flex; gap: 2px; height: 18px; margin: 4px 0 12px; overflow: hidden; border-radius: 6px; background: var(--n-canvas); }
.tenant-ui .n-stack-bar > span { flex-basis: 0; min-width: 6px; }
.tenant-ui :is(.n-stack-bar > span, .n-legend-rows i).is-bad { background: var(--n-bad); }
.tenant-ui :is(.n-stack-bar > span, .n-legend-rows i).is-warn { background: #C98A1F; }
.tenant-ui :is(.n-stack-bar > span, .n-legend-rows i).is-good { background: var(--n-good); }
.tenant-ui :is(.n-stack-bar > span, .n-legend-rows i).is-none { background: repeating-linear-gradient(135deg, var(--n-line-2) 0 4px, transparent 4px 7px); outline: 1px solid var(--n-line-2); outline-offset: -1px; }
.tenant-ui .n-legend-rows { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px 16px; margin: 0; padding: 0; list-style: none; }
.tenant-ui .n-legend-rows li { display: grid; grid-template-columns: 12px minmax(0, 1fr) auto; align-items: center; gap: 8px; font-size: 13.5px; color: var(--n-ink); }
.tenant-ui .n-legend-rows i { width: 12px; height: 12px; border-radius: 3px; }
.tenant-ui .n-legend-rows b { font: 700 15px var(--n-font-display); }
.tenant-ui .n-split-stat { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.tenant-ui .n-split-stat > div { display: grid; gap: 4px; padding: 14px; border-radius: var(--n-r-md); background: var(--n-paper-2); }
.tenant-ui .n-split-stat b { color: var(--n-ink); font: 700 32px/1 var(--n-font-display); }
.tenant-ui .n-split-stat b.is-bad { color: var(--n-bad); }
.tenant-ui .n-split-stat span { color: var(--n-muted); font-size: 13px; }
.tenant-ui .n-agenda-date { display: grid; min-width: 78px; }
.tenant-ui .n-agenda-date b { color: var(--n-ink); font-size: 13px; text-transform: capitalize; }
.tenant-ui .n-agenda-date small { color: var(--n-muted); font-size: 12px; }

/* Roles & permissions */
.tenant-ui .n-roles { display: grid; grid-template-columns: minmax(240px, 300px) minmax(0, 1fr); gap: var(--n-s4); align-items: start; }
.tenant-ui .n-roles__list { position: sticky; top: 80px; display: grid; gap: 2px; padding: 10px; }
.tenant-ui .n-roles__group { margin: 8px 12px 4px; color: var(--n-faint); font-size: 12.5px; font-weight: 600; }
.tenant-ui .n-roles__item { display: flex; align-items: center; justify-content: space-between; gap: 10px; width: 100%; padding: 10px 12px; border: 0; border-radius: var(--n-r-sm); background: transparent; text-align: left; cursor: pointer; }
.tenant-ui .n-roles__item strong { display: block; color: var(--n-ink); font-size: 14px; font-weight: 600; }
.tenant-ui .n-roles__item small { color: var(--n-muted); font-size: 12.5px; }
.tenant-ui .n-roles__item:hover { background: var(--n-canvas); }
.tenant-ui .n-roles__item.is-active { background: var(--n-ink); }
.tenant-ui .n-roles__item.is-active strong { color: #fff; }
.tenant-ui .n-roles__item.is-active small { color: #B9B3C6; }
.tenant-ui .n-perm-groups { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 12px; margin-top: 16px; }
.tenant-ui .n-perm-group { margin: 0; padding: 12px; border: 1px solid var(--n-line); border-radius: var(--n-r-md); }
.tenant-ui .n-perm-group legend { display: flex; align-items: center; gap: 8px; width: 100%; padding: 0 4px; color: var(--n-ink); font: 650 14px var(--n-font-display); }
.tenant-ui .n-perm-group legend small { color: var(--n-muted); font: 500 12px var(--n-font-body); }
.tenant-ui .n-perm { display: grid !important; grid-template-columns: 18px minmax(0, 1fr); align-items: start; gap: 10px; padding: 8px 6px; border-radius: 10px; font-weight: 400 !important; }
.tenant-ui .n-perm input { width: 16px; height: 16px; margin-top: 2px; }
.tenant-ui .n-perm strong { display: block; color: var(--n-ink); font-size: 13.5px; font-weight: 500; }
.tenant-ui .n-perm code { color: var(--n-faint); font-size: 11.5px; }
.tenant-ui .n-perm:not(.is-on) strong { color: var(--n-muted); }
@media (max-width: 900px) { .tenant-ui .n-roles { grid-template-columns: minmax(0, 1fr); } .tenant-ui .n-roles__list { position: static; } }

/* CRM kanban */
.tenant-ui .n-kanban { grid-auto-columns: minmax(250px, 290px); }
.tenant-ui .n-kanban__col { transition: background var(--n-fast) ease, box-shadow var(--n-fast) ease; }
.tenant-ui .n-kanban__col.is-drop-target { background: var(--n-violet-100); box-shadow: inset 0 0 0 2px var(--n-violet); }
.tenant-ui .n-kcard { cursor: grab; gap: 10px; }
.tenant-ui .n-kcard:active { cursor: grabbing; }
.tenant-ui .n-kcard.is-dragging { opacity: .4; }
.tenant-ui .n-kcard.is-stale { box-shadow: inset 3px 0 0 #C98A1F, var(--n-shadow-1); }
.tenant-ui .n-kcard > p { font-size: 13px; color: var(--n-muted); }
.tenant-ui .n-kcard__next { display: flex; gap: 6px; padding: 8px 10px; border-radius: 10px; background: var(--n-paper-2); color: var(--n-ink); font-size: 13px; }
.tenant-ui .n-kcard__next.is-empty { color: var(--n-faint); }
.tenant-ui .n-kcard__next small { color: var(--n-muted); }
.tenant-ui .n-kcard__meta { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.tenant-ui .n-kcard__owner { width: 26px; height: 26px; font-size: 11px; }
.tenant-ui .n-kcard__actions { display: grid !important; grid-template-columns: auto auto minmax(0, 1fr); align-items: center; }
.tenant-ui .admin-content .n-kcard__move select { min-height: 30px; padding: 2px 26px 2px 8px; font-size: 12.5px; }

/* Agenda calendar */
.tenant-ui .n-cal { padding: 16px; }
.tenant-ui .n-cal__toolbar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 14px; }
.tenant-ui .n-cal__title { margin: 0; font: 700 20px var(--n-font-display); }
.tenant-ui .n-cal-month { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); border-top: 1px solid var(--n-line); border-left: 1px solid var(--n-line); }
.tenant-ui .n-cal-month__dow { padding: 8px; border-right: 1px solid var(--n-line); border-bottom: 1px solid var(--n-line); background: var(--n-paper-2); color: var(--n-muted); font-size: 12.5px; font-weight: 600; text-transform: capitalize; }
.tenant-ui .n-cal-month__cell { display: grid; align-content: start; gap: 3px; min-height: 112px; padding: 6px; border-right: 1px solid var(--n-line); border-bottom: 1px solid var(--n-line); min-width: 0; }
.tenant-ui .n-cal-month__cell.is-out { background: var(--n-paper-2); }
.tenant-ui .n-cal-month__cell.is-out .n-cal-month__day { color: var(--n-faint); }
.tenant-ui .n-cal-month__day { justify-self: start; width: 28px; height: 28px; border: 0; border-radius: 50%; background: transparent; color: var(--n-ink); font: 600 13px var(--n-font-body); cursor: pointer; }
.tenant-ui .n-cal-month__day:hover { background: var(--n-canvas); }
.tenant-ui .is-today > .n-cal-month__day { background: var(--n-ink); color: #fff; }
.tenant-ui .n-cal-event { display: block; width: 100%; min-width: 0; padding: 3px 6px; overflow: hidden; border: 0; border-left: 3px solid currentColor; border-radius: 6px; background: var(--n-info-bg); color: var(--n-info); font: 500 12px/1.3 var(--n-font-body); text-align: left; text-overflow: ellipsis; white-space: nowrap; cursor: pointer; }
.tenant-ui .n-cal-event span { font-weight: 700; }
.tenant-ui .n-cal-event.is-good { background: var(--n-good-bg); color: var(--n-good); }
.tenant-ui .n-cal-event.is-warn { background: var(--n-warn-bg); color: var(--n-warn); }
.tenant-ui .n-cal-event.is-bad { background: var(--n-bad-bg); color: var(--n-bad); text-decoration: line-through; }
.tenant-ui .n-cal-event.is-none { background: var(--n-none-bg); color: var(--n-none); }
.tenant-ui .n-cal-event.is-info { background: var(--n-violet-100); color: var(--n-violet-700); }
.tenant-ui .n-cal-more { justify-self: start; border: 0; background: transparent; color: var(--n-violet-700); font-size: 12px; font-weight: 600; cursor: pointer; }
.tenant-ui .n-cal-time { overflow-x: auto; }
.tenant-ui .n-cal-time__head, .tenant-ui .n-cal-time__body { display: grid; grid-template-columns: 56px repeat(7, minmax(110px, 1fr)); min-width: 820px; }
.tenant-ui .n-cal-time.is-day .n-cal-time__head, .tenant-ui .n-cal-time.is-day .n-cal-time__body { grid-template-columns: 56px minmax(0, 1fr); min-width: 0; }
.tenant-ui .n-cal-time__head span { padding: 8px; border-bottom: 1px solid var(--n-line); color: var(--n-muted); font-size: 13px; font-weight: 600; text-align: center; text-transform: capitalize; }
.tenant-ui .n-cal-time__head span.is-today { color: var(--n-violet-700); }
.tenant-ui .n-cal-time__hours span { display: block; padding-right: 8px; color: var(--n-faint); font-size: 11.5px; text-align: right; transform: translateY(-7px); }
.tenant-ui .n-cal-time__col { position: relative; border-left: 1px solid var(--n-line); background-image: repeating-linear-gradient(to bottom, var(--n-line) 0 1px, transparent 1px 52px); }
.tenant-ui .n-cal-time__col.is-today { background-color: color-mix(in srgb, var(--n-violet-100) 45%, transparent); }
.tenant-ui .n-cal-event--block { position: absolute; left: 4px; right: 4px; display: grid; align-content: start; gap: 1px; white-space: normal; }
.tenant-ui .n-cal-event--block strong { font-size: 12px; }
.tenant-ui .n-cal-event--block span { font-weight: 400; }
@media (max-width: 720px) {
  .tenant-ui .n-cal-month { grid-template-columns: repeat(7, minmax(0, 1fr)); }
  .tenant-ui .n-cal-month__cell { min-height: 64px; padding: 3px; }
  .tenant-ui .n-cal-event { padding: 0; height: 6px; font-size: 0; border-left: 0; border-radius: 3px; background: currentColor; }
  .tenant-ui .n-cal__toolbar { justify-content: center; }
}

/* Edit toolbar is a normal first row of the widget (never overlaid by the card). */
.tenant-ui .n-cockpit.is-editing .n-widget { grid-template-rows: auto 1fr; padding: 6px; }
.tenant-ui .n-widget__edit { position: static; z-index: 2; flex-wrap: wrap; margin: 0 4px 6px; }
/* Initials rendered by CSS so a cell's text content stays the person's name. */
.tenant-ui .n-avatar[data-initials]::before { content: attr(data-initials); }
/* Kanban: the accessible "Mover a" control gets its own full-width row. */
.tenant-ui .n-kcard__actions { grid-template-columns: auto auto 1fr; }
.tenant-ui .n-kcard__move { grid-column: 1 / -1; display: block; }
.tenant-ui .admin-content .n-kcard__move select { width: 100%; }

/* ---------- Dashboard rebalance (human QA) ---------------------------------
   Executive dashboard, not a landing hero: Business Health is a compact KPI
   card beside alerts, perspectives are modules, contribution is small bars. */
.tenant-ui .admin-topbar { background: var(--n-canvas); }
.tenant-ui .n-widget { container-type: inline-size; }

.tenant-ui .n-cockpit-hero { grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); align-items: stretch; gap: 18px 24px; padding: 22px 24px; border-radius: var(--n-r-lg); }
.tenant-ui .n-cockpit-hero__main { display: grid; align-content: space-between; gap: 14px; min-width: 0; }
.tenant-ui .n-cockpit-hero .n-bsc-hero__status { margin: 0; }
.tenant-ui .n-cockpit-hero__kpi { display: flex; align-items: center; gap: 18px; min-width: 0; }
.tenant-ui .n-cockpit-hero__read { min-width: 0; }
.tenant-ui .n-cockpit-hero .n-bsc-hero__score { flex: 0 0 auto; align-items: baseline; gap: 4px; }
.tenant-ui .n-cockpit-hero .n-bsc-hero__score b { font-size: clamp(48px, 4.2vw, 64px); line-height: .9; letter-spacing: -.045em; }
.tenant-ui .n-cockpit-hero .n-bsc-hero__score span { padding: 0; font-size: 15px; }
.tenant-ui .n-cockpit-hero h2 { margin: 0; max-width: 28ch; font-size: clamp(17px, 1.35vw, 20px); line-height: 1.2; }
.tenant-ui .n-cockpit-hero__lead { margin: 6px 0 0 !important; font-size: 13.5px; line-height: 1.45; }
.tenant-ui .n-cockpit-hero .n-actions .btn { min-height: 36px; padding: 0 14px; font-size: 13.5px; }
.tenant-ui .n-cockpit-hero__side { display: grid; align-content: start; align-items: initial; flex-wrap: initial; gap: 10px; min-width: 0; padding: 14px 16px; border: 1px solid rgba(255, 255, 255, .1); border-radius: var(--n-r-md); background: rgba(255, 255, 255, .04); }
.tenant-ui .n-cockpit-hero__coverage { display: flex; align-items: center; gap: 12px; padding-bottom: 10px; border-bottom: 1px solid rgba(255, 255, 255, .1); }
.tenant-ui .n-cockpit-hero__coverage strong { display: block; color: #fff; font: 600 14px var(--n-font-body); }
.tenant-ui .n-cockpit-hero__coverage small { color: #B9B3C6; font-size: 12.5px; }
.tenant-ui .n-cockpit-hero .n-cockpit-hero__label { margin: 0; color: #B9B3C6; font: 600 12.5px var(--n-font-body); letter-spacing: 0; }
.tenant-ui .n-ring--sm { --size: 60px; }
.tenant-ui .n-ring--sm::before { inset: 6px; }
.tenant-ui .n-ring--sm b { font-size: 14.5px; }
.tenant-ui .n-contrib-bars { display: grid; gap: 8px; margin: 0; padding: 0; list-style: none; }
.tenant-ui .n-contrib-bars li { display: grid; grid-template-columns: minmax(64px, 88px) minmax(40px, 1fr) auto; align-items: center; gap: 10px; }
.tenant-ui .n-contrib-bars__name { overflow: hidden; color: #fff; font-size: 13px; font-weight: 600; white-space: nowrap; text-overflow: ellipsis; }
.tenant-ui .n-contrib-bars__track { position: relative; height: 8px; overflow: hidden; border-radius: 4px; background: rgba(255, 255, 255, .1); }
.tenant-ui .n-contrib-bars__track i { position: absolute; inset: 0 auto 0 0; width: calc(var(--w, 0) * 1%); border-radius: 4px; background: var(--n-violet-on-ink); }
.tenant-ui .n-contrib-bars__track i.is-good { background: #3F9B72; }
.tenant-ui .n-contrib-bars__track i.is-none { background: repeating-linear-gradient(135deg, rgba(255, 255, 255, .5) 0 2px, transparent 2px 5px); }
.tenant-ui .n-contrib-bars small { color: #B9B3C6; font-size: 12px; white-space: nowrap; }
@container (max-width: 700px) {
  .tenant-ui .n-cockpit-hero { gap: 16px; padding: 20px; }
  .tenant-ui .n-contrib-bars__status { display: none; }
}
@container (max-width: 500px) {
  .tenant-ui .n-cockpit-hero { grid-template-columns: minmax(0, 1fr); }
  .tenant-ui .n-contrib-bars__status { display: inline; }
}
@container (max-width: 420px) {
  .tenant-ui .n-cockpit-hero { padding: 18px; }
  .tenant-ui .n-cockpit-hero__kpi { flex-wrap: wrap; gap: 8px 14px; }
  .tenant-ui .n-contrib-bars li { grid-template-columns: minmax(0, 1fr) auto; }
  .tenant-ui .n-contrib-bars__track { grid-column: 1 / -1; grid-row: 2; }
}

.tenant-ui .n-persp-tile { grid-template-rows: auto auto auto 1fr; gap: 10px; padding: 16px; }
.tenant-ui .n-persp-tile .n-persp__head { flex-wrap: wrap; row-gap: 6px; }
.tenant-ui .n-persp-tile__id { display: flex; align-items: center; gap: 8px; min-width: 0; }
.tenant-ui .n-persp-tile .n-persp__glyph { width: 28px; height: 28px; border-radius: 9px; font-size: 13px; }
.tenant-ui .n-persp-tile__name { font-size: 15px; }
.tenant-ui .n-persp-tile .n-pill { white-space: nowrap; }
.tenant-ui .n-persp-tile__value { margin-top: 0; font-size: 28px; }
.tenant-ui .n-persp-tile__foot { display: grid; align-self: end; gap: 6px; padding-top: 10px; border-top: 1px solid var(--n-line); }
.tenant-ui .n-persp-tile__meta { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 2px 8px; color: var(--n-muted); font-size: 12px; }
.tenant-ui .n-persp-tile__cta { color: var(--n-violet-700); font-size: 13px; font-weight: 600; }
.tenant-ui .n-persp-tile:hover .n-persp-tile__cta { text-decoration: underline; }
@container (max-width: 400px) {
  .tenant-ui .n-alert { grid-template-columns: 48px minmax(0, 1fr); gap: 8px 14px; }
  .tenant-ui .n-alert__prio { width: 48px; height: 48px; border-radius: 13px; }
  .tenant-ui .n-alert > :last-child { grid-column: 2; justify-self: start; }
}


/* EG02-STAB-03 · Sitio web: affordances y estados explícitos */
.cms-page-card--action { cursor: pointer; text-align: left; transition: border-color .15s ease, box-shadow .15s ease, transform .15s ease; }
.cms-page-card--action:hover { border-color: var(--n-accent, #6C4BFF); box-shadow: 0 6px 20px rgba(23, 20, 31, .08); transform: translateY(-1px); }
.cms-page-card--action:focus-visible { outline: 3px solid var(--n-accent, #6C4BFF); outline-offset: 2px; }
.cms-page-card__cta { display: inline-block; margin-top: 8px; font-style: normal; font-weight: 600; color: var(--n-accent, #6C4BFF); }
.cms-form-preview { margin: 14px 0; padding: 12px 14px; border: 1px dashed var(--color-border, #d8d2c4); border-radius: 10px; display: grid; gap: 8px; }
.cms-form-preview legend { font-weight: 600; padding: 0 6px; }
.cms-banner-preview { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin: 10px 0; padding: 12px 14px; border-radius: 10px; background: var(--n-ink, #17141F); color: #fff; }
.cms-banner-preview small { flex-basis: 100%; opacity: .75; }
.cms-banner-preview__cta { padding: 4px 10px; border-radius: 999px; background: #fff; color: var(--n-ink, #17141F); font-weight: 600; }
.cms-media-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 150px), 1fr)); gap: 12px; margin: 12px 0; }
.cms-media-grid figure { margin: 0; border: 1px solid var(--color-border, #d8d2c4); border-radius: 10px; overflow: hidden; background: #fff; }
.cms-media-grid img, .cms-media-file { display: grid; place-items: center; width: 100%; aspect-ratio: 4 / 3; object-fit: cover; background: #f3efe7; font-weight: 600; text-transform: uppercase; }
.cms-media-grid figcaption { padding: 6px 8px; font-size: 12px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.consent-history-note { margin: 0 0 14px; max-width: 80ch; }


/* EG02-UX-FUNC-01 · CRM pipeline as a real horizontal kanban (ported from the AC-21B workspace layout,
   which only existed locally in admin-ac21b.css and never reached the release). */
.tenant-ui .crm-workspace { display: grid; gap: 1.25rem; }
.tenant-ui .crm-workspace__summary { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; }
.tenant-ui .crm-workspace__summary article { display: grid; gap: .25rem; padding: 1rem 1.15rem; border: 1px solid var(--n-line, #e3e8ef); border-radius: 16px; background: #fff; }
.tenant-ui .crm-workspace__summary strong { font-size: 1.75rem; color: var(--n-ink, #17141F); }
.tenant-ui .crm-workspace__summary span, .tenant-ui .crm-board__column header span, .tenant-ui .crm-board__empty { color: #667085; font-size: .84rem; }
.tenant-ui .crm-board { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(270px, 300px); gap: 1rem; overflow-x: auto; overscroll-behavior-x: contain; padding: 2px 2px .8rem; align-items: start; scroll-snap-type: x proximity; }
.tenant-ui .crm-board__column { display: flex; flex-direction: column; min-height: 320px; max-height: calc(100vh - 260px); padding: .85rem; background: #f6f4ef; border: 1px solid var(--n-line, #e4e7ec); border-radius: 16px; scroll-snap-align: start; }
.tenant-ui .crm-board__column header { display: flex; justify-content: space-between; align-items: baseline; padding: .15rem .2rem .75rem; }
.tenant-ui .crm-board__column header div { display: flex; gap: .5rem; align-items: baseline; flex-wrap: wrap; }
.tenant-ui .crm-board__column h2 { margin: 0; font-size: .95rem; }
.tenant-ui .crm-board__cards { display: grid; gap: .65rem; overflow-y: auto; padding-right: 2px; }
.tenant-ui .crm-opportunity { display: grid; gap: .55rem; padding: .8rem; border: 1px solid var(--n-line, #e4e7ec); border-radius: 12px; background: #fff; box-shadow: 0 1px 2px rgba(16, 24, 40, .05); cursor: grab; transition: box-shadow .15s ease, border-color .15s ease, transform .15s ease; }
.tenant-ui .crm-opportunity:hover { border-color: var(--n-violet, #6C4BFF); box-shadow: 0 6px 18px rgba(23, 20, 31, .08); }
.tenant-ui .crm-opportunity:focus-within { border-color: var(--n-violet, #6C4BFF); box-shadow: 0 0 0 3px color-mix(in srgb, var(--n-violet, #6C4BFF) 22%, transparent); }
.tenant-ui .crm-opportunity.is-dragging { opacity: .55; cursor: grabbing; transform: rotate(1deg); }
.tenant-ui .crm-opportunity__head { display: flex; gap: .5rem; justify-content: space-between; align-items: flex-start; }
.tenant-ui .crm-opportunity__head strong { font-size: .92rem; line-height: 1.3; }
.tenant-ui .crm-opportunity p { margin: 0; color: #475467; font-size: .85rem; }
.tenant-ui .crm-opportunity__actions { display: flex; gap: .45rem; flex-wrap: wrap; align-items: center; }
.tenant-ui .crm-opportunity__actions .crm-view { cursor: pointer; }
.tenant-ui .crm-opportunity__actions select { max-width: 100%; }
.tenant-ui .crm-board__empty { padding: .8rem .2rem; margin: 0; }
.tenant-ui .crm-board__column.is-drop-target { background: var(--n-violet-100, #efeaff); box-shadow: inset 0 0 0 2px var(--n-violet, #6C4BFF); }
.tenant-ui .crm-pipeline-setup { display: flex; gap: 1rem; align-items: center; justify-content: space-between; flex-wrap: wrap; padding: 1rem 1.15rem; }
@media (max-width: 760px) {
  .tenant-ui .crm-workspace__summary { grid-template-columns: 1fr; }
  .tenant-ui .crm-board { grid-auto-columns: minmax(82vw, 1fr); }
  .tenant-ui .crm-board__column { max-height: none; }
}


/* EG02-UX-FUNC-01 · Servicios agendables: disponibilidad visual en lugar de JSON */
.mt-availability { border: 1px solid var(--n-line, #e4e7ec); border-radius: 12px; padding: 12px 14px; margin: 10px 0; display: grid; gap: 8px; }
.mt-availability legend { font-weight: 700; padding: 0 6px; }
.mt-slots { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.mt-slot { display: inline-flex; align-items: center; gap: 4px; border: 1px solid var(--n-line, #d0d5dd); border-radius: 999px; padding: 2px 4px 2px 10px; background: #fff; }
.mt-slot input { border: 0; background: transparent; font: inherit; width: 6.2em; }
.mt-slot button { border: 0; background: transparent; cursor: pointer; font-size: 1.05rem; line-height: 1; padding: 2px 6px; border-radius: 999px; }
.mt-slot button:hover, .mt-slot button:focus-visible { background: #f2f4f7; }
.mt-weekdays { display: grid; gap: 8px; }
.mt-weekday { display: grid; grid-template-columns: 7.5em 1fr; gap: 8px; align-items: center; }
.mt-requested-fields { margin: 8px 0 12px; padding: 10px 12px; border-radius: 10px; background: #f6f4ef; }
@media (max-width: 560px) { .mt-weekday { grid-template-columns: 1fr; } }


/* EG02-UX-FUNC-01 · Program detail groups */
.program-sessions-head { display: flex; gap: 12px; align-items: end; justify-content: space-between; flex-wrap: wrap; margin-top: 14px; }
.program-group { margin-top: 12px; }
.program-group h5 { margin: 0 0 6px; font-size: .92rem; }


/* EG02-UX-FUNC-01 · Gestión de actividades */
.activity-workflow { margin-top: 16px; padding: 14px; border: 1px solid var(--n-line, #e4e7ec); border-radius: 14px; background: #fff; display: grid; gap: 14px; }
.activity-workflow__head { display: flex; justify-content: space-between; gap: 10px; align-items: start; }
.activity-workflow__head h5 { margin: 0; font-size: 1rem; }
.activity-workflow__block h6 { margin: 0 0 8px; font-size: .9rem; }
.activity-workflow__form { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 10px; align-items: end; margin-top: 8px; }
.activity-workflow__notify { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; margin-bottom: 8px; }
.activity-submission { padding: 10px 0; border-top: 1px solid var(--n-line, #e4e7ec); }


/* EG02-UX-FUNC-01 · Aula unificada dentro del shell admin: tenant-admin.css carga después de styles.css y sus
   reglas .tenant-ui .admin-content h2/p ganaban por orden. Este bloque tiene más especificidad. */
.tenant-ui .admin-content .unified-classroom { color: #e8f0fa; }
.tenant-ui .admin-content .unified-classroom :is(h1, h2, h3, h4, h5, h6, strong, legend) { color: #fff; }
.tenant-ui .admin-content .unified-classroom :is(p, span, small, label, dt, dd, li) { color: rgba(232, 240, 250, .86); }
.tenant-ui .admin-content .unified-classroom .eyebrow { color: #9cc3ff; }
.tenant-ui .admin-content .unified-classroom :is(.btn-secondary, .btn-secondary span) { color: #0b1d3a; }
.tenant-ui .admin-content .unified-classroom :is(.btn-primary, .btn-primary span) { color: #fff; }
.tenant-ui .admin-content .unified-classroom :is(input, select, textarea) { color: #0b1d3a; background: #fff; }


/* EG02-UX-FUNC-01 · Aula: los paneles claros (configuración y recursos) llevan texto oscuro. */
.tenant-ui .admin-content .unified-classroom :is(.classroom-setup, .classroom-resources),
.unified-classroom :is(.classroom-setup, .classroom-resources) { color: #1d2939; }
.tenant-ui .admin-content .unified-classroom :is(.classroom-setup, .classroom-resources) :is(h1, h2, h3, h4, h5, h6, strong, legend),
.unified-classroom :is(.classroom-setup, .classroom-resources) :is(h1, h2, h3, h4, h5, h6, strong, legend) { color: #101828; }
.tenant-ui .admin-content .unified-classroom :is(.classroom-setup, .classroom-resources) :is(p, span, small, label, dt, dd, li),
.unified-classroom :is(.classroom-setup, .classroom-resources) :is(p, span, small, label, dt, dd, li) { color: #475467; }
.tenant-ui .admin-content .unified-classroom .classroom-resources .btn-primary, .tenant-ui .admin-content .unified-classroom .classroom-resources .btn-primary span { color: #fff; }
.tenant-ui .admin-content .unified-classroom .classroom-resource, .unified-classroom .classroom-resource { border-bottom-color: #eaecf0; }


/* EG02-UX-FUNC-01 · Aula: control del facilitador para la presentación en vivo */
.unified-classroom .classroom-live-presenter { display: grid; gap: 10px; align-content: center; justify-items: center; text-align: center; min-height: 100%; padding: 24px; }
.unified-classroom .classroom-live-presenter__actions { display: flex; gap: 10px; flex-wrap: wrap; justify-content: center; }
.tenant-ui .admin-content .unified-classroom .classroom-live-presenter a.btn-primary { color: #fff; }


/* EG02-UX-FUNC-01 · Aula: salir vs finalizar */
.unified-classroom .classroom-finish { background: #b42318; border: 1px solid #b42318; color: #fff; }
.unified-classroom .classroom-finish:hover:not(:disabled) { background: #912018; }
.unified-classroom .classroom-finish:focus-visible { outline: 3px solid #fda29b; outline-offset: 2px; }
.unified-classroom .classroom-finish:disabled { opacity: .6; cursor: progress; }
.tenant-ui .admin-content .unified-classroom .classroom-finish { color: #fff; }
.unified-classroom .classroom-ended { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; padding: 12px 14px; border-radius: 12px; background: rgba(255, 255, 255, .08); }
.unified-classroom .classroom-confirm { position: fixed; inset: 0; z-index: 90; display: grid; place-items: center; padding: 16px; background: rgba(7, 20, 38, .72); }
.unified-classroom .classroom-confirm__card { width: min(460px, 100%); padding: 22px; border-radius: 16px; background: #fff; color: #101828; box-shadow: 0 20px 50px rgba(0, 0, 0, .35); }
.tenant-ui .admin-content .unified-classroom .classroom-confirm__card :is(h2, p) { color: #101828; }
.unified-classroom .classroom-confirm__card :is(h2, p) { color: #101828; }
.unified-classroom .classroom-confirm__actions { display: flex; gap: 10px; justify-content: flex-end; flex-wrap: wrap; margin-top: 16px; }

/* EG02 preflight fix: academic assignment on the internal user card and "Mis clases" for teachers. */
.tenant-ui .users-assignments { display: block; margin-top: 4px; }
.tenant-ui .users-academic h3 { margin: 0 0 4px; font-size: 1rem; }
.tenant-ui .users-academic-list { list-style: none; margin: 12px 0; padding: 0; display: grid; gap: 10px; }
.tenant-ui .users-academic-list li,
.tenant-ui .teaching-sessions li { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px; padding: 12px 14px; border: 1px solid var(--n-line, #e4ded3); border-radius: 12px; background: var(--n-surface, #fff); }
.tenant-ui .users-academic-list li > div,
.tenant-ui .teaching-sessions li > div { display: grid; gap: 2px; min-width: 0; }
.tenant-ui .users-academic-add { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 10px; margin-top: 8px; }
.tenant-ui .users-academic-add label { display: grid; gap: 4px; flex: 1 1 220px; }
.tenant-ui .teaching-cohort { padding: 20px; }
.tenant-ui .teaching-cohort__head h2 { margin: 0; }
.tenant-ui .teaching-group { margin: 20px 0 8px; font-size: 1rem; }
.tenant-ui .teaching-sessions { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.tenant-ui .teaching-empty { padding: 24px; }

/* ---------- EG02 UX master: toasts, breadcrumbs, CRM pipeline ---------------------------------------- */
.n-toaster { position: fixed; right: 20px; bottom: 20px; z-index: 1200; display: grid; gap: 8px; width: min(380px, calc(100vw - 32px)); pointer-events: none; }
.n-toast { display: flex; align-items: flex-start; gap: 10px; padding: 10px 12px 10px 14px; border-radius: 12px; background: #17141F; color: #fff; font: 500 13.5px/1.4 var(--n-font-body, system-ui); box-shadow: 0 12px 30px rgba(23, 20, 31, .28); pointer-events: auto; animation: n-toast-in .18s ease-out; }
.n-toast.is-error { background: #7A1F24; }
.n-toast span { flex: 1; }
.n-toast__close { border: 0; background: transparent; color: inherit; font-size: 18px; line-height: 1; cursor: pointer; opacity: .75; }
.n-toast__close:hover, .n-toast__close:focus-visible { opacity: 1; }
@keyframes n-toast-in { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { .n-toast { animation: none; } }
.tenant-ui .n-crumbs a { border-radius: 6px; padding: 1px 3px; margin: 0 -3px; }
.tenant-ui .n-crumbs a:focus-visible { outline: 2px solid var(--n-violet); outline-offset: 1px; }

.tenant-ui .crm-hero { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px 20px; margin: 0; padding: 2px 0 0; }
.tenant-ui .crm-hero__title { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 14px; min-width: 0; }
.tenant-ui .crm-hero h1 { margin: 0; font-size: clamp(22px, 2.2vw, 28px); line-height: 1.15; }
.tenant-ui .crm-hero__hint { margin: 0; max-width: 60ch; color: var(--n-muted); font-size: 13px; line-height: 1.4; }
.tenant-ui .crm-workspace { gap: 14px; }
.tenant-ui .crm-strip { display: flex; flex-wrap: wrap; gap: 8px 20px; margin: 0; padding: 0; list-style: none; }
.tenant-ui .crm-strip li { display: inline-flex; align-items: baseline; gap: 6px; color: var(--n-muted); font-size: 13px; }
.tenant-ui .crm-strip strong { color: var(--n-ink); font: 700 18px var(--n-font-display); }
.tenant-ui .crm-board__column header { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 2px 4px 10px; border-radius: 8px; }
.tenant-ui .crm-board__column header.is-draggable { cursor: grab; }
.tenant-ui .crm-board__column header.is-draggable:hover { background: color-mix(in srgb, var(--n-ink) 5%, transparent); }
.tenant-ui .n-kanban__count { min-width: 22px; padding: 1px 7px; border-radius: 999px; background: var(--n-paper); color: var(--n-muted); font-size: 12px; font-weight: 600; text-align: center; }
.tenant-ui .n-kanban__col.is-stage-target { box-shadow: inset 3px 0 0 var(--n-violet); }
.tenant-ui .n-kanban__col.is-stage-dragging { opacity: .55; }
.tenant-ui .crm-opportunity.n-kcard { gap: 6px; padding: 10px 12px; cursor: pointer; }
.tenant-ui .n-kcard:focus-visible { outline: 2px solid var(--n-violet); outline-offset: 2px; }
.tenant-ui .n-kcard.is-pending { opacity: .8; box-shadow: inset 3px 0 0 var(--n-violet), var(--n-shadow-1); }
.tenant-ui .n-kcard__top { display: flex; align-items: flex-start; justify-content: space-between; gap: 6px; }
.tenant-ui .n-kcard__top strong { color: var(--n-ink); font-size: 14px; font-weight: 650; line-height: 1.3; }
.tenant-ui .crm-opportunity.n-kcard > p { margin: 0; font-size: 12.5px; color: var(--n-muted); }
.tenant-ui .crm-opportunity.n-kcard > .n-kcard__next { padding: 5px 8px; border-radius: 8px; background: var(--n-paper-2); color: var(--n-ink); font-size: 12.5px; }
.tenant-ui .n-kcard__menu { position: relative; flex: none; }
.tenant-ui .n-kcard__menu-btn { width: 28px; height: 28px; border: 0; border-radius: 8px; background: transparent; color: var(--n-muted); font-size: 18px; line-height: 1; cursor: pointer; }
.tenant-ui .n-kcard__menu-btn:hover, .tenant-ui .n-kcard__menu-btn:focus-visible { background: var(--n-canvas); color: var(--n-ink); }
.tenant-ui .n-kcard__menu-pop { position: absolute; top: 30px; right: 0; z-index: 20; display: grid; min-width: 200px; padding: 6px; border: 1px solid var(--n-line); border-radius: 12px; background: var(--n-paper); box-shadow: var(--n-shadow-2); }
.tenant-ui .n-kcard__menu-pop button { padding: 7px 10px; border: 0; border-radius: 8px; background: transparent; color: var(--n-ink); font-size: 13px; text-align: left; cursor: pointer; }
.tenant-ui .n-kcard__menu-pop button:hover:not(:disabled), .tenant-ui .n-kcard__menu-pop button:focus-visible { background: var(--n-violet-100); }
.tenant-ui .n-kcard__menu-pop button:disabled { color: var(--n-faint); cursor: default; }
.tenant-ui .n-kcard__menu-pop hr { margin: 4px 0; border: 0; border-top: 1px solid var(--n-line); }
.tenant-ui .n-kcard__menu-label { padding: 4px 10px; color: var(--n-faint); font-size: 11.5px; font-weight: 600; }
.tenant-ui .crm-stages { width: min(640px, 100vw); }
.tenant-ui .crm-stages__new { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 8px; padding: 14px 0; }
.tenant-ui .crm-stages__new label { display: grid; flex: 1 1 260px; gap: 4px; font-size: 13px; }
.tenant-ui .crm-stages__list { display: grid; gap: 6px; margin: 0; padding: 0; list-style: none; }
.tenant-ui .crm-stages__list li { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 4px 10px; padding: 8px 10px; border: 1px solid var(--n-line); border-radius: 10px; background: var(--n-paper); }
.tenant-ui .crm-stages__list li .crm-cell-sub { grid-column: 2; }
.tenant-ui .crm-stages__list li .n-actions { grid-column: 3; grid-row: 1 / span 2; }
.tenant-ui .crm-stages__list li.is-archived { background: var(--n-paper-2); }
.tenant-ui .crm-stages__list li.is-target { box-shadow: inset 0 3px 0 var(--n-violet); }
.tenant-ui .crm-stages__grip { grid-row: 1 / span 2; color: var(--n-faint); cursor: grab; letter-spacing: -2px; }
.tenant-ui .crm-stages__name { min-width: 0; padding: 4px 6px; border: 1px solid transparent; border-radius: 6px; background: transparent; color: var(--n-ink); font: 600 14px var(--n-font-body); }
.tenant-ui .crm-stages__name:hover, .tenant-ui .crm-stages__name:focus { border-color: var(--n-line-2); background: #fff; }
.tenant-ui .crm-stages__confirm { display: grid; gap: 10px; margin-top: 14px; padding: 14px; border: 1px solid #E8B4B6; border-radius: 12px; background: #FDF3F3; }
.tenant-ui .crm-stages__confirm h3 { margin: 0; font-size: 15px; }
.tenant-ui .crm-stages__confirm p { margin: 0; }
.tenant-ui .crm-stages__confirm label { display: grid; gap: 4px; font-size: 13px; }
@media (max-width: 640px) {
  .tenant-ui .crm-stages__list li { grid-template-columns: auto minmax(0, 1fr); }
  .tenant-ui .crm-stages__list li .n-actions { grid-column: 1 / -1; grid-row: auto; }
}

/* ---------- EG02 UX master: Servicios agendables ---------------------------------------------------- */
.tenant-ui .mt-page { display: grid; gap: 14px; }
.tenant-ui .mt-settings { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 10px 16px; padding: 12px 14px; border: 1px solid var(--n-line); border-radius: 14px; background: var(--n-paper); }
.tenant-ui .mt-settings label { display: grid; gap: 4px; min-width: 220px; flex: 1 1 240px; font-size: 12.5px; color: var(--n-muted); }
.tenant-ui .mt-settings__gateway { flex: 1 1 260px; font-size: 13px; }
.tenant-ui .mt-settings__gateway.is-good { color: var(--n-good); }
.tenant-ui .mt-settings__gateway.is-warn { color: var(--n-warn); }
.tenant-ui .mt-page .mt-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 12px; }
.tenant-ui .mt-card { display: grid; align-content: start; gap: 6px; padding: 14px; border: 1px solid var(--n-line); border-radius: 14px; background: var(--n-paper); cursor: pointer; transition: border-color .12s ease, box-shadow .12s ease; }
.tenant-ui .mt-card:hover { border-color: var(--n-line-2); box-shadow: var(--n-shadow-2); }
.tenant-ui .mt-card:focus-visible { outline: 2px solid var(--n-violet); outline-offset: 2px; }
.tenant-ui .mt-card__top { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; }
.tenant-ui .mt-card__top h3 { margin: 0; font-size: 15px; line-height: 1.3; }
.tenant-ui .mt-card__price { margin: 0; color: var(--n-ink); font-weight: 650; }
.tenant-ui .mt-card__meta { display: flex; flex-wrap: wrap; gap: 4px 12px; margin: 0; padding: 0; list-style: none; color: var(--n-muted); font-size: 12.5px; }
.tenant-ui .mt-card__warn, .tenant-ui .mt-warn { margin: 0; color: #93580A; font-size: 12.5px; }
.tenant-ui .mt-editor { display: grid; grid-template-rows: auto minmax(0, 1fr) auto; width: min(1100px, 94vw); max-height: 92vh; margin: 4vh auto; border-radius: 18px; background: var(--n-paper); box-shadow: 0 24px 60px rgba(23, 20, 31, .3); overflow: hidden; }
.tenant-ui .mt-editor__head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; padding: 18px 22px 12px; border-bottom: 1px solid var(--n-line); }
.tenant-ui .mt-editor__head h2 { margin: 0; font-size: 20px; }
.tenant-ui .mt-editor__body { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 28px; padding: 6px 22px 18px; overflow: auto; }
.tenant-ui .mt-editor__foot { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px; padding: 12px 22px; border-top: 1px solid var(--n-line); background: var(--n-paper-2); }
.tenant-ui .mt-editor__foot .n-actions { margin-left: auto; }
.tenant-ui .mt-block { display: grid; align-content: start; gap: 10px; padding: 14px 0; border-bottom: 1px solid var(--n-line); }
.tenant-ui .mt-block--wide { grid-column: 1 / -1; }
.tenant-ui .mt-block h3 { margin: 0; font-size: 15px; }
.tenant-ui .mt-cols { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 10px 14px; }
.tenant-ui .mt-cols .field, .tenant-ui .mt-cols .base-input { margin: 0; }
.tenant-ui .mt-slug { display: flex; align-items: center; border: 1px solid var(--n-line-2); border-radius: 10px; overflow: hidden; }
.tenant-ui .mt-slug span { padding: 0 8px; color: var(--n-muted); font-size: 13px; background: var(--n-paper-2); align-self: stretch; display: flex; align-items: center; }
.tenant-ui .mt-slug input { flex: 1; min-width: 0; border: 0; }
.tenant-ui .mt-options { display: grid; gap: 8px; }
.tenant-ui .mt-options--inline { grid-template-columns: repeat(auto-fit, minmax(200px, max-content)); }
.tenant-ui .mt-option { display: flex; align-items: flex-start; gap: 10px; padding: 10px 12px; border: 1px solid var(--n-line); border-radius: 12px; cursor: pointer; }
.tenant-ui .mt-option.is-active { border-color: var(--n-violet); background: var(--n-violet-100); }
.tenant-ui .mt-option.is-disabled { opacity: .7; }
.tenant-ui .mt-option span { display: grid; gap: 2px; }
.tenant-ui .mt-option em { margin-left: 6px; padding: 1px 7px; border-radius: 999px; background: var(--n-good-bg); color: var(--n-good); font-size: 11.5px; font-style: normal; font-weight: 600; }
.tenant-ui .mt-option small { color: var(--n-muted); font-size: 12.5px; }
.tenant-ui .mt-week { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 10px; }
.tenant-ui .mt-day { padding: 10px 12px; border: 1px solid var(--n-line); border-radius: 12px; background: var(--n-paper-2); }
.tenant-ui .mt-day summary { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; margin-bottom: 6px; cursor: pointer; list-style: none; }
.tenant-ui .mt-day summary::-webkit-details-marker { display: none; }
.tenant-ui .mt-range { display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr) auto; align-items: center; gap: 6px; margin: 6px 0; }
.tenant-ui .mt-range input { min-width: 0; padding: 5px 6px; border: 1px solid var(--n-line-2); border-radius: 8px; background: #fff; }
.tenant-ui .mt-range__remove { width: 28px; height: 28px; border: 0; border-radius: 8px; background: transparent; color: var(--n-muted); font-size: 18px; cursor: pointer; }
.tenant-ui .mt-range__remove:hover, .tenant-ui .mt-range__remove:focus-visible { background: var(--n-bad-bg); color: var(--n-bad); }
.tenant-ui .mt-day__actions { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 6px; }
.tenant-ui .mt-day__actions .crm-view { min-height: 28px; padding: 0 8px; font-size: 12px; }
.tenant-ui .mt-copy { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; margin-top: 8px; padding: 8px; border-radius: 10px; background: #fff; }
@media (max-width: 860px) {
  .tenant-ui .mt-editor { width: 100vw; max-height: 100vh; margin: 0; border-radius: 0; height: 100vh; }
  .tenant-ui .mt-editor__body { grid-template-columns: 1fr; }
  .tenant-ui .mt-week { grid-template-columns: 1fr; }
}

/* ---------- EG02 UX master: Agenda popover, legend, drag; Consultas KPIs ---------------------------- */
.tenant-ui .agenda-page { display: grid; gap: 14px; }
.tenant-ui .agenda-filters { margin: 0; }
.tenant-ui .agenda-legend { display: flex; flex-wrap: wrap; gap: 4px 14px; margin: -4px 0 10px; padding: 0; list-style: none; color: var(--n-muted); font-size: 12.5px; }
.tenant-ui .agenda-legend i { display: inline-block; width: 10px; height: 10px; margin-right: 6px; border-radius: 3px; vertical-align: -1px; }
.tenant-ui .agenda-legend i.is-warn, .tenant-ui .agenda-pop__dot.is-warn { background: var(--n-warn); }
.tenant-ui .agenda-legend i.is-good, .tenant-ui .agenda-pop__dot.is-good { background: var(--n-good); }
.tenant-ui .agenda-legend i.is-none, .tenant-ui .agenda-pop__dot.is-none { background: var(--n-none, #8A8494); }
.tenant-ui .agenda-legend i.is-bad, .tenant-ui .agenda-pop__dot.is-bad { background: var(--n-bad); }
.tenant-ui .n-cal-event[draggable="true"] { cursor: grab; }
.tenant-ui .n-cal-event.is-dragging { opacity: .45; }
.tenant-ui .n-cal-month__cell.is-drop, .tenant-ui .n-cal-time__col.is-drop { background-color: var(--n-violet-100); box-shadow: inset 0 0 0 2px var(--n-violet); }
.tenant-ui .n-cal-event:focus-visible { outline: 2px solid var(--n-violet); outline-offset: 1px; }
.tenant-ui .agenda-pop-layer { position: fixed; inset: 0; z-index: 900; }
.tenant-ui .agenda-pop { position: fixed; display: grid; gap: 10px; width: min(380px, calc(100vw - 24px)); max-height: calc(100vh - 24px); padding: 14px 16px; overflow: auto; border: 1px solid var(--n-line); border-radius: 16px; background: var(--n-paper); box-shadow: 0 18px 48px rgba(23, 20, 31, .24); outline: none; }
.tenant-ui .agenda-pop-layer.is-sheet { background: rgba(23, 20, 31, .38); }
.tenant-ui .agenda-pop-layer.is-sheet .agenda-pop { left: 0 !important; right: 0; bottom: 0; top: auto !important; width: 100%; max-height: 85vh; border-radius: 18px 18px 0 0; }
.tenant-ui .agenda-pop__head { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: start; gap: 10px; }
.tenant-ui .agenda-pop__dot { width: 12px; height: 12px; margin-top: 6px; border-radius: 4px; }
.tenant-ui .agenda-pop__head h2 { margin: 0; font-size: 17px; line-height: 1.3; }
.tenant-ui .agenda-pop__head p { margin: 2px 0 0; color: var(--n-muted); font-size: 13px; }
.tenant-ui .agenda-pop__facts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px 14px; margin: 0; }
.tenant-ui .agenda-pop__facts div { min-width: 0; }
.tenant-ui .agenda-pop__facts .is-wide { grid-column: 1 / -1; }
.tenant-ui .agenda-pop__facts dt { color: var(--n-faint); font-size: 11.5px; font-weight: 600; }
.tenant-ui .agenda-pop__facts dd { margin: 1px 0 0; color: var(--n-ink); font-size: 13px; overflow-wrap: anywhere; }
.tenant-ui .agenda-pop__actions { display: flex; flex-wrap: wrap; gap: 6px; padding-top: 10px; border-top: 1px solid var(--n-line); }
.tenant-ui .agenda-pop__edit { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px 10px; }
.tenant-ui .agenda-pop__edit label { display: grid; gap: 3px; font-size: 12.5px; color: var(--n-muted); }
.tenant-ui .agenda-pop__edit input, .tenant-ui .agenda-pop__edit select { min-width: 0; padding: 6px 8px; border: 1px solid var(--n-line-2); border-radius: 8px; background: #fff; color: var(--n-ink); }
.tenant-ui .agenda-pop__edit .n-actions { grid-column: 1 / -1; justify-content: flex-end; }
.tenant-ui .crm-metrics.consult-kpis { grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 10px; }
.tenant-ui .consult-kpis .stat-card { min-height: 0; padding: 12px 14px; }
.tenant-ui .consult-kpis .stat-card .stat-label { font-size: 12.5px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.tenant-ui .consult-kpis .stat-card .stat-value { font-size: 24px; }
@media (max-width: 1100px) { .tenant-ui .crm-metrics.consult-kpis { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 560px) { .tenant-ui .crm-metrics.consult-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); } .tenant-ui .crm-metrics.consult-kpis > :first-child:nth-last-child(odd) { grid-column: auto; } }
.tenant-ui .consult-unlinked { display: grid; gap: 8px; margin-top: 8px; }
.tenant-ui .consult-unlinked > .btn { justify-self: start; }
.tenant-ui .consult-unlinked__list { display: grid; gap: 6px; margin: 0; padding: 0; list-style: none; }
.tenant-ui .consult-unlinked__list li { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px; padding: 8px 10px; border: 1px solid var(--n-line); border-radius: 10px; background: var(--n-paper); font-size: 13px; }

/* ---------- EG02 UX master: Formularios type filter, Programas module sessions ---------------------- */
.tenant-ui .eos-forms-types { display: grid; gap: 4px; align-self: end; }
.tenant-ui .eos-forms-types small { margin-left: 4px; color: var(--n-faint); font-weight: 600; }
.tenant-ui .eos-forms-url { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.tenant-ui .eos-forms-url .crm-view { min-height: 24px; padding: 0 8px; font-size: 12px; }
.tenant-ui .lms-templates { display: grid; gap: 10px; margin-top: 14px; padding: 14px; border: 1px solid var(--n-line); border-radius: 14px; background: var(--n-paper-2); }
.tenant-ui .lms-templates h5 { margin: 0; font-size: 14px; }
.tenant-ui .lms-templates header p { margin: 2px 0 0; }
.tenant-ui .lms-templates__list { display: grid; gap: 6px; margin: 0; padding: 0; list-style: none; }
.tenant-ui .lms-templates__list li { display: grid; grid-template-columns: 28px minmax(0, 1fr) 110px auto; align-items: center; gap: 8px; }
.tenant-ui .lms-templates__n { color: var(--n-faint); font-weight: 600; text-align: right; }
.tenant-ui .lms-templates__list input { min-width: 0; padding: 7px 9px; border: 1px solid var(--n-line-2); border-radius: 8px; background: #fff; }
@media (max-width: 720px) { .tenant-ui .lms-templates__list li { grid-template-columns: 24px minmax(0, 1fr); } .tenant-ui .lms-templates__list li > :nth-child(n+3) { grid-column: 2; } }

/* La guía del encuentro: el historial se lee de un vistazo y la vigente se distingue sin depender del color. */
.tenant-ui .lms-guide { display: grid; gap: 12px; margin-top: 12px; padding: 14px; border: 1px solid var(--n-line); border-radius: 14px; background: #fff; }
.tenant-ui .lms-guide header { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: start; gap: 8px; }
.tenant-ui .lms-guide h5 { margin: 0; font-size: 14px; }
.tenant-ui .lms-guide h6 { margin: 0 0 6px; font-size: 13px; }
.tenant-ui .lms-guide header p { grid-column: 1 / -1; margin: 2px 0 0; }
.tenant-ui .lms-guide__list { display: grid; gap: 6px; margin: 0; padding: 0; list-style: none; }
.tenant-ui .lms-guide__list li { display: grid; grid-template-columns: 52px minmax(0, 1fr) auto; align-items: baseline; gap: 8px; padding: 8px 10px; border: 1px solid var(--n-line-2); border-radius: 10px; }
.tenant-ui .lms-guide__list li.is-current { border-color: var(--n-accent, #6C4BFF); background: var(--n-paper-2); }
.tenant-ui .lms-guide__list li.is-current .lms-guide__v::after { content: " · vigente"; font-weight: 400; }
.tenant-ui .lms-guide__v { font-weight: 600; color: var(--n-faint); }
.tenant-ui .lms-guide__list li.is-current .lms-guide__v { color: inherit; }
.tenant-ui .lms-guide__t { min-width: 0; overflow-wrap: anywhere; }
.tenant-ui .lms-guide__list li .crm-cell-sub { grid-column: 2 / -1; }
.tenant-ui .lms-guide__form, .tenant-ui .lms-guide__publish { display: grid; gap: 8px; padding: 12px; border: 1px solid var(--n-line-2); border-radius: 12px; background: var(--n-paper-2); }
.tenant-ui .lms-guide__impact { display: grid; gap: 8px; margin-top: 8px; }
.tenant-ui .lms-guide__impact p { margin: 0; }
@media (max-width: 720px) { .tenant-ui .lms-guide__list li { grid-template-columns: 52px minmax(0, 1fr); } .tenant-ui .lms-guide header { grid-template-columns: minmax(0, 1fr); } }

/* ---------- EG02 UX master: Cohortes (wizard, accordion editor, dense grids) ------------------------- */
.tenant-ui .cohorts-page { display: grid; gap: 14px; }
.tenant-ui .cohort-sheet { position: fixed; top: 0; right: 0; bottom: 0; display: grid; grid-template-rows: auto minmax(0, 1fr) auto; width: min(72vw, 1200px); min-width: min(760px, 100vw); background: var(--n-paper); box-shadow: -18px 0 48px rgba(23, 20, 31, .22); }
.tenant-ui .cohort-sheet__head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; padding: 18px 24px 12px; border-bottom: 1px solid var(--n-line); }
.tenant-ui .cohort-sheet__head h2 { margin: 0; font-size: 20px; }
.tenant-ui .cohort-sheet__head p { margin: 2px 0 0; }
.tenant-ui .cohort-sheet__body { padding: 12px 24px 20px; overflow: auto; }
.tenant-ui .cohort-sheet__foot { position: sticky; bottom: 0; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px; padding: 12px 24px; border-top: 1px solid var(--n-line); background: var(--n-paper-2); }
.tenant-ui .cohort-sheet__foot.is-dirty { background: var(--n-violet-100); }
.tenant-ui .cohort-sheet__foot .n-actions { margin-left: auto; }
.tenant-ui .cohort-steps { display: flex; flex-wrap: wrap; gap: 4px 14px; margin: 6px 0 0; padding: 0; list-style: none; color: var(--n-faint); font-size: 13px; }
.tenant-ui .cohort-steps .is-current { color: var(--n-violet-700); font-weight: 650; }
.tenant-ui .cohort-steps .is-done { color: var(--n-good); }
.tenant-ui .cohort-grid-3 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px 16px; align-items: start; }
.tenant-ui .cohort-grid-3 .field, .tenant-ui .cohort-grid-3 .base-input, .tenant-ui .cohort-grid-3 .base-textarea { margin: 0; }
.tenant-ui .is-span-2 { grid-column: span 2; }
.tenant-ui .is-span-3 { grid-column: 1 / -1; }
.tenant-ui .cohort-help { grid-column: 1 / -1; margin: 0; }
.tenant-ui .cohort-days { display: flex; flex-wrap: wrap; gap: 6px; margin: 0; padding: 0; border: 0; }
.tenant-ui .cohort-days legend { width: 100%; margin-bottom: 4px; color: var(--n-muted); font-size: 13px; }
.tenant-ui .cohort-day { min-width: 52px; padding: 7px 10px; border: 1px solid var(--n-line-2); border-radius: 10px; background: #fff; color: var(--n-ink); font-weight: 600; cursor: pointer; }
.tenant-ui .cohort-day:hover, .tenant-ui .cohort-day:focus-visible { border-color: var(--n-violet); outline: none; }
.tenant-ui .cohort-day.is-on { border-color: var(--n-violet); background: var(--n-violet); color: #fff; }
.tenant-ui .cohort-warnings { display: grid; gap: 4px; margin: 0 0 12px; padding: 10px 12px 10px 28px; border: 1px solid #E9C98F; border-radius: 12px; background: #FDF6E9; color: #6B4208; font-size: 13px; }
.tenant-ui .cohort-preview__summary { margin: 0 0 10px; }
.tenant-ui .cohort-preview__table { display: grid; gap: 4px; }
.tenant-ui .cohort-preview__row { display: grid; grid-template-columns: 34px minmax(0, 2fr) minmax(150px, 1fr) 110px 110px 60px; align-items: center; gap: 8px; padding: 6px 8px; border-radius: 10px; }
.tenant-ui .cohort-preview__row:not(.is-head) { border: 1px solid var(--n-line); background: #fff; }
.tenant-ui .cohort-preview__row.is-head { color: var(--n-faint); font-size: 12px; font-weight: 600; }
.tenant-ui .cohort-preview__row.is-skipped { opacity: .5; }
.tenant-ui .cohort-preview__row.is-missing { border-color: #E9C98F; background: #FDF6E9; }
.tenant-ui .cohort-preview__row span { display: grid; gap: 1px; min-width: 0; }
.tenant-ui .cohort-preview__row small { color: var(--n-muted); font-size: 11.5px; }
.tenant-ui .cohort-preview__row input[type=date], .tenant-ui .cohort-preview__row input[type=time] { min-width: 0; padding: 4px 6px; border: 1px solid var(--n-line-2); border-radius: 8px; }
.tenant-ui .cohort-acc { border-bottom: 1px solid var(--n-line); }
.tenant-ui .cohort-acc h3 { margin: 0; }
.tenant-ui .cohort-acc h3 button { display: flex; align-items: center; justify-content: space-between; gap: 10px; width: 100%; padding: 13px 4px; border: 0; background: transparent; color: var(--n-ink); font: 650 15px var(--n-font-display); text-align: left; cursor: pointer; }
.tenant-ui .cohort-acc h3 button::after { content: '▸'; color: var(--n-faint); transition: transform .15s ease; }
.tenant-ui .cohort-acc.is-open h3 button::after { transform: rotate(90deg); }
.tenant-ui .cohort-acc h3 button:hover, .tenant-ui .cohort-acc h3 button:focus-visible { color: var(--n-violet-700); outline: none; }
.tenant-ui .cohort-acc h3 small { margin-left: auto; padding: 1px 8px; border-radius: 999px; background: var(--n-paper-2); color: var(--n-muted); font: 600 12px var(--n-font-body); }
.tenant-ui .cohort-acc h3 small.is-warn { background: #FDF6E9; color: #93580A; }
.tenant-ui .cohort-acc__panel { padding: 4px 4px 18px; }
.tenant-ui .cohort-toolbar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 10px; }
.tenant-ui .cohort-toolbar small { margin-left: 3px; color: var(--n-faint); }
.tenant-ui .cohort-manual { margin-bottom: 12px; padding: 12px; border: 1px dashed var(--n-line-2); border-radius: 12px; }
.tenant-ui .cohort-cards { display: grid; gap: 10px; }
.tenant-ui .cohort-cards--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.tenant-ui .cohort-card { display: grid; align-content: start; gap: 4px; padding: 10px 12px; border: 1px solid var(--n-line); border-radius: 12px; background: #fff; }
.tenant-ui .cohort-card.has-issue { border-color: #E9C98F; box-shadow: inset 3px 0 0 #C98A1F; }
.tenant-ui .cohort-card__eyebrow { margin: 0; color: var(--n-faint); font-size: 11.5px; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tenant-ui .cohort-card h4 { margin: 0; font-size: 14px; line-height: 1.3; }
.tenant-ui .cohort-card__when { margin: 0; color: var(--n-muted); font-size: 12.5px; }
.tenant-ui .cohort-card__issue { margin: 0; color: #93580A; font-size: 12px; }
.tenant-ui .cohort-card__foot { display: flex; align-items: center; justify-content: space-between; gap: 6px; margin-top: 4px; }
.tenant-ui .cohort-card__foot .crm-view { min-height: 26px; padding: 0 9px; font-size: 12px; }
.tenant-ui .cohort-add { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1.5fr) minmax(0, .8fr) auto; align-items: end; gap: 10px; margin-bottom: 12px; }
.tenant-ui .cohort-add .field, .tenant-ui .cohort-add .base-input, .tenant-ui .cohort-add .base-select { margin: 0; }
.tenant-ui .cohort-table-wrap { overflow-x: auto; }
.tenant-ui .cohort-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.tenant-ui .cohort-table th { padding: 6px 8px; border-bottom: 1px solid var(--n-line); color: var(--n-faint); font-size: 12px; text-align: left; }
.tenant-ui .cohort-table td { padding: 8px; border-bottom: 1px solid var(--n-line); vertical-align: middle; }
.tenant-ui .cohort-table__select { min-width: 150px; padding: 4px 8px; font-size: 12.5px; }
.tenant-ui .cohort-table__actions { white-space: nowrap; text-align: right; }
.tenant-ui .cohort-impact { display: grid; gap: 8px; margin-top: 12px; padding: 12px 14px; border: 1px solid var(--n-violet); border-radius: 12px; background: var(--n-violet-100); }
.tenant-ui .cohort-impact h4 { margin: 0; font-size: 14px; }
.tenant-ui .cohort-impact__plan { margin: 0; padding-left: 18px; font-size: 12.5px; }
.tenant-ui .cohort-curriculum, .tenant-ui .cohort-teachers { display: grid; gap: 6px; margin: 0 0 10px; padding: 0; list-style: none; }
.tenant-ui .cohort-curriculum li { display: grid; gap: 1px; padding: 8px 10px; border: 1px solid var(--n-line); border-radius: 10px; background: #fff; }
@media (max-width: 1100px) { .tenant-ui .cohort-cards--3 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 860px) {
  .tenant-ui .cohort-sheet { width: 100vw; min-width: 0; }
  .tenant-ui .cohort-grid-3 { grid-template-columns: 1fr; }
  .tenant-ui .is-span-2 { grid-column: auto; }
  .tenant-ui .cohort-add { grid-template-columns: 1fr; }
  .tenant-ui .cohort-preview__row { grid-template-columns: 28px minmax(0, 1fr); }
  .tenant-ui .cohort-preview__row > :nth-child(n+3) { grid-column: 2; }
  .tenant-ui .cohort-preview__row.is-head { display: none; }
}
@media (max-width: 620px) { .tenant-ui .cohort-cards--3 { grid-template-columns: 1fr; } }

/* ---------- EG02 UX master: density fixes after browser QA ------------------------------------------ */
.tenant-ui .mt-week { grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); }
.tenant-ui .mt-range { grid-template-columns: minmax(118px, 1fr) auto minmax(118px, 1fr) 28px; }
.tenant-ui .mt-range input { min-width: 118px; font-variant-numeric: tabular-nums; }
.tenant-ui .crm-opportunity.n-kcard { gap: 4px; padding: 9px 10px; }
.tenant-ui .crm-opportunity.n-kcard .n-kcard__top strong { font-size: 13.5px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.tenant-ui .crm-opportunity.n-kcard > p { line-height: 1.35; }
.tenant-ui .crm-opportunity.n-kcard > .n-kcard__next { padding: 3px 7px; font-size: 12px; }
.tenant-ui .crm-opportunity.n-kcard .n-kcard__meta { gap: 4px; }
.tenant-ui .crm-opportunity.n-kcard .n-kcard__meta .n-pill { padding: 1px 7px; font-size: 11.5px; line-height: 1.5; }
.tenant-ui .crm-opportunity.n-kcard .n-kcard__owner { width: 22px; height: 22px; font-size: 10px; }

/* ---------- EG02 UX master: drawers and modals overlay the page (they used to render in the page flow) ---- */
.tenant-ui .gateway-drawer-backdrop { position: fixed; inset: 0; z-index: 800; display: flex; justify-content: flex-end; align-items: stretch; overflow: hidden; }
.tenant-ui .gateway-drawer-backdrop > .gateway-drawer { width: min(630px, 100vw); max-width: 100vw; height: 100%; margin-left: auto; overflow-y: auto; }
.tenant-ui .gateway-drawer-backdrop > .crm-stages { width: min(640px, 100vw); }
.tenant-ui .gateway-drawer-backdrop > .mt-editor { align-self: center; margin: 0 auto; }
.tenant-ui .gateway-drawer-backdrop > .cohort-sheet { position: absolute; }
body:has(.tenant-ui .gateway-drawer-backdrop) { overflow: hidden; }

/* Existing-student enrollment search (cohort participants) */
.tenant-ui .student-search { position: relative; margin-bottom: 14px; }
.tenant-ui .student-search__bar { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 10px; align-items: end; }
.tenant-ui .student-search__input { width: 100%; min-height: 42px; padding: 8px 12px; border: 1px solid var(--n-line, #ddd6ca); border-radius: 12px; font: inherit; background: #fff; }
.tenant-ui .student-search__input:focus-visible { outline: 2px solid var(--n-violet, #6C4BFF); outline-offset: 1px; }
.tenant-ui .student-search__state { margin: 6px 2px 0; font-size: 13px; color: var(--n-muted, #6b6474); }
.tenant-ui .student-search__state--error { color: #B0373A; }
.tenant-ui .student-search__list { list-style: none; margin: 8px 0 0; padding: 0; border: 1px solid var(--n-line, #ddd6ca); border-radius: 14px; background: #fff; max-height: 340px; overflow: auto; }
.tenant-ui .student-search__item { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 10px; align-items: center; padding: 10px 12px; border-top: 1px solid var(--n-line, #eee8dd); }
.tenant-ui .student-search__item:first-child { border-top: 0; }
.tenant-ui .student-search__item.is-active { background: #f3f0ff; }
.tenant-ui .student-search__item strong { display: block; }
.tenant-ui .student-search__meta { display: block; font-size: 12.5px; color: var(--n-muted, #6b6474); }
.tenant-ui .student-search__chips { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 4px; }
.tenant-ui .student-selected { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, .6fr) auto auto; gap: 10px; align-items: end; padding: 12px; border: 1px solid #cfc4ff; border-radius: 14px; background: #f7f5ff; margin-bottom: 12px; }
.tenant-ui .student-new { margin: 0 0 14px; }
.tenant-ui .student-new__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)) auto; gap: 10px; align-items: end; margin-top: 8px; }
@media (max-width: 760px) {
  .tenant-ui .student-selected, .tenant-ui .student-new__grid, .tenant-ui .student-search__bar { grid-template-columns: 1fr; }
}

.tenant-ui .mt-ready-chip { display: inline-flex; align-items: center; gap: 6px; margin-top: 6px; font-size: 12.5px; font-weight: 600; color: var(--n-muted, #6b6474); }
.tenant-ui .mt-ready-chip::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: currentColor; }
.tenant-ui .mt-ready-chip.is-good { color: #1B7A52; }
.tenant-ui .mt-ready-chip.is-warn { color: #93580A; }
.tenant-ui .mt-warn__actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 8px; }
.tenant-ui .mt-ready { margin: 8px 0 0; }

/* Sprint 1 · shared enrollment panel, admissions drawer, Student 360 enrollments, CRM identity, cohort groups */
.tenant-ui .enroll-panel { border: 1px solid #d9d0ff; background: #f8f6ff; border-radius: 14px; padding: 12px 14px; margin: 10px 0; display: grid; gap: 10px; }
.tenant-ui .enroll-panel__head { display: flex; justify-content: space-between; align-items: center; gap: 8px; }
.tenant-ui .enroll-panel__head h4 { margin: 0; font-size: 15px; }
.tenant-ui .enroll-panel__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; align-items: end; }
.tenant-ui .enroll-panel__grid .field { margin: 0; }
.tenant-ui .enroll-panel__empty { display: grid; gap: 2px; padding: 10px 12px; border-radius: 12px; background: #fff7e8; color: #6b4a0a; font-size: 13px; }
.tenant-ui .enroll-panel__notice { margin: 0; }
.tenant-ui .adm-drawer__grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr); gap: 14px; align-items: start; }
.tenant-ui .adm-drawer__col { display: grid; gap: 12px; min-width: 0; }
.tenant-ui .adm-drawer .crm-panel-section { margin: 0; padding: 12px 14px; }
.tenant-ui .adm-facts li { padding-block: 6px; }
.tenant-ui .adm-current { display: grid; gap: 2px; margin: 0; }
.tenant-ui .adm-enrollments { list-style: none; margin: 0 0 8px; padding: 0; display: grid; gap: 6px; }
.tenant-ui .adm-enrollments li { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 2px 8px; padding: 8px 10px; border: 1px solid var(--n-line, #e7e1d6); border-radius: 10px; }
.tenant-ui .adm-enrollments li span:not(.n-pill) { grid-column: 1; font-size: 12.5px; color: var(--n-muted, #6b6474); }
.tenant-ui .adm-enrollments li .n-pill { grid-column: 2; grid-row: 1 / span 2; align-self: center; }
.tenant-ui .s360-enroll__table td, .tenant-ui .s360-enroll__table th { padding: 8px 10px; }
.tenant-ui .s360-enroll__table tr.is-history td { color: var(--n-muted, #6b6474); }
.tenant-ui .s360-enroll__actions { white-space: nowrap; text-align: right; }
.tenant-ui .crm-identity__who { margin: 0 0 8px; }
.tenant-ui .crm-identity__list { list-style: none; margin: 8px 0; padding: 0; display: grid; gap: 6px; }
.tenant-ui .crm-identity__list li { display: flex; justify-content: space-between; gap: 8px; align-items: center; }
.tenant-ui .crm-identity__search { display: grid; gap: 6px; margin-top: 8px; }
.tenant-ui .cohort-participants { display: grid; gap: 14px; }
.tenant-ui .cohort-participants__add { border: 1px solid var(--n-line, #e7e1d6); border-radius: 14px; padding: 12px 14px; background: #fcfbf8; }
.tenant-ui .cohort-participants__add h4, .tenant-ui .cohort-participants__list h4 { margin: 0 0 4px; font-size: 15px; }
.tenant-ui .cohort-participants__head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 8px; margin-bottom: 8px; }
.tenant-ui .cohort-bulk { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; padding: 6px 8px; border-radius: 12px; background: #f3f0ff; }
.tenant-ui .cohort-bulk .base-select { min-width: 160px; }
.tenant-ui .cohort-table__check { width: 34px; text-align: center; }
.tenant-ui .student-selected__notice { display: block; margin-top: 4px; font-size: 12.5px; color: #4a2fd1; }
.tenant-ui .cohort-groups { display: grid; gap: 12px; }
.tenant-ui .cohort-groups__new { display: grid; grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr) auto; gap: 10px; align-items: end; }
.tenant-ui .cohort-groups__new .base-input { margin: 0; }
.tenant-ui .cohort-groups__list { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 10px; }
.tenant-ui .cohort-groups__item { border: 1px solid var(--n-line, #e7e1d6); border-radius: 14px; padding: 10px 12px; display: grid; gap: 6px; background: #fff; }
.tenant-ui .cohort-groups__main { display: grid; gap: 2px; }
.tenant-ui .cohort-groups__members summary { cursor: pointer; font-size: 13px; }
.tenant-ui .cohort-groups__members ul { margin: 4px 0 0; padding-left: 18px; font-size: 13px; }
.tenant-ui .cohort-groups__archive { border: 1px solid #f0c98a; background: #fff7e8; border-radius: 14px; padding: 12px 14px; display: grid; gap: 6px; }
@media (max-width: 900px) {
  .tenant-ui .adm-drawer__grid, .tenant-ui .enroll-panel__grid, .tenant-ui .cohort-groups__new { grid-template-columns: 1fr; }
}

/* Sprint 1.1 · account access panel (Student 360) and consolidated mail settings */
.tenant-ui .s360-hero__title { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; }
.tenant-ui .s360-hero__title h2 { margin: 0; }
.tenant-ui .access-panel { border: 1px solid #d9d0ff; background: #fbfaff; border-radius: 16px; padding: 14px 16px; margin: 12px 0; display: grid; gap: 12px; }
.tenant-ui .access-panel__head { display: flex; justify-content: space-between; align-items: center; }
.tenant-ui .access-panel__head h3 { margin: 0; font-size: 16px; }
.tenant-ui .access-panel__grid { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); gap: 14px; align-items: start; }
.tenant-ui .access-panel__facts { margin: 0; }
.tenant-ui .access-panel__actions { display: grid; gap: 8px; align-content: start; }
.tenant-ui .access-panel__actions .btn { justify-self: start; }
.tenant-ui .access-panel__mail { display: grid; gap: 4px; padding: 10px 12px; border-radius: 12px; background: #fff7e8; color: #6b4a0a; font-size: 13px; }
.tenant-ui .access-panel__link { border: 1px solid #f0c98a; background: #fffaf0; border-radius: 12px; padding: 10px 12px; display: grid; gap: 8px; }
.tenant-ui .access-panel__link p { margin: 0; }
.tenant-ui .access-panel__copy { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px; }
.tenant-ui .access-panel__copy input { width: 100%; min-height: 38px; padding: 6px 10px; border: 1px solid var(--n-line, #ddd6ca); border-radius: 10px; font: inherit; font-size: 13px; }
.tenant-ui .mail-settings__grid { display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); gap: 16px; align-items: start; }
.tenant-ui .mail-settings__fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px 12px; }
.tenant-ui .mail-settings__providers { display: grid; gap: 8px; }
.tenant-ui .mail-settings__reason { margin: 10px 0 0; font-size: 13px; color: #93580A; }
.tenant-ui .mail-settings__block { margin-top: 12px; display: grid; gap: 8px; }
.tenant-ui .mail-settings__smtp { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px 12px; }
.tenant-ui .mail-settings__smtp .n-actions { grid-column: 1 / -1; }
.tenant-ui .mail-settings__test { margin-top: 16px; padding-top: 12px; border-top: 1px solid var(--n-line, #eee8dd); display: grid; gap: 8px; }
.tenant-ui .mail-settings__test h3 { margin: 0; font-size: 15px; }
.tenant-ui .mail-settings__test-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 10px; align-items: end; }
.tenant-ui .field-error { margin: 4px 0 0; font-size: 12.5px; color: #B0373A; }
@media (max-width: 900px) {
  .tenant-ui .access-panel__grid, .tenant-ui .mail-settings__grid, .tenant-ui .mail-settings__fields, .tenant-ui .mail-settings__smtp, .tenant-ui .mail-settings__test-row, .tenant-ui .access-panel__copy { grid-template-columns: 1fr; }
}

/* Hotfix 3.1.1 · el aviso tiene su propia superficie clara dentro del aula oscura: su texto no puede
   heredar el color del aula, o queda casi blanco sobre rosa (contraste 1.05). */
.tenant-ui .admin-content .unified-classroom :is(.alert, .adm-alert, .admin-inline-alert) { color: #3C2F16; }
.tenant-ui .admin-content .unified-classroom :is(.alert, .adm-alert, .admin-inline-alert) :is(p, span, small, strong, a, li) { color: inherit; }
.tenant-ui .admin-content .unified-classroom :is(.alert-error, .adm-alert-error, .admin-inline-alert.is-error) { color: #7B2326; }
.tenant-ui .admin-content .unified-classroom :is(.alert-success, .adm-alert-success) { color: #14543A; }
.tenant-ui .admin-content .unified-classroom :is(.alert-info, .adm-alert-info) { color: #1E3F60; }
