/* Control Center component primitives — compose these; avoid module-specific clones. */
.cc-stack { display: flex; flex-direction: column; gap: var(--stack-gap, var(--space-4)); }
.cc-cluster { display: flex; flex-wrap: wrap; align-items: center; gap: var(--cluster-gap, var(--space-2)); }
.cc-split { display: flex; align-items: center; justify-content: space-between; gap: var(--space-4); }
.cc-panel {
  background: var(--panel);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: var(--panel-padding, var(--space-4));
  box-shadow: var(--shadow-sm);
}
.cc-data { font-family: var(--font-data); font-variant-numeric: tabular-nums; }
.cc-visually-hidden {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}
.cc-touch { min-width: 40px; min-height: 40px; }

.action-queue {
  --panel-padding: 0;
  margin: var(--space-5) 0;
  overflow: hidden;
}
.action-queue-head {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: var(--space-4);
  padding: var(--space-4) var(--space-5);
  border-bottom: 1px solid var(--line);
  background: linear-gradient(100deg, color-mix(in srgb, var(--brand) 8%, var(--panel)), var(--panel) 55%);
}
.action-queue-head h2 { margin: 2px 0 0; }
.action-kicker {
  color: var(--brand);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .12em;
  text-transform: uppercase;
}
.action-count {
  color: var(--muted);
  font-size: 12px;
  white-space: nowrap;
}
.action-list { list-style: none; margin: 0; padding: 0; }
.action-item {
  display: grid;
  grid-template-columns: 4px minmax(0, 1fr) auto;
  align-items: center;
  gap: var(--space-4);
  min-height: 76px;
  padding: var(--space-3) var(--space-5) var(--space-3) 0;
  border-bottom: 1px solid var(--line);
}
.action-item:last-child { border-bottom: 0; }
.action-marker { align-self: stretch; border-radius: 0 3px 3px 0; background: var(--muted); }
.action-item.severity-critical .action-marker,
.action-item.severity-error .action-marker { background: var(--down); }
.action-item.severity-warning .action-marker { background: var(--warn); }
.action-item.severity-success .action-marker { background: var(--ok); }
.action-copy { min-width: 0; }
.action-eyebrow { color: var(--muted); font-size: 11px; font-weight: 750; letter-spacing: .04em; text-transform: uppercase; }
.action-title { margin-top: 3px; color: var(--text); font-weight: 750; overflow-wrap: anywhere; }
.action-detail { margin-top: 2px; color: var(--muted); font-size: 12px; overflow-wrap: anywhere; }
.action-open { white-space: nowrap; }

.integration-hero {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: end;
  gap: var(--space-6);
  padding: var(--space-6);
  color: #fff;
  background: linear-gradient(120deg, #1e397b, #315fce 58%, #476fc8);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-md);
}
.integration-hero h1 { margin: 4px 0 6px; color: #fff; }
.integration-hero .lead { max-width: 720px; margin: 0; color: rgba(255,255,255,.78); }
.integration-hero .action-kicker { color: #e2bf70; }
.integration-signal { min-width: 160px; padding-left: var(--space-5); border-left: 1px solid rgba(255,255,255,.24); }
.integration-signal strong { display: block; font-size: 28px; line-height: 1; }
.integration-signal span { display: block; margin-top: 6px; color: rgba(255,255,255,.72); font-size: 11px; }
.integration-legend { display: flex; flex-wrap: wrap; gap: var(--space-4); margin: var(--space-4) 0 var(--space-6); color: var(--muted); font-size: 12px; }
.integration-legend span { display: inline-flex; align-items: center; gap: 6px; }
.int-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--muted); }
.int-dot.is-connected { background: var(--ok); }
.int-dot.is-partial { background: var(--warn); }
.int-dot.is-paused { background: var(--holding); }
.integration-group { margin: 0 0 var(--space-6); }
.integration-group > h2 { margin-bottom: var(--space-3); font-size: 15px; }
.integration-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-4); }
.integration-card { position: relative; overflow: hidden; min-width: 0; padding: var(--space-5); background: var(--panel); border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow-sm); }
.int-line { position: absolute; inset: 0 0 auto; height: 3px; background: var(--line); }
.int-line span { display: block; width: 100%; height: 100%; background: var(--muted); transform-origin: left; }
.integration-card.is-connected .int-line span { background: var(--ok); }
.integration-card.is-partial .int-line span { width: 62%; background: var(--warn); }
.integration-card.is-not_configured .int-line span { width: 18%; }
.integration-card.is-paused .int-line span { width: 42%; background: var(--holding); }
.int-card-head { display: flex; align-items: start; justify-content: space-between; gap: var(--space-3); }
.int-card-head h3 { margin: 2px 0 0; font-size: 17px; }
.int-owner { color: var(--muted); font-size: 10px; font-weight: 800; letter-spacing: .09em; text-transform: uppercase; }
.int-status { flex: none; padding: 4px 8px; color: var(--muted); background: var(--field); border-radius: var(--radius-pill); font-size: 11px; font-weight: 750; }
.is-connected .int-status { color: var(--ok); }
.is-partial .int-status { color: var(--warn); }
.is-paused .int-status { color: var(--holding); }
.integration-card > p { min-height: 40px; margin: var(--space-3) 0; color: var(--muted); font-size: 13px; }
.int-note { margin-bottom: var(--space-3); color: var(--text); font-size: 12px; }
.int-foot { display: flex; align-items: center; justify-content: space-between; gap: var(--space-3); padding-top: var(--space-3); border-top: 1px solid var(--line); color: var(--muted); font-size: 11px; }

