/*
 * Tassonomia tipografica di Jarvis.
 *
 * Questo file è l'unico punto in cui si decidono dimensioni e proporzioni del
 * testo. styles.css descrive soltanto geometria, colore e comportamento.
 *
 * Un elemento ha un ruolo semantico. Il contenitore può poi scegliere una
 * densità regular, compact o dense senza cambiare quel ruolo. I simboli sono
 * separati dal testo, così una freccia non altera la gerarchia editoriale.
 */

:root {
  --type-user-scale: 100%;
  font-size: var(--type-user-scale);

  --type-size-display: clamp(2.125rem, 5.3vw, 4.25rem);
  --type-size-page-title: clamp(1.6875rem, 3vw, 2.5rem);
  --type-size-entity-title: 1.6875rem;
  --type-size-panel-title: 1.125rem;
  --type-size-section-title: 1.0625rem;
  --type-size-item-title: 1.05625rem;
  --type-size-body-long: 1.0325rem;
  --type-size-body: .93rem;
  --type-size-body-compact: .8125rem;
  --type-size-control: .8rem;
  --type-size-label: .7rem;
  --type-size-meta: .625rem;
  --type-size-technical: .56875rem;
  --type-size-overline: .625rem;
  --type-size-tag: .5625rem;
  --type-size-metric: 1.21875rem;
  --type-size-status: .8rem;
  --type-size-diary-title: clamp(1.375rem, 2vw, 1.75rem);
  --type-size-diary-meta: .875rem;
  --type-size-editor-tab: .9375rem;

  /* La data in testata dice dove ci si trova, non apre un documento: sta con i
     controlli che ha accanto, non con i titoli di pagina. Per questo ha una voce
     propria e non segue --type-size-page-title. */
  --type-size-calendar-period: clamp(1.5rem, 2.2vw, 1.9375rem);

  /* Il calendario mensile porta la densita' "dense", pensata per griglie di
     telemetria. Il nome del giorno e il conteggio degli eventi nascosti non sono
     telemetria: sono le due sole scritte che orientano la lettura della griglia,
     e alla misura tecnica di quella densita' valevano sette pixel. Hanno una
     voce propria, fuori dalle varianti, come le altre voci del calendario. */
  /* In pixel, e non in rem, di proposito: e' l'unica misura che deve restare
     ferma mentre la scala tipografica cambia. Le schede del pannello sono i
     comandi con cui si cambia la scala, e la loro posizione dev'essere la stessa
     prima e dopo: se rimpicciolissero insieme al resto, l'utente perderebbe di
     vista il comando proprio mentre lo sta usando. */
  --type-size-configuration-tab: 13px;

  --type-size-calendar-month-weekday: .8125rem;
  --type-size-calendar-month-more: .75rem;

  --type-size-calendar-week-day-name: 1.0625rem;
  --type-size-calendar-week-day-number: 1.0625rem;
  --type-size-calendar-week-label: .6875rem;
  --type-size-calendar-week-hour: .875rem;
  --type-size-calendar-week-event-title: .8125rem;
  --type-size-calendar-week-event-time: .6875rem;

  --type-size-metric-small: 1.0625rem;
  --type-size-metric-clock: 1.3125rem;
  --type-size-metric-scale: 1.5rem;
  --type-size-metric-large: 2rem;
  --type-size-metric-display: 2.75rem;

  --type-size-symbol-xs: .5rem;
  --type-size-symbol-small: .625rem;
  --type-size-symbol: .875rem;
  --type-size-symbol-large: 1.125rem;
  --type-size-symbol-xl: 1.375rem;
  --type-size-symbol-xxl: 1.75rem;
  --type-size-symbol-display: 2.5rem;
  --type-size-symbol-avatar: .75rem;

  --type-size-brand-mark: 1.4375rem;
  --type-size-decorative-label: .4375rem;
  --type-size-decorative-value: 1rem;

  --type-leading-heading: 1.2;
  --type-leading-body: 1.45;
  --type-leading-long: 1.7;
  --type-leading-compact: 1.35;
  --type-leading-technical: 1.25;
  --type-leading-control: 1.2;
}

/* Compatto significa interfaccia operativa, non testo sacrificabile. */
.type-density-compact {
  --type-size-panel-title: 1rem;
  --type-size-section-title: .875rem;
  --type-size-item-title: .8125rem;
  --type-size-body-long: .75rem;
  --type-size-body: .75rem;
  --type-size-body-compact: .625rem;
  --type-size-control: .6875rem;
  --type-size-label: .625rem;
  --type-size-meta: .5625rem;
  --type-size-technical: .5rem;
  --type-size-overline: .5rem;
  --type-size-tag: .5rem;
  --type-size-metric: .75rem;
  --type-size-status: .625rem;
}

