@import url('https://fonts.googleapis.com/css2?family=Lora:wght@500;600;700&display=swap');

/* static/css/components.css

   Componenti condivisi desktop+mobile. Regole BASE per pattern HTML
   riusabili in tutto il sito, fuori da qualsiasi media query.

   Caricato in base.html.j2 SENZA attributo media (= tutti i viewport),
   dopo main.css e prima di mobile.css. Estensibile: aggiungi qui
   regole base di nuovi componenti condivisi. Override size-specific
   (mobile <768px) restano in mobile.css dentro @media.

   NOTA STORICA: queste regole erano scritte in mobile.css:1733-1758
   "fuori da @media" come default per tutti i viewport, ma il file
   mobile.css ha media="(max-width: 767px)" sul <link>, quindi a
   desktop NON veniva mai caricato. Spostandole qui (file caricato
   sempre) si rispetta l'intento originale dell'autore. Le righe in
   mobile.css restano come duplicato benigno (regole identiche).
*/

/* === CSS variables brand (globali) ===
   Spostate da mobile.css :root: erano caricate solo <768px, ma sono usate
   anche da regole desktop-only (es. #mainNavigation .menu-item-season > a
   { color: var(--brand-coral) }). Servono globali. */
:root {
    --brand-red:    #C0392B;
    --brand-coral:  #D85A30;
    --brand-dark:   #2C2C2C;
    --brand-text:   #1a1a1a;
    --brand-muted:  #666;
    --brand-bg:     #ffffff;
    --brand-bg-soft:#faf7f3;
    --brand-border: #e8e4dd;
}

/* === Ingredienti di stagione (.l-mod-ingredient) ===
   Pattern usato da: home, event body (layout='inline'), category/
   region/event/ingredient sidebar (layout='grid'), ricetta sidebar
   (layout='grid'). Cerchio + label sotto, layout block.
   Mobile.css:1708 override width/height a 60×60 + font 11px dentro
   media query. */

.l-mod-ingredient .ingredient {
    display: block;
    text-align: center;
}
.l-mod-ingredient .img-circle {
    display: block !important;
    width: 80px;
    height: 80px;
    margin: 0 auto 4px;
    border-radius: 50%;
    background-size: cover;
    background-position: center;
    background-color: var(--brand-bg-soft, #f0f0f0);
}
.l-mod-ingredient .name {
    display: block;
    font-size: 13px;
    text-align: center;
    max-width: 100px;
    line-height: 1.2;
    margin: 0 auto;
}
.l-mod-ingredient .name a {
    color: var(--brand-text, #333);
    text-decoration: none;
}

/* === Bootstrap 3.0 grid xs (mobile) — necessario perche' bootstrap.min.css
   e main.css legacy sono caricati con media="(min-width: 768px)" e quindi
   NON forniscono `.col-xs-*` a mobile. Senza queste regole il markup
   <div class="col-xs-6"> si rendererizza come <div> block (1 colonna stretchata).

   Valori copiati 1:1 da output/bundles/web/css/compiled/main.css.
   IMPORTANTE: regole wrappate in @media (max-width: 767px) altrimenti
   a desktop il `.col-xs-6 { width:50% }` di components.css (caricato dopo
   bootstrap.min.css nel cascade) batte il `.col-sm-4 { width:33.33% }`
   di Bootstrap per ordine cascade -> 2 colonne desktop invece di 3. */

@media (max-width: 767px) {
    .row {
        margin-left: 0;
        margin-right: 0;
    }
    .row:before,
    .row:after {
        content: " ";
        display: table;
    }
    .row:after {
        clear: both;
    }

    .col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6,
    .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
        position: relative;
        min-height: 1px;
        padding-left: 0;
        padding-right: 0;
    }

    .col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6,
    .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11 {
        float: left;
    }

    .col-xs-1  { width: 8.333333333333332%; }
    .col-xs-2  { width: 16.666666666666664%; }
    .col-xs-3  { width: 25%; }
    .col-xs-4  { width: 33.33333333333333%; }
    .col-xs-5  { width: 41.66666666666667%; }
    .col-xs-6  { width: 50%; }
    .col-xs-7  { width: 58.333333333333336%; }
    .col-xs-8  { width: 66.66666666666666%; }
    .col-xs-9  { width: 75%; }
    .col-xs-10 { width: 83.33333333333334%; }
    .col-xs-11 { width: 91.66666666666666%; }
    .col-xs-12 { width: 100%; }
}

/* === Menu globale (drawer mobile + nav desktop) ===
   Markup .menu-item è condiviso tra <nav class="mobile-drawer-menu"> e
   <ul class="navbar-nav"> dentro #mainNavigation. Regole base che valgono
   su entrambi (uppercase + font + coral + emoji stagione/speciale).

   Override drawer-only (padding/border/font-size/alternanza nth-child)
   restano in mobile.css scope-ati con parent .mobile-drawer-menu.

   NOTA: spostate qui da mobile.css perche' il <link> mobile.css ha
   media="(max-width: 767px)" → su desktop non veniva mai caricato →
   Primavera grigia (BS3 .navbar-default .navbar-nav > li > a vinceva). */
.menu-item a {
    text-transform: uppercase;
    font-family: 'Lora', Georgia, serif;
}
.menu-item-season a {
    color: var(--brand-coral);
    font-weight: 600;
}
.menu-item-special a {
    color: var(--brand-coral);
    font-weight: 600;
}
/* Emoji dinamiche stagione — body class season-{slug} settata da
   base.html.j2 (current_season.slug_by_locale.it). */
body.season-primavera .menu-item-season > a::before { content: "🌸 "; }
body.season-estate    .menu-item-season > a::before { content: "☀️ "; }
body.season-autunno   .menu-item-season > a::before { content: "🍂 "; }
body.season-inverno   .menu-item-season > a::before { content: "❄️ "; }
.menu-item-special > a::before { content: "⭐ "; }

/* Rinforzo specificity per battere BS3 .navbar-default .navbar-nav > li > a
   (0,2,2 → color: #777777) sul desktop nav. ID #mainNavigation porta a
   1,2,2 → vince. Il drawer mobile non ne ha bisogno (non e' dentro
   .navbar-default), le regole globali sopra bastano li'. */
#mainNavigation .menu-item-season > a,
#mainNavigation .menu-item-special > a {
    color: var(--brand-coral);
    font-weight: 600;
}

/* Font-size desktop nav: con 8 voci uppercase Lora, il default 14px ereditato
   da body wrappa su sm/md. 12px tiene riga unica anche con label localizzate
   piu' lunghe (es. ES "RECETAS ITALIANAS", DE "ITALIENISCHE REZEPTE"). Scope
   #mainNavigation = desktop nav only (specificity 1,1,1 batte BS3 0,2,2);
   il drawer mobile usa font-size 19px da .mobile-drawer-menu .menu-item a. */
#mainNavigation .menu-item a {
    font-size: 12px;
}

/* === Gallery passo-passo desktop ===
   Replica del layout mobile in static/css/mobile.css:567-684. Stesso
   pattern strutturale: vertical stack con foto full-width, badge numero
   in cerchio overlay top-left, caption testo sotto, separatore tra
   step. Dimensioni aumentate per il viewport desktop (max-height foto
   480px vs 280px mobile; badge 56×56 vs 44×44; font 28px vs 22px;
   padding 24px vs 16px).

   Mobile.css ha media="(max-width: 767px)" sul <link> → non si carica
   a desktop. Components.css è caricato per tutti i viewport, quindi
   wrappiamo le regole desktop in @media (min-width: 768px) per
   evitare double-application a mobile (dove mobile.css gestisce già). */
