/* ============================================================
 * Auto Feed Listing — Stile
 * Brand: Rent&Drive
 * Tokens: Spartan + #39273D
 * ============================================================ */

/* ============================================================
 * TOKENS
 * ============================================================ */
.afl-wrapper,
.afl-detail,
.afl-lightbox {
    /* Colori allineati alla palette Kadence del tema rentedrive.it */
    --afl-ink:        var(--global-palette2, #39273d);
    --afl-primary:    var(--global-palette2, #39273d);
    --afl-primary-2:  #4a334f;
    --afl-accent:     var(--global-palette1, #ee1f38);
    --afl-accent-2:   #c41a2e;
    /* Colori semantici del sito principale (con fallback alle palette Kadence) */
    --afl-privati:    var(--privati, var(--global-palette4, #39273d));
    --afl-business:   var(--business, var(--global-palette5, #ee1f38));
    --afl-cream:      var(--global-palette7, #f4f0f0);
    --afl-mute:       #79697d; /* scurito per contrasto AA su bianco (~5:1); prima var(--global-palette3,#8e7f92) = 3.75:1 */
    --afl-line:       #e8e0ec;
    --afl-line-2:     #d4cad8;
    --afl-success:    #2f8a55;
    --afl-warn:       #b8740b;
    --afl-bg:         var(--global-palette8, #ffffff);

    --afl-radius-sm:  6px;
    --afl-radius:     10px;
    --afl-radius-lg:  14px;

    --afl-shadow-1: 0 1px 2px rgba(57, 39, 61, 0.05), 0 1px 3px rgba(57, 39, 61, 0.06);
    --afl-shadow-2: 0 4px 14px rgba(57, 39, 61, 0.10), 0 2px 6px rgba(57, 39, 61, 0.06);
    --afl-shadow-3: 0 12px 32px rgba(57, 39, 61, 0.14), 0 4px 12px rgba(57, 39, 61, 0.08);

    --afl-font: 'Spartan', 'League Spartan', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;

    /* Header sticky Kadence (80px) + margine di sicurezza: offset per elementi sticky e ancore */
    --afl-header-h:   80px;
    --afl-sticky-top: calc(var(--afl-header-h) + 20px);
}

.afl-wrapper,
.afl-wrapper *,
.afl-detail,
.afl-detail *,
.afl-lightbox,
.afl-lightbox * {
    font-family: var(--afl-font);
    box-sizing: border-box;
}

/* Override h1 e h2 nel contesto plugin per evitare conflitti col tema */
.afl-detail h1, .afl-detail h2, .afl-detail h3 { line-height: 1.15; }

/* Titolo di sezione solo per screen reader / SEO (non visibile) */
.afl-sr-only {
    position: absolute !important;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}


/* ============================================================
 * LISTA — sidebar e griglia (eredita stile precedente, ripulito)
 * ============================================================ */
.afl-wrapper {
    display: grid;
    grid-template-columns: 1fr 3fr;
    gap: 32px;
    margin: 40px auto;
    color: var(--afl-ink);
}

.afl-sidebar {
    background: var(--afl-bg);
    border: 1px solid var(--afl-line);
    border-radius: var(--afl-radius);
    padding: 22px;
    height: fit-content;
    position: sticky;
    top: var(--afl-sticky-top);
    max-height: calc(100vh - var(--afl-sticky-top) - 20px);
    overflow-y: auto;
    box-shadow: var(--afl-shadow-1);
}
.afl-sidebar::-webkit-scrollbar { width: 4px; }
.afl-sidebar::-webkit-scrollbar-track { background: transparent; }
.afl-sidebar::-webkit-scrollbar-thumb { background: var(--afl-line-2); border-radius: 2px; }
.afl-sidebar-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding-bottom: 14px;
    margin-bottom: 18px;
    border-bottom: 1px solid var(--afl-line);
}
.afl-sidebar-header h3 {
    margin: 0;
    font-size: 12px;
    font-weight: 700;
    color: var(--afl-primary);
    text-transform: uppercase;
    letter-spacing: 1.2px;
}
.afl-reset {
    background: none;
    border: 0;
    color: var(--afl-accent);
    font-size: 10px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 1px;
    cursor: pointer;
    padding: 4px 6px;
}
.afl-reset:hover { color: var(--afl-primary); background: none; box-shadow: none; }

/* ---- Pill filtri attivi ---- */
.afl-active-filters {
    flex-wrap: wrap;
    gap: 6px;
    margin-bottom: 18px;
    padding-bottom: 18px;
    border-bottom: 1px solid var(--afl-line);
}
.afl-active-filters:not([hidden]) { display: flex; }
.afl-pill {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    background: var(--afl-cream);
    border: 1px solid var(--afl-line);
    color: var(--afl-ink);
    font-family: inherit;
    font-size: 11px;
    font-weight: 600;
    line-height: 1;
    padding: 5px 8px 5px 11px;
    border-radius: 999px;
    cursor: pointer;
    transition: background .15s, border-color .15s, color .15s;
}
.afl-pill:hover {
    background: var(--afl-cream);
    border-color: var(--afl-accent);
    color: var(--afl-accent);
    box-shadow: none;
}
.afl-pill svg { width: 13px; height: 13px; flex-shrink: 0; }
.afl-pill-x { display: inline-flex; opacity: .65; }
.afl-pill:hover .afl-pill-x { opacity: 1; }

.afl-filter-group {
    margin-bottom: 18px;
    padding-bottom: 18px;
    border-bottom: 1px solid var(--afl-line);
}
.afl-filter-group:last-child { border: 0; margin-bottom: 0; padding-bottom: 0; }
.afl-filter-group h4 {
    margin: 0 0 10px;
    font-size: 11px;
    font-weight: 700;
    color: var(--afl-primary);
    text-transform: uppercase;
    letter-spacing: 1.2px;
}

/* ---- Accordion: titolo cliccabile + chevron, contenuto a scomparsa ---- */
.afl-filter-group.afl-accordion > h4 {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    margin: 0;
    padding: 2px 0;
    cursor: pointer;
    user-select: none;
    transition: color .15s;
}
.afl-filter-group.afl-accordion > h4:hover { color: var(--afl-accent); }
.afl-filter-group.afl-accordion > h4::after {
    content: '';
    flex-shrink: 0;
    width: 7px;
    height: 7px;
    margin-bottom: 3px;
    border-right: 2px solid var(--afl-mute);
    border-bottom: 2px solid var(--afl-mute);
    transform: rotate(45deg);
    transition: transform .2s;
}
.afl-filter-group.afl-accordion.is-open > h4 {
    margin-bottom: 12px;
    color: var(--afl-accent);
}
.afl-filter-group.afl-accordion.is-open > h4::after {
    transform: rotate(-135deg);
    margin-bottom: -2px;
    border-color: var(--afl-accent);
}
/* Contenuto nascosto quando il gruppo e' chiuso */
.afl-filter-group.afl-accordion:not(.is-open) > :not(h4) { display: none; }
.afl-filter-group select,
.afl-price-range input {
    width: 100%;
    padding: 9px 12px;
    border: 1px solid var(--afl-line);
    border-radius: var(--afl-radius-sm);
    background: var(--afl-bg);
    font-size: 13px;
    color: var(--afl-ink);
    font-family: inherit;
}
.afl-filter-group select:focus,
.afl-price-range input:focus {
    outline: 2px solid var(--afl-primary);
    outline-offset: -1px;
}
.afl-checks { display: flex; flex-direction: column; gap: 4px; }
/* In accordion le liste si espandono per intero: niente scrollbar interna */
.afl-checks-scroll { max-height: none; overflow: visible; padding-right: 0; }
.afl-check {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 13px;
    cursor: pointer;
    padding: 4px 0;
}
.afl-check input[type="checkbox"] {
    width: 15px; height: 15px;
    accent-color: var(--afl-primary);
    margin: 0;
}
/* Conteggio veicoli disponibili per l'opzione (faceting) */
.afl-check-count {
    margin-left: auto;
    font-size: 11px;
    font-weight: 600;
    color: var(--afl-mute);
    font-variant-numeric: tabular-nums;
}
.afl-check-count:empty { display: none; }
/* Opzione non disponibile coi filtri attivi (0 risultati) */
.afl-check.is-disabled {
    opacity: .38;
    cursor: not-allowed;
}
.afl-check.is-disabled input { cursor: not-allowed; }
.afl-price-range {
    display: flex;
    align-items: center;
    gap: 8px;
}
.afl-price-range span { color: var(--afl-mute); }

/* ---- Slider chilometraggio (doppia maniglia) ---- */
.afl-range-slider {
    position: relative;
    height: 46px;
    margin-top: 2px;
}
.afl-range-track {
    position: absolute;
    top: 13px;
    left: 8px; right: 8px;
    height: 4px;
    background: var(--afl-line);
    border-radius: 2px;
}
.afl-range-fill {
    position: absolute;
    top: 0; bottom: 0;
    background: var(--afl-primary);
    border-radius: 2px;
}
.afl-range-slider input[type="range"] {
    position: absolute;
    top: 6px;
    left: 0;
    width: 100%;
    height: 18px;
    margin: 0;
    padding: 0;
    border: 0;
    background: transparent;
    -webkit-appearance: none;
    appearance: none;
    pointer-events: none;
}
.afl-range-slider input[type="range"]::-webkit-slider-runnable-track {
    -webkit-appearance: none;
    background: transparent;
    border: 0;
}
.afl-range-slider input[type="range"]:focus { outline: none; }
.afl-range-min { z-index: 3; }
.afl-range-max { z-index: 4; }
.afl-range-slider input[type="range"]::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    pointer-events: auto;
    width: 16px; height: 16px;
    border-radius: 50%;
    background: var(--afl-bg);
    border: 2px solid var(--afl-primary);
    cursor: pointer;
    box-shadow: 0 1px 3px rgba(31, 20, 36, 0.25);
}
.afl-range-slider input[type="range"]::-moz-range-thumb {
    pointer-events: auto;
    width: 16px; height: 16px;
    border-radius: 50%;
    background: var(--afl-bg);
    border: 2px solid var(--afl-primary);
    cursor: pointer;
    box-shadow: 0 1px 3px rgba(31, 20, 36, 0.25);
}
.afl-range-slider input[type="range"]::-moz-range-track { background: transparent; }
.afl-range-vals {
    position: absolute;
    left: 0; right: 0;
    top: 24px;
    display: flex;
    justify-content: space-between;
    font-size: 11px;
    font-weight: 600;
    color: var(--afl-mute);
}

.afl-main { min-width: 0; }
/* Intro pagina listing: titolo + descrizione in cima all'elenco */
.afl-listing-intro {
    margin: 0 0 20px;
    padding: 0 0 18px;
    border-bottom: 1px solid var(--afl-line);
}
.afl-listing-intro-title {
    margin: 0 0 8px;
    font-size: 26px;
    line-height: 1.2;
    font-weight: 800;
    color: var(--afl-primary);
    letter-spacing: -0.01em;
}
.afl-listing-intro-text {
    margin: 0;
    font-size: 15px;
    line-height: 1.65;
    color: var(--afl-mute);
}
.afl-listing-intro-text p { margin: 0 0 10px; }
.afl-listing-intro-text p:last-child { margin: 0; }
/* Anteprima "Leggi di più": altezza ridotta (~4 righe) con sfumatura, finché non si espande */
.afl-listing-intro-text.is-collapsed {
    position: relative;
    max-height: 7.4em;
    overflow: hidden;
}
.afl-listing-intro-text.is-collapsed::after {
    content: '';
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    height: 2.4em;
    background: linear-gradient(to bottom, rgba(255, 255, 255, 0), #fff);
    pointer-events: none;
}
.afl-intro-toggle {
    margin-top: 8px;
    padding: 0;
    border: 0;
    background: none;
    color: var(--afl-accent);
    font-family: inherit;
    font-size: 14px;
    font-weight: 700;
    cursor: pointer;
    text-decoration: underline;
}
/* Specificità sopra ai button del tema: niente sfondo/ombra in hover/focus */
.afl-listing-intro .afl-intro-toggle:hover,
.afl-listing-intro .afl-intro-toggle:focus {
    background: none;
    box-shadow: none;
    color: var(--afl-accent-2);
}
/* FAQ in fondo alla colonna principale del listing */
.afl-listing-faq {
    margin-top: 44px;
    padding-top: 32px;
    border-top: 1px solid var(--afl-line);
    scroll-margin-top: var(--afl-sticky-top); /* l'ancora non finisce sotto l'header sticky */
}
.afl-listing-faq-title {
    margin: 0 0 8px;
    font-size: 26px;
    line-height: 1.2;
    font-weight: 800;
    color: var(--afl-primary);
    letter-spacing: -0.01em;
}
.afl-listing-faq-intro {
    margin: 0 0 22px;
    font-size: 15px;
    line-height: 1.65;
    color: var(--afl-mute);
}
.afl-listing-faq-intro p { margin: 0 0 10px; }
.afl-listing-faq-intro p:last-child { margin: 0; }

/* Ultimate FAQ ridisegnato in stile brand (card domanda + risposta) */
.afl-faqs .ewd-ufaq-faq-list input[type="hidden"] { display: none; }
.afl-faqs .ewd-ufaq-faq-title {
    margin-top: 12px;
    border: 1px solid var(--afl-line);
    border-radius: var(--afl-radius);
    background: var(--afl-cream);
    overflow: hidden;
}
.afl-faqs .ewd-ufaq-faqs > .ewd-ufaq-faq-title:first-of-type { margin-top: 0; }
/* Aperto: l'header si connette al corpo sotto (radius solo in alto, niente bordo inferiore) */
.afl-faqs .ewd-ufaq-faq-title.afl-faq-open {
    border-bottom: 0;
    border-radius: var(--afl-radius) var(--afl-radius) 0 0;
}
/* Solo l'header della domanda (NON il corpo risposta, che usa la stessa classe del plugin) */
.afl-faqs .ewd-ufaq-faq-title > .ewd-ufaq-post-margin {
    position: relative;
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 15px 46px 15px 18px;
    text-decoration: none;
    cursor: pointer;
}
.afl-faqs .ewd-ufaq-post-margin-symbol { display: none; }
/* Chevron a destra (solo header): indica che la voce è espandibile; ruota quando è aperta */
.afl-faqs .ewd-ufaq-faq-title > .ewd-ufaq-post-margin::after {
    content: '';
    position: absolute;
    right: 20px;
    top: 50%;
    width: 9px;
    height: 9px;
    margin-top: -6px;
    border-right: 2px solid var(--afl-primary);
    border-bottom: 2px solid var(--afl-primary);
    transform: rotate(45deg);
    transition: transform .2s ease, margin-top .2s ease;
}
.afl-faqs .ewd-ufaq-faq-title.afl-faq-open > .ewd-ufaq-post-margin::after {
    transform: rotate(-135deg);
    margin-top: -2px;
}
.afl-faqs .ewd-ufaq-faq-title-text h3,
.afl-faqs .ewd-ufaq-faq-title-text h4 {
    margin: 0;
    font-size: 16px;
    font-weight: 700;
    line-height: 1.4;
    color: var(--afl-primary);
    text-transform: none;
    letter-spacing: normal;
}
.afl-faqs .ewd-ufaq-faq-title-text { flex: 1 1 auto; }
.afl-faqs .ewd-ufaq-faq-body {
    border: 1px solid var(--afl-line);
    border-top: 0;
    border-radius: 0 0 var(--afl-radius) var(--afl-radius);
    background: var(--afl-bg);
    padding: 14px 18px 16px;
    font-size: 14.5px;
    line-height: 1.7;
    color: var(--afl-mute);
}
.afl-faqs .ewd-ufaq-faq-body p { margin: 0 0 10px; }
.afl-faqs .ewd-ufaq-faq-body p:last-child { margin: 0; }

/* CTA "Leggi le FAQ" in fondo alla sidebar filtri */
.afl-faq-cta {
    display: block;
    margin-top: 16px;
    padding: 16px 18px;
    border-radius: var(--afl-radius);
    background: linear-gradient(180deg, #f5eff7 0%, var(--afl-cream) 100%);
    border: 1px solid var(--afl-line-2);
    text-decoration: none;
    transition: border-color .2s, box-shadow .2s;
}
.afl-faq-cta:hover {
    border-color: var(--afl-primary);
    box-shadow: var(--afl-shadow-2);
}
.afl-faq-cta-q {
    display: block;
    margin-bottom: 6px;
    font-size: 13.5px;
    font-weight: 700;
    line-height: 1.35;
    color: var(--afl-primary);
}
.afl-faq-cta-go {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 13px;
    font-weight: 700;
    color: var(--afl-accent);
}
.afl-faq-cta-go svg { width: 16px; height: 16px; }
.afl-faq-cta:hover .afl-faq-cta-go { color: var(--afl-accent-2); }

.afl-meta {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 10px 16px;
    padding: 10px 16px;
    background: var(--afl-cream);
    border-radius: var(--afl-radius-sm);
    margin-bottom: 18px;
    font-size: 13px;
    color: var(--afl-mute);
}
.afl-meta-range {
    font-size: 14px;
    color: var(--afl-ink);
    font-weight: 500;
    letter-spacing: 0.03em;
}
.afl-meta-range .afl-range-from,
.afl-meta-range .afl-range-to {
    font-weight: 700;
    color: var(--afl-primary);
}
.afl-count {
    color: var(--afl-primary);
    font-size: 15px;
    font-weight: 700;
}

/* Ordinamento nella barra risultati (stile e-commerce, a destra) */
.afl-sort {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-left: auto;
}
.afl-sort label {
    font-size: 12px;
    font-weight: 600;
    color: var(--afl-mute);
    white-space: nowrap;
}
.afl-sort select {
    padding: 7px 30px 7px 12px;
    border: 1px solid var(--afl-line);
    border-radius: var(--afl-radius-sm);
    background: var(--afl-bg);
    color: var(--afl-ink);
    font-family: inherit;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    /* freccia custom (il select nativo nasconde lo stile in alcuni temi) */
    -webkit-appearance: none;
    appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2339273d' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 9px center;
}
.afl-sort select:focus {
    outline: 2px solid var(--afl-primary);
    outline-offset: -1px;
}
.afl-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 24px;
}
.afl-card {
    position: relative;
    background: var(--afl-bg);
    border: 1px solid var(--afl-line);
    border-radius: var(--afl-radius-lg);
    overflow: hidden;
    display: flex;
    flex-direction: column;
    box-shadow: var(--afl-shadow-1);
    transition: box-shadow .25s, transform .25s, border-color .25s;
    text-decoration: none;
    color: inherit;
    cursor: pointer;
}
.afl-card:hover {
    box-shadow: var(--afl-shadow-2);
    transform: translateY(-2px);
    border-color: var(--afl-line-2);
}
.afl-card:focus-visible {
    outline: 3px solid var(--afl-accent);
    outline-offset: 2px;
}

.afl-card-img {
    width: 100%;
    height: 200px;
    flex-shrink: 0;
    background: var(--afl-cream) center/cover no-repeat;
    position: relative;
}
.afl-card-img-placeholder {
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--afl-mute);
    font-size: 12px;
    height: 100%;
    background: var(--afl-cream);
}
.afl-badge {
    position: absolute;
    top: 12px; left: 12px;
    padding: 5px 12px;
    font-size: 10px;
    font-weight: 700;
    border-radius: 999px;
    text-transform: uppercase;
    letter-spacing: 0.8px;
}
.afl-badge-cat {
    background: rgba(255, 255, 255, 0.96);
    color: var(--afl-primary);
    box-shadow: 0 1px 4px rgba(31, 20, 36, 0.12);
    backdrop-filter: blur(6px);
}
.afl-badge-sold {
    position: absolute;
    top: 12px; right: 12px;
    background: var(--afl-accent);
    color: #fff;
    padding: 5px 12px;
    font-size: 10px;
    font-weight: 700;
    border-radius: 999px;
    text-transform: uppercase;
    letter-spacing: 0.8px;
    z-index: 5;
}
.afl-card-body {
    padding: 20px 22px 22px;
    flex: 1;
    display: flex;
    flex-direction: column;
    min-width: 0;
}

/* Un solo H2 per card (nome + allestimento): testo univoco per la SEO, stesso look.
   .afl-card-title è il contenitore semantico; nome e allestimento sono due span block. */
.afl-card .afl-card-title {
    display: block;
    margin: 0 0 14px; /* spazio verso il prezzo (come prima il trim) */
}
.afl-card-name {
    display: block;
    font-size: 21px;
    font-weight: 700;
    margin: 0 0 10px;
    color: var(--afl-primary);
    letter-spacing: -0.01em;
    line-height: 1.15;
}
.afl-card-name:last-child { margin-bottom: 0; } /* veicolo senza allestimento */
.afl-card-trim {
    font-size: 12px;
    color: var(--afl-mute);
    margin: 0;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    line-height: 1.5;
    /* Max 2 righe con puntini: testo tecnico ordinato e altezza card uniforme */
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    min-height: 3em;
}

/* Prezzo grande in evidenza */
.afl-card-price {
    display: flex;
    align-items: baseline;
    gap: 6px;
    margin-bottom: 16px;
}
/* "da" davanti al canone: offerta configurabile (a partire da) */
.afl-price-from {
    font-size: 14px;
    font-weight: 600;
    color: var(--afl-mute);
}
.afl-price-value {
    font-size: 30px;
    font-weight: 800;
    color: var(--afl-accent);
    letter-spacing: -0.02em;
    line-height: 1;
}
.afl-price-suffix {
    font-size: 13px;
    color: var(--afl-mute);
    font-weight: 500;
}

/* Striscia caratteristiche — icona + valore, niente etichette (compatta) */
.afl-card-info {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 11px 14px;
    padding: 14px 0 0;
    border-top: 1px solid var(--afl-line);
    margin-bottom: 0;
}
.afl-info-item {
    display: flex;
    align-items: center;
    gap: 8px;
    min-width: 0;
}
.afl-info-ic {
    display: inline-flex;
    flex-shrink: 0;
    color: var(--afl-primary);
}
.afl-info-ic svg { width: 17px; height: 17px; }
.afl-info-value {
    font-size: 13px;
    color: var(--afl-ink);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.afl-empty {
    padding: 60px 20px;
    text-align: center;
    color: var(--afl-mute);
    background: var(--afl-cream);
    border-radius: var(--afl-radius);
    font-size: 14px;
}
.afl-mobile-toggle {
    display: none;
    width: 100%;
    padding: 12px;
    background: var(--afl-primary);
    color: #fff;
    border: 0;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 16px;
    cursor: pointer;
}
.afl-mobile-toggle:hover {
    background: var(--afl-primary-2);
    color: #fff;
    box-shadow: none;
}


/* ============================================================
 * DETTAGLIO — Layout
 * ============================================================ */
.afl-detail {
    max-width: none;
    margin: 30px auto 60px;
    padding: 0;
    color: var(--afl-ink);
}

.afl-breadcrumb {
    font-size: 12px;
    color: var(--afl-mute);
    margin-bottom: 18px;
    text-transform: uppercase;
    letter-spacing: 0.6px;
    font-weight: 600;
}
.afl-breadcrumb a {
    color: var(--afl-mute);
    text-decoration: none;
    transition: color .2s;
}
.afl-breadcrumb a:hover { color: var(--afl-primary); }
.afl-breadcrumb span { margin: 0 8px; opacity: 0.5; }
.afl-breadcrumb .is-current { color: var(--afl-primary); }


.afl-detail-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-end;
    flex-wrap: wrap;
    gap: 12px 24px;
    margin-bottom: 18px;
}
.afl-detail-headmain { min-width: 0; }

.afl-detail-h1 {
    font-size: 40px;
    font-weight: 800;
    color: var(--afl-primary);
    margin: 0;
    letter-spacing: -0.025em;
}
.afl-detail-h1-sub {
    font-size: 16px;
    color: #6c5d72; /* più scuro di --afl-mute per leggibilità sul testo maiuscolo */
    margin: 8px 0 0;
    font-weight: 600;
    letter-spacing: 0.035em;
    line-height: 1.45;
}


.afl-detail-grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 380px;
    gap: 32px;
    align-items: start;
}

.afl-detail-content { min-width: 0; }

/* Riga superiore della colonna sinistra: gallery + caratteristiche affiancate. */
.afl-detail-media {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 210px;
    gap: 18px;
    align-items: stretch;
    margin-bottom: 28px;
}
/* La gallery resta alla sua altezza naturale; le caratteristiche si stirano fino a essa. */
.afl-detail-media .afl-gallery { margin-bottom: 0; align-self: start; }
/* Colonna sinistra (gallery + link multimediali): occupa la prima cella della griglia
   così i link video/360° NON rubano lo slot di "In sintesi". */
.afl-detail-media-main { min-width: 0; align-self: start; }
.afl-detail-media-main .afl-media-row { margin-top: 14px; margin-bottom: 0; }


/* ============================================================
 * GALLERIA — altezza limitata, lightbox, thumbnails scroll oriz
 * ============================================================ */
.afl-gallery {
    background: var(--afl-bg);
    border: 1px solid var(--afl-line);
    border-radius: var(--afl-radius-lg);
    overflow: hidden;
    margin-bottom: 18px;
    box-shadow: var(--afl-shadow-1);
}

.afl-gallery-stage {
    position: relative;
    aspect-ratio: 4 / 3;
    background: linear-gradient(180deg, var(--afl-cream) 0%, #ece8ef 100%);
    overflow: hidden;
}
/* Label "Usato selezionato" in sovrimpressione sull'immagine principale */
.afl-gallery-label {
    position: absolute;
    top: 12px;
    left: 12px;
    z-index: 3;
    padding: 6px 12px;
    border-radius: 999px;
    background: var(--afl-accent-2); /* rosso scuro: contrasto AA col testo bianco */
    color: #fff;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.6px;
}
.afl-gallery-img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    cursor: zoom-in;
}

.afl-gallery-expand {
    position: absolute;
    top: 14px; right: 14px;
    width: 38px; height: 38px;
    background: rgba(255, 255, 255, 0.95);
    color: var(--afl-primary);
    border: 0;
    border-radius: 999px;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background .2s, transform .2s;
    box-shadow: 0 2px 8px rgba(31, 20, 36, 0.15);
    backdrop-filter: blur(6px);
    z-index: 2;
}
.afl-gallery-expand svg { width: 18px; height: 18px; flex-shrink: 0; }
.afl-gallery-expand:hover {
    background: var(--afl-primary);
    color: #fff;
    transform: scale(1.05);
}

.afl-gallery-nav {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    width: 44px; height: 44px;
    background: rgba(255, 255, 255, 0.95);
    color: var(--afl-primary);
    border: 0;
    border-radius: 999px;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background .2s, transform .2s, opacity .2s;
    box-shadow: 0 2px 12px rgba(31, 20, 36, 0.18);
    backdrop-filter: blur(6px);
    opacity: 0;
    z-index: 2;
}
.afl-gallery-nav svg { width: 18px; height: 18px; }
.afl-gallery-stage:hover .afl-gallery-nav { opacity: 1; }
.afl-gallery-nav:hover {
    background: var(--afl-primary);
    color: #fff;
}
.afl-gallery-prev { left: 16px; }
.afl-gallery-next { right: 16px; }

.afl-gallery-counter {
    position: absolute;
    bottom: 16px; left: 16px;
    background: rgba(31, 20, 36, 0.85);
    color: #fff;
    padding: 5px 12px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.5px;
    backdrop-filter: blur(6px);
}

.afl-gallery-strip {
    display: flex;
    gap: 8px;
    padding: 12px;
    overflow-x: auto;
    overflow-y: hidden;
    background: var(--afl-cream);
    border-top: 1px solid var(--afl-line);
    scroll-behavior: smooth;
    /* altezza fissa: 88px contenitore = 64px thumb + 12px padding * 2 */
    height: 88px;
}
.afl-gallery-strip::-webkit-scrollbar { height: 4px; }
.afl-gallery-strip::-webkit-scrollbar-thumb { background: var(--afl-line-2); border-radius: 2px; }
.afl-gallery-thumb {
    flex: 0 0 88px;
    width: 88px;
    height: 64px;
    border: 2px solid transparent;
    border-radius: var(--afl-radius-sm);
    overflow: hidden;
    cursor: pointer;
    padding: 0;
    background: var(--afl-bg);
    transition: border-color .2s, transform .15s;
}
.afl-gallery-thumb img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.afl-gallery-thumb.is-active { border-color: var(--afl-primary); }
.afl-gallery-thumb:hover {
    border-color: var(--afl-accent);
    transform: translateY(-1px);
}

.afl-gallery-empty {
    background: var(--afl-cream);
    border: 1px dashed var(--afl-line-2);
    border-radius: var(--afl-radius-lg);
    padding: 80px 20px;
    text-align: center;
    color: var(--afl-mute);
    margin-bottom: 18px;
    font-size: 14px;
}


/* ============================================================
 * LINK MULTIMEDIALI
 * ============================================================ */
.afl-media-row {
    display: flex;
    gap: 10px;
    margin-bottom: 24px;
    flex-wrap: wrap;
}
.afl-media-link {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: var(--afl-bg);
    border: 1px solid var(--afl-line);
    color: var(--afl-primary);
    text-decoration: none;
    padding: 10px 16px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.6px;
    transition: background .2s, color .2s, border-color .2s;
}
.afl-media-link svg { width: 14px; height: 14px; }
.afl-media-link:hover {
    background: var(--afl-primary);
    color: #fff;
    border-color: var(--afl-primary);
}


/* ============================================================
 * QUICK INFO BAR
 * ============================================================ */
/* Caratteristiche principali: colonna verticale accanto alla gallery.
   Ogni riga: icona a sinistra, valore + etichetta a destra. */
.afl-quickinfo {
    display: flex;
    flex-direction: column;
    background: var(--afl-bg);
    border: 1px solid var(--afl-line);
    border-radius: var(--afl-radius-lg);
    overflow: hidden;
    box-shadow: var(--afl-shadow-1);
}
/* Titolo del blocco caratteristiche */
.afl-qi-head {
    flex: 0 0 auto;
    padding: 11px 14px;
    text-align: center;
    font-size: 10px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 1.2px;
    color: var(--afl-mute);
    background: var(--afl-cream);
    border-bottom: 1px solid var(--afl-line);
}
.afl-qi-item {
    flex: 1; /* riempie in parti uguali l'altezza della gallery */
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 5px;
    padding: 14px 12px;
    text-align: center;
    border-bottom: 1px solid var(--afl-line);
}
.afl-qi-item:last-child { border-bottom: 0; }
.afl-qi-icon {
    order: 0;
    display: inline-flex;
    color: var(--afl-primary); /* colore base */
}
.afl-qi-icon svg { width: 30px; height: 30px; }
.afl-qi-label {
    order: 1;
    font-size: 10px;
    color: var(--afl-mute);
    text-transform: uppercase;
    letter-spacing: 0.8px;
    font-weight: 600;
}
.afl-qi-value {
    order: 2;
    font-size: 16px;
    font-weight: 700;
    color: var(--afl-ink);
    letter-spacing: -0.01em;
    line-height: 1.15;
}
.afl-qi-value small { font-size: 10px; font-weight: 600; color: var(--afl-mute); }

/* ============================================================
 * Intestazione: "usata" + etichetta NLT
 * ============================================================ */
/* Eyebrow dentro l'H1: dicitura piccola sotto il nome del veicolo */
.afl-h1-eyebrow {
    display: block;
    margin-top: 8px;
    font-size: 13px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--afl-accent-2); /* rosso scuro: contrasto AA su bianco */
}

/* ============================================================
 * Blocco descrizione veicolo (testo template)
 * ============================================================ */
/* Intro: titolo + allestimento (sx) + recensioni (dx) */
.afl-detail-intro {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 380px;
    gap: 32px;
    align-items: end;
    margin: 0 0 26px;
}
.afl-detail-intro-main { min-width: 0; }
.afl-detail-intro-main .afl-detail-header { margin-bottom: 14px; }
.afl-detail-reviews {
    min-width: 0;
}
.afl-detail-reviews .ti-widget { width: 100%; }
@media (max-width: 1000px) {
    .afl-detail-intro { grid-template-columns: 1fr; gap: 18px; }
    .afl-detail-reviews {
        margin-top: 18px;
    }
}

/* Descrizione come paragrafo introduttivo sotto al titolo */
.afl-detail-desc {
    margin: 0 0 28px;
    color: #52455a;
    font-size: 15.5px;
    line-height: 1.7;
}
.afl-detail-desc p { margin: 0 0 10px; }
.afl-detail-desc p:last-child { margin: 0; }

/* ============================================================
 * Fascia vantaggi: "Perché scegliere l'usato Rent&Drive"
 * ============================================================ */
.afl-trust {
    position: relative;
    isolation: isolate; /* contesto di impilamento: lo sfondo ::before resta dietro al testo ma sopra il bg pagina */
    margin: 0 0 28px;
    padding: 60px 0;
    color: #fff;
}
/* Sfondo a tutta larghezza (sfonda il container); il contenuto resta allineato.
 * La fascia ora vive nella colonna sinistra (1fr) della griglia 1fr/380px (gap 32px):
 * il suo centro è spostato a sinistra di (380+32)/2 = 206px rispetto al centro viewport,
 * quindi ricentro lo sfondo da 100vw aggiungendo +206px. A <=1000px la griglia è a una
 * sola colonna e l'offset torna a 0. */
.afl-trust::before {
    content: '';
    position: absolute;
    top: 0;
    bottom: 0;
    left: 50%;
    width: 100vw;
    transform: translateX(calc(-50% + 206px));
    background: var(--afl-primary);
    z-index: -1;
}
.afl-trust-title {
    margin: 0 0 32px;
    text-align: left;
    font-size: 30px;
    font-weight: 600;
    color: #fff;
    letter-spacing: -0.01em;
}
.afl-trust-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 24px;
}
.afl-trust-item {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: 12px;
}
.afl-trust-icon { display: inline-flex; color: #fff; }
.afl-trust-icon svg { width: 42px; height: 42px; }
.afl-trust-label {
    font-size: 17px;
    font-weight: 500;
    line-height: 1.35;
    max-width: 180px;
}
@media (max-width: 680px) {
    .afl-trust-grid { grid-template-columns: repeat(2, 1fr); gap: 28px 16px; }
}

/* "Cosa include il canone": 2 colonne ordinate, icona in cerchio + testo */
.afl-includes .afl-trust-grid {
    grid-template-columns: 1fr 1fr;
    gap: 22px 40px;
}
.afl-includes .afl-trust-item {
    flex-direction: row;
    align-items: center;
    text-align: left;
    gap: 14px;
}
.afl-includes .afl-trust-icon {
    flex: none;
    width: 42px;
    height: 42px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.12);
}
.afl-includes .afl-trust-icon svg { width: 22px; height: 22px; }
.afl-includes .afl-trust-label {
    max-width: none;
    font-size: 15px;
    font-weight: 500;
    line-height: 1.4;
}
@media (max-width: 600px) {
    .afl-includes .afl-trust-grid { grid-template-columns: 1fr; gap: 16px; }
}

/* Blocco "Usato certificato, pronto per guidare" (prima del form) */
/* Banda full-bleed (come .afl-trust): sta nella colonna sinistra e lo sfondo
   rosso si estende a tutta larghezza, passando sotto il box prezzo sticky. */
.afl-certified {
    position: relative;
    isolation: isolate;
    display: flex;
    align-items: flex-start;
    gap: 18px;
    margin: 0 0 28px;
    padding: 44px 0;
    color: #fff;
}
.afl-certified::before {
    content: '';
    position: absolute;
    top: 0;
    bottom: 0;
    left: 50%;
    width: 100vw;
    transform: translateX(calc(-50% + 206px));
    background: var(--afl-accent-2);
    z-index: -1;
}
.afl-certified-badge {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 48px;
    height: 48px;
    border-radius: 50%;
    background: #fff;
    color: var(--afl-accent-2);
}
.afl-certified-badge svg { width: 24px; height: 24px; }
.afl-certified-body { min-width: 0; }
.afl-certified-title {
    margin: 0 0 10px;
    font-size: 22px;
    font-weight: 800;
    color: #fff;
    letter-spacing: -0.01em;
}
.afl-certified-text {
    margin: 0;
    font-size: 15px;
    line-height: 1.7;
    color: rgba(255, 255, 255, .92);
}

/* ============================================================
 * Sezione FAQ (in fondo, dopo il form)
 * ============================================================ */
.afl-detail-faq {
    margin: 36px 0 0;
    padding-top: 28px;
    border-top: 1px solid var(--afl-line);
}
.afl-detail-faq-title {
    margin: 0 0 8px;
    font-size: 24px;
    font-weight: 800;
    color: var(--afl-primary);
    letter-spacing: -0.01em;
}
.afl-detail-faq-intro {
    margin: 0 0 22px;
    font-size: 15px;
    line-height: 1.65;
    color: var(--afl-mute);
}
.afl-detail-faq-intro p { margin: 0 0 10px; }
.afl-detail-faq-intro p:last-child { margin: 0; }


/* ============================================================
 * TABS
 * ============================================================ */
.afl-tabs {
    margin: 0 0 28px;
    background: var(--afl-bg);
    border: 1px solid var(--afl-line);
    border-radius: var(--afl-radius-lg);
    overflow: hidden;
    box-shadow: var(--afl-shadow-1);
}
.afl-tabs-nav {
    display: flex;
    border-bottom: 1px solid var(--afl-line);
    background: var(--afl-cream);
    overflow-x: auto;
    overflow-y: hidden; /* evita la scrollbar verticale: con solo overflow-x:auto il browser forza overflow-y:auto e l'1px del border-bottom la innesca */
}
/* Peek + sfumatura: quando ci sono altri tab da scorrere, il bordo si dissolve a
   trasparenza (mask) per far capire che la voce parziale continua. Le classi sono
   gestite dal JS in base alla posizione di scroll; a fine corsa la sfumatura sparisce. */
.afl-tabs-nav.afl-fade-r {
    -webkit-mask-image: linear-gradient(to right, #000 calc(100% - 26px), transparent);
            mask-image: linear-gradient(to right, #000 calc(100% - 26px), transparent);
}
.afl-tabs-nav.afl-fade-l {
    -webkit-mask-image: linear-gradient(to left, #000 calc(100% - 26px), transparent);
            mask-image: linear-gradient(to left, #000 calc(100% - 26px), transparent);
}
.afl-tabs-nav.afl-fade-l.afl-fade-r {
    -webkit-mask-image: linear-gradient(to right, transparent 0, #000 26px, #000 calc(100% - 26px), transparent 100%);
            mask-image: linear-gradient(to right, transparent 0, #000 26px, #000 calc(100% - 26px), transparent 100%);
}
.afl-tab-btn {
    background: none;
    border: 0;
    padding: 16px 22px;
    font-size: 12px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--afl-mute);
    cursor: pointer;
    position: relative;
    transition: color .2s;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    white-space: nowrap;
    font-family: inherit;
}
.afl-tab-btn svg { width: 14px; height: 14px; }
.afl-tab-btn:hover,
.afl-tab-btn:focus,
.afl-tab-btn:active { color: var(--afl-primary); background: none; box-shadow: none; outline: none; }
.afl-tab-btn.is-active { color: var(--afl-primary); }
.afl-tab-btn.is-active::after {
    content: '';
    position: absolute;
    left: 22px; right: 22px;
    bottom: -1px;
    height: 3px;
    background: var(--afl-primary);
    border-radius: 2px 2px 0 0;
}

.afl-tab-panel { display: none; padding: 28px; }
.afl-tab-panel.is-active { display: block; }


/* SPECS GRID */
.afl-spec-cols {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 32px;
}
.afl-spec-title {
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 1.2px;
    color: var(--afl-primary);
    margin: 0 0 14px;
    padding-bottom: 10px;
    border-bottom: 1px solid var(--afl-line);
}
.afl-spec-dl {
    margin: 0;
    display: flex;
    flex-direction: column;
}
.afl-spec-dl > div {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    padding: 9px 0;
    border-bottom: 1px dashed var(--afl-line);
    gap: 12px;
}
.afl-spec-dl > div:last-child { border: 0; }
.afl-spec-dl dt {
    font-size: 12px;
    color: var(--afl-mute);
    font-weight: 500;
}
/* Tipografia condivisa dei "valori" (dati/numeri): card listing + scheda tecnica */
.afl-info-value,
.afl-spec-dl dd {
    font-weight: 600;
    letter-spacing: 0.02em;
    font-variant-numeric: tabular-nums;
}
.afl-spec-dl dd {
    margin: 0;
    font-size: 13px;
    color: var(--afl-ink);
    text-align: right;
}
.afl-spec-dl dd.is-mono {
    font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
    font-size: 11px;
    font-weight: 600;
}

/* Tab Identità veicolo: blocco unico a piena larghezza, lista su due colonne */
.afl-identity .afl-spec-dl {
    display: grid;
    grid-template-columns: 1fr 1fr;
    column-gap: 32px;
}


/* EQUIPMENTS */
.afl-equip-group { margin-bottom: 28px; }
.afl-equip-group:last-child { margin-bottom: 0; }
.afl-equip-cat-title {
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 1.2px;
    color: var(--afl-primary);
    margin: 0 0 14px;
    padding-bottom: 10px;
    border-bottom: 1px solid var(--afl-line);
}
.afl-equip-list {
    list-style: none;
    padding: 0;
    margin: 0;
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 6px 24px;
}
.afl-equip-list li {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px 0;
    border-bottom: 1px dashed var(--afl-line);
    font-size: 13px;
}
.afl-equip-check {
    flex: 0 0 18px;
    width: 18px; height: 18px;
    color: var(--afl-success);
    display: inline-flex;
    align-items: center;
    justify-content: center;
}
.afl-equip-check svg { width: 16px; height: 16px; }
.afl-equip-name { flex: 1; color: var(--afl-ink); }
.afl-equip-tag {
    font-size: 9px;
    font-weight: 700;
    background: var(--afl-cream);
    color: var(--afl-mute);
    padding: 3px 8px;
    border-radius: 999px;
    text-transform: uppercase;
    letter-spacing: 0.8px;
}
.afl-equip-tag.is-opt {
    background: rgba(238, 31, 56, 0.08);
    color: var(--afl-accent);
}


/* TABLE */
.afl-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
}
.afl-table th {
    text-align: left;
    padding: 10px 8px;
    border-bottom: 1px solid var(--afl-primary);
    color: var(--afl-primary);
    font-weight: 700;
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 1.2px;
}
.afl-table td {
    padding: 12px 8px;
    border-bottom: 1px dashed var(--afl-line);
    font-variant-numeric: tabular-nums;
}
.afl-table tr:last-child td { border: 0; }
.afl-table .afl-num { text-align: right; font-weight: 700; }


/* ============================================================
 * SIDEBAR PREZZO (sticky)
 * ============================================================ */
.afl-detail-aside {
    position: sticky;
    top: var(--afl-sticky-top);
    display: flex;
    flex-direction: column;
    gap: 18px;
}

.afl-price-card {
    background: var(--afl-bg);
    border: 1px solid var(--afl-line);
    border-radius: var(--afl-radius-lg);
    padding: 28px 26px;
    box-shadow: var(--afl-shadow-2);
}

/* "Scegli la tua soluzione" sopra il toggle */
.afl-price-choose {
    display: block;
    font-size: 12px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.6px;
    color: var(--afl-mute);
    margin-bottom: 10px;
}
/* Doppio canone: entrambi visibili, quello attivo in evidenza, l'altro opacizzato */
.afl-price-duo {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
    margin: 14px 0 20px;
}
.afl-price-opt {
    position: relative;
    isolation: isolate;
    display: block;
    width: 100%;
    border: 1px solid var(--afl-line);
    border-radius: var(--afl-radius);
    padding: 12px 10px 11px;
    background: transparent;
    color: inherit;
    font: inherit;
    text-align: center;
    opacity: 0.45;
    cursor: pointer;
    appearance: none;
    transition: opacity .2s, border-color .2s, box-shadow .2s, background .2s;
}
.afl-detail button.afl-price-opt:hover,
.afl-detail button.afl-price-opt:focus,
.afl-detail button.afl-price-opt:active {
    opacity: .75;
    border-color: var(--afl-primary);
    background: var(--afl-bg);
    color: var(--afl-ink);
    box-shadow: none;
    transform: none;
}
/* Il tema aggiunge un overlay ai button in hover: sui prezzi coprirebbe i testi. */
.afl-detail button.afl-price-opt::before,
.afl-detail button.afl-price-opt::after {
    content: none !important;
    display: none !important;
}
.afl-price-opt:focus-visible {
    outline: 3px solid color-mix(in srgb, var(--afl-accent) 35%, transparent);
    outline-offset: 2px;
}
.afl-price-opt.is-active {
    opacity: 1;
    border-color: var(--afl-primary);
    background: var(--afl-cream);
    box-shadow: var(--afl-shadow-1);
}
.afl-detail button.afl-price-opt.is-active:hover,
.afl-detail button.afl-price-opt.is-active:focus,
.afl-detail button.afl-price-opt.is-active:active {
    opacity: 1;
    background: var(--afl-cream);
    box-shadow: var(--afl-shadow-1);
}
.afl-price-opt-lbl {
    display: block;
    margin-bottom: 4px;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.6px;
    color: var(--afl-mute);
}
.afl-price-opt-fig {
    display: block;
    font-size: 30px;
    font-weight: 800;
    letter-spacing: -0.02em;
    line-height: 1.05;
    color: var(--afl-primary);
    font-variant-numeric: tabular-nums;
}
.afl-price-opt-cur {
    font-size: 16px;
    font-weight: 600;
    color: var(--afl-mute);
    margin-right: 2px;
}
.afl-price-opt-tax {
    display: block;
    margin-top: 5px;
    font-size: 10.5px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.4px;
    color: var(--afl-mute);
}

/* Configuratore "Configura la tua offerta" — in fondo alla colonna sinistra (solo lab) */
.afl-config {
    position: relative;
    overflow: hidden; /* la barra accento ::before rispetta gli angoli arrotondati */
    margin: 0 0 28px;
    padding: 30px 30px 28px;
    background: linear-gradient(180deg, #f5eff7 0%, var(--afl-bg) 62%);
    border: 1px solid var(--afl-line-2);
    border-radius: var(--afl-radius-lg);
    box-shadow: var(--afl-shadow-2);
}
/* Barra accento in alto: richiama il rosso del CTA "Richiedi informazioni" */
.afl-config::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 4px;
    background: var(--afl-accent);
}
.afl-config-title {
    display: flex;
    align-items: center;
    gap: 13px;
    margin: 0 0 6px;
    font-size: 24px;
    font-weight: 800;
    color: var(--afl-primary);
    letter-spacing: -0.01em;
}
/* Badge icona del titolo */
.afl-config-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: none;
    width: 42px;
    height: 42px;
    border-radius: 12px;
    background: var(--afl-accent);
    color: #fff;
    box-shadow: 0 4px 12px rgba(238, 31, 56, 0.28);
}
.afl-config-icon svg { width: 23px; height: 23px; }
.afl-config-intro {
    margin: 0 0 24px;
    max-width: 640px;
    font-size: 14px;
    line-height: 1.6;
    color: var(--afl-mute);
}
.afl-config-selects { display: none; }
.afl-config-select-field span {
    display: block;
}
.afl-config-row {
    display: grid;
    grid-template-columns: 200px 1fr;
    align-items: center;
    gap: 10px 24px;
    padding: 22px 0;
    border-top: 1px solid var(--afl-line);
}
.afl-config-lbl {
    font-size: 14px;
    font-weight: 700;
    color: var(--afl-ink);
}
.afl-config-opts { display: flex; flex-wrap: wrap; gap: 8px; }
.afl-config-opt {
    border: 1px solid var(--afl-line);
    background: var(--afl-bg);
    color: var(--afl-ink);
    font-family: inherit;
    font-size: 12px;
    font-weight: 600;
    padding: 6px 12px;
    border-radius: 999px;
    cursor: pointer;
    transition: background .15s, color .15s, border-color .15s;
}
.afl-config-opt:hover { border-color: var(--afl-primary); }
.afl-config-opt.is-active {
    background: var(--afl-primary);
    border-color: var(--afl-primary);
    color: #fff;
}
.afl-config-opt.is-disabled,
.afl-config-opt:disabled {
    opacity: .35;
    cursor: not-allowed;
}
.afl-config-opt.is-disabled:hover,
.afl-config-opt:disabled:hover { border-color: var(--afl-line); }
.afl-config-canone {
    display: flex;
    align-items: baseline;
    flex-wrap: wrap;
    gap: 6px 14px;
    margin-top: 18px;
    padding-top: 18px;
    border-top: 1px solid var(--afl-line);
}
.afl-config-canone-lbl {
    font-size: 12px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.6px;
    color: var(--afl-mute);
}
.afl-config-canone-val {
    font-size: 28px;
    font-weight: 800;
    color: var(--afl-primary);
    letter-spacing: -0.01em;
}
.afl-config-canone-val small {
    font-size: 12px;
    font-weight: 600;
    color: var(--afl-mute);
    letter-spacing: 0;
}
@media (max-width: 600px) {
    .afl-config-row { grid-template-columns: 1fr; }
}

.afl-price-terms {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 0;
    padding: 16px 0;
    border-top: 1px solid var(--afl-line);
    border-bottom: 1px solid var(--afl-line);
    margin-bottom: 22px;
}
.afl-price-terms > div {
    text-align: center;
    padding: 0 6px;
    border-right: 1px solid var(--afl-line);
}
.afl-price-terms > div:last-child { border-right: 0; }
.afl-price-terms span {
    display: block;
    font-size: 9px;
    color: var(--afl-mute);
    text-transform: uppercase;
    letter-spacing: 1px;
    font-weight: 600;
    margin-bottom: 4px;
}
.afl-price-terms strong {
    display: block;
    font-size: 13px;
    font-weight: 700;
    color: var(--afl-ink);
    font-variant-numeric: tabular-nums;
}

.afl-cta-big {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    background: var(--afl-accent-2); /* rosso scuro: contrasto AA col testo bianco */
    color: #fff;
    text-decoration: none;
    padding: 16px 24px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    transition: background .25s, transform .15s, box-shadow .25s;
    box-shadow: 0 4px 12px rgba(238, 31, 56, 0.28);
    width: 100%;
    box-sizing: border-box;
}
.afl-cta-big svg {
    width: 14px; height: 14px;
    transition: transform .2s;
}
/* Testo sempre bianco in ogni stato: evita che il tema (Kadence) colori di rosso il testo
   su :active/:focus/:visited, rendendolo invisibile sullo sfondo rosso. */
.afl-cta-big,
.afl-cta-big:hover,
.afl-cta-big:focus,
.afl-cta-big:active,
.afl-cta-big:visited { color: #fff; }
.afl-cta-big:hover,
.afl-cta-big:focus-visible {
    background: #a01223;
    transform: translateY(-1px);
    box-shadow: 0 6px 18px rgba(238, 31, 56, 0.4);
}
.afl-cta-big:hover svg { transform: translateX(3px); }

.afl-cta-disabled {
    text-align: center;
    background: var(--afl-cream);
    color: var(--afl-mute);
    padding: 16px 24px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 1.5px;
}

.afl-price-perks {
    list-style: none;
    padding: 18px 0 0;
    margin: 0;
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}
.afl-price-perks li {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 12px;
    font-weight: 600;
    color: var(--afl-ink);
    background: var(--afl-cream);
    border: 1px solid var(--afl-line);
    border-radius: 999px;
    padding: 6px 12px;
    line-height: 1.2;
}
.afl-price-perks svg {
    width: 15px; height: 15px;
    color: var(--afl-primary);
    flex: 0 0 15px;
}

.afl-location {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-top: 20px;
    padding-top: 18px;
    border-top: 1px solid var(--afl-line);
}
.afl-location-icon {
    color: var(--afl-primary);
    flex: 0 0 18px;
}
.afl-location-icon svg { width: 18px; height: 18px; }
.afl-location-label {
    display: block;
    font-size: 10px;
    color: var(--afl-mute);
    text-transform: uppercase;
    letter-spacing: 1px;
    font-weight: 600;
}
.afl-location strong {
    font-size: 13px;
    color: var(--afl-ink);
    font-weight: 700;
}



/* ============================================================
 * SEZIONE FORM CONTATTI (in fondo alla pagina dettaglio)
 * ============================================================ */
.afl-contact {
    margin-top: 32px;
    /* Fondino chiaro: la sezione diventa una fascia, il form una card bianca centrata */
    background: var(--afl-cream);
    border-radius: var(--afl-radius-lg);
    padding: 44px 24px;
    scroll-margin-top: var(--afl-sticky-top); /* evita che l'header sticky copra l'ancora */
}
.afl-contact-inner {
    max-width: 900px;
    margin: 0 auto;
    background: var(--afl-bg);
    border: 1px solid var(--afl-line);
    border-radius: var(--afl-radius-lg);
    box-shadow: var(--afl-shadow-1);
    padding: 36px 40px 40px;
}
.afl-contact-head {
    margin-bottom: 18px;
}
.afl-contact-title {
    font-size: 26px;
    font-weight: 800;
    color: var(--afl-primary);
    margin: 0 0 6px;
    letter-spacing: -0.02em;
}
.afl-contact-sub {
    font-size: 15px;
    color: var(--afl-mute);
    margin: 0;
    font-weight: 500;
}
.afl-contact-sub strong { color: var(--afl-ink); }

/* Recap offerta selezionata: tra il testo e i campi del form */
.afl-recap {
    margin: 0 0 24px;
    padding: 16px 18px;
    background: var(--afl-cream);
    border: 1px solid var(--afl-line);
    border-radius: var(--afl-radius);
    display: grid;
    gap: 5px;
}
.afl-recap-title {
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--afl-mute);
}
.afl-recap-veh {
    font-size: 16px;
    font-weight: 700;
    color: var(--afl-ink);
}
.afl-recap-price {
    display: flex;
    align-items: baseline;
    gap: 4px;
    flex-wrap: wrap;
    margin-top: 2px;
}
.afl-recap-cur {
    font-size: 16px;
    font-weight: 700;
    color: var(--afl-primary);
}
.afl-recap-price [data-recap-price] {
    font-size: 28px;
    font-weight: 800;
    color: var(--afl-primary);
    line-height: 1;
    letter-spacing: -0.02em;
}
.afl-recap-suffix {
    font-size: 12px;
    color: var(--afl-mute);
    font-weight: 500;
}
.afl-recap-terms {
    list-style: none;
    margin: 9px 0 0;
    padding: 11px 0 0;
    border-top: 1px solid var(--afl-line);
    display: flex;
    flex-wrap: wrap;
    gap: 8px 24px;
}
.afl-recap-terms li {
    display: flex;
    flex-direction: column;
    gap: 2px;
}
.afl-recap-terms li span {
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 0.6px;
    color: var(--afl-mute);
    font-weight: 600;
}
.afl-recap-terms li strong {
    font-size: 14px;
    color: var(--afl-ink);
    font-weight: 700;
}

/* Diamo respiro ai campi del form qualunque plugin sia.
   Regole "morbide": non forziamo, miglioriamo soltanto. */
.afl-contact-form input[type="text"],
.afl-contact-form input[type="email"],
.afl-contact-form input[type="tel"],
.afl-contact-form input[type="url"],
.afl-contact-form input[type="number"],
.afl-contact-form textarea,
.afl-contact-form select {
    font-family: inherit;
    font-size: 15px;
}
.afl-contact-form textarea { min-height: 120px; }

/* Box risposta CF7: nascondilo finché è vuoto. Senza questa regola, quando
   precompiliamo i campi nascosti (clic su "Richiedi informazioni") CF7 toglie la
   classe "init" al form e il riquadro di risposta, pur vuoto, mostra il bordo. */
.afl-contact .wpcf7-response-output:empty { display: none; }

/* Layout righe del form a qualsiasi profondità: il tema stila solo le .flex-row
   figlie dirette di .flex-form, quindi le righe dentro i gruppi condizionali
   (forma giuridica / P.IVA / Ragione Sociale) restavano disallineate. */
.afl-contact-form .flex-row {
    display: flex;
    gap: 16px;
    align-items: flex-start;
    margin: 0;
}
.afl-contact-form .flex-row > div {
    flex: 1 1 0;
    min-width: 0;
}
/* I wrapper dei gruppi condizionali impilano il contenuto in colonna a piena larghezza
   (di default ereditano align-items:center che restringe e centra i campi). */
.afl-contact-form [data-id] {
    flex-direction: column;
    align-items: stretch;
}
.afl-contact-form [data-id] > * + * {
    margin-top: 16px;
}

/* Pulsante invio uguale al CTA rosso dello sticky (.afl-cta-big) */
.afl-contact-form input[type="submit"].wpcf7-submit,
.afl-contact-form button[type="submit"],
.afl-contact-form .wpcf7-submit {
    display: block;
    width: 100%;
    max-width: none;
    background: var(--afl-accent);
    color: #fff;
    border: 0;
    cursor: pointer;
    opacity: 1 !important; /* il tema sbiadisce i submit a 0.5 */
    padding: 16px 24px;
    border-radius: 999px !important; /* il tema forza radius 0 sui submit */
    font-family: inherit;
    font-size: 12px;
    font-weight: 700;
    line-height: 1.2;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    box-shadow: 0 4px 12px rgba(238, 31, 56, 0.28);
    transition: background .25s, transform .15s, box-shadow .25s;
    -webkit-appearance: none;
    appearance: none;
}
.afl-contact-form input[type="submit"].wpcf7-submit:hover,
.afl-contact-form input[type="submit"].wpcf7-submit:focus,
.afl-contact-form button[type="submit"]:hover,
.afl-contact-form button[type="submit"]:focus,
.afl-contact-form .wpcf7-submit:hover,
.afl-contact-form .wpcf7-submit:focus {
    background: var(--afl-accent-2);
    color: #fff;
    transform: translateY(-1px);
    box-shadow: 0 6px 18px rgba(238, 31, 56, 0.4);
    outline: none;
}


/* ============================================================
 * TOGGLE PREZZO Privati / Partita IVA
 * ============================================================ */
.afl-pricetoggle {
    display: flex;
    gap: 0;
    background: var(--afl-cream);
    border: 1px solid var(--afl-line);
    border-radius: 999px;
    padding: 3px;
    width: 100%;
}
.afl-pricetoggle-btn {
    flex: 1;
    border: 0;
    background: transparent;
    color: var(--afl-mute);
    font-family: inherit;
    font-size: 12px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    padding: 9px 12px;
    border-radius: 999px;
    cursor: pointer;
    transition: background .2s, color .2s, box-shadow .2s;
    white-space: nowrap;
}
.afl-pricetoggle-btn:not(.is-active):hover {
    color: var(--afl-ink);
    background: transparent;
    box-shadow: none;
}
/* Colori brand del sito principale: Privati = --privati (oro), Business = --business (blu).
   Testo adattato per leggibilita': scuro su oro, bianco su blu. */
.afl-pricetoggle-btn.is-active,
.afl-pricetoggle-btn.is-active:hover {
    background: var(--afl-privati);
    color: var(--afl-ink);
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.18);
}
.afl-pricetoggle-btn[data-price-mode="net"].is-active,
.afl-pricetoggle-btn[data-price-mode="net"].is-active:hover {
    background: var(--afl-business);
    color: #fff;
}
/* Variante nel box prezzo del dettaglio: un po' più di respiro sotto */
.afl-pricetoggle-detail {
    margin-bottom: 18px;
}


/* ============================================================
 * LIGHTBOX
 * ============================================================ */
.afl-lightbox {
    position: fixed;
    inset: 0;
    background: rgba(57, 39, 61, 0.97);
    z-index: 99999;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 40px;
    opacity: 0;
    transition: opacity .25s;
}
.afl-lightbox.is-open {
    opacity: 1;
}
.afl-lightbox[hidden] { display: none; }

.afl-lb-close {
    position: absolute;
    top: 20px; right: 20px;
    width: 48px; height: 48px;
    background: rgba(255, 255, 255, 0.1);
    color: #fff;
    border: 0;
    border-radius: 999px;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background .2s, transform .2s;
}
.afl-lb-close svg { width: 22px; height: 22px; }
.afl-lb-close:hover {
    background: rgba(255, 255, 255, 0.2);
    transform: scale(1.05);
}

.afl-lb-nav {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    width: 56px; height: 56px;
    background: rgba(255, 255, 255, 0.1);
    color: #fff;
    border: 0;
    border-radius: 999px;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background .2s;
}
.afl-lb-nav svg { width: 24px; height: 24px; }
.afl-lb-nav:hover { background: rgba(255, 255, 255, 0.2); }
.afl-lb-prev { left: 30px; }
.afl-lb-next { right: 30px; }

.afl-lb-figure {
    margin: 0;
    max-width: 90vw;
    max-height: 90vh;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 16px;
}
.afl-lb-figure img {
    max-width: 100%;
    max-height: calc(90vh - 60px);
    object-fit: contain;
    display: block;
    border-radius: var(--afl-radius);
}
.afl-lb-figure figcaption {
    color: rgba(255, 255, 255, 0.7);
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    font-weight: 700;
}


/* ============================================================
 * RESPONSIVE
 * ============================================================ */
@media (max-width: 1000px) {
    .afl-detail-grid {
        grid-template-columns: 1fr;
    }

    /* Meno spazio bianco in cima alla scheda su mobile (era 30px) */
    .afl-detail { margin-top: 14px; }

    /* Spazio titolo → gallery più compatto: lo slot recensioni desktop è vuoto
       su mobile (widget spostato nella card prezzo), quindi non deve occupare
       una riga né lasciare gap. */
    .afl-detail-intro {
        row-gap: 0;
        margin-bottom: 14px;
    }
    .afl-detail-intro [data-reviews-desktop] {
        display: none;
    }
    /* Spazio descrizione → tab allineato agli altri stacchi (solo il gap della
       griglia), togliendo il margine extra sotto la descrizione su mobile. */
    .afl-detail-desc {
        margin-bottom: 0;
    }

    /*
     * Su tablet/mobile i contenitori della colonna principale diventano
     * trasparenti al layout, così gallery e "In sintesi" possono essere
     * ordinate separatamente. Il configuratore, quando presente, resta
     * accanto al box prezzi come sua naturale estensione.
     *
     * Ordine:
     * gallery → prezzo/configuratore → sintesi → descrizione → tab →
     * servizi inclusi → usato certificato → form.
     */
    .afl-detail-content { display: contents; }
    .afl-detail-media   { display: contents; }

    .afl-detail-media-main { order: 1; }
    .afl-detail-aside      { position: static; order: 2; }
    .afl-quickinfo         { order: 3; }
    .afl-detail-desc       { order: 4; }
    .afl-tabs              { order: 5; }
    .afl-includes          { order: 6; }
    .afl-certified         { order: 7; }

    /* Card mobile unica: toggle, canone, configuratore compatto e CTA. */
    .afl-price-card.has-mobile-config .afl-price-terms {
        display: none;
    }
    .afl-config-mobile-slot:not(:empty) {
        margin: 14px 0 18px;
    }
    .afl-config-mobile-slot .afl-config {
        display: flex;
        flex-direction: column;
        gap: 0;
        margin: 0;
        padding: 18px 0 0;
        overflow: visible;
        background: transparent;
        border: 0;
        border-top: 1px solid var(--afl-line);
        border-radius: 0;
        box-shadow: none;
    }
    .afl-config-mobile-slot .afl-config::before,
    .afl-config-mobile-slot .afl-config-icon,
    .afl-config-mobile-slot .afl-config-intro,
    .afl-config-mobile-slot .afl-config-row {
        display: none;
    }
    .afl-config-mobile-slot .afl-config-title {
        order: 1;
        margin: 0 0 10px;
        font-size: 16px;
        line-height: 1.3;
    }
    /* Canone del configuratore nascosto su mobile: i due prezzi (privati /
       business) sono già mostrati sopra nella stessa card, sarebbe ridondante. */
    .afl-config-mobile-slot .afl-config-canone {
        display: none;
    }
    .afl-config-mobile-slot .afl-config-selects {
        order: 3;
        display: grid;
        grid-template-columns: 1fr;
        gap: 10px;
    }
    .afl-config-mobile-slot .afl-config-select-field {
        display: grid;
        grid-template-columns: minmax(92px, .8fr) minmax(0, 1.2fr);
        align-items: center;
        gap: 10px;
        margin: 0;
    }
    .afl-config-mobile-slot .afl-config-select-field > span {
        font-size: 12px;
        font-weight: 700;
        line-height: 1.25;
        color: var(--afl-ink);
    }
    .afl-config-mobile-slot .afl-config-select-field select {
        width: 100%;
        min-height: 46px;
        margin: 0;
        padding: 8px 34px 8px 12px;
        border: 1px solid var(--afl-line);
        border-radius: 10px;
        background-color: var(--afl-bg);
        color: var(--afl-ink);
        font: inherit;
        font-size: 13px;
        font-weight: 700;
        touch-action: manipulation;
    }
    .afl-config-mobile-slot .afl-config-select-field select:focus-visible {
        outline: 3px solid color-mix(in srgb, var(--afl-accent) 35%, transparent);
        outline-offset: 2px;
        border-color: var(--afl-accent);
    }
    .afl-price-card .afl-cta-big {
        min-height: 54px;
        font-size: 13px;
        letter-spacing: .8px;
    }

    /* Griglia a una colonna: la fascia garanzie torna centrata nel viewport. */
    .afl-trust::before,
    .afl-certified::before { transform: translateX(-50%); }
    .afl-detail-h1 { font-size: 32px; }
    .afl-price-number { font-size: 48px; }
}

/* Componenti mobile del listing (toolbar sticky + drawer filtri): nascosti su desktop */
.afl-toolbar,
.afl-drawer-close,
.afl-drawer-footer,
.afl-drawer-backdrop { display: none; }

@media (max-width: 900px) {
    .afl-wrapper {
        grid-template-columns: 1fr;
        gap: 0;
        /* Meno spazio bianco in cima su mobile (era 40px) */
        margin-top: 14px;
        margin-bottom: 28px;
    }
    /* Il vecchio pulsante "Mostra filtri" è sostituito dalla toolbar sticky */
    .afl-mobile-toggle { display: none; }

    /* --- Toolbar sticky: Filtri + Ordina --- */
    .afl-toolbar {
        display: flex;
        align-items: center;
        gap: 10px;
        position: sticky;
        top: var(--afl-header-h, 50px);
        z-index: 900;
        margin: 0 0 12px;
        padding: 8px 0;
        background: var(--afl-bg);
    }
    .afl-toolbar-filters {
        display: inline-flex;
        align-items: center;
        gap: 7px;
        flex: 0 0 auto;
        padding: 8px 14px;
        border: 1px solid var(--afl-line);
        border-radius: 999px;
        background: transparent;
        color: var(--afl-ink);
        font: inherit;
        font-size: 13px;
        font-weight: 700;
        letter-spacing: .2px;
        cursor: pointer;
        touch-action: manipulation;
    }
    .afl-toolbar-filters svg { width: 16px; height: 16px; color: var(--afl-mute); }
    /* League Spartan: il glifo sta alto nel line box; sposto il testo di ~1px
       per centrarlo otticamente con l'icona (già centrata nel pill). */
    .afl-toolbar-lbl { display: inline-block; transform: translateY(1px); }
    .afl-toolbar-badge {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        min-width: 18px;
        height: 18px;
        padding: 0 5px;
        border-radius: 999px;
        background: var(--afl-accent-2);
        color: #fff;
        font-size: 11px;
        font-weight: 800;
    }
    .afl-toolbar-badge[hidden] { display: none; }
    .afl-toolbar-sortslot {
        flex: 1 1 auto;
        display: flex;
        justify-content: flex-end;
        min-width: 0;
    }
    .afl-toolbar .afl-sort {
        display: flex;
        align-items: center;
        gap: 8px;
        min-width: 0;
        margin: 0;
    }
    .afl-toolbar .afl-sort label {
        position: absolute;
        width: 1px; height: 1px;
        margin: -1px; padding: 0; border: 0;
        clip: rect(0 0 0 0); clip-path: inset(50%);
        overflow: hidden; white-space: nowrap;
    }
    .afl-toolbar .afl-sort select {
        max-width: 100%;
        /* padding-top maggiore: centra otticamente il testo del select
           (League Spartan tende a stare alto). */
        padding: 10px 28px 7px 12px;
        border: 1px solid var(--afl-line);
        border-radius: 999px;
        background-color: transparent;
        font: inherit;
        font-size: 13px;
        font-weight: 700;
        line-height: 1;
        color: var(--afl-ink);
        touch-action: manipulation;
    }

    /* Conteggio risultati: riga snella sopra la griglia (non sticky) */
    .afl-meta {
        display: block;
        margin: 0 0 14px;
        padding: 0 4px;
        background: transparent;
        border: 0;
        text-align: center;
    }

    .afl-grid { grid-template-columns: repeat(2, 1fr); }

    /* --- Drawer filtri (bottom sheet a comparsa dal basso) --- */
    .afl-sidebar {
        position: fixed;
        left: 0;
        right: 0;
        bottom: 0;
        top: auto;
        z-index: 1300;
        display: flex;
        flex-direction: column;
        width: auto;
        max-height: 92dvh;
        margin: 0;
        padding: 0;
        border: 0;
        border-radius: 18px 18px 0 0;
        background: var(--afl-bg);
        box-shadow: 0 -10px 40px rgba(20, 8, 24, .28);
        overflow-y: auto;
        overscroll-behavior: contain;
        transform: translateY(100%);
        visibility: hidden;
        transition: transform .28s ease, visibility .28s;
    }
    .afl-sidebar.is-open {
        transform: translateY(0);
        visibility: visible;
    }
    .afl-sidebar-header {
        position: sticky;
        top: 0;
        z-index: 2;
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 12px;
        margin: 0;
        padding: 9px 16px;
        background: var(--afl-bg);
        border-bottom: 1px solid var(--afl-line);
    }
    /* Selettori scoped (.afl-sidebar ...): servono a battere gli stili
       <button> e svg del tema, che altrimenti deformano l'icona di chiusura. */
    .afl-sidebar .afl-drawer-close {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        flex: 0 0 auto;
        width: 32px;
        height: 32px;
        padding: 0;
        border: 1px solid var(--afl-line);
        border-radius: 50%;
        background: var(--afl-bg);
        color: var(--afl-ink);
        cursor: pointer;
        touch-action: manipulation;
    }
    .afl-sidebar .afl-drawer-close:hover { background: var(--afl-cream); color: var(--afl-ink); }
    .afl-sidebar .afl-drawer-close:focus-visible {
        outline: 3px solid color-mix(in srgb, var(--afl-accent) 35%, transparent);
        outline-offset: 2px;
    }
    .afl-sidebar .afl-drawer-close svg {
        flex: 0 0 auto;
        width: 16px;
        height: 16px;
    }

    /* Compattazione interna del drawer */
    .afl-sidebar .afl-filter-group {
        margin-bottom: 11px;
        padding-bottom: 11px;
    }
    .afl-sidebar .afl-filter-pricetype { margin-top: 12px; margin-bottom: 12px; padding-bottom: 14px; }

    /* Margini laterali agli elementi dentro il drawer */
    .afl-sidebar > .afl-filter-group,
    .afl-sidebar > .afl-active-filters,
    .afl-sidebar > .afl-faq-cta {
        margin-left: 16px;
        margin-right: 16px;
    }

    /* Footer sticky con conteggio live */
    .afl-drawer-footer {
        display: block;
        position: sticky;
        bottom: 0;
        z-index: 2;
        padding: 10px 16px calc(10px + env(safe-area-inset-bottom, 0px));
        background: var(--afl-bg);
        border-top: 1px solid var(--afl-line);
    }
    .afl-sidebar .afl-drawer-apply {
        display: block;
        width: 100%;
        padding: 13px;
        border: 0;
        border-radius: 999px;
        background: var(--afl-accent-2);
        color: #fff;
        font: inherit;
        font-size: 14px;
        font-weight: 800;
        letter-spacing: .4px;
        cursor: pointer;
        touch-action: manipulation;
    }
    .afl-sidebar .afl-drawer-apply:disabled { opacity: .55; }

    /* Backdrop scuro dietro il drawer */
    .afl-drawer-backdrop {
        display: block;
        position: fixed;
        inset: 0;
        z-index: 1290;
        background: rgba(20, 8, 24, .5);
        opacity: 0;
        transition: opacity .28s ease;
    }
    .afl-drawer-backdrop.is-open { opacity: 1; }
    /* Senza questa, display:block batte l'attributo hidden e il backdrop a
       opacity:0 resta sopra la pagina intercettando tutti i click. */
    .afl-drawer-backdrop[hidden] { display: none; }
}

@media (prefers-reduced-motion: reduce) {
    .afl-sidebar,
    .afl-drawer-backdrop { transition: none; }
}

@media (max-width: 768px) {
    .afl-spec-cols { grid-template-columns: 1fr; gap: 24px; }
    .afl-identity .afl-spec-dl { grid-template-columns: 1fr; }
    .afl-equip-list { grid-template-columns: 1fr; }

    .afl-tab-btn { padding: 14px 9px; font-size: 11px; letter-spacing: 0.3px; gap: 6px; }

    .afl-gallery-stage { aspect-ratio: 4 / 3; }
    .afl-gallery-strip { height: 76px; }
    .afl-gallery-thumb { flex: 0 0 72px; width: 72px; height: 52px; }
}

/* ============================================================
 * BARRA CTA STICKY (solo mobile)
 * Compare quando la card prezzo esce dalla vista, scivola via quando
 * il form è visibile. Prezzo + dicitura IVA aggiornati dal JS in base
 * al canone attivo (toggle Privati/Business + configuratore).
 * ============================================================ */
.afl-sticky-cta { display: none; }

@media (max-width: 1000px) {
    .afl-sticky-cta {
        display: flex;
        align-items: center;
        gap: 12px;
        position: fixed;
        left: 0;
        right: 0;
        bottom: 0;
        z-index: 950;
        padding: 9px 14px;
        padding-bottom: calc(9px + env(safe-area-inset-bottom, 0px));
        background: #fff;
        border-top: 1px solid var(--afl-line);
        box-shadow: 0 -6px 22px rgba(20, 8, 24, .16);
        transform: translateY(115%);
        transition: transform .28s ease;
    }
    .afl-sticky-cta.is-visible { transform: translateY(0); }
    /* Alza il widget chat (Salesforce) sopra la barra CTA sticky: solo mobile e
       solo sulla scheda usato (body.afl-single-vehicle). */
    body.afl-single-vehicle .embeddedMessagingConversationButtonWrapper .embeddedMessagingConversationButton {
        bottom: 70px !important;
    }
    .afl-sticky-cta-info {
        display: flex;
        flex-direction: column;
        justify-content: center;
        min-width: 0;
        flex: 1 1 auto;
        line-height: 1.2;
    }
    .afl-sticky-cta-name {
        font-size: 11px;
        color: var(--afl-mute);
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
    }
    .afl-sticky-cta-price {
        font-size: 18px;
        font-weight: 800;
        color: var(--afl-ink);
        white-space: nowrap;
    }
    .afl-sticky-cta-price .afl-price-opt-cur {
        font-size: .7em;
        font-weight: 700;
        margin-right: 1px;
    }
    .afl-sticky-cta-price small {
        font-size: 10px;
        font-weight: 600;
        color: var(--afl-mute);
        margin-left: 4px;
    }
    .afl-sticky-cta-btn {
        flex: 0 0 auto;
        display: inline-flex;
        align-items: center;
        gap: 6px;
        padding: 13px 18px;
        border-radius: 999px;
        background: var(--afl-accent-2);
        color: #fff;
        font-size: 13px;
        font-weight: 700;
        letter-spacing: .4px;
        text-decoration: none;
        box-shadow: 0 4px 14px color-mix(in srgb, var(--afl-accent-2) 40%, transparent);
    }
    .afl-sticky-cta-btn svg { width: 16px; height: 16px; }
    .afl-sticky-cta-btn:active { color: #fff; }
}

@media (max-width: 600px) {
    .content-area > .content-container.site-container:has(.afl-detail) {
        padding-left: 10px;
        padding-right: 10px;
    }

    .afl-grid { grid-template-columns: 1fr; }
    .afl-info-value { font-size: 12px; }

    .afl-detail-h1 { font-size: 26px; }
    .afl-detail-h1-sub { font-size: 14px; }
    .afl-price-number { font-size: 42px; }
    /* Box della scheda: massimo 10px di padding laterale su mobile. */
    .afl-tab-panel { padding: 20px 10px; }
    .afl-price-card { padding: 22px 10px; }
    .afl-certified { padding: 32px 0; }
    .afl-gallery-empty { padding: 80px 10px; }

    .afl-contact { padding: 24px 10px; }
    .afl-contact-inner { padding: 24px 10px 28px; }
    .afl-contact-title { font-size: 22px; }

    .afl-faqs .ewd-ufaq-faq-title > .ewd-ufaq-post-margin {
        padding-left: 10px;
        padding-right: 38px;
    }
    .afl-faqs .ewd-ufaq-faq-title > .ewd-ufaq-post-margin::after {
        right: 14px;
    }
    .afl-faqs .ewd-ufaq-faq-body {
        padding-left: 10px;
        padding-right: 10px;
    }

    .afl-lb-prev { left: 12px; }
    .afl-lb-next { right: 12px; }
    .afl-lb-nav { width: 44px; height: 44px; }

    /* "In sintesi" a tutta larghezza: griglia a tre colonne, meno aria,
       così il box prezzo risale. I divisori sono i 1px di gap che lasciano
       intravedere lo sfondo del contenitore (niente bordi sui singoli item). */
    .afl-quickinfo {
        display: grid;
        grid-template-columns: repeat(3, 1fr);
        gap: 1px;
        background: var(--afl-line);
    }
    .afl-qi-head {
        grid-column: 1 / -1;
        background: var(--afl-cream);
        padding-left: 10px;
        padding-right: 10px;
    }
    .afl-qi-item {
        background: var(--afl-bg);
        border-bottom: 0;
        padding: 14px 6px;
    }
    .afl-qi-label { letter-spacing: 0.4px; }
}

/* ============================================================
 * PAGINAZIONE
 * ============================================================ */
.afl-pagination {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    margin-top: 24px;
    flex-wrap: wrap;
}
.afl-page-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 36px;
    height: 36px;
    padding: 0 10px;
    border: 1px solid var(--afl-line);
    border-radius: var(--afl-radius-sm);
    background: var(--afl-bg);
    color: var(--afl-ink);
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    transition: background .15s, border-color .15s, color .15s;
}
.afl-page-btn:hover:not(:disabled) {
    border-color: var(--afl-accent);
    color: var(--afl-accent);
    background: var(--afl-bg);
    box-shadow: none;
}
.afl-page-btn.is-active {
    background: var(--afl-primary);
    border-color: var(--afl-primary);
    color: #fff;
}
.afl-page-btn:disabled {
    opacity: .35;
    cursor: default;
}
.afl-page-ellipsis {
    display: inline-flex;
    align-items: center;
    height: 36px;
    color: var(--afl-mute);
    font-size: 14px;
}

/* ============================================================
 * COMPENSAZIONE OTTICA BASELINE FONT (League Spartan)
 * La fontBox del font lascia ~vuoto sotto il glyph: nelle pill il testo
 * appare alto. Spostiamo padding dal basso all'alto per centrarlo.
 * (In fondo al file per vincere sulle definizioni base delle pill.)
 * ============================================================ */
.afl-pricetoggle-btn { padding-top: 11px; padding-bottom: 7px; }
.afl-cta-big         { padding-top: 18px; padding-bottom: 14px; }
.afl-media-link      { padding-top: 12px; padding-bottom: 8px; }
.afl-config-opt      { padding-top: 8px;  padding-bottom: 4px; }
.afl-gallery-label   { padding-top: 8px;  padding-bottom: 4px; }
.afl-badge-cat,
.afl-badge-sold      { padding-top: 7px;  padding-bottom: 3px; }