.whatsapp-appointment.type-density-compact {
  --type-size-status: .6875rem;
}

/* La cronologia è una sequenza ad alta densità, ma non una griglia tecnica:
   conserva tutti i ruoli semantici riducendoli insieme di un solo gradino. */
.patient-timeline-panel {
  --type-size-item-title: .925rem;
  --type-size-body: .8125rem;
  --type-size-control: .7rem;
  --type-size-meta: .55rem;
  --type-size-overline: .55rem;
}

.patient-source-filter.active::before {
  font-size: var(--type-size-meta);
  line-height: 1;
}

.patient-timeline-when {
  font-weight: 520;
}

.patient-timeline-hours {
  font-weight: 400;
}

/* Dense è riservato a griglie e telemetria ad alta concentrazione. */
.type-density-dense {
  --type-size-panel-title: 1rem;
  --type-size-section-title: .625rem;
  --type-size-item-title: .625rem;
  --type-size-body-long: .625rem;
  --type-size-body: .5625rem;
  --type-size-body-compact: .5rem;
  --type-size-control: .5rem;
  --type-size-label: .5rem;
  --type-size-meta: .4375rem;
  --type-size-technical: .4375rem;
  --type-size-overline: .4375rem;
  --type-size-tag: .4375rem;
  --type-size-metric: .75rem;
  --type-size-status: .5rem;
}

/* Eccezioni intenzionali di densità, raccolte e documentate qui. */
.app-bar.type-density-compact {
  --type-size-control: .8rem;
  --type-size-body-compact: .8rem;
  --type-size-meta: .625rem;
  --type-size-status: .88rem;
}

.chat-panel.type-density-compact {
  --type-size-panel-title: 1.125rem;
  --type-size-body-long: .6875rem;
  --type-size-control: .75rem;
  --type-size-overline: .625rem;
}

.calendar-filters.type-density-compact {
  --type-size-item-title: .8rem;
  --type-size-meta: .64rem;
  --type-size-control: .72rem;
  --type-size-overline: .625rem;
}

.patient-directory.type-density-compact {
  --type-size-item-title: .8125rem;
  --type-size-body-compact: .625rem;
  --type-size-control: .8125rem;
  --type-size-meta: .625rem;
  --type-size-tag: .5rem;
}

.settings-panel {
  /* Tutte le schede di configurazione condividono la stessa scala leggibile.
     Il pannello ora scorre, quindi non serve piu' ridurre i ruoli semantici per
     costringerne il contenuto nella viewport. */
  --type-size-panel-title: 1.375rem;
  --type-size-section-title: 1.125rem;
  --type-size-item-title: 1rem;
  --type-size-body: 1rem;
  --type-size-body-compact: .875rem;
  --type-size-control: .9375rem;
  --type-size-label: .875rem;
  --type-size-meta: .8125rem;
  --type-size-technical: .75rem;
  --type-size-overline: .75rem;
  --type-size-tag: .75rem;
  --type-size-metric: 1.25rem;
  --type-size-status: .875rem;
}

/* Display */
.type-display,
.hero-panel h2 {
  font-size: var(--type-size-display);
  line-height: .98;
}

/* Titoli di pagina e di contesto */
.type-page-title,
.workspace-header h1 {
  font-size: var(--type-size-page-title);
  line-height: 1.1;
}

.diary-heading h2 {
  font-size: var(--type-size-diary-title);
  line-height: 1.1;
}

.diary-heading #diaryMeta {
  font-size: var(--type-size-diary-meta);
  line-height: var(--type-leading-body);
}

/* Entità: persone, eventi, diari. */
.type-entity-title,
.auth-gate-card h1,
.agenda-preview-card h3,
.event-details h3,
.patient-identity h2,
.patient-name-trigger {
  font-size: var(--type-size-entity-title);
  line-height: var(--type-leading-heading);
}

.patient-name-input {
  font-weight: 400;
  letter-spacing: normal;
}

.event-details .detail-event-title,
.event-details .detail-editor-title {
  font-size: var(--type-size-panel-title);
  line-height: var(--type-leading-heading);
}

.event-calendar-name {
  font-size: var(--type-size-body);
  line-height: var(--type-leading-body);
}

.event-calendar-source {
  font-size: var(--type-size-body-compact);
  line-height: var(--type-leading-compact);
}

