/*!
 * Vendee-Vacances - CSS principal du theme
 * Extrait de novamira-sandbox/vv-theme.php le 2026-08-19 (audit technique).
 * Source de verite : ce fichier. La fonction vv_get_inline_css() ne sert plus qu'a la regeneration de secours.
 */

/* ===== VARIABLES & BASE ===== */
:root {
    --vv-red: #D32F2F;
    --vv-red-dark: #B91C1C;
    --vv-blue: #1E3A8A;
    --vv-blue-light: #3B82F6;
    --vv-yellow: #F59E0B;
    --vv-yellow-light: #FCD34D;
    --vv-sand: #FEF3C7;
    --vv-cream: #FFFBEB;
    --vv-text: #1F2937;
    --vv-text-light: #6B7280;
}
@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700;800;900&family=Dancing+Script:wght@500;600;700&display=swap');
body { font-family: 'Poppins', sans-serif; color: var(--vv-text); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }
h1,h2,h3,h4,h5,h6 { font-family: 'Poppins', sans-serif; font-weight: 700; color: var(--vv-blue); }
.vv-script { font-family: 'Dancing Script', cursive; font-weight: 600; }

/* ===== LAYOUT HOME ===== */
.home .site-content { padding-top: 0 !important; }
.home .ast-container,.home .ast-container-fluid,.home #primary,.home #main { padding: 0 !important; margin: 0 !important; max-width: 100% !important; }
.home .entry-content > * { max-width: 1240px; margin-left: auto; margin-right: auto; padding-left: 1rem; padding-right: 1rem; }
.home .entry-content > .vv-hero,.home .entry-content > .vv-section,.home .entry-content > .vv-section-map,.home .entry-content > .vv-section-pdf { max-width: 100% !important; padding-left: 0; padding-right: 0; margin: 0; }
.home .entry-header { display: none !important; }

/* ===== HEADER NORMAL STICKY (toutes pages) ===== */
.site-header, .main-header-bar, .ast-primary-header-bar {
    background: #fff !important;
    box-shadow: 0 2px 8px rgba(0,0,0,0.07) !important;
    position: sticky !important;
    top: 0 !important;
    z-index: 200 !important;
}
.main-header-menu > .menu-item > a,
.ast-builder-menu-1 .menu-item > a {
    color: var(--vv-blue) !important;
    font-weight: 500;
}
.main-header-menu > .menu-item > a:hover { color: var(--vv-red) !important; }

/* ===== LOGO ===== */
/* Desktop */
@media (min-width: 921px) {
    .custom-logo-link img, .site-branding img, .ast-site-identity img {
        max-height: 130px !important;
        width: auto !important;
        height: auto !important;
        transition: max-height 0.3s ease;
        filter: drop-shadow(0 0 16px rgba(0,0,0,0.6));
    }
    .home .ast-site-identity, .home .site-branding,
    .post-type-archive-etablissement .ast-site-identity, .post-type-archive-etablissement .site-branding,
    .tax-type_etablissement .ast-site-identity, .tax-type_etablissement .site-branding {
        background: rgba(0,0,0,0.18);
        backdrop-filter: blur(8px);
        -webkit-backdrop-filter: blur(8px);
        border-radius: 12px;
        padding: 4px 14px;
    }
    body:not(.home):not(.post-type-archive-etablissement):not(.tax-type_etablissement) .custom-logo-link img,
    body:not(.home):not(.post-type-archive-etablissement):not(.tax-type_etablissement) .site-branding img,
    body:not(.home):not(.post-type-archive-etablissement):not(.tax-type_etablissement) .ast-site-identity img {
        max-height: 110px !important;
        filter: none;
    }
    .ast-header-sticky-active .custom-logo-link img, .ast-header-sticky-active .site-branding img {
        max-height: 60px !important;
        filter: none;
    }
    .ast-header-sticky-active .ast-site-identity, .ast-header-sticky-active .site-branding {
        background: transparent;
        backdrop-filter: none;
        padding: 0;
    }
    .main-header-bar .ast-builder-grid-row { min-height: 100px; align-items: center; }
    .ast-header-sticky-active .main-header-bar .ast-builder-grid-row { min-height: 70px; }
}
/* Mobile : logo petit, header compact */
@media (max-width: 920px) {
    .custom-logo-link img, .site-branding img, .ast-site-identity img {
        max-height: 50px !important;
        width: auto !important;
        height: auto !important;
        filter: none !important;
        display: block !important;
        visibility: visible !important;
        opacity: 1 !important;
    }
    .home .ast-site-identity, .home .site-branding,
    .ast-site-identity, .site-branding {
        background: transparent !important;
        backdrop-filter: none !important;
        -webkit-backdrop-filter: none !important;
        padding: 0 !important;
        border-radius: 0 !important;
    }
    .main-header-bar .ast-builder-grid-row { min-height: 60px !important; }
}
@media (max-width: 480px) {
    .custom-logo-link img, .site-branding img, .ast-site-identity img {
        max-height: 40px !important;
    }
    .main-header-bar .ast-builder-grid-row { min-height: 54px !important; }
}
/* ===== MENU COULEURS (desktop) ===== */
/* Mobile */
@media (max-width: 768px) {
    .custom-logo-link img,.site-branding img,.ast-site-identity img { max-height: 95px !important; }
    body:not(.home) .custom-logo-link img,body:not(.home) .site-branding img,body:not(.home) .ast-site-identity img { max-height: 88px !important; }
    .home.ast-header-sticky-active .custom-logo-link img,.home.ast-header-sticky-active .site-branding img,
    .ast-header-sticky-active .custom-logo-link img,.ast-header-sticky-active .site-branding img { max-height: 62px !important; }
    .home .ast-site-identity,.home .site-branding { padding: 4px 12px; border-radius: 12px; }
    .main-header-bar .ast-builder-grid-row { min-height: 100px; }
}
/* Hero — padding pour respecter le header */
@media (max-width: 1024px) { .vv-hero { padding-top: 160px; padding-bottom: 90px; } body:not(.home) .vv-hero { padding-top: 120px; padding-bottom: 60px; } }
@media (max-width: 768px) { .vv-hero { padding-top: 120px; padding-bottom: 70px; } body:not(.home) .vv-hero { padding-top: 100px; padding-bottom: 50px; } .vv-hero-content h1 { font-size: clamp(2rem, 9vw, 2.6rem) !important; } .vv-hero-baseline { font-size: 0.95rem !important; margin: 1rem auto 1.5rem !important; } .vv-hero-eyebrow { margin-bottom: 1rem !important; } }
@media (max-width: 480px) { .vv-hero { padding-top: 120px; padding-bottom: 70px; } }

