/* ==========================================================================
   TYRESWORLD - child theme di Hummingbird 2
   Caricato dopo gli asset del parent. Hummingbird usa CSS @layer:
   dichiarando i nostri stili in un layer successivo vinciamo senza !important.
   Palette campionata da Logo.jpeg, contrasti WCAG verificati.
   ========================================================================== */


@layer tw-tokens, tw-base, tw-components;

/* --------------------------------------------------------------------------
   1. DESIGN TOKEN
   -------------------------------------------------------------------------- */
@layer tw-tokens {
  :root {
    /* Marca -------------------------------------------------------------- */
    --tw-ink:         #1C1C1C;  /* testo "TYRES"      17.04:1 su bianco  AAA */
    --tw-red:         #E4121A;  /* scritta "WORLD"     4.77:1 su bianco  AA  */
    --tw-green:       #00702B;  /* archi del logo      6.26:1 su bianco  AA  */

    /* Derivati ----------------------------------------------------------- */
    --tw-red-dark:    #C00000;  /* ombra gradiente "WORLD"  6.48:1       AA  */
    --tw-green-dark:  #005620;
    --tw-ink-70:      #4D4D4D;
    --tw-ink-45:      #6B6B6B;  /* minimo per testo secondario  5.1:1        */

    /* Firma tricolore ---------------------------------------------------- */
    --tw-flag: linear-gradient(90deg,
                 var(--tw-green) 0 33.33%,
                 #FFFFFF        33.33% 66.66%,
                 var(--tw-red)  66.66% 100%);

    /* Superfici ---------------------------------------------------------- */
    --tw-bg:            #FFFFFF;
    --tw-bg-alt:        #F6F7F8;
    --tw-border:        #E3E6EA;
    --tw-border-strong: #C9CFD6;

    /* Segnale ------------------------------------------------------------ */
    --tw-star:          #F5A623;

    /* Geometria ---------------------------------------------------------- */
    --tw-radius:       6px;
    --tw-radius-lg:    10px;
    --tw-shadow-card:  0 1px 2px rgba(0,0,0,.06);
    --tw-shadow-hover: 0 6px 18px rgba(0,0,0,.10);
    --tw-card-gap:     12px;

    /* --- Ribaltamento token Bootstrap 5.3 usati da Hummingbird ---------- */
    --bs-body-bg:          var(--tw-bg);
    --bs-body-color:       var(--tw-ink);
    --bs-border-color:     var(--tw-border);
    --bs-border-radius:    var(--tw-radius);

    --bs-primary:          var(--tw-red);
    --bs-primary-rgb:      228, 18, 26;
    --bs-link-color:       var(--tw-ink);
    --bs-link-hover-color: var(--tw-red-dark);

    --bs-success:          var(--tw-green);
    --bs-success-rgb:      0, 112, 43;

    --bs-body-font-family: system-ui, -apple-system, "Segoe UI", Roboto,
                           "Helvetica Neue", Arial, sans-serif;
  }
}

/* --------------------------------------------------------------------------
   2. BASE
   -------------------------------------------------------------------------- */
@layer tw-base {
  body {
    background: var(--tw-bg);
    color: var(--tw-ink);
    -webkit-font-smoothing: antialiased;
  }

  /* Il rosso significa UNA cosa sola: azione.
     Il prezzo pieno resta nero, solo lo scontato va in rosso scuro. */
  .tw-price        { color: var(--tw-ink); font-weight: 700; }
  .tw-price--promo { color: var(--tw-red-dark); font-weight: 700; }
  .tw-price__old   { color: var(--tw-ink-45); text-decoration: line-through;
                     font-weight: 400; }
}

/* --------------------------------------------------------------------------
   3. COMPONENTI
   -------------------------------------------------------------------------- */