/* Titoli di pannelli e finestre. */
.type-panel-title,
.chat-panel-header h2,
.calendar-connection h3,
.issues-detail-heading h2,
.settings-header h2,
.patient-create-heading h2,
.patient-dependent-heading h2,
.patient-deletion-heading h2,
.patient-reference-dialog-heading h2,
.whatsapp-reply-heading h2,
.saved-diary-header h3,
.wake-diagnostics-header h2 {
  font-size: var(--type-size-panel-title);
  line-height: var(--type-leading-heading);
}

/* Sezioni interne. */
.type-section-title,
.patient-section-heading h3,
.patient-reference-network-heading h3,
.patient-reference-dialog-section-heading h3,
.structure-review-header h3,
.settings-section-heading h3,
.whatsapp-appointment-heading h4,
.wake-diagnostics-section-heading h3,
.wake-diagnostics-timings h3 {
  font-size: var(--type-size-section-title);
  line-height: var(--type-leading-heading);
}

/* Titoli di elementi ripetuti. */
.type-item-title,
.calendar-filters header strong,
.calendar-toggle strong,
.agenda-copy strong,
.month-event,
.patient-connection h3,
.patient-list-copy strong,
.patient-reference-search-link strong,
.patient-timeline-when,
.patient-timeline-copy h4,
.settings-group-heading h4,
.settings-action > strong,
.whatsapp-message-card-header h5,
.whatsapp-reply-recipient,
.wake-diagnostics-engine span,
.wake-diagnostics-actions strong,
.wake-diagnostics-incident header strong {
  font-size: var(--type-size-item-title);
  line-height: var(--type-leading-compact);
}

/* Testo lungo, clinico o conversazionale. */
.type-body-long,
.bubble,
.editor-panel textarea,
.structured-editor,
.structure-review ul,
.whatsapp-reply-context-text,
.whatsapp-reply-text {
  font-size: var(--type-size-body-long);
  line-height: var(--type-leading-long);
}

/* Testo e valori completi. */
.type-body,
.auth-gate-card > p:not(.eyebrow),
.calendar-connection p,
.agenda-preview-list dd,
.detail-list dd,
.detail-notes-value,
.event-editor-field input,
.event-editor-field select,
.event-editor-field textarea,
.event-editor-field .event-time-trigger,
.patient-contact-value strong,
.patient-contact-value strong a,
.patient-timeline-copy p,
.patient-detail-empty p,
.patient-dependent-hint,
.patient-deletion-warning,
.patient-deletion-summary-item,
.patient-deletion-checks li,
.issues-original-text,
.issues-suggested-text,
.structure-review-intro,
.whatsapp-operational-excerpt,
.whatsapp-operational-situation-label,
.wake-diagnostics-incident > p {
  font-size: var(--type-size-body);
  line-height: var(--type-leading-body);
}

/* Descrizioni brevi e testo di supporto. */
.type-body-compact,
.auth-gate-card > small.type-body-compact,
.auth-user-name,
.workspace-header > div > p:last-child,
.hero-panel > p:not(.eyebrow),
.metric-card p,
.agenda-preview-hint,
.empty-state p,
.event-editor-note,
.issues-list-preview,
.issues-detail-empty p,
.patient-connection p,
.patient-section-heading small,
.patient-contact-empty,
.patient-empty-message,
.patient-reference-network-empty,
.patient-reference-network-status,
.patient-reference-network-error p,
.patient-reference-co-referents,
.patient-reference-search-omitted,
.patient-reference-dialog-footer p,
.patient-reference-dialog-removal-preview ul,
.patient-reference-dialog-empty,
.patient-reference-dialog-feedback,
.patient-reference-dialog-toast,
.privacy-note,
.settings-header p:last-child,
.settings-empty,
.settings-section-heading p,
.settings-group-heading p,
.settings-help,
.settings-unit,
.settings-range-value,
.whatsapp-operational-blocked-info,
.whatsapp-reply-expiry,
.whatsapp-reply-context-time,
.wake-diagnostics-header p:last-child,
.wake-diagnostics-empty {
  font-size: var(--type-size-body-compact);
  line-height: var(--type-leading-compact);
}

