/*
 * RoomUpItalia v257 — Sistema tipografico globale
 *
 * Obiettivo:
 * - un solo font stack in tutto il progetto;
 * - scala coerente tra area pubblica, proprietario, inquilino, admin e pagine standalone;
 * - eliminazione dei testi microscopici da 8–10 px presenti nei vecchi moduli;
 * - nessuna modifica a colori, griglie, spacing o logica dei componenti.
 */

:root {
    --rui-font-family-base: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;

    --rui-type-body: 14px;
    --rui-type-control: 14px;
    --rui-type-navigation: 14px;
    --rui-type-label: 13px;
    --rui-type-table: 13px;
    --rui-type-support: 12.5px;
    --rui-type-micro: 12px;
    --rui-type-badge: 11.5px;

    --rui-type-private-h1: 30px;
    --rui-type-private-h2: 21px;
    --rui-type-private-h3: 17px;
    --rui-type-private-h4: 15px;

    --rui-line-height-body: 1.5;
    --rui-line-height-heading: 1.2;
}

html {
    -webkit-text-size-adjust: 100%;
    text-size-adjust: 100%;
}

body,
body.page,
body.rui-tenant-body,
body.roomup-standalone,
body.error-document {
    font-family: var(--rui-font-family-base) !important;
    font-size: var(--rui-type-body) !important;
    line-height: var(--rui-line-height-body);
    text-rendering: optimizeLegibility;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

body :where(button, input, select, textarea, option) {
    font-family: var(--rui-font-family-base) !important;
}

/*
 * Gerarchia testuale di base.
 * I titoli marketing/pubblici conservano le dimensioni progettate dalle loro
 * pagine; la scala numerica viene resa vincolante soltanto nei workspace.
 */
body :where(h1, h2, h3, h4, h5, h6) {
    font-family: var(--rui-font-family-base) !important;
    line-height: var(--rui-line-height-heading) !important;
}

body main :where(p, li, dd) {
    font-size: var(--rui-type-body) !important;
    line-height: var(--rui-line-height-body) !important;
}

body main :where(label, dt) {
    font-size: var(--rui-type-label) !important;
    line-height: 1.4 !important;
}

body :where(input, select, textarea) {
    font-size: var(--rui-type-control) !important;
    line-height: 1.4 !important;
}

body :where(
    button,
    .btn,
    .button,
    [class*="__button"],
    [class*="-button"]
) {
    font-size: var(--rui-type-control) !important;
    line-height: 1.3 !important;
}

/* Navigazione principale, sidebar, toolbar e menu contestuali. */
body :where(
    .site-nav a,
    .sidebar-link,
    .account-toolbar__link,
    .admin-sidebar a,
    .admin-nav a,
    .owner-navigation a,
    .owner-menu a,
    .account-workspace-sidebar a,
    .rui-primary-nav a,
    .rui-user-menu a,
    .rui-mobile-nav a,
    .rui-header-actions a,
    .rui-top-navigation__link,
    .rui-top-navigation__group-toggle,
    .rui-top-navigation__dropdown-link
) {
    font-size: var(--rui-type-navigation) !important;
    line-height: 1.35 !important;
}

/* Tabelle: leggibili ma più compatte del testo editoriale. */
body main :where(table) {
    font-size: var(--rui-type-table) !important;
    line-height: 1.42 !important;
}

body main :where(th) {
    font-size: var(--rui-type-support) !important;
    line-height: 1.35 !important;
}

body main :where(td) {
    font-size: var(--rui-type-table) !important;
    line-height: 1.42 !important;
}

/* Testi secondari. Nessun testo informativo deve tornare a 8–10 px. */
body :where(
    small,
    time,
    .muted,
    .help-text,
    .form-help,
    .form-hint,
    .field-help,
    .field-hint,
    [class*="__help"],
    [class*="-help"],
    [class*="__hint"],
    [class*="-hint"],
    [class*="__meta"],
    [class*="-meta"],
    [class*="__note"],
    [class*="-note"],
    [class*="__description"],
    [class*="-description"],
    [class*="__subtitle"],
    [class*="-subtitle"]
) {
    font-size: var(--rui-type-support) !important;
    line-height: 1.45 !important;
}

/* Eyebrow e micro-label strutturali. */
body :where(
    .eyebrow,
    [class*="__eyebrow"],
    [class*="-eyebrow"],
    [class*="__kicker"],
    [class*="-kicker"]
) {
    font-size: var(--rui-type-micro) !important;
    line-height: 1.35 !important;
}

/* Badge, chip e stati: compatti ma non microscopici. */
body :where(
    .badge,
    .chip,
    .pill,
    [class$="__badge"],
    [class$="-badge"],
    [class$="__chip"],
    [class$="-chip"],
    [class$="__pill"],
    [class$="-pill"],
    [class*="status-badge"],
    [class*="status-chip"],
    [class*="__status"],
    [class*="-status"]
) {
    font-size: var(--rui-type-badge) !important;
    line-height: 1.3 !important;
}

/*
 * Molti moduli legacy usavano <span> da 8/9/10 px dentro blocchi "copy".
 * Vengono uniformati senza toccare i valori KPI e i numeri principali.
 */
body main :where(
    [class*="__copy"] > span,
    [class*="-copy"] > span,
    [class*="__copy"] > small,
    [class*="-copy"] > small
) {
    font-size: var(--rui-type-support) !important;
    line-height: 1.45 !important;
}

/* Workspace privati: stessa scala titoli in tutti i profili. */
body:is(
    .page-owner-app,
    .page-tenant-private,
    .page-admin,
    .page-professional-workspace,
    .page-delegate-workspace,
    .page-owner-single-menu
) main h1 {
    font-size: var(--rui-type-private-h1) !important;
    line-height: 1.12 !important;
    letter-spacing: -0.025em;
}

body:is(
    .page-owner-app,
    .page-tenant-private,
    .page-admin,
    .page-professional-workspace,
    .page-delegate-workspace,
    .page-owner-single-menu
) main h2 {
    font-size: var(--rui-type-private-h2) !important;
    line-height: 1.18 !important;
}

body:is(
    .page-owner-app,
    .page-tenant-private,
    .page-admin,
    .page-professional-workspace,
    .page-delegate-workspace,
    .page-owner-single-menu
) main h3 {
    font-size: var(--rui-type-private-h3) !important;
    line-height: 1.22 !important;
}

body:is(
    .page-owner-app,
    .page-tenant-private,
    .page-admin,
    .page-professional-workspace,
    .page-delegate-workspace,
    .page-owner-single-menu
) main h4 {
    font-size: var(--rui-type-private-h4) !important;
    line-height: 1.25 !important;
}

/* Header workspace: nome utente, profilo attivo e contesti. */
body :where(
    .owner-workspace-header__user-copy strong,
    .tenant-private-header__user-copy strong,
    .account-context-switcher strong
) {
    font-size: 14px !important;
}

body :where(
    .owner-workspace-header__user-copy small,
    .owner-workspace-header__context,
    .owner-workspace-header__contexts > strong,
    .tenant-private-header__user-copy small
) {
    font-size: var(--rui-type-support) !important;
}

/* Admin: le intestazioni dei gruppi della sidebar restano micro-heading. */
body.page-admin :where(
    .admin-sidebar__group h2,
    .admin-sidebar__group-title,
    .admin-menu-group__title
) {
    font-size: var(--rui-type-micro) !important;
    line-height: 1.35 !important;
}

/* Owner legacy: rialza le micro-copie più ricorrenti senza toccare i KPI. */
body.page-owner-app main :where(
    .ruod-action-copy span,
    .ruod-visit-copy span,
    .ruod-status-copy span,
    .ruod-performance-row,
    .owner-profile-v4__preferences small,
    .owner-profile-v4__verification-list span,
    .owner-profile-v4__verification-list em,
    .owner-profile-v4__contact-list em,
    .owner-security-v2__device dt,
    .owner-security-v2__device dd
) {
    font-size: var(--rui-type-support) !important;
}

/* Footer comune. */
body :where(.site-footer__link) {
    font-size: var(--rui-type-micro) !important;
}

body :where(.site-footer__support-label) {
    font-size: var(--rui-type-badge) !important;
}

body :where(.site-footer__support-copy strong) {
    font-size: 13px !important;
}

body :where(.site-footer__copyright) {
    font-size: var(--rui-type-micro) !important;
}

/* Schede annuncio: dati descrittivi coerenti con il resto del sito. */
body :where(
    .listing-detail__location,
    .listing-detail__description,
    .listing-detail__content,
    .listing-detail-v2__location,
    .listing-detail-v2__description,
    .listing-cost-summary,
    .listing-owner-summary,
    .listing-summary-grid,
    .listing-detail__sidebar,
    .listing-detail-info,
    .listing-detail-grid,
    .listing-primary-facts,
    .listing-trust-panel,
    .listing-disclosure__content,
    .listing-costs,
    .listing-costs__item,
    .listing-costs__name,
    .listing-costs__amount,
    .listing-costs__frequency,
    .listing-costs__note,
    .listing-costs__disclaimer
) {
    font-size: var(--rui-type-body) !important;
    line-height: 1.48 !important;
}

/* Pagine standalone (es. acquisizione identità da smartphone). */
body.roomup-standalone main h1 {
    font-size: 28px !important;
}

body.roomup-standalone main h2 {
    font-size: 20px !important;
}

body.roomup-standalone main h3 {
    font-size: 17px !important;
}

/* Errori standalone. */
body.error-document :where(p, a, button) {
    font-family: var(--rui-font-family-base) !important;
}

/*
 * Mobile: 16 px nei controlli evita lo zoom automatico di Safari/iOS.
 * La gerarchia dei titoli si riduce in modo uniforme.
 */
@media (max-width: 767px) {
    body :where(input, select, textarea) {
        font-size: 16px !important;
    }

    body:is(
        .page-owner-app,
        .page-tenant-private,
        .page-admin,
        .page-professional-workspace,
        .page-delegate-workspace,
        .page-owner-single-menu
    ) main h1 {
        font-size: 26px !important;
    }

    body:is(
        .page-owner-app,
        .page-tenant-private,
        .page-admin,
        .page-professional-workspace,
        .page-delegate-workspace,
        .page-owner-single-menu
    ) main h2 {
        font-size: 20px !important;
    }

    body :where(button, .btn, .button, [class*="__button"], [class*="-button"]) {
        min-height: 40px;
    }
}