/* ===== BANNIERE HOME ===== */
.vv-home-banner {
    width: 100%;
    display: block;
    overflow: hidden;
    line-height: 0;
    position: relative;
    z-index: 1;
}
.vv-home-banner img {
    width: 100%;
    height: auto;
    max-height: 520px;
    object-fit: cover;
    object-position: center;
    display: block;
}
@media (max-width: 768px) {
    .vv-home-banner img { max-height: 260px; }
}
@media (max-width: 480px) {
    .vv-home-banner img { max-height: 190px; }
}

/* ===== HERO ===== */
.vv-hero { position: relative; min-height: 100vh; display: flex; align-items: center; justify-content: center; overflow: hidden; background-color: var(--vv-blue); background-size: cover; background-position: center; width: 100%; margin: 0; padding: 220px 1.5rem 130px; box-sizing: border-box; }

/* ===== FIX ARCHIVE PAGES LAYOUT ===== */
/* Empêche le débordement horizontal sur toutes les pages */
html, body { overflow-x: hidden !important; overflow-x: clip !important; }

/* La page archive est hors wrapper Astra : reset complet */
.vv-archive-page {
    width: 100%;
    overflow-x: hidden;
}
.vv-archive-page .vv-archive-hero {
    width: 100%;
    box-sizing: border-box;
}

/* Fix : header Astra sur pages archive = sticky blanc */
body.tax-ville .site-header,
body.tax-type_etablissement .site-header,
body.tax-etoiles .site-header,
body.tax-equipements .site-header,
body.post-type-archive-etablissement .site-header {
    position: sticky !important;
    top: 0 !important;
    background: rgba(255,255,255,0.97) !important;
    backdrop-filter: blur(10px);
    box-shadow: 0 2px 15px rgba(0,0,0,0.08) !important;
    z-index: 999 !important;
}
body.tax-ville .main-header-menu > .menu-item > a,
body.tax-type_etablissement .main-header-menu > .menu-item > a,
body.tax-etoiles .main-header-menu > .menu-item > a {
    color: var(--vv-blue) !important;
    text-shadow: none !important;
}

/* Bloc Jules dans les pages ville */
.vv-jules-bloc {
    max-width: 860px;
    margin: 0 auto;
    background: linear-gradient(135deg, #EFF6FF, #DBEAFE);
    border-radius: 22px;
    padding: 2.5rem;
    display: flex;
    align-items: center;
    gap: 2rem;
    flex-wrap: wrap;
    box-shadow: 0 6px 24px rgba(30,58,138,0.1);
}
.vv-jules-bloc img {
    border-radius: 50%;
    border: 3px solid var(--vv-red);
    flex-shrink: 0;
    object-fit: cover;
    width: 80px;
    height: 80px;
}
.vv-jules-name {
    margin: 0 0 0.3rem;
    font-weight: 700;
    font-size: 1.05rem;
    color: var(--vv-blue);
}
.vv-jules-bio {
    margin: 0 0 0.9rem;
    font-size: 0.93rem;
    color: #374151;
    line-height: 1.65;
}
.vv-jules-link {
    display: inline-block;
    color: var(--vv-red);
    font-weight: 600;
    font-size: 0.9rem;
    text-decoration: underline;
}

/* Bouton ville proche */
.vv-ville-proche-btn {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    background: #fff;
    border-radius: 50px;
    padding: 0.65rem 1.3rem;
    text-decoration: none;
    color: var(--vv-blue);
    font-weight: 600;
    font-size: 0.9rem;
    box-shadow: 0 3px 14px rgba(15,23,42,0.09);
    transition: all 0.2s ease;
    border: 2px solid transparent;
}
.vv-ville-proche-btn:hover {
    border-color: var(--vv-red);
    color: var(--vv-red);
}

/* Fix Astra entry-content sur pages archive */
body.tax-ville #primary,
body.tax-type_etablissement #primary,
body.post-type-archive-etablissement #primary {
    padding: 0 !important;
    max-width: 100% !important;
}
body.tax-ville .entry-content,
body.tax-type_etablissement .entry-content,
body.post-type-archive-etablissement .entry-content {
    padding: 0 !important;
    margin: 0 !important;
    max-width: 100% !important;
}

/* Mobile jules bloc */
@media (max-width: 640px) {
    .vv-jules-bloc { flex-direction: column; text-align: center; align-items: center; padding: 1.8rem 1.2rem; }
    .vv-ville-proche-btn { font-size: 0.82rem; padding: 0.5rem 1rem; }
}
/* Pages internes: header fixe blanc ~110px -> réduire padding-top */
body:not(.home) .vv-hero { min-height: 55vh; padding-top: 140px; padding-bottom: 80px; }
body:not(.home) .vv-archive-hero { min-height: 50vh; padding-top: 130px; padding-bottom: 70px; }
    /* Heros a image pleine (banniere avec texte incruste) : pas de padding ni de min-height,
       sinon l'image est recadree par object-fit:cover. L'aspect-ratio inline pilote la hauteur. */
    body:not(.home) .vv-archive-hero.vv-archive-hero--image { min-height: 0; padding: 0; }
    @media (max-width:768px){ .vv-archive-hero--image { aspect-ratio: auto !important; } .vv-archive-hero--image .vv-archive-hero-img { height: auto !important; } }
