/* Card KPI compatte negli header widget (pagina Ospiti e simili).
 * Riduce padding, gap interno e dimensione di valore/label/descrizione senza
 * toccare la logica dei widget.
 *
 * Scope: .fi-page-header-widgets — è il wrapper reale degli header widget di
 * pagina in Filament v3.3 (vedi components/page/index.blade.php). Così le
 * regole colpiscono solo le stat card in cima alle pagine (GuestStatsOverview,
 * e in futuro QualitandoStatsWidget) e non gli altri StatsOverviewWidget.
 *
 * Servito da public/css (deploy PHP-only, niente Vite): caricato via render
 * hook HEAD_END in AdminPanelProvider con cache-bust su mtime.
 *
 * Markup stat (vendor stats-overview-widget/stat.blade.php):
 *   .fi-wi-stats-overview-stat (p-6)
 *     └ div.grid.gap-y-2
 *         ├ .fi-wi-stats-overview-stat-label (text-sm)
 *         ├ .fi-wi-stats-overview-stat-value (text-3xl)
 *         └ .fi-wi-stats-overview-stat-description (text-sm)
 *
 * I selettori a 2+ classi battono per specificità le utility Tailwind di
 * Filament (p-6 / text-3xl), quindi niente !important.
 */
.fi-page-header-widgets .fi-wi-stats-overview-stat {
    padding: 0.625rem 1rem;
}

/* Comprime il gap verticale tra label / valore / descrizione (era gap-y-2),
 * lasciando un minimo di respiro tra le righe di testo. */
.fi-page-header-widgets .fi-wi-stats-overview-stat > .grid {
    gap: 0.25rem;
}

.fi-page-header-widgets .fi-wi-stats-overview-stat .fi-wi-stats-overview-stat-value {
    font-size: 1.375rem;
    /* line-height vicino al font: riduce il "vuoto" sotto la cifra (leading dei
     * descender) così la distanza label↔valore e valore↔descrizione si bilancia. */
    line-height: 1.4rem;
}

.fi-page-header-widgets .fi-wi-stats-overview-stat .fi-wi-stats-overview-stat-label {
    font-size: 0.8125rem;
}

.fi-page-header-widgets .fi-wi-stats-overview-stat .fi-wi-stats-overview-stat-description {
    font-size: 0.8125rem;
}

/* Badge "Qualitando" (QualitandoStatsWidget): titolo a sinistra, badge a destra
 * sulla STESSA riga. Il wrapper .jo-stat-label (reso dal blade) diventa un flex a
 * tutta larghezza con space-between; il badge resta a larghezza-contenuto (flex:0 0
 * auto) invece di occupare tutta la riga andando a capo.
 * Si usa un wrapper con classe dedicata invece di :has(.jo-stat-badge) sul parent
 * perché :has() non è supportato su alcuni browser target (vedi
 * public/css/chat-iframe.css:705-708): con :has() la regola fallirebbe in silenzio
 * e il badge non si allineerebbe. La classe limita la regola alle sole card
 * Qualitando, senza toccare le altre — quindi NON scopata a .fi-page-header-widgets:
 * vale ovunque renderizzi il widget (pagina Ospiti come header widget,
 * hotel-dashboard via @livewire).
 * Stile del badge = componente x-filament::badge color="success" (vedi
 * resources/views/filament/widgets/qualitando-stat-label.blade.php). */
.jo-stat-label {
    display: flex;
    flex: 1 1 auto;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
}

.jo-stat-badge {
    flex: 0 0 auto;
}

/* Badge CTA "Attiva il modulo" / "Richiedi attivazione modulo" nelle voci di
 * navigazione bloccate (vedi GatedByModule::getNavigationBadge). Il testo è più
 * lungo di un semplice "Attiva": riduciamo font e padding così sta accanto alla
 * voce senza andare a capo o sfondare la sidebar. Scopato al colore warning per
 * non toccare eventuali badge conteggio (unread, ecc.) di altro colore. */
.fi-sidebar-item .fi-badge.fi-color-warning {
    font-size: 0.625rem;
    line-height: 1.1;
    padding-inline: 0.375rem;
    padding-block: 0.125rem;
    /* white-space: normal + max-width forzano l'a-capo: "Attiva il" (legato da
     * nbsp lato PHP) sta su una riga, "modulo" va a capo. La max-width sta larga
     * per "Attiva il" ma non per l'intera frase, così scatta il wrap. */
    white-space: normal;
    max-width: 5rem;
    text-align: center;
}

/* Il badge Filament avvolge lo slot in <span class="grid"><span class="truncate">:
 * la classe Tailwind `truncate` (overflow:hidden + text-overflow:ellipsis +
 * white-space:nowrap) tiene il testo su una riga e mostra i "...". Disattiviamola
 * SOLO per il nostro badge warning così il testo va a capo per intero. */
.fi-sidebar-item .fi-badge.fi-color-warning .truncate {
    white-space: normal;
    overflow: visible;
    text-overflow: clip;
}

/* Con il badge multi-riga la label della voce bloccata perdeva spazio e veniva
 * troncata ("Pubblicità e sito ..."). Sulle sole voci con badge warning lasciamo
 * andare a capo anche la label, così sparisce l'ellissi. :has() è supportato dai
 * browser del pannello admin (non è la iframe pubblica del chatbot). */
.fi-sidebar-item:has(.fi-badge.fi-color-warning) .fi-sidebar-item-label {
    white-space: normal;
    overflow: visible;
    text-overflow: clip;
}
