/* Extracted from templates/sainte-marie/index.php head inline CSS. Keep loaded after Joomla head assets. */
        /* === Header: phone-as-CTA, no Réserver === */
        .header-actions .tel-as-cta {
            display: inline-flex;
            align-items: center;
            gap: 8px;
            padding: 10px 18px;
            border-radius: var(--radius-pill);
            background: linear-gradient(135deg, var(--accent) 0%, var(--accent-deep) 100%);
            color: var(--night-900);
            font-weight: 700;
            text-decoration: none;
            box-shadow: 0 6px 0 var(--secondary), 0 12px 24px -8px rgba(255, 166, 43, .5);
            transition: transform .2s, box-shadow .2s;
        }
        .header-actions .tel-as-cta:hover { transform: translateY(-2px); box-shadow: 0 8px 0 var(--secondary), 0 16px 28px -8px rgba(255,166,43,.6); }
        .header-actions .tel-as-cta .tel-number { font-size: 17px; font-weight: 800; line-height: 1; letter-spacing: .02em; white-space: nowrap; }
        .header-actions .tel-as-cta [data-icon="phone"] { animation: phonePulse 2.4s ease-in-out infinite; }
        @keyframes phonePulse { 0%, 100% { transform: rotate(0); } 10% { transform: rotate(-12deg); } 20% { transform: rotate(12deg); } 30% { transform: rotate(-8deg); } 40% { transform: rotate(8deg); } 50% { transform: rotate(0); } }

        /* === Plébiscités rotatif (v3 : plus d'animations) === */
        .plebiscites-rotator {
            position: relative;
            margin: 36px auto 0;
            max-width: 820px;
            min-height: 160px;
            padding: 32px 36px 48px;
            border-radius: var(--radius-card);
            background: linear-gradient(135deg, var(--card-bg) 0%, color-mix(in srgb, var(--accent-soft) 35%, var(--card-bg)) 100%);
            border: 1px solid var(--card-border);
            box-shadow: var(--shadow-card);
            overflow: hidden;
        }
        .plebiscites-rotator::before {
            content: '"';
            position: absolute;
            top: -28px;
            left: 16px;
            font-family: var(--font-display);
            font-size: 180px;
            font-weight: 900;
            color: var(--accent);
            opacity: .12;
            line-height: 1;
            pointer-events: none;
        }
        .plebiscites-rotator::after {
            content: '';
            position: absolute;
            inset: -50%;
            background: radial-gradient(ellipse at top right, color-mix(in srgb, var(--accent) 18%, transparent), transparent 60%);
            animation: plebGlow 12s ease-in-out infinite;
            pointer-events: none;
        }
        @keyframes plebGlow {
            0%, 100% { transform: translate(0, 0) rotate(0); opacity: .6; }
            33%      { transform: translate(8%, -4%) rotate(40deg); opacity: 1; }
            66%      { transform: translate(-6%, 6%) rotate(-30deg); opacity: .7; }
        }
        .plebiscite-item {
            position: absolute;
            inset: 32px 36px;
            opacity: 0;
            transform: translateY(24px) scale(.97);
            transition: opacity .7s cubic-bezier(.22,1,.36,1), transform .7s cubic-bezier(.22,1,.36,1);
            display: flex;
            gap: 22px;
            align-items: center;
        }
        .plebiscite-item.is-active {
            opacity: 1;
            transform: translateY(0) scale(1);
        }
        .plebiscite-item.is-active .plebiscite-badge { animation: plebBadgePop .8s cubic-bezier(.34,1.56,.64,1) both; }
        .plebiscite-item.is-active .plebiscite-text  { animation: plebTextSlide .9s cubic-bezier(.22,1,.36,1) both; }
        @keyframes plebBadgePop {
            0%   { transform: scale(.3) rotate(-180deg); opacity: 0; }
            70%  { transform: scale(1.15) rotate(8deg); opacity: 1; }
            100% { transform: scale(1) rotate(0); opacity: 1; }
        }
        @keyframes plebTextSlide {
            0%   { opacity: 0; transform: translateX(20px); filter: blur(4px); }
            100% { opacity: 1; transform: translateX(0); filter: blur(0); }
        }
        .plebiscite-badge {
            flex: 0 0 72px;
            width: 72px;
            height: 72px;
            border-radius: 50%;
            display: grid;
            place-items: center;
            background: linear-gradient(135deg, var(--accent) 0%, var(--accent-deep) 100%);
            color: var(--night-900);
            font-family: var(--font-display);
            font-weight: 900;
            font-size: 20px;
            box-shadow: 0 6px 0 var(--secondary), 0 12px 24px -6px rgba(255,166,43,.4);
            position: relative;
        }
        .plebiscite-badge::after {
            content: '';
            position: absolute;
            inset: -6px;
            border-radius: 50%;
            border: 2px solid var(--accent);
            opacity: 0;
            animation: plebRing 3s ease-out infinite;
        }
        @keyframes plebRing {
            0%   { opacity: .6; transform: scale(.9); }
            100% { opacity: 0; transform: scale(1.3); }
        }
        .plebiscite-text {
            flex: 1;
            font-family: var(--font-display);
            font-style: italic;
            font-size: clamp(16px, 1.6vw, 19px);
            line-height: 1.45;
            color: var(--fg-on-light);
            text-wrap: balance;
        }
        .plebiscite-source {
            display: block;
            margin-top: 6px;
            font-family: var(--font-body);
            font-style: normal;
            font-size: 13px;
            color: var(--fg-muted-light);
        }
        .plebiscite-dots {
            position: absolute;
            bottom: 12px;
            left: 50%;
            transform: translateX(-50%);
            display: flex;
            gap: 6px;
        }
        .plebiscite-dots button {
            width: 8px; height: 8px;
            border-radius: 50%;
            border: 0;
            background: var(--fg-muted-light);
            opacity: .35;
            cursor: pointer;
            transition: opacity .2s, transform .2s;
            padding: 0;
        }
        .plebiscite-dots button.is-active { opacity: 1; transform: scale(1.4); background: var(--accent-deep); }

        /* === Mega-menu camping-car flottant === */
        .megamenu-fab {
            position: fixed;
            left: 18px;
            bottom: 18px;
            z-index: 60;
            width: 64px;
            height: 64px;
            border-radius: 50%;
            border: 0;
            background: linear-gradient(135deg, var(--accent) 0%, var(--accent-deep) 100%);
            color: var(--night-900);
            display: grid;
            place-items: center;
            cursor: pointer;
            box-shadow: 0 8px 24px rgba(0,0,0,.25), 0 0 0 0 var(--accent);
            transition: transform .35s cubic-bezier(.34,1.56,.64,1), box-shadow .35s;
            animation: megamenuBob 4.5s ease-in-out infinite;
        }
        .megamenu-fab:hover { transform: scale(1.12); box-shadow: 0 12px 28px rgba(0,0,0,.32), 0 0 0 6px rgba(255,217,61,.25); }
        .megamenu-fab.is-open { animation: none; transform: rotate(360deg) scale(1.05); }
        .megamenu-fab svg { width: 32px; height: 32px; transition: transform .4s; }
        .megamenu-fab.is-open svg { transform: scale(.85); }
        @keyframes megamenuBob {
            0%, 100% { transform: translateY(0) rotate(0); }
            50% { transform: translateY(-6px) rotate(-3deg); }
        }
        @keyframes megamenuWheels {
            from { stroke-dashoffset: 0; }
            to   { stroke-dashoffset: -20; }
        }
        .megamenu-fab svg .wheel-track { stroke-dasharray: 4 2; animation: megamenuWheels 1.4s linear infinite; }

        /* Panel ouvrant */
        .megamenu-panel {
            position: fixed;
            left: 18px;
            bottom: 96px;
            z-index: 59;
            width: min(720px, calc(100vw - 36px));
            max-height: calc(100vh - 130px);
            background: var(--bg-page);
            border-radius: 22px;
            box-shadow: 0 28px 60px -12px rgba(10,37,64,.32), 0 4px 12px rgba(10,37,64,.08);
            padding: 24px 24px 28px;
            overflow-y: auto;
            opacity: 0;
            transform: translateY(20px) scale(.96);
            pointer-events: none;
            transition: opacity .35s cubic-bezier(.22,1,.36,1), transform .35s cubic-bezier(.22,1,.36,1);
        }
        .megamenu-panel.is-open { opacity: 1; transform: translateY(0) scale(1); pointer-events: auto; }
        .megamenu-panel h3 {
            font-family: var(--font-display);
            font-weight: 700;
            font-size: 22px;
            margin: 0 0 4px;
            color: var(--fg-on-light);
        }
        .megamenu-panel .megamenu-sub { font-size: 13px; color: var(--fg-muted-light); margin: 0 0 18px; }
        .megamenu-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 18px; }
        .megamenu-col h4 {
            font-family: var(--font-body);
            font-size: 11px;
            font-weight: 800;
            text-transform: uppercase;
            letter-spacing: .18em;
            color: var(--accent-deep);
            margin: 0 0 10px;
            display: flex;
            align-items: center;
            gap: 6px;
        }
        .megamenu-col ul { list-style: none; padding: 0; margin: 0; }
        .megamenu-col li { margin-bottom: 8px; }
        .megamenu-col a {
            display: block;
            font-size: 14px;
            color: var(--fg-on-light);
            text-decoration: none;
            padding: 6px 10px;
            border-radius: 10px;
            transition: background .2s, transform .2s, color .2s;
        }
        .megamenu-col a:hover { background: var(--accent-soft); color: var(--accent-deep); transform: translateX(3px); }
        /* Bouton Boutique mis en avant (CTA) dans le mega-menu */
        .megamenu-col a.mm-cta {
            background: linear-gradient(120deg, var(--accent), var(--accent-deep));
            color: #fff;
            font-weight: 700;
            display: flex;
            align-items: center;
            gap: 7px;
            box-shadow: 0 5px 16px -5px color-mix(in srgb, var(--accent) 65%, transparent);
        }
        .megamenu-col a.mm-cta:hover {
            background: var(--accent-deep);
            color: #fff;
            transform: translateX(3px) scale(1.02);
        }

        /* v112 — Boutons SEO mis en avant en haut du méga-menu (Aire proche plage + Visiter Perpignan) */
        .megamenu-feature {
            display: grid;
            grid-template-columns: repeat(3, 1fr);
            gap: 12px;
            margin: 0 0 20px;
        }
        @media (max-width: 680px) { .megamenu-feature { grid-template-columns: 1fr; } }
        .mm-feature {
            display: flex;
            align-items: center;
            gap: 12px;
            padding: 13px 15px;
            border-radius: 14px;
            text-decoration: none;
            background: linear-gradient(135deg, color-mix(in srgb, var(--mint-dark) 13%, white), white 70%);
            border: 1px solid color-mix(in srgb, var(--mint-dark) 22%, white);
            box-shadow: 0 8px 22px -12px rgba(10,37,64,.3);
            transition: transform .2s, box-shadow .2s, border-color .2s;
        }
        .mm-feature:hover { transform: translateY(-2px); box-shadow: 0 14px 30px -12px rgba(10,37,64,.42); border-color: var(--mint-dark); }
        .mm-feature-ico { font-size: 26px; line-height: 1; flex: 0 0 auto; }
        .mm-feature-txt { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
        .mm-feature-ttl { font-family: var(--font-display); font-weight: 700; font-size: 14.5px; color: var(--fg-on-light); line-height: 1.2; }
        .mm-feature-sub { font-size: 11.5px; color: var(--fg-muted-light); line-height: 1.25; }

        /* v112 — Mini-bandeau "Notre engagement" en bas du méga-menu (ex-section site-wide) */
        .megamenu-engage {
            margin: 22px 0 0;
            padding: 18px 20px;
            border-radius: 16px;
            background:
                radial-gradient(circle at 0% 100%, color-mix(in srgb, var(--mint-dark) 16%, transparent), transparent 65%),
                color-mix(in srgb, var(--mint-dark) 7%, white);
            border: 1px solid color-mix(in srgb, var(--mint-dark) 16%, white);
            border-top: 3px solid var(--mint-dark);
        }
        .megamenu-engage .mm-engage-eyebrow {
            display: inline-flex; align-items: center; gap: 6px;
            font-family: var(--font-body);
            font-size: 10.5px; font-weight: 800; text-transform: uppercase; letter-spacing: .16em;
            color: var(--mint-dark); margin: 0 0 7px;
        }
        .megamenu-engage .mm-engage-eyebrow::before { content: '💙'; }
        .megamenu-engage .mm-engage-quote {
            font-family: var(--font-display);
            font-style: italic;
            font-size: 15.5px; line-height: 1.4; color: var(--fg-on-light); margin: 0 0 10px; text-wrap: balance;
        }
        .megamenu-engage .mm-engage-quote em { color: var(--mint-dark); font-style: italic; font-weight: 700; }
        .megamenu-engage .mm-engage-link {
            display: inline-flex; align-items: center; gap: 5px;
            font-size: 12.5px; font-weight: 700; color: var(--mint-dark); text-decoration: none;
            padding: 0; border-radius: 8px;
        }
        .megamenu-engage .mm-engage-link:hover { text-decoration: underline; transform: none; background: none; }

        /* Backdrop quand ouvert */
        .megamenu-backdrop {
            position: fixed;
            inset: 0;
            z-index: 58;
            background: rgba(10,37,64,.4);
            backdrop-filter: blur(3px);
            opacity: 0;
            pointer-events: none;
            transition: opacity .3s;
        }
        .megamenu-backdrop.is-open { opacity: 1; pointer-events: auto; }

        /* Sim panel intégré dans engagement (calculateur électrique) */
        .engagement-sim {
            margin-top: 28px;
            padding: 24px;
            border-radius: var(--radius-card);
            background: linear-gradient(135deg, rgba(16,185,129,.08) 0%, rgba(16,185,129,.02) 100%);
            border: 1px solid rgba(16,185,129,.2);
        }
        .engagement-sim h4 {
            font-family: var(--font-display);
            font-weight: 700;
            font-size: 22px;
            margin: 0 0 4px;
            color: var(--mint-dark);
            display: flex;
            align-items: center;
            gap: 10px;
        }
        .engagement-sim .sim-eyebrow { color: var(--mint-dark); }
        .engagement-sim .sim-row-head { color: var(--fg-on-light); }
        .engagement-sim .sim-total {
            background: linear-gradient(135deg, var(--night-700) 0%, var(--night-900) 100%);
            color: #fff;
        }

        /* Hide old reservation button area */
        .legacy-reserv { display: none !important; }

        /* === v4 — Cookies banner restyle (override JoomBall! / generic cookie modules) === */
        #jb-cookies-bar,
        #jb-banner,
        .joomball-banner,
        .cookies-banner-wrapper,
        [class*="jb-cookies"],
        [id*="jb-cookie"] {
            background: linear-gradient(135deg, var(--night-900) 0%, var(--night-700) 100%) !important;
            color: white !important;
            border: 0 !important;
            border-top: 4px solid var(--accent) !important;
            box-shadow: 0 -8px 24px rgba(10,37,64,.3) !important;
            font-family: var(--font-body) !important;
            padding: 18px 24px !important;
            border-radius: 20px 20px 0 0 !important;
        }
        #jb-cookies-bar a,
        #jb-banner a,
        [class*="jb-cookies"] a { color: var(--accent) !important; text-decoration: underline; }
        #jb-cookies-bar button,
        #jb-banner button,
        .jb-btn,
        .cookies-accept,
        [class*="jb-btn"] {
            background: linear-gradient(135deg, var(--accent), var(--accent-deep)) !important;
            color: var(--night-900) !important;
            font-weight: 800 !important;
            padding: 10px 20px !important;
            border-radius: var(--radius-pill) !important;
            border: 0 !important;
            box-shadow: 0 4px 0 var(--secondary), 0 8px 18px -4px rgba(255,166,43,.4) !important;
            transition: transform .2s !important;
            cursor: pointer !important;
        }
        #jb-cookies-bar button:hover,
        [class*="jb-btn"]:hover { transform: translateY(-2px); }

        /* === v5 — Cacher modules orphelins dans top-banner (le "Sainte Marie la Mer, un Village à la Plage" overlay sur le hero) === */
        .top-banner-zone {
            position: relative;
            z-index: 5;
            background: var(--bg-page);
            padding: 6px 0;
            text-align: center;
            font-size: 13px;
            color: var(--fg-muted-light);
        }
        .top-banner-zone:empty { display: none; }
        /* Si un module rend sans wrap, le forcer sur la page */
        body > [class*="moduletable"]:first-child,
        body > .helix-megamenu-wrapper:first-child {
            position: relative !important;
            z-index: 1 !important;
        }

        /* === v6 — Calculateur de séjour STANDALONE (grosse section riche) === */
        .section-calc-sejour {
            background: linear-gradient(135deg, var(--night-900) 0%, var(--night-700) 100%);
            color: white;
            padding: var(--section-py) 0;
            position: relative;
            overflow: hidden;
        }
        .section-calc-sejour::before {
            content: '';
            position: absolute;
            top: -50%; left: -10%;
            width: 60%; height: 200%;
            background: radial-gradient(ellipse, color-mix(in srgb, var(--accent) 18%, transparent), transparent 60%);
            animation: calcGlow 16s ease-in-out infinite;
            pointer-events: none;
        }
        .section-calc-sejour::after {
            content: '';
            position: absolute;
            bottom: -30%; right: -15%;
            width: 50%; height: 150%;
            background: radial-gradient(ellipse, color-mix(in srgb, var(--secondary) 14%, transparent), transparent 60%);
            animation: calcGlow 20s ease-in-out infinite reverse;
            pointer-events: none;
        }
        @keyframes calcGlow {
            0%, 100% { transform: translate(0,0); opacity: .8; }
            50%      { transform: translate(40px, -30px); opacity: 1; }
        }
        .section-calc-sejour .section-head { position: relative; z-index: 2; }
        .section-calc-sejour .eyebrow { color: var(--accent); }
        .section-calc-sejour .section-title { color: white; }
        .section-calc-sejour .section-title em { color: var(--accent); font-style: italic; }
        .section-calc-sejour .section-lead { color: rgba(255,255,255,.78); }
        .calc-sejour-grid {
            display: grid;
            grid-template-columns: 1fr 1.3fr;
            gap: 40px;
            margin-top: 40px;
            position: relative;
            z-index: 2;
        }
        @media (max-width: 900px) { .calc-sejour-grid { grid-template-columns: 1fr; } }
        .calc-sejour-info h3 {
            font-family: var(--font-display);
            font-weight: 700;
            font-size: clamp(24px, 2.6vw, 32px);
            color: white;
            margin: 0 0 18px;
        }
        .calc-sejour-info p { color: rgba(255,255,255,.75); line-height: 1.6; }
        .calc-sejour-info .key-points {
            list-style: none;
            padding: 0;
            margin: 22px 0;
        }
        .calc-sejour-info .key-points li {
            display: flex;
            gap: 14px;
            padding: 14px 0;
            border-bottom: 1px dashed rgba(255,255,255,.12);
        }
        .calc-sejour-info .key-points li:last-child { border-bottom: 0; }
        .calc-sejour-info .key-points .kp-icon {
            flex: 0 0 44px;
            width: 44px; height: 44px;
            background: linear-gradient(135deg, var(--accent), var(--accent-deep));
            border-radius: 12px;
            display: grid; place-items: center;
            color: var(--night-900);
            box-shadow: 0 4px 12px -3px rgba(255,166,43,.5);
        }
        .calc-sejour-info .key-points .kp-text strong { color: var(--accent); font-weight: 700; }
        .calc-sejour-info .key-points .kp-text { color: rgba(255,255,255,.88); }

        .calc-sejour-panel {
            background: rgba(255,255,255,.06);
            backdrop-filter: blur(16px);
            border: 1px solid rgba(255,255,255,.1);
            border-radius: var(--radius-card);
            padding: 32px;
            box-shadow: 0 24px 48px -16px rgba(0,0,0,.4);
        }
        .calc-sejour-panel .sim-row { color: white; }
        .calc-sejour-panel .sim-row-head { color: white; }
        .calc-sejour-panel .sim-row-head .v {
            background: var(--accent);
            color: var(--night-900);
            padding: 4px 12px;
            border-radius: var(--radius-pill);
            font-family: var(--font-display);
            font-weight: 900;
            font-size: 16px;
            min-width: 50px;
            text-align: center;
            display: inline-block;
        }
        .calc-sejour-panel input[type="range"] { accent-color: var(--accent); }
        .calc-sejour-total {
            margin-top: 28px;
            padding: 24px;
            background: linear-gradient(135deg, var(--accent) 0%, var(--accent-deep) 100%);
            border-radius: 18px;
            color: var(--night-900);
            text-align: center;
            box-shadow: 0 12px 28px -8px rgba(255,166,43,.5);
        }
        .calc-sejour-total .total-label {
            font-size: 12px;
            text-transform: uppercase;
            letter-spacing: .2em;
            font-weight: 800;
            opacity: .8;
        }
        .calc-sejour-total .total-value {
            font-family: var(--font-display);
            font-weight: 900;
            font-size: clamp(48px, 6vw, 72px);
            line-height: 1;
            margin: 4px 0;
        }
        .calc-sejour-total .total-sub {
            font-size: 13px;
            opacity: .75;
        }
        .calc-sejour-cta {
            display: inline-flex;
            align-items: center;
            gap: 8px;
            margin-top: 16px;
            padding: 10px 22px;
            background: var(--night-900);
            color: white !important;
            border-radius: var(--radius-pill);
            text-decoration: none;
            font-weight: 700;
            transition: transform .2s;
        }
        .calc-sejour-cta:hover { transform: translateY(-2px); }

        /* === v7 — Scroll-reveal (uniquement quand body.js-ready + section pas encore vue) === */
        body.js-ready .reveal-on-scroll:not(.is-revealed) {
            opacity: 0;
            transform: translateY(30px);
            transition: opacity .8s cubic-bezier(.22,1,.36,1), transform .8s cubic-bezier(.22,1,.36,1);
        }
        .reveal-on-scroll.is-revealed {
            opacity: 1;
            transform: translateY(0);
            transition: opacity .8s cubic-bezier(.22,1,.36,1), transform .8s cubic-bezier(.22,1,.36,1);
        }

        /* === v7 bis — Sticky mobile phone bar (apparait au scroll sur mobile) === */
        .sticky-mobile-phone {
            position: fixed;
            bottom: 0; left: 0; right: 0;
            z-index: 55;
            background: linear-gradient(135deg, var(--accent), var(--accent-deep));
            color: var(--night-900);
            padding: 12px 16px;
            display: none;
            align-items: center;
            justify-content: center;
            gap: 10px;
            font-weight: 800;
            text-decoration: none;
            box-shadow: 0 -4px 16px rgba(0,0,0,.2);
            transform: translateY(100%);
            transition: transform .35s cubic-bezier(.22,1,.36,1);
        }
        .sticky-mobile-phone.is-visible { transform: translateY(0); }
        @media (max-width: 640px) {
            .sticky-mobile-phone { display: flex; }
            body { padding-bottom: 60px; }
        }

        /* === v8 — Map embed section === */
        .section-map {
            padding: 40px 0;
        }
        .map-card {
            border-radius: var(--radius-card);
            overflow: hidden;
            box-shadow: var(--shadow-card-hi);
            border: 2px solid var(--accent);
            position: relative;
            background: var(--card-bg);
        }
        .map-card iframe {
            display: block;
            width: 100%;
            height: 420px;
            border: 0;
        }
        .map-card .map-info {
            padding: 22px 28px;
            background: var(--card-bg);
            display: flex;
            gap: 18px;
            align-items: center;
            flex-wrap: wrap;
            justify-content: space-between;
        }
        .map-card .map-info .map-addr {
            font-family: var(--font-display);
            font-weight: 700;
            font-size: 18px;
            color: var(--fg-on-light);
            display: flex;
            align-items: center;
            gap: 10px;
        }
        .map-card .map-info .map-addr [data-icon] { color: var(--accent-deep); }

        /* === v9 — Performance + a11y === */
        @media (prefers-reduced-motion: reduce) {
            *, *::before, *::after {
                animation-duration: 0.01ms !important;
                animation-iteration-count: 1 !important;
                transition-duration: 0.01ms !important;
                scroll-behavior: auto !important;
            }
        }
        :focus-visible {
            outline: 3px solid var(--accent);
            outline-offset: 3px;
            border-radius: 4px;
        }
        /* v116 — `img { content-visibility: auto; }` RETIRÉ : faisait apparaître des images
           blanches aléatoires sous la ligne de flottaison (galeries v113, blocs esp50…), surtout iOS.
           Le lazy-loading natif suffit. */
        /* v52 — Responsive : médias jamais plus larges que leur conteneur (fix scroll horizontal mobile, audit 06/2026) */
        img, svg, video, iframe { max-width: 100%; }
        img { height: auto; }

        /* === v10 — Polish final === */
        .hero-title { text-shadow: 0 2px 18px rgba(0,0,0,.25); }
        .megamenu-fab::after {
            content: '';
            position: absolute;
            inset: -8px;
            border-radius: 50%;
            border: 2px solid var(--accent);
            opacity: .4;
            animation: megamenuRing 2.6s ease-out infinite;
            pointer-events: none;
        }
        @keyframes megamenuRing {
            0%   { opacity: .6; transform: scale(.9); }
            100% { opacity: 0; transform: scale(1.4); }
        }
        /* v111 — Hint pill pour first-timer (audit Jordan) */
        .megamenu-fab-hint {
            position: fixed;
            z-index: 59; /* sous la FAB (60) mais au-dessus du contenu */
            bottom: 28px; /* aligné avec le centre de la FAB (FAB bottom 18 + height 64 / 2 - hint height / 2) */
            right: 92px;  /* à gauche de la FAB sur mobile */
            background: white;
            color: var(--fg-on-light, #0a2540);
            padding: 10px 16px;
            border-radius: 999px;
            font-size: 13px;
            line-height: 1.2;
            font-weight: 500;
            box-shadow: 0 6px 18px -4px rgba(10,37,64,.22), 0 0 0 1px rgba(10,37,64,.06);
            opacity: 0;
            transform: translateX(8px);
            pointer-events: none;
            transition: opacity .35s cubic-bezier(.22,1,.36,1), transform .35s cubic-bezier(.22,1,.36,1);
            white-space: nowrap;
        }
        .megamenu-fab-hint.is-visible { opacity: 1; transform: translateX(0); }
        .megamenu-fab-hint strong { font-weight: 800; color: var(--accent-deep, #B8860B); }
        .megamenu-fab-hint-arrow {
            position: absolute;
            right: -6px;
            top: 50%;
            transform: translateY(-50%) rotate(45deg);
            width: 12px;
            height: 12px;
            background: white;
            box-shadow: 2px -2px 0 0 rgba(10,37,64,.06);
        }
        /* Desktop : la FAB est à gauche -> hint à droite */
        @media (min-width: 901px) {
            .megamenu-fab-hint { right: auto; left: 92px; transform: translateX(-8px); }
            .megamenu-fab-hint.is-visible { transform: translateX(0); }
            .megamenu-fab-hint-arrow { right: auto; left: -6px; box-shadow: -2px 2px 0 0 rgba(10,37,64,.06); }
        }
        @media (prefers-reduced-motion: reduce) {
            .megamenu-fab-hint { transition: opacity .2s linear; transform: none !important; }
        }
        /* Carte stat-card hover lift */
        .stat-card { transition: transform .3s cubic-bezier(.34,1.56,.64,1), box-shadow .3s; }
        .stat-card:hover { transform: translateY(-6px) scale(1.02); box-shadow: var(--shadow-card-hi); }
        .bike-card { transition: transform .3s cubic-bezier(.34,1.56,.64,1); }
        .bike-card:hover { transform: translateY(-4px); }

        /* === v11 — Bouteille à la mer === */
        .section-bouteille {
            background:
                radial-gradient(circle at 20% 20%, color-mix(in srgb, #BAE6FD 40%, transparent), transparent 50%),
                radial-gradient(circle at 80% 80%, color-mix(in srgb, var(--accent) 25%, transparent), transparent 50%),
                radial-gradient(circle at 50% 50%, color-mix(in srgb, #67E8F9 18%, transparent), transparent 60%),
                var(--bg-page);
            padding: var(--section-py) 0;
            text-align: center;
            position: relative;
            overflow: hidden;
        }
        .section-bouteille .bottle-icon {
            font-size: 72px;
            display: inline-block;
            animation: bottleSway 7s ease-in-out infinite;
            margin-bottom: 8px;
        }
        @keyframes bottleSway {
            0%, 100% { transform: rotate(-6deg) translateY(0); }
            50%      { transform: rotate(8deg) translateY(-8px); }
        }
        .section-bouteille .eyebrow-hand {
            font-family: var(--font-hand);
            font-size: clamp(24px, 3vw, 36px);
            color: var(--secondary);
            line-height: 1;
            margin-bottom: 8px;
        }
        .section-bouteille h2 {
            font-family: var(--font-hand);
            font-weight: 700;
            font-size: clamp(40px, 6vw, 72px);
            color: var(--fg-on-light);
            line-height: 1.05;
            margin: 0 auto 16px;
            max-width: 800px;
            text-wrap: balance;
        }
        .section-bouteille .bottle-lead {
            max-width: 580px;
            margin: 0 auto 28px;
            font-size: clamp(15px, 1.4vw, 17px);
            color: var(--fg-muted-light);
            line-height: 1.6;
        }
        .bottle-form {
            display: flex;
            gap: 10px;
            max-width: 480px;
            margin: 0 auto;
            flex-wrap: wrap;
            justify-content: center;
        }
        .bottle-form input[type="email"] {
            flex: 1;
            min-width: 220px;
            padding: 14px 20px;
            border-radius: var(--radius-pill);
            border: 2px solid var(--card-border);
            background: white;
            font-size: 15px;
            font-family: var(--font-body);
            outline: none;
            transition: border-color .2s;
        }
        .bottle-form input[type="email"]:focus { border-color: var(--accent); }
        .bottle-form input[aria-invalid="true"] { border-color: #d23a2f; background: #fff5f4; }
        .bottle-form-err {
            flex-basis: 100%;
            margin: 8px 0 0;
            padding: 10px 14px;
            background: #fff5f4;
            border: 1px solid #f5c2bd;
            border-radius: 10px;
            color: #a02218;
            font-size: 13px;
            line-height: 1.4;
            text-align: left;
        }
        .bottle-form-err strong { color: #a02218; }
        .bottle-form-ok {
            flex-basis: 100%;
            margin: 8px 0 0;
            padding: 12px 16px;
            background: #effaf3;
            border: 1px solid #abe5c4;
            border-radius: 10px;
            color: #0f7a52;
            font-size: 14px;
            font-weight: 600;
            line-height: 1.4;
            text-align: left;
        }
        .bottle-form button {
            padding: 14px 24px;
            border-radius: var(--radius-pill);
            border: 0;
            background: linear-gradient(135deg, var(--accent), var(--accent-deep));
            color: var(--night-900);
            font-weight: 800;
            font-size: 15px;
            cursor: pointer;
            box-shadow: 0 6px 0 var(--secondary), 0 12px 22px -6px rgba(255,166,43,.45);
            transition: transform .2s;
            font-family: var(--font-body);
            display: inline-flex;
            align-items: center;
            gap: 8px;
        }
        .bottle-form button:hover { transform: translateY(-2px); }
        /* === Newsletter en modale (acces mega-menu) === */
        .bottle-modal{position:fixed;inset:0;z-index:100000;display:none;align-items:center;justify-content:center;padding:18px;}
        .bottle-modal.is-open{display:flex;}
        .bottle-modal-backdrop{position:absolute;inset:0;background:rgba(10,37,64,.55);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);}
        .bottle-modal-box{position:relative;z-index:1;width:100%;max-width:560px;max-height:90vh;overflow:auto;border-radius:24px;box-shadow:0 30px 80px rgba(0,0,0,.45);}
        .bottle-modal-close{position:absolute;top:12px;right:14px;z-index:3;width:38px;height:38px;border:0;border-radius:50%;background:rgba(255,255,255,.92);color:#0a2540;font-size:24px;line-height:1;cursor:pointer;box-shadow:0 4px 12px rgba(0,0,0,.18);}
        .bottle-modal .section-bouteille{margin:0 !important;border-radius:24px;min-height:0;}
        .bottle-disclaimer { font-size: 12px; color: var(--fg-muted-light); margin-top: 14px; }

        /* === v12 — WhatsApp + Messenger floating === */
        .fab-whatsapp,
        .fab-messenger {
            position: fixed;
            right: 86px;
            z-index: 56;
            width: 52px;
            height: 52px;
            border-radius: 50%;
            display: grid;
            place-items: center;
            color: white;
            text-decoration: none;
            box-shadow: 0 8px 24px rgba(0,0,0,.25);
            transition: transform .25s cubic-bezier(.34,1.56,.64,1), box-shadow .25s;
        }
        .fab-whatsapp {
            bottom: 18px;
            background: linear-gradient(135deg, #25D366, #128C7E);
        }
        .fab-messenger {
            bottom: 78px;
            background: linear-gradient(135deg, #00B2FF, #006AFF);
        }
        .fab-whatsapp:hover,
        .fab-messenger:hover { transform: scale(1.12) translateY(-2px); }
        .fab-whatsapp svg, .fab-messenger svg { width: 28px; height: 28px; fill: currentColor; }
        @media (max-width: 640px) {
            .fab-whatsapp, .fab-messenger { right: 14px; }
            .fab-whatsapp { bottom: 80px; }
            .fab-messenger { bottom: 140px; }
        }

        /* === v13 — Météo 3 jours === */
        .section-weather {
            background: linear-gradient(135deg, color-mix(in srgb, var(--accent-soft) 50%, white) 0%, var(--bg-page) 100%);
            padding: 60px 0;
        }
        .weather-3d-grid {
            display: grid;
            grid-template-columns: repeat(3, 1fr);
            gap: 18px;
            margin-top: 28px;
        }
        @media (max-width: 640px) { .weather-3d-grid { grid-template-columns: 1fr; } }
        .weather-day-card {
            background: var(--card-bg);
            border: 1px solid var(--card-border);
            border-radius: var(--radius-card);
            padding: 24px;
            text-align: center;
            box-shadow: var(--shadow-card);
            transition: transform .3s cubic-bezier(.34,1.56,.64,1), box-shadow .3s;
            position: relative;
            overflow: hidden;
        }
        .weather-day-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-card-hi); }
        .weather-day-card::before {
            content: '';
            position: absolute;
            top: 0; left: 0; right: 0;
            height: 4px;
            background: linear-gradient(90deg, var(--accent), var(--accent-deep));
        }
        .weather-day-name {
            font-family: var(--font-display);
            font-weight: 700;
            font-size: 18px;
            color: var(--fg-on-light);
            margin: 8px 0 4px;
            text-transform: capitalize;
        }
        .weather-day-date { font-size: 12px; color: var(--fg-muted-light); margin-bottom: 14px; }
        .weather-day-icon {
            font-size: 48px;
            line-height: 1;
            display: block;
            margin: 8px 0;
            animation: weatherFloat 4s ease-in-out infinite;
        }
        @keyframes weatherFloat {
            0%, 100% { transform: translateY(0); }
            50% { transform: translateY(-6px); }
        }
        .weather-day-temps {
            font-family: var(--font-display);
            font-weight: 700;
            font-size: 26px;
            color: var(--accent-deep);
            margin: 8px 0;
        }
        .weather-day-temps .max { color: var(--secondary); }
        .weather-day-temps .sep { opacity: .35; margin: 0 6px; }
        .weather-day-desc { font-size: 13px; color: var(--fg-muted-light); margin-top: 6px; min-height: 32px; }

        /* === v14 — Galerie photo placeholder amélioré === */
        .section-gallery-hint {
            padding: 60px 0;
        }
        .gallery-hint-grid {
            display: grid;
            grid-template-columns: repeat(4, 1fr);
            gap: 12px;
            margin-top: 28px;
        }
        @media (max-width: 900px) { .gallery-hint-grid { grid-template-columns: repeat(2, 1fr); } }
        @media (max-width: 480px) { .gallery-hint-grid { grid-template-columns: 1fr; } }
        .gallery-tile {
            aspect-ratio: 4/3;
            border-radius: 18px;
            background:
                linear-gradient(135deg, var(--accent-soft), color-mix(in srgb, var(--accent) 18%, white)),
                var(--bg-page);
            background-size: cover;
            position: relative;
            overflow: hidden;
            display: grid;
            place-items: center;
            text-align: center;
            padding: 20px;
            transition: transform .35s cubic-bezier(.34,1.56,.64,1), box-shadow .35s;
            cursor: pointer;
            border: 1px solid var(--card-border);
        }
        .gallery-tile:hover {
            transform: translateY(-6px) scale(1.02);
            box-shadow: var(--shadow-card-hi);
        }
        .gallery-tile::before {
            content: '';
            position: absolute;
            inset: 0;
            background: repeating-linear-gradient(
                45deg,
                rgba(255,255,255,.3) 0px, rgba(255,255,255,.3) 8px,
                transparent 8px, transparent 16px
            );
            opacity: .4;
            transition: opacity .3s;
        }
        .gallery-tile:hover::before { opacity: 0; }
        .gallery-tile-label {
            position: relative;
            z-index: 2;
            font-family: var(--font-display);
            font-weight: 700;
            color: var(--accent-deep);
            font-size: 15px;
            line-height: 1.2;
            background: white;
            padding: 8px 14px;
            border-radius: 10px;
            box-shadow: 0 2px 8px rgba(0,0,0,.06);
        }
        .gallery-tile-icon {
            font-size: 28px;
            position: relative;
            z-index: 2;
            display: block;
            margin-bottom: 8px;
        }
        .gallery-tile.featured {
            grid-column: span 2;
            grid-row: span 2;
            aspect-ratio: 1;
        }
        @media (max-width: 900px) {
            .gallery-tile.featured { grid-column: span 2; grid-row: auto; aspect-ratio: 4/3; }
        }

        /* === v16 — Vagues SVG entre sections === */
        .wave-separator {
            position: relative;
            margin-top: -1px;
            margin-bottom: -1px;
            line-height: 0;
            overflow: hidden;
            pointer-events: none;
        }
        .wave-separator svg {
            display: block;
            width: 100%;
            height: 60px;
        }
        @media (max-width: 640px) { .wave-separator svg { height: 36px; } }

        /* === v17 — Compteurs animés === */
        .stat-value[data-counter] {
            position: relative;
            display: inline-block;
        }
        .stat-card { position: relative; }
        .stat-card.counted .stat-value { animation: countPop .6s cubic-bezier(.34,1.56,.64,1); }
        @keyframes countPop {
            0%   { transform: scale(.85); }
            60%  { transform: scale(1.08); }
            100% { transform: scale(1); }
        }

        /* === v18 — Notre histoire (timeline) === */
        .section-histoire {
            background: var(--bg-page);
            padding: var(--section-py) 0;
            position: relative;
            overflow: hidden;
        }
        .histoire-timeline {
            position: relative;
            max-width: 880px;
            margin: 48px auto 0;
            padding: 20px 0;
        }
        .histoire-timeline::before {
            content: '';
            position: absolute;
            top: 0; bottom: 0; left: 50%;
            width: 3px;
            background: linear-gradient(180deg, var(--accent) 0%, var(--accent-deep) 50%, var(--secondary) 100%);
            transform: translateX(-50%);
            border-radius: 2px;
        }
        .histoire-item {
            position: relative;
            display: grid;
            grid-template-columns: 1fr 60px 1fr;
            gap: 24px;
            margin-bottom: 36px;
            align-items: center;
        }
        .histoire-item:nth-child(even) { direction: rtl; }
        .histoire-item:nth-child(even) .histoire-content { direction: ltr; }
        .histoire-content {
            background: var(--card-bg);
            border: 1px solid var(--card-border);
            border-radius: var(--radius-card);
            padding: 22px 26px;
            box-shadow: var(--shadow-card);
            position: relative;
            transition: transform .25s cubic-bezier(.34,1.56,.64,1);
        }
        .histoire-content:hover { transform: translateY(-3px); }
        .histoire-content h3 {
            font-family: var(--font-display);
            font-weight: 700;
            font-size: 22px;
            color: var(--accent-deep);
            margin: 0 0 8px;
        }
        .histoire-content p { margin: 0; color: var(--fg-muted-light); font-size: 14px; line-height: 1.55; }
        .histoire-year {
            display: grid;
            place-items: center;
            width: 60px;
            height: 60px;
            background: linear-gradient(135deg, var(--accent), var(--accent-deep));
            color: var(--night-900);
            border-radius: 50%;
            font-family: var(--font-display);
            font-weight: 900;
            font-size: 14px;
            position: relative;
            z-index: 2;
            box-shadow: 0 4px 12px -3px rgba(255,166,43,.5);
            border: 4px solid var(--bg-page);
        }
        .histoire-spacer { /* empty side */ }
        @media (max-width: 720px) {
            .histoire-timeline::before { left: 28px; }
            .histoire-item {
                grid-template-columns: 56px 1fr;
                gap: 18px;
                direction: ltr !important;
            }
            .histoire-item .histoire-spacer { display: none; }
            .histoire-year { width: 56px; height: 56px; font-size: 13px; }
        }

        /* === v19 — Badges de confiance / certifications === */
        .section-trust {
            padding: 60px 0;
            background: linear-gradient(135deg, color-mix(in srgb, var(--accent-soft) 35%, white), var(--bg-page));
        }
        .trust-grid {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
            gap: 16px;
            margin-top: 28px;
        }
        .trust-badge {
            background: white;
            border-radius: 18px;
            padding: 22px 18px;
            text-align: center;
            box-shadow: var(--shadow-card);
            border: 1px solid var(--card-border);
            transition: transform .3s cubic-bezier(.34,1.56,.64,1), box-shadow .3s;
            cursor: default;
        }
        .trust-badge:hover {
            transform: translateY(-6px) rotate(-1.5deg);
            box-shadow: var(--shadow-card-hi);
        }
        .trust-badge:nth-child(even):hover { transform: translateY(-6px) rotate(1.5deg); }
        .trust-icon {
            font-size: 38px;
            line-height: 1;
            display: block;
            margin-bottom: 10px;
        }
        .trust-title {
            font-family: var(--font-display);
            font-weight: 700;
            font-size: 15px;
            color: var(--fg-on-light);
            margin-bottom: 4px;
        }
        .trust-sub {
            font-size: 12px;
            color: var(--fg-muted-light);
            line-height: 1.4;
        }

        /* === v20 — Polish final === */
        .hero-pills .pill { transition: transform .25s cubic-bezier(.34,1.56,.64,1), box-shadow .2s; }
        .hero-pills .pill:hover { transform: translateY(-3px) scale(1.05); box-shadow: 0 8px 16px -4px rgba(10,37,64,.15); }
        .tarif-card { transition: transform .3s cubic-bezier(.34,1.56,.64,1), box-shadow .3s; }
        .tarif-card:hover { transform: translateY(-6px); box-shadow: var(--shadow-card-hi); }
        .tarif-card.featured { transition: transform .3s cubic-bezier(.34,1.56,.64,1), box-shadow .3s; }
        .tarif-card.featured:hover { transform: scale(1.06) translateY(-4px); }
        .faq-item summary { cursor: pointer; transition: color .2s; }
        .faq-item summary:hover { color: var(--accent-deep); }
        .megamenu-fab:focus-visible { outline: 3px solid white; outline-offset: 3px; }

        /* === v21 — Premier voyage / Réassurance débutants === */
        .section-premier {
            background:
                radial-gradient(ellipse at 30% 20%, color-mix(in srgb, var(--secondary) 18%, transparent), transparent 50%),
                radial-gradient(ellipse at 70% 80%, color-mix(in srgb, var(--accent) 14%, transparent), transparent 50%),
                var(--bg-page);
            padding: var(--section-py) 0;
        }
        .premier-grid {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 40px;
            align-items: center;
            margin-top: 40px;
        }
        @media (max-width: 900px) { .premier-grid { grid-template-columns: 1fr; } }
        .premier-visual {
            background: linear-gradient(135deg, var(--accent-soft), color-mix(in srgb, var(--secondary) 20%, white));
            border-radius: var(--radius-card);
            aspect-ratio: 4/3;
            display: grid;
            place-items: center;
            position: relative;
            overflow: hidden;
            box-shadow: var(--shadow-card-hi);
        }
        .premier-visual::before {
            content: '🚐';
            font-size: 180px;
            position: absolute;
            top: 50%; left: 50%;
            transform: translate(-50%, -50%);
            opacity: .9;
            animation: premierBounce 4s ease-in-out infinite;
        }
        @keyframes premierBounce {
            0%, 100% { transform: translate(-50%, -50%) rotate(-3deg); }
            50%      { transform: translate(-50%, -55%) rotate(3deg); }
        }
        .premier-visual::after {
            content: '';
            position: absolute;
            inset: 0;
            background:
                radial-gradient(circle at 20% 80%, color-mix(in srgb, white 60%, transparent) 0%, transparent 30%),
                radial-gradient(circle at 80% 20%, color-mix(in srgb, white 50%, transparent) 0%, transparent 25%);
        }
        .premier-content .premier-tag {
            display: inline-flex;
            align-items: center;
            gap: 6px;
            background: var(--secondary);
            color: white;
            padding: 6px 14px;
            border-radius: var(--radius-pill);
            font-size: 11px;
            font-weight: 800;
            text-transform: uppercase;
            letter-spacing: .15em;
            margin-bottom: 14px;
        }
        .premier-content h2 {
            font-family: var(--font-display);
            font-weight: 700;
            font-size: clamp(28px, 3.5vw, 44px);
            color: var(--fg-on-light);
            line-height: 1.1;
            margin: 0 0 16px;
        }
        .premier-content h2 em { color: var(--secondary); font-style: italic; }
        .premier-checklist {
            list-style: none;
            padding: 0;
            margin: 24px 0;
        }
        .premier-checklist li {
            display: flex;
            gap: 14px;
            padding: 14px 0;
            border-bottom: 1px solid var(--card-border);
            font-size: 15px;
            color: var(--fg-on-light);
        }
        .premier-checklist li:last-child { border-bottom: 0; }
        .premier-checklist li::before {
            content: '✓';
            flex: 0 0 28px;
            width: 28px; height: 28px;
            background: linear-gradient(135deg, var(--mint), var(--mint-dark));
            color: white;
            border-radius: 50%;
            display: inline-grid;
            place-items: center;
            font-weight: 900;
            font-size: 14px;
            box-shadow: 0 4px 10px -3px rgba(16,185,129,.4);
        }
        .premier-checklist li strong { color: var(--secondary); }

        /* === v22 — Hub Avis Google avec extraits === */
        .section-avis-hub {
            background: var(--bg-section-alt);
            padding: var(--section-py) 0;
        }
        .avis-cards-grid {
            display: grid;
            grid-template-columns: repeat(3, 1fr);
            gap: 22px;
            margin-top: 36px;
        }
        @media (max-width: 900px) { .avis-cards-grid { grid-template-columns: 1fr; } }
        .avis-card {
            background: white;
            border-radius: var(--radius-card);
            padding: 26px 24px;
            box-shadow: var(--shadow-card);
            border: 1px solid var(--card-border);
            position: relative;
            transition: transform .3s cubic-bezier(.34,1.56,.64,1), box-shadow .3s;
            display: flex;
            flex-direction: column;
            gap: 14px;
        }
        .avis-card:hover { transform: translateY(-6px); box-shadow: var(--shadow-card-hi); }
        .avis-card::before {
            content: '"';
            position: absolute;
            top: -16px; right: 16px;
            font-family: var(--font-display);
            font-size: 96px;
            font-weight: 900;
            color: var(--accent);
            opacity: .25;
            line-height: 1;
        }
        .avis-card-header {
            display: flex;
            align-items: center;
            gap: 12px;
        }
        .avis-author {
            width: 44px; height: 44px;
            border-radius: 50%;
            background: linear-gradient(135deg, var(--accent), var(--accent-deep));
            display: grid;
            place-items: center;
            color: var(--night-900);
            font-family: var(--font-display);
            font-weight: 900;
            font-size: 16px;
            flex: 0 0 44px;
        }
        .avis-meta { flex: 1; }
        .avis-name { font-weight: 700; font-size: 14px; color: var(--fg-on-light); }
        .avis-date { font-size: 12px; color: var(--fg-muted-light); }
        .avis-stars { color: #FFC107; letter-spacing: 2px; font-size: 16px; }
        .avis-text {
            font-style: italic;
            color: var(--fg-on-light);
            line-height: 1.55;
            font-size: 14px;
            flex: 1;
        }
        .avis-google-logo {
            font-size: 11px;
            color: var(--fg-muted-light);
            display: flex;
            align-items: center;
            gap: 6px;
            margin-top: 8px;
            padding-top: 12px;
            border-top: 1px dashed var(--card-border);
        }
        .avis-google-logo::before {
            content: 'G';
            display: inline-grid;
            place-items: center;
            width: 18px; height: 18px;
            background: linear-gradient(135deg, #4285F4, #34A853, #FBBC05, #EA4335);
            color: white;
            border-radius: 50%;
            font-weight: 900;
            font-size: 11px;
        }

        /* === v23 — Vidéos YouTubers embed === */
        .section-videos {
            padding: var(--section-py) 0;
            background:
                linear-gradient(180deg, rgba(10,37,64,0) 0%, var(--night-900) 50%, rgba(10,37,64,0) 100%),
                var(--bg-page);
        }
        .videos-bg-wrap {
            background: linear-gradient(135deg, var(--night-900), var(--night-700));
            padding: var(--section-py) 0;
            color: white;
            position: relative;
            overflow: hidden;
        }
        .videos-bg-wrap .section-title { color: white; }
        .videos-bg-wrap .section-title em { color: var(--accent); }
        .videos-bg-wrap .eyebrow { color: var(--accent); }
        .videos-bg-wrap .section-lead { color: rgba(255,255,255,.75); }
        .videos-grid {
            display: grid;
            grid-template-columns: 1fr 1fr 1fr;
            gap: 18px;
            margin-top: 32px;
        }
        @media (max-width: 900px) { .videos-grid { grid-template-columns: 1fr; } }
        .video-card {
            border-radius: 18px;
            overflow: hidden;
            background: rgba(255,255,255,.06);
            border: 1px solid rgba(255,255,255,.12);
            transition: transform .3s cubic-bezier(.34,1.56,.64,1), box-shadow .3s;
            position: relative;
        }
        .video-card:hover { transform: translateY(-6px); box-shadow: 0 20px 40px -12px rgba(0,0,0,.4); }
        .video-thumb {
            aspect-ratio: 16/9;
            background: linear-gradient(135deg, var(--night-700), var(--night-900));
            position: relative;
            overflow: hidden;
            cursor: pointer;
            display: grid;
            place-items: center;
        }
        .video-thumb::before {
            content: '';
            position: absolute;
            inset: 0;
            background:
                linear-gradient(180deg, transparent 0%, rgba(0,0,0,.5) 100%),
                radial-gradient(circle, color-mix(in srgb, var(--accent) 30%, transparent), transparent 60%);
        }
        .video-play-btn {
            width: 64px; height: 64px;
            border-radius: 50%;
            background: linear-gradient(135deg, var(--accent), var(--accent-deep));
            box-shadow: 0 8px 24px rgba(0,0,0,.4);
            display: grid;
            place-items: center;
            color: var(--night-900);
            font-size: 26px;
            position: relative;
            z-index: 2;
            transition: transform .25s cubic-bezier(.34,1.56,.64,1);
        }
        .video-card:hover .video-play-btn { transform: scale(1.15); }
        .video-info {
            padding: 16px 18px;
        }
        .video-info h3 {
            font-family: var(--font-display);
            font-weight: 700;
            font-size: 16px;
            color: white;
            margin: 0 0 4px;
            line-height: 1.3;
        }
        .video-info .video-author {
            font-size: 12px;
            color: rgba(255,255,255,.6);
        }
        .video-info .video-author::before { content: '▶ '; color: var(--accent); }
        /* Vidéos fusionnées dans la galerie (fond clair) : texte lisible */
        .section-gallery-hint .video-info h3 { color: #0a2540; }
        .section-gallery-hint .video-info .video-author { color: #5b6b7a; }

        /* === v24 — Bandeau actualités/promo en haut === */
        .news-ticker {
            background: linear-gradient(90deg, var(--accent), var(--accent-deep), var(--accent));
            background-size: 200% 100%;
            color: var(--night-900);
            padding: 10px 0;
            font-size: 13px;
            font-weight: 700;
            position: relative;
            z-index: 50;
            animation: tickerGradient 6s linear infinite;
        }
        @keyframes tickerGradient {
            0% { background-position: 0% 50%; }
            100% { background-position: 200% 50%; }
        }
        .news-ticker .container {
            display: flex;
            align-items: center;
            gap: 14px;
            justify-content: center;
            flex-wrap: wrap;
        }
        .news-ticker .nt-icon {
            display: inline-block;
            animation: tickerBell 2s ease-in-out infinite;
        }
        @keyframes tickerBell {
            0%, 100% { transform: rotate(0); }
            10%, 30% { transform: rotate(-12deg); }
            20%, 40% { transform: rotate(12deg); }
        }
        .news-ticker a {
            color: var(--night-900);
            text-decoration: underline;
            font-weight: 900;
        }
        .news-ticker .nt-close {
            margin-left: auto;
            background: transparent;
            border: 0;
            color: var(--night-900);
            cursor: pointer;
            font-size: 18px;
            padding: 0 6px;
            line-height: 1;
        }

        /* === v25 — Polish v25 (extras) === */
        .section-head em { transition: color .3s; }
        .section-head:hover em { color: var(--secondary); }
        details[open] summary { color: var(--accent-deep); }
        /* Sélection texte custom */
        ::selection { background: var(--accent); color: var(--night-900); }
        /* Scrollbar custom (webkit) */
        ::-webkit-scrollbar { width: 12px; height: 12px; }
        ::-webkit-scrollbar-track { background: var(--bg-section-alt); }
        ::-webkit-scrollbar-thumb {
            background: linear-gradient(180deg, var(--accent), var(--accent-deep));
            border-radius: 6px;
            border: 2px solid var(--bg-section-alt);
        }
        ::-webkit-scrollbar-thumb:hover { background: var(--secondary); }

        /* === v26 — HEADER XL + LOGO XL + brand-tag à la ligne === */
        .site-header { padding: 14px 0; }
        .brand-xl { gap: 18px !important; align-items: center; }
        .brand-logo-xl {
            width: 76px !important;
            height: 76px !important;
            min-width: 76px !important;
        }
        @media (min-width: 1100px) {
            .brand-logo-xl { width: 84px !important; height: 84px !important; min-width: 84px !important; }
        }
        @media (max-width: 700px) {
            .brand-logo-xl { width: 56px !important; height: 56px !important; min-width: 56px !important; border-width: 2px !important; }
        }
        .brand-xl .brand-text { display: flex; flex-direction: column; gap: 2px; line-height: 1.15; }
        .brand-xl .brand-eyebrow {
            font-family: var(--font-body);
            font-size: 11px;
            font-weight: 800;
            text-transform: uppercase;
            letter-spacing: .18em;
            color: var(--fg-muted-light);
            display: block;
        }
        .brand-xl .brand-name {
            font-family: var(--font-display);
            font-weight: 700;
            font-size: clamp(20px, 1.9vw, 26px);
            color: var(--fg-on-light);
            display: block;
            line-height: 1.1;
        }
        .brand-xl .brand-tag-newline {
            display: block;
            font-family: var(--font-hand);
            font-size: clamp(14px, 1.2vw, 16px);
            color: var(--secondary);
            font-style: italic;
            margin-top: 4px;
            line-height: 1.2;
        }
        @media (max-width: 700px) {
            .brand-xl .brand-name { font-size: 17px; }
            .brand-xl .brand-tag-newline { font-size: 13px; }
            .brand-xl .brand-eyebrow { font-size: 10px; letter-spacing: .14em; }
        }

        /* Nav XL */
        .site-header .nav { gap: 4px; }
        .site-header .nav a {
            font-size: 15px !important;
            font-weight: 600;
            padding: 8px 14px;
            border-radius: 10px;
            transition: background .2s, color .2s;
        }
        .site-header .nav a:hover { background: var(--accent-soft); color: var(--accent-deep); }
        @media (max-width: 980px) { .site-header .nav a { font-size: 13px !important; padding: 6px 10px; } }

        /* Phone CTA XL */
        .header-actions .tel-as-cta { padding: 12px 22px !important; }
        .header-actions .tel-as-cta .tel-number { font-size: 19px !important; }
        .header-actions .tel-as-cta [data-icon] { font-size: 22px; }
        @media (max-width: 700px) {
            .header-actions .tel-as-cta { padding: 10px 16px !important; }
            .header-actions .tel-as-cta .tel-number { font-size: 15px !important; }
        }

        /* === v26 — Tags Joomla "Détails / Mis à jour / aire camping-car..." → carte discrète stylée === */
        /* Cible le contenu de l'article rendu par jdoc:include type="component" sur la home */
        .container .article-info,
        .container .tags-information,
        .container .com-content-article__info,
        .container .com-content-article__tags,
        .container dl.article-info,
        .container .article-info-term {
            font-size: 12px !important;
            color: var(--fg-muted-light) !important;
        }
        /* Wrapper le contenu component dans un style sobre */
        body > main .component,
        section[data-screen-label="01 Hero"] + jdoc-component, /* placeholder */
        .component-wrapper-home {
            max-width: 1240px;
            margin: 0 auto;
            padding: 18px 24px;
            font-size: 13px;
            color: var(--fg-muted-light);
        }
        /* Liste tags = pills */
        .container ul[class*="tag"] li,
        .container .tags li,
        .container .com-tags__list li {
            display: inline-block !important;
            margin: 4px !important;
        }
        .container ul[class*="tag"] li a,
        .container .tags li a,
        .container .com-tags__list li a {
            display: inline-block !important;
            padding: 4px 10px !important;
            background: var(--card-bg) !important;
            border: 1px solid var(--card-border) !important;
            border-radius: var(--radius-pill) !important;
            font-size: 11px !important;
            color: var(--fg-muted-light) !important;
            text-decoration: none !important;
            transition: background .2s, color .2s, border-color .2s !important;
        }
        .container ul[class*="tag"] li a:hover,
        .container .tags li a:hover {
            background: var(--accent-soft) !important;
            color: var(--accent-deep) !important;
            border-color: var(--accent) !important;
        }

        /* === v26 — Galerie photos améliorée === */
        .gallery-tile {
            background:
                linear-gradient(135deg, color-mix(in srgb, var(--accent-soft) 60%, white), color-mix(in srgb, var(--secondary) 12%, white)),
                var(--bg-page);
            position: relative;
        }
        .gallery-tile::after {
            content: '';
            position: absolute;
            inset: 0;
            background: radial-gradient(circle at 30% 30%, rgba(255,255,255,.6), transparent 50%);
            opacity: .7;
            pointer-events: none;
            transition: opacity .3s;
        }
        .gallery-tile:hover::after { opacity: .3; }
        .gallery-tile-icon { font-size: 44px !important; filter: drop-shadow(0 4px 8px rgba(0,0,0,.15)); }
        .gallery-tile-label {
            background: rgba(255,255,255,.92) !important;
            backdrop-filter: blur(8px);
            padding: 10px 16px !important;
            font-size: 14px !important;
        }
        .gallery-tile.featured .gallery-tile-icon { font-size: 80px !important; }
        .gallery-tile.featured .gallery-tile-label { font-size: 16px !important; padding: 12px 20px !important; }

        /* Variations par tile pour casser l'uniformité */
        .gallery-tile:nth-child(2) {
            background: linear-gradient(135deg, color-mix(in srgb, #FCD34D 50%, white), color-mix(in srgb, var(--accent) 25%, white));
        }
        .gallery-tile:nth-child(3) {
            background: linear-gradient(135deg, color-mix(in srgb, var(--mint) 25%, white), color-mix(in srgb, var(--mint-dark) 12%, white));
        }
        .gallery-tile:nth-child(4) {
            background: linear-gradient(135deg, color-mix(in srgb, #BAE6FD 50%, white), color-mix(in srgb, var(--night-700) 8%, white));
        }
        .gallery-tile:nth-child(5) {
            background: linear-gradient(135deg, color-mix(in srgb, var(--secondary) 30%, white), color-mix(in srgb, #FB923C 20%, white));
        }

        /* === v26 — Vidéos YouTubers améliorées avec mini-illustration === */
        .video-thumb {
            background:
                radial-gradient(circle at 30% 30%, color-mix(in srgb, var(--accent) 28%, transparent), transparent 60%),
                linear-gradient(135deg, var(--night-700), var(--night-900));
        }
        .video-card:nth-child(2) .video-thumb {
            background:
                radial-gradient(circle at 70% 40%, color-mix(in srgb, var(--secondary) 35%, transparent), transparent 60%),
                linear-gradient(135deg, var(--night-800), var(--night-900));
        }
        .video-card:nth-child(3) .video-thumb {
            background:
                radial-gradient(circle at 50% 60%, color-mix(in srgb, var(--mint) 30%, transparent), transparent 60%),
                linear-gradient(135deg, var(--night-700), var(--night-900));
        }
        .video-thumb::after {
            content: '';
            position: absolute;
            top: 16px; left: 16px;
            padding: 4px 10px;
            background: rgba(0,0,0,.6);
            color: white;
            font-size: 11px;
            font-weight: 700;
            border-radius: 4px;
            text-transform: uppercase;
            letter-spacing: .1em;
        }
        .video-card:nth-child(1) .video-thumb::after { content: '12:34'; }
        .video-card:nth-child(2) .video-thumb::after { content: '08:21'; }
        .video-card:nth-child(3) .video-thumb::after { content: '06:47'; }
        .video-play-btn {
            box-shadow: 0 8px 24px rgba(255,166,43,.5), 0 4px 12px rgba(0,0,0,.4) !important;
            animation: playPulse 2.4s ease-in-out infinite;
        }
        @keyframes playPulse {
            0%, 100% { box-shadow: 0 8px 24px rgba(255,166,43,.5), 0 4px 12px rgba(0,0,0,.4), 0 0 0 0 rgba(255,217,61,.6); }
            50%      { box-shadow: 0 8px 24px rgba(255,166,43,.5), 0 4px 12px rgba(0,0,0,.4), 0 0 0 12px rgba(255,217,61,0); }
        }
        /* iOS/WebKit : l'animation infinie playPulse promeut le bouton play en calque composité,
           qui laisse un "fantôme" orange persistant quand on le masque/supprime (bug WebKit).
           On coupe l'animation sur les appareils tactiles (pas de survol) — le halo pulsé reste sur desktop. */
        @media (hover: none) {
            .video-play-btn { animation: none !important; }
        }

        /* === v26 — Cookies banner v3 (encore plus stylé) === */
        #jb-cookies-bar, #jb-banner,
        [class*="jb-cookies"], [id*="jb-cookie"],
        .joomball-banner, .cookies-banner-wrapper {
            border-radius: 24px !important;
            margin: 0 auto 20px !important;
            max-width: 720px !important;
            position: fixed !important;
            bottom: 18px !important;
            left: 50% !important;
            transform: translateX(-50%) !important;
            padding: 20px 28px !important;
            background: linear-gradient(135deg, var(--night-900) 0%, var(--night-700) 100%) !important;
            color: white !important;
            box-shadow: 0 24px 60px -16px rgba(0,0,0,.4), 0 0 0 1px rgba(255,255,255,.08) inset !important;
            border: 0 !important;
            border-top: 0 !important;
            font-family: var(--font-body) !important;
        }
        #jb-cookies-bar::before, [class*="jb-cookies"]::before {
            content: '🍪';
            display: inline-block;
            font-size: 28px;
            margin-right: 12px;
            vertical-align: middle;
            animation: cookieBounce 3s ease-in-out infinite;
        }
        @keyframes cookieBounce {
            0%, 100% { transform: translateY(0) rotate(0); }
            50%      { transform: translateY(-4px) rotate(8deg); }
        }
        @media (max-width: 760px) {
            #jb-cookies-bar, [class*="jb-cookies"] {
                left: 14px !important;
                right: 14px !important;
                transform: none !important;
                max-width: none !important;
                padding: 16px 18px !important;
                border-radius: 18px !important;
            }
        }

        /* Cacher la section "Notre histoire" si elle existe encore dans le DOM via autre source */
        .section-histoire { display: none !important; }

        /* === v35 — Sections supprimées (masquées en CSS pour éviter risques de cassure) === */
        .section-trust,
        .section-premier,
        #calc-sejour,
        .section-calc-sejour,
        #tarifs { display: none !important; }

        /* ==========================================================
           === v35 — "Écouter la mer" en bas à DROITE sous "Une question ?"
           ========================================================== */
        /* Repousser la pill "Une question?" plus haut pour libérer la place */
        .fab-question-pro {
            bottom: 218px !important;
        }
        @media (max-width: 640px) {
            .fab-question-pro { bottom: 200px !important; }
        }
        /* Déplacer la fab-stack (qui ne contient plus que Écouter la mer) à DROITE, sous "Une question?" */
        .fab-stack {
            position: fixed !important;
            left: auto !important;
            right: 18px !important;
            bottom: 156px !important;
            top: auto !important;
            z-index: 56;
        }
        @media (max-width: 640px) {
            .fab-stack { right: 14px !important; bottom: 144px !important; }
        }
        /* La fab-listen (pill bleue) garde son look */

        /* ==========================================================
           === v34 — Bloc "Simple, sans surprise" (3 cards prix)
           ========================================================== */
        .v34-simple-grid {
            display: grid;
            grid-template-columns: repeat(5, 1fr);
            gap: 14px;
            margin: 30px 0 0;
        }
        @media (max-width: 1300px) { .v34-simple-grid { grid-template-columns: repeat(3, 1fr); } }
        @media (max-width: 900px) { .v34-simple-grid { grid-template-columns: repeat(2, 1fr); } }
        @media (max-width: 600px) { .v34-simple-grid { grid-template-columns: 1fr; } }
        .v34-simple-grid .v34-card { padding: 22px 18px 18px; }
        .v34-simple-grid .v34-card-price { font-size: 32px; }
        .v34-simple-grid .v34-card-list li { font-size: 13px; padding: 7px 0; }
        /* v38 — Card "Toute l'année" (heure) violet */
        .v34-card.v34-heure {
            background: linear-gradient(155deg, white 0%, color-mix(in srgb, #A78BFA 8%, white) 100%);
            border-color: color-mix(in srgb, #A78BFA 28%, white);
        }
        .v34-card.v34-heure .v34-card-price { color: #6D28D9; }
        .v34-card.v34-heure .v34-card-list li::before { color: #A78BFA; }
        /* v38 — Card "Douche" (optionnelle) rose */
        .v34-card.v34-douche {
            background: linear-gradient(155deg, white 0%, color-mix(in srgb, #FB7185 7%, white) 100%);
            border-color: color-mix(in srgb, #FB7185 28%, white);
        }
        .v34-card.v34-douche .v34-card-price { color: #BE185D; }
        .v34-card.v34-douche .v34-card-list li::before { color: #FB7185; }
        .v34-card {
            background: white;
            border-radius: var(--radius-card);
            padding: 24px 22px 22px;
            border: 1px solid color-mix(in srgb, var(--fg-muted-light) 14%, white);
            box-shadow: 0 10px 28px -10px rgba(10,37,64,.12);
            position: relative;
            transition: transform .25s, box-shadow .25s;
        }
        .v34-card:hover { transform: translateY(-3px); box-shadow: 0 16px 36px -10px rgba(10,37,64,.18); }
        .v34-card-price {
            font-family: var(--font-display);
            font-weight: 800;
            font-size: 38px;
            line-height: 1;
            color: var(--fg-on-light);
            margin: 0 0 4px;
        }
        .v34-card-price small {
            font-size: 14px;
            font-weight: 700;
            color: var(--fg-muted-light);
            margin-left: 4px;
        }
        .v34-card-eyebrow {
            font-family: var(--font-body);
            font-size: 11px;
            font-weight: 800;
            text-transform: uppercase;
            letter-spacing: .14em;
            color: var(--fg-muted-light);
            margin: 0 0 14px;
        }
        .v34-card-list {
            list-style: none;
            padding: 0;
            margin: 14px 0 0;
        }
        .v34-card-list li {
            display: flex;
            align-items: flex-start;
            gap: 8px;
            padding: 8px 0;
            font-size: 13.5px;
            color: var(--fg-on-light);
            line-height: 1.45;
            border-bottom: 1px dashed color-mix(in srgb, var(--fg-muted-light) 22%, transparent);
        }
        .v34-card-list li:last-child { border-bottom: 0; }
        .v34-card-list li::before {
            content: '✓';
            color: var(--mint-dark);
            font-weight: 800;
            font-size: 14px;
            flex: 0 0 auto;
            margin-top: 1px;
        }
        .v34-card.v34-basse {
            background: linear-gradient(155deg, white 0%, color-mix(in srgb, #38BDF8 7%, white) 100%);
            border-color: color-mix(in srgb, #0EA5E9 28%, white);
        }
        .v34-card.v34-haute {
            background: linear-gradient(155deg, white 0%, color-mix(in srgb, var(--accent) 8%, white) 100%);
            border-color: color-mix(in srgb, var(--accent) 28%, white);
        }
        .v34-card.v34-elec {
            background: linear-gradient(155deg, white 0%, color-mix(in srgb, var(--mint-dark) 8%, white) 100%);
            border-color: color-mix(in srgb, var(--mint-dark) 28%, white);
        }
        .v34-card.v34-basse .v34-card-price { color: #0369A1; }
        .v34-card.v34-haute .v34-card-price { color: var(--accent-deep); }
        .v34-card.v34-elec .v34-card-price { color: var(--mint-dark); }
        .v34-card.v34-basse .v34-card-list li::before { color: #0EA5E9; }
        .v34-card.v34-haute .v34-card-list li::before { color: var(--accent-deep); }
        .v34-card.v34-elec .v34-card-list li::before { color: var(--mint-dark); }
        .v34-card-badge {
            position: absolute;
            top: -10px; right: 16px;
            background: var(--accent);
            color: var(--night-900);
            padding: 4px 12px;
            border-radius: 999px;
            font-size: 10.5px;
            font-weight: 800;
            letter-spacing: .08em;
            text-transform: uppercase;
            box-shadow: 0 4px 10px rgba(0,0,0,.18);
        }

        /* v34 — Section "Combien ça coûte" sans gradients éco */
        .v34-section-cost {
            background: var(--bg-section-alt);
            padding: var(--section-py) 0;
            position: relative;
            overflow: hidden;
        }
        .v34-section-cost::before {
            content: '';
            position: absolute;
            top: -120px; right: -120px;
            width: 280px; height: 280px;
            background: radial-gradient(circle, color-mix(in srgb, var(--accent) 18%, transparent), transparent 70%);
            border-radius: 50%;
            pointer-events: none;
        }
        .v34-section-cost::after {
            content: '';
            position: absolute;
            bottom: -100px; left: -80px;
            width: 240px; height: 240px;
            background: radial-gradient(circle, color-mix(in srgb, var(--mint-dark) 14%, transparent), transparent 70%);
            border-radius: 50%;
            pointer-events: none;
        }
        .v34-section-cost > * { position: relative; z-index: 2; }
        .v34-section-cost .section-head .eyebrow {
            display: inline-block;
            padding: 8px 18px;
            background: color-mix(in srgb, var(--accent) 14%, white);
            color: var(--accent-deep);
            border-radius: 999px;
            font-family: var(--font-body);
            font-size: 12px;
            font-weight: 800;
            text-transform: uppercase;
            letter-spacing: .18em;
            box-shadow: 0 4px 12px -4px rgba(255,166,43,.3);
            margin-bottom: 14px;
        }

        /* ==========================================================
           === v34 — Épuration FABs gauche : garder UNIQUEMENT "Écouter la mer"
           ========================================================== */
        .megamenu-fab,
        .megamenu-panel,
        .megamenu-backdrop,
        .fab-whatsapp,
        .fab-messenger,
        .fab-stack .fab-maps,
        .fab-stack .fab-tel { display: none !important; }
        /* Repositionner la fab-stack pour ne contenir QUE Écouter la mer en bas-gauche */
        .fab-stack {
            position: fixed !important;
            left: 18px !important;
            right: auto !important;
            bottom: 18px !important;
            top: auto !important;
            z-index: 56;
        }
        @media (max-width: 640px) {
            .fab-stack { left: 14px !important; bottom: 14px !important; }
        }

        /* ==========================================================
           === v32 — YouTubers click-to-play + Cookies fix
           ========================================================== */
        .v32-videos .video-card { cursor: pointer; position: relative; }
        .v32-videos .video-thumb { aspect-ratio: 16/9; position: relative; overflow: hidden; }
        .v32-videos .video-thumb-picture {
            position: absolute;
            inset: 0;
            display: block;
        }
        .v32-videos .video-thumb-img {
            position: absolute; inset: 0;
            width: 100%; height: 100%;
            object-fit: cover;
            display: block;
            border: 0;
        }
        .v32-videos .video-thumb-fade {
            position: absolute; inset: 0;
            background: linear-gradient(180deg, transparent 45%, rgba(0,0,0,.55) 100%);
            z-index: 1;
            pointer-events: none;
            transition: opacity .25s;
        }
        .v32-videos .video-play-btn {
            position: absolute;
            top: 50%; left: 50%;
            transform: translate(-50%, -50%);
            z-index: 2;
            box-shadow: 0 8px 28px rgba(0,0,0,.5), 0 0 0 4px rgba(255,255,255,.12);
        }
        .v32-videos .video-duration-badge {
            position: absolute;
            bottom: 8px; right: 8px;
            background: rgba(0,0,0,.78);
            color: white;
            font-size: 11px;
            font-weight: 700;
            padding: 3px 8px;
            border-radius: 4px;
            z-index: 3;
            font-variant-numeric: tabular-nums;
        }
        .v32-videos .video-author-badge {
            position: absolute;
            top: 8px; left: 8px;
            background: rgba(255,255,255,.94);
            color: var(--fg-on-light);
            font-size: 11px;
            font-weight: 800;
            padding: 4px 10px;
            border-radius: 999px;
            z-index: 3;
            display: inline-flex; align-items: center; gap: 4px;
            box-shadow: 0 4px 10px rgba(0,0,0,.2);
        }
        .v32-videos .video-author-badge::before { content: '\25B6'; color: red; font-size: 10px; }
        .v32-videos .video-card.is-playing .video-play-btn,
        .v32-videos .video-card.is-playing .video-thumb-fade,
        .v32-videos .video-card.is-playing .video-author-badge,
        .v32-videos .video-card.is-playing .video-duration-badge,
        .v32-videos .video-card.is-playing .video-thumb-picture,
        .v32-videos .video-card.is-playing .video-thumb-img { display: none; }
        .v32-videos .video-card iframe.v32-yt-iframe {
            display: none;
            width: 100%;
            height: 100%;
            border: 0;
            position: absolute;
            inset: 0;
        }
        .v32-videos .video-card.is-playing iframe.v32-yt-iframe { display: block; }
        /* iOS/WebKit : un .video-play-btn en display:none mais gardant l'animation infinie playPulse
           laisse un "fantôme" composité visible sur iPhone (le bouton orange reste au centre).
           On coupe l'animation et on neutralise totalement le bouton sur la carte en lecture. */
        .v32-videos .video-card.is-playing .video-play-btn {
            display: none !important;
            animation: none !important;
            opacity: 0 !important;
            visibility: hidden !important;
            pointer-events: none !important;
        }

        /* === v32 — Cookies fix (décalage au-dessus des FABs) === */
        #jb-cookies-bar, #jb-banner,
        [class*="jb-cookies"], [id*="jb-cookie"],
        .joomball-banner, .cookies-banner-wrapper {
            bottom: 96px !important;
            z-index: 9999 !important;
            max-width: 640px !important;
        }
        #jb-cookies-bar a, #jb-cookies-bar button,
        [class*="jb-cookies"] a, [class*="jb-cookies"] button {
            display: inline-flex !important;
            align-items: center;
            gap: 6px;
            padding: 10px 18px !important;
            border-radius: 999px !important;
            font-weight: 700 !important;
            font-size: 14px !important;
            font-family: var(--font-body) !important;
            text-decoration: none !important;
            cursor: pointer !important;
            margin: 4px 4px 0 0 !important;
            transition: transform .15s, box-shadow .15s !important;
        }
        #jb-cookies-bar a:hover, #jb-cookies-bar button:hover,
        [class*="jb-cookies"] a:hover, [class*="jb-cookies"] button:hover { transform: translateY(-1px); }
        @media (max-width: 760px) {
            #jb-cookies-bar, [class*="jb-cookies"] {
                bottom: 168px !important;
                left: 14px !important;
                right: 14px !important;
                font-size: 13px !important;
            }
        }
        @media (max-width: 480px) {
            #jb-cookies-bar, [class*="jb-cookies"] {
                bottom: 178px !important;
                padding: 14px 16px !important;
            }
        }

        /* ==========================================================
           === v31 — Galerie kaléidoscope (8 tuiles mood-board)
           ========================================================== */
        .v31-gallery .gallery-hint-grid {
            display: grid !important;
            grid-template-columns: repeat(4, 1fr) !important;
            grid-auto-rows: 170px;
            gap: 12px;
            margin-top: 28px;
        }
        @media (max-width: 1100px) { .v31-gallery .gallery-hint-grid { grid-template-columns: repeat(3, 1fr) !important; } }
        @media (max-width: 760px) { .v31-gallery .gallery-hint-grid { grid-template-columns: repeat(2, 1fr) !important; grid-auto-rows: 150px; } }
        .v31-gallery .gallery-tile {
            position: relative;
            border-radius: 16px;
            overflow: hidden;
            text-decoration: none;
            display: block;
            transition: transform .35s cubic-bezier(.34,1.56,.64,1), box-shadow .35s;
            cursor: pointer;
            box-shadow: 0 6px 18px -6px rgba(10,37,64,.18);
            isolation: isolate;
            aspect-ratio: auto;
            background: var(--bg-section);
        }
        .v31-gallery .gallery-tile:hover { transform: translateY(-4px) scale(1.02); box-shadow: 0 20px 36px -10px rgba(10,37,64,.32); z-index: 2; }
        .v31-gallery .gallery-tile.featured { grid-column: span 2; grid-row: span 2; }
        .v31-gallery .gallery-tile.tall { grid-row: span 2; }
        .v31-gallery .gallery-tile-bg {
            position: absolute; inset: 0;
            transition: transform .8s cubic-bezier(.22,1,.36,1), filter .35s;
        }
        .v31-gallery .gallery-tile-bg img {
            width: 100%;
            height: 100%;
            object-fit: cover;
            display: block;
        }
        .v31-gallery .gallery-tile:hover .gallery-tile-bg { transform: scale(1.08); filter: brightness(1.08); }
        .v31-gallery [data-mood="sunset"]   .gallery-tile-bg { background: linear-gradient(155deg, #FB7185 0%, #FBBF24 50%, #F97316 100%); }
        .v31-gallery [data-mood="plage"]    .gallery-tile-bg { background: linear-gradient(155deg, #67E8F9 0%, #38BDF8 50%, #FCD34D 100%); }
        .v31-gallery [data-mood="nature"]   .gallery-tile-bg { background: linear-gradient(155deg, #86EFAC 0%, #10B981 60%, #047857 100%); }
        .v31-gallery [data-mood="vanlife"]  .gallery-tile-bg { background: linear-gradient(155deg, #0EA5E9 0%, #1E40AF 50%, #312E81 100%); }
        .v31-gallery [data-mood="velo"]     .gallery-tile-bg { background: linear-gradient(155deg, #FCD34D 0%, #F59E0B 100%); }
        .v31-gallery [data-mood="village"]  .gallery-tile-bg { background: linear-gradient(155deg, #FECACA 0%, #FB7185 50%, #BE185D 100%); }
        .v31-gallery [data-mood="pyrenees"] .gallery-tile-bg { background: linear-gradient(155deg, #C7D2FE 0%, #6366F1 50%, #1E1B4B 100%); }
        .v31-gallery [data-mood="catalan"]  .gallery-tile-bg { background: linear-gradient(155deg, #FCD34D 0%, #DC2626 100%); }
        .v31-gallery .gallery-tile-overlay {
            position: absolute; inset: 0;
            background: linear-gradient(180deg, rgba(10,37,64,0) 35%, rgba(10,37,64,.72) 100%);
            transition: opacity .35s;
        }
        .v31-gallery .gallery-tile-content {
            position: absolute;
            inset: auto 0 0 0;
            padding: 14px 16px;
            color: white;
            z-index: 2;
        }
        .v31-gallery .gallery-tile-icon {
            font-size: 28px;
            line-height: 1;
            margin-bottom: 4px;
            display: block;
            filter: drop-shadow(0 3px 6px rgba(0,0,0,.4));
            transition: transform .35s;
        }
        .v31-gallery .gallery-tile.featured .gallery-tile-icon { font-size: 50px; }
        .v31-gallery .gallery-tile:hover .gallery-tile-icon { transform: translateY(-4px) rotate(-4deg); }
        .v31-gallery .gallery-tile-label {
            font-family: var(--font-display);
            font-weight: 700;
            font-size: 13px;
            line-height: 1.25;
            text-shadow: 0 2px 8px rgba(0,0,0,.4);
        }
        .v31-gallery .gallery-tile.featured .gallery-tile-label { font-size: 18px; }
        .v31-gallery .gallery-tile-badge {
            position: absolute;
            top: 10px; left: 10px;
            z-index: 3;
            display: inline-flex;
            align-items: center;
            gap: 4px;
            padding: 4px 9px;
            background: rgba(255,255,255,.92);
            color: var(--fg-on-light);
            border-radius: 999px;
            font-size: 9.5px;
            font-weight: 800;
            text-transform: uppercase;
            letter-spacing: .08em;
            box-shadow: 0 4px 10px rgba(0,0,0,.18);
        }
        .v31-gallery .gallery-tile-badge.is-spot { background: var(--accent); }
        .v31-gallery .gallery-tile-badge.is-eco  { background: #10B981; color: white; }
        .v31-gallery .gallery-tile-badge.is-bleu { background: #38BDF8; color: white; }
        .v31-gallery .gallery-tile-zoom-hint {
            position: absolute;
            top: 10px; right: 10px;
            z-index: 3;
            width: 28px; height: 28px;
            border-radius: 50%;
            background: rgba(255,255,255,.18);
            backdrop-filter: blur(8px);
            display: grid; place-items: center;
            color: white;
            font-size: 12px;
            opacity: 0;
            transition: opacity .25s, transform .25s;
        }
        .v31-gallery .gallery-tile:hover .gallery-tile-zoom-hint { opacity: 1; transform: scale(1.08); }

        /* ==========================================================
           === v30 — 2 simulateurs côte à côte (Séjour + Élec packs)
           Classes globales définies ici (PAS en cascade inline)
           ========================================================== */
        .v30-sims-wrap {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 22px;
            margin: 28px 0 0;
        }
        @media (max-width: 900px) { .v30-sims-wrap { grid-template-columns: 1fr; gap: 16px; } }
        .v30-sim {
            background: white;
            border-radius: var(--radius-card);
            padding: 24px 24px 20px;
            border: 1px solid color-mix(in srgb, var(--mint-dark) 14%, white);
            box-shadow: 0 12px 32px -10px rgba(10,37,64,.12);
        }
        .v30-sim.v30-sim-sejour {
            background: linear-gradient(155deg, #fff, color-mix(in srgb, var(--accent) 7%, white));
            border-color: color-mix(in srgb, var(--accent) 24%, white);
        }
        .v30-sim.v30-sim-elec {
            background: linear-gradient(155deg, #fff, color-mix(in srgb, var(--mint-dark) 7%, white));
            border-color: color-mix(in srgb, var(--mint-dark) 24%, white);
        }
        .v30-sim h4 {
            display: flex; align-items: center; gap: 10px;
            font-family: var(--font-display);
            font-weight: 700;
            font-size: 20px;
            margin: 0 0 4px;
            color: var(--fg-on-light);
        }
        .v30-sim h4 [data-icon] { color: var(--accent-deep); }
        .v30-sim.v30-sim-elec h4 [data-icon] { color: var(--mint-dark); }
        .v30-sim-eyebrow {
            font-size: 11px;
            font-weight: 800;
            text-transform: uppercase;
            letter-spacing: .12em;
            margin: 0 0 14px;
        }
        .v30-sim.v30-sim-sejour .v30-sim-eyebrow { color: var(--accent-deep); }
        .v30-sim.v30-sim-elec .v30-sim-eyebrow { color: var(--mint-dark); }
        .v30-row {
            padding: 10px 0;
            border-bottom: 1px dashed color-mix(in srgb, var(--fg-muted-light) 22%, transparent);
        }
        .v30-row:last-of-type { border-bottom: 0; }
        .v30-row-head {
            display: flex; justify-content: space-between; align-items: baseline;
            font-size: 13px;
            margin-bottom: 4px;
        }
        .v30-row-head label { font-weight: 700; color: var(--fg-on-light); }
        .v30-row-head .v30-val { font-family: var(--font-display); font-weight: 700; font-size: 16px; }
        .v30-sim.v30-sim-sejour .v30-row-head .v30-val { color: var(--accent-deep); }
        .v30-sim.v30-sim-elec .v30-row-head .v30-val { color: var(--mint-dark); }
        .v30-row input[type="range"] {
            -webkit-appearance: none;
            width: 100%;
            height: 5px;
            border-radius: 3px;
            background: color-mix(in srgb, var(--fg-muted-light) 22%, transparent);
            outline: none;
            margin: 4px 0;
        }
        .v30-row input[type="range"]::-webkit-slider-thumb {
            -webkit-appearance: none; appearance: none;
            width: 20px; height: 20px;
            border-radius: 50%;
            border: 3px solid white;
            box-shadow: 0 3px 10px -2px rgba(0,0,0,.25);
            cursor: pointer;
        }
        .v30-sim.v30-sim-sejour .v30-row input[type="range"]::-webkit-slider-thumb {
            background: linear-gradient(135deg, var(--accent), var(--accent-deep));
        }
        .v30-sim.v30-sim-elec .v30-row input[type="range"]::-webkit-slider-thumb {
            background: linear-gradient(135deg, var(--mint-dark), #047857);
        }
        .v30-opt {
            display: flex; align-items: center; justify-content: space-between;
            padding: 8px 0;
            font-size: 13px;
        }
        .v30-opt + .v30-opt { border-top: 1px dotted color-mix(in srgb, var(--fg-muted-light) 20%, transparent); }
        .v30-opt-label { display: flex; align-items: center; gap: 6px; font-weight: 600; color: var(--fg-on-light); }
        .v30-opt-label small { color: var(--fg-muted-light); font-weight: 500; }
        .v30-qty {
            display: inline-flex; align-items: center; gap: 2px;
            background: color-mix(in srgb, var(--accent) 9%, white);
            border-radius: 8px;
            padding: 2px;
        }
        .v30-sim.v30-sim-elec .v30-qty { background: color-mix(in srgb, var(--mint-dark) 9%, white); }
        .v30-qty button {
            width: 24px; height: 24px;
            border: 0;
            background: transparent;
            font-weight: 800;
            font-size: 14px;
            cursor: pointer;
            border-radius: 5px;
            color: var(--accent-deep);
        }
        .v30-sim.v30-sim-elec .v30-qty button { color: var(--mint-dark); }
        .v30-qty button:hover { background: rgba(0,0,0,.05); }
        .v30-qty input {
            width: 28px; text-align: center; border: 0; background: transparent;
            font-family: var(--font-display); font-weight: 700; font-size: 14px;
            color: var(--fg-on-light);
            -moz-appearance: textfield;
        }
        .v30-qty input::-webkit-outer-spin-button, .v30-qty input::-webkit-inner-spin-button {
            -webkit-appearance: none; margin: 0;
        }
        .v30-total {
            margin-top: 14px;
            padding: 14px 16px;
            border-radius: 12px;
            display: flex; align-items: center; justify-content: space-between;
        }
        .v30-sim.v30-sim-sejour .v30-total {
            background: linear-gradient(135deg, color-mix(in srgb, var(--accent) 18%, white), color-mix(in srgb, var(--accent-deep) 14%, white));
        }
        .v30-sim.v30-sim-elec .v30-total {
            background: linear-gradient(135deg, color-mix(in srgb, var(--mint-dark) 18%, white), color-mix(in srgb, #047857 16%, white));
        }
        .v30-total-eyebrow {
            font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: .14em;
            color: var(--fg-muted-light);
        }
        .v30-total-value {
            font-family: var(--font-display); font-weight: 800; font-size: 26px; line-height: 1;
            color: var(--fg-on-light);
        }
        .v30-total-sub { font-size: 11px; color: var(--fg-muted-light); margin-top: 2px; }
        .v30-pack-hint {
            margin-top: 10px;
            padding: 8px 12px;
            background: color-mix(in srgb, var(--mint-dark) 8%, white);
            border-radius: 8px;
            font-size: 11.5px;
            line-height: 1.45;
            color: var(--fg-on-light);
        }
        .v30-pack-hint strong { color: var(--mint-dark); }


        /* ============================================================
           === v27 — Réorganisation FABs : tel+WhatsApp à GAUCHE,
                     mega-menu camion + pill "Une question?" à DROITE
           ============================================================ */
        .header-actions-v27 { min-width: 0; }

        /* fab-stack (tel/maps/listen) déplacée à GAUCHE */
        .fab-stack {
            position: fixed !important;
            left: 18px !important;
            right: auto !important;
            bottom: 18px !important;
            z-index: 56;
            display: flex !important;
            flex-direction: column !important;
            gap: 12px !important;
        }
        /* On enlève "Une question?" de la fab-stack (devient pill à droite) */
        .fab-stack .fab-question { display: none !important; }

        /* WhatsApp déplacé à GAUCHE, à côté de la fab-stack */
        .fab-whatsapp {
            left: 86px !important;
            right: auto !important;
            bottom: 18px !important;
        }
        .fab-messenger {
            left: 86px !important;
            right: auto !important;
        }

        /* Mega-menu camion déplacé à DROITE */
        .megamenu-fab { left: auto !important; right: 18px !important; }
        .megamenu-panel {
            left: auto !important;
            right: 18px !important;
        }

        /* Pill "Une question ?" en bas à DROITE, au-dessus du mega-menu */
        .fab-question-pro {
            position: fixed;
            right: 18px;
            bottom: 96px;
            z-index: 58;
            background: linear-gradient(135deg, var(--accent) 0%, var(--accent-deep) 100%);
            color: var(--night-900);
            padding: 13px 22px;
            border-radius: 999px;
            font-family: var(--font-body);
            font-weight: 800;
            font-size: 14px;
            line-height: 1;
            letter-spacing: .01em;
            text-decoration: none;
            display: inline-flex;
            align-items: center;
            gap: 10px;
            box-shadow: 0 10px 28px -8px rgba(255,166,43,.6), 0 4px 0 var(--secondary), 0 0 0 0 rgba(255,217,61,.6);
            transition: transform .25s cubic-bezier(.34,1.56,.64,1), box-shadow .25s;
            animation: questionProPulse 3.6s ease-in-out infinite;
            white-space: nowrap;
            cursor: pointer;
        }
        .fab-question-pro::before {
            content: '💬';
            font-size: 18px;
            line-height: 1;
            transform: translateY(-1px);
        }
        .fab-question-pro:hover {
            transform: translateY(-3px) scale(1.03);
            box-shadow: 0 14px 34px -8px rgba(255,166,43,.7), 0 6px 0 var(--secondary);
        }
        @keyframes questionProPulse {
            0%, 100% { box-shadow: 0 10px 28px -8px rgba(255,166,43,.6), 0 4px 0 var(--secondary), 0 0 0 0 rgba(255,217,61,.65); }
            50%      { box-shadow: 0 10px 28px -8px rgba(255,166,43,.6), 0 4px 0 var(--secondary), 0 0 0 14px rgba(255,217,61,0); }
        }

        @media (max-width: 640px) {
            .fab-stack { left: 14px !important; bottom: 14px !important; gap: 10px !important; }
            .fab-whatsapp { left: 78px !important; bottom: 14px !important; }
            .fab-messenger { left: 78px !important; }
            .megamenu-fab { right: 14px !important; }
            .megamenu-panel { right: 14px !important; }
            .fab-question-pro { right: 14px; bottom: 88px; padding: 11px 16px; font-size: 13px; }
            .fab-question-pro::before { font-size: 15px; }
        }
        /* Quand le mega-menu est ouvert (.megamenu-fab.is-open), masquer la pill et la fab-stack pour libérer l'espace */
        .megamenu-fab.is-open ~ .fab-question-pro,
        body:has(.megamenu-fab.is-open) .fab-question-pro {
            opacity: 0; pointer-events: none; transform: translateY(8px); transition: opacity .25s, transform .25s;
        }

        /* ==========================================================
           === v44 — Bloc Élec PREMIUM marketing + Chat IA bulle
           ========================================================== */
        .v44-elec-premium {
            margin: 36px auto 0;
            max-width: 1100px;
            background:
                radial-gradient(circle at 0% 0%, color-mix(in srgb, var(--mint-dark) 20%, transparent), transparent 50%),
                radial-gradient(circle at 100% 100%, color-mix(in srgb, var(--accent) 14%, transparent), transparent 60%),
                linear-gradient(155deg, var(--night-900) 0%, var(--night-700) 100%);
            color: white;
            border-radius: var(--radius-card);
            padding: 44px 36px 36px;
            position: relative;
            overflow: hidden;
            box-shadow: 0 22px 50px -14px rgba(10,37,64,.4);
        }
        .v44-elec-premium::before {
            content: '';
            position: absolute;
            top: 0; left: 0; right: 0; height: 4px;
            background: linear-gradient(90deg, var(--accent), var(--mint-dark), #38BDF8, var(--accent));
        }
        .v44-elec-premium .v44-elec-eyebrow {
            display: inline-flex; align-items: center; gap: 8px;
            background: linear-gradient(135deg, var(--accent), var(--accent-deep));
            color: var(--night-900);
            padding: 6px 14px;
            border-radius: 999px;
            font-family: var(--font-body);
            font-size: 11px;
            font-weight: 800;
            text-transform: uppercase;
            letter-spacing: .16em;
            box-shadow: 0 6px 14px -4px rgba(255,166,43,.5);
            margin-bottom: 18px;
        }
        .v44-elec-premium .v44-elec-eyebrow::before { content: '⚡'; font-size: 14px; }
        .v44-elec-premium h2 {
            font-family: var(--font-display);
            font-weight: 700;
            font-size: clamp(28px, 3vw, 38px);
            line-height: 1.2;
            margin: 0 0 14px;
            text-wrap: balance;
        }
        .v44-elec-premium h2 em { color: var(--accent); font-style: italic; font-weight: 700; }
        .v44-elec-premium .v44-elec-lead {
            font-size: 16px;
            color: rgba(255,255,255,.85);
            line-height: 1.55;
            margin: 0 0 28px;
            max-width: 760px;
        }
        .v44-elec-grid {
            display: grid;
            grid-template-columns: repeat(3, 1fr);
            gap: 18px;
            margin: 0 0 28px;
        }
        @media (max-width: 900px) { .v44-elec-grid { grid-template-columns: 1fr; } }
        .v44-elec-feature {
            background: rgba(255,255,255,.06);
            border: 1px solid rgba(255,255,255,.12);
            border-radius: 16px;
            padding: 22px 20px;
            backdrop-filter: blur(8px);
            transition: transform .25s, background .25s, border-color .25s;
        }
        .v44-elec-feature:hover {
            transform: translateY(-4px);
            background: rgba(255,255,255,.1);
            border-color: var(--accent);
        }
        .v44-elec-feature-icon {
            display: inline-grid; place-items: center;
            width: 44px; height: 44px;
            border-radius: 12px;
            background: linear-gradient(135deg, var(--accent), var(--accent-deep));
            color: var(--night-900);
            font-size: 20px;
            margin-bottom: 12px;
        }
        .v44-elec-feature h3 {
            font-family: var(--font-display);
            font-weight: 700;
            font-size: 18px;
            color: white;
            margin: 0 0 8px;
        }
        .v44-elec-feature p {
            font-size: 13.5px;
            color: rgba(255,255,255,.78);
            line-height: 1.5;
            margin: 0;
        }
        .v44-elec-feature strong { color: var(--accent); font-weight: 700; }
        .v44-elec-cta-row {
            display: flex; gap: 16px; flex-wrap: wrap; align-items: center; justify-content: center;
            padding: 22px 24px;
            background: rgba(255,255,255,.04);
            border-radius: 14px;
            border: 1px dashed rgba(255,217,61,.28);
            margin-top: 12px;
        }
        .v44-elec-cta-row .v44-elec-cta-text {
            color: rgba(255,255,255,.92);
            font-size: 14px;
            font-weight: 600;
            line-height: 1.4;
        }
        .v44-elec-cta-row .v44-elec-cta-text strong { color: var(--accent); }
        .v44-elec-cta-row .v44-elec-cta-btn {
            display: inline-flex; align-items: center; gap: 8px;
            padding: 11px 22px;
            background: linear-gradient(135deg, var(--accent), var(--accent-deep));
            color: var(--night-900);
            border-radius: 999px;
            font-weight: 800;
            font-size: 14px;
            text-decoration: none;
            box-shadow: 0 8px 20px -4px rgba(255,166,43,.55);
            transition: transform .2s;
            white-space: nowrap;
        }
        .v44-elec-cta-row .v44-elec-cta-btn:hover { transform: translateY(-2px); }

        /* === Chat IA widget === */
        .v44-chat-fab {
            position: fixed;
            right: 18px;
            bottom: 18px;
            z-index: 60;
            width: 64px; height: 64px;
            border-radius: 50%;
            background: linear-gradient(135deg, #6366F1 0%, #4F46E5 100%);
            color: white;
            display: grid; place-items: center;
            cursor: pointer;
            border: 0;
            box-shadow: 0 10px 28px -6px rgba(99,102,241,.55), 0 4px 12px rgba(0,0,0,.15);
            transition: transform .35s cubic-bezier(.34,1.56,.64,1), box-shadow .35s;
            font-size: 26px;
        }
        .v44-chat-fab::before { content: '🤖'; font-size: 28px; line-height: 1; }
        .v44-chat-fab:hover { transform: scale(1.1); box-shadow: 0 14px 32px -6px rgba(99,102,241,.7), 0 6px 16px rgba(0,0,0,.2); }
        .v44-chat-fab.is-open { transform: rotate(360deg) scale(1.05); }
        .v44-chat-fab.is-open::before { content: '×'; font-size: 32px; }
        .v44-chat-fab::after {
            content: '';
            position: absolute;
            inset: -8px;
            border-radius: 50%;
            border: 2px solid #6366F1;
            opacity: .4;
            animation: v44ChatRing 2.6s ease-out infinite;
            pointer-events: none;
        }
        @keyframes v44ChatRing {
            0%   { opacity: .6; transform: scale(.9); }
            100% { opacity: 0; transform: scale(1.4); }
        }
        .v44-chat-fab.is-open::after { display: none; }
        .v44-chat-fab .v44-chat-badge {
            position: absolute;
            top: -2px; right: -2px;
            min-width: 22px; height: 22px;
            padding: 0 6px;
            background: var(--accent);
            color: var(--night-900);
            border-radius: 999px;
            font-size: 10px;
            font-weight: 800;
            display: grid; place-items: center;
            box-shadow: 0 2px 6px rgba(0,0,0,.25);
            font-family: var(--font-body);
        }
        .v44-chat-fab.is-open .v44-chat-badge { display: none; }
        @media (max-width: 640px) {
            .v44-chat-fab { right: 14px; bottom: 14px; width: 56px; height: 56px; font-size: 22px; }
        }

        .v44-chat-panel {
            position: fixed;
            right: 18px;
            bottom: 96px;
            z-index: 59;
            width: min(420px, calc(100vw - 36px));
            height: min(620px, calc(100vh - 130px));
            background: white;
            border-radius: 22px;
            box-shadow: 0 32px 64px -16px rgba(10,37,64,.35), 0 8px 16px rgba(10,37,64,.1);
            overflow: hidden;
            display: flex; flex-direction: column;
            transform: translateY(20px) scale(.96);
            opacity: 0;
            pointer-events: none;
            transition: opacity .35s cubic-bezier(.22,1,.36,1), transform .35s cubic-bezier(.22,1,.36,1);
        }
        .v44-chat-panel.is-open { opacity: 1; transform: translateY(0) scale(1); pointer-events: auto; }
        .v44-chat-panel-head {
            padding: 14px 18px;
            background: linear-gradient(135deg, #6366F1 0%, #4F46E5 100%);
            color: white;
            display: flex; align-items: center; gap: 12px;
            border-bottom: 1px solid rgba(255,255,255,.1);
        }
        .v44-chat-panel-head-avatar {
            width: 36px; height: 36px;
            border-radius: 50%;
            background: rgba(255,255,255,.18);
            display: grid; place-items: center;
            font-size: 18px;
        }
        .v44-chat-panel-head-title {
            font-family: var(--font-display);
            font-weight: 700;
            font-size: 15px;
            line-height: 1.2;
        }
        .v44-chat-panel-head-sub {
            font-size: 11.5px;
            opacity: .85;
            margin-top: 2px;
            display: flex; align-items: center; gap: 4px;
        }
        .v44-chat-panel-head-sub::before {
            content: ''; width: 7px; height: 7px;
            background: #10B981;
            border-radius: 50%;
            box-shadow: 0 0 0 3px rgba(16,185,129,.3);
        }
        .v44-chat-panel-head-close {
            margin-left: auto;
            background: rgba(255,255,255,.14);
            border: 0;
            color: white;
            width: 28px; height: 28px;
            border-radius: 50%;
            cursor: pointer;
            font-size: 18px;
            display: grid; place-items: center;
        }
        .v44-chat-panel-head-close:hover { background: rgba(255,255,255,.28); }
        .v44-chat-iframe-wrap {
            flex: 1; position: relative;
            background: var(--bg-section-alt);
        }
        .v44-chat-iframe {
            position: absolute; inset: 0;
            width: 100%; height: 100%;
            border: 0;
            display: none;
        }
        .v44-chat-panel.is-open .v44-chat-iframe { display: block; }
        .v44-chat-loading {
            position: absolute; inset: 0;
            display: grid; place-items: center;
            color: var(--fg-muted-light);
            font-size: 14px;
            font-family: var(--font-body);
            text-align: center;
            padding: 30px;
        }
        .v44-chat-loading::before {
            content: '🤖';
            font-size: 48px;
            display: block;
            margin-bottom: 16px;
            animation: v44ChatFloat 2.5s ease-in-out infinite;
        }
        @keyframes v44ChatFloat {
            0%, 100% { transform: translateY(0); }
            50% { transform: translateY(-6px); }
        }
        .v44-chat-iframe.is-loaded ~ .v44-chat-loading { display: none; }


        /* ==========================================================
           === v47 — Refonte DELUXE bloc Borne intelligente
           SVG borne animee + particles + scroll reveal + ultra glow
           ========================================================== */
        .v44-elec-premium {
            /* Override gradient pour plus de profondeur */
            background:
                radial-gradient(circle at 8% 0%, color-mix(in srgb, var(--mint-dark) 28%, transparent), transparent 40%),
                radial-gradient(circle at 92% 100%, color-mix(in srgb, var(--accent) 22%, transparent), transparent 55%),
                radial-gradient(circle at 50% 50%, color-mix(in srgb, #38BDF8 8%, transparent), transparent 70%),
                linear-gradient(155deg, #0A1929 0%, #102A43 50%, #1E3A5F 100%) !important;
            padding: 56px 44px 44px !important;
        }
        /* Pattern decoratif circuit imprime */
        .v44-elec-premium::after {
            content: '';
            position: absolute;
            inset: 0;
            background-image:
                linear-gradient(rgba(56,189,248,.04) 1px, transparent 1px),
                linear-gradient(90deg, rgba(56,189,248,.04) 1px, transparent 1px);
            background-size: 32px 32px;
            mask-image: radial-gradient(ellipse 80% 60% at 50% 50%, black, transparent 90%);
            -webkit-mask-image: radial-gradient(ellipse 80% 60% at 50% 50%, black, transparent 90%);
            pointer-events: none;
            opacity: .5;
        }

        /* Lightning emoji animation */
        .v44-elec-premium .v44-elec-eyebrow::before {
            animation: v47Spark 2.5s ease-in-out infinite;
            display: inline-block;
        }
        @keyframes v47Spark {
            0%, 100% { transform: scale(1) rotate(0deg); filter: drop-shadow(0 0 0 #FFE36F); }
            45%      { transform: scale(1.25) rotate(-8deg); filter: drop-shadow(0 0 8px #FFE36F); }
            55%      { transform: scale(1.25) rotate(8deg); filter: drop-shadow(0 0 8px #FFE36F); }
        }

        /* Borne SVG flottante decorative */
        .v47-borne-illustration {
            position: absolute;
            right: -10px;
            top: -10px;
            width: 180px;
            height: 220px;
            opacity: .12;
            pointer-events: none;
            z-index: 0;
        }
        @media (max-width: 900px) { .v47-borne-illustration { width: 120px; height: 150px; opacity: .08; } }
        .v47-borne-illustration .energy-bolt {
            transform-origin: 50% 30%;
            animation: v47BorneBolt 3s ease-in-out infinite;
        }
        @keyframes v47BorneBolt {
            0%, 100% { opacity: .4; }
            50%      { opacity: 1; filter: drop-shadow(0 0 4px var(--accent)); }
        }

        /* Stats compteur animees en haut */
        .v47-stats-row {
            display: grid;
            grid-template-columns: repeat(4, 1fr);
            gap: 14px;
            margin: 0 0 30px;
            position: relative;
            z-index: 2;
        }
        @media (max-width: 700px) { .v47-stats-row { grid-template-columns: repeat(2, 1fr); } }
        .v47-stat {
            text-align: center;
            padding: 16px 12px;
            background: rgba(255,255,255,.04);
            border: 1px solid rgba(255,217,61,.18);
            border-radius: 14px;
            transition: transform .3s, border-color .3s, background .3s;
        }
        .v47-stat:hover {
            transform: translateY(-3px);
            background: rgba(255,255,255,.08);
            border-color: var(--accent);
        }
        .v47-stat-num {
            font-family: var(--font-display);
            font-weight: 800;
            font-size: clamp(22px, 2.4vw, 30px);
            color: var(--accent);
            line-height: 1;
            display: block;
            text-shadow: 0 2px 12px rgba(255,217,61,.35);
        }
        .v47-stat-lbl {
            font-size: 11px;
            color: rgba(255,255,255,.7);
            text-transform: uppercase;
            letter-spacing: .12em;
            margin-top: 6px;
            font-weight: 600;
        }

        /* Features grid : effets bonus */
        .v44-elec-premium .v44-elec-grid {
            position: relative;
            z-index: 2;
        }
        .v44-elec-premium .v44-elec-feature {
            position: relative;
            overflow: hidden;
        }
        .v44-elec-premium .v44-elec-feature::before {
            content: '';
            position: absolute;
            top: -50%;
            left: -50%;
            width: 200%;
            height: 200%;
            background: radial-gradient(circle, rgba(255,217,61,.15), transparent 50%);
            opacity: 0;
            transition: opacity .35s;
            pointer-events: none;
        }
        .v44-elec-premium .v44-elec-feature:hover::before {
            opacity: 1;
        }
        .v44-elec-premium .v44-elec-feature-icon {
            box-shadow: 0 6px 16px -4px rgba(255,166,43,.45);
            transition: transform .35s cubic-bezier(.34,1.56,.64,1), box-shadow .35s;
        }
        .v44-elec-premium .v44-elec-feature:hover .v44-elec-feature-icon {
            transform: scale(1.12) rotate(-4deg);
            box-shadow: 0 10px 24px -4px rgba(255,166,43,.65);
        }

        /* CTA row : glow effect */
        .v44-elec-premium .v44-elec-cta-row {
            position: relative;
            z-index: 2;
            background: rgba(255,255,255,.05);
            border: 1px solid rgba(255,217,61,.34);
            box-shadow: inset 0 1px 0 rgba(255,255,255,.06), 0 8px 24px -8px rgba(0,0,0,.3);
        }
        .v44-elec-premium .v44-elec-cta-btn {
            box-shadow: 0 8px 20px -4px rgba(255,166,43,.55), 0 0 0 0 var(--accent);
            animation: v47CtaPulse 2.8s ease-in-out infinite;
        }
        @keyframes v47CtaPulse {
            0%, 100% { box-shadow: 0 8px 20px -4px rgba(255,166,43,.55), 0 0 0 0 rgba(255,217,61,.7); }
            50%      { box-shadow: 0 10px 24px -4px rgba(255,166,43,.7), 0 0 0 8px rgba(255,217,61,0); }
        }

        /* v51 - PAS d'animation fadeIn sur features/stats (bug opacity off-viewport sur Chrome) */
        .v44-elec-premium .v44-elec-feature,
        .v47-stat {
            opacity: 1;
            transform: none;
        }

        /* Accessibilite : respecter prefers-reduced-motion */
        @media (prefers-reduced-motion: reduce) {
            .v44-elec-premium .v44-elec-eyebrow::before { animation: none !important; }
            .v44-elec-premium .v44-elec-cta-btn { animation: none !important; }
            .v47-borne-illustration .energy-bolt { animation: none !important; }
        }

        /* ==========================================================
           === v49 — Polish UX : focus, smooth scroll, micro-anim
           ========================================================== */
        /* Focus visible accessible pour clavier */
        :focus-visible {
            outline: 3px solid var(--accent) !important;
            outline-offset: 2px !important;
            border-radius: 4px;
        }
        button:focus-visible, a:focus-visible, [role="button"]:focus-visible {
            outline: 3px solid var(--accent) !important;
            outline-offset: 3px !important;
        }

        /* Smooth scroll natif */
        html { scroll-behavior: smooth; }
        @media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }

        /* Selection text style */
        ::selection { background: var(--accent); color: var(--night-900); }
        ::-moz-selection { background: var(--accent); color: var(--night-900); }

        /* Chat IA : ajouter teaser-tooltip "Une question ? Demandez-moi !" */
        .v44-chat-fab {
            position: fixed;
        }
        .v44-chat-fab::before {
            /* l'emoji robot deja injecte */
        }
        .v49-chat-teaser {
            position: fixed;
            right: 92px;
            bottom: 32px;
            z-index: 58;
            background: white;
            color: var(--fg-on-light);
            padding: 11px 18px 11px 16px;
            border-radius: 18px;
            box-shadow: 0 10px 24px -6px rgba(10,37,64,.25), 0 4px 10px rgba(10,37,64,.1);
            font-family: var(--font-body);
            font-size: 13.5px;
            font-weight: 600;
            line-height: 1.3;
            white-space: nowrap;
            opacity: 0;
            transform: translateX(10px);
            transition: opacity .4s, transform .4s;
            pointer-events: none;
            border: 1.5px solid color-mix(in srgb, #6366F1 25%, transparent);
        }
        .v49-chat-teaser.is-visible {
            opacity: 1;
            transform: translateX(0);
            animation: v49TeaserBob 2.6s ease-in-out infinite 1s;
        }
        .v49-chat-teaser::after {
            content: '';
            position: absolute;
            right: -8px;
            top: 50%;
            transform: translateY(-50%);
            border: 6px solid transparent;
            border-left-color: white;
        }
        @keyframes v49TeaserBob {
            0%, 100% { transform: translateX(0); }
            50%      { transform: translateX(-4px); }
        }
        @media (max-width: 640px) {
            .v49-chat-teaser { display: none !important; }
        }
        @media (prefers-reduced-motion: reduce) {
            .v49-chat-teaser.is-visible { animation: none; }
        }

        /* Hover des FABs gauche : plus de feedback */
        .fab-listen, .fab-question-pro {
            transition: transform .25s cubic-bezier(.34,1.56,.64,1), box-shadow .25s;
        }
        .fab-listen:hover, .fab-question-pro:hover {
            transform: translateY(-3px) scale(1.03);
        }

        /* Cards stats du bloc Borne : compteur plus visible */
        .v47-stat-num small {
            font-weight: 700 !important;
            margin-left: 1px;
        }

        /* ==========================================================
           === v50 — Print stylesheet : economiser encre client
           ========================================================== */
        @media print {
            /* Cacher elements non utiles a l'impression */
            .fab-stack, .fab-question-pro, .fab-whatsapp, .sticky-mobile-phone,
            .megamenu-fab, .megamenu-backdrop, .megamenu-panel,
            .v44-chat-fab, .v44-chat-panel, .v49-chat-teaser,
            .v37-share-overlay, .v37-share-toast,
            #jb-cookies-bar, [id*="jb-cookies"],
            video, iframe { display: none !important; }
            body { background: white !important; color: black !important; font-size: 11pt; }
            a { color: black !important; text-decoration: underline; }
            a[href]::after { content: " (" attr(href) ")"; font-size: 8pt; color: #555; }
            a[href^="#"]::after, a[href^="javascript"]::after { content: ""; }
            .container, section { padding: 8px 0 !important; max-width: 100% !important; }
            h1, h2, h3 { page-break-after: avoid; color: black !important; }
            img { max-width: 100% !important; page-break-inside: avoid; }
            .v44-elec-premium {
                background: white !important;
                color: black !important;
                border: 1px solid #999 !important;
                padding: 12px !important;
            }
            .v44-elec-premium h2, .v44-elec-premium h3, .v44-elec-premium p { color: black !important; }
        }

        /* ==========================================================
           === v52 — Polish UX : ribbon, trust strip, skip-link
           ========================================================== */
        /* Skip-link accessibilite */
        .v52-skip-link {
            position: absolute;
            top: -100px;
            left: 8px;
            z-index: 999;
            background: var(--night-900);
            color: var(--accent);
            padding: 10px 16px;
            border-radius: 6px;
            text-decoration: none;
            font-weight: 700;
            font-family: var(--font-body);
            font-size: 14px;
            box-shadow: 0 4px 12px rgba(0,0,0,.3);
        }
        .v52-skip-link:focus {
            top: 8px;
            outline: 3px solid var(--accent);
        }

        /* Ribbon POPULAIRE sur card */
        .v34-card { position: relative; }
        .v52-card-ribbon {
            position: absolute;
            top: 14px;
            right: -8px;
            background: linear-gradient(135deg, #EF4444, #DC2626);
            color: white;
            padding: 5px 14px 5px 12px;
            border-radius: 4px 0 0 4px;
            font-family: var(--font-body);
            font-size: 10.5px;
            font-weight: 800;
            text-transform: uppercase;
            letter-spacing: .12em;
            box-shadow: 0 4px 12px -2px rgba(239,68,68,.5);
            z-index: 2;
            animation: v52RibbonGlow 3s ease-in-out infinite;
        }
        .v52-card-ribbon::after {
            content: '';
            position: absolute;
            top: 100%;
            right: 0;
            border: 4px solid transparent;
            border-top-color: #8B0F0F;
            border-right-color: #8B0F0F;
        }
        @keyframes v52RibbonGlow {
            0%, 100% { box-shadow: 0 4px 12px -2px rgba(239,68,68,.5); }
            50%      { box-shadow: 0 6px 16px -2px rgba(239,68,68,.75); }
        }
        @media (prefers-reduced-motion: reduce) {
            .v52-card-ribbon { animation: none; }
        }

        /* Trust strip subtile */
        .v52-trust-strip {
            max-width: 1100px;
            margin: 28px auto 0;
            padding: 18px 22px;
            display: flex;
            flex-wrap: wrap;
            justify-content: center;
            gap: 28px;
            background: color-mix(in srgb, var(--cream) 50%, white);
            border-radius: 14px;
            border: 1px solid color-mix(in srgb, var(--accent) 18%, transparent);
        }
        .v52-trust-item {
            display: inline-flex;
            align-items: center;
            gap: 8px;
            font-family: var(--font-body);
            font-size: 12.5px;
            font-weight: 600;
            color: var(--fg-on-light);
            line-height: 1.2;
        }
        .v52-trust-item-icon {
            display: inline-grid;
            place-items: center;
            width: 28px; height: 28px;
            background: linear-gradient(135deg, var(--accent), var(--accent-deep));
            color: var(--night-900);
            border-radius: 50%;
            font-size: 14px;
            flex-shrink: 0;
        }
        .v52-trust-item strong { color: var(--accent-deep); }
        @media (max-width: 640px) {
            .v52-trust-strip { gap: 14px; padding: 14px 16px; }
            .v52-trust-item { font-size: 11.5px; }
        }

        /* Card tarifs amelioration hover */
        .v34-card {
            transition: transform .3s cubic-bezier(.34,1.56,.64,1), box-shadow .3s;
        }
        .v34-card:hover {
            transform: translateY(-4px);
            box-shadow: 0 14px 28px -8px rgba(10,37,64,.18), 0 4px 10px rgba(10,37,64,.08);
        }

        /* ==========================================================
           === v53 — Comment ca marche : 3 etapes premium
           ========================================================== */
        .v53-howto-section {
            padding: 60px 16px 40px;
            background: var(--cream);
        }
        .v53-howto-inner {
            max-width: 1100px;
            margin: 0 auto;
            text-align: center;
        }
        .v53-howto-eyebrow {
            display: inline-block;
            font-family: var(--font-body);
            font-size: 12px;
            font-weight: 800;
            text-transform: uppercase;
            letter-spacing: .18em;
            color: var(--accent-deep);
            margin: 0 0 10px;
        }
        .v53-howto-title {
            font-family: var(--font-display);
            font-weight: 700;
            font-size: clamp(24px, 2.8vw, 34px);
            color: var(--fg-on-light);
            margin: 0 0 14px;
            line-height: 1.2;
        }
        .v53-howto-title em { font-style: italic; color: var(--accent-deep); }
        .v53-howto-lead {
            font-size: 15px;
            color: var(--fg-muted-light);
            max-width: 620px;
            margin: 0 auto 38px;
            line-height: 1.5;
        }
        .v53-steps {
            display: grid;
            grid-template-columns: repeat(3, 1fr);
            gap: 22px;
            position: relative;
        }
        @media (max-width: 850px) { .v53-steps { grid-template-columns: 1fr; gap: 18px; } }
        .v53-step {
            position: relative;
            background: white;
            border-radius: 18px;
            padding: 32px 22px 28px;
            box-shadow: 0 6px 18px -8px rgba(10,37,64,.12);
            border: 1px solid color-mix(in srgb, var(--accent) 12%, transparent);
            transition: transform .3s cubic-bezier(.34,1.56,.64,1), box-shadow .3s, border-color .3s;
        }
        .v53-step:hover {
            transform: translateY(-6px);
            box-shadow: 0 16px 32px -10px rgba(10,37,64,.18);
            border-color: var(--accent);
        }
        .v53-step-num {
            position: absolute;
            top: -22px;
            left: 50%;
            transform: translateX(-50%);
            display: grid;
            place-items: center;
            width: 48px;
            height: 48px;
            border-radius: 50%;
            background: linear-gradient(135deg, var(--accent), var(--accent-deep));
            color: var(--night-900);
            font-family: var(--font-display);
            font-weight: 800;
            font-size: 22px;
            box-shadow: 0 6px 16px -4px rgba(255,166,43,.5);
            border: 4px solid var(--cream);
        }
        .v53-step-icon {
            font-size: 38px;
            margin: 18px 0 10px;
            line-height: 1;
            display: block;
        }
        .v53-step h3 {
            font-family: var(--font-display);
            font-weight: 700;
            font-size: 19px;
            color: var(--fg-on-light);
            margin: 0 0 8px;
            line-height: 1.25;
        }
        .v53-step p {
            font-size: 14px;
            color: var(--fg-muted-light);
            line-height: 1.5;
            margin: 0;
        }
        .v53-step strong { color: var(--accent-deep); }
        /* Connecteur entre etapes (desktop only) */
        @media (min-width: 851px) {
            .v53-step:not(:last-child)::after {
                content: '\2192';
                position: absolute;
                top: 50%;
                right: -16px;
                transform: translate(50%, -50%);
                font-size: 24px;
                color: var(--accent);
                font-weight: 700;
                z-index: 2;
            }
        }
        .v53-howto-cta {
            margin-top: 32px;
            display: inline-flex;
            align-items: center;
            gap: 8px;
            padding: 13px 26px;
            background: linear-gradient(135deg, var(--accent), var(--accent-deep));
            color: var(--night-900);
            border-radius: 999px;
            font-family: var(--font-body);
            font-weight: 800;
            font-size: 14px;
            text-decoration: none;
            box-shadow: 0 8px 22px -4px rgba(255,166,43,.55);
            transition: transform .25s;
        }
        .v53-howto-cta:hover { transform: translateY(-2px); }

        /* ==========================================================
           === v66 — DELUXE FINALE
           Polish typo global + micro-anim + transitions fluides
           ========================================================== */
        /* Polish typo titres */
        h1, h2 { letter-spacing: -0.01em; text-wrap: balance; }
        h3, h4 { letter-spacing: -0.005em; text-wrap: balance; }
        p { text-wrap: pretty; }

        /* Transitions fluides par defaut sur cards et boutons */
        .v34-card, .stat-card, .v44-elec-feature, .v53-step, .v47-stat,
        .pill, button:not(.megamenu-fab), .fab-listen, .fab-question-pro {
            transition: transform .25s cubic-bezier(.34,1.56,.64,1),
                        box-shadow .25s,
                        background-color .2s,
                        color .2s,
                        border-color .2s;
        }

        /* Pills : hover plus subtil */
        .pill:hover {
            transform: translateY(-1px);
            box-shadow: 0 6px 14px -4px rgba(10,37,64,.18);
        }

        /* Bandeau supérieur "Bonne nouvelle" : plus visible */
        .topbanner, .top-banner, [class*="topbanner"] {
            background: linear-gradient(90deg, var(--accent-deep) 0%, var(--accent) 50%, var(--accent-deep) 100%) !important;
            background-size: 200% 100% !important;
            animation: v66BannerShine 8s ease-in-out infinite;
        }
        @keyframes v66BannerShine {
            0%, 100% { background-position: 0% 50%; }
            50%      { background-position: 100% 50%; }
        }
        @media (prefers-reduced-motion: reduce) {
            .topbanner, .top-banner, [class*="topbanner"] { animation: none !important; }
        }

        /* Selection text : plus fluo */
        ::selection { background: var(--accent); color: var(--night-900); text-shadow: 0 1px 0 rgba(255,255,255,.4); }

        /* Scrollbar custom (Chrome / Edge) */
        ::-webkit-scrollbar { width: 12px; height: 12px; }
        ::-webkit-scrollbar-track { background: color-mix(in srgb, var(--cream) 60%, transparent); }
        ::-webkit-scrollbar-thumb {
            background: linear-gradient(180deg, var(--accent), var(--accent-deep));
            border-radius: 6px;
            border: 2px solid transparent;
            background-clip: padding-box;
        }
        ::-webkit-scrollbar-thumb:hover { background: var(--accent-deep); }

        /* Footer : amelioration hover liens */
        footer a {
            transition: color .2s, transform .2s;
        }
        footer a:hover {
            color: var(--accent) !important;
            transform: translateX(2px);
        }

        /* Anti-FOIT : font-display swap deja gere par Google Fonts mais on s'assure */
        @supports (font-display: swap) {
            * { font-display: swap; }
        }

        /* Image rendering optim */
        img { image-rendering: -webkit-optimize-contrast; }

        /* Containment perf */
        section, .section-head, .v34-card, .v44-elec-feature, .v53-step {
            contain: layout style;
        }

        /* Empecher overflow horizontal global */
        html, body { overflow-x: clip; }

        /* === v66 SIGNATURE DELUXE === */
        /* Easter egg : afficher la version dans une console.log au load */

        /* Final polish on h2 of premium block */
        .v44-elec-premium h2 { text-shadow: 0 2px 12px rgba(0,0,0,.18); }

        /* CTAs critiques : glow doux */
        .pill-primary,
        .v44-elec-cta-btn,
        .v53-howto-cta {
            box-shadow: 0 8px 20px -4px rgba(255,166,43,.4),
                        inset 0 1px 0 rgba(255,255,255,.2);
        }
        .pill-primary:hover,
        .v44-elec-cta-btn:hover,
        .v53-howto-cta:hover {
            box-shadow: 0 12px 28px -4px rgba(255,166,43,.55),
                        inset 0 1px 0 rgba(255,255,255,.25);
        }

        /* Cards stat hero : glow doux */
        .stat-card:hover {
            transform: translateY(-3px);
            box-shadow: 0 10px 24px -6px rgba(10,37,64,.18);
        }

        /* v66 - Badge discret "v66 deluxe" en bas a gauche pour easter egg */
        .v66-signature {
            position: fixed;
            bottom: 8px;
            left: 8px;
            z-index: 5;
            font-family: var(--font-body);
            font-size: 9px;
            color: rgba(0,0,0,.18);
            letter-spacing: .15em;
            text-transform: uppercase;
            pointer-events: none;
            user-select: none;
        }
        @media (max-width: 640px) { .v66-signature { display: none; } }

        /* ==========================================================
           === v100 PREMIUM - polish cumul 33 versions
           ========================================================== */

        /* === v68 Hero : effet ombre titre plus profond + parallax cards live === */
        h1, .hero-title {
            text-shadow: 0 2px 12px rgba(10,37,64,.12);
        }

        /* === v69 Cards live "Meteo/Soleil/Plage" : hover + sparkle === */
        .meteo-card, .soleil-card, .plage-card,
        .stat-card, [class*="card-live"] {
            transition: transform .35s cubic-bezier(.34,1.56,.64,1),
                        box-shadow .35s, border-color .35s;
        }
        .meteo-card:hover, .soleil-card:hover, .plage-card:hover,
        .stat-card:hover, [class*="card-live"]:hover {
            transform: translateY(-4px) scale(1.01);
            box-shadow: 0 16px 32px -10px rgba(10,37,64,.2);
        }
        @keyframes v100Sparkle {
            0%, 100% { opacity: 0.3; transform: scale(1); }
            50%      { opacity: 1; transform: scale(1.1); }
        }
        .live-badge, [class*="live"][class*="badge"] {
            animation: v100Sparkle 2.5s ease-in-out infinite;
        }
        @media (prefers-reduced-motion: reduce) {
            .live-badge, [class*="live"][class*="badge"] { animation: none; }
        }

        /* === v71 Steps cards : connecteur fleche anime === */
        @media (min-width: 851px) {
            .v53-step:not(:last-child)::after {
                animation: v100ArrowPulse 2.4s ease-in-out infinite;
            }
            @keyframes v100ArrowPulse {
                0%, 100% { transform: translate(50%, -50%); opacity: .6; }
                50%      { transform: translate(60%, -50%); opacity: 1; }
            }
            @media (prefers-reduced-motion: reduce) {
                .v53-step:not(:last-child)::after { animation: none !important; }
            }
        }
        .v53-step:hover .v53-step-num {
            transform: translateX(-50%) scale(1.08) rotate(-4deg);
            box-shadow: 0 10px 22px -4px rgba(255,166,43,.7);
        }
        .v53-step-num {
            transition: transform .3s cubic-bezier(.34,1.56,.64,1), box-shadow .3s;
        }

        /* === v74 Trust strip : items hover === */
        .v52-trust-item {
            transition: transform .25s, color .2s;
            cursor: default;
        }
        .v52-trust-item:hover {
            transform: translateY(-1px);
            color: var(--accent-deep);
        }
        .v52-trust-item:hover .v52-trust-item-icon {
            transform: rotate(-8deg) scale(1.1);
        }
        .v52-trust-item-icon {
            transition: transform .25s cubic-bezier(.34,1.56,.64,1);
        }

        /* === v76 Card tarifs : ribbon plus visible === */
        .v52-card-ribbon {
            font-size: 11px;
            padding: 6px 16px 6px 13px;
        }

        /* === v80 Performance RETIRÉ en v116 : content-visibility:auto sur les sections
           provoquait des zones blanches au défilement (peinture sautée jamais rejouée). === */

        /* === v83 A11y : focus visible plus marque sur tout === */
        :focus-visible {
            outline: 3px solid var(--accent) !important;
            outline-offset: 3px !important;
            border-radius: 6px;
        }
        /* Focus a l'interieur d'un fond sombre */
        .v44-elec-premium :focus-visible,
        footer :focus-visible {
            outline-color: white !important;
        }

        /* === v85 Tactile : tap-highlight discret === */
        a, button, [role="button"] {
            -webkit-tap-highlight-color: rgba(255,217,61,.3);
        }

        /* === v87 Responsive mobile : ajustements fins === */
        @media (max-width: 640px) {
            .v44-elec-premium { padding: 32px 18px 24px !important; }
            .v44-elec-premium h2 { font-size: clamp(22px, 6vw, 28px); }
            .v53-howto-section { padding: 44px 14px 30px; }
            .v52-trust-strip { padding: 12px 12px; gap: 10px; }
            .v52-trust-item { font-size: 11px; }
            .v44-chat-fab { right: 12px; bottom: 12px; }
            .v49-chat-teaser { display: none !important; }
        }
        @media (max-width: 380px) {
            .v44-elec-premium h2 { font-size: 22px; line-height: 1.18; }
            .v53-step { padding: 28px 16px 22px; }
        }

        /* === v89 Animations smooth : easing standard partout === */
        :root {
            --ease-bounce: cubic-bezier(.34,1.56,.64,1);
            --ease-smooth: cubic-bezier(.22,1,.36,1);
            --ease-snap: cubic-bezier(.4,0,.2,1);
        }

        /* === v91 Micro-interactions : tilt sur cards === */
        .v34-card, .v44-elec-feature, .v53-step {
            will-change: transform;
            transform-style: preserve-3d;
            perspective: 800px;
        }

        /* === v93 Typography deluxe === */
        h1, h2, h3, h4, h5, h6,
        .v44-elec-premium .v44-elec-eyebrow,
        .v53-howto-eyebrow {
            font-feature-settings: "ss01" on, "ss02" on, "kern" on, "liga" on;
            font-variant-ligatures: common-ligatures contextual;
        }
        /* Chiffres tabulaires sur les prix/stats */
        .v47-stat-num, .v34-card-price, .stat-value {
            font-variant-numeric: tabular-nums;
            font-feature-settings: "tnum" on, "lnum" on;
        }
        /* Petites caps sur eyebrows */
        .v44-elec-eyebrow, .v53-howto-eyebrow {
            font-variant-caps: all-small-caps;
            letter-spacing: .14em;
        }

        /* === v95 Visual delights : subtle gradient borders sur cards principales === */
        .v44-elec-premium {
            border: 1px solid color-mix(in srgb, var(--accent) 35%, transparent);
        }

        /* === v97 Premium signature : easter egg discret === */
        .v100-premium-mark {
            position: fixed;
            bottom: 8px;
            left: 8px;
            z-index: 3;
            font-family: var(--font-body);
            font-size: 9px;
            color: rgba(0,0,0,.15);
            letter-spacing: .15em;
            text-transform: uppercase;
            pointer-events: none;
            user-select: none;
        }
        @media (max-width: 640px) { .v100-premium-mark { display: none; } }

        /* === v99 Print-friendly amelioration === */
        @media print {
            .v44-elec-premium, .v53-howto-section, .v52-trust-strip {
                page-break-inside: avoid;
                break-inside: avoid;
            }
            .v44-elec-premium::before, .v44-elec-premium::after,
            .v47-borne-illustration { display: none !important; }
        }

        /* ==========================================================
           === v101 MAXIMALISTE - Esprit "carte postale ensoleillee"
           applique a la structure v100 existante (pas une copie)
           ========================================================== */

        /* Palette maximaliste (additions) */
        :root {
            --maxi-bleu-nuit: #1B4F72;
            --maxi-bleu-ciel: #4A90E2;
            --maxi-jaune: #FFD93D;
            --maxi-corail: #FF9966;
            --maxi-orange: #FF7849;
            --maxi-peach: #FFE5B4;
            --maxi-turquoise: #06b6d4;
            --maxi-creme: #FFF8E7;
            --maxi-rose: #FFB6C1;
            --maxi-font-display: 'Fraunces', Georgia, serif;
            --maxi-font-body: 'DM Sans', system-ui, sans-serif;
        }

        /* Animations douces maximalistes */
        @keyframes maxiFloatUp {
            0%, 100% { transform: translateY(0); }
            50%      { transform: translateY(-6px); }
        }
        @keyframes maxiTwinkle {
            0%, 100% { opacity: 0.3; transform: scale(0.85); }
            50%      { opacity: 1; transform: scale(1.15); }
        }
        @keyframes maxiSlowRotate {
            from { transform: rotate(0deg); }
            to   { transform: rotate(360deg); }
        }
        @media (prefers-reduced-motion: reduce) {
            .maxi-sticker, .maxi-confetti { animation: none !important; }
        }

        /* ============ TITRES en Fraunces ============ */
        /* Tous les titres principaux passent en Fraunces serif avec italique pour le mot d'accent */
        body h1, body h2,
        body .section-head h2,
        body .section-title,
        body .v44-elec-premium h2,
        body .v53-howto-title,
        body .maxi-section-title {
            font-family: var(--maxi-font-display) !important;
            font-weight: 800 !important;
            letter-spacing: -0.025em !important;
        }
        body h3, body h4,
        body .section-head h3,
        body .v44-elec-feature h3,
        body .v53-step h3 {
            font-family: var(--maxi-font-display) !important;
            font-weight: 700 !important;
            letter-spacing: -0.01em !important;
        }
        /* "em" et italiques : couleur orange-corail */
        body h1 em, body h2 em, body h3 em,
        body .section-title em,
        body .section-head em,
        body .v44-elec-premium h2 em,
        body .v53-howto-title em {
            font-style: italic !important;
            color: var(--maxi-orange) !important;
            font-weight: 800 !important;
        }
        /* Eyebrows : DM Sans bold tracking */
        body .eyebrow,
        body .v44-elec-eyebrow,
        body .v53-howto-eyebrow,
        body [class*="eyebrow"] {
            font-family: var(--maxi-font-body) !important;
            font-weight: 700 !important;
            letter-spacing: 0.16em !important;
            text-transform: uppercase !important;
        }

        /* ============ BOUTONS NEO-BRUTALISTES ============ */
        /* Boutons primary : ombre decalee orange */
        body .pill.pill-primary,
        body .v44-elec-cta-btn,
        body .v53-howto-cta,
        body .maxi-btn-pill.primary {
            background: var(--maxi-jaune) !important;
            color: var(--maxi-bleu-nuit) !important;
            border: 3px solid var(--maxi-orange) !important;
            box-shadow: 0 6px 0 var(--maxi-orange), 0 10px 22px rgba(0,0,0,0.12) !important;
            font-family: var(--maxi-font-body) !important;
            font-weight: 700 !important;
            transition: transform .25s, box-shadow .25s !important;
        }
        body .pill.pill-primary:hover,
        body .v44-elec-cta-btn:hover,
        body .v53-howto-cta:hover {
            transform: translateY(3px) !important;
            box-shadow: 0 3px 0 var(--maxi-orange), 0 5px 14px rgba(0,0,0,0.15) !important;
        }
        /* Boutons secondary : ombre decalee bleu nuit */
        body .pill.pill-secondary,
        body .maxi-btn-pill.secondary {
            background: var(--maxi-orange) !important;
            color: white !important;
            border: 3px solid white !important;
            box-shadow: 0 6px 0 rgba(27,79,114,0.18), 0 10px 22px rgba(0,0,0,0.12) !important;
            font-family: var(--maxi-font-body) !important;
            font-weight: 700 !important;
        }
        body .pill.pill-secondary:hover {
            transform: translateY(3px) !important;
            box-shadow: 0 3px 0 rgba(27,79,114,0.18), 0 5px 14px rgba(0,0,0,0.15) !important;
        }

        /* ============ CARDS PLUS COLOREES ============ */
        /* Cards tarifs : couleurs vives en rotation */
        body .v34-simple-grid .v34-card {
            border-radius: 28px !important;
            box-shadow: 0 14px 30px rgba(27, 79, 114, 0.1) !important;
            border: 2px solid transparent !important;
            transition: transform .3s cubic-bezier(.34, 1.56, .64, 1), box-shadow .3s !important;
        }
        body .v34-simple-grid .v34-card:hover {
            transform: translateY(-8px) rotate(0.8deg) !important;
            box-shadow: 0 20px 40px rgba(27, 79, 114, 0.18) !important;
        }
        /* Card hover ne rotate pas */
        body .v34-simple-grid .v34-card:nth-child(odd) { transform: rotate(-0.5deg); }
        body .v34-simple-grid .v34-card:nth-child(even) { transform: rotate(0.5deg); }

        /* Steps cards : numeros plus colores */
        body .v53-step-num {
            background: linear-gradient(135deg, var(--maxi-orange), var(--maxi-jaune)) !important;
            box-shadow: 0 6px 16px -4px rgba(255,120,73,.5) !important;
            border: 4px solid var(--maxi-creme) !important;
        }

        /* Blob cards : v44-elec-feature avec border-radius asymetriques discrets */
        body .v44-elec-feature {
            border-radius: 22px 18px 24px 20px !important;
            transition: transform .35s cubic-bezier(.34, 1.56, .64, 1), background .3s !important;
        }
        body .v44-elec-feature:hover {
            transform: translateY(-6px) rotate(-1deg) !important;
        }

        /* Stat cards Borne : couleurs alternees */
        body .v47-stat:nth-child(1) { border-color: var(--maxi-jaune) !important; }
        body .v47-stat:nth-child(2) { border-color: var(--maxi-turquoise) !important; }
        body .v47-stat:nth-child(3) { border-color: var(--maxi-corail) !important; }
        body .v47-stat:nth-child(4) { border-color: var(--maxi-rose) !important; }

        /* ============ BANDEAU TOP : gradient anime ============ */
        .topbanner, .top-banner, [class*="topbanner"], .banner {
            background: linear-gradient(90deg, var(--maxi-orange) 0%, var(--maxi-jaune) 50%, var(--maxi-corail) 100%) !important;
            background-size: 200% 100% !important;
            color: var(--maxi-bleu-nuit) !important;
            font-family: var(--maxi-font-display) !important;
            font-style: italic !important;
            font-weight: 600 !important;
        }

        /* ============ STICKERS DECORATIFS ============ */
        .maxi-sticker {
            position: absolute;
            font-size: 30px;
            animation: maxiFloatUp 5s ease-in-out infinite;
            pointer-events: none;
            opacity: 0.55;
            z-index: 1;
        }
        .maxi-sticker.rotate-anim {
            animation: maxiSlowRotate 18s linear infinite;
        }
        .maxi-confetti {
            position: absolute;
            font-size: 20px;
            animation: maxiTwinkle 3s ease-in-out infinite;
            pointer-events: none;
            opacity: 0.7;
            z-index: 1;
        }

        /* ============ TRUST STRIP : un peu plus colore ============ */
        body .v52-trust-strip {
            background: linear-gradient(135deg, var(--maxi-peach) 0%, color-mix(in srgb, var(--maxi-jaune) 35%, white) 100%) !important;
            border: 2px dashed var(--maxi-orange) !important;
            border-radius: 22px !important;
        }
        body .v52-trust-item-icon {
            background: linear-gradient(135deg, var(--maxi-orange), var(--maxi-jaune)) !important;
            color: white !important;
        }
        body .v52-trust-item strong { color: var(--maxi-orange) !important; }

        /* ============ RIBBON POPULAIRE encore plus visible ============ */
        body .v52-card-ribbon {
            background: linear-gradient(135deg, var(--maxi-orange), #DC2626) !important;
            box-shadow: 0 6px 16px -2px rgba(255,120,73,.55) !important;
        }

        /* ============ FOOTER : etoiles twinkle decoratives ============ */
        footer.site-footer { position: relative; }
        .maxi-footer-stars-overlay {
            position: absolute;
            inset: 0;
            pointer-events: none;
            overflow: hidden;
            z-index: 0;
            opacity: .75;
            animation: maxiTwinkle 2.5s ease-in-out infinite;
            background:
                radial-gradient(circle at 8% 12%, rgba(255,217,61,.85) 0 2px, transparent 3px),
                radial-gradient(circle at 22% 30%, rgba(255,217,61,.55) 0 1.5px, transparent 2.5px),
                radial-gradient(circle at 38% 18%, rgba(255,217,61,.75) 0 2px, transparent 3px),
                radial-gradient(circle at 55% 45%, rgba(255,217,61,.55) 0 1.5px, transparent 2.5px),
                radial-gradient(circle at 70% 22%, rgba(255,217,61,.75) 0 2px, transparent 3px),
                radial-gradient(circle at 85% 38%, rgba(255,217,61,.85) 0 2px, transparent 3px),
                radial-gradient(circle at 12% 60%, rgba(255,217,61,.55) 0 1.5px, transparent 2.5px),
                radial-gradient(circle at 40% 55%, rgba(255,217,61,.75) 0 2px, transparent 3px),
                radial-gradient(circle at 65% 70%, rgba(255,217,61,.65) 0 2px, transparent 3px),
                radial-gradient(circle at 85% 80%, rgba(255,217,61,.55) 0 1.5px, transparent 2.5px);
            filter: drop-shadow(0 0 6px rgba(255,217,61,.35));
        }

        /* ============ Hero existant : touche maximaliste ============ */
        /* Si le hero existant a un fond uni, on ajoute un gradient discret */
        body .section-hero {
            position: relative;
        }
        body .section-hero::after {
            content: '';
            position: absolute;
            inset: 0;
            background: radial-gradient(circle at 85% 15%, rgba(255, 217, 61, 0.08), transparent 50%),
                        radial-gradient(circle at 15% 85%, rgba(255, 153, 102, 0.06), transparent 50%);
            pointer-events: none;
            z-index: 0;
        }

        /* ============ Tags pills : un peu plus joyeux ============ */
        body .v37-tags-block ul li,
        body .v37-tags-block ul li a,
        body .tag,
        body .pill.pill-cream {
            background: var(--maxi-peach) !important;
            color: var(--maxi-bleu-nuit) !important;
            border: 2px solid var(--maxi-orange) !important;
            font-family: var(--maxi-font-body) !important;
            font-weight: 600 !important;
        }

        /* ============ Section "Comment ca marche" : background creme + extras ============ */
        body .v53-howto-section {
            background: linear-gradient(180deg, var(--maxi-creme) 0%, #FFF1D6 100%) !important;
            position: relative;
        }

        /* ============ Bloc Borne intelligente : touche maximaliste avec liseré coloré ============ */
        body .v44-elec-premium {
            border: 2px solid color-mix(in srgb, var(--maxi-orange) 30%, transparent) !important;
        }

        /* Selection text : couleurs maximalistes */
        ::selection { background: var(--maxi-orange) !important; color: white !important; }

        /* Body : ajouter un fond legerement texture creme (optionnel) */
        body {
            background-color: var(--maxi-creme) !important;
        }

        /* ==========================================================
           === v102 — Suppr fab listen + WhatsApp + chat IA redirige
           ========================================================== */
        /* Cacher COMPLETEMENT les boutons flottants gauche */
        body .fab-listen,
        body .fab-stack,
        body .fab-whatsapp,
        body #fab-listen { display: none !important; }

        /* Chat IA : transformer en simple lien (plus de panel iframe) */
        body #v44-chat-panel,
        body .v44-chat-panel,
        body #v45-chat-container > aside,
        body #v46-chat-container > aside { display: none !important; }

        /* Le bouton bulle reste, devient simple lien direct vers contact */
        body #v44-chat-fab {
            display: grid !important;
        }
        /* Hover du chat plus marque */
        body #v44-chat-fab:hover {
            transform: scale(1.12) !important;
        }

        /* === Polish menu : meilleur hover, couleurs maximalistes === */
        body header nav a:not(.cta-reserve):not(.btn):not([class*="pill"]),
        body .header-inner nav a,
        body .main-nav a {
            font-family: var(--maxi-font-body) !important;
            font-weight: 500 !important;
            transition: background .25s, color .25s, transform .2s !important;
            border-radius: 999px !important;
            padding: 8px 14px !important;
        }
        body header nav a:hover {
            background: var(--maxi-peach) !important;
            color: var(--maxi-bleu-nuit) !important;
            transform: translateY(-2px) !important;
        }

        /* === Mega menu : touche maximaliste === */
        body .megamenu-panel {
            border-radius: 28px 28px 0 0 !important;
        }
        body .megamenu-panel h4 {
            font-family: var(--maxi-font-display) !important;
            color: var(--maxi-orange) !important;
        }
        body .megamenu-panel a {
            font-family: var(--maxi-font-body) !important;
            transition: color .2s, transform .2s !important;
        }
        body .megamenu-panel a:hover {
            color: var(--maxi-orange) !important;
            transform: translateX(3px) !important;
        }

        /* === Footer liens maximalistes === */
        body footer a:not(.fab):not([class*="pill"]) {
            transition: color .2s, transform .2s !important;
        }
        body footer a:not(.fab):not([class*="pill"]):hover {
            color: var(--maxi-jaune) !important;
            transform: translateX(2px) !important;
        }

        /* === Header sticky : un peu plus chaleureux === */
        body .site-header, body header.site-header {
            background: rgba(255, 248, 231, 0.92) !important;
            backdrop-filter: blur(14px) !important;
            -webkit-backdrop-filter: blur(14px) !important;
            border-bottom: 2px solid rgba(255, 217, 61, 0.4) !important;
        }

        /* === Correctif 2026-06-08 : lisibilité nav + footer sur les pages article ===
           Certains articles (gabarit « v28 ») injectent un CSS résiduel qui force les
           liens de la nav en blanc (.site-header nav a{color:#fff}) alors que le header
           est crème -> illisible. On rétablit la couleur d'encre du site, en plus
           spécifique, sauf sur le bouton CTA téléphone. */
        body header.site-header nav a:not(.nav-cta),
        body header.site-header .nav a:not(.nav-cta) {
            color: var(--fg-on-light) !important;
        }
        /* Le footer template (#contact .site-footer) était masqué par une règle JS
           résiduelle « footer:not(.n4cc-footer):not(:has(.footer-inner)){display:none} »
           héritée de l'ancien footer baké (supprimé). Sélecteur ID -> on le ré-affiche
           sur tous les articles. */
        html body footer#contact.site-footer {
            display: block !important;
        }

        /* Sticky mobile phone : style plus chaleureux */
        body .sticky-mobile-phone {
            background: var(--maxi-jaune) !important;
            color: var(--maxi-bleu-nuit) !important;
            border-top: 3px solid var(--maxi-orange) !important;
            font-family: var(--maxi-font-body) !important;
            font-weight: 700 !important;
        }

        /* ==========================================================
           === v103 - Bloc vanlife integre dans footer
           ========================================================== */
        .v103-vanlife-footer {
            margin: 0 auto 30px;
            max-width: 1280px;
            padding: 0 24px;
        }
        .v103-vanlife-inner {
            display: grid;
            grid-template-columns: 1fr auto;
            gap: 30px;
            align-items: center;
            padding: 28px 32px;
            background: linear-gradient(135deg, rgba(255,217,61,.18) 0%, rgba(255,153,102,.14) 100%);
            border: 2px dashed rgba(255,217,61,.5);
            border-radius: 22px;
            backdrop-filter: blur(4px);
        }
        @media (max-width: 760px) {
            .v103-vanlife-inner { grid-template-columns: 1fr; gap: 18px; text-align: center; padding: 22px 22px; }
        }
        .v103-vanlife-eyebrow {
            font-family: var(--maxi-font-body, 'DM Sans', sans-serif);
            font-size: 12px;
            font-weight: 800;
            text-transform: uppercase;
            letter-spacing: .18em;
            color: var(--maxi-jaune, #FFD93D);
            margin-bottom: 6px;
        }
        .v103-vanlife-title {
            font-family: var(--maxi-font-display, 'Fraunces', Georgia, serif);
            font-weight: 700;
            font-size: 22px;
            color: white;
            line-height: 1.25;
            margin-bottom: 8px;
        }
        .v103-vanlife-sub {
            font-family: var(--maxi-font-body, 'DM Sans', sans-serif);
            font-size: 14px;
            color: rgba(255,255,255,.78);
            line-height: 1.5;
            margin: 0;
        }
        .v103-vanlife-btn {
            display: inline-flex;
            align-items: center;
            gap: 8px;
            padding: 14px 24px;
            background: var(--maxi-jaune, #FFD93D);
            color: var(--maxi-bleu-nuit, #1B4F72);
            border-radius: 999px;
            font-family: var(--maxi-font-body, 'DM Sans', sans-serif);
            font-weight: 700;
            font-size: 14px;
            text-decoration: none;
            border: 3px solid var(--maxi-orange, #FF7849);
            box-shadow: 0 6px 0 var(--maxi-orange, #FF7849), 0 10px 22px rgba(0,0,0,0.18);
            transition: transform .25s, box-shadow .25s;
            white-space: nowrap;
        }
        .v103-vanlife-btn:hover {
            transform: translateY(3px);
            box-shadow: 0 3px 0 var(--maxi-orange, #FF7849), 0 5px 14px rgba(0,0,0,0.18);
        }

        /* === v45 - Container chat injecte dynamiquement === */
        #v45-chat-container { display: contents; }

        /* === v46 - Container chat injecte depuis <head>  === */
        #v46-chat-container { display: contents; }
        body #v44-chat-fab { display: grid !important; }

        @media (max-width: 640px) {
            .v44-chat-panel {
                right: 14px; bottom: 84px;
                width: calc(100vw - 28px);
                height: calc(100vh - 110px);
            }
        }

        /* ==========================================================
           === v42 — Sections refondues : Vélo + Notre Engagement
           ========================================================== */
        .v42-velo-section {
            background:
                radial-gradient(circle at 0% 0%, color-mix(in srgb, var(--mint-dark) 14%, transparent), transparent 60%),
                radial-gradient(circle at 100% 100%, color-mix(in srgb, #38BDF8 14%, transparent), transparent 60%),
                color-mix(in srgb, var(--mint-dark) 6%, var(--bg-page));
            padding: var(--section-py) 0;
            position: relative;
            overflow: hidden;
        }
        .v42-velo-section .section-head .eyebrow {
            display: inline-flex; align-items: center; gap: 8px;
            color: var(--mint-dark);
            font-family: var(--font-body);
            font-size: 12px;
            font-weight: 800;
            text-transform: uppercase;
            letter-spacing: .18em;
            margin: 0 0 10px;
        }
        .v42-velo-section .section-head .eyebrow::before { content: '🚴'; font-size: 18px; }
        .v42-velo-section .section-title em { color: var(--mint-dark); font-style: italic; font-weight: 700; }
        .v42-velo-grid {
            display: grid;
            grid-template-columns: repeat(3, 1fr);
            gap: 18px;
            margin-top: 36px;
        }
        @media (max-width: 900px) { .v42-velo-grid { grid-template-columns: 1fr; } }
        .v42-velo-card {
            background: white;
            border-radius: var(--radius-card);
            padding: 28px 24px 24px;
            border: 1px solid color-mix(in srgb, var(--mint-dark) 12%, white);
            box-shadow: 0 12px 32px -10px rgba(10,37,64,.12);
            position: relative;
            text-align: center;
            transition: transform .25s, box-shadow .25s;
            overflow: hidden;
        }
        .v42-velo-card:hover { transform: translateY(-4px); box-shadow: 0 20px 40px -10px rgba(10,37,64,.2); }
        /* v110 — anti AI-slop : suppression des stripes colorées en haut, remplacées par un halo coloré derrière l'emoji + tint très léger sur la carte */
        .v42-velo-card.v42-velo-nord     { background: linear-gradient(180deg, #ECFDF5 0%, white 55%); }
        .v42-velo-card.v42-velo-sud      { background: linear-gradient(180deg, #ECFEFF 0%, white 55%); }
        .v42-velo-card.v42-velo-aventure { background: linear-gradient(180deg, #FFF7ED 0%, white 55%); }
        .v42-velo-emoji {
            font-size: 44px;
            line-height: 1;
            margin: 0 auto 14px;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            width: 84px;
            height: 84px;
            border-radius: 50%;
            background: white;
            box-shadow: 0 6px 18px -4px rgba(10,37,64,.15), inset 0 0 0 6px var(--velo-halo, rgba(10,37,64,.08));
        }
        .v42-velo-nord     { --velo-halo: rgba(4, 120, 87, .18); }
        .v42-velo-sud      { --velo-halo: rgba(14, 165, 233, .18); }
        .v42-velo-aventure { --velo-halo: rgba(249, 115, 22, .18); }
        .v42-velo-eyebrow {
            font-family: var(--font-body);
            font-size: 11px;
            font-weight: 800;
            text-transform: uppercase;
            letter-spacing: .16em;
            margin: 0 0 8px;
        }
        .v42-velo-nord .v42-velo-eyebrow { color: var(--mint-dark); }
        .v42-velo-sud .v42-velo-eyebrow { color: #0369A1; }
        .v42-velo-aventure .v42-velo-eyebrow { color: var(--accent-deep); }
        .v42-velo-card h3 {
            font-family: var(--font-display);
            font-weight: 700;
            font-size: 22px;
            line-height: 1.2;
            margin: 0 0 10px;
            color: var(--fg-on-light);
        }
        .v42-velo-card p {
            font-size: 14px;
            color: var(--fg-muted-light);
            line-height: 1.55;
            margin: 0 0 18px;
        }
        .v42-velo-card strong { color: var(--fg-on-light); font-weight: 700; }
        .v42-velo-pills {
            display: flex; gap: 8px; justify-content: center; flex-wrap: wrap;
        }
        .v42-velo-pill {
            display: inline-flex; align-items: center; gap: 4px;
            padding: 6px 12px;
            border-radius: 999px;
            font-size: 12px;
            font-weight: 700;
            font-family: var(--font-body);
        }
        .v42-velo-nord .v42-velo-pill { background: color-mix(in srgb, var(--mint-dark) 14%, white); color: var(--mint-dark); }
        .v42-velo-sud .v42-velo-pill { background: color-mix(in srgb, #0EA5E9 14%, white); color: #0369A1; }
        .v42-velo-aventure .v42-velo-pill { background: color-mix(in srgb, var(--accent) 18%, white); color: var(--accent-deep); }
        .v42-velo-cta {
            margin: 50px auto 0;
            max-width: 900px;
            padding: 28px 32px;
            background: linear-gradient(135deg, var(--accent) 0%, #F97316 50%, #FBBF24 100%);
            border-radius: var(--radius-card);
            color: var(--night-900);
            text-align: center;
            box-shadow: 0 18px 40px -10px rgba(255,166,43,.4);
            position: relative;
        }
        .v42-velo-cta-icon { font-size: 36px; line-height: 1; margin-bottom: 14px; display: block; }
        .v42-velo-cta-title {
            font-family: var(--font-display);
            font-weight: 700;
            font-size: clamp(18px, 2vw, 24px);
            margin: 0 0 12px;
            line-height: 1.35;
        }
        .v42-velo-cta-sep {
            border-top: 1px dashed rgba(10,37,64,.3);
            margin: 14px auto;
            max-width: 80%;
        }
        .v42-velo-cta-sub {
            font-size: 14px;
            line-height: 1.55;
            margin: 0;
        }
        .v42-velo-cta-sub strong { font-weight: 800; }

        /* === Section "Notre engagement" (v42) RETIREE en v112 — déplacée en mini-bandeau dans le méga-menu (.megamenu-engage) === */

        /* === Résumé élec long === */
        .v42-elec-summary {
            margin: 40px auto 0;
            max-width: 880px;
            padding: 28px 30px;
            background: linear-gradient(155deg, white 0%, color-mix(in srgb, var(--mint-dark) 5%, white) 100%);
            border-radius: var(--radius-card);
            border: 1px solid color-mix(in srgb, var(--mint-dark) 16%, white);
            box-shadow: 0 12px 30px -10px rgba(10,37,64,.1);
        }
        .v42-elec-summary h3 {
            display: flex; align-items: center; gap: 10px;
            font-family: var(--font-display);
            font-size: 20px;
            margin: 0 0 14px;
            color: var(--fg-on-light);
        }
        .v42-elec-summary h3::before { content: '⚡'; font-size: 22px; }
        .v42-elec-summary p {
            font-size: 14px;
            color: var(--fg-on-light);
            line-height: 1.6;
            margin: 0 0 14px;
        }
        .v42-elec-summary p:last-child { margin-bottom: 0; }
        .v42-elec-summary strong { color: var(--mint-dark); font-weight: 700; }
        .v42-elec-advantages {
            list-style: none;
            padding: 0;
            margin: 14px 0;
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 8px;
        }
        @media (max-width: 700px) { .v42-elec-advantages { grid-template-columns: 1fr; } }
        .v42-elec-advantages li {
            padding: 10px 14px;
            background: color-mix(in srgb, var(--mint-dark) 9%, white);
            border-radius: 10px;
            font-size: 13px;
            color: var(--fg-on-light);
            line-height: 1.4;
            display: flex; align-items: flex-start; gap: 8px;
        }
        .v42-elec-advantages li::before {
            content: '✓';
            color: var(--mint-dark);
            font-weight: 800;
            flex: 0 0 auto;
            margin-top: 1px;
        }

        /* ==========================================================
           === v67 - Cacher AGRESSIVEMENT tout ce qui apparait apres
           le footer sauf nos widgets blanchis (whitelist)
           ========================================================== */
        /* Articles Joomla mal places au niveau body */
        body > article.com-content-article,
        body > .com-content-article,
        body > article.item-page,
        body > .item-page,
        body > article,
        body > .com-content { display: none !important; }
        /* Moduletables au niveau body : seules les banners cookies + widgets autorises restent */
        body > .moduletable:not([class*="cookie"]):not([class*="banner"]):not([class*="jb-cookies"]) {
            display: none !important;
        }
        /* Tous les enfants directs du body apres footer SAUF whitelist */
        body footer ~ article,
        body footer ~ section,
        body footer ~ p,
        body footer ~ aside,
        body footer ~ ul,
        body footer ~ ol,
        body footer ~ dl,
        body footer ~ form,
        body footer ~ table { display: none !important; }
        /* DIVs apres footer : on cache TOUT sauf nos widgets blanchis */
        body footer ~ div:not([id^="v44-"]):not([id^="v45-"]):not([id^="v46-"]):not([id^="v49-"]):not([id^="v52-"]):not([id^="v66-"]):not([class*="fab"]):not([class*="megamenu"]):not([class*="sticky-mobile"]):not([class*="v44-"]):not([class*="v45-"]):not([class*="v46-"]):not([class*="v49-"]):not([class*="v66-"]):not([class*="jb-cookies"]):not([class*="cookie"]):not([class*="banner"]):not([class*="topbanner"]):not([id*="jb-cookies"]):not([id="megamenu-backdrop"]):not([id="megamenu-panel"]):not([id="bottleModal"]):not([class*="n4ja-ov"]):not([class*="n4jo-ov"]) {
            display: none !important;
        }
        /* Whitelist explicite : nos widgets visibles */
        body > .fab-stack,
        body > .fab-whatsapp,
        body > .sticky-mobile-phone,
        body > .megamenu-backdrop,
        body > .megamenu-panel,
        body > .megamenu-fab,
        body > #v45-chat-container,
        body > #v46-chat-container,
        body > [id^="v44-chat"],
        body > [id^="v45-chat"],
        body > [id^="v46-chat"],
        body > [id^="v49-chat"],
        body > [class*="jb-cookies"],
        body > [id*="jb-cookies"] {
            display: revert !important;
        }
        /* Cookies banner systeme */
        body #jb-cookies-bar, body [id*="jb-cookies"], body [class*="jb-cookies"] {
            display: block !important;
        }
        /* Notre chat fab et son panel restent fonctionnels */
        body #v44-chat-fab { display: grid !important; }
        body #v44-chat-panel:not(.is-open) { opacity: 0 !important; pointer-events: none !important; }
        body #v44-chat-panel.is-open { display: flex !important; flex-direction: column !important; opacity: 1 !important; pointer-events: auto !important; }

        /* ==========================================================
           === v40 — FABs bottom-LEFT + flash anim + partage par sim
           ========================================================== */
        /* Override v35.1+v39 : forcer FABs à gauche bas */
        html body .fab-stack {
            position: fixed !important;
            left: 18px !important;
            right: auto !important;
            bottom: 218px !important;
            top: auto !important;
            align-items: flex-start !important;
        }
        html body .fab-question-pro {
            left: 18px !important;
            right: auto !important;
            bottom: 156px !important;
        }
        @media (max-width: 640px) {
            html body .fab-stack { left: 14px !important; bottom: 200px !important; }
            html body .fab-question-pro { left: 14px !important; bottom: 144px !important; }
        }
        /* Décaler aussi le bouton tel-pro à gauche si visible */
        html body .fab-tel-pro { left: 18px !important; right: auto !important; }
        @media (max-width: 640px) {
            html body .fab-tel-pro { left: 14px !important; }
        }

        /* Flash animation sur changement de total */
        @keyframes v40-flash {
            0% { background-color: rgba(255,217,61,.35); transform: scale(1); }
            50% { background-color: rgba(255,217,61,.18); transform: scale(1.02); }
            100% { background-color: transparent; transform: scale(1); }
        }
        .v30-total-value.v40-just-changed,
        .v34-card-price.v40-just-changed,
        .v37-total-combine-value.v40-just-changed {
            animation: v40-flash .6s ease-out;
            border-radius: 8px;
        }

        /* Bouton partage individuel */
        .v40-share-sim {
            display: inline-flex; align-items: center; gap: 6px;
            margin-top: 12px;
            padding: 8px 16px;
            background: linear-gradient(135deg, var(--accent) 0%, var(--accent-deep) 100%);
            color: var(--night-900);
            border: 0;
            border-radius: 999px;
            font-weight: 800;
            font-size: 12px;
            text-transform: uppercase;
            letter-spacing: .04em;
            cursor: pointer;
            box-shadow: 0 6px 14px -4px rgba(255,166,43,.5);
            transition: transform .2s;
        }
        .v40-share-sim:hover { transform: translateY(-2px); }
        .v40-share-sim::before { content: '↗'; font-size: 14px; font-weight: 700; }

        /* Ordre Tarifs cards AVANT simulateurs */
        #combien-coute .v34-simple-grid { order: 1; }
        #combien-coute .v39-tarifs-extras { order: 2; }
        #combien-coute .v40-sims-header { order: 3; }
        #combien-coute .v30-sims-wrap { order: 4; }
        /* v47 — Bloc "Borne intelligente" passe APRES les sims */
        #combien-coute .v44-elec-premium { order: 5; }
        #combien-coute .v37-total-combine { order: 6; }
        #combien-coute > .container { display: flex; flex-direction: column; }
        #combien-coute > .container > .section-head { order: 0; }
        #combien-coute > .container > p[style*="text-align:center"] { order: 7; }
        #combien-coute > .container > .v37-share-overlay { order: 99; }
        #combien-coute > .container > .v37-share-toast { order: 100; }

        /* ==========================================================
           === v39 — Hide Joomla details + RSS link + Eq picker
           ========================================================== */
        /* Cacher les tags/détails Joomla auto-rendus au-dessus du contenu */
        body .com-content-article > .article-info,
        body .com-content-article > .tags,
        body .item-page > .article-info,
        body .item-page > dl.tags,
        body article > .article-info,
        body article > dl.tags,
        body .article-details,
        body dl.article-info,
        body .tags-information,
        body .item-page header.article-header { display: none !important; }
        /* Garder visible NOTRE bloc tags custom (v37-tags-block) */
        body .v37-tags-block { display: block !important; }
        body .v37-tags-block ul,
        body .v37-tags-block li { display: revert !important; }
        /* v44 — Garder visible le widget chat IA même s'il est après footer */
        body .v44-chat-panel { display: flex !important; }

        /* === RSS van life link dans footer === */
        .v39-rss-block {
            margin: 20px auto 0;
            padding: 18px 22px;
            max-width: 720px;
            background: linear-gradient(135deg, color-mix(in srgb, var(--accent) 18%, var(--night-900)) 0%, color-mix(in srgb, var(--accent-deep) 18%, var(--night-900)) 100%);
            border: 1px solid rgba(255,217,61,.28);
            border-radius: 18px;
            display: flex; align-items: center; gap: 18px; flex-wrap: wrap; justify-content: space-between;
        }
        .v39-rss-block .v39-rss-text {
            flex: 1; min-width: 200px;
            color: white;
        }
        .v39-rss-block .v39-rss-eyebrow {
            font-family: var(--font-body);
            font-size: 11px;
            font-weight: 800;
            text-transform: uppercase;
            letter-spacing: .14em;
            color: var(--accent);
            margin-bottom: 4px;
        }
        .v39-rss-block .v39-rss-title {
            font-family: var(--font-display);
            font-weight: 700;
            font-size: 18px;
            margin: 0 0 4px;
            line-height: 1.2;
        }
        .v39-rss-block .v39-rss-sub {
            font-size: 12.5px;
            color: rgba(255,255,255,.78);
            line-height: 1.45;
            margin: 0;
        }
        .v39-rss-btn {
            display: inline-flex; align-items: center; gap: 8px;
            background: var(--accent);
            color: var(--night-900);
            padding: 12px 20px;
            border-radius: 999px;
            font-weight: 800;
            font-size: 14px;
            text-decoration: none;
            box-shadow: 0 8px 20px -4px rgba(255,166,43,.6);
            transition: transform .2s;
            white-space: nowrap;
        }
        .v39-rss-btn:hover { transform: translateY(-2px); }
        .v39-rss-btn::before { content: '📡'; font-size: 16px; }

        /* === Sim élec v39 — modes + équipements === */
        .v39-mode-tabs {
            display: flex; gap: 4px;
            background: color-mix(in srgb, var(--mint-dark) 8%, white);
            padding: 4px;
            border-radius: 999px;
            margin-bottom: 14px;
        }
        .v39-mode-tab {
            flex: 1;
            padding: 8px 6px;
            border: 0;
            background: transparent;
            border-radius: 999px;
            font-family: var(--font-body);
            font-size: 12px;
            font-weight: 700;
            color: var(--fg-on-light);
            cursor: pointer;
            transition: background .2s, color .2s, box-shadow .2s;
        }
        .v39-mode-tab.is-active {
            background: white;
            color: var(--mint-dark);
            box-shadow: 0 3px 10px -2px rgba(16,185,129,.3);
        }
        .v39-mode-tab small {
            display: block; font-size: 10px; font-weight: 500; color: var(--fg-muted-light); margin-top: 2px;
        }
        .v39-eq-list {
            list-style: none; padding: 0; margin: 12px 0 0;
            display: grid; grid-template-columns: 1fr; gap: 6px;
        }
        .v39-eq-item {
            display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
            padding: 7px 10px;
            background: color-mix(in srgb, var(--mint-dark) 5%, white);
            border-radius: 8px;
            font-size: 12px;
            border: 1px solid color-mix(in srgb, var(--mint-dark) 14%, white);
            transition: background .15s, border-color .15s;
        }
        .v39-eq-item.is-checked {
            background: color-mix(in srgb, var(--mint-dark) 14%, white);
            border-color: var(--mint-dark);
        }
        .v39-eq-main {
            display: flex; align-items: center; gap: 8px;
            flex: 1; min-width: 150px; cursor: pointer; margin: 0;
        }
        .v39-eq-item input[type="checkbox"] {
            margin: 0; accent-color: var(--mint-dark); width: 14px; height: 14px; flex: 0 0 auto;
        }
        .v39-eq-pw {
            display: inline-flex; align-items: center; gap: 3px;
            font-size: 10px; font-weight: 700; color: var(--mint-dark);
            background: rgba(255,255,255,.7); padding: 2px 6px 2px 3px; border-radius: 4px; white-space: nowrap;
        }
        .v39-eq-w {
            width: 50px; padding: 2px 4px; text-align: center;
            border: 1px solid color-mix(in srgb, var(--mint-dark) 25%, white);
            border-radius: 4px; font-size: 11px; font-weight: 700;
            font-family: var(--font-body); background: white; color: var(--mint-dark);
        }
        .v39-eq-w:focus { outline: 2px solid var(--mint-dark); outline-offset: 1px; }
        .v39-eq-wu { font-size: 10px; font-weight: 700; }
        .v39-eq-ctrl { display: flex; align-items: center; gap: 6px; margin-left: auto; }
        .v39-eq-h {
            width: 52px; padding: 4px 6px; text-align: center;
            border: 1px solid color-mix(in srgb, var(--mint-dark) 30%, white);
            border-radius: 6px; font-size: 12px; font-family: var(--font-body); background: white;
        }
        .v39-eq-h:focus { outline: 2px solid var(--mint-dark); outline-offset: 1px; }
        .v39-eq-hu { font-size: 10px; color: var(--fg-muted-light); }
        .v39-eq-kwh {
            font-size: 10px; font-weight: 700; color: var(--fg-muted-light);
            background: rgba(255,255,255,.6); padding: 2px 6px; border-radius: 4px;
            min-width: 58px; text-align: right;
        }
        .v39-eq-info {
            margin-top: 8px;
            font-size: 11.5px;
            color: var(--fg-muted-light);
            font-style: italic;
        }

        /* Partage par sim individuel */
        .v39-share-sim {
            display: inline-flex; align-items: center; gap: 6px;
            padding: 8px 14px;
            background: transparent;
            border: 1px solid color-mix(in srgb, var(--fg-on-light) 18%, transparent);
            color: var(--fg-on-light);
            border-radius: 999px;
            font-size: 12px;
            font-weight: 700;
            cursor: pointer;
            transition: background .15s, color .15s, border-color .15s;
            margin-top: 12px;
        }
        .v39-share-sim:hover { background: var(--accent); color: var(--night-900); border-color: var(--accent); }
        .v39-share-sim::before { content: '↗'; font-size: 14px; }

        /* Tarifs extra block (forfait 30j + voiture) */
        .v39-tarifs-extras {
            margin-top: 22px;
            padding: 16px 22px;
            background: linear-gradient(135deg, color-mix(in srgb, var(--night-900) 92%, white), color-mix(in srgb, var(--night-700) 92%, white));
            color: white;
            border-radius: 14px;
            display: flex; gap: 18px; flex-wrap: wrap; align-items: center; justify-content: center;
            text-align: center;
            font-size: 13.5px;
            line-height: 1.5;
        }
        .v39-tarifs-extras strong { color: var(--accent); }
        .v39-tarifs-extras .sep { color: rgba(255,255,255,.3); margin: 0 4px; }
        .v39-tarifs-extras .v39-extras-foot {
            display: block; font-size: 11.5px; color: rgba(255,255,255,.55); margin-top: 6px; font-style: italic;
        }

        /* ==========================================================
           === v37 — Bloc tags discret + Total combiné + Bouton partage
           ========================================================== */
        .v37-tags-block {
            margin: 24px auto 0;
            padding: 18px 22px 16px;
            max-width: 1100px;
            background: rgba(255,255,255,.04);
            border: 1px solid rgba(255,255,255,.08);
            border-radius: 14px;
            font-size: 12px;
            line-height: 1.55;
            color: rgba(255,255,255,.55);
        }
        .v37-tags-block .v37-tags-head {
            display: flex; align-items: center; gap: 10px;
            margin-bottom: 10px;
        }
        .v37-tags-block .v37-tags-head .v37-tags-update {
            font-weight: 700;
            color: rgba(255,255,255,.75);
            text-transform: uppercase;
            letter-spacing: .12em;
            font-size: 10px;
            padding: 4px 10px;
            background: rgba(255,255,255,.08);
            border-radius: 999px;
        }
        .v37-tags-block .v37-tags-head .v37-tags-label {
            font-style: italic;
            color: rgba(255,255,255,.45);
            font-size: 11px;
        }
        .v37-tags-block .v37-tags-list {
            list-style: none;
            padding: 0; margin: 0;
            display: flex;
            flex-wrap: wrap;
            gap: 6px;
        }
        .v37-tags-block .v37-tags-list a {
            display: inline-block;
            padding: 4px 10px;
            background: rgba(255,255,255,.06);
            border: 1px solid rgba(255,255,255,.08);
            border-radius: 999px;
            color: rgba(255,255,255,.65) !important;
            font-size: 11px;
            text-decoration: none;
            transition: background .15s, color .15s, border-color .15s;
        }
        .v37-tags-block .v37-tags-list a:hover {
            background: rgba(255,217,61,.14);
            color: var(--accent) !important;
            border-color: rgba(255,217,61,.35);
        }

        /* Total combiné séjour + élec */
        .v37-total-combine {
            margin: 30px auto 0;
            max-width: 720px;
            background: linear-gradient(135deg, var(--night-900) 0%, var(--night-700) 100%);
            border-radius: var(--radius-card);
            padding: 24px 28px;
            color: white;
            box-shadow: 0 14px 36px -10px rgba(10,37,64,.4);
            display: flex; align-items: center; justify-content: space-between; gap: 18px; flex-wrap: wrap;
        }
        .v37-total-combine-label {
            font-family: var(--font-body);
            font-size: 12px;
            font-weight: 800;
            text-transform: uppercase;
            letter-spacing: .14em;
            color: rgba(255,255,255,.6);
            margin-bottom: 4px;
        }
        .v37-total-combine-value {
            font-family: var(--font-display);
            font-weight: 800;
            font-size: 38px;
            line-height: 1;
            color: var(--accent);
        }
        .v37-total-combine-sub {
            font-size: 12px;
            color: rgba(255,255,255,.55);
            margin-top: 4px;
            line-height: 1.4;
        }
        .v37-total-combine .v37-share-btn {
            background: linear-gradient(135deg, var(--accent), var(--accent-deep));
            color: var(--night-900);
            border: 0;
            padding: 12px 20px;
            border-radius: 999px;
            font-weight: 800;
            font-size: 14px;
            display: inline-flex; align-items: center; gap: 8px;
            cursor: pointer;
            box-shadow: 0 6px 18px -4px rgba(255,166,43,.5);
            transition: transform .2s;
            white-space: nowrap;
        }
        .v37-total-combine .v37-share-btn:hover { transform: translateY(-2px); }
        .v37-total-combine .v37-share-btn::before { content: '👥'; font-size: 16px; }

        /* Share modal */
        .v37-share-overlay {
            position: fixed; inset: 0;
            background: rgba(10,37,64,.62);
            backdrop-filter: blur(6px);
            z-index: 9998;
            display: none;
            align-items: center; justify-content: center;
        }
        .v37-share-overlay.is-open { display: flex; }
        .v37-share-modal {
            background: white;
            border-radius: 22px;
            padding: 28px 28px 24px;
            max-width: 440px;
            width: calc(100% - 28px);
            box-shadow: 0 40px 80px -20px rgba(0,0,0,.4);
            position: relative;
        }
        .v37-share-modal h3 {
            font-family: var(--font-display);
            font-size: 22px;
            margin: 0 0 6px;
            color: var(--fg-on-light);
        }
        .v37-share-modal p { font-size: 13px; color: var(--fg-muted-light); margin: 0 0 18px; line-height: 1.45; }
        .v37-share-modal .v37-share-msg {
            background: var(--bg-section-alt);
            border-radius: 12px;
            padding: 14px 16px;
            font-size: 13px;
            color: var(--fg-on-light);
            line-height: 1.55;
            margin-bottom: 18px;
            border: 1px dashed var(--card-border);
            white-space: pre-wrap;
        }
        .v37-share-buttons {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 10px;
        }
        .v37-share-buttons button, .v37-share-buttons a {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            gap: 8px;
            padding: 12px 14px;
            border-radius: 12px;
            border: 1px solid var(--card-border);
            background: white;
            font-weight: 700;
            font-size: 14px;
            color: var(--fg-on-light);
            text-decoration: none;
            cursor: pointer;
            transition: transform .15s, background .15s, border-color .15s;
        }
        .v37-share-buttons button:hover, .v37-share-buttons a:hover {
            transform: translateY(-2px);
            background: color-mix(in srgb, var(--accent) 6%, white);
            border-color: var(--accent);
        }
        .v37-share-buttons .v37-btn-wa { background: linear-gradient(135deg,#25D366,#128C7E); color: white; border-color: transparent; }
        .v37-share-buttons .v37-btn-mail { background: linear-gradient(135deg,#0EA5E9,#1E40AF); color: white; border-color: transparent; }
        .v37-share-buttons .v37-btn-sms { background: linear-gradient(135deg,#A78BFA,#6D28D9); color: white; border-color: transparent; }
        .v37-share-buttons .v37-btn-copy { background: linear-gradient(135deg,var(--accent),var(--accent-deep)); color: var(--night-900); border-color: transparent; }
        .v37-share-buttons .v37-btn-native { grid-column: span 2; background: linear-gradient(135deg, var(--mint-dark), #047857); color: white; border-color: transparent; }
        .v37-share-close {
            position: absolute; top: 14px; right: 14px;
            width: 32px; height: 32px;
            border: 0; background: var(--bg-section-alt);
            border-radius: 50%;
            cursor: pointer;
            font-size: 18px;
            color: var(--fg-muted-light);
        }
        .v37-share-close:hover { background: var(--card-border); color: var(--fg-on-light); }
        .v37-share-toast {
            position: fixed; bottom: 24px; left: 50%; transform: translateX(-50%);
            background: var(--mint-dark); color: white;
            padding: 12px 22px;
            border-radius: 999px;
            font-weight: 700;
            font-size: 13px;
            z-index: 10000;
            box-shadow: 0 12px 28px -8px rgba(0,0,0,.3);
            opacity: 0; pointer-events: none;
            transition: opacity .25s, transform .25s;
        }
        .v37-share-toast.is-visible { opacity: 1; transform: translateX(-50%) translateY(-4px); }

        /* ==========================================================
           === v35.1 — Override final : fab-stack DROITE sous question?
           Placé en fin de style pour gagner la cascade contre v34
           ========================================================== */
        body .fab-stack,
        html body .fab-stack {
            position: fixed !important;
            left: 18px !important;        /* v40 — GAUCHE */
            right: auto !important;
            bottom: 218px !important;     /* Écouter mer EN HAUT */
            top: auto !important;
            z-index: 56;
            display: flex !important;
            flex-direction: column !important;
            align-items: flex-start !important;
        }
        body .fab-question-pro,
        html body .fab-question-pro {
            left: 18px !important;        /* v40 — GAUCHE */
            right: auto !important;
            bottom: 156px !important;     /* Une question? EN BAS */
        }
        @media (max-width: 640px) {
            body .fab-stack, html body .fab-stack { left: 14px !important; bottom: 200px !important; }
            body .fab-question-pro, html body .fab-question-pro { left: 14px !important; bottom: 144px !important; }
        }


        /* === v41 — Anti scroll-jump sur interaction simulateur === */
        #combien-coute,
        #combien-coute * {
            scroll-margin-top: 0 !important;
            scroll-margin-bottom: 0 !important;
        }
        #combien-coute :focus { scroll-margin-top: 100px !important; }
        /* Empêcher tout overflow/scroll triggered par changement valeur */
        #combien-coute input[type="range"] { touch-action: pan-x; }