.job-head { display: flex; align-items: end; justify-content: space-between; gap: var(--space-5); }
.job-head h1 { margin: 4px 0; }
.job-head .lead { margin-bottom: 0; }
.job-pulse { display: flex; align-items: center; gap: 8px; padding: 9px 12px; background: var(--panel); border: 1px solid var(--line); border-radius: var(--radius-pill); color: var(--muted); font-size: 12px; white-space: nowrap; }
.job-pulse > span { width: 9px; height: 9px; border-radius: 50%; background: var(--ok); box-shadow: 0 0 0 5px color-mix(in srgb, var(--ok) 15%, transparent); }
.job-pulse.has-failure > span { background: var(--down); box-shadow: 0 0 0 5px color-mix(in srgb, var(--down) 15%, transparent); }
.job-strip { display: grid; grid-template-columns: repeat(5, 1fr); margin: var(--space-5) 0; overflow: hidden; background: var(--panel); border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow-sm); }
.job-strip > div { padding: var(--space-4); border-right: 1px solid var(--line); }
.job-strip > div:last-child { border-right: 0; }
.job-strip b, .job-strip span { display: block; }
.job-strip b { font-size: 22px; }
.job-strip span { margin-top: 2px; color: var(--muted); font-size: 11px; }
.job-strip .is-alert b { color: var(--down); }
.job-list { display: flex; flex-direction: column; gap: var(--space-3); }
.job-row { display: grid; grid-template-columns: 4px minmax(0,1fr) auto; gap: var(--space-4); align-items: center; overflow: hidden; padding: 0 var(--space-4) 0 0; background: var(--panel); border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow-sm); }
.job-state-rail { align-self: stretch; background: var(--muted); }
.job-row.is-running .job-state-rail { background: var(--brand); }
.job-row.is-retrying .job-state-rail, .job-row.is-queued .job-state-rail { background: var(--warn); }
.job-row.is-failed .job-state-rail { background: var(--down); }
.job-row.is-succeeded .job-state-rail { background: var(--ok); }
.job-main { min-width: 0; padding: var(--space-4) 0; }
.job-row-head { display: flex; align-items: start; justify-content: space-between; gap: var(--space-4); }
.job-row-head h2 { margin: 5px 0 0; font-size: 16px; overflow-wrap: anywhere; }
.job-row-head code { color: var(--muted); font-size: 10px; overflow-wrap: anywhere; }
.job-status, .job-dead { display: inline-block; padding: 3px 7px; border-radius: var(--radius-pill); background: var(--field); color: var(--muted); font-size: 10px; font-weight: 750; }
.is-running .job-status { color: var(--brand); }
.is-failed .job-status, .job-dead { color: var(--down); }
.is-succeeded .job-status { color: var(--ok); }
.job-meta { display: flex; flex-wrap: wrap; gap: var(--space-4); margin-top: var(--space-3); color: var(--muted); font-size: 11px; }
.job-meta b { color: var(--text); }
.job-error { margin-top: var(--space-3); padding: var(--space-2) var(--space-3); color: var(--down); background: color-mix(in srgb, var(--down) 8%, var(--field)); border-radius: var(--radius-sm); font-size: 12px; overflow-wrap: anywhere; }
.job-events { display: flex; flex-wrap: wrap; gap: var(--space-2); margin-top: var(--space-3); color: var(--muted); font-size: 10px; }
.job-events span { padding: 3px 7px; background: var(--field); border-radius: var(--radius-pill); }

