/*
 * Strato mobile globale (0.3.0): barre fisse, menu, catalogo, footer, form, pagine di contenuto.
 * Tutte le regole stanno dentro media query per schermi stretti o dispositivi touch:
 * il desktop deve restare identico. Caricato dopo raccordo.css e raccordo-famiglie.css.
 *
 * Fanno eccezione solo le regole che NASCONDONO elementi nuovi (stepper −/+ del preventivo,
 * campo "Filtra famiglie"): servono proprio a lasciare il desktop com'era.
 *
 * Variabili:
 *   --aertubi-bottom-bar-space  spazio occupato in basso dalla barra fissa visibile (barra del plugin
 *                               o barra della scheda prodotto). Valore CSS di partenza, poi lo misura
 *                               raccordo.js (initBottomBarInset) e lo scrive sul body.
 */

/* ---------------------------------------------------------------------------------------------
 * 0. Elementi nuovi: nascosti fuori dal livello mobile (desktop identico)
 * ------------------------------------------------------------------------------------------- */
button.aertubi-raccordo-quote__qty-step,
.aertubi-shop-results .aertubi-shop-family-filter {
    display: none;
}

@media (max-width: 1180px) {
    /* -----------------------------------------------------------------------------------------
     * 1. Barra fissa in basso (pagine non prodotto): una sola barra, testi leggibili, spazio sotto
     * --------------------------------------------------------------------------------------- */
    :root {
        --aertubi-mbar-height: 56px;
        --aertubi-mbar-space: calc(0.55rem + var(--aertubi-mbar-height) + env(safe-area-inset-bottom, 0px));
        --aertubi-float-size: 44px;
        --aertubi-float-gap: 10px;
        --aertubi-bottom-bar-space: 0px;
    }

    body.single-prodotti {
        --aertubi-bottom-bar-space: calc(76px + env(safe-area-inset-bottom, 0px));
    }

    /* Home e landing Elementor: la barra "Scrivi/Chiama" duplica "Contatti" della barra del plugin. */
    body:has(.aertubi-shop-panel-toggle-wrap) .aer-sticky-cta-mobile {
        display: none !important;
    }

    body .aertubi-shop-panel-toggle-wrap .aertubi-shop-panel-toggle .aertubi-shop-panel-toggle__label {
        font-size: 13px !important;
        line-height: 1.15 !important;
        letter-spacing: 0.04em !important;
        white-space: normal !important;
        overflow: visible !important;
        text-overflow: clip !important;
        text-align: left;
    }

    body .aertubi-shop-panel-toggle-wrap .aertubi-shop-contact-toggle .aertubi-shop-contact-toggle__label {
        font-size: 13px !important;
        line-height: 1.15 !important;
        letter-spacing: 0.04em !important;
    }

    body .aertubi-shop-panel-toggle-wrap .aertubi-shop-contact-toggle .aertubi-shop-contact-toggle__meta {
        font-size: 11.5px !important;
        line-height: 1.2 !important;
        letter-spacing: 0.02em !important;
        white-space: nowrap !important;
    }

    /* Ultimi contenuti e footer raggiungibili: spazio pari a barra + pulsanti flottanti. */
    .aertubi-footer .aertubi-footer__bottom {
        padding-bottom: calc(25px + var(--aertubi-bottom-bar-space) + var(--aertubi-float-size) + (var(--aertubi-float-gap) * 2)) !important;
    }

    body:has(.aertubi-shop-panel-toggle-wrap):not(:has(.aertubi-footer)) {
        padding-bottom: calc(var(--aertubi-bottom-bar-space) + var(--aertubi-float-size) + (var(--aertubi-float-gap) * 2)) !important;
    }

    /* -----------------------------------------------------------------------------------------
     * 2. Pulsante cookie (CookieYes): sopra la barra, area di tocco 44px
     *    ("Torna in alto" è nel suo mu-plugin, stessa posizione a destra)
     * --------------------------------------------------------------------------------------- */
    body .cky-btn-revisit-wrapper {
        left: max(12px, env(safe-area-inset-left, 0px)) !important;
        bottom: calc(var(--aertubi-bottom-bar-space) + var(--aertubi-float-gap)) !important;
        width: var(--aertubi-float-size) !important;
        height: var(--aertubi-float-size) !important;
    }

    body .cky-btn-revisit-wrapper .cky-btn-revisit {
        display: flex !important;
        align-items: center;
        justify-content: center;
        width: var(--aertubi-float-size) !important;
        height: var(--aertubi-float-size) !important;
        padding: 0 !important;
    }

    body .cky-btn-revisit-wrapper .cky-btn-revisit img {
        width: 26px !important;
        height: 26px !important;
    }

    /* Pannello Filtri aperto (z-index 6200, sotto il pulsante cookie): niente pulsanti flottanti sopra. */
    body.aertubi-mobile-filters-open .cky-btn-revisit-wrapper,
    body.aertubi-mobile-filters-open .aertubi-back-to-top {
        visibility: hidden !important;
        pointer-events: none !important;
    }

    /* -----------------------------------------------------------------------------------------
     * 3. Menu (drawer): sopra tutto, "×" visibile, voci da 48px, ultima voce raggiungibile
     * --------------------------------------------------------------------------------------- */
    /* Con la pagina bloccata la topbar scende a z-index 10 (raccordo.css "body.aertubi-shop-lock
       .aertubi-topbar") e il drawer, che sta dentro la topbar, finiva sotto barre e cookie. */
    html body.aertubi-drawer-open .aertubi-topbar[data-aertubi-topbar] {
        z-index: 2147483000 !important;
    }

    /* Dopo uno scroll la topbar diventa "is-condensed" (fissa, alta 54px) con backdrop-filter
       (raccordo.css "body:not(.single-prodotti) .aertubi-topbar.is-condensed"): un filtro rende la
       topbar il blocco contenitore degli elementi fixed al suo interno, e il drawer finiva alto 54px
       e vuoto. Con il menu aperto la topbar non ha filtri né trasformazioni: il drawer torna riferito
       allo schermo (a tutta altezza). La sfocatura sotto il drawer non si vede comunque. */
    html body.aertubi-drawer-open .aertubi-topbar[data-aertubi-topbar],
    html body.aertubi-drawer-open:not(.single-prodotti) .aertubi-topbar[data-aertubi-topbar].is-condensed {
        -webkit-backdrop-filter: none !important;
        backdrop-filter: none !important;
        filter: none !important;
        transform: none !important;
        perspective: none !important;
        contain: none !important;
        will-change: auto !important;
    }

    body .aertubi-topbar .aertubi-drawer button.aertubi-drawer__close {
        display: inline-flex !important;
        align-items: center !important;
        justify-content: center !important;
        width: 48px !important;
        min-width: 48px !important;
        height: 48px !important;
        min-height: 48px !important;
        padding: 0 0 4px !important;
        border: 1px solid var(--aertubi-brand-blue, #385363) !important;
        border-radius: 10px !important;
        background: var(--aertubi-brand-blue, #385363) !important;
        background-image: none !important;
        color: #ffffff !important;
        -webkit-text-fill-color: #ffffff !important;
        font-size: 32px !important;
        font-weight: 400 !important;
        line-height: 1 !important;
        letter-spacing: 0 !important;
        text-indent: 0 !important;
        text-transform: none !important;
        overflow: hidden;
    }

    body .aertubi-topbar .aertubi-drawer button.aertubi-drawer__close:focus-visible {
        outline: 3px solid #d1122a !important;
        outline-offset: 2px !important;
    }

    body .aertubi-topbar .aertubi-drawer .aertubi-drawer__menu a,
    body .aertubi-topbar .aertubi-drawer .aertubi-drawer__quick-button {
        min-height: 48px !important;
    }

    body .aertubi-topbar .aertubi-drawer .aertubi-drawer__lang-link {
        min-width: 48px !important;
        min-height: 48px !important;
    }

    /* Titoletti dei gruppi ("Catalogo", "Azienda"): tradotti (attributo dal PHP) e leggibili. */
    body .aertubi-topbar .aertubi-drawer .aertubi-drawer__nav[data-aertubi-drawer-group]::before {
        content: attr(data-aertubi-drawer-group);
        font-size: 12px;
        line-height: 1.2;
        color: #5b6878;
    }

    body .aertubi-topbar .aertubi-drawer .aertubi-drawer__content {
        padding-bottom: calc(32px + env(safe-area-inset-bottom, 0px)) !important;
        overscroll-behavior: contain;
    }

    /* -----------------------------------------------------------------------------------------
     * 4. Catalogo
     * --------------------------------------------------------------------------------------- */
    /* Ricerca nel pannello Filtri: 16px (niente zoom iOS), alta 44px. */
    body.aertubi-page-search .aertubi-shop-mini-filters-panel .aertubi-shop-mini-search input[data-aertubi-shop-search] {
        height: 44px !important;
        min-height: 44px !important;
        font-size: 16px !important;
    }

    body.aertubi-page-search .aertubi-shop-mini-filters-panel .aertubi-shop-mini-filters-section__label,
    body.aertubi-page-search .aertubi-shop-mini-filters-panel .aertubi-shop-mini-filters-sheet-kicker,
    body.aertubi-page-search .aertubi-shop-mini-filters-panel .aertubi-shop-mini-search-submit {
        font-size: 12px !important;
    }

    /* Pulsante "Filtri" nella topbar del catalogo: leggibile (>= 12px) e alto 44px. */
    body.aertubi-page-search .aertubi-topbar .aertubi-topbar__mobile-shop-actions .aertubi-topbar__mobile-shop-action,
    body.aertubi-page-search:not(.single-prodotti) .aertubi-topbar.is-condensed .aertubi-topbar__mobile-shop-actions .aertubi-topbar__mobile-shop-action {
        width: auto !important;
        min-width: 72px !important;
        height: 44px !important;
        min-height: 44px !important;
        padding: 0 10px !important;
        font-size: 12.5px !important;
        letter-spacing: 0.06em !important;
    }

    body .aertubi-topbar .aertubi-topbar__brand a.aertubi-topbar__logo {
        min-height: 44px !important;
    }

    /* Categoria sopra il titolo delle card (tablet e telefono): almeno 12px. */
    body.aertubi-page-search .aertubi-shop-results__grid .aertubi-shop-card .aertubi-shop-card__category {
        font-size: 12px !important;
    }

    /* Ritorno al padre ("← <categoria madre>"): 44px. */
    body .aertubi-shop-results .aertubi-shop-results__back {
        min-height: 44px;
        padding-top: 0.6rem;
        padding-bottom: 0.6rem;
    }

    /* Campo "Filtra famiglie" (mostrato da raccordo.js sopra più di 12 schede famiglia). */
    body .aertubi-shop-results .aertubi-shop-family-filter:not([hidden]) {
        display: block;
        margin: 0 0 0.85rem;
    }

    .aertubi-shop-family-filter__field {
        display: grid;
        gap: 0.35rem;
        margin: 0;
    }

    .aertubi-shop-family-filter__label {
        color: rgba(255, 255, 255, 0.86);
        font-family: "IBM Plex Sans", "Source Sans 3", "Noto Sans", sans-serif;
        font-size: 12px;
        font-weight: 700;
        letter-spacing: 0.08em;
        line-height: 1.2;
        text-transform: uppercase;
    }

    body .aertubi-shop-results .aertubi-shop-family-filter input[data-aertubi-family-filter] {
        box-sizing: border-box;
        width: 100%;
        height: 44px;
        min-height: 44px;
        margin: 0;
        padding: 0 0.85rem;
        border: 1px solid rgba(255, 255, 255, 0.4);
        border-radius: 8px;
        background: #ffffff;
        color: #1f2d36;
        font-size: 16px;
        line-height: 1.2;
    }

    body .aertubi-shop-results .aertubi-shop-family-filter input[data-aertubi-family-filter]:focus-visible {
        outline: 3px solid #d1122a;
        outline-offset: 1px;
    }

    .aertubi-shop-family-filter__empty {
        margin: 0.75rem 0 0;
        color: #ffffff;
        font-size: 15px;
        line-height: 1.4;
    }

    /* Con poche schede filtrate lo shop (griglia centrata in verticale, alta quanto lo schermo) non deve
       far saltare il campo verso il centro mentre si scrive. */
    body.aertubi-page-search .aertubi-shop:has(.aertubi-shop-family-filter:not([hidden])) {
        align-content: start !important;
    }

    html body .aertubi-shop-results .aertubi-shop-results__grid .aertubi-shop-card.is-family-filtered-out {
        display: none !important;
    }

    /* -----------------------------------------------------------------------------------------
     * 6. Riepilogo e form preventivo / contatti
     * --------------------------------------------------------------------------------------- */
    /* Casella privacy: testo su righe normali (non più colonne flex), casella 24px, riga intera tappabile. */
    body .aertubi-quote-privacy,
    body .aertubi-contact-privacy {
        display: block !important;
        position: relative;
        min-height: 44px !important;
        padding: 0.7rem 0 0.7rem 2.6rem !important;
        line-height: 1.45 !important;
    }

    body .aertubi-quote-privacy input[type="checkbox"],
    body .aertubi-contact-privacy input[type="checkbox"] {
        position: absolute !important;
        top: 0.6rem;
        left: 0.15rem;
        width: 24px !important;
        min-width: 24px !important;
        height: 24px !important;
        min-height: 24px !important;
        margin: 0 !important;
    }

    /* Link nella frase: resta inline (niente spazi in piu' attorno, "la Privacy Policy."), l'area di
       tocco cresce solo in verticale con il padding, che sugli elementi inline non sposta le righe. */
    body .aertubi-quote-privacy a,
    body .aertubi-contact-privacy a {
        display: inline;
        padding: 0.85rem 0;
        margin: 0;
        -webkit-box-decoration-break: clone;
        box-decoration-break: clone;
    }

    body .aertubi-quote-privacy .aertubi-field__error,
    body .aertubi-contact-privacy .aertubi-field__error {
        display: block !important;
        margin-top: 0.35rem;
    }

    /* Target da 44px nel riepilogo e nel pannello preventivo. */
    body .aertubi-raccordo-quote .aertubi-raccordo-quote__remove,
    body .aertubi-raccordo-quote button.aertubi-raccordo-quote__qty-change-ok,
    body .aertubi-raccordo-quote .aertubi-raccordo-quote__clear,
    body .aertubi-quote-summary .aertubi-quote-summary__nav-link,
    body .aertubi-quote-form .aertubi-quote-form__customer-code-summary {
        min-height: 44px !important;
    }

    body .aertubi-raccordo-quote .aertubi-raccordo-quote__remove,
    body .aertubi-raccordo-quote button.aertubi-raccordo-quote__qty-change-ok {
        display: inline-flex !important;
        align-items: center !important;
        justify-content: center !important;
        min-width: 44px !important;
    }

    body .aertubi-quote-summary .aertubi-quote-summary__nav-link {
        display: inline-flex !important;
        align-items: center !important;
        justify-content: center !important;
    }

    body .aertubi-quote-form .aertubi-quote-form__customer-code-summary {
        display: flex !important;
        align-items: center;
    }

    body .aertubi-raccordo-quote input.aertubi-raccordo-quote__qty-change-input {
        min-height: 44px !important;
        font-size: 16px !important;
    }

    /* Stepper −/+ della quantità (aggiunti da raccordo.js accanto a "Nuova quantità"). */
    body .aertubi-raccordo-quote .aertubi-raccordo-quote__item {
        grid-template-columns: auto minmax(0, 1fr) !important;
    }

    body .aertubi-raccordo-quote .aertubi-raccordo-quote__item-body {
        min-width: 0 !important;
    }

    body .aertubi-raccordo-quote .aertubi-raccordo-quote__qty-edit {
        display: flex !important;
        flex-wrap: wrap !important;
        align-items: center !important;
        gap: 4px !important;
        min-width: 0 !important;
    }

    body .aertubi-raccordo-quote .aertubi-raccordo-quote__qty-edit input.aertubi-raccordo-quote__qty-change-input {
        flex: 1 1 52px !important;
        width: 0 !important;
        min-width: 52px !important;
        text-align: center;
    }

    body .aertubi-raccordo-quote .aertubi-raccordo-quote__qty-edit button.aertubi-raccordo-quote__qty-change-ok {
        flex: 0 0 auto !important;
    }

    /* Titolo dell'articolo (link alla scheda): area di tocco 44px senza cambiare l'impaginazione. */
    body .aertubi-raccordo-quote a.aertubi-raccordo-quote__item-title {
        display: inline-block;
        padding-top: 12px;
        padding-bottom: 12px;
        margin-top: -12px;
        margin-bottom: -12px;
    }

    body .aertubi-raccordo-quote .aertubi-raccordo-quote__cell-label {
        font-size: 12px !important;
    }

    body .aertubi-raccordo-quote button.aertubi-raccordo-quote__qty-step {
        display: inline-flex;
        flex: 0 0 44px;
        align-items: center;
        justify-content: center;
        width: 44px;
        height: 44px;
        padding: 0;
        border: 1px solid rgba(56, 83, 99, 0.4);
        border-radius: 10px;
        background: #ffffff;
        color: #385363;
        -webkit-text-fill-color: #385363;
        font-size: 22px;
        font-weight: 700;
        line-height: 1;
        cursor: pointer;
        touch-action: manipulation;
    }

    body .aertubi-raccordo-quote .aertubi-raccordo-quote__qty-step:disabled {
        opacity: 0.4;
        cursor: not-allowed;
    }

    /* Anello di focus da tastiera ben visibile (rosso #d1122a, 5,5:1 sul bianco) su stepper e
       "Rimuovi articolo" del pannello preventivo e del riepilogo: vince sull'anello grigio chiaro
       di raccordo.css e sui reset "outline:none". Solo :focus-visible, il tocco non lo mostra. */
    html body .aertubi-raccordo-quote button.aertubi-raccordo-quote__qty-step:focus-visible,
    html body .aertubi-raccordo-quote button.aertubi-raccordo-quote__remove:focus-visible,
    html body .aertubi-raccordo-quote button.aertubi-raccordo-quote__qty-change-ok:focus-visible {
        outline: 3px solid #d1122a !important;
        outline-offset: 2px !important;
    }

    /* -----------------------------------------------------------------------------------------
     * 7. Modale contatti rapidi: il pulsante chiudi non copre più l'introduzione
     * --------------------------------------------------------------------------------------- */
    /* Modale "Codice cliente": pulsante chiudi da 44px e testo leggibile. */
    body .aertubi-customer-modal button.aertubi-customer-modal__close {
        display: inline-flex !important;
        align-items: center;
        min-height: 44px !important;
        font-size: 12px !important;
        /* Sulle pagine Elementor reset.css e il kit (button {color:#c36; background: primario})
           vincevano: testo rosso su azzurro. Si ripristinano i colori previsti da raccordo.css. */
        border-color: #0b1f3a !important;
        background: #0b1f3a !important;
        color: #ffffff !important;
        -webkit-text-fill-color: #ffffff !important;
    }

    body .aertubi-customer-modal .aertubi-customer-modal__title {
        min-height: 44px;
        padding-right: 11rem;
    }

    body .aertubi-contact-modal .aertubi-contact-modal__title {
        display: flex;
        align-items: center;
        min-height: 44px;
        margin-bottom: 0.75rem !important;
        padding-right: 11rem !important;
    }

    /* -----------------------------------------------------------------------------------------
     * 8. Pagine di contenuto: tabelle scorrevoli dentro un contenitore, mai tagliate
     * --------------------------------------------------------------------------------------- */
    body .aertubi-privacy-policy table,
    body .elementor-widget-text-editor table:not([class*="aertubi-"]),
    body .elementor-widget-theme-post-content table:not([class*="aertubi-"]) {
        display: block;
        max-width: 100%;
        overflow-x: auto;
        overscroll-behavior-x: contain;
        -webkit-overflow-scrolling: touch;
    }

    /* Colonne leggibili: la tabella scorre invece di schiacciare il testo in colonne strette. */
    body .aertubi-privacy-policy table th,
    body .aertubi-privacy-policy table td,
    body .elementor-widget-text-editor table:not([class*="aertubi-"]) th,
    body .elementor-widget-text-editor table:not([class*="aertubi-"]) td,
    body .elementor-widget-theme-post-content table:not([class*="aertubi-"]) th,
    body .elementor-widget-theme-post-content table:not([class*="aertubi-"]) td {
        min-width: 9.5rem;
    }
}

@media (max-width: 1024px) {
    /* Fino a 1024px la barra del plugin sta in basso (sopra è una linguetta laterale): valore di
       partenza dello spazio, prima che raccordo.js lo misuri. */
    body:has(.aertubi-shop-panel-toggle-wrap):not(.single-prodotti) {
        --aertubi-bottom-bar-space: var(--aertubi-mbar-space);
    }

    /* Barra in basso a due pulsanti: altezza fissa, testi su due righe se servono. */
    body .aertubi-shop-panel-toggle-wrap button.aertubi-shop-panel-toggle.aertubi-laser-button,
    body .aertubi-shop-panel-toggle-wrap button.aertubi-shop-contact-toggle[data-aertubi-mobile-contact-toggle] {
        height: var(--aertubi-mbar-height) !important;
        min-height: var(--aertubi-mbar-height) !important;
        padding-top: 6px !important;
        padding-bottom: 6px !important;
        padding-left: 12px !important;
        padding-right: 10px !important;
    }
}

@media (max-width: 767px) {
    /* Home EN: il sottotitolo nell'h1 ha white-space:nowrap !important inline (dati Elementor, non
       modificabili da CSS) e sbordava di 32-62px. Lo si fa stare scalando l'h1 sulla larghezza del
       widget (viewport meno 10px per lato); l'interlinea del sottotitolo (non impostata inline) torna
       leggibile. */
    body.aertubi-home-en .elementor-widget-text-editor > h1:has(> span[style*="nowrap"]) {
        font-size: min(32px, calc((100vw - 24px) * 0.073)) !important;
    }

    body .elementor-widget-text-editor > h1 > span[style*="nowrap"] {
        line-height: 1.08;
    }
}

@media (max-width: 640px) {
    /* -----------------------------------------------------------------------------------------
     * 4b. Catalogo su telefono: card prodotto in lista orizzontale, famiglie in lista compatta
     * --------------------------------------------------------------------------------------- */
    body.aertubi-page-search .aertubi-shop-results__grid,
    body.aertubi-page-search .aertubi-shop-results__grid.is-subcategories {
        grid-template-columns: minmax(0, 1fr) !important;
        gap: 10px !important;
    }

    body.aertubi-page-search .aertubi-shop-results__grid .aertubi-shop-card {
        display: grid !important;
        grid-template-columns: 92px minmax(0, 1fr) 24px;
        grid-template-areas:
            "media kicker arrow"
            "media title arrow";
        grid-template-rows: auto auto;
        align-content: center;
        align-items: center;
        column-gap: 12px;
        row-gap: 4px;
        min-height: 0 !important;
        height: auto !important;
        padding: 10px 12px 10px 10px !important;
        border-radius: 10px !important;
        transform: none !important;
    }

    body.aertubi-page-search .aertubi-shop-results__grid .aertubi-shop-card .aertubi-shop-card__media {
        grid-area: media;
        align-self: center;
        width: 92px !important;
        height: 92px !important;
        min-height: 0 !important;
        margin: 0 !important;
        padding: 0 !important;
        border-radius: 8px;
        overflow: hidden;
    }

    body.aertubi-page-search .aertubi-shop-results__grid .aertubi-shop-card .aertubi-shop-card__media-item--primary {
        width: 100% !important;
        height: 100% !important;
        min-height: 0 !important;
        padding: 0 !important;
    }

    body.aertubi-page-search .aertubi-shop-results__grid .aertubi-shop-card .aertubi-shop-card__media-item--primary .aertubi-shop-card__image,
    body.aertubi-page-search .aertubi-shop-results__grid .aertubi-shop-card .aertubi-shop-card__media-item--primary .aertubi-shop-card__placeholder {
        width: 100% !important;
        height: 100% !important;
        max-height: 100% !important;
        padding: 2px !important;
        object-fit: contain !important;
    }

    body.aertubi-page-search .aertubi-shop-results__grid .aertubi-shop-card .aertubi-shop-card__media-item--secondary,
    body.aertubi-page-search .aertubi-shop-results__grid .aertubi-shop-card .aertubi-shop-card__overlay,
    body.aertubi-page-search .aertubi-shop-results__grid .aertubi-shop-card .aertubi-shop-card__cta,
    body.aertubi-page-search .aertubi-shop-results__grid .aertubi-shop-card .aertubi-shop-card__zoom {
        display: none !important;
    }

    /* Corpo "trasparente" alla griglia: categoria, titolo e freccia diventano celle della card. */
    body.aertubi-page-search .aertubi-shop-results__grid .aertubi-shop-card .aertubi-shop-card__body {
        display: contents !important;
    }

    body.aertubi-page-search .aertubi-shop-results__grid .aertubi-shop-card .aertubi-shop-card__category {
        grid-area: kicker;
        align-self: end;
        min-width: 0;
        margin: 0 !important;
        font-size: 12px !important;
        letter-spacing: 0.06em !important;
        line-height: 1.25 !important;
    }

    body.aertubi-page-search .aertubi-shop-results__grid .aertubi-shop-card .aertubi-shop-card__title {
        grid-area: title;
        align-self: start;
        min-width: 0;
        min-height: 0 !important;
        margin: 0 !important;
        font-size: 15px !important;
        line-height: 1.3 !important;
        overflow-wrap: anywhere;
    }

    body.aertubi-page-search .aertubi-shop-results__grid .aertubi-shop-card .aertubi-shop-card__footer {
        grid-area: arrow;
        align-self: center;
        justify-self: end;
        margin: 0 !important;
        padding: 0 !important;
        border: 0 !important;
    }

    body.aertubi-page-search .aertubi-shop-results__grid .aertubi-shop-card .aertubi-shop-card__cta-icon {
        display: inline-flex !important;
        align-items: center;
        justify-content: center;
        width: 24px !important;
        min-width: 24px !important;
        height: 24px !important;
        margin: 0 !important;
        padding: 0 !important;
        border: 0 !important;
        background: transparent !important;
        font-size: 18px !important;
        line-height: 1 !important;
    }

    /* Schede famiglia: lista compatta, miniatura 64px, senza ripetere il nome del padre. */
    body.aertubi-page-search .aertubi-shop-results__grid.is-subcategories .aertubi-shop-card--subcategory {
        grid-template-columns: 64px minmax(0, 1fr) 24px;
        grid-template-areas: "media title arrow";
        grid-template-rows: auto;
        min-height: 80px !important;
        padding: 8px 12px 8px 8px !important;
    }

    body.aertubi-page-search .aertubi-shop-results__grid.is-subcategories .aertubi-shop-card--subcategory .aertubi-shop-card__media {
        width: 64px !important;
        height: 64px !important;
    }

    body.aertubi-page-search .aertubi-shop-results__grid.is-subcategories .aertubi-shop-card--subcategory .aertubi-shop-card__category {
        display: none !important;
    }

    body.aertubi-page-search .aertubi-shop-results__grid.is-subcategories .aertubi-shop-card--subcategory .aertubi-shop-card__title {
        align-self: center;
        font-size: 15px !important;
    }

    body.aertubi-page-search .aertubi-shop-results__grid.is-subcategories .aertubi-shop-card--subcategory .aertubi-shop-card__placeholder--subcategory {
        font-size: 1.6rem !important;
    }

    /* Tessere d'ingresso del catalogo: compatte, tutte e 5 le categorie senza scorrere. */
    body.aertubi-page-search .aertubi-shop.is-category-entry .aertubi-shop-layout__sidebar .aertubi-shop-categories > .aertubi-shop-category {
        grid-template-columns: 72px minmax(0, 1fr) !important;
        min-height: 64px !important;
        padding: 6px 12px 6px 6px !important;
        column-gap: 12px !important;
    }

    body.aertubi-page-search .aertubi-shop.is-category-entry .aertubi-shop-layout__sidebar .aertubi-shop-categories > .aertubi-shop-category .aertubi-shop-category__media {
        width: 72px !important;
        height: 52px !important;
        min-height: 0 !important;
    }

    /* Articolo del preventivo su telefono: miniatura e titolo in alto, quantità, dati e "Rimuovi"
       a tutta larghezza (il corpo diventa trasparente alla griglia dell'articolo). */
    body .aertubi-raccordo-quote .aertubi-raccordo-quote__item {
        grid-template-columns: 56px minmax(0, 1fr) !important;
        column-gap: 12px !important;
        row-gap: 10px !important;
        align-items: start !important;
    }

    body .aertubi-raccordo-quote .aertubi-raccordo-quote__item-media {
        grid-column: 1;
        grid-row: 1;
        width: 56px !important;
        min-width: 56px !important;
        height: 56px !important;
    }

    body .aertubi-raccordo-quote .aertubi-raccordo-quote__item-media img {
        width: 100% !important;
        height: 100% !important;
        object-fit: contain;
    }

    body .aertubi-raccordo-quote .aertubi-raccordo-quote__item-body {
        display: contents !important;
    }

    body .aertubi-raccordo-quote .aertubi-raccordo-quote__item-header {
        grid-column: 2;
        grid-row: 1;
        align-self: center;
        min-width: 0;
    }

    body .aertubi-raccordo-quote .aertubi-raccordo-quote__item > .aertubi-raccordo-quote__qty,
    body .aertubi-raccordo-quote .aertubi-raccordo-quote__item > .aertubi-raccordo-quote__row,
    body .aertubi-raccordo-quote .aertubi-raccordo-quote__item > .aertubi-raccordo-quote__item-actions,
    body .aertubi-raccordo-quote .aertubi-raccordo-quote__item-body > .aertubi-raccordo-quote__qty,
    body .aertubi-raccordo-quote .aertubi-raccordo-quote__item-body > .aertubi-raccordo-quote__row,
    body .aertubi-raccordo-quote .aertubi-raccordo-quote__item-body > .aertubi-raccordo-quote__item-actions {
        grid-column: 1 / -1;
        min-width: 0;
        margin: 0 !important;
    }

    /* Riepilogo: sfondo leggero (WebP 800px) al posto di quello da 1600px. */
    body.aertubi-page-quote-summary .aertubi-quote-summary.aertubi-quote-summary--request {
        background-image: linear-gradient(90deg, rgba(5, 8, 12, 0.52), rgba(5, 8, 12, 0.28) 48%, rgba(5, 8, 12, 0.08) 100%), var(--aertubi-quote-summary-bg-small, var(--aertubi-quote-summary-bg, none)) !important;
    }
}

/* -------------------------------------------------------------------------------------------------
 * 9. Loader a schermo intero su dispositivi touch: compare solo se la pagina tarda davvero
 *    (dopo 450ms); se la pagina è pronta prima, non si vede mai. Desktop invariato.
 * ----------------------------------------------------------------------------------------------- */
@media (hover: none) and (pointer: coarse) {
    .aertubi-global-loader:not(.is-hidden) {
        animation: aertubi-global-loader-touch-delay 0.2s ease 0.45s both;
    }

    .aertubi-global-loader.is-hidden {
        transition-duration: 0.15s;
    }
}

@keyframes aertubi-global-loader-touch-delay {
    from {
        opacity: 0;
        visibility: hidden;
    }

    to {
        opacity: 1;
        visibility: visible;
    }
}

@media (hover: none) and (pointer: coarse) and (prefers-reduced-motion: reduce) {
    .aertubi-global-loader:not(.is-hidden) {
        animation-duration: 0.01s;
    }
}