@media (min-width: 768px) {

    /* Sfondo bianco: override del background scuro che main.css legacy
       applica a .showcase / #showcase-recipe (legacy fullscreen dark theme). */
    #showcase-recipe {
        margin: 0;
        padding: 0;
        background: #fff !important;
    }
    #showcase-recipe .showcase,
    #showcase-recipe .l-mod-showcase,
    #showcase-recipe .l-mod-showcaseb {
        background: #fff !important;
    }
    /* Override del gradient scuro `.l-mod-showcaseb .section-body` in
       main.css:2131 (specificity 0,2,0 senza !important). Mio selettore
       1,1,0 + !important vince. Questo è il vero colpevole del dark bg
       visibile sulla gallery — non `.showcase` (che è già resettato a
       `none !important` da `.l-mod-showcase`). */
    #showcase-grid .section-body,
    #showcase-recipe .l-mod-showcaseb .section-body {
        background: #fff !important;
    }
    #showcase-recipe > .container {
        padding: 0 24px;
    }
    #showcase-grid {
        background: #fff;
        margin: 32px 0;
        padding: 0;
    }

    /* Counter CSS: numerazione automatica step */
    #showcase-grid .section-body {
        counter-reset: step-counter;
        padding: 0;
    }

    /* Ogni step uniforme — vertical stack: foto > testo */
    #showcase-grid .section-body > div[class*="col-sm-12"] {
        width: 100%;
        padding: 24px 0;
        margin: 0;
        border-bottom: 1px solid #f0f0f0;
        counter-increment: step-counter;
        position: relative;
        float: none;
    }
    #showcase-grid .section-body > div[class*="col-sm-12"]:last-child {
        border-bottom: 0;
    }

    /* Link step — layout naturale, no flex */
    #showcase-grid .showcase-grid-step {
        display: block;
        position: relative;
        text-decoration: none;
        color: var(--brand-text);
        padding: 0;
    }

    /* Foto step — full-width, più alta a desktop */
    #showcase-grid .showcase-grid-step img,
    #showcase-grid .showcase-grid-step .img-responsive,
    #showcase-grid .showcase-grid-step .img-circle,
    #showcase-grid .col-sm-12.next .table img {
        display: block;
        width: 100% !important;
        height: auto !important;
        max-height: 480px;
        object-fit: cover;
        border-radius: 12px;
        margin: 0 !important;
        padding: 0 !important;
        background-color: #faf7f3;
        box-shadow: 0 2px 12px rgba(0, 0, 0, 0.08);
    }
    /* Override img-circle Bootstrap su step .next: rimuove il border-radius
       50% (cerchio) e forza width 100% / height auto. Selettore più
       specifico (1,3,0) per battere `.img-responsive.img-circle` o
       `.custom-image-pp` con width/height fissi in main.css legacy. */
    #showcase-grid .col-sm-12.next .img-circle {
        border-radius: 12px !important;
        width: 100% !important;
        height: auto !important;
        max-width: 100% !important;
        display: block !important;
    }
    /* Override .l-mod-recipetextg (caption titolo step .first): main.css
       legacy applica `background-color: #ea1e1f; color: white; padding: 5px 10px`
       — pillola coral. Su desktop reset a stile editoriale neutro. */
    #showcase-grid .l-mod-recipetextg {
        background: transparent !important;
        color: var(--brand-text, #1a1a1a) !important;
        font-size: 16px !important;
        font-weight: 400 !important;
        padding: 0 !important;
        margin: 16px 0 0 0 !important;
        text-align: left !important;
    }

    /* Badge numero step — cerchio bianco overlay top-left foto */
    #showcase-grid .section-body > div[class*="col-sm-12"]::before {
        content: counter(step-counter);
        position: absolute;
        top: 36px;
        left: 16px;
        width: 56px;
        height: 56px;
        display: flex;
        align-items: center;
        justify-content: center;
        background: var(--brand-coral);
        border: none;
        border-radius: 50%;
        font-family: 'Lora', Georgia, serif;
        font-size: 28px;
        font-weight: 600;
        color: #ffffff;
        line-height: 1;
        z-index: 2;
        box-shadow: 0 2px 8px rgba(216, 90, 48, 0.35);
    }

    /* Caption testo step — sotto la foto, override color: white inline */
    #showcase-grid .col-sm-12.first .l-mod-recipetextg,
    #showcase-grid .table.table-responsive td:last-child div,
    #showcase-grid .col-sm-12.next .table td:last-child div {
        color: var(--brand-text) !important;
        font-size: 16px !important;
        line-height: 1.6 !important;
        font-weight: 400 !important;
        margin: 16px 0 0 0 !important;
        padding: 0 !important;
        text-align: left !important;
    }

    /* Tabella legacy → stack verticale (foto sopra, testo sotto).
       Selettore .table (no .table-responsive) per coprire entrambe le
       varianti di markup legacy. */
    #showcase-grid .table,
    #showcase-grid .table tbody,
    #showcase-grid .table tr,
    #showcase-grid .table td {
        display: block;
        width: 100% !important;
        border: 0 !important;
        padding: 0 !important;
        margin: 0 !important;
        background: transparent !important;
        text-align: left !important;
        vertical-align: top !important;
    }
    /* Override esplicito per inline style="width:26%" del template legacy
       (emesso da recipe.html.j2 sulle <td> della tabella step). Necessario
       perché senza l'attribute selector la specificità non basta a battere
       lo style inline anche con !important. Selettore senza `.table` per
       coprire markup dove la <td> non è dentro `.table` ma direttamente
       sotto `.col-sm-12.next`. */
    #showcase-grid .col-sm-12.next td[style*="width:26"],
    #showcase-grid .col-sm-12.next .table td[style*="width:26%"],
    #showcase-grid .col-sm-12.next .table td[style*="width: 26%"] {
        display: block !important;
        width: 100% !important;
    }
    /* Trasforma l'intera struttura <table>/<tbody>/<tr>/<td> dentro
       .col-sm-12.next in display block + width 100%. Necessario perché
       il layout table-cell ignora width:100% in CSS — solo il display
       block fa rispettare la full width dei <td>. Selettore senza
       `.table` class per coprire markup raw <table> del template legacy. */
    #showcase-grid .col-sm-12.next table,
    #showcase-grid .col-sm-12.next tbody,
    #showcase-grid .col-sm-12.next tr,
    #showcase-grid .col-sm-12.next td {
        display: block !important;
        width: 100% !important;
    }
    #showcase-grid .col-sm-12.next .table td:first-child {
        margin-bottom: 16px !important;
    }

    /* Nascondi badge "step by step" overlay nero rotondo legacy */
    #showcase-grid .showcase-grid-step > div[style*="position: absolute"],
    #showcase-grid .table td a > div[style*="position: absolute"],
    #showcase-grid .table td > a > div[style*="position: absolute"] {
        display: none !important;
    }
}

/* === Sponsor La Terra di Puglia — testo editoriale ricetta ===
   Renderizzato da inc/sponsor_recipe_editorial.html.j2, dopo #directions.
   Gating Python: SPONSOR_ENABLED + SPONSOR_SECTIONS["recipe"] (o SPONSOR_PREVIEW).
   Cross-viewport (components.css, nessun media attribute — regola #8).
   Design approvato 1 giu 2026 (sfondo coral + footer dominio). NB: --font-serif
   non è definita nel progetto → fallback 'Lora', Georgia, serif sul testo. */