.ops-head { display: flex; align-items: end; justify-content: space-between; gap: var(--space-5); }
.ops-head h1 { margin: 4px 0; }
.ops-head .lead { margin-bottom: 0; }
.ops-active { min-width: 130px; padding-left: var(--space-5); border-left: 2px solid var(--holding); }
.ops-active strong, .ops-active span { display: block; }
.ops-active strong { font-size: 30px; line-height: 1; }
.ops-active span { margin-top: 5px; color: var(--muted); font-size: 11px; }
.ops-strip { display: flex; flex-wrap: wrap; gap: 1px; margin: var(--space-5) 0; overflow: hidden; background: var(--line); border: 1px solid var(--line); border-radius: var(--radius); }
.ops-strip span { flex: 1 1 140px; padding: var(--space-3) var(--space-4); background: var(--panel); color: var(--muted); font-size: 11px; }
.ops-strip b { color: var(--text); font-size: 17px; }
.ops-list { display: flex; flex-direction: column; gap: var(--space-3); }
.ops-ticket { display: grid; grid-template-columns: 5px minmax(0,1fr); overflow: hidden; background: var(--panel); border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow-sm); }
.ops-ticket-rail { grid-row: 1 / span 2; background: var(--muted); }
.ops-ticket.severity-warning .ops-ticket-rail { background: var(--warn); }
.ops-ticket.severity-error .ops-ticket-rail, .ops-ticket.severity-critical .ops-ticket-rail { background: var(--down); }
.ops-ticket-body { min-width: 0; padding: var(--space-4); }
.ops-ticket-head { display: flex; align-items: start; justify-content: space-between; gap: var(--space-3); }
.ops-ticket-head code { color: var(--muted); font-size: 10px; }
.ops-ticket h2 { margin: var(--space-3) 0; font-size: 16px; overflow-wrap: anywhere; }
.ops-severity, .ops-status, .ops-source { padding: 3px 7px; border-radius: var(--radius-pill); background: var(--field); color: var(--muted); font-size: 10px; font-weight: 750; }
.severity-warning .ops-severity { color: var(--warn); }
.severity-error .ops-severity, .severity-critical .ops-severity { color: var(--down); }
.ops-meta { display: flex; flex-wrap: wrap; gap: var(--space-4); color: var(--muted); font-size: 11px; }
.ops-meta b { color: var(--text); }
.ops-resolution { margin-top: var(--space-3); padding: var(--space-3); color: var(--ok); background: color-mix(in srgb, var(--ok) 8%, var(--field)); border-radius: var(--radius-sm); font-size: 12px; }
.ops-actions { grid-column: 2; display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: var(--space-2); padding: 0 var(--space-4) var(--space-4); }
.ops-actions form { display: flex; align-items: center; gap: var(--space-2); min-width: 0; }
.ops-actions .filter-in, .ops-actions label { min-width: 0; flex: 1; }

.btn,
.filter-in,
.cc-panel,
.ui-state,
.cc-dialog-panel {
  transition-duration: var(--duration-base);
  transition-timing-function: var(--ease);
}
.pagination .page-status,
.kpi-n,
.dp-time,
.tl-at {
  font-variant-numeric: tabular-nums;
}
.topbar { z-index: var(--z-sticky); }
.side { z-index: var(--z-nav); }
.cc-dialog { z-index: var(--z-dialog); }
#cc-toasts { z-index: var(--z-toast); }

