/*
 * Lean typography system
 * Keeps emphasis intentional across operations, fleet, attendance and assistant UI.
 */
:root {
  --weight-regular: 400;
  --weight-medium: 500;
  --weight-semibold: 600;
  --weight-display: 700;
}

body,
button,
input,
select,
textarea {
  font-weight: var(--weight-regular);
}

/* Neutralize legacy class-level 800–950 weights before rebuilding hierarchy below. */
body :where([class]) {
  font-weight: inherit !important;
}

/* Titles retain hierarchy without the previous extra-bold appearance. */
h1,
h2,
h3,
h4,
h5,
h6,
.ph h2,
.modal-h h2,
.modal-h h3,
.knowledge-title h2,
.knowledge-section h3,
.tenant-control-hero h2,
.login-title,
.login-stage h2 {
  font-weight: var(--weight-semibold) !important;
  letter-spacing: -.015em;
}

/* Semantic emphasis is restrained throughout cards, lists and tables. */
b,
strong,
.card-h b,
.item b,
.dt td b,
.dt td strong,
.workspace-card-copy b,
.selected-workspace-summary b,
.fleet-report-card b,
.fleet-route-chip b,
.fleet-location-register b,
.fleet-attention-item b,
.knowledge-doc b,
.action-card b,
.ai-section b {
  font-weight: var(--weight-semibold) !important;
}

/* Controls should feel precise, not visually loud. */
button,
.primary,
.outline,
.danger,
.success,
.amber,
.tab,
.tool-btn,
.stage-btn,
.role-btn,
.fleet-module-tab,
.fleet-module-tabs > button,
.fleet-top-tabs .tab,
.login-submit,
.login-back,
.login-password-toggle,
.tenant-admin-entry span,
.scope-picker summary,
.ai-quick button {
  font-weight: var(--weight-medium) !important;
}

.tab.active,
.fleet-module-tab.active,
.fleet-module-tabs > button.active,
.primary,
.login-submit {
  font-weight: var(--weight-semibold) !important;
}

/* Labels, navigation and supporting metadata use medium weight. */
label,
.form-grid label,
.tenant-login-form label,
.fleet-route-filters label,
.wide-gantt-filter-grid label,
.gantt-search-row label,
.logo,
.role-name,
.user-pill,
.tenant-switcher,
.tenant-switcher select,
.login-step-row,
.login-test-profiles summary,
.scope-check,
.ai-turn summary,
.assistant-title,
.assistant-source,
.assistant-chip {
  font-weight: var(--weight-medium) !important;
}

/* Compact status elements remain legible at small sizes without black weight. */
.badge,
.report-type-pill,
.tenant-country-code,
.tenant-meta-grid small,
.tenant-count small,
.workspace-card.recent::after,
.workspace-code,
.selected-workspace-code,
.fleet-gps-quality,
.fleet-live-status,
.hier-emp-id,
.btn-xs,
.knowledge-cover .eyebrow,
.knowledge-section-no,
.login-stage-heading .login-eyebrow,
.login-testing-scope,
.tag,
.ai-sources span,
.ai-turn summary span {
  font-weight: var(--weight-semibold) !important;
  letter-spacing: .035em;
}

/* Tables rely on spacing and colour for hierarchy instead of heavy type. */
.dt th,
.gantt th,
table th,
.table-head,
.ed-table-head {
  font-weight: var(--weight-semibold) !important;
}

.dt td,
.gantt td,
table td,
.sub,
.muted,
.role-desc,
.role-profile-copy,
.workspace-card-copy small,
.selected-workspace-summary small {
  font-weight: var(--weight-regular) !important;
}

/* Numeric KPIs may carry slightly more emphasis, but never ultra-black weight. */
.kpi b,
.login-stat b,
.tenant-count b,
.ed-kpi b,
.metric-value,
.stat-value,
.clock {
  font-weight: var(--weight-semibold) !important;
}

/* Brand marks are the only compact elements allowed a display weight. */
.mark,
.login-brand-mark span,
.fleet-route-arrow {
  font-weight: var(--weight-display) !important;
}

.login-title strong,
.login-feedback,
.login-assurance,
.login-trust-list,
.login-security-footer {
  font-weight: var(--weight-medium) !important;
}