/* Controlli interattivi e testo immesso. */
.type-control,
.mode-toggle-label,
.workspace-nav button,
.auth-user button,
.primary-action,
.secondary-action,
.commands-card button,
.input,
.calendar-week-hours,
.calendar-week-hours .event-time-trigger,
.calendar-week-hours .event-time-option,
.calendar-view-switcher button,
.calendar-period-navigation button,
.calendar-drawer-toggle,
.text-action,
.detail-action,
.event-editor-all-day,
.event-details .primary-action,
.event-details .secondary-action,
.danger-action,
.google-event-link,
.issues-filters button,
.issues-list-item,
.patient-scope-switch button,
.patient-cleanup-trigger,
.patient-cleanup-menu-item,
.patient-search input,
.patient-create-field input,
.patient-create-toggle,
.patient-list-more,
.patient-reference-search-link,
.patient-source-filter,
.patient-timeline-search-toggle,
.patient-timeline-search-input,
.patient-timeline-search-close,
.patient-contact-use,
.patient-name-input,
.patient-name-save,
.patient-name-cancel,
.patient-organization-trigger,
.patient-organization-input,
.patient-organization-save,
.patient-organization-cancel,
.patient-fiscal-trigger,
.patient-fiscal-save,
.patient-fiscal-cancel,
.patient-connection-trigger,
.patient-more-actions-trigger,
.patient-more-action,
.patient-connection-back,
.patient-connection-direction,
.patient-membership-action,
.patient-new-appointment,
.patient-add-dependent,
.patient-dependent-field input,
.patient-dependent-actions button,
.patient-reference-link,
.patient-reference-network-retry,
.patient-reference-network-manage,
.patient-reference-dialog-close,
.patient-reference-dialog-toast-close,
.patient-reference-dialog-field input,
.patient-reference-dialog-remove,
.patient-reference-dialog-add-button,
.patient-reference-dialog-removal-actions button,
.patient-reference-dialog-footer button,
.patient-co-referent-quick-selected button,
.patient-co-referent-quick-patient,
.patient-co-referent-quick-role,
.patient-co-referent-quick-footer button,
.patient-reference-matrix-handle,
.patient-reference-matrix-badge,
.patient-delete-contact,
.patient-deletion-actions button,
.patient-contact-point-edit,
.patient-contact-point-delete,
.patient-contact-point-field input,
.patient-contact-point-field select,
.patient-contact-point-save,
.patient-contact-point-cancel,
.patient-address-edit,
.patient-address-delete,
.patient-address-field input,
.patient-address-field select,
.patient-address-save,
.patient-address-cancel,
.diary-export,
.diary-actions-left .primary-action,
.diary-local-recognition-control,
.diary-actions-right .primary-action,
.diary-actions-right .secondary-action,
.diary-actions-right .danger-action,
.clinical-compare-link,
.review-alerts-toggle,
.settings-field input,
.settings-field select,
.settings-field textarea,
.settings-section-actions button,
.settings-restore,
.settings-action-row input,
.settings-action-row button,
.wake-diagnostics-actions button,
.wake-diagnostics-classification button,
.wake-diagnostics-footer button,
.whatsapp-workspace-refresh {
  font-size: var(--type-size-control);
  line-height: var(--type-leading-control);
}

.patient-organization-trigger {
  font-size: var(--type-size-body);
  line-height: var(--type-leading-compact);
}

/* Etichette che nominano un dato o un campo. */
.type-label,
.metric-card > span,
.agenda-preview-list dt,
.detail-list dt,
.detail-notes-label,
.event-editor-field,
.issues-fact > span,
.patient-summary-card > span,
.patient-name-field > span,
.patient-organization-label,
.patient-fiscal-label,
.patient-contact-group h4,
.patient-contact-point-field > span,
.patient-address-field > span,
.patient-dependent-field > span,
.patient-reference-network-group-heading h4,
.patient-reference-search-section > h4,
.patient-reference-search-coreferents > span,
.patient-reference-role,
.patient-reference-status,
.patient-reference-channel,
.patient-reference-dialog-field>span,
.patient-reference-dialog-result-action,
.patient-co-referent-quick-outcome b,
.patient-reference-matrix-type,
.patient-reference-matrix-role,
.editor-tab,
.settings-field > label > span,
.whatsapp-reply-field > span,
.wake-diagnostics-timings article > span,
.wake-diagnostics-live article > span {
  font-size: var(--type-size-label);
  line-height: var(--type-leading-compact);
}

/* Metadati leggibili ma subordinati. */
.type-meta,
.auth-gate-card > small,
.auth-user,
.auth-user-email,
.jarvis-guidance,
.agenda-loading,
.agenda-time small,
.agenda-copy small,
.hidden-calendar-group summary,
.hidden-calendar-group summary small,
.calendar-toggle small,
.issues-count,
.issues-queue-header small,
.issues-list-time,
.issues-list-sender,
.issues-detail-received,
.issues-fact small,
.patient-count,
.patient-create-hint,
.patient-create-feedback,
.patient-create-field > span,
.patient-dependent-feedback,
.patient-deletion-intro,
.patient-deletion-feedback,
.patient-list-copy small,
.patient-reference-search-link small,
.patient-summary-card small,
.patient-contact-value small,
.patient-contact-point-feedback,
.patient-address-feedback,
.patient-timeline-source,
.patient-reference-network-count,
.patient-reference-dialog-section-heading span,
.patient-reference-dialog-search-status,
.patient-reference-dialog-result small,
.patient-co-referent-quick-subtitle,
.patient-co-referent-quick-selected small,
.patient-co-referent-quick-patient-copy small,
.patient-co-referent-quick-outcome small,
.patient-reference-matrix-legend,
.structure-review-meta,
.whatsapp-reply-count,
.wake-diagnostics-engine small,
.wake-diagnostics-legend,
.wake-diagnostics-incident time,
.wake-diagnostics-footer > p:first-child {
  font-size: var(--type-size-meta);
  line-height: var(--type-leading-compact);
}