@layer tw-components {

  /* --- CTA acquisto ---------------------------------------------------- */
  .btn-primary {
    --bs-btn-bg: var(--tw-red);
    --bs-btn-border-color: var(--tw-red);
    --bs-btn-hover-bg: var(--tw-red-dark);
    --bs-btn-hover-border-color: var(--tw-red-dark);
    --bs-btn-color: #fff;
    --bs-btn-hover-color: #fff;
    font-weight: 600;
    letter-spacing: .01em;
  }

  /* --- Firma tricolore: hairline 3px ----------------------------------- */
  .tw-flag-rule {
    height: 3px; border: 0; margin: 0;
    background: var(--tw-flag);
  }
  .tw-flag-rule--thin { height: 2px; }

  /* Su fondo bianco la banda centrale sparisce: usare questa variante. */
  .tw-flag-rule--onwhite {
    background: linear-gradient(90deg,
      var(--tw-green)  0 33.33%,
      var(--tw-border) 33.33% 66.66%,
      var(--tw-red)    66.66% 100%);
  }

  /* --- Badge disponibilita' -------------------------------------------- */
  .tw-badge {
    display: inline-flex; align-items: center; gap: .35em;
    font-size: .75rem; font-weight: 600; line-height: 1;
    padding: .3em .55em; border-radius: 3px;
  }
  .tw-badge--stock { color: var(--tw-green-dark);
                     background: color-mix(in srgb, var(--tw-green) 12%, #fff); }
  .tw-badge--promo { color: #fff; background: var(--tw-red); }

  /* --- Card prodotto (griglia densa) ----------------------------------- */
  .tw-product-card {
    background: #fff;
    border: 1px solid var(--tw-border);
    border-radius: var(--tw-radius);
    box-shadow: var(--tw-shadow-card);
    transition: box-shadow .18s ease, border-color .18s ease;
  }
  .tw-product-card:hover {
    border-color: var(--tw-border-strong);
    box-shadow: var(--tw-shadow-hover);
  }

  /* --- Etichetta UE: carburante / bagnato / rumore --------------------- */
  .tw-eulabel {
    display: flex; gap: .5em; align-items: center;
    font-size: .7rem; color: var(--tw-ink-70);
  }

  @media (prefers-reduced-motion: reduce) {
    .tw-product-card { transition: none; }
  }
}

/* ==========================================================================
   TYRESWORLD - Header e card prodotto
   Da APPENDERE in fondo a themes/tyresworld/assets/css/theme.css
   (i layer CSS si possono riaprire: questo blocco si somma a quelli esistenti)
   ========================================================================== */

@layer tw-components {

  /* ======================================================================
     1. BARRA UTILITY (header-top)
     Nel riferimento e' una fascia scura sottile. Qui ci vivono contatti,
     accesso e carrello: restano dove Hummingbird li mette, ma cambiano pelle.
     ====================================================================== */

  .header-top {
    background: var(--tw-ink);
    color: #fff;
    font-size: .82rem;
    line-height: 1;
  }

  .header-top .container-md { padding-block: .45rem; }

  .header-top a,
  .header-top .header-block__action-btn,
  .header-top .header-block__title {
    color: #fff;
    text-decoration: none;
  }

  .header-top a:hover,
  .header-top .header-block__action-btn:hover { color: #fff; opacity: .75; }

  .header-top .header-block__icon { font-size: 1.15rem; }

  /* pallino carrello in rosso: unico accento sulla barra scura */
  .header-top .header-block__badge {
    background: var(--tw-red);
    color: #fff;
    border-radius: 999px;
    min-width: 1.15em;
    padding: .1em .4em;
    font-size: .72rem;
    font-weight: 700;
    margin-left: .3em;
  }

  .header-top .header-top__right {
    display: flex;
    justify-content: flex-end;
    align-items: center;
    gap: 1.25rem;
  }

  /* ======================================================================
     2. HEADER PRINCIPALE
     Obiettivo riferimento: logo a sinistra, ricerca larga al centro,
     menu su riga propria sotto. Si ottiene con order + wrap, senza
     spostare un solo hook.
     ====================================================================== */

  .header-bottom {
    background: #fff;
    border-bottom: 1px solid var(--tw-border);
  }

  .header-bottom__container { padding-block: .85rem; }

  .header-bottom__row {
    flex-wrap: wrap;
    row-gap: .75rem;
    align-items: center;
  }

  .header-bottom__logo { order: 1; }

  /* il logo deve respirare: 48px reali, non i 28 di default */
  .header-bottom__logo .logo,
  .header-bottom__logo img.logo {
    height: 48px;
    width: auto;
    max-width: none;
  }

  .header-bottom__h1 { line-height: 0; }

  /* --- ricerca: al centro, larga, protagonista --- */
  .header-bottom__row > *:has(> #ps_searchbar) {
    order: 2;
    flex: 1 1 clamp(220px, 40vw, 620px);
    max-width: 620px;
    margin-inline: auto;
  }

  .ps-searchbar__form {
    position: relative;
    display: flex;
    align-items: center;
    border: 2px solid var(--tw-ink);
    border-radius: 999px;
    background: #fff;
    overflow: hidden;
    transition: border-color .15s ease, box-shadow .15s ease;
  }

  .ps-searchbar__form:focus-within {
    border-color: var(--tw-red);
    box-shadow: 0 0 0 3px rgb(228 18 26 / .12);
  }

  .ps-searchbar__input {
    border: 0;
    box-shadow: none;
    padding: .7rem 2.6rem .7rem 1rem;
    font-size: 1rem;          /* niente zoom automatico su iOS */
    background: transparent;
    min-height: 46px;
  }

  .ps-searchbar__input:focus { box-shadow: none; outline: 0; }

  .ps-searchbar__magnifier {
    order: 2;
    position: absolute;
    right: .55rem;
    color: var(--tw-red);
    font-size: 1.5rem;
    pointer-events: none;
  }

  .ps-searchbar__clear { right: 2.6rem; }

  /* --- menu: riga propria, a tutta larghezza --- */
  .header-bottom__row > .ps-mainmenu {
    order: 3;
    flex: 0 0 100%;
    max-width: 100%;
  }

  .ps-mainmenu__tree {
    gap: .25rem;
    border-top: 1px solid var(--tw-border);
    padding-top: .5rem;
    margin-top: .25rem;
  }

  .ps-mainmenu__tree-link {
    font-weight: 600;
    font-size: .95rem;
    color: var(--tw-ink);
    padding-inline: .75rem;
    text-decoration: none;
  }

  .ps-mainmenu__tree-link:hover { color: var(--tw-red); }

  /* firma tricolore sotto l'header: elemento di marca, costo zero */
  .header::after {
    content: "";
    display: block;
    height: 3px;
    background: var(--tw-flag);
  }

  /* su mobile logo e icone su una riga, ricerca sotto */
  @media (max-width: 767.98px) {
    .header-bottom__row > *:has(> #ps_searchbar) {
      order: 4;
      flex: 0 0 100%;
      max-width: 100%;
      margin-inline: 0;
    }
    .header-bottom__logo .logo,
    .header-bottom__logo img.logo { height: 38px; }
  }

  /* ======================================================================
     3. BADGE "NUOVO"
     3.000 prodotti creati nello stesso giorno = 3.000 badge "Nuovo".
     Non comunica nulla e ruba attenzione al prezzo: lo spegniamo.
     Restano visibili gli altri flag (sconto, esaurito), ridisegnati.
     ====================================================================== */

  .product-flags .product-flag.new,
  .product-flags li.new,
  .product-flag--new { display: none !important; }

  .product-flags .product-flag {
    background: var(--tw-ink);
    color: #fff;
    font-size: .7rem;
    font-weight: 700;
    letter-spacing: .02em;
    text-transform: uppercase;
    border-radius: 3px;
    padding: .25em .5em;
  }

  .product-flags .product-flag.discount,
  .product-flags .product-flag.on-sale { background: var(--tw-red); }

  .product-flags .product-flag.out-of-stock { background: var(--tw-ink-45); }

  /* ======================================================================
     4. CARD PRODOTTO
     Griglia densa alla tedesca: bordo netto, immagine contenuta,
     titolo su due righe, prezzo dominante.
     ====================================================================== */

  .product-miniature {
    background: #fff;
    border: 1px solid var(--tw-border);
    border-radius: var(--tw-radius);
    overflow: hidden;
    height: 100%;
    transition: border-color .18s ease, box-shadow .18s ease;
  }

  .product-miniature:hover {
    border-color: var(--tw-border-strong);
    box-shadow: var(--tw-shadow-hover);
  }

  /* immagini di provenienza mista: le uniformiamo senza deformarle */
  .product-miniature .product-thumbnail img,
  .product-miniature img.product-thumbnail {
    aspect-ratio: 1 / 1;
    object-fit: contain;
    width: 100%;
    height: auto;
    padding: .5rem;
    background: #fff;
  }

  .product-miniature .product-title a,
  .product-miniature .product-title {
    color: var(--tw-ink);
    font-weight: 600;
    font-size: .88rem;
    line-height: 1.3;
    text-decoration: none;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    min-height: 2.3em;
  }

  .product-miniature .product-title a:hover { color: var(--tw-red); }

  .product-miniature .product-price-and-shipping .price,
  .product-miniature .product-price {
    color: var(--tw-ink);
    font-size: 1.15rem;
    font-weight: 800;
    letter-spacing: -.02em;
  }

  .product-miniature .regular-price {
    color: var(--tw-ink-45);
    text-decoration: line-through;
    font-weight: 400;
    font-size: .85rem;
  }

  .product-miniature .discount-percentage,
  .product-miniature .discount-amount {
    background: var(--tw-red);
    color: #fff;
    border-radius: 3px;
    padding: .1em .35em;
    font-size: .75rem;
    font-weight: 700;
  }

  /* ======================================================================
     5. COLONNA FILTRI
     Dodici accordion chiusi sono un muro grigio: diamo gerarchia.
     ====================================================================== */

  #search_filters .facet-title,
  #search_filters .h6,
  .ps-facetedsearch .facet-title {
    font-size: .9rem;
    font-weight: 700;
    color: var(--tw-ink);
  }

  #search_filters .facet { border-bottom: 1px solid var(--tw-border); }

  #search_filters .magnitude { color: var(--tw-ink-45); font-weight: 400; }

  /* ======================================================================
     6. FOOTER
     ====================================================================== */

  .footer-container,
  #footer .footer-container {
    background: var(--tw-ink);
    color: #fff;
  }

  #footer .footer-container a,
  #footer .footer-container h3,
  #footer .footer-container .h3 { color: #fff; }

  #footer .footer-container a:hover { color: var(--tw-red); opacity: 1; }

  #footer .footer-container::before {
    content: "";
    display: block;
    height: 3px;
    background: var(--tw-flag);
    margin-bottom: 1.5rem;
  }

  .copyright { color: var(--tw-ink-45); font-size: .8rem; }
  .copyright a { color: var(--tw-ink-45) !important; }
}

/* ==========================================================================
   TYRESWORLD - CORREZIONE card prodotto (Hummingbird 2 usa BEM)
   Da APPENDERE in fondo a themes/tyresworld/assets/css/theme.css

   NOTA: nel blocco precedente la sezione 4 usava selettori di Classic
   (.product-title, .product-price-and-shipping) che non agganciano nulla
   in Hummingbird 2. Puoi cancellarla: queste regole la sostituiscono.
   ========================================================================== */

@layer tw-components {

  /* --- struttura card ------------------------------------------------- */

  .product-miniature {
    background: #fff;
    border: 1px solid var(--tw-border);
    border-radius: var(--tw-radius);
    overflow: hidden;
    height: 100%;
    transition: border-color .18s ease, box-shadow .18s ease;
  }

  .product-miniature:hover {
    border-color: var(--tw-border-strong);
    box-shadow: var(--tw-shadow-hover);
  }

  .product-miniature__inner {
    display: flex;
    flex-direction: column;
    height: 100%;
  }

  .product-miniature__bottom {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    padding: .65rem .75rem .75rem;
    gap: .5rem;
  }

  .product-miniature__infos { flex: 1 1 auto; }

  /* immagini di provenienza mista: uniformate senza deformarle */
  .product-miniature__top img {
    aspect-ratio: 1 / 1;
    object-fit: contain;
    width: 100%;
    height: auto;
    padding: .5rem;
    background: #fff;
  }

  /* --- titolo ---------------------------------------------------------- */

  .product-miniature__title {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    color: var(--tw-ink);
    font-weight: 600;
    font-size: .88rem;
    line-height: 1.3;
    min-height: 2.3em;
    text-decoration: none;
  }

  .product-miniature__title:hover { color: var(--tw-red); }

  /* --- prezzo ---------------------------------------------------------- */

  .product-miniature__prices {
    display: flex;
    align-items: baseline;
    flex-wrap: wrap;
    gap: .45rem;
    margin-top: .35rem;
  }

  .product-miniature__price {
    color: var(--tw-ink);
    font-size: 1.2rem;
    font-weight: 800;
    letter-spacing: -.02em;
    line-height: 1.1;
  }

  .product-miniature__regular-price {
    color: var(--tw-ink-45);
    text-decoration: line-through;
    font-weight: 400;
    font-size: .85rem;
  }

  /* --- etichetta UE ---------------------------------------------------- */

  .tw-eu {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .3rem;
    list-style: none;
    margin: .4rem 0 0;
    padding: 0;
  }

  .tw-eu__item {
    display: inline-flex;
    align-items: center;
    gap: .15rem;
    font-size: .7rem;
    line-height: 1;
    color: var(--tw-ink-70);
    background: var(--tw-bg-alt);
    border: 1px solid var(--tw-border);
    border-radius: 3px;
    padding: .2em .35em;
    white-space: nowrap;
  }

  .tw-eu__ico { font-size: .8em; opacity: .7; }

  .tw-eu__val { font-weight: 700; color: var(--tw-ink); }

  /* le classi migliori in verde, le peggiori neutre: nessun rosso qui,
     il rosso resta riservato all'azione */
  .tw-eu__val--a { color: var(--tw-green); }
  .tw-eu__val--b { color: var(--tw-green-dark); }

  .tw-eu__item--season {
    background: #fff;
    font-weight: 600;
    color: var(--tw-ink);
  }

  /* --- disponibilita' -------------------------------------------------- */

  .tw-avail {
    display: flex;
    align-items: center;
    gap: .3rem;
    margin: .35rem 0 0;
    font-size: .78rem;
    font-weight: 600;
    color: var(--tw-green);
  }

  .tw-avail__dot {
    width: .5em;
    height: .5em;
    border-radius: 50%;
    background: currentColor;
    flex: 0 0 auto;
  }

  .tw-avail__ship { font-weight: 400; color: var(--tw-ink-45); }

  .tw-avail--low { color: #B26A00; }
  .tw-avail--out { color: var(--tw-ink-45); }

  /* --- azioni ---------------------------------------------------------- */

  .product-miniature__actions { margin-top: auto; }

  .product-miniature__form {
    display: flex;
    align-items: center;
    gap: .4rem;
  }

  .product-miniature__add {
    min-height: 40px;
    min-width: 44px;
    flex: 0 0 auto;
  }

  .product-miniature__add-text { display: none; }

  @media (min-width: 1200px) {
    .product-miniature__add { flex: 1 1 auto; }
    .product-miniature__add-text {
      display: inline;
      font-size: .82rem;
      font-weight: 600;
      margin-left: .3em;
    }
  }
}

/* ==========================================================================
   TYRESWORLD - Colonna laterale (categorie + faccette) e logo
   Da APPENDERE in fondo a themes/tyresworld/assets/css/theme.css

   Le icone usano il font Material Icons gia' caricato da Hummingbird:
   nessun asset aggiuntivo, nessuna richiesta in piu'.
   ========================================================================== */

@layer tw-components {

  /* ======================================================================
     LOGO - 15em, altezza proporzionale
     Sostituisce la regola precedente (era 48px)
     ====================================================================== */

  .header-bottom__logo .logo,
  .header-bottom__logo img.logo {
    width: 15em;
    height: auto;
    max-width: 100%;
  }

  @media (max-width: 767.98px) {
    .header-bottom__logo .logo,
    .header-bottom__logo img.logo { width: 9em; }
  }

  /* ======================================================================
     COLONNA LATERALE - contenitore
     ====================================================================== */

  .left-column .left-block { margin-bottom: 1.25rem; }

  .left-block__title {
    font-size: .95rem;
    font-weight: 800;
    letter-spacing: .02em;
    text-transform: uppercase;
    color: var(--tw-ink);
    margin-bottom: .5rem;
    padding-bottom: .4rem;
    border-bottom: 3px solid transparent;
    border-image: var(--tw-flag) 1;
  }

  .left-block__title-link { color: inherit; text-decoration: none; }

  /* ======================================================================
     ACCORDION SCURO - vale sia per l'albero categorie sia per le faccette
     ====================================================================== */

  .left-column .accordion-item,
  .left-column .category-tree__item.accordion-item {
    background: transparent;
    border: 0;
    margin-bottom: .3rem;
  }

  .left-column .accordion-button {
    --bs-accordion-btn-focus-box-shadow: none;

    display: flex;
    align-items: center;
    gap: .55rem;
    width: 100%;
    background: var(--tw-ink);
    color: #fff;
    border: 0;
    border-radius: var(--tw-radius);
    padding: .7rem .85rem;
    font-size: .88rem;
    font-weight: 600;
    letter-spacing: .01em;
    box-shadow: none;
    transition: background-color .15s ease;
  }

  .left-column .accordion-button:hover { background: #2E2E2E; }

  .left-column .accordion-button:not(.collapsed) {
    background: var(--tw-ink);
    color: #fff;
    border-radius: var(--tw-radius) var(--tw-radius) 0 0;
    box-shadow: none;
  }

  .left-column .accordion-button:focus-visible {
    outline: 2px solid var(--tw-red);
    outline-offset: 2px;
  }

  /* chevron di Bootstrap: e' un SVG scuro, va schiarito */
  .left-column .accordion-button::after {
    filter: brightness(0) invert(1);
    margin-left: auto;
    flex: 0 0 auto;
  }

  /* filo tricolore sul facet aperto: segnala lo stato senza colorare tutto */
  .left-column .accordion-button:not(.collapsed) + .accordion-collapse {
    border-left: 3px solid var(--tw-red);
  }

  /* ======================================================================
     ICONE PER FACET
     Agganciate a data-name, che PrestaShop stampa gia' sulla <section>.
     Se una si aggiunge o si rinomina, basta una riga qui.
     ====================================================================== */

  .left-column .accordion-button::before {
    font-family: 'Material Icons';
    font-weight: normal;
    font-style: normal;
    font-size: 1.15rem;
    line-height: 1;
    letter-spacing: normal;
    text-transform: none;
    white-space: nowrap;
    direction: ltr;
    -webkit-font-feature-settings: 'liga';
    -webkit-font-smoothing: antialiased;
    color: #fff;
    opacity: .95;
    flex: 0 0 auto;
    content: "\e429";                     /* tune - default */
  }

  [data-name="Disponibilità"]     > .accordion-button::before { content: "\e86c"; } /* check_circle */
  [data-name="Selezioni"]         > .accordion-button::before { content: "\e429"; } /* tune */
  [data-name="Marca"]             > .accordion-button::before { content: "\e54e"; } /* local_offer */
  [data-name="Prezzo"]            > .accordion-button::before { content: "\e926"; } /* euro_symbol */
  [data-name="Larghezza"]         > .accordion-button::before { content: "\e8d4"; } /* swap_horiz */
  [data-name="Altezza"]           > .accordion-button::before { content: "\e8d5"; } /* swap_vert */
  [data-name="Diametro"]          > .accordion-button::before { content: "\e836"; } /* radio_button_unchecked */
  [data-name="Indice di carico"]  > .accordion-button::before { content: "\e28f"; } /* fitness_center */
  [data-name="Indice di velocita"]> .accordion-button::before { content: "\e9e4"; } /* speed */
  [data-name="Stagione"]          > .accordion-button::before { content: "\e430"; } /* wb_sunny */
  [data-name="Efficienza energetica"] > .accordion-button::before { content: "\e546"; } /* local_gas_station */
  [data-name="Aderenza sul bagnato"]  > .accordion-button::before { content: "\e91c"; } /* opacity */
  [data-name="Rumorosita esterna"]    > .accordion-button::before { content: "\e050"; } /* volume_up */

  /* albero categorie: icona pneumatico-simile */
  .category-tree .accordion-button::before { content: "\e531"; }  /* directions_car */

  /* ======================================================================
     CORPO DEI FACET - chiaro, per leggibilita' sulle liste lunghe
     ====================================================================== */

  .left-column .accordion-collapse {
    background: #fff;
    border: 1px solid var(--tw-border);
    border-top: 0;
    border-radius: 0 0 var(--tw-radius) var(--tw-radius);
  }

  .left-column .accordion-body {
    padding: .6rem .85rem;
    margin: 0;
    list-style: none;
    max-height: 17rem;
    overflow-y: auto;
    overscroll-behavior: contain;
  }

  /* scrollbar discreta sulle liste lunghe (Larghezza ha decine di voci) */
  .left-column .accordion-body::-webkit-scrollbar { width: 8px; }
  .left-column .accordion-body::-webkit-scrollbar-thumb {
    background: var(--tw-border-strong);
    border-radius: 4px;
  }

  .left-column .accordion-body li { margin-bottom: .15rem; }

  .left-column .accordion-body label,
  .left-column .facet-label {
    display: flex;
    align-items: center;
    gap: .45rem;
    font-size: .85rem;
    color: var(--tw-ink);
    cursor: pointer;
    padding: .25rem .2rem;
    border-radius: 4px;
    min-height: 34px;                    /* target touch */
  }

  .left-column .accordion-body label:hover { background: var(--tw-bg-alt); }

  .left-column .accordion-body input[type="checkbox"],
  .left-column .accordion-body input[type="radio"] {
    accent-color: var(--tw-red);
    width: 1.05em;
    height: 1.05em;
    flex: 0 0 auto;
  }

  .left-column .magnitude {
    margin-left: auto;
    color: var(--tw-ink-45);
    font-size: .78rem;
    font-weight: 400;
  }

  /* categorie: link invece di checkbox */
  .category-tree__item-link {
    display: block;
    padding: .4rem .85rem;
    font-size: .87rem;
    color: var(--tw-ink);
    text-decoration: none;
    border-radius: 4px;
  }

  .category-tree__item-link:hover {
    background: var(--tw-bg-alt);
    color: var(--tw-red);
  }

  .category-tree__item-header.parent > .category-tree__item-link {
    color: #fff;
    font-weight: 600;
    padding: 0;
  }

  .category-tree__item-header.parent {
    display: flex;
    align-items: center;
    gap: .55rem;
    background: var(--tw-ink);
    border-radius: var(--tw-radius);
    padding: .7rem .85rem;
  }

  .category-tree__item-header.parent .accordion-button {
    background: transparent;
    padding: 0;
    width: auto;
    margin-left: auto;
  }

  .category-tree__item-header.parent .accordion-button::before { display: none; }

  /* ======================================================================
     FILTRI ATTIVI
     ====================================================================== */

  .active-filters,
  #js-active-search-filters {
    background: var(--tw-bg-alt);
    border: 1px solid var(--tw-border);
    border-radius: var(--tw-radius);
    padding: .6rem .75rem;
    margin-bottom: 1rem;
  }

  .active-filters .filter-block,
  .active-filters__item {
    background: var(--tw-ink);
    color: #fff;
    border-radius: 999px;
    padding: .25em .6em;
    font-size: .78rem;
    font-weight: 600;
  }

  .active-filters .filter-block .close,
  .active-filters__item .close { color: var(--tw-red); opacity: 1; }
}

/* ==========================================================================
   TYRESWORLD - Correzioni: header, ricerca, logo, rassicurazioni
   Da APPENDERE in fondo a themes/tyresworld/assets/css/theme.css
   Sostituisce per specificita' le regole precedenti sugli stessi elementi.
   ========================================================================== */

@layer tw-components {

  /* ======================================================================
     1. LOGO - 20em
     ====================================================================== */

  .header-bottom__logo .logo,
  .header-bottom__logo img.logo {
    width: 20em;
    height: auto;
    max-width: 100%;
  }

  @media (max-width: 991.98px) {
    .header-bottom__logo .logo,
    .header-bottom__logo img.logo { width: 12em; }
  }

  @media (max-width: 575.98px) {
    .header-bottom__logo .logo,
    .header-bottom__logo img.logo { width: 9em; }
  }

  /* ======================================================================
     2. HEADER PIU' COMPATTO
     ====================================================================== */

  .header-top .container-md { padding-block: .3rem; }

  .header-bottom__container { padding-block: .45rem; }

  .header-bottom__row { row-gap: .4rem; }

  .ps-mainmenu__tree { padding-top: .3rem; margin-top: .1rem; }

  .ps-mainmenu__tree-link { padding-block: .35rem; }

  /* ======================================================================
     3. RICERCA - piu' larga, lente a sinistra senza sovrapposizioni
     ====================================================================== */

  .header-bottom__row > *:has(> #ps_searchbar) {
    flex: 1 1 clamp(260px, 52vw, 860px);
    max-width: 860px;
  }

  .ps-searchbar__form {
    position: relative;
    display: flex;
    align-items: center;
    border: 2px solid var(--tw-ink);
    border-radius: 999px;
    background: #fff;
    overflow: hidden;
  }

  .ps-searchbar__form:focus-within {
    border-color: var(--tw-red);
    box-shadow: 0 0 0 3px rgb(228 18 26 / .12);
  }

  /* la lente resta dove Hummingbird la mette: a sinistra.
     Azzeriamo esplicitamente 'right' e 'order' delle regole precedenti. */
  .ps-searchbar__magnifier {
    order: 0;
    position: absolute;
    left: .85rem;
    right: auto;
    top: 50%;
    transform: translateY(-50%);
    color: var(--tw-ink-45);
    font-size: 1.35rem;
    pointer-events: none;
    z-index: 1;
  }

  .ps-searchbar__form:focus-within .ps-searchbar__magnifier { color: var(--tw-red); }

  /* il testo parte dopo la lente e finisce prima della X */
  .ps-searchbar__input {
    flex: 1 1 auto;
    border: 0;
    box-shadow: none;
    background: transparent;
    min-height: 42px;
    font-size: 1rem;
    padding: .55rem 3rem .55rem 2.9rem;
  }

  .ps-searchbar__input:focus { box-shadow: none; outline: 0; }

  .ps-searchbar__clear {
    position: absolute;
    right: .5rem;
    left: auto;
    top: 50%;
    transform: translateY(-50%);
    border: 0;
    background: transparent;
    color: var(--tw-ink-45);
    z-index: 2;
  }

  .ps-searchbar__clear:hover { color: var(--tw-ink); }

@layer tw-components {
  .tw-credit {
    text-align: center;
    padding: .9rem 1rem;
    border-top: 1px solid rgb(255 255 255 / .12);
  }
  .tw-credit__line {
    margin: 0;
    font-size: .8rem;
    color: var(--tw-ink-45);
  }
  .tw-credit__link {
    color: #fff !important;
    font-weight: 600;
    text-decoration: none;
    border-bottom: 1px solid var(--tw-red);
  }
  .tw-credit__link:hover { color: var(--tw-red) !important; }
} 

/* ==========================================================================
   TYRESWORLD - Area cliente: accesso, registrazione, recupero password
   VERSIONE CORRETTA - sostituisce integralmente il blocco precedente.
   Allineata al markup reale di Hummingbird 2 (_partials/form-fields.tpl):
   .mb-3 al posto di .form-group, .has-error al posto di .is-invalid,
   .form-select per i menu a tendina, .form-check-input per le spunte.
   Da APPENDERE in fondo a themes/tyresworld/assets/css/theme.css
   ========================================================================== */

@layer tw-components {

  /* ======================================================================
     1. CONTENITORE A SCHEDA
     ====================================================================== */

  .login,
  #customer-form,
  #password form {
    background: #fff;
    border: 1px solid var(--tw-border);
    border-radius: var(--tw-radius-lg);
    box-shadow: var(--tw-shadow-card);
    padding: 0 0 1.75rem;
    overflow: hidden;
  }

  .login::before,
  #customer-form::before,
  #password form::before {
    content: "";
    display: block;
    height: 3px;
    background: var(--tw-flag);
    margin-bottom: 1.75rem;
  }

  .login__form-wrapper,
  .login__register-prompt,
  #customer-form > *,
  #password form > * {
    padding-inline: clamp(1rem, 4vw, 2.25rem);
  }

  #authentication h1,
  #registration h1,
  #password h1,
  .page-authentication h1,
  .page-registration h1 {
    font-size: clamp(1.35rem, 3vw, 1.75rem);
    font-weight: 800;
    letter-spacing: -.02em;
    color: var(--tw-ink);
    text-align: center;
    margin-bottom: 1.25rem;
  }

  /* ======================================================================
     2. CAMPI - .form-control e .form-select insieme
     ====================================================================== */

  .login .form-control,
  .login .form-select,
  #customer-form .form-control,
  #customer-form .form-select,
  #password .form-control {
    min-height: 46px;
    border: 1.5px solid var(--tw-border-strong);
    border-radius: var(--tw-radius);
    background-color: #fff;
    color: var(--tw-ink);
    font-size: 1rem;              /* niente zoom automatico su iOS */
    padding: .55rem .85rem;
    box-shadow: none;
    transition: border-color .15s ease, box-shadow .15s ease;
  }

  .login .form-control:focus,
  .login .form-select:focus,
  #customer-form .form-control:focus,
  #customer-form .form-select:focus,
  #password .form-control:focus {
    border-color: var(--tw-red);
    box-shadow: 0 0 0 3px rgb(228 18 26 / .12);
    outline: 0;
  }

  .login .form-label,
  #customer-form .form-label,
  #password .form-label {
    font-size: .85rem;
    font-weight: 600;
    color: var(--tw-ink);
    margin-bottom: .3rem;
  }

  /* asterisco sui campi obbligatori */
  .login .form-label.required::after,
  #customer-form .form-label.required::after {
    content: " *";
    color: var(--tw-red-dark);
    font-weight: 700;
  }

  .login .form-text,
  #customer-form .form-text,
  #password .form-text {
    font-size: .78rem;
    color: var(--tw-ink-45);
  }

  /* spunte e radio */
  .login .form-check-input,
  #customer-form .form-check-input {
    accent-color: var(--tw-red);
    width: 1.1em;
    height: 1.1em;
    margin-top: .15em;
    border-color: var(--tw-border-strong);
  }

  .login .form-check-input:checked,
  #customer-form .form-check-input:checked {
    background-color: var(--tw-red);
    border-color: var(--tw-red);
  }

  .login .form-check-input:focus,
  #customer-form .form-check-input:focus {
    box-shadow: 0 0 0 3px rgb(228 18 26 / .12);
    border-color: var(--tw-red);
  }

  .login .form-check-label,
  #customer-form .form-check-label {
    font-size: .85rem;
    color: var(--tw-ink-70);
    font-weight: 400;
  }

  /* data di nascita: tre select affiancate invece che impilate */
  #customer-form .js-parent-focus {
    display: flex;
    gap: .5rem;
    flex-wrap: wrap;
  }

  #customer-form .js-parent-focus br { display: none; }

  #customer-form .js-parent-focus .form-select { flex: 1 1 30%; min-width: 6rem; }

  /* ======================================================================
     3. CAMPO PASSWORD
     Il pulsante mostra/nascondi nasce con classe .btn-primary: in rosso
     pieno competerebbe con la call to action. Va reso neutro.
     ====================================================================== */

  .password-field .form-control {
    border-right: 0;
    border-radius: var(--tw-radius) 0 0 var(--tw-radius);
  }

  .password-field .btn,
  .password-field .btn-primary,
  [data-ps-action="toggle-password"] {
    --bs-btn-bg: transparent;
    --bs-btn-border-color: var(--tw-border-strong);
    --bs-btn-color: var(--tw-ink-45);
    --bs-btn-hover-bg: var(--tw-bg-alt);
    --bs-btn-hover-border-color: var(--tw-border-strong);
    --bs-btn-hover-color: var(--tw-ink);
    border-width: 1.5px;
    border-left: 0;
    border-radius: 0 var(--tw-radius) var(--tw-radius) 0;
    min-height: 46px;
    padding-inline: .75rem;
  }

  .password-field:focus-within .form-control,
  .password-field:focus-within .btn { border-color: var(--tw-red); }

  /* ======================================================================
     4. ERRORI - .has-error sul contenitore
     ====================================================================== */

  .mb-3.has-error .form-control,
  .mb-3.has-error .form-select {
    border-color: var(--tw-red-dark);
  }

  .login .alert-danger,
  #customer-form .alert-danger,
  #password .alert-danger,
  .mb-3.has-error li,
  .mb-3.has-error .help-block {
    color: var(--tw-red-dark);
    background: color-mix(in srgb, var(--tw-red) 6%, #fff);
    border: 1px solid color-mix(in srgb, var(--tw-red) 25%, #fff);
    border-radius: var(--tw-radius);
    font-size: .82rem;
    padding: .5rem .7rem;
    margin-top: .35rem;
    list-style: none;
  }

  /* ======================================================================
     5. PULSANTI
     ====================================================================== */

  #submit-login,
  #customer-form button[type="submit"],
  #password button[type="submit"] {
    min-height: 48px;
    font-weight: 700;
    letter-spacing: .01em;
    border-radius: var(--tw-radius);
    padding-inline: 1.5rem;
  }

  .buttons-wrapper--split {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
    margin-top: 1.25rem;
  }

  /* "Password dimenticata?" nasce come .btn: va degradato a link */
  .login .btn-basic {
    background: transparent;
    border: 0;
    padding: 0;
    color: var(--tw-ink-70);
    font-size: .85rem;
    font-weight: 500;
    text-decoration: underline;
    text-underline-offset: 3px;
    min-height: auto;
  }

  .login .btn-basic:hover { color: var(--tw-red-dark); }

  @media (max-width: 575.98px) {
    .buttons-wrapper--split { flex-direction: column-reverse; }
    .buttons-wrapper--split > * { width: 100%; }
  }

  /* ======================================================================
     6. RIQUADRO "NON HAI UN ACCOUNT?"
     ====================================================================== */

  .login hr {
    border: 0;
    border-top: 1px solid var(--tw-border);
    margin: 1.5rem 0;
  }

  .login__register-prompt { text-align: center; }

  .login__register-prompt .h4 {
    font-size: 1rem;
    font-weight: 700;
    color: var(--tw-ink);
    margin-bottom: .85rem;
  }

  .login__register-prompt .btn-outline-primary {
    --bs-btn-color: var(--tw-ink);
    --bs-btn-border-color: var(--tw-ink);
    --bs-btn-hover-bg: var(--tw-ink);
    --bs-btn-hover-border-color: var(--tw-ink);
    --bs-btn-hover-color: #fff;
    min-height: 46px;
    font-weight: 600;
  }

  /* ======================================================================
     7. RECUPERO PASSWORD
     ====================================================================== */

  #password .ps-alert-success {
    background: color-mix(in srgb, var(--tw-green) 8%, #fff);
    border: 1px solid color-mix(in srgb, var(--tw-green) 30%, #fff);
    border-radius: var(--tw-radius);
    color: var(--tw-green-dark);
    padding: .75rem 1rem;
    font-size: .88rem;
  }
}
/* ==========================================================================
   TYRESWORLD - Iscrizione newsletter
   Da APPENDERE in fondo a themes/tyresworld/assets/css/theme.css
   ========================================================================== */

@layer tw-components {

  /* --- fascia scura con firma tricolore -------------------------------- */

  .ps-emailsubscription {
    position: relative;
    background: var(--tw-ink) !important;   /* vince su .bg-body-tertiary */
    color: #fff;
    padding-block: clamp(1.5rem, 4vw, 2.5rem) !important;
    overflow: hidden;
  }

  .ps-emailsubscription::before {
    content: "";
    position: absolute;
    inset: 0 0 auto 0;
    height: 3px;
    background: var(--tw-flag);
  }

  .ps-emailsubscription .row { align-items: center; row-gap: 1rem; }

  /* --- titolo ---------------------------------------------------------- */

  .ps-emailsubscription .h3 {
    color: #fff;
    font-size: clamp(1.05rem, 2.2vw, 1.35rem);
    font-weight: 800;
    letter-spacing: -.01em;
    line-height: 1.25;
    margin-bottom: 0;
    display: flex;
    align-items: center;
    gap: .6rem;
  }

  .ps-emailsubscription .h3::before {
    font-family: 'Material Icons';
    content: "\e0be";                      /* email */
    font-size: 1.6rem;
    color: var(--tw-red);
    flex: 0 0 auto;
    line-height: 1;
  }

  /* --- campo + pulsante come un pezzo solo ----------------------------- */

  .ps-emailsubscription form .d-flex {
    gap: 0 !important;
    background: #fff;
    border: 2px solid transparent;
    border-radius: 999px;
    padding: 4px;
    transition: border-color .15s ease, box-shadow .15s ease;
  }

  .ps-emailsubscription form .d-flex:focus-within {
    border-color: var(--tw-red);
    box-shadow: 0 0 0 4px rgb(228 18 26 / .18);
  }

  .ps-emailsubscription input[type="email"].form-control {
    border: 0;
    background: transparent;
    border-radius: 999px;
    min-height: 44px;
    padding: .5rem 1rem;
    font-size: 1rem;                       /* niente zoom su iOS */
    color: var(--tw-ink);
    box-shadow: none;
  }

  .ps-emailsubscription input[type="email"].form-control:focus {
    box-shadow: none;
    outline: 0;
  }

  .ps-emailsubscription input[type="email"]::placeholder {
    color: var(--tw-ink-45);
    opacity: 1;
  }

  .ps-emailsubscription input[type="submit"].btn-primary {
    --bs-btn-bg: var(--tw-red);
    --bs-btn-border-color: var(--tw-red);
    --bs-btn-hover-bg: var(--tw-red-dark);
    --bs-btn-hover-border-color: var(--tw-red-dark);
    border-radius: 999px;
    min-height: 44px;
    padding-inline: 1.6rem;
    font-weight: 700;
    letter-spacing: .01em;
    flex: 0 0 auto;
    white-space: nowrap;
  }

  /* --- nota legale ----------------------------------------------------- */

  .ps-emailsubscription .text-body-secondary {
    color: rgb(255 255 255 / .6) !important;
    font-size: .76rem !important;
    line-height: 1.4;
    padding-inline: 1rem;
  }

  /* --- esito invio ----------------------------------------------------- */

  .ps-emailsubscription .alert-success,
  .ps-emailsubscription .ps-alert-success {
    background: color-mix(in srgb, var(--tw-green) 22%, var(--tw-ink));
    border: 1px solid var(--tw-green);
    color: #fff;
    border-radius: var(--tw-radius);
    font-size: .88rem;
  }

  .ps-emailsubscription .alert-danger {
    background: color-mix(in srgb, var(--tw-red) 22%, var(--tw-ink));
    border: 1px solid var(--tw-red);
    color: #fff;
    border-radius: var(--tw-radius);
    font-size: .88rem;
  }

  /* --- mobile: pulsante a tutta larghezza sotto il campo --------------- */

  @media (max-width: 575.98px) {
    .ps-emailsubscription form .d-flex {
      flex-direction: column;
      gap: .5rem !important;
      background: transparent;
      border: 0;
      padding: 0;
      box-shadow: none;
    }

    .ps-emailsubscription form .d-flex:focus-within {
      border: 0;
      box-shadow: none;
    }

    .ps-emailsubscription input[type="email"].form-control {
      background: #fff;
      width: 100%;
      border: 2px solid transparent;
    }

    .ps-emailsubscription input[type="email"].form-control:focus {
      border-color: var(--tw-red);
    }

    .ps-emailsubscription input[type="submit"].btn-primary { width: 100%; }

    .ps-emailsubscription .text-body-secondary { padding-inline: 0; }
  }
}

/* Le utility Bootstrap sono generate con !important e non sono in un layer.
   Per batterle serve una regola anch'essa fuori layer e anch'essa important. */
section.ps-emailsubscription {
  background-color: #1C1C1C !important;
}
section.ps-emailsubscription .text-body-secondary {
  color: rgb(255 255 255 / .6) !important;
}