/* RBAC — cấu trúc theo đúng khu vực sidebar. */
.rbac-shell { margin-top: var(--space-7); }
.rbac-hero { display: flex; align-items: end; justify-content: space-between; gap: var(--space-6); padding: var(--space-6); color: #fff; background: linear-gradient(125deg,#15243a,#234f82); border-radius: var(--radius); }
.rbac-hero h2 { margin: 3px 0 7px; color: inherit; }
.rbac-hero p { max-width: 760px; margin: 0; color: rgba(255,255,255,.8); font-size: 15px; }
.rbac-kicker { color: #8ec5ff; font-size: 12px; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; }
.rbac-super { flex: 0 0 auto; padding-left: var(--space-5); border-left: 1px solid rgba(255,255,255,.22); }
.rbac-super strong,.rbac-super span { display: block; }
.rbac-super span { margin-top: 4px; color: rgba(255,255,255,.7); font-size: 13px; }
.rbac-rules { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 1px; margin: var(--space-4) 0; overflow: hidden; background: var(--line); border: 1px solid var(--line); border-radius: var(--radius-sm); }
.rbac-rules span { padding: 12px var(--space-4); background: var(--panel); color: var(--muted); font-size: 13px; }
.rbac-rules b { display: inline-grid; width: 20px; height: 20px; margin-right: 5px; place-items: center; color: var(--holding); background: color-mix(in srgb,var(--holding) 10%,transparent); border-radius: 50%; }
.rbac-area { margin-top: var(--space-4); overflow: hidden; background: var(--panel); border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow-sm); }
.rbac-area-head { display: flex; width: 100%; align-items: center; justify-content: space-between; gap: var(--space-4); padding: var(--space-4) var(--space-5); color: var(--text); background: color-mix(in srgb,var(--field) 64%,var(--panel)); border: 0; text-align: left; cursor: pointer; }
.rbac-area-head strong,.rbac-area-head small { display: block; }
.rbac-area-head strong { font-size: 18px; }
.rbac-area-head small { margin-top: 4px; color: var(--muted); font-size: 13px; font-weight: 400; }
.rbac-area-meta { color: var(--muted); font-size: 13px; white-space: nowrap; }
.rbac-area-meta i { display: inline-block; font-style: normal; transition: transform var(--duration-base) var(--ease); }
.rbac-area.collapsed .rbac-area-meta i { transform: rotate(180deg); }
.rbac-area.collapsed .rbac-area-body { display: none; }
.rbac-area-body { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: var(--space-4); padding: var(--space-4); }
.rbac-module { min-width: 0; overflow: hidden; border: 1px solid var(--line); border-radius: var(--radius-sm); }
.rbac-module-name { display: flex; align-items: center; padding: 12px 14px; background: var(--field); }
.rbac-module-name strong { font-size: 15px; }
.rbac-module-grid { display: grid; grid-template-columns: minmax(240px,1fr) repeat(3,90px); align-items: center; }
.rbac-column-head { color: var(--muted); border-bottom: 1px solid var(--line); font-size: 11px; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; }
.rbac-column-head span { padding: 7px 10px; text-align: center; }
.rbac-column-head span:first-child { text-align: left; }
.rbac-permission { min-height: 58px; border-bottom: 1px solid var(--line); }
.rbac-permission:last-child { border-bottom: 0; }
.rbac-permission.is-view { background: color-mix(in srgb,var(--holding) 4%,transparent); }
.rbac-permission > div { min-width: 0; padding: 10px 14px; }
.rbac-permission > div span { display: block; }
.rbac-permission > div span { font-size: 14px; line-height: 1.4; }
.rbac-check { display: grid; height: 100%; min-height: 56px; place-items: center; border-left: 1px solid var(--line); }
.rbac-check input { width: 19px; height: 19px; accent-color: var(--holding); cursor: pointer; }
.rbac-state { color: var(--muted); }
.rbac-state.on { color: var(--ok); font-weight: 800; }
.rbac-actions { position: sticky; bottom: 0; z-index: var(--z-sticky); display: flex; align-items: center; justify-content: space-between; gap: var(--space-4); margin-top: var(--space-4); padding: var(--space-3) var(--space-4); background: color-mix(in srgb,var(--panel) 92%,transparent); border: 1px solid var(--line); border-radius: var(--radius); box-shadow: 0 -8px 24px rgba(16,35,56,.1); backdrop-filter: blur(10px); }
.rbac-actions > span { color: var(--muted); font-size: 13px; }
.rbac-actions > div { display: flex; gap: var(--space-2); }
#rbac-reset { display: none; }

@media (max-width: 640px) {
  .cc-split { align-items: stretch; flex-direction: column; }
  .cc-cluster > .btn { flex: 1 1 auto; text-align: center; }
  .cc-touch { min-width: 44px; min-height: 44px; }
  .action-queue-head { align-items: start; padding: var(--space-4); }
  .action-item { grid-template-columns: 4px minmax(0, 1fr); gap: var(--space-3); padding-right: var(--space-4); }
  .action-open { grid-column: 2; width: 100%; text-align: center; }
  .integration-hero { grid-template-columns: 1fr; padding: var(--space-5); }
  .integration-signal { padding: var(--space-4) 0 0; border-top: 1px solid rgba(255,255,255,.24); border-left: 0; }
  .integration-grid { grid-template-columns: 1fr; }
  .int-foot { align-items: stretch; flex-direction: column; }
  .int-foot .btn { width: 100%; text-align: center; }
  .job-head { align-items: stretch; flex-direction: column; }
  .job-strip { grid-template-columns: repeat(2, 1fr); }
  .job-strip > div { border-bottom: 1px solid var(--line); }
  .job-row { grid-template-columns: 4px minmax(0,1fr); padding-right: var(--space-4); }
  .job-row > form { grid-column: 2; padding-bottom: var(--space-4); }
  .job-row > form .btn { width: 100%; }
  .job-row-head { flex-direction: column; }
  .ops-head { align-items: stretch; flex-direction: column; }
  .ops-active { padding: var(--space-3) 0 0; border-top: 2px solid var(--holding); border-left: 0; }
  .ops-ticket-head { flex-direction: column; }
  .ops-actions { grid-template-columns: 1fr; }
  .ops-actions form { align-items: stretch; flex-direction: column; }
  .ops-actions .btn, .ops-actions .filter-in, .ops-actions label { width: 100%; box-sizing: border-box; }
  .rbac-hero { align-items: stretch; flex-direction: column; }
  .rbac-super { padding: var(--space-3) 0 0; border-top: 1px solid rgba(255,255,255,.22); border-left: 0; }
  .rbac-rules,.rbac-area-body { grid-template-columns: 1fr; }
  .rbac-module-grid { grid-template-columns: minmax(160px,1fr) repeat(3,54px); }
  .rbac-column-head span { padding-inline: 3px; font-size: 8px; }
  .rbac-actions { align-items: stretch; flex-direction: column; }
  .rbac-actions > div,.rbac-actions .btn { width: 100%; }
}

@media (min-width:641px) and (max-width:1200px) { .rbac-area-body { grid-template-columns: 1fr; } }

/* ============================================================
   Canonical typography — one hierarchy across every module.
   ============================================================ */
.content{font-size:var(--type-body);line-height:var(--leading-body)}
.content>h1,.content>.head-row h1,.dash-hero h1,.inv-hero h1{font-size:var(--type-page-title);line-height:var(--leading-title);letter-spacing:-.018em}
.content h2,.dash-section-title>span:first-child{font-size:var(--type-section-title);line-height:1.25}
.content h3,.inv-identity h3,.sys-name{font-size:var(--type-card-title);line-height:1.35}
.content>.lead,.dash-hero p,.inv-hero p{font-size:var(--type-body);line-height:var(--leading-body)}
.content .btn,.content button,.content input,.content select,.content textarea{font-size:var(--type-ui)}
.content .muted,.content small,.kpi-note,.dp-stat,.dp-time{font-size:var(--type-caption)}

/* Dashboard follows the shared scale; its identity comes from structure, not oversized text. */
.dash-overline,.dash-section-title>span:first-child small{font-size:var(--type-caption)}
.dash-pulse b,.dash-pulse small{font-size:var(--type-caption)}
.dash-vitals .kpi-l{font-size:var(--type-caption)}
.dash-command-grid .dp-head,.action-title{font-size:var(--type-ui)}
.dash-command-grid .dp-stat b{font-size:26px}

/* Systems inventory: technical does not mean microscopic. */
.inv-overline{font-size:var(--type-caption)}
.inv-summary span,.inv-group>header h2,.inv-group>header span{font-size:var(--type-caption)}
.inv-search input,.inv-filter button{font-size:var(--type-ui)}
.inv-identity p,.inv-state>span:last-child{font-size:var(--type-caption)}
.inv-connection span{font-size:var(--type-caption)}
.inv-connection strong{font-size:var(--type-ui)}
.inv-controls .btn,.inv-manage{font-size:var(--type-caption)}
/* Tầng component chặn form dựng sẵn của trình duyệt làm đội chiều cao hàng inventory.
   Phải nằm ở đây chứ không chỉ ở app.css: components.css nạp SAU nên là chốt cuối. */
.inv-controls form.pw{display:inline-flex;align-items:center;margin:0;padding:0}
.inv-manage form.inline{display:inline-flex;align-items:center;margin:0;padding:0}

@media(max-width:560px){
  :root{--type-page-title:26px;--type-section-title:19px;--type-card-title:15.5px;--type-body:14.5px;--type-ui:13px;--type-caption:12px}
}

/* Full-system typography sweep. These semantic roles intentionally win over
   legacy module-local and inline sizes; OTP/code/icon display sizes stay exempt. */
.side nav a,.who{font-size:var(--type-body)}
.side nav .nav-sec,.nav-sec,.crumb,.crumb strong,.cmd-trigger,.acct-name,.acct-hname,.acct-item{font-size:var(--type-ui)}
.acct-role,.acct-hmail,.acct-car,.nav-caret,.cmd-trigger kbd,.cmdk-ty{font-size:var(--type-caption)}

.content .btn,.content .btn.sm,.content .btn.xs,.content button:not(.sp-close),.content .danger-lnk{font-size:var(--type-ui)!important}
.content .muted,.content small,.content code,.content .pathc{font-size:var(--type-caption)!important}
.content .banner,.content .ui-state p,.content .page-status,.content .cc-dialog-panel p{font-size:var(--type-ui)}
.content .form-grid label,.content .form-grid .fld,.content .form-grid label.chk,
.content .form-grid input,.content .form-grid select,.content .form-grid textarea,
.content .filter-in,.content .tf-form input,.content .tf-form select{font-size:var(--type-ui)!important}
.content table,.content .tbl,.content .tbl td,.content .tbl.small td,.content .tbl.small th{font-size:var(--type-ui)!important}
.content .tbl th{font-size:var(--type-caption)}
.content .status,.content .role,.content .cbadge,.content .src-badge,.content .tf-st,
.content .group-n,.content .pillar,.content .tf-d,.content .tf-unit,.content .tf-delta{font-size:var(--type-caption)}
.content .group-h,.content .sf-btn,.content .cmp-name,.content .cmp-val,.content .links a{font-size:var(--type-ui)}

.action-kicker,.action-eyebrow,.action-detail,.action-count{font-size:var(--type-caption)}
.integration-signal span,.integration-legend,.int-owner,.int-status,.int-note,.int-foot{font-size:var(--type-caption)}
.integration-card>p{font-size:var(--type-ui)}
.job-pulse,.job-strip span,.job-row-head code,.job-status,.job-dead,.job-meta,.job-error,.job-events{font-size:var(--type-caption)}
.ops-active span,.ops-strip span,.ops-ticket-head code,.ops-severity,.ops-status,.ops-source,.ops-meta,.ops-resolution{font-size:var(--type-caption)}
.rbac-kicker,.rbac-super span,.rbac-rules span,.rbac-area-head small,.rbac-area-meta,
.rbac-column-head,.rbac-column-head span,.rbac-actions>span{font-size:var(--type-caption)}
.rbac-permission>div span{font-size:var(--type-ui)}

.tree .node,.tree .node.leaf,.eco-site,.legend,.cmp-row{font-size:var(--type-ui)}
.tree .node small,.tree .lf-sub,.eco-hold small,.eco-phead small,.eco-sname i{font-size:var(--type-caption)}
.fb-name,.fb-body,.ig-name,.ig-cap,.fb-actions,.sp-tab{font-size:var(--type-ui)!important}
.fb-sub,.fb-link,.ai-img-row #ai-img-status{font-size:var(--type-caption)!important}
.dg-step h4,.dg-box .s,.gm-head,.gm-tag,.gm-status,.ca-status{font-size:var(--type-caption)}
.dg-box,.logo-select .ls-btn,.logo-select .ls-menu li,.combo-menu li,.gm-name,.gm-acts button,.gm-row input,.gm-add input,.combo-addpanel input{font-size:var(--type-ui)}

.pb-g,.pb-tbl,.pb-warn,.pb-list,.pb-p,.tl-detail,.cl-add select,.cl-add input{font-size:var(--type-ui)!important}
.pb-h2{font-size:var(--type-section-title)!important}
.chip,.tl-at,.tl-meta{font-size:var(--type-caption)!important}
.tl-title{font-size:var(--type-card-title)!important}
.login-card .sub,.login-card label,.login-card input{font-size:var(--type-ui)}
.cc-toast .tt{font-size:var(--type-ui)!important}.cc-toast .sb{font-size:var(--type-caption)!important}

/* Retire legacy inline micro-text without touching deliberate large OTP/icon displays. */
.content [style*="font-size:11px"],.content [style*="font-size:12px"]{font-size:var(--type-caption)!important}
.content [style*="font-size:13px"],.content [style*="font-size:14px"]{font-size:var(--type-ui)!important}