/* Telemetria e calendari ad alta densità. */
.type-technical,
.week-hidden-events,
.week-hidden-events strong,
.week-hidden-events small,
.wake-diagnostics-timings header p,
.wake-diagnostics-timings article small,
.wake-diagnostics-live article > small,
.wake-diagnostics-section-heading p,
.wake-diagnostics-actions p {
  font-size: var(--type-size-technical);
  line-height: var(--type-leading-technical);
}

.wake-diagnostics-timings article .wake-diagnostics-timing-help {
  font-size: var(--type-size-body-compact);
  line-height: var(--type-leading-compact);
}

/* Schede del pannello di configurazione: fuori dalla scala per scelta. */
.configuration-tabs button {
  font-size: var(--type-size-configuration-tab);
  line-height: var(--type-leading-control);
}

/* Le due scritte che orientano la griglia mensile. */
.month-weekday {
  font-size: var(--type-size-calendar-month-weekday);
  line-height: var(--type-leading-compact);
}

.month-more {
  font-size: var(--type-size-calendar-month-more);
  line-height: var(--type-leading-compact);
}

/* Data del periodo mostrato: oggi, la settimana, il mese. */
.calendar-period-heading h2 {
  font-size: var(--type-size-calendar-period);
  line-height: var(--type-leading-heading);
}

/* La settimana resta densa nella geometria, non nella leggibilità. */
.week-day-name {
  font-size: var(--type-size-calendar-week-day-name);
  line-height: var(--type-leading-compact);
}

.week-day-number {
  font-size: var(--type-size-calendar-week-day-number);
  line-height: 1;
}

.week-corner-label,
.week-all-day-label {
  font-size: var(--type-size-calendar-week-label);
  line-height: var(--type-leading-compact);
}

.week-time-axis span {
  font-size: var(--type-size-calendar-week-hour);
  line-height: 1;
}

.week-time-event,
.week-all-day-event {
  font-size: var(--type-size-calendar-week-event-title);
  line-height: var(--type-leading-compact);
}

.week-time-event .calendar-event-time {
  font-size: var(--type-size-calendar-week-event-time);
  line-height: var(--type-leading-compact);
}

.week-drop-time-label {
  font-size: var(--type-size-calendar-week-event-time);
  line-height: 1;
}

.calendar-notes-time {
  font-size: var(--type-size-body);
  line-height: var(--type-leading-compact);
}

.editor-tab {
  font-size: var(--type-size-editor-tab);
}

.calendar-notes-copy {
  font-size: var(--type-size-body);
  line-height: var(--type-leading-body);
}

/* Sovratitoli e separatori editoriali. */
.type-overline,
.eyebrow,
.commands-category,
.event-type,
.agenda-date-heading,
.patient-timeline-period {
  font-size: var(--type-size-overline);
  line-height: var(--type-leading-compact);
}

.home-hero-brand {
  font-size: calc(var(--type-size-overline) + .125rem);
}

.detail-calendar-name {
  font-size: var(--type-size-label);
  line-height: var(--type-leading-compact);
  font-weight: 650;
}

/* Etichette brevi, appartenenze e stati locali. */
.type-tag,
.patient-kind,
.patient-label,
.patient-contact-value em,
.issues-status,
.issues-identification,
.issues-list-category,
.settings-badge,
.wake-diagnostics-status > strong {
  font-size: var(--type-size-tag);
  line-height: var(--type-leading-compact);
}

/* Numeri o valori che costituiscono il centro informativo di una scheda. */
.type-metric,
.system-clock,
.agenda-time strong,
.agenda-preview-time,
.month-day-number,
.patient-summary-card strong,
.wake-diagnostics-timings article strong,
.wake-diagnostics-live article > strong {
  font-size: var(--type-size-metric);
  line-height: var(--type-leading-heading);
}

/* Identificatori strutturati importanti, subordinati al nome dell'entità. */
.patient-fiscal-trigger.has-value,
.patient-fiscal-input {
  font-size: var(--type-size-metric-small);
  line-height: var(--type-leading-heading);
}