.sponsor-editorial {
    background: #FAECE7;
    border: 0.5px solid #F5C4B3;
    border-radius: 12px;
    padding: 18px 20px 14px;
    margin: 24px 12px;
}
.sponsor-editorial__badge {
    display: inline-block;
    font-size: 11px;
    font-weight: 500;
    background: #fff;
    color: #993C1D;
    border: 0.5px solid #F0997B;
    border-radius: 20px;
    padding: 3px 11px;
    margin-bottom: 12px;
    letter-spacing: 0.04em;
}
.sponsor-editorial__title {
    font-size: 14px;
    font-weight: 500;
    color: #712B13;
    margin: 0 0 8px;
    line-height: 1.4;
}
.sponsor-editorial__text {
    font-size: 14px;
    color: #993C1D;
    line-height: 1.65;
    font-style: italic;
    font-family: var(--font-serif, 'Lora', Georgia, serif);
    margin: 0 0 12px;
}
.sponsor-editorial__footer {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    border-top: 0.5px solid #F0997B;
    padding-top: 10px;
    margin-top: 4px;
}
.sponsor-editorial__domain {
    font-size: 11px;
    color: #993C1D;
    opacity: 0.7;
    letter-spacing: 0.02em;
}

/* === Placeholder card ricetta senza foto — cross-viewport (regola #8) ===
   Riusa l'asset esistente noimage.png del bundle (lo stesso usato dalla regola
   legacy .no-photo in main.css, che però è caricato solo media min-width:768px →
   su mobile non c'era alcun placeholder). Replicando qui la stessa immagine senza
   media query, il placeholder appare identico su desktop E mobile. background-size
   auto come in main.css (noimage.png è 107×75, non quadrato → evita la distorsione
   di un size fisso). Emesso quando il template aggiunge .no-photo (foto_originali
   + wpfoto entrambe assenti). */
.recipe-card .l-mod-ratio.photo.no-photo,
.l-mod-reclistcontainer .l-mod-ratio.photo.no-photo {
    background-color: var(--brand-bg-soft, #faf7f3);
    background-image: url(/bundles/web/img/noimage.png);
    background-repeat: no-repeat;
    background-position: center;
    background-size: auto;
}

/* === Badge "NUOVA"/"NEW" sulle card hub (9 giu 2026) ===
   Ricette con data_approvazione negli ultimi 14gg (flag SQL r.is_new, stesso
   criterio del tiebreak ORDER BY). Renderizzato dal partial recipe_list_card
   (IT+5 locali) e dalle category locale inline. Pill coral in alto a destra,
   contrapposto al pallino difficolta (.l-mod-diffrecipelist, in alto a sinistra).
   Cross-viewport: vive qui, non in mobile.css (regola #8). */
.recipe-card .l-mod-ratio.photo {
    position: relative;
}
/* Selettore a 4 classi (0,4,0) per battere il legacy main.css:2038
   ".l-mod-ratio span" (0,1,1) che impone width:100% + bottom:0 + font 22px.
   Reset esplicito di quelle proprietà → pill piccolo, non overlay full-card. */
.recipe-card .l-mod-ratio.photo .recipe-card__new-badge {
    position: absolute;
    top: 8px;
    right: auto;
    bottom: auto;          /* reset legacy bottom:0 → stop stiramento verticale */
    left: 8px;
    width: auto;           /* reset legacy width:100% → stop overlay full-card */
    display: inline-block;
    z-index: 60;           /* sopra il legacy span z-index:50 */
    background: var(--brand-coral, #D85A30);
    color: #fff;
    font-size: 10px;       /* reset legacy 22px */
    line-height: 1.4;
    font-weight: 700;
    letter-spacing: .5px;
    text-align: center;
    text-transform: uppercase;
    padding: 2px 8px;      /* reset legacy padding:0 0 15px 0 */
    border-radius: 12px;
    box-shadow: 0 1px 3px rgba(0, 0, 0, .25);
    pointer-events: none;
}

/* === Nutrition strip — briefing 8 mag 2026 ===
   Renderizzata da templates/inc/nutrition_strip.html.j2.
   Caricata cross-viewport (components.css ha link senza media attribute,
   a differenza di mobile.css che e' mobile-only via media="(max-width:
   767px)"). Componente compatto: barra colorata + nome + valore in g/kcal. */

.nutrition-strip {
    background: #fff;
    border: 1px solid #e8e4dd;
    border-radius: 10px;
    padding: 14px 16px;
    margin: 20px 0;
    font-family: inherit;
}

.nutrition-strip__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 10px;
}

.nutrition-strip__title {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 11px;
    font-weight: 600;
    color: #888;
    text-transform: uppercase;
    letter-spacing: 0.06em;
}

.nutrition-strip__kcal {
    font-size: 14px;
    font-weight: 600;
    color: #C0392B;
}

.nutrition-strip__kcal small {
    font-size: 10px;
    font-weight: 400;
    color: #aaa;
}

.nutrition-strip__divider {
    border: none;
    border-top: 1px solid #f0ede8;
    margin: 0 0 10px;
}

.nutrition-strip__row {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 8px;
}

.nutrition-strip__row:last-of-type {
    margin-bottom: 0;
}

.nutrition-strip__name {
    font-size: 12px;
    color: #888;
    width: 96px;
    flex-shrink: 0;
}

.nutrition-strip__track {
    flex: 1;
    background: #f5f2ee;
    border-radius: 4px;
    height: 7px;
    overflow: hidden;
}

.nutrition-strip__bar {
    height: 100%;
    border-radius: 4px;
    transition: width 0.3s ease;
}

.nutrition-strip__bar--protein { background: #185FA5; }
.nutrition-strip__bar--carbs   { background: #BA7517; }
.nutrition-strip__bar--fat     { background: #C0392B; }
.nutrition-strip__bar--fiber   { background: #534AB7; }

.nutrition-strip__val {
    font-size: 12px;
    font-weight: 600;
    color: #1a1a1a;
    width: 38px;
    text-align: right;
    flex-shrink: 0;
}

.nutrition-strip__note {
    font-size: 10px;
    color: #bbb;
    text-align: right;
    margin: 8px 0 0;
}

/* ============================================================
   HERO RICETTA DESKTOP — Variante A
   Titolo sovrapposto con overlay gradiente, stile homepage
   Solo @media (min-width: 768px) — mobile.css invariato
   ============================================================ */
@media (min-width: 768px) {

  /* Hero più alto */
  #top-header.recipe-hero {
    min-height: 420px;
    height: 42vw;
    max-height: 520px;
    background-size: cover;
    background-position: center;
    position: relative;
  }

  /* Overlay gradiente dal basso */
  #top-header.recipe-hero .recipe-hero-overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(
      to top,
      rgba(0,0,0,0.82) 0%,
      rgba(0,0,0,0.32) 52%,
      rgba(0,0,0,0.06) 100%
    );
    z-index: 1;
    pointer-events: none;
  }

  /* Container legacy riposizionato in basso sopra l'overlay */
  #top-header.recipe-hero > .container {
    display: block !important;
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    background: transparent;
    z-index: 2;
    padding-bottom: 32px;
  }

  /* Titolo bianco sovrapposto */
  #top-header.recipe-hero h1.recipe-title {
    font-family: 'Lora', Georgia, serif;
    font-size: 44px;
    font-weight: 700;
    color: #ffffff !important;
    line-height: 1.15;
    text-shadow: 0 2px 14px rgba(0,0,0,0.45);
    margin: 0 0 8px 0;
    text-transform: none;
    letter-spacing: normal;
  }

  /* Nasconde eventuale abstract/subtitle legacy nel hero desktop */
  #top-header.recipe-hero .header-abstract {
    display: none;
  }

  /* --- Fix override (specificity boost) --- */

  /* Fix 1 — forza position relative sull'hero + angoli arrotondati */
  #top-header.recipe-hero {
    position: relative !important;
    overflow: hidden;
    border-radius: 10px;
  }

  /* Fix 2 — overlay gradiente esplicito con z-index */
  #top-header.recipe-hero .recipe-hero-overlay {
    position: absolute !important;
    top: 0; left: 0; right: 0; bottom: 0;
    background: linear-gradient(
      to top,
      rgba(0,0,0,0.82) 0%,
      rgba(0,0,0,0.32) 52%,
      rgba(0,0,0,0.06) 100%
    ) !important;
    z-index: 1;
  }

  /* Fix 3 — container in basso sopra overlay */
  #top-header.recipe-hero > .container {
    position: absolute !important;
    bottom: 0 !important;
    left: 0 !important;
    right: 0 !important;
    top: auto !important;
    background: transparent !important;
    z-index: 2;
    padding-bottom: 28px;
  }

  /* Fix 4 — titolo: no uppercase, font corretto */
  #top-header.recipe-hero h1.recipe-title {
    text-transform: none !important;
    font-family: 'Lora', Georgia, serif !important;
    font-size: 40px !important;
    font-weight: 700 !important;
    color: #ffffff !important;
    text-shadow: 0 2px 14px rgba(0,0,0,0.50) !important;
    text-align: left !important;
    margin: 0 !important;
    line-height: 1.2 !important;
  }

  /* Hero inner — posizionato in basso sopra overlay */
  #top-header.recipe-hero .recipe-hero-inner {
    position: absolute !important;
    bottom: 0;
    left: 0;
    right: 0;
    z-index: 2;
    padding: 0;
  }

  .recipe-hero-content {
    padding: 0 32px 28px;
    max-width: 820px;
  }

  /* Breadcrumb dentro hero — override stile legacy */
  .recipe-hero-inner .breadcrumb {
    background: transparent !important;
    padding: 0 0 10px 0 !important;
    margin: 0 !important;
    font-size: 12px !important;
  }
  .recipe-hero-inner .breadcrumb a,
  .recipe-hero-inner .breadcrumb li,
  .recipe-hero-inner .breadcrumb li.active {
    color: rgba(255,255,255,0.65) !important;
  }
  .recipe-hero-inner .breadcrumb > li + li::before {
    color: rgba(255,255,255,0.40) !important;
  }

  /* Meta row */
  .recipe-hero-meta {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    margin-top: 10px;
  }

  .recipe-hero-tag {
    font-size: 11px;
    font-weight: 600;
    background: #C0392B;
    color: #fff !important;
    padding: 4px 12px;
    border-radius: 3px;
    letter-spacing: 0.07em;
    text-transform: uppercase;
    max-width: 280px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }

  .recipe-hero-info {
    font-size: 13px;
    color: rgba(255,255,255,0.80);
    font-family: sans-serif;
  }

}
/* /HERO RICETTA DESKTOP — Variante A */

