/* ============================================================
   LENTERA Petugas - Business Typography Policy
   Centralized, visual-only type rules. This layer intentionally loads last.
   ============================================================ */

:root {
  /* Source Sans 3 is the neutral, administrative UI typeface. */
  --ff: 'Source Sans 3', 'Segoe UI', Arial, sans-serif;
  --ff-body: 'Source Sans 3', 'Segoe UI', Arial, sans-serif;
  --ff-display: 'Source Sans 3', 'Segoe UI', Arial, sans-serif;

  /* Plus Jakarta Sans is reserved for brand and primary page statements. */
  --ff-brand: 'Plus Jakarta Sans', 'Source Sans 3', 'Segoe UI', sans-serif;

  /* JetBrains Mono is reserved for registration identifiers only. */
  --ff-registration: 'JetBrains Mono', 'Consolas', monospace;

  /* Backward-compatible neutralization of legacy mono references. */
  --ff-mono: var(--ff-body);
}

body,
button,
input,
select,
textarea {
  font-family: var(--ff-body);
}

body {
  font-weight: 400;
}

/* Brand identity and true primary titles */
.top-utility-brand,
.sidebar-brand .brand-em,
.login-logo,
.hero-title,
.report-header h2 {
  font-family: var(--ff-brand);
  font-weight: 700;
}

.top-utility-brand-sub,
.sidebar-brand .brand-sub {
  font-family: var(--ff-body);
}

/* General headings stay restrained and never exceed weight 700. */
h1,
h2,
h3,
h4,
h5,
h6,
.card-title,
.panel-head .card-title,
.modal-title,
.modal-user-title,
.profil-card-title,
.workstation-summary-head h3,
.upload-section-title,
.dok-modal-upload-title,
.print-card-title,
.report-section-title,
.info-col-title,
.form-sec-title,
.fsec-title,
.dash-name,
.top-user-name,
.udm-name,
.recap-card-head-title {
  font-family: var(--ff-body);
  font-weight: 700;
}

/* Navigation uses medium weight; selected state alone gets semibold. */
.nav-item,
.top-nav-breadcrumb,
.top-nav-context {
  font-weight: 500;
}

.nav-item.active,
.top-nav-current {
  font-weight: 600;
}

.nav-group-label {
  font-family: var(--ff-body);
  font-weight: 600;
  letter-spacing: .08em;
}

/* Labels retain hierarchy without excessive shouting or tracking. */
.stat-label,
label.flabel,
.form1-edit-panel .flabel,
.workstation-context-label,
.workstation-summary-list dt,
.info-lbl,
.report-stat .rs-label,
.report-header .report-inst,
.upload-col-label,
.workstation-summary-kicker,
.dur-total-label {
  font-family: var(--ff-body);
  font-weight: 600;
  letter-spacing: .035em;
}

label.flabel,
.form1-edit-panel .flabel,
.workstation-context-label,
.workstation-summary-list dt,
.card-title,
.panel-head .card-title,
.modal-title,
.modal-user-title,
.profil-card-title,
.upload-section-title,
.dok-modal-upload-title,
.print-card-title,
.info-col-title,
.form-sec-title,
.fsec-title {
  text-transform: none;
}

.card-title,
.panel-head .card-title,
.modal-title,
.modal-user-title,
.profil-card-title,
.upload-section-title,
.dok-modal-upload-title,
.info-col-title,
.form-sec-title,
.fsec-title,
.report-section-title {
  letter-spacing: .025em;
}

/* Table labels stay compact and formal. */
thead th,
thead.thead-yellow th,
.user-table thead th {
  font-family: var(--ff-body);
  font-weight: 600;
  letter-spacing: .04em;
}

td,
.info-val,
.workstation-summary-list dd,
.dash-meta,
.tl-title,
.tl-note {
  font-family: var(--ff-body);
  font-weight: 400;
}

.dash-name,
.info-val,
.workstation-summary-list dd,
.tl-title {
  font-weight: 600;
}

/* Buttons and status indicators use semibold rather than heavy display text. */
.btn,
.btn-sm,
.btn-xs,
.tab,
.badge,
.um-role-badge,
.udm-role-chip,
.workstation-status,
.login-btn,
.login-eye,
.pw-eye,
.upload-dropzone-btn {
  font-family: var(--ff-body);
  font-weight: 600;
  letter-spacing: .01em;
}

.tab,
.badge,
.um-role-badge,
.udm-role-chip,
.workstation-status,
.login-eye,
.pw-eye,
.upload-dropzone-btn {
  text-transform: none;
}

/* Operational numbers use the UI face for a calmer, business-like rhythm. */
.stat-val,
.report-stat .rs-val,
.recap-big-num,
.dist-count,
.nav-badge,
.workstation-completeness,
.dur-total-val,
.dur-val,
.step-dur,
.tl-dur,
.tl-time,
.workstation-shortcuts kbd,
.upload-dropzone-ico,
.pagin-page {
  font-family: var(--ff-body);
  font-variant-numeric: tabular-nums;
  letter-spacing: 0;
}

.stat-val,
.report-stat .rs-val,
.recap-big-num {
  font-weight: 700;
}

.dist-count,
.nav-badge,
.workstation-completeness,
.dur-total-val {
  font-weight: 600;
}

.dur-val,
.step-dur,
.tl-dur,
.tl-time,
.workstation-shortcuts kbd {
  font-weight: 400;
}

/* Registration identifiers are the only UI content using monospace. */
code,
.workstation-code,
.upload-meta-code,
.registration-code,
.no-reg-code {
  font-family: var(--ff-registration) !important;
  font-variant-numeric: tabular-nums;
  font-weight: 500;
  letter-spacing: .01em;
}

/* Form values remain natural; numeric input no longer looks like source code. */
input.field-mono,
.field-mono input {
  font-family: var(--ff-body);
  font-variant-numeric: tabular-nums;
  letter-spacing: 0;
}

input,
select,
textarea {
  font-weight: 400;
}

input::placeholder,
textarea::placeholder {
  font-weight: 400;
}

/* Supporting text should recede instead of competing with headings. */
.top-utility-brand-sub,
.top-user-role,
.conn-label,
.modal-sub,
.login-sub,
.hero-sub,
.stat-sub,
.dash-meta,
.upload-section-subtitle,
.upload-section-meta,
.workstation-card-subtitle,
.detail-edit-hint {
  font-weight: 400;
  letter-spacing: 0;
}

@media (max-width: 640px) {
  .top-utility-brand,
  .hero-title,
  .login-logo {
    letter-spacing: -.01em;
  }
}