.patient-fiscal-trigger:not(.has-value) {
  font-size: var(--type-size-body-compact);
  line-height: var(--type-leading-compact);
}

.patient-connection-direction strong {
  font-size: var(--type-size-item-title);
  line-height: var(--type-leading-heading);
}

.patient-connection-direction small {
  font-size: var(--type-size-body);
  line-height: var(--type-leading-body);
}

.whatsapp-report-stat strong {
  font-size: var(--type-size-metric);
  line-height: var(--type-leading-heading);
}

.whatsapp-operational-filter,
.whatsapp-operational-suggestion,
.whatsapp-operational-sender,
.whatsapp-operational-assignment {
  font-size: var(--type-size-control);
}

.whatsapp-operational-excerpt {
  font-size: var(--type-size-body-long);
  line-height: var(--type-leading-body);
}

.whatsapp-operational-context,
.whatsapp-operational-context-appointments,
.whatsapp-operational-context-related {
  font-size: var(--type-size-body);
  line-height: var(--type-leading-body);
}

.whatsapp-operational-action,
.whatsapp-operational-more-link,
.whatsapp-operational-patient-input {
  font-size: var(--type-size-body);
  line-height: var(--type-leading-control);
}

.whatsapp-operational-choice-label {
  font-size: var(--type-size-body-long);
  line-height: var(--type-leading-body);
}

.whatsapp-operational-patient-result .patient-list-copy strong,
.whatsapp-operational-patient-result .patient-list-copy small,
.whatsapp-operational-patient-selection .patient-list-copy strong,
.whatsapp-operational-patient-selection .patient-list-copy small {
  font-size: var(--type-size-body);
  line-height: var(--type-leading-compact);
}

.whatsapp-operational-stat span,
.whatsapp-operational-conversation h5 {
  font-size: var(--type-size-body-compact);
}

.whatsapp-operational-stat strong {
  font-size: var(--type-size-metric);
}

.whatsapp-operational-kicker {
  font-size: var(--type-size-overline);
}

.whatsapp-operational-identity h4 {
  font-size: var(--type-size-item-title);
}

.whatsapp-operational-identity-row {
  font-size: var(--type-size-body);
  line-height: var(--type-leading-body);
}

.whatsapp-operational-activity-context {
  font-size: var(--type-size-body);
  line-height: var(--type-leading-body);
}

.whatsapp-operational-blocked-event {
  font-size: var(--type-size-section-title);
}

.whatsapp-appointment-heading h4,
.whatsapp-message-card-header h5,
.whatsapp-reply-heading h2,
.whatsapp-reply-recipient {
  font-weight: 720;
}

.whatsapp-reply-heading h2 {
  letter-spacing: -.02em;
}

.whatsapp-reply-field > span {
  letter-spacing: .05em;
  text-transform: uppercase;
}

.whatsapp-message-state {
  font-weight: 650;
}

.whatsapp-operational-status,
.whatsapp-operational-activity-heading span,
.whatsapp-operational-activity-heading time {
  font-size: var(--type-size-status);
}

.whatsapp-outbox-sending-toggle strong {
  font-size: var(--type-size-control);
  line-height: var(--type-leading-control);
}

.whatsapp-outbox-sending-mode p {
  font-size: var(--type-size-body-compact);
  line-height: var(--type-leading-compact);
}

.whatsapp-configuration-heading h2 {
  font-size: var(--type-size-panel-title);
  line-height: var(--type-leading-heading);
}

.whatsapp-configuration-heading p,
.whatsapp-configuration-overall span,
.whatsapp-configuration-row,
.whatsapp-configuration-loading,
.whatsapp-configuration-error {
  font-size: var(--type-size-body-compact);
  line-height: var(--type-leading-compact);
}

.whatsapp-configuration-overall strong,
.whatsapp-configuration-section h3 {
  font-size: var(--type-size-control);
  line-height: var(--type-leading-control);
}

.whatsapp-report-stat-label {
  font-size: var(--type-size-label);
  line-height: var(--type-leading-compact);
}

.whatsapp-report-stat small {
  font-size: var(--type-size-meta);
  line-height: var(--type-leading-technical);
}

.whatsapp-report-note,
.whatsapp-report-stage-label {
  font-size: var(--type-size-body-compact);
  line-height: var(--type-leading-compact);
}

.whatsapp-report-patient {
  font-size: var(--type-size-control);
  line-height: var(--type-leading-control);
}

.whatsapp-report-stage-state,
.whatsapp-report-stage-error {
  font-size: var(--type-size-status);
  line-height: var(--type-leading-compact);
}