/* Breadcrumb desktop sopra l'hero ricetta */
@media (min-width: 768px) {
  .recipe-breadcrumb-wrap {
    padding: 12px 0 8px;
    font-size: 13px;
  }
  .recipe-breadcrumb-wrap .breadcrumb {
    background: transparent !important;
    padding: 0 !important;
    margin: 0 !important;
    font-size: 13px;
  }
}

/* ── Info aggiuntive section ── */
.info-aggiuntive-section {
  border-top: 2px solid #D85A30;
  padding-top: 8px;
}

.info-aggiuntive-section .section-body h2 {
  font-size: 15px;
  font-weight: 600;
  color: #993C1D;
  margin: 0 0 8px 0;
  line-height: 1.4;
}

.info-aggiuntive-section .section-body h2,
.info-aggiuntive-section .section-body h3 {
  font-size: 15px;
  font-weight: 600;
  color: #993C1D;
  margin: 0 0 8px 0;
  line-height: 1.4;
}

.info-aggiuntive-section .section-body p {
  font-size: 14px;
  line-height: 1.7;
  color: #444;
  margin: 0;
}

.info-aggiuntive-section .section-body > h2,
.info-aggiuntive-section .section-body > h3 {
  border-left: 3px solid #D85A30;
  background: #faf7f3;
  padding: 14px 18px 14px 18px;
  margin-top: 16px;
  margin-bottom: 0;
}

.info-aggiuntive-section .section-body > p {
  border-left: 3px solid #D85A30;
  background: #faf7f3;
  padding: 10px 18px 14px 18px;
  margin-bottom: 4px;
}

.info-aggiuntive-section .section-body > h2 + p,
.info-aggiuntive-section .section-body > h3 + p {
  border-left: 3px solid #D85A30;
  background: #faf7f3;
  padding: 10px 18px 14px 18px;
  margin-top: 0;
  margin-bottom: 20px;
}

.info-aggiuntive-section .section-body ul,
.info-aggiuntive-section .section-body ol {
  border-left: 3px solid #D85A30;
  background: #faf7f3;
  padding: 10px 18px 14px 32px;
  margin-top: 0;
  margin-bottom: 20px;
  list-style-position: outside;
}

.info-aggiuntive-section .section-body ul {
  list-style-type: disc;
}

.info-aggiuntive-section .section-body ol {
  list-style-type: decimal;
}

.info-aggiuntive-section .section-body li {
  font-size: 14px;
  line-height: 1.8;
  color: #444;
  margin-bottom: 4px;
}

/* Nasconde il container legacy dentro #top-header.recipe-hero su desktop.
   Gruppo C (hub_*) ha .container vuoto — display:none è no-op visivo. */
@media (min-width: 768px) {
  #top-header.recipe-hero > .container {
    display: none !important;
  }

  #top-header.recipe-hero .recipe-hero-inner .recipe-hero-content .recipe-title {
    text-transform: uppercase !important;
  }

  .static-page {
    max-width: 680px;
    font-size: 16px;
    line-height: 1.7;
    padding: 24px 0;
  }
}

/* ════════════════════════════════════════════════════════════════════════
   Fix 3 — Header live search dropdown (desktop .header-search + drawer
   .mobile-search-form). Posizionato absolute sotto il form, max 6 card,
   highlight query, keyboard nav, AbortController per cancellare fetch.
   ════════════════════════════════════════════════════════════════════════ */
.header-search,
.mobile-search-form { position: relative; }