.vv-hero-overlay { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(10,20,60,0.5) 0%, rgba(10,20,60,0.2) 45%, rgba(10,20,60,0.65) 100%); z-index: 1; }
.vv-hero-content { position: relative; z-index: 2; text-align: center; color: white; padding: 0; max-width: 980px; display: flex; flex-direction: column; align-items: center; width: 100%; }
.vv-hero-eyebrow { font-family: 'Poppins', sans-serif; font-size: clamp(0.78rem, 1.1vw, 0.95rem); color: var(--vv-yellow-light); font-weight: 600; text-transform: uppercase; letter-spacing: 0.18em; display: inline-block; margin-bottom: 1.6rem; padding: 0.5rem 1.1rem; background: rgba(255,255,255,0.12); border: 1px solid rgba(255,255,255,0.25); border-radius: 30px; backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); text-shadow: none; }
.vv-hero-content h1 { color: #fff; font-size: clamp(2.4rem, 6vw, 4.8rem); font-family: 'Poppins', sans-serif; font-weight: 800; letter-spacing: -0.025em; text-shadow: 0 3px 30px rgba(0,0,0,0.5); margin: 0; line-height: 1.08; max-width: 100%; }
.vv-hero-content h1 em { font-style: italic; font-family: 'Poppins', sans-serif; font-weight: 600; color: var(--vv-yellow-light); font-size: 0.86em; line-height: 1.2; display: block; margin-top: 0.55rem; letter-spacing: -0.015em; }
.vv-hero-baseline { font-family: 'Poppins', sans-serif; font-size: clamp(1rem, 1.6vw, 1.18rem); font-weight: 400; line-height: 1.7; margin: 1.8rem auto 2.2rem; max-width: 680px; opacity: 0.95; text-shadow: 0 1px 10px rgba(0,0,0,0.5); color: #fff; }
.vv-hero-cta { display: inline-flex; gap: 1rem; flex-wrap: wrap; justify-content: center; margin-top: 0.25rem; }
.vv-hero-scroll { position: absolute; bottom: 2rem; left: 50%; transform: translateX(-50%); z-index: 3; display: flex; flex-direction: column; align-items: center; gap: 0.4rem; color: rgba(255,255,255,0.7); font-size: 0.72rem; font-weight: 500; letter-spacing: 0.18em; text-transform: uppercase; font-family: 'Poppins', sans-serif; animation: vv-bounce 2s ease-in-out infinite; }
@keyframes vv-bounce { 0%,100% { transform: translateX(-50%) translateY(0); } 50% { transform: translateX(-50%) translateY(6px); } }

/* ===== BOUTONS ===== */
.vv-btn { display: inline-block; padding: 1rem 2.2rem; border-radius: 50px; font-weight: 600; text-decoration: none; transition: all 0.3s ease; font-size: 1rem; border: 2px solid transparent; font-family: 'Poppins', sans-serif; }
.vv-btn-primary { background: var(--vv-red); color: white; box-shadow: 0 4px 20px rgba(211,47,47,0.4); }
.vv-btn-primary:hover { background: var(--vv-red-dark); transform: translateY(-2px); box-shadow: 0 8px 25px rgba(211,47,47,0.5); }
.vv-btn-outline { background: rgba(255,255,255,0.15); color: white; border-color: white; backdrop-filter: blur(8px); }
.vv-btn-outline:hover { background: white; color: var(--vv-blue); }
.vv-btn-blue { background: var(--vv-blue); color: white; }
.vv-btn-blue:hover { background: #162d6e; transform: translateY(-2px); }

/* ===== SECTIONS ===== */
.vv-section { padding: 5rem 1rem; width: 100%; }
.vv-section-light { background: var(--vv-cream); }
.vv-section-sand { background: var(--vv-sand); }
.vv-container { max-width: 1240px; margin: 0 auto; }
.vv-section-header { text-align: center; margin-bottom: 3.5rem; }
.vv-section-eyebrow { font-family: 'Poppins', sans-serif; color: var(--vv-red); font-size: 0.82rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.18em; display: inline-block; margin-bottom: 0.85rem; padding-bottom: 0.4rem; position: relative; }
.vv-section-eyebrow::after { content: ''; display: block; width: 36px; height: 3px; background: var(--vv-red); margin: 0.5rem auto 0; border-radius: 2px; }
.vv-section-title { font-family: 'Poppins', sans-serif; font-size: clamp(2rem, 4vw, 2.8rem); color: var(--vv-blue); margin-bottom: 1rem; font-weight: 800; letter-spacing: -0.02em; line-height: 1.15; }
.vv-section-subtitle { font-family: 'Poppins', sans-serif; color: var(--vv-text-light); font-size: 1.05rem; max-width: 700px; margin: 0 auto; line-height: 1.7; font-weight: 400; }

/* ===== CARTES CATÉGORIES ===== */
.vv-categories { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1.5rem; max-width: 1240px; margin: 0 auto; }
.vv-cat-card { position: relative; border-radius: 20px; overflow: hidden; aspect-ratio: 4/5; cursor: pointer; transition: transform 0.4s ease,box-shadow 0.4s ease; text-decoration: none; color: white; display: flex; align-items: flex-end; box-shadow: 0 10px 30px rgba(0,0,0,0.1); }
.vv-cat-card:hover { transform: translateY(-8px); box-shadow: 0 20px 40px rgba(0,0,0,0.2); }
.vv-cat-card-bg { position: absolute; inset: 0; background-size: cover; background-position: center; transition: transform 0.6s ease; }
.vv-cat-card:hover .vv-cat-card-bg { transform: scale(1.08); }
.vv-cat-card-overlay { position: absolute; inset: 0; background: linear-gradient(0deg, rgba(0,0,0,0.85) 0%, rgba(0,0,0,0.15) 60%, transparent 100%); }
.vv-cat-card-content { position: relative; padding: 1.75rem; z-index: 2; width: 100%; }
.vv-cat-card h3 { color: white; font-size: 1.5rem; margin: 0 0 0.3rem; font-weight: 800; }
.vv-cat-card p { color: rgba(255,255,255,0.9); margin: 0 0 0.8rem; font-size: 0.9rem; }
.vv-cat-card .vv-cat-cta { display: inline-flex; align-items: center; gap: 0.4rem; color: var(--vv-yellow-light); font-weight: 600; font-size: 0.9rem; }
.vv-cat-card .vv-cat-badge { position: absolute; top: 1.25rem; right: 1.25rem; background: var(--vv-red); color: white; padding: 0.35rem 0.85rem; border-radius: 30px; font-size: 0.78rem; font-weight: 600; z-index: 3; }
.vv-cat-camping .vv-cat-card-bg { background-image: url('https://vendee-vacances.fr/wp-content/uploads/2026/05/cat-camping-vendee.jpg'); background-color: #15803d; }
.vv-cat-hotel .vv-cat-card-bg { background-image: url('https://vendee-vacances.fr/wp-content/uploads/2026/05/cat-hotel-piscine.jpg'); background-color: var(--vv-blue); }
.vv-cat-thalasso .vv-cat-card-bg { background-image: url('https://vendee-vacances.fr/wp-content/uploads/2026/05/cat-thalasso-atlantique.jpg'); background-color: #06b6d4; }
.vv-cat-parc .vv-cat-card-bg { background-image: url('https://vendee-vacances.fr/wp-content/uploads/2026/05/cat-parc-puy-du-fou.jpg'); background-color: var(--vv-red); }

/* ===== DESTINATIONS (grille 5 — paire centrée) ===== */
.vv-destinations { display: flex; flex-wrap: wrap; gap: 1.25rem; justify-content: center; max-width: 1240px; margin: 0 auto; }
.vv-dest-card { background: white; border-radius: 16px; overflow: hidden; box-shadow: 0 4px 15px rgba(0,0,0,0.06); transition: all 0.3s ease; text-decoration: none; color: var(--vv-text); width: calc(20% - 1rem); min-width: 180px; flex: 0 0 auto; }
.vv-dest-card:hover { transform: translateY(-5px); box-shadow: 0 12px 30px rgba(0,0,0,0.12); }
.vv-dest-img { height: 150px; background: linear-gradient(135deg, #60A5FA, var(--vv-blue)); position: relative; background-size: cover; background-position: center; }
.vv-dest-img::after { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, transparent 40%, rgba(0,0,0,0.35)); }
.vv-dest-content { padding: 1.1rem; }
.vv-dest-content h3 { font-size: 1rem; margin: 0 0 0.25rem; color: var(--vv-blue); font-weight: 700; }
.vv-dest-content p { font-size: 0.83rem; color: var(--vv-text-light); margin: 0; }

/* ===== PUY DU FOU SECTION ===== */
.vv-section-pdf { background: linear-gradient(135deg, #0F172A 0%, var(--vv-blue) 50%, #7C1B1B 100%); padding: 0; position: relative; overflow: hidden; width: 100%; }
.vv-pdf-inner { display: grid; grid-template-columns: 1fr 1fr; min-height: 480px; max-width: 100%; }
.vv-pdf-visual { position: relative; overflow: hidden; min-height: 480px; }
.vv-pdf-visual img { width: 100%; height: 100%; object-fit: cover; object-position: center; opacity: 0.85; }
.vv-pdf-visual::after { content: ''; position: absolute; inset: 0; background: linear-gradient(90deg, transparent 60%, rgba(15,23,42,0.7) 100%); }
.vv-pdf-content { display: flex; flex-direction: column; justify-content: center; padding: 4rem 3.5rem; color: white; position: relative; z-index: 1; }
.vv-pdf-eyebrow { font-family: 'Poppins', sans-serif; font-size: 0.82rem; color: var(--vv-yellow-light); font-weight: 700; text-transform: uppercase; letter-spacing: 0.18em; display: inline-block; margin-bottom: 0.95rem; padding: 0.4rem 0.95rem; background: rgba(252,211,77,0.15); border: 1px solid rgba(252,211,77,0.35); border-radius: 30px; }
.vv-pdf-content h2 { color: white; font-size: clamp(2rem, 3.5vw, 3rem); font-weight: 800; letter-spacing: -0.02em; margin: 0 0 1.2rem; line-height: 1.1; }
.vv-pdf-content p { color: rgba(255,255,255,0.88); font-size: 1.05rem; line-height: 1.7; margin-bottom: 1rem; }
.vv-pdf-stats { display: flex; gap: 2rem; margin: 1.5rem 0 2rem; flex-wrap: wrap; }
.vv-pdf-stat { text-align: center; }
.vv-pdf-stat strong { display: block; font-size: 2rem; font-weight: 800; color: var(--vv-yellow-light); line-height: 1; }
.vv-pdf-stat span { font-size: 0.82rem; color: rgba(255,255,255,0.7); text-transform: uppercase; letter-spacing: 0.05em; }
.vv-pdf-stars { color: var(--vv-yellow); font-size: 1.3rem; margin-bottom: 1rem; display: block; }

/* ===== FEATURES ===== */
.vv-features { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 2rem; max-width: 1100px; margin: 0 auto; }
.vv-feature { text-align: center; padding: 1rem; }
.vv-feature-icon { width: 80px; height: 80px; margin: 0 auto 1.25rem; background: var(--vv-sand); border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 2.2rem; }
.vv-feature h3 { color: var(--vv-blue); font-size: 1.15rem; margin-bottom: 0.5rem; font-weight: 700; }
.vv-feature p { color: var(--vv-text-light); font-size: 0.93rem; }

/* ===== ARTICLES BLOG ===== */
.vv-articles { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 2rem; max-width: 1240px; margin: 0 auto; }
.vv-article { background: white; border-radius: 18px; overflow: hidden; box-shadow: 0 6px 20px rgba(0,0,0,0.06); transition: transform 0.3s ease; }
.vv-article:hover { transform: translateY(-5px); }
.vv-article-img { height: 200px; background-size: cover; background-position: center; }
.vv-article-content { padding: 1.5rem; }
.vv-article-cat { color: var(--vv-red); font-size: 0.8rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.06em; }
.vv-article h3 { font-size: 1.15rem; margin: 0.5rem 0 0.75rem; color: var(--vv-blue); font-weight: 700; }
.vv-article p { font-size: 0.92rem; color: var(--vv-text-light); margin-bottom: 1rem; line-height: 1.6; }
.vv-etab-link { color: var(--vv-blue); font-weight: 600; text-decoration: none; font-size: 0.92rem; }
.vv-etab-link:hover { color: var(--vv-red); }

/* ===== NEWSLETTER ===== */
.vv-newsletter { background: linear-gradient(135deg, var(--vv-blue) 0%, var(--vv-red) 100%); padding: 4rem 2rem; color: white; text-align: center; border-radius: 28px; margin: 4rem auto; max-width: 1100px; }
.vv-newsletter h2 { color: white; font-size: 2rem; margin-bottom: 0.75rem; font-weight: 800; }
.vv-newsletter p { font-size: 1.05rem; opacity: 0.95; margin-bottom: 2rem; max-width: 600px; margin-left: auto; margin-right: auto; }
.vv-newsletter-form { display: flex; gap: 0.75rem; max-width: 500px; margin: 0 auto; flex-wrap: wrap; }
.vv-newsletter-form input { flex: 1; min-width: 200px; padding: 1rem 1.25rem; border: none; border-radius: 50px; font-size: 1rem; font-family: 'Poppins', sans-serif; }
.vv-newsletter-form button { padding: 1rem 2rem; background: var(--vv-yellow); color: var(--vv-blue); border: none; border-radius: 50px; font-weight: 700; cursor: pointer; transition: all 0.3s; font-family: 'Poppins', sans-serif; }
.vv-newsletter-form button:hover { background: white; transform: scale(1.05); }

/* ===== CARTE LEAFLET ===== */
.vv-section-map { background: #f0f4f8; padding: 5rem 0 3rem; width: 100%; }
.vv-section-map > .vv-container { max-width: 1240px; margin: 0 auto; padding: 0 1.5rem; }
#vv-map { width: 100%; height: 540px; z-index: 1; box-shadow: 0 8px 40px rgba(30,58,138,0.13); display: block; }
.vv-map-filters { display: flex; flex-wrap: wrap; gap: 0.6rem; margin-top: 1.5rem; justify-content: center; }
.vv-map-filter { padding: 0.55rem 1.4rem; border: 2px solid #e5e7eb; border-radius: 50px; background: #fff; cursor: pointer; font-family: 'Poppins', sans-serif; font-size: 0.88rem; font-weight: 600; color: var(--vv-text); transition: all 0.2s; }
.vv-map-filter:hover { border-color: var(--vv-blue); color: var(--vv-blue); }
.vv-map-filter.active { background: var(--vv-blue); border-color: var(--vv-blue); color: #fff; }
.vv-map-legend { display: flex; flex-wrap: wrap; gap: 1.5rem; padding: 1.2rem 0 0; font-size: 0.85rem; font-weight: 500; color: var(--vv-text-light); justify-content: center; }
.vv-legend-dot { display: inline-block; width: 12px; height: 12px; border-radius: 50%; margin-right: 5px; vertical-align: middle; border: 2px solid #fff; box-shadow: 0 1px 4px rgba(0,0,0,0.2); }
.vv-popup .leaflet-popup-content-wrapper { border-radius: 14px; padding: 0; overflow: hidden; box-shadow: 0 8px 32px rgba(30,58,138,0.18); border: none; }
.vv-popup .leaflet-popup-content { margin: 0; width: 260px; }
.vv-popup .leaflet-popup-tip-container { display: none; }
.vv-popup-img { width: 100%; height: 140px; object-fit: cover; display: block; }
.vv-popup-body { padding: 0.9rem 1rem 1rem; font-family: 'Poppins', sans-serif; }
.vv-popup-type { display: inline-block; font-size: 0.72rem; font-weight: 700; letter-spacing: 0.05em; text-transform: uppercase; padding: 0.2rem 0.6rem; border-radius: 20px; margin-bottom: 0.5rem; }
.vv-popup-camping { background: #FEE2E2; color: var(--vv-red-dark); }
.vv-popup-hotel { background: #DBEAFE; color: var(--vv-blue); }
.vv-popup-thalasso { background: #E0F2FE; color: #0369A1; }
.vv-popup-parc { background: var(--vv-sand); color: #92400E; }
.vv-popup-nom { font-size: 0.95rem; font-weight: 700; color: var(--vv-blue); margin: 0 0 0.2rem; line-height: 1.3; font-family: 'Poppins', sans-serif; }
.vv-popup-stars { font-size: 0.85rem; margin-bottom: 0.2rem; color: var(--vv-yellow); }
.vv-popup-ville { font-size: 0.78rem; color: var(--vv-text-light); margin: 0 0 0.4rem; }
.vv-popup-desc { font-size: 0.82rem; color: var(--vv-text); margin: 0 0 0.8rem; line-height: 1.4; }
.vv-popup-btn { display: inline-block; background: var(--vv-red); color: #fff; padding: 0.45rem 1rem; border-radius: 6px; font-size: 0.82rem; font-weight: 600; text-decoration: none; transition: background 0.2s; font-family: 'Poppins', sans-serif; }
.vv-popup-btn:hover { background: var(--vv-red-dark); }
.leaflet-pane,.leaflet-map-pane { z-index: 1 !important; }
.leaflet-top,.leaflet-bottom { z-index: 2 !important; }

.vv-fiche-tagline { font-size: 1.08rem; color: #64748B; font-style: italic; margin: 0.35rem 0 1rem; line-height: 1.5; }
/* ===== FOOTER ===== */
.vv-footer { background: linear-gradient(180deg, var(--vv-blue) 0%, #0F172A 100%); color: rgba(255,255,255,0.85); padding: 4rem 1.5rem 0; margin-top: 4rem; }
.vv-footer-container { max-width: 1240px; margin: 0 auto; display: grid; grid-template-columns: 1.5fr 1fr 1fr 1fr; gap: 3rem; padding-bottom: 3rem; }
.vv-footer-col h4 { color: var(--vv-yellow-light); font-size: 1rem; margin-bottom: 1.2rem; font-weight: 700; letter-spacing: 0.02em; }
.vv-footer-about p { font-size: 0.93rem; line-height: 1.7; opacity: 0.9; margin-bottom: 1rem; }
.vv-footer-logo { display: block; margin-bottom: 1.25rem; text-decoration: none; }
.vv-footer-logo img { max-height: 170px; width: auto; height: auto; filter: brightness(0) invert(1) drop-shadow(0 2px 12px rgba(0,0,0,0.3)); opacity: 1; transition: transform 0.3s ease, opacity 0.3s ease; }
.vv-footer-logo:hover img { transform: scale(1.04); opacity: 0.92; }
.vv-footer-logo-text { font-family: 'Poppins', sans-serif; font-weight: 700; color: var(--vv-yellow-light); font-size: 1.2rem; line-height: 1; letter-spacing: -0.01em; }
.vv-footer-col ul { list-style: none; padding: 0; margin: 0; }
.vv-footer-col li { margin-bottom: 0.6rem; }
.vv-footer-col a { color: rgba(255,255,255,0.8); text-decoration: none; font-size: 0.92rem; transition: color 0.2s; display: inline-flex; align-items: center; gap: 0.4rem; font-family: 'Poppins', sans-serif; }
.vv-footer-col a:hover { color: var(--vv-yellow-light); }
.vv-footer-col li a::before { content: '›'; color: var(--vv-yellow); font-weight: bold; margin-right: 0.2rem; }
.vv-footer-newsletter input { width: 100%; padding: 0.75rem 1rem; border-radius: 50px; border: 1px solid rgba(255,255,255,0.3); background: rgba(255,255,255,0.1); color: white; font-size: 0.9rem; margin-bottom: 0.75rem; box-sizing: border-box; font-family: 'Poppins', sans-serif; }
.vv-footer-newsletter input::placeholder { color: rgba(255,255,255,0.6); }
.vv-footer-newsletter button { width: 100%; padding: 0.75rem; background: var(--vv-red); color: white; border: none; border-radius: 50px; font-weight: 600; cursor: pointer; transition: background 0.2s; font-family: 'Poppins', sans-serif; }
.vv-footer-newsletter button:hover { background: var(--vv-red-dark); }
/* Réseaux sociaux — vrais logos SVG */
.vv-footer-social { display: flex; gap: 0.7rem; margin-top: 1.5rem; flex-wrap: wrap; }
.vv-footer-social a { width: 42px; height: 42px; border-radius: 50%; background: rgba(255,255,255,0.12); display: inline-flex; align-items: center; justify-content: center; transition: all 0.25s; flex-shrink: 0; }
.vv-footer-social a::before { content: none; }
.vv-footer-social a:hover { background: var(--vv-red); transform: translateY(-3px); }
.vv-footer-social svg { width: 18px; height: 18px; fill: white; display: block; }
.vv-footer-bottom { border-top: 1px solid rgba(255,255,255,0.1); padding: 1.5rem 0; text-align: center; font-size: 0.82rem; opacity: 0.7; max-width: 1240px; margin: 0 auto; }
.vv-footer-bottom a { color: var(--vv-yellow-light); text-decoration: none; }
.vv-footer-bottom a:hover { text-decoration: underline; }
.site-footer .site-below-footer-wrap,.ast-footer-copyright,.ast-builder-grid-row-tablet-3-equal { display: none !important; }

/* ===== ABOVE-FOOTER : fond blanc compact ===== */
.site-above-footer-wrap[data-section="section-above-footer-builder"],
.site-above-footer-wrap {
    background-color: #fff !important;
    background-image: none !important;
    padding-top: 24px !important;
    padding-bottom: 24px !important;
    border-top: 1px solid #e5e7eb !important;
    border-bottom: 1px solid #e5e7eb !important;
    min-height: 100px !important;
}
.site-above-footer-wrap .ast-builder-grid-row {
    min-height: 80px !important;
    align-items: center !important;
}
.site-above-footer-wrap .widget_media_image img {
    max-height: 90px !important;
    width: auto !important;
    height: auto !important;
    display: inline-block !important;
}
.site-above-footer-wrap .widget { text-align: center; margin-bottom: 0 !important; }
@media (max-width: 768px) {
    .site-above-footer-wrap[data-section="section-above-footer-builder"],
    .site-above-footer-wrap {
        padding-top: 16px !important;
        padding-bottom: 16px !important;
        min-height: 70px !important;
    }
    .site-above-footer-wrap .ast-builder-grid-row {
        min-height: 56px !important;
    }
    .site-above-footer-wrap .widget_media_image img {
        max-height: 70px !important;
    }
}
@media (max-width: 480px) {
    .site-above-footer-wrap .widget_media_image img {
        max-height: 56px !important;
    }
}
.site-above-footer-wrap .ast-builder-social-element,
.site-above-footer-wrap .ast-builder-grid-row-container-inner > *:not(.widget_media_image):not(.ast-builder-grid-row) {
    display: none !important;
}
.site-above-footer-wrap .ast-footer-social-1-wrap,
.site-above-footer-wrap [data-section="section-fb-social-icons-1"],
.site-above-footer-wrap .ast-builder-social-element { display: none !important; }

/* ===== RESPONSIVE ===== */
@media (max-width: 1024px) {
    .vv-categories { grid-template-columns: repeat(2, 1fr); }
    .vv-pdf-inner { grid-template-columns: 1fr; }
    .vv-pdf-visual { min-height: 300px; }
    .vv-pdf-visual::after { background: linear-gradient(0deg, rgba(15,23,42,0.7) 0%, transparent 60%); }
    .vv-pdf-content { padding: 3rem 2rem; }
    .vv-dest-card { width: calc(33% - 1rem); }
}
@media (max-width: 768px) {
    .vv-hero { min-height: 92vh; }
    .vv-section { padding: 3.5rem 1rem; }
    .vv-newsletter { margin: 2rem 1rem; padding: 2.5rem 1.5rem; }
    #vv-map { height: 380px; }
    .vv-map-filters { gap: 0.4rem; }
    .vv-map-filter { font-size: 0.8rem; padding: 0.4rem 0.9rem; }
    .vv-footer-container { grid-template-columns: 1fr 1fr; gap: 2rem; }
    .vv-footer-about { grid-column: 1 / -1; text-align: center; }
    .vv-footer-logo img { max-height: 90px; }
    .vv-footer-social { justify-content: center; }
    .vv-categories { grid-template-columns: 1fr 1fr; }
    .vv-dest-card { width: calc(50% - 0.7rem); min-width: 140px; }
}
@media (max-width: 500px) {
    .vv-footer-container { grid-template-columns: 1fr; }
    .vv-categories { grid-template-columns: 1fr; }
    .vv-dest-card { width: calc(50% - 0.7rem); }
}




/* ===== PAGE BLOG (page_for_posts) : full-width + grille 3 col ===== */
/* Masquer la sidebar uniquement sur la page liste du blog */
.blog #secondary {
    display: none !important;
}
/* #primary prend toute la largeur du conteneur */
.blog #primary {
    width: 100% !important;
    max-width: 1040px !important;
    margin: 0 auto !important;
    padding-left: 1rem !important;
    padding-right: 1rem !important;
}
/* La grille Astra ast-row : 3 colonnes responsive */
.blog .ast-row {
    display: grid !important;
    grid-template-columns: repeat(2, 1fr) !important;
    gap: 2rem !important;
    margin: 0 !important;
}
.blog .ast-article-post {
    margin-bottom: 0 !important;
    width: 100% !important;
}
@media (max-width: 921px) {
    .blog .ast-row { grid-template-columns: repeat(2, 1fr) !important; }
}
@media (max-width: 600px) {
    .blog .ast-row { grid-template-columns: 1fr !important; }
}

/* ===== FIX CTA HEADER HOME ===== */
/* Supprime le bouton CTA qui chevauche le menu */
.home .ast-header-custom-item,
.home .ast-header-button-1,
.home .ast-builder-menu-1 ~ .ast-header-custom-item,
.home [data-section="section-hb-button-1"] {
    display: none !important;
}

/* ===== BLOG GRID (page /blog/) ===== */
.vv-blog-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1.75rem; max-width: 920px; margin: 2.5rem auto 3.5rem; padding: 0 1.25rem; }
.vv-blog-card { display: flex; flex-direction: column; background: #fff; border: 1px solid rgba(15,23,42,0.06); border-radius: 18px; overflow: hidden; text-decoration: none; color: var(--vv-text); box-shadow: 0 4px 18px rgba(15,23,42,0.07); transition: transform .28s ease, box-shadow .28s ease; }
.vv-blog-card:hover { transform: translateY(-6px); box-shadow: 0 16px 36px rgba(15,23,42,0.16); }
.vv-blog-card-img { width: 100%; aspect-ratio: 16 / 10; flex: none; background-size: cover; background-position: center; background-repeat: no-repeat; }
.vv-blog-card-body { display: flex; flex-direction: column; flex: 1; min-height: 0; padding: 1rem 1.25rem 1.15rem; }
.vv-blog-card-date { font-size: 0.74rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.08em; color: var(--vv-red); margin-bottom: 0.55rem; }
.vv-blog-card h3 { font-family: 'Poppins', sans-serif; font-size: 1.04rem; font-weight: 700; line-height: 1.3; color: var(--vv-blue); margin: 0 0 0.5rem; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.vv-blog-card p { font-size: 0.88rem; line-height: 1.55; color: var(--vv-text-light); margin: 0 0 0.85rem; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.vv-blog-card-cta { margin-top: auto; align-self: flex-start; font-weight: 700; font-size: 0.9rem; color: var(--vv-red); transition: color .2s ease, transform .2s ease; }
.vv-blog-card:hover .vv-blog-card-cta { color: var(--vv-red-dark); transform: translateX(3px); }
@media (max-width: 980px) { .vv-blog-grid { grid-template-columns: repeat(2, 1fr); gap: 1.4rem; } }
@media (max-width: 600px) { .vv-blog-grid { grid-template-columns: 1fr; gap: 1.25rem; } }

/* ===== BLOG ARCHIVE CARDS (page des articles /blog/) ===== */
.blog .ast-article-post { margin: 0 !important; width: 100% !important; background:#fff; border:1px solid rgba(15,23,42,0.06); border-radius:18px; overflow:hidden; box-shadow:0 4px 18px rgba(15,23,42,0.07); transition:transform .28s ease, box-shadow .28s ease; display:flex; }
.blog .ast-article-post:hover { transform:translateY(-6px); box-shadow:0 16px 36px rgba(15,23,42,0.16); }
.blog .ast-article-post .ast-article-inner { display:flex; flex-direction:column; width:100%; height:100%; margin:0; padding:0; border:0; box-shadow:none; background:transparent; }
.blog .ast-article-post .post-content { display:flex; flex-direction:column; flex:1; padding:0; }
.blog .ast-article-post .ast-blog-featured-section { margin:0 !important; padding:0 !important; }
.blog .ast-article-post .post-thumb-img-content { display:block; aspect-ratio:1 / 1; overflow:hidden; }
.blog .ast-article-post .post-thumb-img-content a { display:block; width:100%; height:100%; }
.blog .ast-article-post .post-thumb-img-content img { width:100%; height:100%; object-fit:cover; display:block; margin:0; border-radius:0; }
.blog .ast-article-post .entry-header { margin:0; padding:0; }
.blog .ast-article-post .entry-meta { display:none !important; }
.blog .ast-article-post .entry-title { font-family:'Poppins', sans-serif; font-size:1.12rem; line-height:1.3; font-weight:700; margin:0; padding:1.1rem 1.35rem 0; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.blog .ast-article-post .entry-title a { color:var(--vv-blue); text-decoration:none; }
.blog .ast-article-post .entry-title a:hover { color:var(--vv-red); }
.blog .ast-article-post .ast-excerpt-container { font-size:0.92rem; line-height:1.6; color:var(--vv-text-light); margin:0; padding:0.7rem 1.35rem 0; display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden; }
.blog .ast-article-post .entry-content { margin:0; padding:0; }
.blog .ast-article-post .read-more { margin:auto 0 0; padding:1rem 1.35rem 1.4rem; }
.blog .ast-article-post .read-more a { display:inline-block; font-family:'Poppins', sans-serif; font-weight:700; font-size:0.88rem; color:#fff !important; background:var(--vv-red); padding:0.55rem 1.2rem; border-radius:30px; text-decoration:none; transition:background .2s ease, transform .2s ease; }
.blog .ast-article-post .read-more a:hover { background:var(--vv-red-dark); transform:translateX(2px); }
/* ===== COMPARATIFS / HUBS (responsive) ===== */
.vv-cmp-hero{margin:0 0 1.5rem;}
.vv-cmp-hero img,.vv-cmp-fig img{width:100%;height:auto;border-radius:16px;display:block;}
.vv-cmp-fig{margin:1rem 0;}
.vv-cmp-table{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:1.5rem 0;}
.vv-cmp-table table{width:100%;border-collapse:collapse;min-width:460px;}
.vv-cmp-table th,.vv-cmp-table td{padding:.7rem .9rem;border-bottom:1px solid #e5e7eb;text-align:left;font-size:.95rem;}
.vv-cmp-table thead th{background:var(--vv-blue);color:#fff;font-family:'Poppins', sans-serif;}
.vv-cmp-table tbody tr:nth-child(even) td{background:#f7f9fc;}
.vv-cmp-cta{margin:1.1rem 0 2.4rem;}
.vv-cmp-cta .vv-btn{padding:.85rem 1.8rem;margin:.2rem 0;}
@media(max-width:600px){.vv-cmp-cta .vv-btn{display:block;width:100%;text-align:center;box-sizing:border-box;padding:.95rem 1rem;}.vv-cmp-table th,.vv-cmp-table td{font-size:.9rem;padding:.6rem .65rem;}}
/* ===== [vv-audit 2026-08-24] vv-audit-related-mobile =====
   Les encarts « A decouvrir aussi » portent un padding:30px en style inline.
   Sur un ecran de 390 px, une fois retire le padding de page, il ne restait que
   ~266 px de contenu utile : l'encart paraissait etroit et etrangle.
   Les styles inline ne pouvant etre surcharges autrement, on passe par !important,
   et uniquement sous 768 px : l'affichage bureau reste inchange. */
@media (max-width:768px){
  .vv-related,
  .vv-related-posts{
    padding:18px 14px !important;
    margin:32px 0;
    border-radius:10px;
  }
  .vv-related > div,
  .vv-related-posts > div{
    gap:12px;
  }
}
@media (max-width:420px){
  .vv-related,
  .vv-related-posts{
    padding:16px 12px !important;
    margin-left:-4px;
    margin-right:-4px;
  }
}
/* ===== [vv-audit 2026-08-24] Titre accessible sur les archives a banniere =====
   Les archives de type (campings, hotels, thalasso...) affichent une banniere
   image dont le titre est integre au visuel. Le document n'avait donc aucun H1.
   On restitue le titre pour les lecteurs d'ecran et les moteurs, sans le
   dupliquer a l'ecran. Technique standard, pas de dissimulation : le texte
   correspond exactement a ce que la banniere affiche. */
.vv-sr-only{
  position:absolute;
  width:1px;height:1px;
  padding:0;margin:-1px;
  overflow:hidden;
  clip:rect(0,0,0,0);
  clip-path:inset(50%);
  white-space:nowrap;
  border:0;
}

/* [vv-c4-contraste-gris-2026-08-26] Audit C4 : #6B7280 sur le fond teinte #F0F4F8 des sections
   claires tombe a 4,37:1 pour 4,5 requis. Le jeton --vv-text-light n'est PAS
   modifie : il passe (4,83:1) partout ou il est pose sur du blanc. On assombrit
   uniquement les deux elements mesures en echec. */
.vv-section-subtitle { color: #5A6472; }
.vv-map-legend       { color: #5A6472; }


/* [vv-a3-formulaire-mobile-2026-08-26] Audit A3 : l'input newsletter etait rendu a 14,4px malgre
   le font-size:1rem declare plus haut. Sous 16px, Safari iOS zoome au focus et
   ne dezoome pas. Valeur en pixels absolus et selecteur scope pour passer devant
   la regle qui l'ecrasait, sans !important. Bouton porte a 44px de haut. */
.vv-newsletter .vv-newsletter-form input {
    font-size: 16px;
    min-height: 48px;
}
.vv-newsletter .vv-newsletter-form button {
    font-size: 16px;
    min-height: 48px;
}

/* [vv-a3-formulaire-pied-2026-08-26] Meme correctif pour le second formulaire, celui du pied de page. */
.vv-footer .vv-footer-newsletter input {
    font-size: 16px;
    min-height: 48px;
}
.vv-footer .vv-footer-newsletter button {
    font-size: 16px;
    min-height: 48px;
}


/* [vv-a2-bandeau-cookies-2026-08-26] Audit A2 : sur mobile le bandeau occupait 430px (53% de l'ecran)
   et le CTA fixe 81px de plus, soit 63% masques a la premiere visite.
   AUCUN texte, categorie ou bouton n'est supprime ni reduit. On se contente de :
   1) mettre Accepter et Refuser cote a cote, a taille strictement identique,
      ce qui economise 55px et rend le refus aussi accessible que l'acceptation ;
   2) masquer le CTA fixe tant que le bandeau est affiche, pour ne pas empiler
      deux surcouches sur le meme ecran. */
@media (max-width: 600px) {
    .cmplz-cookiebanner.cmplz-show .cmplz-buttons {
        flex-direction: row;
        flex-wrap: wrap;
    }
    .cmplz-cookiebanner.cmplz-show .cmplz-buttons .cmplz-accept,
    .cmplz-cookiebanner.cmplz-show .cmplz-buttons .cmplz-deny {
        flex: 1 1 calc(50% - 5px);
        min-width: 0;
    }
    .cmplz-cookiebanner.cmplz-show .cmplz-buttons .cmplz-view-preferences {
        flex: 1 1 100%;
    }
    body:has(.cmplz-cookiebanner.cmplz-show) .vv-etab-sticky-cta {
        display: none;
    }
}


/* [vv-i1-images-mobiles-2026-08-26] Audit I1 : sous 768px le mobile telechargeait les images
   pleine taille pour des boites de 181 a 375px de large. On pointe vers les
   variantes deja generees par WordPress. Aucun markup modifie, la couche WebP
   d'Imagify continue de s'appliquer par-dessus.
   Poids images de l'accueil : 744 Ko -> 268 Ko.
   Le !important ne concerne que le heros, dont le fond est en style inline
   dans le contenu de la page et ne peut pas etre surcharge autrement. */
@media (max-width: 768px) {
    .vv-categories .vv-cat-camping  .vv-cat-card-bg { background-image: url('https://vendee-vacances.fr/wp-content/uploads/2026/05/cat-camping-vendee-768x432.jpg'); }
    .vv-categories .vv-cat-hotel    .vv-cat-card-bg { background-image: url('https://vendee-vacances.fr/wp-content/uploads/2026/05/cat-hotel-piscine-768x500.jpg'); }
    .vv-categories .vv-cat-thalasso .vv-cat-card-bg { background-image: url('https://vendee-vacances.fr/wp-content/uploads/2026/05/cat-thalasso-atlantique-768x576.jpg'); }
    .vv-categories .vv-cat-parc     .vv-cat-card-bg { background-image: url('https://vendee-vacances.fr/wp-content/uploads/2026/05/cat-parc-puy-du-fou-768x576.jpg'); }
    .vv-home-hero { background-image: url('https://vendee-vacances.fr/wp-content/uploads/2026/05/sables-olonne-coucher-soleil-1-1536x866.jpg'); }
}


/* [vv-a4-a6-tactile-et-vh-2026-08-27] Deux correctifs d'audit.

   A6 : les hauteurs en vh ignorent la barre d'adresse mobile, la section saute
   quand elle se retracte. On redeclare en svh apres coup : un navigateur qui ne
   connait pas svh ignore la ligne et garde le vh d'origine. Aucune regression.

   A4 : zones tactiles sous le seuil des 44px. Les filtres de carte etaient a 30px
   et cote a cote, le doigt en atteignait deux a la fois. */
.vv-hero { min-height: 100svh; }
body:not(.home) .vv-hero { min-height: 55svh; }
body:not(.home) .vv-archive-hero { min-height: 50svh; }
@media (max-width: 921px) { .vv-hero { min-height: 92svh; } }

@media (max-width: 768px) {
    .vv-map-filter {
        min-height: 44px;
        padding: 0.6rem 1.1rem;
    }
    .vv-etab-link {
        display: inline-flex;
        align-items: center;
        min-height: 44px;
    }
    .vv-back-to-top {
        width: 44px;
        height: 44px;
    }
}

/* [vv-a4-titre-carte-2026-08-27] Titre de carte a 31px. On ne rend PAS la carte entiere cliquable :
   elle contient un lien d'affiliation campings.com qu'une surcouche neutraliserait. */
@media (max-width: 768px) {
    .vv-etab-card .vv-etab-title a {
        display: inline-flex;
        align-items: center;
        min-height: 44px;
    }
}


/* [vv-t1-echelle-typo-2026-08-27] Audit T1 : huit niveaux entre 11,2 et 16,8px, soit trop petit
   ET trop peu structure. 70 elements sous 14px sur la seule page d'accueil.
   On ramene a quatre niveaux sous 768px :
     16px corps · 14px secondaire · 13px surtitres, badges et etiquettes
     12px reserve aux mentions legales et au bandeau cookies, non touches ici. */
@media (max-width: 768px) {
    body { font-size: 16px; }

    .vv-dest-content p,
    .vv-cat-card-content p { font-size: 14px; }

    .vv-section-eyebrow,
    .vv-hero-eyebrow,
    .vv-pdf-eyebrow,
    .vv-cat-badge,
    .vv-etab-badge,
    .vv-etab-type,
    .vv-etab-ville,
    .vv-etab-stars,
    .vv-etab-distance,
    .vv-article-cat,
    .vv-footer-bottom,
    .vv-map-legend,
    .vv-legend-item { font-size: 13px; }
}

/* [vv-t1-specificite-2026-08-27] Les regles T1 ci-dessus perdaient la cascade : VV Core reinjecte
   le meme CSS en inline, donc apres la feuille du theme. On repasse devant par le
   parent plutot que par !important, dont il y a deja 116 occurrences. */
@media (max-width: 768px) {
    html body { font-size: 16px; }
    .vv-etab-card .vv-etab-badge,
    .vv-etab-card .vv-etab-type,
    .vv-etab-card .vv-etab-ville,
    .vv-etab-grid .vv-etab-badge,
    .vv-etab-grid .vv-etab-type,
    .vv-etab-grid .vv-etab-ville { font-size: 13px; }
    .vv-cat-card .vv-cat-badge,
    .vv-categories .vv-cat-badge { font-size: 13px; }
    .vv-map-legend .vv-legend-item,
    .vv-section-map .vv-legend-item { font-size: 13px; }
}

/* [vv-t1-derniers-2026-08-27] Les deux derniers cas de T1.
   .vv-legend-item porte un style inline font-size:12px genere par le module carte :
   seul !important peut le surcharger, c'est le cas d'usage legitime.
   .vv-hero-eyebrow vit dans .vv-home-hero, il fallait scoper. */
@media (max-width: 768px) {
    .vv-home-hero .vv-hero-eyebrow { font-size: 13px; }
    .vv-map-legend .vv-legend-item { font-size: 13px !important; }
}


/* [vv-a5-clusters-charte-2026-08-27] Les pastilles de regroupement sortent vertes par defaut dans
   MarkerCluster.Default.css. On les repasse a la charte VV. */
.marker-cluster-small div,
.marker-cluster-medium div,
.marker-cluster-large div { background-color: rgba(30,58,138,0.92); color: #fff; font-family: 'Poppins', sans-serif; font-weight: 700; }
.marker-cluster-small { background-color: rgba(30,58,138,0.30); }
.marker-cluster-medium { background-color: rgba(211,47,47,0.30); }
.marker-cluster-large { background-color: rgba(245,158,11,0.35); }
.marker-cluster-medium div { background-color: rgba(211,47,47,0.92); }
.marker-cluster-large div { background-color: rgba(180,83,9,0.95); }