.system-clock { font-size: var(--type-size-metric-clock); }

.metric-card strong { font-size: var(--type-size-metric-large); }
.metric-card.accent strong { font-size: var(--type-size-metric-display); }
.home-whatsapp-header h3 { font-size: var(--type-size-section-title); }
.home-whatsapp-header > div > p:last-child,
.home-whatsapp-box span,
.home-whatsapp-preview-action,
.home-whatsapp-preview-appointment { font-size: var(--type-size-body-compact); }
.home-whatsapp-box strong { font-size: var(--type-size-metric-large); }
.home-whatsapp-preview-identity { font-size: var(--type-size-control); }
.call-directory-header h2 { font-size: var(--type-size-page-title); line-height: var(--type-leading-heading); }
.call-directory-header > div > p:last-child { font-size: var(--type-size-body); line-height: var(--type-leading-body); }
.call-directory-search > span,
.call-directory-status,
.call-directory-via { font-size: var(--type-size-body-compact); line-height: var(--type-leading-compact); }
.call-directory-search input { font-size: var(--type-size-body); line-height: var(--type-leading-body); }
.call-directory-scope button,
.call-directory-action { font-size: var(--type-size-control); line-height: var(--type-leading-control); }
.call-directory-name { font-size: var(--type-size-item-title); line-height: var(--type-leading-heading); }
.call-directory-number { font-size: var(--type-size-body); line-height: var(--type-leading-compact); }
.call-directory-refresh,
.call-directory-close { font-size: var(--type-size-symbol-xl); line-height: 1; }
.call-directory-empty { font-size: var(--type-size-body); line-height: var(--type-leading-body); }
.typography-scale-value,
.typography-scale-reset { font-size: var(--type-size-technical); line-height: 1; }
.typography-scale-button { font-size: var(--type-size-body-compact); line-height: 1; }

.patient-title {
  font-size: calc(var(--type-size-overline) + .125rem);
  line-height: var(--type-leading-compact);
}

.patient-directory-toggle {
  font-size: calc(var(--type-size-body-compact) + .0625rem);
  line-height: var(--type-leading-control);
}

/* Stati applicativi e feedback: il colore non deve determinarne la taglia. */
.type-status,
.status:not(.error),
.voice-hint,
.patient-status,
.patient-name-feedback,
.patient-organization-feedback,
.patient-fiscal-feedback,
.save-state,
.record-save-state,
.dictation-status,
.diary-local-recognition-status,
.event-patient-feedback,
.event-editor-feedback,
.whatsapp-appointment-proposal,
.whatsapp-message-state,
.whatsapp-message-recipient,
.whatsapp-message-timing,
.whatsapp-message-note,
.whatsapp-message-result,
.whatsapp-message-exclusion,
.whatsapp-message-error,
.whatsapp-send-confirmation,
.settings-boolean-state,
.settings-feedback,
.settings-notice,
.wake-diagnostics-score-status,
.wake-diagnostics-notice {
  font-size: var(--type-size-status);
  line-height: var(--type-leading-compact);
}

/* L'avviso non e' un'etichetta di stato: compare per pochi secondi e va letto
   di sfuggita, quindi prende il corpo dei testi che si leggono per intero. */
.toast {
  font-size: var(--type-size-body-long);
}

/* Simboli e glifi: non appartengono alla scala editoriale. */
.type-symbol,
.workspace-nav button span,
.patient-connection-icon {
  font-size: var(--type-size-symbol);
  line-height: 1;
}

.type-symbol-xs,
.reactor-monogram { font-size: var(--type-size-symbol-xs); }

.type-symbol-small,
.speak-msg { font-size: var(--type-size-symbol-small); }

.type-symbol-large,
.mode-toggle-icon,
.wake-diagnostics-close,
.review-alerts-icon,
.patient-detail-avatar,
.patient-contact-point-add,
.patient-address-add { font-size: var(--type-size-symbol-large); }

/* I bottoni della navigazione periodo non stanno piu' qui: ingrandivano i glifi
   tipografici che usavano prima, e la regola era scritta su :first-child e
   :last-child. Da quando l'ultimo figlio della barra e' il pannello del
   selettore di data, :last-child non descrive piu' nessun bottone: la sola
   freccia sinistra riceveva il corpo maggiore, e con le icone dimensionate in em
   cresceva insieme a lui. Ora le tre voci condividono la misura dei controlli. */
.type-symbol-xl,
.chat-close,
.toast-close,
.detail-close { font-size: var(--type-size-symbol-xl); }