.hdr-ac {
  position: absolute;
  top: calc(100% + 4px); left: 0; right: 0;
  background: #fff;
  border: 1px solid var(--brand-border, #e8e4dd);
  border-radius: 8px;
  box-shadow: 0 8px 24px rgba(0,0,0,.11);
  z-index: 9000;
  max-height: 70vh;
  overflow-y: auto;
}
.hdr-aci {
  display: flex; align-items: center; gap: 10px;
  padding: 8px 12px;
  cursor: pointer; text-decoration: none; color: inherit;
  border-bottom: 1px solid #f0ebe4;
  transition: background .12s;
}
.hdr-aci:last-child { border-bottom: none; }
.hdr-aci:hover,
.hdr-aci[aria-selected="true"] { background: #fef5f1; }
.hdr-aci-thumb {
  width: 40px; height: 40px;
  border-radius: 50%;
  object-fit: cover;
  background: #f0ebe4;
  flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  font-size: 18px;
}
.hdr-aci-body { flex: 1; min-width: 0; }
.hdr-aci-name {
  font-size: 13px; line-height: 1.3;
  color: var(--brand-text, #1a1a1a);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.hdr-aci-name mark {
  background: none;
  color: var(--brand-coral, #D85A30);
  font-weight: 600;
}
.hdr-aci-cat {
  font-size: 11px; color: #aaa;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
@media (max-width: 767px) {
  .hdr-ac { max-height: calc(100vh - 140px); }
}

/* ============================================================
   HOME RESTYLING — Step 2 (opzione C)
   Data: 25 mag 2026
   Selettori adattati ai pattern reali (HOME_RESTYLING_AUDIT_RESULT.md).
   Riferimenti: HOME_RESTYLING_STEP2_CSS.md + HOME_RESTYLING_STEP2C_PROMPT.md
============================================================ */

/* 2E parte 1 — Migrazione inline <style> da home.html.j2:238-250 (IDENTICO,
   cross-viewport). Messa qui PRIMA di 2A così la 6px sotto override .video-thumb. */
.video-recipe-card { display:block; }
.video-thumb { position:relative; background-size:cover; background-position:center;
               padding-top:75%; border-radius:4px; overflow:hidden; }
.video-play-overlay { position:absolute; top:50%; left:50%;
                      transform:translate(-50%,-50%); color:#fff;
                      font-size:48px; text-shadow:0 2px 8px rgba(0,0,0,.6);
                      transition:transform .15s ease; }
.video-recipe-card:hover .video-play-overlay { transform:translate(-50%,-50%) scale(1.15); }
.video-title { position:absolute; left:0; right:0; bottom:0; color:#fff;
               padding:10px 12px; font-size:14px;
               background:linear-gradient(transparent,rgba(0,0,0,.75)); }

/* 2A — Border-radius foto cross-viewport (override l-mod-ratio legacy 4px) */
.home-popular .l-mod-ratio.home-card {
  border-radius: 6px;
  overflow: hidden;
}
.video-thumb {
  border-radius: 6px;
  overflow: hidden;
}
.home-featured .photo.l-mod-photoback {
  border-radius: 8px;
  overflow: hidden;
}

/* 2B — Carosello desktop: nascondi dots (ol.carousel-indicators.ci-leaf) */
@media (min-width: 768px) {
  #carousel-events .carousel-indicators,
  #carousel-events .ci-leaf {
    display: none !important;
  }
}

/* 2E parte 2 — Video grid desktop: nascondi items oltre i primi 4.
   Selettore adattato (#home-video-list non esiste in template).
   .row.recipes-set.recipe-col + figli diretti .col-md-3 = univoco
   alla grid video home (verificato cross-template: il partial seasonal
   ha .widget aggiuntivo ma i suoi figli sono div.text-center, non .col-md-3;
   la section.home-featured non ha .row come classe). */
@media (min-width: 768px) {
  .row.recipes-set.recipe-col > .col-md-3:nth-child(n+5) {
    display: none;
  }
}

/* ============================================================
   HOME RESTYLING — Step 2.5
   Data: 25 mag 2026
   Sblocca template tweaks: classi home-video/home-ingredients +
   frecce carosello desktop. Selettore titolo video adattato a
   .l-mod-titlesection (NON -long: l'h2 video usa la versione short).
============================================================ */

/* 2.5 — Frecce carosello desktop */
@media (min-width: 768px) {
  #carousel-events .carousel-control {
    width: 36px;
    background: rgba(255,255,255,0.85);   /* Step 7.B: era 0,0,0,0.25, ora bianco */
    color: #333;
    border-radius: 50%;
    top: 50%;
    bottom: auto;
    transform: translateY(-50%);
    height: 36px;
    line-height: 36px;
    opacity: 1;
    transition: background 0.15s ease;
    text-shadow: none;
  }
  #carousel-events .carousel-control:hover {
    background: rgba(255,255,255,1);
  }
  #carousel-events .carousel-control .glyphicon {
    color: #333 !important;
    text-shadow: none !important;
  }
  #carousel-events .carousel-control.left  { left: 8px;  }
  #carousel-events .carousel-control.right { right: 8px; }
  #carousel-events .carousel-control .glyphicon-chevron-left,
  #carousel-events .carousel-control .glyphicon-chevron-right {
    font-size: 14px;
    top: 50%;
    margin-top: -7px;
  }

  /* 2.5 — Section titles homepage serif + underline coral.
     Adattamento dall'audit: l'h2 video usa .l-mod-titlesection (short),
     l'h2 ingredienti del partial seasonal usa .l-mod-titlesectionlong. */
  .home-video .l-mod-titlesection,
  .home-ingredients .l-mod-titlesectionlong,
  .home-popular .l-mod-titlesectionlong {
    font-family: Georgia, 'Times New Roman', serif;
    font-size: 20px;
    font-weight: 700;
    text-align: center;
    position: relative;
    padding-bottom: 10px;
  }
  .home-video .l-mod-titlesection::after,
  .home-ingredients .l-mod-titlesectionlong::after,
  .home-popular .l-mod-titlesectionlong::after {
    content: '';
    display: block;
    width: 36px;
    height: 2px;
    background: #C0392B;
    margin: 6px auto 0;
  }
}

/* ============================================================
   HOME RESTYLING — Step 3
   Data: 25 mag 2026
   Value prop strip + hero search bar + featured split 50/50.
   Tutte regole desktop only (@media min-width 768px).
============================================================ */

/* 3A — Value prop strip */
@media (min-width: 768px) {
  .home-value-strip {
    background: #faf7f3;
    border-top: 0.5px solid #e8e4dd;
    border-bottom: 0.5px solid #e8e4dd;
    padding: 14px 0;
    margin: 20px 0;
  }
  .home-value-item {
    display: flex;
    align-items: center;
    gap: 10px;
    justify-content: center;
  }
  .home-value-item i {
    font-size: 18px;
    color: #C0392B;
    flex-shrink: 0;
  }
  .home-value-item strong {
    display: block;
    font-size: 12px;
    font-weight: 700;
    color: #1a1a1a;
    line-height: 1.2;
  }
  .home-value-item span {
    display: block;
    font-size: 10.5px;
    color: #666;
    line-height: 1.2;
  }
}

/* 3B — Search bar nell'hero: RIMOSSO Step 9.fix2 (search vive ora solo
   in .hdr-search-bar sempre visibile sotto navbar). Mantengo solo il
   padding-bottom hero per overlay curiosità. */
@media (min-width: 768px) {
  /* Hero: padding-bottom extra per spazio overlay curiosità absolute
     bottom (Step 9.B-overlay ~60px high). */
  .home-hero > .container {
    padding-bottom: 80px;
  }
}

/* 3C — Featured recipe split 50/50 desktop.
   Coesiste col vecchio .home-featured mobile (markup additivo). */
@media (min-width: 768px) {
  .home-featured-split {
    background: #faf7f3;
    border-radius: 8px;
    overflow: hidden;
    margin: 20px 0;
  }
  .home-featured-split > .row {
    display: flex;
    align-items: stretch;
    margin: 0;
  }
  .home-featured-photo-col {
    padding: 0;
  }
  .home-featured-photo-wrap {
    position: relative;
    height: 100%;
    min-height: 220px;
  }
  .home-featured-photo.l-mod-photoback {
    position: absolute;
    inset: 0;
    background-size: cover;
    background-position: center;
    border-radius: 0;
  }
  .home-featured-info {
    padding: 24px 28px;
    display: flex;
    flex-direction: column;
    gap: 10px;
    justify-content: center;
  }
  .home-featured-label {
    font-size: 10px;
    color: #D85A30;
    font-weight: 600;
    letter-spacing: 0.8px;
    text-transform: uppercase;
  }
  .home-featured-title {
    font-family: Georgia, 'Times New Roman', serif;
    font-size: 22px;
    font-weight: 700;
    line-height: 1.2;
    margin: 0;
  }
  .home-featured-title a {
    color: #1a1a1a;
    text-decoration: none;
  }
  .home-featured-title a:hover {
    color: #C0392B;
  }
  .home-featured-btn {
    align-self: flex-start;
    margin-top: 4px;
  }
}

/* ============================================================
   HOME RESTYLING — Step 4
   Data: 25 mag 2026
   4A intro short desktop + 4B SEO copy in fondo + 4C card top
   ricette con titolo SOTTO la foto (no overlay).
   Selettori 4C adattati alle card home reali (.l-mod-ratio.home-card
   con <span> figlio diretto, NO .l-mod-titlerecipelist legacy).
============================================================ */

/* 4A — Intro short desktop + hide intro long */
@media (min-width: 768px) {
  .home-intro-short p {
    font-size: 13.5px;
    line-height: 1.6;
    color: #555;
    text-align: center;
    max-width: 680px;
    margin: 0 auto;
    padding: 16px 20px;
  }
  .home-intro-long {
    display: none;
  }
}

/* 4B — SEO copy in fondo (desktop only) */
@media (min-width: 768px) {
  .home-seo-copy {
    border-top: 0.5px solid #e8e4dd;
    padding: 20px;
    margin-top: 30px;
  }
  .home-seo-copy p {
    font-size: 11.5px;
    line-height: 1.6;
    color: #999;
    text-align: center;
    max-width: 680px;
    margin: 0 auto;
  }
}

/* 4C — Card top ricette: titolo SOTTO la foto (no overlay desktop).
   Mobile invariato: il selettore mobile.css:1635 .l-mod-ratio.home-card>span
   con overlay gradient è dentro @media (max-width:767px), quindi non in
   conflitto. Qui solo desktop. */
@media (min-width: 768px) {
  .home-popular .l-mod-ratio.home-card {
    aspect-ratio: 4 / 3;
    padding-bottom: 0;
    height: auto;          /* OVERRIDE main.css:1988 .l-mod-ratio { height: 0 }
                              senza questo aspect-ratio non si attiva e la
                              card collassa a 0px (bug Step 4C → 4C-fix1) */
    background-size: cover;
    background-position: center;
    position: relative;
  }
  /* Fix 4C-fix2 (25 mag): titolo come OVERLAY in basso sulla foto
     (era top: 100% out-of-flow, ma container overflow:hidden lo nascondeva).
     Il <span> torna ad essere bottom:0 con gradient scuro come la versione
     mobile, ma fondo più soft 0.65 invece di 0.75. Markup invariato. */
  .home-popular .l-mod-ratio.home-card > span {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    background: linear-gradient(transparent, rgba(0,0,0,0.65)) !important;
    color: #fff !important;
    text-shadow: 0 1px 2px rgba(0,0,0,0.4);
    padding: 14px 10px 8px !important;
    font-size: 12px !important;
    font-weight: 600 !important;
    line-height: 1.3 !important;
    text-align: left;
    display: block !important;
  }
}

/* ============================================================
   Fix carosello eventi desktop — titoli mini come OVERLAY
   Le 4 miniature .l-mod-itemrep nel .l-mod-listspecialrep avevano
   titolo plain sotto la foto; adesso overlay gradient bottom come
   le card popolari, per coerenza visiva.
   Markup invariato: il titolo è il secondo <div> figlio dell'<a>
   con inline style (no class), catturato via :not(.l-mod-relatedhome).
============================================================ */
@media (min-width: 768px) {
  .l-mod-listspecialrep .l-mod-itemrep a {
    position: relative;
    display: block;
    text-decoration: none;
  }
  .l-mod-listspecialrep .l-mod-relatedhome {
    position: relative;
    overflow: hidden;
  }
  .l-mod-listspecialrep .l-mod-itemrep a > div:not(.l-mod-relatedhome) {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    background: linear-gradient(transparent, rgba(0,0,0,0.6));
    color: #fff;
    font-size: 11px !important;
    font-weight: 600;
    padding: 12px 8px 6px !important;
    line-height: 1.3;
    margin: 0 !important;
    text-shadow: 0 1px 2px rgba(0,0,0,0.4);
  }
}

/* ============================================================
   HOME RESTYLING — Step 5 (4 fix consolidati 25 mag)
   1. Hero più alto (420px) + badge + meta riga categoria/difficoltà
   2. Carosello: foto principale e mini stessa altezza + titolo
      speciale overlay (sull'immagine grande)
   3. Titolo .home-popular incluso nel gruppo serif+underline (sopra)
   4. Spazio vuoto sotto popolari: l-mod-fullspacing padding-bottom 0
      + override margin-top 30px inline del row video
============================================================ */