.type-symbol-xxl,
.patient-detail-empty span { font-size: var(--type-size-symbol-xxl); }
.issues-detail-empty span { font-size: var(--type-size-symbol-xxl); }

.calendar-create { font-size: calc(var(--type-size-symbol-xxl) - .0625rem); }
/* Il "+" della rubrica deve essere immediatamente riconoscibile come azione
   primaria della colonna, pur restando dentro la riga di ricerca alta 39px. */
.patient-create { font-size: calc(var(--type-size-symbol-xxl) - .125rem); }
.calendar-connection-icon { font-size: var(--type-size-symbol-xl); }
.detail-action-icon { font-size: calc(var(--type-size-symbol) + .0625rem); }
.calendar-event-note-indicator { font-size: var(--type-size-symbol); line-height: 1; }
.calendar-notes-close { font-size: var(--type-size-symbol-xl); }
.empty-state span { font-size: var(--type-size-symbol-display); }
.patient-list-avatar { font-size: var(--type-size-symbol-avatar); }

/* Il quinto workspace non ha piu' una misura propria: la cella della barra si
   adatta alla lunghezza dell'etichetta, quindi tutte e cinque condividono la
   stessa misura dei controlli. */

/* Brand e testo decorativo esclusi dalla gerarchia dei contenuti. */
.auth-gate-mark { font-size: var(--type-size-brand-mark); }
.hero-visual-core strong { font-size: var(--type-size-decorative-value); }
.hero-visual-core small { font-size: var(--type-size-decorative-label); }
.hero-symbol { font-size: calc(var(--type-size-symbol-large) + .0625rem); }

@media (max-width: 700px) {
  .app-bar.type-density-compact { --type-size-control: .72rem; }
  .call-directory-search input { font-size: max(1rem, var(--type-size-body)); }
  .call-directory-name { font-size: max(1rem, var(--type-size-item-title)); }
  .call-directory-number { font-size: max(.9375rem, var(--type-size-body)); }
}

/* Sistema modale applicativo. La geometria resta nel blocco omonimo di
   styles.css; qui vivono soltanto i ruoli tipografici condivisi. */
.app-modal-eyebrow {
  font-size: var(--type-size-overline);
  line-height: var(--type-leading-compact);
}

.app-modal-title {
  font-size: var(--type-size-panel-title);
  line-height: var(--type-leading-heading);
}

.app-modal-message {
  font-size: var(--type-size-body);
}

.app-modal-field,
.app-modal-actions button {
  font-size: var(--type-size-control);
  line-height: var(--type-leading-compact);
}

.shared-number-cleanup-group,
.shared-number-cleanup-role input,
.shared-number-cleanup-scope-action,
.shared-number-cleanup-reviewed-toggle {
  font-size: var(--type-size-control);
  line-height: var(--type-leading-control);
}

.shared-number-cleanup-number,
.shared-number-cleanup-empty-title {
  font-size: var(--type-size-item-title);
  line-height: var(--type-leading-compact);
}

.shared-number-cleanup-contact-link,
.shared-number-cleanup-consequence > strong {
  font-size: var(--type-size-body);
  line-height: var(--type-leading-body);
}

.shared-number-cleanup-intro,
.shared-number-cleanup-guidance,
.shared-number-cleanup-consequence li,
.shared-number-cleanup-empty-copy {
  font-size: var(--type-size-body-compact);
  line-height: var(--type-leading-compact);
}

.shared-number-cleanup-feedback,
.shared-number-cleanup-group em,
.shared-number-cleanup-contact-kind,
.shared-number-cleanup-phone-summary,
.shared-number-cleanup-assignment-legend,
.shared-number-cleanup-assignment-option span,
.shared-number-cleanup-role > span {
  font-size: var(--type-size-label);
  line-height: var(--type-leading-compact);
}

.shared-number-cleanup-contact-company,
.shared-number-cleanup-contact-job-title {
  font-size: var(--type-size-body-compact);
  line-height: var(--type-leading-compact);
  font-weight: 400;
}

.shared-number-cleanup-contact-action,
.shared-number-cleanup-deletion-guidance {
  font-size: var(--type-size-body-compact);
  line-height: var(--type-leading-compact);
}

.shared-number-cleanup-contact-actions-trigger {
  font-size: 1.2rem;
}

.shared-number-cleanup-step {
  font-size: var(--type-size-overline);
  line-height: var(--type-leading-compact);
}

.shared-number-cleanup-actions button {
  font-size: var(--type-size-label);
  line-height: var(--type-leading-compact);
}

.google-contact-presence-mark {
  font-size: .78em;
  font-weight: 650;
}

.patient-google-missing-status {
  font-size: var(--type-size-body-compact);
  font-weight: 420;
}