/* Fix 1 — Hero alto + badge + meta */
@media (min-width: 768px) {
  .home-hero {
    min-height: 420px;
    position: relative;       /* Step 9.B-overlay: ancoraggio per
                                 .home-hero-curiosita absolute (desktop).
                                 Mobile.css ha già position relative dentro
                                 max-width:767px). */
  }
  .home-hero-badge {
    display: inline-block;
    background: var(--brand-coral, #D85A30);
    color: #fff;
    padding: 5px 14px;
    border-radius: 20px;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 1px;
    margin-bottom: 14px;
    text-shadow: none;
  }
  .home-hero-meta {
    margin-top: 8px;          /* Step 7.A: era 14px, ridotto a 8 */
    display: flex;
    gap: 14px;
    flex-wrap: wrap;
  }
  .home-hero-meta span {
    color: #fff;
    font-size: 13px;
    text-shadow: 0 1px 2px rgba(0,0,0,0.5);
  }
  .home-hero-meta span:not(:first-child) {
    border-left: 1px solid rgba(255,255,255,0.4);
    padding-left: 14px;
  }
  .home-hero-meta span.meta-stars {
    color: #FFD93D;
    letter-spacing: 1px;
    font-size: 14px;
  }
}

/* Fix 2 — Carosello: foto principale e mini stessa altezza + titolo overlay */
@media (min-width: 768px) {
  /* Foto principale (col-md-6:first-child > a) — anchor relative */
  .l-mod-carousel .item .col-md-6:first-child > a {
    position: relative;
    display: block;
    text-decoration: none;
  }
  /* Miniature .l-mod-relatedhome — override main.css padding-bottom:70% / height:0
     a height fissa 195px. 4 mini in 2 righe × 195 + ~10 gap = ~400px (= foto grande). */
  .l-mod-listspecialrep .l-mod-relatedhome {
    padding-bottom: 0 !important;
    height: 195px !important;
  }
  /* Titolo "speciale + nome evento" come overlay sulla foto principale */
  .l-mod-carousel .item .l-mod-title {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    margin: 0;
    background: linear-gradient(transparent, rgba(0,0,0,0.75));
    color: #fff;
    padding: 36px 18px 16px;
    font-family: Georgia, 'Times New Roman', serif;
    font-size: 18px;
    font-weight: 700;
    line-height: 1.25;
    text-shadow: 0 1px 2px rgba(0,0,0,0.4);
    z-index: 2;
    display: block;
  }
  .l-mod-carousel .item .l-mod-title small {
    display: block;
    color: var(--brand-coral, #D85A30);
    font-size: 10px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    margin-bottom: 4px;
  }
}

/* Fix 4 — Spazio vuoto sotto popolari + sopra video */
@media (min-width: 768px) {
  /* Azzera padding-bottom legacy .l-mod-fullspacing (era 20px 0) */
  .l-mod-fullspacing {
    padding-bottom: 0 !important;
  }
  /* Override inline style="margin-top:30px" sul row video subito dopo .l-mod-fullspacing */
  .l-mod-fullspacing + .row[style*="margin-top"] {
    margin-top: 0 !important;
  }
}

/* ============================================================
   HOME RESTYLING — Step 6 (6 fix consolidati 25 mag)
   1. Hero form più alto (44px) + font 14px + margin-top 24px
      + padding-bottom 32px container (sopra in Step 1 modifiche al CSS hero search)
   2. Hide FB Like widget bianco desktop (regola esisteva solo mobile)
   3. Categoria pill .title-red-label nascosta desktop (markup hidden-md hidden-lg)
   4. Hero meta completa con chip tempo/cottura/porzioni/stelle (markup)
   5. Barra coral underline sotto <small> SPECIALE del carosello (::after 36px)
   6. Numeri 16.X → 18.X tutti i 6 locali (markup, intro long + SEO copy)
============================================================ */

/* Fix 2 — Hide FB Like widget bianco nell'hero (era visibile solo desktop) */
@media (min-width: 768px) {
  .home-hero .header-actions {
    display: none !important;
  }
}

/* Fix 5 — Barra coral underline sotto <small> "SPECIALE" del carosello */
@media (min-width: 768px) {
  .l-mod-carousel .item .l-mod-title small {
    position: relative;
    display: inline-block;
    padding-bottom: 6px;
    margin-bottom: 6px;
  }
  .l-mod-carousel .item .l-mod-title small::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 0;
    width: 40px;
    height: 2px;
    background: var(--brand-coral, #D85A30);
  }
}

/* ============================================================
   HOME RESTYLING — Step 7 (fix consolidati 25 mag)
   7A spazio meta/search più compatto (sopra: home-hero-search 16, meta 8)
   7B frecce carosello bianche (sopra)
   7C featured: blocco "Lo sapevi?" con curiosita (markup + CSS)
   7D header desktop restyling (navbar bianca + nav links coral underline)
============================================================ */

/* 7C — Featured split: blocco curiosità "Lo sapevi?" */
@media (min-width: 768px) {
  .home-featured-curiosita {
    border-top: 0.5px solid #e8e4dd;
    padding-top: 10px;
    margin-top: 4px;
  }
  .home-featured-curiosita-label {
    font-size: 10px;
    color: #D85A30;
    font-weight: 600;
    letter-spacing: 0.5px;
    text-transform: uppercase;
    margin-bottom: 4px;
  }
  .home-featured-curiosita p {
    font-size: 11.5px;
    color: #666;
    line-height: 1.55;
    margin: 0;
    font-style: italic;
  }
}

/* Step 7D + Step 8 rimossi (sostituiti da Step 8 FINALE in fondo al file). */

/* ============================================================
   HEADER — Step 8 FINALE (Opzione A) 25 mag
   Singola riga: logo sx | nav center | lente dx + accent line coral 3px.
   Mobile completamente intatto (.hdr-* / .mobile-* / .navbar-header.visible-xs).
   Markup: header.html.j2 ha
   - <div class="navbar-header hidden-xs navbar-header-desktop"> con <a class="navbar-brand brand ...">
   - <form class="navbar-form navbar-right hidden-xs hidden-sm"> con input + button submit
   - JS toggle inline alla fine del template.
   Selettore .container-fluid (NON .container come da prompt: il markup
   reale ha <div class="container-fluid"> figlio diretto di #mainNavigation).
============================================================ */
@media (min-width: 768px) {

  /* Hide vecchia riga 1 (logo grande + search form .header-search) desktop —
     :has() safety belt: applica solo se .navbar-header-desktop è presente
     (= template post-Step 8 finale). Pagine col vecchio markup non rotte. */
  body:has(.navbar-header-desktop) #header-container-m {
    display: none !important;
  }

  /* Accent line coral 3px in cima */
  #mainNavigation {
    border-top: 3px solid #C0392B !important;
    border-bottom: 0.5px solid #e8e4dd !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    background: #fff !important;
    min-height: 60px !important;
    margin-bottom: 0 !important;
  }

  /* Container flex — override Bootstrap float (markup reale ha .container-fluid)
     position: relative perché .navbar-form Step 8.fix1 è absolute al container */
  #mainNavigation > .container-fluid {
    display: flex !important;
    align-items: center !important;
    height: 57px !important;
    padding-left: 15px !important;
    padding-right: 15px !important;
    position: relative !important;
  }

  /* Navbar-header desktop — logo, no float */
  #mainNavigation .navbar-header-desktop {
    float: none !important;
    flex-shrink: 0 !important;
    margin-right: 10px !important;     /* Step 9.fix3: era 20, compatto */
  }
  /* Step 9.fix3 — selettore .navbar-header generale per coerenza (in caso
     altre regole o variant nei browser) */
  #mainNavigation .navbar-header {
    margin-right: 10px !important;
  }
  /* navbar-brand: invariato come dimensione (eredita .brand legacy bg-image) */
  #mainNavigation .navbar-header-desktop .navbar-brand {
    padding: 0 !important;
    height: 57px !important;
    line-height: 57px !important;
    margin: 0 !important;
  }

  /* Navbar-collapse — flex inline, override collapse JS BS3 */
  #mainNavigation .navbar-collapse {
    display: flex !important;
    flex: 1 !important;
    align-items: center !important;
    padding: 0 !important;
    border: none !important;
    box-shadow: none !important;
    max-height: none !important;
    overflow: visible !important;
    width: auto !important;
  }

  /* Nav list — Step 9.fix4: rimosso padding-right 50 (era per lente
     navbar-form absolute Step 8, ora rimossa Step 9.fix2). + flex-wrap
     nowrap per evitare wrap su locali con voci lunghe (PT/ES). */
  #mainNavigation .navbar-nav {
    display: flex !important;
    align-items: center !important;
    flex: 1 !important;
    float: none !important;
    margin: 0 !important;
    flex-wrap: nowrap !important;
  }
  #mainNavigation .navbar-nav > li {
    float: none !important;
    white-space: nowrap !important;
  }

  /* Nav links — Step 9.fix4: font 12px + padding 0 7px + white-space
     nowrap (era 12.5px / 0 9px / no nowrap). PT/ES con voci più
     lunghe ora restano in singola riga. */
  #mainNavigation .navbar-nav > li > a {
    text-transform: none !important;
    font-size: 12px !important;
    font-weight: 500 !important;
    color: #444 !important;
    padding: 0 7px !important;
    line-height: 57px !important;
    height: 57px !important;
    display: flex !important;
    align-items: center !important;
    border-bottom: 2px solid transparent !important;
    transition: color 0.15s ease, border-color 0.15s ease !important;
    background: transparent !important;
    white-space: nowrap !important;
  }
  #mainNavigation .navbar-nav > li > a:hover,
  #mainNavigation .navbar-nav > li > a:focus {
    color: #C0392B !important;
    border-bottom-color: #C0392B !important;
    background: transparent !important;
  }

  /* Voce stagione — verde */
  #mainNavigation .navbar-nav > li.menu-item-season > a {
    color: #3a7a2a !important;
  }
  #mainNavigation .navbar-nav > li.menu-item-season > a:hover {
    color: #2a5a1a !important;
    border-bottom-color: #3a7a2a !important;
  }

  /* Dropdown */
  #mainNavigation .dropdown-menu {
    border: 0.5px solid #e8e4dd !important;
    border-radius: 4px !important;
    box-shadow: 0 4px 12px rgba(0,0,0,0.08) !important;
    padding: 6px 0 !important;
    margin-top: -1px !important;
  }
  #mainNavigation .dropdown-menu > li > a {
    font-size: 12.5px !important;
    color: #444 !important;
    padding: 7px 16px !important;
    text-transform: none !important;
  }
  #mainNavigation .dropdown-menu > li > a:hover {
    background: #faf7f3 !important;
    color: #C0392B !important;
  }

  /* .nav-search-toggle / Step 9 lente toggle: RIMOSSO Step 9.fix
     (search bar sempre visibile, niente trigger). */

}

/* ============================================================
   HEADER — Step 9A search bar full-width sotto nav (25 mag)
   Hidden default desktop; .open la mostra. Click su #navSearchToggle
   apre/chiude. Dropdown autocomplete dentro form (attachHeaderAC).
   Mobile completamente invariato.
============================================================ */
@media (min-width: 768px) {

  .hdr-search-bar {
    /* Step 9.fix: sempre visibile (era display:none + .open via JS toggle) */
    display: block;
    background: #fff;
    border-bottom: 2px solid #C0392B;
    box-shadow: 0 4px 12px rgba(0,0,0,0.08);
    position: relative;
    z-index: 1000;
  }
  .hdr-search-inner {
    display: flex;
    align-items: center;
    justify-content: center;    /* Step 9.fix2: centra form+pills */
    height: 64px;
    gap: 16px;
    position: relative;
  }
  .hdr-search-form {
    display: flex;
    flex: 1;
    max-width: 420px;           /* Step 9.fix2: limita larghezza form */
    height: 40px;
    border: 0.5px solid #e8e4dd;
    border-radius: 4px;
    overflow: visible;          /* dropdown deve uscire fuori */
    position: relative;
    margin: 0;
    padding: 0;
  }
  .hdr-search-input {
    flex: 1;
    border: none;
    outline: none;
    padding: 0 14px;
    font-size: 14px;
    color: #333;
    background: #fff;
    border-radius: 4px 0 0 4px;
  }
  .hdr-search-input::placeholder { color: #bbb; }
  .hdr-search-btn {
    background: #C0392B;
    border: none;
    color: #fff;
    width: 48px;
    font-size: 14px;
    cursor: pointer;
    transition: background 0.15s;
    border-radius: 0 4px 4px 0;
  }
  .hdr-search-btn:hover { background: #a93226; }

  /* Step 9.fix — Quick search pills a destra del form */
  .hdr-search-pills {
    display: flex;
    align-items: center;
    gap: 8px;
    flex: 0 0 auto;             /* Step 9.fix2: solo spazio naturale, lascia
                                   il justify-content:center del parent agire */
    flex-wrap: wrap;
  }
  .hdr-search-pill {
    display: inline-block;
    padding: 6px 14px;
    background: #faf7f3;
    border: 0.5px solid #e8e4dd;
    border-radius: 20px;
    font-size: 12px;
    color: #555;
    text-decoration: none;
    line-height: 1.2;
    transition: background 0.15s, border-color 0.15s, color 0.15s;
    white-space: nowrap;
  }
  .hdr-search-pill:hover,
  .hdr-search-pill:focus {
    background: #fff;
    border-color: #C0392B;
    color: #C0392B;
    text-decoration: none;
  }

  /* Dropdown autocomplete attachHeaderAC dentro .hdr-search-form.
     Override del .hdr-ac base: posizionato sotto il form a full width,
     right border-radius pari a quello del form. */
  .hdr-search-form .hdr-ac {
    top: calc(100% + 4px) !important;
    left: 0 !important;
    right: 0 !important;
    width: auto !important;
    max-height: 60vh;
  }

}

/* ============================================================
   HOME RESTYLING — Step 9B-overlay — Curiosità ricetta del giorno
   come OVERLAY sulla parte bassa dell'hero (era sotto su sfondo bianco
   opaco). Markup ora dentro <section.home-hero>, ultimo elemento prima
   di </section>. Backdrop-blur per leggibilità sulla foto sottostante.
   Desktop only.
============================================================ */
@media (min-width: 768px) {
  .home-hero-curiosita {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    background: rgba(255,255,255,0.82);
    backdrop-filter: blur(3px);
    -webkit-backdrop-filter: blur(3px);
    padding: 12px 30px;
    display: flex;
    align-items: baseline;
    gap: 12px;
    border-top: 1px solid rgba(255,255,255,0.4);
    z-index: 2;
  }
  .home-hero-curiosita-label {
    font-size: 10px;
    color: #C0392B;
    font-weight: 700;
    letter-spacing: 1px;
    text-transform: uppercase;
    flex-shrink: 0;
  }
  .home-hero-curiosita p {
    font-size: 12.5px;
    color: #1a1a1a;
    line-height: 1.55;
    margin: 0;
    font-style: italic;
  }
}

/* === SOCIAL SHARE STRIP — desktop (grid 2x2) === */
@media (min-width: 768px) {
  .share-strip-section {
    margin: 0;
    padding: 0;
  }
  .share-strip {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 8px;
  }
  .share-btn {
    display: flex;
    align-items: center;
    gap: 7px;
    padding: 9px 12px;
    border-radius: 7px;
    font-size: 13px;
    font-weight: 600;
    font-family: system-ui, -apple-system, sans-serif;
    color: #fff;
    text-decoration: none;
    transition: opacity 0.15s ease;
    white-space: nowrap;
  }
  .share-btn:hover,
  .share-btn:focus {
    opacity: 0.85;
    color: #fff;
    text-decoration: none;
  }
  .share-btn__icon {
    width: 15px;
    height: 15px;
    flex-shrink: 0;
  }
  .share-btn--fb  { background: #1877F2; }
  .share-btn--wa  { background: #25D366; }
  .share-btn--pin { background: #E60023; }
  .share-btn--x   { background: #111;    }
}

/* === Card popolari home — migrazione customclass da <style> inline === */
.customclass {
  margin-bottom: 5px;
}
.customclass span {
  font-size: 16px !important;
}

/* === Chip featured home — desktop only (mobile usa hidden-xs hidden-sm) === */
@media (min-width: 768px) {
  .home-featured-chips {
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
    margin-top: 4px;
  }
  .home-featured-chips span {
    background: #fff;
    border: 0.5px solid #e8e4dd;
    border-radius: 3px;
    padding: 3px 9px;
    font-size: 11px;
    color: #666;
  }
  .home-featured-stars {
    color: #FFD93D;
    letter-spacing: 1px;
  }
}

/* ============================================================
   HOME RESTYLING — 28 mag 2026 — desktop only
   Fix 1: gradiente scuro bottom hero + meta centrata
   Fix 2: carosello l-mod-title overlay full-width + barra coral full
============================================================ */

/* Fix 1 — Hero: gradiente scuro bottom per leggibilità titolo/meta.
   .home-hero ha già position:relative (riga 1256). La curiosità overlay
   (.home-hero-curiosita, z-index:2) sta SOPRA il gradient (z-index:0) e
   sopra il container (z-index:1), quindi resta leggibile. Gradient
   height 38% per non sovrapporsi alla curiosità overlay (che è ~60px
   bottom su hero min-height 420px ≈ 14%). */
@media (min-width: 768px) {
  .home-hero::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    height: 38%;
    background: linear-gradient(transparent, rgba(0,0,0,0.55));
    pointer-events: none;
    z-index: 0;
  }
  .home-hero > .container {
    position: relative;
    z-index: 1;
  }
  .home-hero-meta {
    justify-content: center !important;
    text-align: center;
  }
}

/* Fix 2 — Carosello: titolo overlay full-width.
   .l-mod-title già aveva left:0/right:0 ma senza width esplicito; alcune
   regole legacy in main.css applicano width parziali. Hard-set 100%.
   Le regole su <small> e small::after rimosse: il markup è
   <big class="l-mod-title"><small>speciale</small> NOME EVENTO</big>
   con "NOME EVENTO" sibling testuale del small. Forzare small a
   display:block faceva andare il nome a capo e la barra coral
   (::after bottom:0 width:100%) appariva tra "speciale" e il nome,
   visivamente come riga rossa sopra il titolo. La barra coral 40px
   sotto "SPECIALE" è già definita allo Step 6 fix 5 (sotto). */
@media (min-width: 768px) {
  .l-mod-carousel .item .l-mod-title {
    left: 0 !important;
    right: 0 !important;
    width: 100% !important;
  }
}

/* ===================================================
   TYPOGRAPHY DESKTOP — corpo ricetta (audit 5 giu 2026)
   Rimuove text-align:justify (spaziature irregolari, illeggibile in
   corsivo su consigli/curiosità) + line-height più ariosa sui blocchi
   di testo lungo. Selettori con ID > specificità di main.css
   (.l-mod-text>div = 0,2,0 ; .l-mod-cc = 0,1,0) → niente !important.
   Invariati: font jubilat (Typekit), font-size 18px, colori, non-testo.
=================================================== */
@media (min-width: 768px) {

  /* Intro + Preparazione: togli justify, più aria tra le righe */
  #introduction .section-body > p,
  #directions .section-body > p {
    text-align: left;
    line-height: 1.65;
  }

  /* Consigli + Curiosità: corsivo + justify era il caso peggiore */
  #suggestions .l-mod-cc,
  #curiosities .l-mod-cc {
    text-align: left;
    line-height: 1.65;
    font-style: normal;
  }

}
