/* ---- feuille de la page /offre-vitrine ---- */
/* ── VARIABLES ─────────────────────────────── */
        :root {
            --black:     var(--fg);
            --ink:       var(--fg);
            --white:     var(--bg);
            --ivory:     var(--muted);
            --paper:     var(--muted);
            --tc:        var(--accent-ink);
            --tc-deep:   var(--fg);
            --tc-dim:    var(--yellow);
            --warm-gray: var(--muted-fg);
            --border:    var(--border);
            --border-d:  var(--border-input);
            --mono:      var(--font-body);
        }

        /* ── RESET ─────────────────────────────────── */
        *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
        html { scroll-behavior: smooth; }
        body {
            font-family: var(--font-body);
            background: var(--white);
            color: var(--ink);
            line-height: 1.55;
            font-size: 16px;
            -webkit-font-smoothing: antialiased;
            overflow-x: hidden;
        }
        a { color: inherit; text-decoration: none; }

        /* ── TYPOGRAPHY ────────────────────────────── */
        .display {
            font-family: var(--font-head);
            font-weight: 700;
            letter-spacing: -0.04em;
            line-height: 0.96;
        }

        .countdown-inline {
            display: inline-flex;
            align-items: center;
            gap: 6px;
            background: rgba(0,0,0,.18);
            border-radius: 6px;
            padding: 2px 10px;
            font-variant-numeric: tabular-nums;
            font-weight: 700;
            font-size: 12.5px;
            letter-spacing: 0.04em;
            margin-left: 8px;
        }

        /* ── HEADER ────────────────────────────────── */
        .lp-header {
            padding: 20px 24px;
            display: flex;
            align-items: center;
            justify-content: space-between;
            border-bottom: var(--bw) solid var(--fg);
            background: var(--white);
        }
        .lp-brand {
            display: flex;
            flex-direction: column;
            gap: 2px;
            line-height: 1;
        }
        .lp-logo {
            font-family: var(--font-head);
            font-weight: 700;
            font-size: 20px;
            letter-spacing: -0.04em;
            color: var(--ink);
        }
        .lp-logo span { color: var(--tc); }
        .lp-tagline {
            font-size: 10px;
            font-weight: 700;
            letter-spacing: 0.12em;
            text-transform: uppercase;
            color: var(--warm-gray);
        }
        .lp-header-cta {
            display: inline-flex;
            align-items: center;
            gap: 6px;
            background: var(--tc);
            color: var(--accent-fg);
            font-size: 13px;
            font-weight: 700;
            padding: 9px 20px;
            border-radius: var(--r-full);
            border: var(--bw) solid var(--fg);
            box-shadow: var(--pop);
            cursor: pointer;
            font-family: var(--font-head);
            transition: transform var(--t) var(--ease-bounce), box-shadow var(--t) var(--ease-bounce);
            white-space: nowrap;
        }
        .lp-header-cta:hover { transform: translate(-2px, -2px); box-shadow: var(--pop-hover); }

        /* ── HERO ──────────────────────────────────── */
        .hero-wrap {
            background: var(--black);
            position: relative;
            overflow: hidden;
        }
        /* cercle jaune massif, decentre en haut a droite : un coin du cercle
           deborde derriere le bandeau de titre sans jamais passer sous le texte
           blanc (contraste blanc-sur-jaune illisible sur fond sombre). */
        .hero-wrap::before {
            content: '';
            position: absolute;
            top: -26%;
            left: 92%;
            width: clamp(280px, 40vw, 480px);
            height: clamp(280px, 40vw, 480px);
            background: var(--yellow);
            border-radius: 50%;
            opacity: .92;
            transform: translateX(-50%);
            z-index: 0;
            pointer-events: none;
            animation: ov-hero-drift 16s ease-in-out infinite;
        }
        /* coin de pois, discret sur le fond sombre */
        .hero-wrap::after {
            content: '';
            position: absolute;
            top: 0; left: 0;
            width: min(240px, 42vw);
            height: min(240px, 42vw);
            background-image: radial-gradient(var(--fg-inverse) 1.5px, transparent 1.6px);
            background-size: 18px 18px;
            opacity: .12;
            -webkit-mask-image: radial-gradient(circle at 0 0, black 55%, transparent 78%);
                    mask-image: radial-gradient(circle at 0 0, black 55%, transparent 78%);
            pointer-events: none;
            z-index: 0;
        }
        @keyframes ov-hero-drift {
            0%, 100% { transform: translateX(-50%) translateY(0); }
            50%      { transform: translateX(-50%) translateY(2.4%); }
        }
        @media (max-width: 640px) {
            .hero-wrap::before,
            .hero-wrap::after { display: none; }
        }
        @media (prefers-reduced-motion: reduce) {
            .hero-wrap::before { animation: none; }
        }
        .hero {
            padding: clamp(56px, 10vw, 96px) 24px clamp(48px, 8vw, 80px);
            max-width: 760px;
            margin: 0 auto;
            text-align: center;
        }
        .offer-badge {
            display: flex;
            width: fit-content;
            margin-left: auto;
            margin-right: auto;
            align-items: center;
            gap: 8px;
            background: var(--yellow);
            color: var(--fg);
            border: var(--bw) solid var(--fg);
            border-radius: var(--r-full);
            padding: 6px 16px;
            font-family: var(--font-body);
            font-size: 11.5px;
            font-weight: 700;
            letter-spacing: 0.08em;
            text-transform: uppercase;
            margin-bottom: 28px;
            box-shadow: var(--pop);
            transform: rotate(-1.5deg);
        }
        .offer-badge::before {
            content: '';
            width: 6px;
            height: 6px;
            border-radius: 50%;
            background: var(--tc);
        }

        .hero-title {
            font-family: var(--font-head);
            font-weight: 800;
            font-size: clamp(40px, 9vw, 76px);
            color: white;
            margin-bottom: 18px;
        }
        .hero-title em {
            font-family: var(--font-head);
            font-style: normal;
            font-weight: 800;
            letter-spacing: -0.02em;
            background: var(--yellow);
            color: var(--fg);
            padding: 0 6px;
            box-decoration-break: clone;
            -webkit-box-decoration-break: clone;
            display: inline-block;
            transform: rotate(-1.5deg);
            border: var(--bw) solid var(--fg);
            border-radius: var(--r-sm);
            box-shadow: var(--pop);
        }
        .hero-subtitle {
            font-size: clamp(16px, 2.5vw, 19px);
            line-height: 1.45;
            color: rgba(255,255,255,.72);
            max-width: 520px;
            margin: 0 auto 32px;
            font-weight: 500;
        }
        .hero-subtitle strong {
            color: white;
            font-weight: 700;
        }

        /* CTA candy du hero */
        .hero-cta-btn {
            display: inline-flex;
            align-items: center;
            gap: 10px;
            font-family: var(--font-head);
            font-size: 15.5px;
            font-weight: 700;
            color: white;
            background: var(--accent-ink);
            border: var(--bw) solid var(--fg-inverse);
            border-radius: var(--r-full);
            padding: 15px 16px 15px 26px;
            min-height: 52px;
            box-shadow: 4px 4px 0 0 var(--fg-inverse);
            cursor: pointer;
            margin-bottom: 20px;
            transition: transform var(--t) var(--ease-bounce), box-shadow var(--t) var(--ease-bounce);
        }
        .hero-cta-btn:hover {
            transform: translate(-2px, -2px);
            box-shadow: 6px 6px 0 0 var(--fg-inverse);
        }
        .hero-cta-btn:active {
            transform: translate(2px, 2px);
            box-shadow: 2px 2px 0 0 var(--fg-inverse);
        }
        .hero-cta-arrow {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            width: 30px;
            height: 30px;
            border-radius: 50%;
            background: white;
            color: var(--fg);
            font-weight: 800;
            flex-shrink: 0;
        }
        @media (max-width: 640px) {
            .hero-cta-btn { width: 100%; justify-content: center; }
        }

        /* Hero bullets */
        .hero-bullets {
            list-style: none;
            display: flex;
            flex-direction: column;
            gap: 10px;
            max-width: 460px;
            margin: 0 auto 40px;
            text-align: left;
        }
        .hero-bullets li {
            display: flex;
            align-items: center;
            gap: 10px;
            font-size: clamp(14px, 2vw, 16px);
            color: rgba(255,255,255,.85);
            font-weight: 500;
        }
        .hero-bullets li::before {
            content: '';
            width: 7px;
            height: 7px;
            border-radius: 50%;
            background: var(--tc);
            flex-shrink: 0;
        }

        /* ── MOBILE : compresser le hero pour que le formulaire
           n'arrive pas 100% sous la ligne de flottaison (trafic Instagram = mobile) ── */
        @media (max-width: 640px) {
            .lp-header { padding: 14px 20px; }
            .hero { padding-top: 22px; padding-bottom: 24px; }
            .hero-trade { display: none; }
            .offer-badge { margin-bottom: 10px; }
            .hero-title { margin-bottom: 8px; }
            .hero-subtitle { margin-bottom: 12px; }
            .hero-bullets { margin-bottom: 14px; }
        }

        /* ── WIZARD CONTAINER ──────────────────────── */
        section.section:has(> .section-inner #form-hero) {
            position: relative;
            isolation: isolate;
            overflow-x: clip;
        }
        @media (min-width: 1024px) {
            /* decor : anneau + triangle qui flottent autour de la carte sur fond sombre */
            section.section:has(> .section-inner #form-hero)::before {
                content: '';
                position: absolute;
                top: 10%; left: 6%;
                width: 190px; height: 190px;
                border: var(--bw) solid var(--fg-inverse-muted);
                border-radius: 50%;
                opacity: .5;
                z-index: -1;
                pointer-events: none;
            }
            section.section:has(> .section-inner #form-hero)::after {
                content: '';
                position: absolute;
                bottom: 8%; right: 7%;
                width: 130px; height: 130px;
                background: var(--violet);
                clip-path: polygon(50% 0%, 0% 100%, 100% 100%);
                opacity: .5;
                transform: rotate(10deg);
                z-index: -1;
                pointer-events: none;
            }
        }
        #form-hero {
            width: 100%;
            max-width: 520px;
            margin: 0 auto;
            background: var(--card);
            border: var(--bw) solid var(--fg);
            border-radius: var(--r-lg);
            box-shadow: var(--pop-card);
            padding: 28px 24px 24px;
            position: relative;
            overflow: hidden;
            z-index: 1;
        }

        /* ── PROGRESS BAR ──────────────────────────── */
        .wizard-progress {
            display: flex;
            align-items: center;
            gap: 10px;
            margin-bottom: 22px;
        }
        .progress-bar-track {
            flex: 1;
            height: 10px;
            background: var(--muted);
            border: var(--bw) solid var(--fg);
            border-radius: var(--r-full);
            overflow: visible;
            position: relative;
        }
        .progress-bar-fill {
            height: 100%;
            background: var(--accent-ink);
            border-radius: var(--r-full) 0 0 var(--r-full);
            transition: width .3s var(--ease-bounce);
            position: relative;
        }
        .progress-bar-fill::after {
            content: '';
            position: absolute;
            top: 50%;
            right: -2px;
            width: 12px;
            height: 12px;
            background: var(--yellow);
            border: 1.5px solid var(--fg);
            border-radius: 50%;
            transform: translate(50%, -50%);
        }
        .progress-label {
            font-family: var(--font-head);
            font-size: var(--fs-xs);
            font-weight: 700;
            color: var(--fg);
            background: var(--yellow);
            border: var(--bw) solid var(--fg);
            padding: 3px 10px;
            border-radius: var(--r-full);
            white-space: nowrap;
            letter-spacing: 0.02em;
        }

        /* ── WIZARD STEPS ──────────────────────────── */
        .wizard-step {
            display: none;
            animation: stepIn .2s ease forwards;
        }
        .wizard-step.active {
            display: block;
        }
        @keyframes stepIn {
            from { opacity: 0; transform: translateX(14px); }
            to   { opacity: 1; transform: translateX(0); }
        }
        .wizard-step.slide-back {
            animation: stepInBack .2s ease forwards;
        }
        @keyframes stepInBack {
            from { opacity: 0; transform: translateX(-14px); }
            to   { opacity: 1; transform: translateX(0); }
        }

        .step-question {
            font-family: var(--font-head);
            font-weight: 700;
            font-size: clamp(17px, 3.5vw, 21px);
            letter-spacing: -0.03em;
            color: var(--ink);
            margin-bottom: 18px;
            line-height: 1.2;
        }

        /* ── CARDS GRID ────────────────────────────── */
        .cards-grid {
            display: grid;
            grid-template-columns: repeat(2, 1fr);
            gap: 8px;
            margin-bottom: 20px;
        }
        @media (min-width: 420px) {
            .cards-grid.cols-4 { grid-template-columns: repeat(4, 1fr); }
        }
        .choice-card {
            display: flex;
            flex-direction: column;
            align-items: center;
            gap: 6px;
            padding: 14px 10px;
            background: var(--card);
            border: var(--bw) solid var(--border-input);
            border-radius: var(--r-sm);
            cursor: pointer;
            transition: border-color .15s, box-shadow .15s, transform var(--t) var(--ease-bounce), background .15s;
            text-align: center;
            font-family: var(--font-body);
            font-size: 13px;
            font-weight: 700;
            color: var(--fg);
            line-height: 1.3;
            user-select: none;
            -webkit-tap-highlight-color: transparent;
            position: relative;
        }
        .choice-card:hover {
            border-color: var(--fg);
            transform: translateY(-2px);
        }
        .choice-card.selected {
            background: var(--yellow);
            border-color: var(--fg);
            box-shadow: var(--pop);
            transform: translateY(-2px);
        }
        .choice-card.selected::after {
            content: '✓';
            position: absolute;
            top: -8px;
            right: -8px;
            width: 20px;
            height: 20px;
            border-radius: 50%;
            background: var(--fg);
            color: var(--bg);
            font-size: 11px;
            font-weight: 700;
            display: flex;
            align-items: center;
            justify-content: center;
            border: 1.5px solid var(--fg);
            box-shadow: 0 0 0 2px var(--yellow);
        }
        .choice-card:active { transform: scale(.97); }
        .choice-card:focus-visible { outline: 3px solid var(--ring); outline-offset: 3px; }
        .card-icon {
            font-size: 22px;
            line-height: 1;
        }

        /* ── BUTTON PILLS ──────────────────────────── */
        .pills-grid {
            display: flex;
            flex-wrap: wrap;
            gap: 8px;
            margin-bottom: 20px;
        }
        .choice-pill {
            display: inline-flex;
            align-items: center;
            min-height: 44px;
            padding: 9px 18px;
            background: var(--card);
            border: var(--bw) solid var(--border-input);
            border-radius: var(--r-full);
            cursor: pointer;
            font-family: var(--font-body);
            font-size: 13.5px;
            font-weight: 700;
            color: var(--fg);
            transition: border-color .15s, box-shadow .15s, background .15s, transform var(--t) var(--ease-bounce);
            user-select: none;
            -webkit-tap-highlight-color: transparent;
        }
        .choice-pill:hover {
            border-color: var(--fg);
        }
        .choice-pill.selected {
            background: var(--yellow);
            border-color: var(--fg);
            box-shadow: var(--pop);
            transform: translateY(-1px);
        }
        .choice-pill.selected::before {
            content: '✓ ';
            font-weight: 800;
        }
        .choice-pill:focus-visible { outline: 3px solid var(--ring); outline-offset: 3px; }

        /* ── COLOUR PASTILLES (nuances = donnees, ne pas modifier les teintes) ── */
        .color-grid {
            display: flex;
            flex-wrap: wrap;
            gap: 10px;
            margin-bottom: 20px;
        }
        .color-swatch {
            display: flex;
            flex-direction: column;
            align-items: center;
            gap: 5px;
            cursor: pointer;
            user-select: none;
            -webkit-tap-highlight-color: transparent;
        }
        .color-dot {
            width: 44px;
            height: 44px;
            border-radius: 50%;
            border: var(--bw) solid var(--fg);
            transition: transform var(--t) var(--ease-bounce), box-shadow .15s;
            position: relative;
        }
        .color-dot::after {
            content: '';
            position: absolute;
            inset: -5px;
            border-radius: 50%;
            border: var(--bw) solid transparent;
            transition: border-color .15s;
        }
        .color-swatch.selected .color-dot {
            box-shadow: var(--pop);
        }
        .color-swatch.selected .color-dot::after {
            border-color: var(--fg);
        }
        .color-swatch:active .color-dot { transform: scale(.9); }
        .color-swatch:focus-visible .color-dot { outline: 3px solid var(--ring); outline-offset: 3px; }
        .color-label {
            font-family: var(--font-body);
            font-size: 10.5px;
            font-weight: 700;
            color: var(--muted-fg);
            text-align: center;
        }
        .color-swatch.selected .color-label { color: var(--fg); }

        /* ── CHECKBOXES PAGES ──────────────────────── */
        .checkbox-list {
            display: flex;
            flex-direction: column;
            gap: 6px;
            margin-bottom: 20px;
        }
        .checkbox-item {
            display: flex;
            align-items: center;
            gap: 12px;
            padding: 11px 14px;
            background: var(--card);
            border: var(--bw) solid var(--border-input);
            border-radius: var(--r-sm);
            cursor: pointer;
            transition: border-color .15s, box-shadow .15s, background .15s;
            user-select: none;
        }
        .checkbox-item:hover {
            border-color: var(--fg);
        }
        .checkbox-item.checked {
            background: var(--yellow);
            border-color: var(--fg);
            box-shadow: var(--pop);
        }
        .checkbox-item.locked {
            opacity: .8;
            cursor: default;
        }
        .checkbox-box {
            width: 22px;
            height: 22px;
            border-radius: 50%;
            border: var(--bw) solid var(--border-input);
            background: var(--card);
            display: flex;
            align-items: center;
            justify-content: center;
            flex-shrink: 0;
            transition: border-color .15s, background .15s;
        }
        .checkbox-item.checked .checkbox-box {
            border-color: var(--fg);
            background: var(--fg);
        }
        .checkbox-item.locked .checkbox-box {
            border-color: var(--fg);
            background: var(--fg);
            opacity: .7;
        }
        .checkbox-box svg { display: none; }
        .checkbox-item.checked .checkbox-box svg,
        .checkbox-item.locked .checkbox-box svg { display: block; }
        .checkbox-label {
            font-family: var(--font-body);
            font-size: 13.5px;
            font-weight: 700;
            color: var(--fg);
        }
        .checkbox-item.checked .checkbox-label,
        .checkbox-item.locked .checkbox-label { color: var(--fg); }
        .checkbox-item:focus-visible { outline: 3px solid var(--ring); outline-offset: 3px; }

        /* ── TOGGLES ASSETS ────────────────────────── */
        .toggle-list {
            display: flex;
            flex-direction: column;
            gap: 8px;
            margin-bottom: 20px;
        }
        .toggle-item {
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 12px;
            padding: 13px 16px;
            background: var(--card);
            border: var(--bw) solid var(--border-input);
            border-radius: var(--r-sm);
            cursor: pointer;
            transition: border-color .15s, background .15s;
        }
        .toggle-item:hover { border-color: var(--fg); }
        .toggle-item.on { background: var(--yellow); border-color: var(--fg); }
        .toggle-label {
            font-family: var(--font-body);
            font-size: 14px;
            font-weight: 700;
            color: var(--fg);
        }
        .toggle-switch {
            width: 44px;
            height: 24px;
            border-radius: var(--r-full);
            background: var(--border-input);
            border: 1.5px solid var(--fg);
            position: relative;
            cursor: pointer;
            transition: background .2s;
            flex-shrink: 0;
        }
        .toggle-switch::after {
            content: '';
            position: absolute;
            top: 2px;
            left: 2px;
            width: 17px;
            height: 17px;
            border-radius: 50%;
            background: var(--card);
            border: 1px solid var(--fg);
            transition: transform .2s var(--ease-bounce), background .2s;
        }
        .toggle-item.on .toggle-switch {
            background: var(--accent-ink);
        }
        .toggle-item.on .toggle-switch::after {
            transform: translateX(19px);
            background: var(--card);
        }
        .toggle-item.on .toggle-label { color: var(--fg); }
        .toggle-item:focus-visible { outline: 3px solid var(--ring); outline-offset: 3px; }

        /* ── CONTACT STEP ──────────────────────────── */
        .form-field {
            margin-bottom: 14px;
        }
        .form-field label {
            display: block;
            font-family: var(--font-body);
            font-size: 11.5px;
            font-weight: 700;
            letter-spacing: 0.06em;
            text-transform: uppercase;
            color: var(--fg);
            margin-bottom: 6px;
        }
        .form-field input {
            width: 100%;
            background: var(--card);
            border: var(--bw) solid var(--border-input);
            border-radius: var(--r-sm);
            padding: 13px 16px;
            font-family: var(--font-body);
            font-size: 16px;
            color: var(--fg);
            outline: none;
            transition: border-color .2s, box-shadow .2s;
            -webkit-appearance: none;
            appearance: none;
        }
        .form-field input:focus {
            border-color: var(--accent-ink);
            box-shadow: var(--pop-focus);
        }
        .form-field input:focus-visible {
            outline: 3px solid var(--ring);
            outline-offset: 2px;
        }
        .form-field input::placeholder {
            color: var(--muted-fg);
        }

        /* Honeypot - invisible */
        .hp-field {
            position: absolute;
            left: -9999px;
            opacity: 0;
            pointer-events: none;
        }

        /* ── NAV BUTTONS ───────────────────────────── */
        .wizard-nav {
            display: flex;
            gap: 10px;
            margin-top: 4px;
        }
        .btn-prev {
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 6px;
            padding: 14px 20px;
            min-height: 48px;
            background: transparent;
            color: var(--fg);
            font-family: var(--font-body);
            font-size: 14px;
            font-weight: 700;
            border-radius: var(--r-full);
            border: var(--bw) solid var(--fg);
            cursor: pointer;
            transition: background .18s, color .18s;
            white-space: nowrap;
        }
        .btn-prev:hover { background: var(--yellow); color: var(--fg); }
        .btn-prev:focus-visible { outline: 3px solid var(--ring); outline-offset: 3px; }

        .btn-main {
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 8px;
            flex: 1;
            min-height: 48px;
            background: var(--tc);
            color: var(--accent-fg);
            font-family: var(--font-head);
            font-size: 15px;
            font-weight: 700;
            padding: 15px 24px;
            border-radius: var(--r-full);
            border: var(--bw) solid var(--fg);
            box-shadow: var(--pop);
            cursor: pointer;
            transition: transform var(--t) var(--ease-bounce), box-shadow var(--t) var(--ease-bounce);
            letter-spacing: -0.01em;
        }
        .btn-main:hover { transform: translate(-2px, -2px); box-shadow: var(--pop-hover); }
        .btn-main:active { transform: translate(2px, 2px); box-shadow: var(--pop-active); }
        .btn-main:disabled { opacity: .6; cursor: wait; transform: none; }
        .btn-main.full-width { flex: none; width: 100%; }
        .btn-main:focus-visible { outline: 3px solid var(--ring); outline-offset: 3px; }

        .btn-sub {
            margin-top: 12px;
            font-size: 11.5px;
            color: rgba(255,255,255,.45);
            text-align: center;
            line-height: 1.6;
        }

        /* ── ERROR ─────────────────────────────────── */
        .form-error-msg {
            display: none;
            margin-top: 8px;
            font-size: 13px;
            font-weight: 700;
            color: var(--danger);
            text-align: center;
        }
        .form-error-msg.visible { display: block; }

        /* ── SUCCESS STATE ─────────────────────────── */
        .form-success {
            display: none;
            text-align: center;
            padding: 12px 0 8px;
            position: relative;
        }
        .form-success.visible { display: block; }
        /* Confettis geometriques CSS, aucune image */
        .form-success::before,
        .form-success::after {
            content: '';
            position: absolute;
            pointer-events: none;
        }
        .form-success::before {
            top: 2px; left: 16%;
            width: 12px; height: 12px;
            background: var(--violet);
            clip-path: polygon(50% 0, 100% 100%, 0 100%);
            transform: rotate(-14deg);
        }
        .form-success::after {
            top: 10px; right: 14%;
            width: 10px; height: 10px;
            border-radius: 50%;
            background: var(--pink);
        }
        .form-success-icon {
            position: relative;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            width: 60px;
            height: 60px;
            margin-bottom: 16px;
            background: var(--mint);
            border: var(--bw) solid var(--fg);
            border-radius: 50%;
        }
        .form-success-icon::before,
        .form-success-icon::after {
            content: '';
            position: absolute;
            pointer-events: none;
        }
        .form-success-icon::before {
            top: -14px; left: -18px;
            width: 11px; height: 11px;
            background: var(--yellow);
            border: 1.5px solid var(--fg);
            transform: rotate(18deg);
        }
        .form-success-icon::after {
            bottom: -10px; right: -20px;
            width: 9px; height: 9px;
            border-radius: 50%;
            background: var(--accent);
            border: 1.5px solid var(--fg);
        }
        .form-success h3 {
            font-family: var(--font-head);
            font-weight: 700;
            font-size: 21px;
            letter-spacing: -0.03em;
            color: var(--ink);
            margin-bottom: 12px;
        }
        .form-success p {
            font-size: 14px;
            color: var(--warm-gray);
            line-height: 1.65;
            margin-bottom: 8px;
        }
        .form-success p strong { color: var(--ink); }
        .success-divider {
            height: 1px;
            background: var(--border);
            margin: 20px 0 18px;
        }
        .success-cta-label {
            font-size: 13px;
            font-weight: 700;
            color: var(--warm-gray);
            text-transform: uppercase;
            letter-spacing: 0.07em;
            margin-bottom: 14px;
        }
        .success-ctas {
            display: flex;
            flex-direction: column;
            gap: 10px;
        }
        .btn-success-primary {
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 8px;
            width: 100%;
            min-height: 48px;
            padding: 14px 24px;
            background: var(--tc);
            color: var(--accent-fg);
            font-family: var(--font-head);
            font-size: 14px;
            font-weight: 700;
            border-radius: var(--r-full);
            border: var(--bw) solid var(--fg);
            box-shadow: var(--pop);
            cursor: pointer;
            text-decoration: none;
            transition: transform var(--t) var(--ease-bounce), box-shadow var(--t) var(--ease-bounce);
        }
        .btn-success-primary:hover { transform: translate(-2px, -2px); box-shadow: var(--pop-hover); }
        .btn-success-primary:focus-visible,
        .btn-success-secondary:focus-visible { outline: 3px solid var(--ring); outline-offset: 3px; }
        .btn-success-secondary {
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 8px;
            width: 100%;
            min-height: 48px;
            padding: 13px 24px;
            background: transparent;
            color: var(--fg);
            font-family: var(--font-body);
            font-size: 14px;
            font-weight: 700;
            border-radius: var(--r-full);
            border: var(--bw) solid var(--fg);
            cursor: pointer;
            transition: background .18s, color .18s;
        }
        .btn-success-secondary:hover { background: var(--yellow); color: var(--fg); }

        /* ── DIVIDER ───────────────────────────────── */
        .divider {
            height: 1px;
            background: var(--border);
            margin: 0;
        }

        /* ── SECTIONS ──────────────────────────────── */
        .section {
            padding: clamp(56px, 9vw, 88px) 24px;
        }
        .section-inner {
            max-width: 1080px;
            margin: 0 auto;
        }
        /* Variante "narrow" pour sections texte-only (FAQ, pain, CTA final) où la lecture longue n'a pas besoin de largeur */
        .section-inner-narrow {
            max-width: 720px;
            margin: 0 auto;
        }
        .eyebrow {
            display: inline-block;
            font-family: var(--font-body);
            font-size: 11px;
            font-weight: 700;
            letter-spacing: 0.12em;
            text-transform: uppercase;
            color: var(--fg);
            background: var(--yellow);
            border: var(--bw) solid var(--fg);
            border-radius: var(--r-full);
            padding: 4px 12px;
            margin-bottom: 14px;
            box-shadow: var(--pop);
            transform: rotate(-1deg);
        }
        .section-title {
            font-family: var(--font-head);
            font-weight: 800;
            font-size: clamp(28px, 5vw, 44px);
            letter-spacing: -0.035em;
            line-height: 1.05;
            color: var(--ink);
            margin-bottom: 36px;
        }
        /* Surlignage sticker par defaut : aplat jaune incline. Variantes par
           section ci-dessous (squiggle / couleur) pour alterner le geste. */
        .section-title em {
            font-family: var(--font-head);
            font-style: normal;
            font-weight: 800;
            letter-spacing: -0.02em;
            color: var(--fg);
            text-decoration: none;
            position: relative;
            display: inline-block;
            padding: 0 .12em;
            z-index: 0;
        }
        .section-title em::before {
            content: '';
            position: absolute;
            inset: .1em -.04em .05em;
            background: var(--yellow);
            transform: rotate(-2deg);
            border-radius: var(--r-sm);
            z-index: -1;
        }
        .section-lead {
            font-size: clamp(14.5px, 3.4vw, 16.5px);
            color: var(--warm-gray);
            line-height: 1.6;
            max-width: 640px;
            margin: -22px 0 36px;
        }

        /* ── ALTERNANCE DES SURLIGNAGES PAR SECTION (aplat / squiggle, couleur en rotation) ── */
        /* 5 garanties : squiggle violet */
        .section:has(.diff-stack) .section-title em { text-decoration: underline; text-decoration-style: wavy; text-decoration-thickness: 3px; text-underline-offset: 6px; text-decoration-color: var(--violet); }
        .section:has(.diff-stack) .section-title em::before { display: none; }
        /* Sans site pro : aplat menthe */
        section:has(> .section-inner-narrow .pain-item) .section-title em::before { background: var(--mint); }
        /* Réalisations : squiggle rose */
        .work-section .section-title em { text-decoration: underline; text-decoration-style: wavy; text-decoration-thickness: 3px; text-underline-offset: 6px; text-decoration-color: var(--pink); }
        .work-section .section-title em::before { display: none; }
        /* Comment ça se passe : aplat accent */
        section:has(> .section-inner-narrow .steps) .section-title em::before { background: var(--accent); }
        section:has(> .section-inner-narrow .steps) .section-title em { color: var(--accent-fg); }

        /* ── TARIFS ────────────────────────────────── */
        section.section:has(> .section-inner .tarifs-grid) {
            position: relative;
            isolation: isolate;
            overflow-x: clip;
        }
        @media (min-width: 1024px) {
            /* decor : pois discrets en haut a droite + rond violet en bas a gauche */
            section.section:has(> .section-inner .tarifs-grid)::before {
                content: '';
                position: absolute;
                top: 6%; right: 4%;
                width: 220px; height: 220px;
                background-image: var(--pat-dots);
                opacity: .5;
                z-index: -1;
                pointer-events: none;
            }
            section.section:has(> .section-inner .tarifs-grid)::after {
                content: '';
                position: absolute;
                bottom: -60px; left: 2%;
                width: 200px; height: 200px;
                background: var(--violet);
                border-radius: 50%;
                opacity: .18;
                z-index: -1;
                pointer-events: none;
            }
        }
        .tarifs-grid {
            display: grid;
            grid-template-columns: 1fr;
            gap: 16px;
            position: relative;
            z-index: 1;
            padding-top: 14px;
        }
        @media (min-width: 800px) {
            .tarifs-grid {
                grid-template-columns: 1fr 1fr;
                align-items: start;
            }
        }
        .tarif-card {
            background: var(--card);
            border: var(--bw) solid var(--fg);
            border-radius: var(--r-md);
            box-shadow: var(--pop-card);
            padding: 28px 24px;
            position: relative;
            transition: transform var(--t) var(--ease-bounce), box-shadow var(--t) var(--ease-bounce);
        }
        .tarif-card-main {
            background: var(--card);
            border-color: var(--fg);
            border-width: var(--bw);
            box-shadow: var(--pop-card-feat);
        }
        @media (min-width: 1024px) {
            .tarif-card-main {
                transform: scale(1.035);
            }
        }
        /* Etoile decorative, purement graphique : aucun texte ajoute */
        .tarif-card-main::before {
            content: '';
            position: absolute;
            top: -22px;
            right: 20px;
            width: 46px;
            height: 46px;
            background: var(--yellow);
            border: var(--bw) solid var(--fg);
            clip-path: polygon(50% 0%, 61% 35%, 98% 35%, 68% 57%, 79% 91%, 50% 70%, 21% 91%, 32% 57%, 2% 35%, 39% 35%);
            transform: rotate(15deg);
            z-index: 2;
        }
        .tarif-name {
            font-family: var(--font-head);
            font-weight: 700;
            font-size: 20px;
            letter-spacing: -0.03em;
            color: var(--ink);
            margin-bottom: 8px;
        }
        .tarif-price-block {
            display: flex;
            align-items: baseline;
            gap: 12px;
            margin-bottom: 6px;
        }
        .tarif-price-old {
            font-size: var(--fs-md);
            color: var(--muted-fg);
            text-decoration: line-through;
            text-decoration-color: var(--muted-fg);
            text-decoration-thickness: 2px;
            font-family: var(--font-head);
            font-weight: 700;
            letter-spacing: -0.02em;
        }
        .tarif-price-new {
            font-family: var(--font-head);
            font-weight: 800;
            font-size: clamp(40px, 7vw, 60px);
            letter-spacing: -0.04em;
            color: var(--ink);
            line-height: 1;
        }
        .tarif-price-new span { color: var(--tc); }
        .tarif-price-note {
            font-size: 12px;
            color: var(--warm-gray);
            margin-bottom: 20px;
        }
        .tarif-features {
            list-style: none;
            display: flex;
            flex-direction: column;
            gap: 10px;
        }
        .tarif-features li {
            display: flex;
            align-items: flex-start;
            gap: 10px;
            font-size: 13.5px;
            color: var(--ink);
            line-height: 1.4;
        }
        .tarif-features li::before {
            content: '✓';
            display: flex;
            align-items: center;
            justify-content: center;
            width: 18px;
            height: 18px;
            border-radius: 50%;
            border: 1.5px solid var(--fg);
            background: var(--mint);
            color: var(--fg);
            font-weight: 700;
            font-size: 10px;
            margin-top: 1px;
            flex-shrink: 0;
        }
        .tarif-cta {
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 6px;
            width: 100%;
            min-height: 48px;
            margin-top: 24px;
            background: var(--tc);
            color: var(--accent-fg);
            font-family: var(--font-head);
            font-size: 14px;
            font-weight: 700;
            padding: 13px 24px;
            border-radius: var(--r-full);
            border: var(--bw) solid var(--fg);
            box-shadow: var(--pop);
            cursor: pointer;
            transition: transform var(--t) var(--ease-bounce), box-shadow var(--t) var(--ease-bounce);
        }
        .tarif-cta:hover { transform: translate(-2px, -2px); box-shadow: var(--pop-hover); }
        .tarif-cta:active { transform: translate(2px, 2px); box-shadow: var(--pop-active); }
        .tarif-cta-ghost {
            background: transparent;
            color: var(--fg);
            border: var(--bw) solid var(--fg);
            box-shadow: none;
            font-size: 13px;
            padding: 11px 20px;
        }
        .tarif-cta-ghost:hover {
            background: var(--yellow);
            color: var(--fg);
            transform: none;
            box-shadow: none;
        }
        .tarif-cta:focus-visible,
        .tarif-cta-ghost:focus-visible {
            outline: 3px solid var(--ring);
            outline-offset: 3px;
        }
        /* ── INCLUS ────────────────────────────────── */
        .features-list {
            list-style: none;
            display: flex;
            flex-direction: column;
            gap: 2px;
        }
        .features-list li {
            display: flex;
            align-items: flex-start;
            gap: 14px;
            padding: 14px 0;
            border-bottom: 1px solid var(--border);
            font-size: 15px;
            color: var(--ink);
        }
        .features-list li:last-child { border-bottom: none; }
        .feat-check {
            width: 20px;
            height: 20px;
            border-radius: 50%;
            background: rgba(232,101,42,.10);
            border: 1px solid rgba(232,101,42,.25);
            display: flex;
            align-items: center;
            justify-content: center;
            flex-shrink: 0;
            margin-top: 1px;
        }
        .feat-check svg { color: var(--tc); }
        .feat-text strong { color: var(--ink); font-weight: 600; }
        .feat-text span {
            display: block;
            font-size: 12.5px;
            color: var(--warm-gray);
            margin-top: 2px;
        }

        /* ── DIFFERENCIATEURS - GRILLE DE CARTES STICKER ── */
        /* En-tete centre : le contenu ci-dessous occupe tout le conteneur, plus de colonne etroite calee a gauche. */
        .section:has(.diff-stack) .section-inner { text-align: center; }
        .section:has(.diff-stack) .section-title,
        .section:has(.diff-stack) .section-lead {
            margin-left: auto;
            margin-right: auto;
        }
        .diff-stack {
            max-width: none;
            margin: 12px auto 0;
            display: flex;
            flex-wrap: wrap;
            justify-content: center;
            gap: var(--gutter);
        }
        .diff-card {
            position: static;
            display: flex;
            flex-direction: column;
            align-items: flex-start;
            gap: 16px;
            text-align: left;
            flex: 1 1 260px;
            max-width: 320px;
            background: var(--card);
            border: var(--bw) solid var(--fg);
            border-radius: var(--r-lg);
            padding: clamp(24px, 3vw, 30px) clamp(22px, 3vw, 26px);
            margin-bottom: 0;
            box-shadow: var(--pop-card);
            transition: transform var(--t) var(--ease-bounce), box-shadow var(--t) var(--ease-bounce);
        }
        .diff-card:hover { transform: rotate(-1deg) scale(1.02); box-shadow: var(--pop-hover); }
        .diff-number {
            display: flex;
            align-items: center;
            justify-content: center;
            width: 84px;
            height: 84px;
            flex-shrink: 0;
            font-family: var(--font-head);
            font-weight: 800;
            font-size: clamp(20px, 4vw, 26px);
            letter-spacing: -0.03em;
            color: var(--fg);
            border: var(--bw) solid var(--fg);
            white-space: nowrap;
        }
        .diff-card:nth-child(5n+1) .diff-number { background: var(--yellow); border-radius: var(--r-full); }
        .diff-card:nth-child(5n+2) .diff-number { background: var(--mint); border-radius: var(--r-arch); }
        .diff-card:nth-child(5n+3) .diff-number { background: var(--pink); border-radius: var(--r-leaf); }
        .diff-card:nth-child(5n+4) .diff-number { background: var(--accent); border-radius: var(--r-full); transform: rotate(-6deg); }
        .diff-card:nth-child(5n+5) .diff-number { background: var(--violet); color: var(--accent-fg); border-radius: var(--r-sm); transform: rotate(8deg); }
        .diff-label {
            font-family: var(--font-head);
            font-weight: 700;
            font-size: clamp(16px, 4vw, 19px);
            letter-spacing: -0.02em;
            color: var(--ink);
            line-height: 1.15;
        }
        .diff-sub {
            font-size: clamp(12.5px, 3vw, 14px);
            color: var(--warm-gray);
            margin-top: 6px;
            line-height: 1.5;
        }
        @media (prefers-reduced-motion: reduce) {
            .diff-card { transition: none; }
            .diff-card:hover { transform: none; box-shadow: var(--pop-card); }
        }

        /* ── RÉALISATIONS - RAIL D'ÉCRANS EN CARTES STICKER ── */
        /* Le fond degrade + les accents de chaque carte (--cc-bg/--cc-bg2/--cc-ink/--cc-acc)
           sont des donnees par client (voir HTML) : on habille juste le cadre autour. */
        .work-section { background: var(--muted); border-top: var(--bw) solid var(--fg); border-bottom: var(--bw) solid var(--fg); }
        .case-rail-wrap { position: relative; overflow-x: clip; }

        .case-wall {
            display: flex;
            gap: 22px;
            overflow-x: auto;
            overflow-y: hidden;
            overflow-anchor: none;
            scroll-snap-type: none;
            scroll-behavior: auto;
            padding: 24px 6px 60px;
            margin: -12px 0 -32px;
            cursor: grab;
            -webkit-overflow-scrolling: touch;
            scrollbar-width: none;
        }
        .case-wall::-webkit-scrollbar { display: none; }
        .case-wall.is-grab { cursor: grabbing; }

        .case-card {
            flex: 0 0 82%;
            max-width: 330px;
            position: relative;
            display: flex;
            flex-direction: column;
            min-height: 384px;
            padding: 22px 22px 20px;
            border-radius: var(--r-md);
            background: linear-gradient(162deg, var(--cc-bg2, #1d2733) 0%, var(--cc-bg, #0d141c) 78%);
            color: var(--cc-ink, #fff);
            text-decoration: none;
            overflow: hidden;
            border: var(--bw) solid var(--fg);
            box-shadow: var(--pop-card);
            transition: transform var(--t) var(--ease-bounce), box-shadow var(--t) var(--ease-bounce);
        }
        .case-card:hover { transform: rotate(-1deg) scale(1.02); box-shadow: var(--pop-hover); }

        .case-card::before {
            content: '';
            position: absolute;
            top: -30%; right: -30%;
            width: 75%; height: 75%;
            background: radial-gradient(circle, var(--cc-acc, #fff) 0%, transparent 65%);
            opacity: .15;
            pointer-events: none;
            transition: opacity .6s ease;
        }
        .case-card:hover::before { opacity: .32; }

        .case-head { display: flex; align-items: center; position: relative; z-index: 2; }
        .case-logo { font-family: var(--font-head); font-weight: 700; font-size: 16px; letter-spacing: -.03em; color: var(--cc-ink, #fff); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; }
        .case-logo i { font-style: normal; color: var(--cc-acc, #fff); }
        .case-card.is-serif .case-logo { font-family: var(--font-head); font-weight: 700; font-size: 15px; letter-spacing: .01em; }

        .case-stage { flex: 1; display: flex; align-items: flex-end; justify-content: center; margin: 14px 0 16px; }
        .case-phone {
            width: 70%;
            border-radius: var(--r-md);
            background: var(--fg);
            padding: 6px;
            border: var(--bw) solid var(--fg-inverse);
            box-shadow: var(--pop);
            transform: rotate(-1.5deg);
            transition: transform var(--t) var(--ease-bounce), box-shadow var(--t) var(--ease-bounce);
        }
        .case-card:hover .case-phone { transform: rotate(1deg) scale(1.04); box-shadow: var(--pop-hover); }
        .case-shot { display: block; width: 100%; aspect-ratio: 11 / 16; border-radius: calc(var(--r-md) - 6px); object-fit: cover; object-position: top center; }

        .case-foot { display: flex; align-items: flex-end; justify-content: space-between; gap: 14px; position: relative; z-index: 2; }
        .case-foot-l { display: flex; flex-direction: column; gap: 5px; min-width: 0; }
        .case-tag { font-size: 9.5px; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--cc-acc, #fff); opacity: .85; }
        .case-name { font-family: var(--font-head); font-weight: 700; font-size: 18px; letter-spacing: -.025em; line-height: 1.05; color: var(--cc-ink, #fff); }
        .case-card.is-serif .case-name { font-family: var(--font-head); font-weight: 700; font-style: normal; }
        .case-go { font-size: 11px; font-weight: 600; letter-spacing: .02em; color: var(--cc-ink, #fff); display: inline-flex; align-items: center; gap: 5px; white-space: nowrap; flex-shrink: 0; opacity: .55; transition: opacity .35s ease, transform .35s ease; }
        .case-card:hover .case-go { opacity: 1; transform: translateX(3px); }

        .case-nav { display: flex; align-items: center; justify-content: space-between; gap: 24px; margin-top: 18px; }
        .case-hint { display: flex; align-items: center; gap: 10px; font-family: var(--font-body); font-size: 11px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--warm-gray); }
        .case-hint span { width: 22px; height: 2px; background: var(--fg); border-radius: 2px; }
        .case-arrows { display: flex; gap: 12px; padding: 2px 8px 8px 2px; }
        .case-arrow {
            width: 52px;
            height: 52px;
            flex: none;
            border-radius: 50%;
            border: var(--bw) solid var(--fg);
            background: var(--accent-ink);
            color: #fff;
            display: grid;
            place-items: center;
            cursor: pointer;
            box-shadow: var(--pop);
            transition: transform var(--t) var(--ease-bounce), box-shadow var(--t) var(--ease-bounce);
        }
        .case-arrow:hover { transform: translate(-2px, -2px); box-shadow: var(--pop-hover); background: var(--accent-ink); color: #fff; }
        .case-arrow:active { transform: translate(2px, 2px); box-shadow: var(--pop-active); }
        .case-arrow:disabled { opacity: .35; pointer-events: none; box-shadow: var(--pop); transform: none; }
        .case-arrow svg { width: 18px; height: 18px; pointer-events: none; }

        @media (min-width: 760px) {
            .case-card { flex-basis: 300px; max-width: none; }
        }
        @media (min-width: 1140px) {
            .case-card { flex-basis: 306px; min-height: 392px; }
        }
        @media (max-width: 759px) {
            .case-wall { gap: 16px; padding: 20px 4px 54px; margin: -10px 0 -30px; }
            .case-card { flex-basis: 80%; }
            .case-phone { width: 64%; }
            .case-arrows { display: none; }
            .case-nav { justify-content: center; margin-top: 14px; }
        }
        @media (prefers-reduced-motion: reduce) {
            .case-wall { scroll-behavior: auto; }
            .case-card, .case-phone, .case-arrow { transition: none; }
        }

        /* ── PROCESS : ronds à ombre dure reliés par un pointillé vertical ── */
        section:has(> .section-inner-narrow .steps) { background: var(--pat-dots-soft), var(--bg); }
        .steps {
            display: flex;
            flex-direction: column;
            gap: 0;
            position: relative;
        }
        .steps::before {
            content: '';
            position: absolute;
            left: 26px;
            top: 26px;
            bottom: 26px;
            border-left: 3px dashed var(--border-input);
            z-index: 0;
        }
        .step {
            display: grid;
            grid-template-columns: 52px 1fr;
            gap: 18px;
            padding: 18px 0;
            align-items: start;
            position: relative;
            z-index: 1;
        }
        .step-n {
            width: 52px;
            height: 52px;
            display: flex;
            align-items: center;
            justify-content: center;
            font-family: var(--font-head);
            font-weight: 800;
            font-size: 15px;
            color: var(--fg);
            letter-spacing: -0.01em;
            border-radius: var(--r-full);
            border: var(--bw) solid var(--fg);
            box-shadow: var(--pop);
            background: var(--card);
        }
        .step:nth-child(5n+1) .step-n { background: var(--yellow); }
        .step:nth-child(5n+2) .step-n { background: var(--mint); }
        .step:nth-child(5n+3) .step-n { background: var(--pink); }
        .step:nth-child(5n+4) .step-n { background: var(--accent); }
        .step:nth-child(5n+5) .step-n { background: var(--violet); color: var(--accent-fg); }
        .step-title {
            font-size: 15.5px;
            font-weight: 700;
            color: var(--ink);
            margin-bottom: 4px;
            margin-top: 6px;
            display: flex;
            align-items: baseline;
            flex-wrap: wrap;
            gap: 8px;
        }
        .step-time {
            font-family: var(--font-body);
            font-size: 10.5px;
            font-weight: 700;
            color: var(--fg);
            background: var(--yellow);
            border: var(--bw) solid var(--fg);
            border-radius: var(--r-full);
            padding: 2px 10px;
            letter-spacing: 0.06em;
            text-transform: uppercase;
            white-space: nowrap;
            font-variant-numeric: tabular-nums;
        }
        .step:nth-child(5n+2) .step-time { background: var(--mint); }
        .step:nth-child(5n+3) .step-time { background: var(--pink); }
        .step:nth-child(5n+4) .step-time { background: var(--accent); color: var(--accent-fg); }
        .step:nth-child(5n+5) .step-time { background: var(--violet); color: var(--accent-fg); }
        .step-desc {
            font-size: 13.5px;
            color: var(--warm-gray);
            line-height: 1.5;
        }

        /* ── CTA SECTION (bloc final) ─────────────── */
        .cta-section {
            background:
                radial-gradient(circle at 92% 18%, var(--fg-inverse) 0 4px, transparent 5px),
                radial-gradient(circle at 8% 78%, var(--fg-inverse) 0 5px, transparent 6px),
                radial-gradient(circle at 46% 94%, var(--yellow) 0 4px, transparent 5px),
                var(--accent);
            border: var(--bw) solid var(--fg);
            box-shadow: var(--pop-hover);
            border-radius: var(--r-lg);
            margin: 0 var(--gutter);
            text-align: center;
            padding: clamp(56px, 9vw, 88px) 24px;
            position: relative;
            isolation: isolate;
            overflow: hidden;
        }
        .cta-section::before {
            content: '';
            position: absolute;
            top: 0; right: 0;
            width: 130px; height: 130px;
            background-image: var(--pat-stripes);
            opacity: .25;
            z-index: -1;
            pointer-events: none;
        }
        .cta-section::after {
            content: '';
            position: absolute;
            bottom: -34px; left: -34px;
            width: 110px; height: 110px;
            background: var(--violet);
            border: var(--bw) solid var(--fg);
            border-radius: 50%;
            opacity: .5;
            z-index: -1;
            pointer-events: none;
        }
        .cta-section .section-inner { max-width: 560px; position: relative; z-index: 1; }
        .cta-deadline {
            display: inline-block;
            background: var(--card);
            border: var(--bw) solid var(--fg);
            color: var(--fg);
            font-family: var(--font-body);
            font-size: 12px;
            font-weight: 700;
            letter-spacing: 0.08em;
            text-transform: uppercase;
            padding: 6px 16px;
            border-radius: var(--r-full);
            margin-bottom: 24px;
            transform: rotate(-2deg);
        }
        .cta-big {
            font-family: var(--font-head);
            font-weight: 800;
            font-size: clamp(30px, 6vw, 52px);
            letter-spacing: -0.03em;
            line-height: 1.05;
            color: var(--fg);
            margin-bottom: 12px;
        }
        .cta-big em {
            font-family: var(--font-head);
            font-style: normal;
            font-weight: 800;
            background: var(--fg-inverse);
            color: var(--fg);
            padding: 0 6px;
            box-decoration-break: clone;
            -webkit-box-decoration-break: clone;
        }
        .cta-sub {
            font-size: 15px;
            color: var(--fg);
            opacity: .78;
            margin-bottom: 36px;
            line-height: 1.5;
        }
        .cta-section .btn-main {
            background: var(--fg);
            color: var(--fg-inverse);
            border-color: var(--fg-inverse);
            box-shadow: 4px 4px 0 0 var(--fg-inverse);
        }
        .cta-section .btn-main:hover {
            box-shadow: 6px 6px 0 0 var(--fg-inverse);
        }
        .cta-section .btn-main:active {
            box-shadow: 2px 2px 0 0 var(--fg-inverse);
        }
        .cta-section .btn-sub {
            color: var(--fg);
            opacity: .7;
        }

        /* ── FAQ ───────────────────────────────────── */
        section.section:has(> .section-inner .faq-list) {
            position: relative;
            isolation: isolate;
            overflow-x: clip;
        }
        @media (min-width: 1024px) {
            section.section:has(> .section-inner .faq-list)::before {
                content: '';
                position: absolute;
                bottom: -1px; left: 6%;
                width: 220px; height: 120px;
                background: var(--violet);
                border: var(--bw) solid var(--fg);
                border-radius: var(--r-arch);
                opacity: .55;
                z-index: -1;
                pointer-events: none;
            }
        }
        .faq-list {
            display: flex;
            flex-direction: column;
            gap: 14px;
            position: relative;
            z-index: 1;
        }
        .faq-item {
            background: var(--muted);
            border: var(--bw) solid var(--fg);
            border-radius: var(--r-md);
            padding: 0 22px;
            transition: box-shadow var(--t) var(--ease-bounce), background var(--t);
        }
        .faq-item.open {
            background: var(--card);
            box-shadow: var(--pop);
        }
        .faq-q {
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 16px;
            padding: 18px 0;
            font-family: var(--font-head);
            font-size: 14.5px;
            font-weight: 700;
            color: var(--fg);
            cursor: pointer;
            user-select: none;
        }
        .faq-q:hover { color: var(--accent-ink); }
        .faq-q:focus-visible { outline: 3px solid var(--ring); outline-offset: 3px; }
        .faq-toggle {
            width: 26px;
            height: 26px;
            border-radius: 50%;
            border: var(--bw) solid var(--fg);
            background: var(--yellow);
            position: relative;
            flex-shrink: 0;
            font-size: 0;
            color: transparent;
            transition: transform var(--t) var(--ease-bounce), border-color .2s;
        }
        .faq-toggle::before,
        .faq-toggle::after {
            content: '';
            position: absolute;
            top: 50%; left: 50%;
            background: var(--fg);
            transition: transform .25s, opacity .25s;
        }
        .faq-toggle::before { width: 12px; height: 2px; transform: translate(-50%, -50%); }
        .faq-toggle::after  { width: 2px; height: 12px; transform: translate(-50%, -50%); }
        .faq-item.open .faq-toggle {
            transform: rotate(90deg);
            border-color: var(--fg);
        }
        .faq-item.open .faq-toggle::after { opacity: 0; }
        .faq-a {
            font-family: var(--font-body);
            font-size: 13.5px;
            color: var(--muted-fg);
            line-height: 1.65;
            max-height: 0;
            overflow: hidden;
            transition: max-height .3s ease, padding .3s ease;
        }
        .faq-item.open .faq-a {
            max-height: 300px;
            padding-bottom: 18px;
        }

        /* ── FOOTER LÉGAL ──────────────────────────── */
        .legal-footer {
            padding: 32px 24px;
            border-top: var(--bw) solid var(--fg);
            background: var(--muted);
            text-align: center;
        }
        .legal-footer p {
            font-family: var(--font-body);
            font-size: 11.5px;
            color: var(--muted-fg);
            line-height: 1.7;
        }
        .legal-footer a {
            color: var(--muted-fg);
            text-decoration: underline;
            text-decoration-color: var(--border-input);
            text-underline-offset: 3px;
            transition: color .15s, text-decoration-color .15s;
        }
        .legal-footer a:hover { color: var(--fg); text-decoration-color: var(--accent-ink); }
        .legal-footer a:focus-visible { outline: 3px solid var(--ring); outline-offset: 2px; }

        /* ── AGITATION PAIN ────────────────────────── */
        /* ── SANS SITE PRO : 3 CARTES STICKER RELIÉES ── */
        .section:has(.pain-item) .section-inner-narrow {
            max-width: 1080px;
            text-align: center;
        }
        .section:has(.pain-item) .section-title,
        .section:has(.pain-item) .section-lead {
            margin-left: auto;
            margin-right: auto;
        }
        .section-inner-narrow > div:has(.pain-item) {
            display: grid;
            grid-template-columns: repeat(3, 1fr);
            gap: var(--gutter);
            position: relative;
        }
        .section-inner-narrow > div:has(.pain-item)::before {
            content: '';
            position: absolute;
            left: 8%;
            right: 8%;
            top: 34px;
            height: 0;
            border-top: 3px dashed var(--border-input);
            z-index: 0;
        }
        .pain-item {
            position: relative;
            z-index: 1;
            display: block;
            text-align: left;
            background: var(--card);
            border: var(--bw) solid var(--fg);
            border-radius: var(--r-md);
            box-shadow: var(--pop-card);
            padding: 40px 24px 26px;
            transition: transform var(--t) var(--ease-bounce), box-shadow var(--t) var(--ease-bounce);
        }
        .pain-item:hover { transform: rotate(-1deg) scale(1.02); box-shadow: var(--pop-hover); }
        .pain-item:last-child { border-bottom: var(--bw) solid var(--fg); }
        .pain-n {
            position: absolute;
            top: calc(var(--bw) * -1 - 18px);
            left: 24px;
            width: 44px;
            height: 44px;
            display: flex;
            align-items: center;
            justify-content: center;
            border-radius: var(--r-full);
            border: var(--bw) solid var(--fg);
            font-family: var(--font-head);
            font-weight: 800;
            font-size: 13px;
            color: var(--fg);
            letter-spacing: -0.01em;
        }
        .pain-item:nth-child(3n+1) .pain-n { background: var(--yellow); }
        .pain-item:nth-child(3n+2) .pain-n { background: var(--pink); }
        .pain-item:nth-child(3n+3) .pain-n { background: var(--mint); }
        .pain-title {
            font-size: 16px;
            font-weight: 700;
            color: var(--ink);
            margin-top: 10px;
            margin-bottom: 6px;
        }
        .pain-desc {
            font-size: 13.5px;
            color: var(--warm-gray);
            line-height: 1.6;
        }
        @media (max-width: 760px) {
            .section-inner-narrow > div:has(.pain-item) { grid-template-columns: 1fr; gap: 34px; }
            .section-inner-narrow > div:has(.pain-item)::before { display: none; }
        }
        @media (prefers-reduced-motion: reduce) {
            .pain-item { transition: none; }
            .pain-item:hover { transform: none; box-shadow: var(--pop-card); }
        }

        /* ── CTA FLOTTANT + FENÊTRE DE CONTACT : voir pg-offre-motion.css (bloc « HUB ») ── */

        /* ══════════════════════════════════════════════
           HERO - STORYTELLING + ANIMATIONS
           ══════════════════════════════════════════════ */
        @keyframes heroFadeUp {
            from { opacity: 0; transform: translateY(24px); }
            to   { opacity: 1; transform: translateY(0); }
        }
        @keyframes heroFadeIn {
            from { opacity: 0; }
            to   { opacity: 1; }
        }
        @keyframes pulseDot {
            0%, 100% { opacity: 0.6; transform: scale(1); }
            50%      { opacity: 1; transform: scale(1.6); }
        }
        @keyframes drawUnderline {
            from { transform: scaleX(0); transform-origin: left; }
            to   { transform: scaleX(1); transform-origin: left; }
        }
        @keyframes bgOrb {
            0%, 100% { transform: translate(0, 0) scale(1); opacity: .22; }
            50%      { transform: translate(40px, -30px) scale(1.15); opacity: .32; }
        }
        @keyframes tradeSwap {
            0%        { opacity: 0; transform: translateY(8px); }
            12%, 88%  { opacity: 1; transform: translateY(0); }
            100%      { opacity: 0; transform: translateY(-8px); }
        }

        /* Formes flottantes nettes, decor "playful geometric" du hero */
        .hero { position: relative; overflow: hidden; }
        .hero::before {
            content: '';
            position: absolute;
            top: 8%;
            left: 4%;
            width: 62px;
            height: 62px;
            background: var(--pink);
            border: var(--bw) solid var(--fg-inverse);
            border-radius: 50%;
            animation: ov-float 7s ease-in-out infinite;
            pointer-events: none;
            z-index: 0;
        }
        .hero::after {
            content: '';
            position: absolute;
            bottom: 10%;
            right: 6%;
            width: 0;
            height: 0;
            border-left: 34px solid transparent;
            border-right: 34px solid transparent;
            border-bottom: 58px solid var(--mint);
            animation: ov-float 9s ease-in-out infinite 1s;
            pointer-events: none;
            z-index: 0;
        }
        .hero-trade { position: relative; z-index: 1; }
        .hero-subtitle { position: relative; z-index: 1; }
        .hero-subtitle::after {
            content: '';
            position: absolute;
            top: -10px;
            right: -64px;
            width: 40px;
            height: 40px;
            background: var(--violet);
            border: var(--bw) solid var(--fg-inverse);
            border-radius: var(--r-sm);
            transform: rotate(20deg);
            animation: ov-float 8s ease-in-out infinite .5s;
            pointer-events: none;
            z-index: 0;
        }
        .btn-sub { position: relative; z-index: 1; }
        .btn-sub::after {
            content: '';
            position: absolute;
            top: -34px;
            left: -50px;
            width: 70px;
            height: 26px;
            background: var(--accent);
            border: var(--bw) solid var(--fg-inverse);
            border-radius: var(--r-full);
            animation: ov-float 10s ease-in-out infinite 1.4s;
            pointer-events: none;
            z-index: 0;
        }
        @keyframes ov-float {
            0%, 100% { transform: translateY(0) rotate(0deg); }
            50%      { transform: translateY(-10px) rotate(4deg); }
        }
        .hero > * { position: relative; z-index: 1; }
        @media (max-width: 640px) {
            .hero::before,
            .hero::after,
            .hero-subtitle::after,
            .btn-sub::after { display: none; }
        }

        /* Pre-headline avec cycling word */
        .hero-trade {
            display: flex;
            width: fit-content;
            margin-left: auto;
            margin-right: auto;
            align-items: center;
            gap: 10px;
            font-size: 13px;
            font-weight: 700;
            letter-spacing: 0.08em;
            text-transform: uppercase;
            color: var(--fg-inverse);
            margin-bottom: 22px;
            padding: 7px 16px 7px 12px;
            background: var(--fg);
            border: var(--bw) solid var(--fg-inverse);
            border-radius: 100px;
            box-shadow: 4px 4px 0 0 var(--fg-inverse-muted);
            transform: rotate(-1deg);
            opacity: 0;
            animation: heroFadeUp .7s .2s ease-out both;
        }
        .hero-trade-dot {
            width: 8px;
            height: 8px;
            border-radius: 50%;
            background: var(--yellow);
            box-shadow: 0 0 0 3px rgba(251,191,36,.28);
            animation: pulseDot 1.8s ease-in-out infinite;
            flex-shrink: 0;
        }
        .hero-trade-word {
            color: var(--yellow);
            font-weight: 800;
            min-width: 110px;
            text-align: left;
            display: inline-block;
        }
        .hero-trade-word.swap {
            animation: tradeSwap 2.6s ease-in-out;
        }

        /* H1 reveal */
        .hero-title {
            opacity: 0;
            animation: heroFadeUp .8s .55s ease-out both;
        }
        .hero-title-line2 {
            display: inline-block;
            position: relative;
        }
        /* Le mot est deja un sticker (bordure + ombre posees sur .hero-title em) :
           plus besoin du trait dessine dessous, ca doublonnait le cadre. */
        .hero-title-line2::after { content: none; animation: none; }

        /* Subtitle reveal */
        .hero-subtitle {
            opacity: 0;
            animation: heroFadeUp .7s 1.1s ease-out both;
        }

        /* Bullets stagger reveal */
        .hero-bullets li {
            opacity: 0;
            animation: heroFadeUp .55s ease-out both;
        }
        .hero-bullets li:nth-child(1) { animation-delay: 1.55s; }

        #form-hero {
            opacity: 0;
            animation: heroFadeIn .8s 0.8s ease-out both;
        }

        /* Reduced motion - respect user pref */
        @media (prefers-reduced-motion: reduce) {
            .hero::before,
            .hero::after,
            .hero-subtitle::after,
            .btn-sub::after,
            .hero-wrap::before,
            .hero-trade-dot,
            .hero-trade-word.swap,
            .hero-title-line2::after { animation: none !important; }
            .hero-title, .hero-subtitle, .hero-bullets li, #form-hero, .hero-trade {
                opacity: 1 !important;
                animation: none !important;
                transform: none !important;
            }
        }

        /* ── SCROLL REVEAL (sections) ── */
        html.js-reveal .section,
        html.js-reveal .cta-section {
            opacity: 0;
            transform: translateY(30px);
            transition: opacity .75s ease, transform .8s cubic-bezier(.16, 1, .3, 1);
            will-change: opacity, transform;
        }
        html.js-reveal .section.in,
        html.js-reveal .cta-section.in {
            opacity: 1;
            transform: none;
        }
        /* Cascade interne : eyebrow -> titre -> texte s'assemblent au lieu d'un bloc. */
        html.js-reveal .section .eyebrow,
        html.js-reveal .section .section-title,
        html.js-reveal .section .section-lead {
            opacity: 0;
            transform: translateY(14px);
            transition: opacity .6s ease, transform .6s cubic-bezier(.16, 1, .3, 1);
        }
        html.js-reveal .section.in .eyebrow       { opacity: 1; transform: none; transition-delay: .06s; }
        html.js-reveal .section.in .section-title  { opacity: 1; transform: none; transition-delay: .14s; }
        html.js-reveal .section.in .section-lead   { opacity: 1; transform: none; transition-delay: .22s; }

        /* Cascade du CONTENU : les items d'une section s'enchaînent au lieu d'apparaître d'un bloc. */
        html.js-reveal .section .pain-item,
        html.js-reveal .section .step,
        html.js-reveal .section .tarif-card,
        html.js-reveal .section .faq-item {
            opacity: 0;
            transform: translateY(20px);
            transition: opacity .6s ease, transform .65s cubic-bezier(.16, 1, .3, 1);
        }
        html.js-reveal .section.in .pain-item,
        html.js-reveal .section.in .step,
        html.js-reveal .section.in .tarif-card,
        html.js-reveal .section.in .faq-item { opacity: 1; transform: none; }
        html.js-reveal .section.in .pain-item:nth-child(1), html.js-reveal .section.in .step:nth-child(1),
        html.js-reveal .section.in .tarif-card:nth-child(1), html.js-reveal .section.in .faq-item:nth-child(1) { transition-delay: .20s; }
        html.js-reveal .section.in .pain-item:nth-child(2), html.js-reveal .section.in .step:nth-child(2),
        html.js-reveal .section.in .tarif-card:nth-child(2), html.js-reveal .section.in .faq-item:nth-child(2) { transition-delay: .28s; }
        html.js-reveal .section.in .pain-item:nth-child(3), html.js-reveal .section.in .step:nth-child(3),
        html.js-reveal .section.in .faq-item:nth-child(3) { transition-delay: .36s; }
        html.js-reveal .section.in .step:nth-child(4), html.js-reveal .section.in .faq-item:nth-child(4) { transition-delay: .44s; }
        html.js-reveal .section.in .step:nth-child(5), html.js-reveal .section.in .faq-item:nth-child(5) { transition-delay: .52s; }
        html.js-reveal .section.in .faq-item:nth-child(6) { transition-delay: .60s; }

        /* Micro-interactions au survol (systeme sticker : rotation + ombre dure). */
        .tarif-card:hover { transform: rotate(-1deg) scale(1.02); box-shadow: var(--pop-hover); }
        .tarif-card-main:hover { transform: rotate(-1deg) scale(1.05); }
        @media (min-width: 1024px) {
            .tarif-card-main:hover { transform: scale(1.035) rotate(-1deg); }
        }
        .faq-item:not(.open):hover { box-shadow: var(--pop); }
        /* Sections à animation propre (ex. stack sticky) : pas de fade qui casserait le sticky */
        html.js-reveal .section.no-reveal {
            opacity: 1 !important;
            transform: none !important;
        }
        @media (prefers-reduced-motion: reduce) {
            html.js-reveal .section,
            html.js-reveal .cta-section,
            html.js-reveal .section .eyebrow,
            html.js-reveal .section .section-title,
            html.js-reveal .section .section-lead,
            html.js-reveal .section .pain-item,
            html.js-reveal .section .step,
            html.js-reveal .section .tarif-card,
            html.js-reveal .section .faq-item {
                opacity: 1 !important;
                transform: none !important;
                transition: none !important;
            }
        }

        /* ── ICÔNES SVG (remplacent les emojis) ─────── */
        .card-icon svg { width: 24px; height: 24px; display: block; }
        .form-success-icon svg { width: 28px; height: 28px; display: inline-block; color: var(--fg); }
        .btn-success-primary svg,
        .btn-success-secondary svg { width: 17px; height: 17px; flex-shrink: 0; }


        /* ── GRAIN DE MARQUE (texture subtile, anti-flat) ── */
        body::after {
            content: '';
            position: fixed;
            inset: 0;
            z-index: 9999;
            pointer-events: none;
            opacity: .04;
            background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url("/offre-vitrine/%23n")'/%3E%3C/svg%3E");
        }

        /* ── CAPTURE EMAIL-FIRST + GATE DÉMO + RDV ─────────────── */
        .capture-title { font-family:var(--font-head); font-weight:700; font-size:clamp(22px,5vw,28px); letter-spacing:-0.03em; line-height:1.1; margin-bottom:10px; color:var(--ink); }
        .capture-sub { font-size:14px; color:var(--warm-gray); margin-bottom:20px; line-height:1.55; }
        .opt { opacity:.6; font-weight:400; text-transform:none; font-size:11px; }
        .full-width { width:100%; }
        .rdv-alt { margin-top:18px; padding-top:18px; border-top:1px solid var(--border); text-align:center; }
        .rdv-alt-label { font-size:12.5px; color:var(--warm-gray); margin-bottom:10px; }
        .rdv-link {
            display:inline-flex; align-items:center; justify-content:center; gap:9px; width:100%;
            min-height:48px;
            color:var(--fg); font-weight:700; font-size:15px; font-family:var(--font-body);
            background: var(--card);
            border: var(--bw) solid var(--fg); padding:14px 20px; border-radius:var(--r-full);
            transition:background .18s, transform var(--t) var(--ease-bounce); cursor:pointer;
        }
        .rdv-link:hover { background:var(--yellow); }
        .rdv-link:focus-visible { outline: 3px solid var(--ring); outline-offset: 3px; }
        .rdv-link svg { width:18px; height:18px; color: var(--accent-ink); }
        #demo-gate { text-align:center; }
        .gate-check {
            width:52px; height:52px; margin:0 auto 18px; border-radius:50%;
            background: color-mix(in srgb, var(--success) 15%, var(--card));
            border: var(--bw) solid var(--fg);
            color:var(--success); display:flex; align-items:center; justify-content:center;
        }
        .gate-check svg { width:26px; height:26px; }
        .gate-skip { margin-top:12px; width:100%; background:transparent; border:none; color:var(--muted-fg); font-family:inherit; font-size:13px; cursor:pointer; padding:8px; text-decoration:underline; text-underline-offset:3px; }
        .gate-skip:hover { color:var(--fg); }
        .gate-skip:focus-visible { outline: 3px solid var(--ring); outline-offset: 2px; }

        /* ── ÉTAPE 6 : optionnel, upload logo, réseau social ─────────── */
        .step-optional { font-size:13px; color:var(--muted-fg); margin:-6px 0 18px; }
        .brief-field { margin-top:18px; }
        .brief-field > label {
            display:block; font-family:var(--font-body); font-size:11.5px; font-weight:700; color:var(--fg);
            text-transform:uppercase; letter-spacing:.06em;
            margin-bottom:6px;
        }
        .brief-field .opt-tag { font-weight:500; color:var(--muted-fg); text-transform:none; letter-spacing:0; }
        .brief-field input[type=text], .brief-field input[type=url] {
            width:100%; font:inherit; font-size:15px; padding:12px 14px;
            border: var(--bw) solid var(--border-input); border-radius:var(--r-sm); background:var(--card); color:var(--fg);
            transition: border-color .18s, box-shadow .18s;
        }
        .brief-field input:focus { outline:none; border-color:var(--accent-ink); box-shadow: var(--pop-focus); }
        .brief-field input:focus-visible { outline: 3px solid var(--ring); outline-offset: 2px; }
        .upload-drop {
            display:flex; align-items:center; gap:12px; width:100%;
            border: var(--bw) dashed var(--border-input); border-radius:var(--r-md); background:var(--card);
            padding:14px 16px; cursor:pointer; transition:border-color .18s, background .18s, transform .15s;
        }
        .upload-drop:hover { border-color:var(--accent-ink); background: color-mix(in srgb, var(--accent) 6%, var(--card)); transform: translateY(-1px); }
        .upload-drop:focus-within { outline: 3px solid var(--ring); outline-offset: 2px; }
        .upload-drop svg { width:22px; height:22px; color:var(--accent-ink); flex-shrink:0; }
        .upload-drop-txt { font-size:13.5px; color:var(--muted-fg); line-height:1.4; }
        .upload-drop-txt b { color:var(--fg); font-weight:700; }
        .upload-drop input[type=file] { display:none; }
        .upload-state { display:none; align-items:center; gap:10px; margin-top:10px; font-size:13.5px; }
        .upload-state.show { display:flex; }
        .upload-state.ok { color:var(--success); font-weight:700; }
        .upload-state.err { color:var(--danger); font-weight:700; }
        .upload-state .u-name { color:var(--fg); font-weight:600; word-break:break-all; }
        .upload-remove { background:none; border:none; color:var(--muted-fg); text-decoration:underline; cursor:pointer; font:inherit; font-size:12.5px; }
        .upload-remove:focus-visible { outline: 3px solid var(--ring); outline-offset: 2px; }

        /* ── MOBILE : compression finale du formulaire (placée en fin de feuille
           pour primer sur les règles #form-hero / capture-title / wizard-progress
           définies plus haut) ── */
        @media (max-width: 640px) {
            #form-hero { padding: 20px 20px 18px; }
            .capture-title { margin-bottom: 6px; }
            .capture-sub { margin-bottom: 12px; }
            .wizard-progress { margin-bottom: 14px; }
            .step-question { margin-bottom: 12px; }
            /* Hero : on le laisse RESPIRER (le formulaire n'y est plus, il est en bas).
               Placé en fin de feuille pour primer sur les règles de base. */
            .hero-trade { display: none !important; }
            .hero { padding-top: 44px; padding-bottom: 48px; }
            .offer-badge { margin-bottom: 24px; }
            .hero-title { font-size: clamp(38px, 11vw, 52px); margin-bottom: 20px; }
            .hero-subtitle { font-size: 15px; margin-bottom: 26px; }
            /* Le paragraphe d'intro du wizard (form en bas) reste compact. */
            #brief-wrap > .capture-sub { font-size: 13px; margin-bottom: 12px; }
        }
    
/* ── TITRE DU WIZARD : surlignage au lieu de l'italique de l'ancienne DA ── */
.capture-title .capture-em { font-style: normal; color: var(--fg); background: linear-gradient(transparent 58%, var(--yellow) 58%); padding: 0 .12em; }

        /* ══ PASSE DE COHERENCE (20/09) ══════════════════════════════ */
        /* ── EN-TETES : un seul systeme, centre, sur toutes les sections ── */
        .section .section-inner > .eyebrow { display: flex; width: fit-content; margin-left: auto; margin-right: auto; }
        .section .section-inner > .section-title,
        .section .section-inner > .section-lead { text-align: center; margin-left: auto; margin-right: auto; }

        /* ── RAIL : meme langage que la landing (carte blanche, scene en aplat + motif) ── */
        .case-card { background: var(--card); color: var(--fg); padding: 16px; min-height: 400px; }
        .case-card::before { display: none; }
        .case-head { padding: 2px 4px 12px; }
        .case-logo, .case-card.is-serif .case-logo { color: var(--fg); font-size: var(--fs-sm); letter-spacing: -.01em; }
        .case-logo i { color: var(--accent-ink); }
        .case-stage { align-items: center; margin: 0 0 14px; padding: 20px 0; border-radius: var(--r-sm); position: relative; overflow: hidden; }
        .case-card:nth-of-type(5n+1) .case-stage { background-color: var(--violet); }
        .case-card:nth-of-type(5n+2) .case-stage { background-color: var(--pink); }
        .case-card:nth-of-type(5n+3) .case-stage { background-color: var(--yellow); }
        .case-card:nth-of-type(5n+4) .case-stage { background-color: var(--mint); }
        .case-card:nth-of-type(5n+5) .case-stage { background-color: var(--accent); }
        .case-card:nth-of-type(3n+1) .case-stage { background-image: var(--pat-dots); }
        .case-card:nth-of-type(3n+2) .case-stage { background-image: var(--pat-grid); }
        .case-card:nth-of-type(3n+3) .case-stage { background-image: var(--pat-stripes); background-size: auto; }
        .case-phone { width: 62%; background: var(--card); border-color: var(--fg); transform: none; position: relative; z-index: 1; }
        .case-card:hover .case-phone { transform: rotate(1.5deg) scale(1.04); box-shadow: var(--pop); }
        .case-foot { padding: 0 4px; }
        .case-tag { color: var(--accent-ink); opacity: 1; font-size: 10px; font-weight: 700; letter-spacing: .1em; }
        .case-name, .case-card.is-serif .case-name { color: var(--fg); font-size: var(--fs-sm); letter-spacing: -.01em; line-height: 1.15; }
        .case-go { color: var(--fg); }

        /* ── TARIFS : cartes de meme hauteur, bouton cale en bas ── */
        .tarifs-grid { align-items: stretch; }
        .tarif-card { display: flex; flex-direction: column; }
        .tarif-card .tarif-features { flex: 1; }
        .tarif-card .tarif-features { margin-bottom: 22px; }
        .tarif-card .tarif-cta { margin-top: auto; }

/* ---- /assets/css/pg-offre-motion.css ---- */
/* ══════════════════════════════════════════════
   pg-offre-motion.css · lmscom · /offre-vitrine/
   Surcouche chargée APRÈS le <style> inline de la page.
   1. États d'animation (GSAP piloté par offre-motion.js)
   2. Décors : bandes croisées, vagues, trait de méthode,
      prix barré tracé
   3. Finitions (contrastes, retours à la ligne, grilles)
   Règles de conversion : la barre promo, les prix et le
   formulaire ne sont jamais masqués. Sans JS, sans GSAP
   ou en mouvement réduit : tout est visible.
   ══════════════════════════════════════════════ */

/* ══ 1. ÉTATS ═══════════════════════════════════ */

/* Attente de l'intro : 900 ms maximum (retirée par le script ou par la sécurité en tête) */
.om-pre .hero-trade,
.om-pre .hero-title,
.om-pre .hero-subtitle,
.om-pre .hero .om-magnet,
.om-pre .hero > .btn-sub { opacity: 0; }

/* Les anciennes apparitions CSS du hero retardaient le titre (0,55 s) et le chapô (1,1 s),
   le formulaire démarrait invisible (0,8 s) : lisibles tout de suite, GSAP prend le relais. */
.hero-trade, .hero-title, .hero-subtitle, .hero-bullets li, #form-hero {
    opacity: 1;
    animation: none;
}

/* Découpes SplitText */
.om-ch, .om-w { display: inline-block; }
.hero-title .om-ch { transform-origin: 50% 100%; }
.hero-trade-word .om-rc { display: inline-block; transform-origin: 50% 100%; }

/* Survols sur les propriétés individuelles : GSAP anime `transform`, le CSS garde rotate/scale */
.diff-card, .pain-item, .tarif-card {
    transition: rotate var(--t) var(--ease-bounce), scale var(--t) var(--ease-bounce),
                translate var(--t) var(--ease-bounce), box-shadow var(--t) var(--ease-bounce);
}
.diff-card:hover, .pain-item:hover, .tarif-card:hover, .tarif-card-main:hover {
    transform: none; rotate: -1deg; scale: 1.02;
}
@media (min-width: 1024px) {
    .tarif-card-main { transform: none; scale: 1.035; }
    .tarif-card-main:hover { transform: none; scale: 1.05; rotate: -1deg; }
}
.diff-card:nth-child(5n+4) .diff-number { transform: none; rotate: -6deg; }
.diff-card:nth-child(5n+5) .diff-number { transform: none; rotate: 8deg; }
@media (max-width: 640px) {
    .diff-card:hover, .pain-item:hover, .tarif-card:hover, .tarif-card-main:hover { rotate: 0deg; scale: 1; }
}

/* Titres : soulignés ondulés portés par chaque mot après découpe */
.section:has(.diff-stack) .section-title em .om-w,
.work-section .section-title em .om-w {
    text-decoration: underline wavy 3px;
    text-underline-offset: 6px;
}
.section:has(.diff-stack) .section-title em .om-w { text-decoration-color: var(--violet); }
.work-section .section-title em .om-w { text-decoration-color: var(--pink); }

/* Titres « remplissage » : la plaque suit la lecture */
.om-fill-title em::before { transform: rotate(-2deg) scaleX(var(--hl, 1)); transform-origin: 0 50%; }
.section-title { isolation: isolate; }

/* Hero : mot du métier, largeur mesurée par le script (plus de trou avant le « ? ») */
html.om-js .hero-trade-word { min-width: 0; white-space: nowrap; overflow: visible; }
.om-magnet { display: inline-block; }

/* ══ 2. DÉCORS ══════════════════════════════════ */

/* Grand disque du hero : parallaxe par variable (l'animation CSS garde le transform) */
.hero-wrap::before { translate: 0 var(--om-par, 0px); }

/* ── Bandes croisées sous le hero ── */
.om-band {
    position: relative;
    z-index: 3;
    overflow-x: clip;
    padding: clamp(30px, 3.6vw, 52px) 0;
    background: var(--bg);
}
.om-strip {
    position: relative;
    left: -8%;
    width: 116%;
    overflow: hidden;
    border-block: var(--bw) solid var(--fg);
}
.om-strip--front {
    z-index: 1;
    rotate: -2deg;
    padding: 14px 0;
    background: var(--fg);
    color: var(--bg);
    box-shadow: 0 5px 0 0 var(--accent);
}
.om-strip--back {
    position: absolute;
    z-index: 0;
    top: 50%;
    translate: 0 -50%;
    rotate: 2.4deg;
    padding: 10px 0;
    background: var(--yellow);
    color: var(--fg);
}
.om-track { display: flex; width: max-content; }
.om-track-item { display: flex; align-items: center; flex: none; white-space: nowrap; }
.om-strip--front .om-track-item {
    font-family: var(--font-head);
    font-weight: 800;
    font-size: clamp(1.05rem, 0.8rem + 0.9vw, 1.45rem);
    letter-spacing: -0.01em;
}
.om-strip--front .om-track-item i { font-style: normal; color: var(--yellow); padding: 0 .55em; }
.om-strip--front .om-track-item b { font-weight: 800; color: var(--mint); }
.om-strip--back .om-track-item {
    font-family: var(--font-head);
    font-weight: 800;
    font-size: var(--fs-sm);
    letter-spacing: .14em;
    text-transform: uppercase;
    padding-right: .6em;
}
html.om-loop .om-track { will-change: transform; }
/* le filet sous le hero doublait le bord des bandes */
.om-band + .divider { display: none; }

/* ── Vagues (lisières animées, moteur unique) ── */
.om-wave {
    position: absolute;
    left: 0;
    right: 0;
    bottom: calc(100% - 1px);
    height: clamp(40px, 6vw, 96px);
    pointer-events: none;
    z-index: 2;
}
.om-wave svg { display: block; width: 100%; height: 100%; overflow: visible; }
.om-wave path { fill: currentColor; }
.om-wave--paper  { color: var(--bg); }
.om-wave--accent { color: var(--accent); }
.om-wave--accent svg { transform: scaleX(-1); }
.om-wave--ink    { color: var(--fg); }
.om-wave--foot   { bottom: -1px; }
.om-wave--foot.om-wave--paper { color: var(--bg); }
.om-wave--foot.om-wave--muted { color: var(--muted); }
/* le hero laisse la place à la vague qui le mord */
.hero { padding-bottom: calc(clamp(48px, 8vw, 80px) + clamp(40px, 6vw, 96px) * .75); }
@media (max-width: 640px) { .hero { padding-bottom: 72px; } }

/* ── Méthode : trait dessiné entre les numéros ── */
.steps::before { display: none; }
.om-steps-line {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    overflow: visible;
    pointer-events: none;
    z-index: 0;
}
.om-steps-track { fill: none; stroke: var(--border-input); stroke-width: 3; stroke-linecap: round; stroke-dasharray: 2 10; }
.om-steps-draw  { fill: none; stroke: var(--fg); stroke-width: 4; stroke-linecap: round; }

/* ── « Sans site pro » : le pointillé qui relie les cartes se trace ── */
.section-inner-narrow > div:has(.pain-item)::before { transform: scaleX(var(--om-line, 1)); transform-origin: 0 50%; }

/* ── Tarifs : ancien prix barré à la main, étoile qui tourne ── */
.tarif-price-old { text-decoration: none; position: relative; }
.tarif-price-old::after {
    content: '';
    position: absolute;
    left: -3px;
    right: -3px;
    top: 52%;
    height: 2px;
    background: var(--muted-fg);
    border-radius: 2px;
    rotate: -8deg;
    transform: scaleX(var(--strike, 1));
    transform-origin: 0 50%;
}
.tarif-card-main::before { transform: rotate(calc(15deg + var(--om-sr, 0deg))) scale(var(--om-ss, 1)); }
.tarif-price-new { font-variant-numeric: tabular-nums; }

/* ── Rail : l'éventail passe par des variables, tilt de repos et survol par rotate/translate ── */
.case-card, .case-card:hover {
    --fx: 0px; --fy: 0px; --fr: 0deg;
    transform: translate(var(--fx), var(--fy)) rotate(var(--fr));
    transition: rotate var(--t) var(--ease-bounce), scale var(--t) var(--ease-bounce),
                translate var(--t) var(--ease-bounce), box-shadow var(--t) var(--ease-bounce);
}
.case-card:nth-of-type(4n+1) { --r: -1.4deg; }
.case-card:nth-of-type(4n+2) { --r: 1deg; }
.case-card:nth-of-type(4n+3) { --r: -0.6deg; }
.case-card:nth-of-type(4n+4) { --r: 1.5deg; }
.work-section { overflow-x: clip; }
.work-section .case-rail-wrap { overflow: visible; }
@media (min-width: 760px) {
    /* le rail court jusqu'au bord droit de l'écran */
    .case-wall { margin-right: calc(50% - 50vw); padding-right: calc(50vw - 50%); }
    .case-card { rotate: var(--r); }
    .case-card:hover { rotate: 0deg; translate: 0 -10px; box-shadow: var(--pop-hover); }
}
@media (max-width: 759px) {
    .case-wall {
        margin-inline: -24px;
        padding-inline: 24px;
        scroll-padding-inline: 24px;
        scroll-snap-type: x mandatory;
        overscroll-behavior-x: contain;
    }
    .case-card { flex-basis: min(80vw, 300px); scroll-snap-align: start; }
    .case-card:hover { box-shadow: var(--pop-card); }
}

/* ── CTA final : pleine largeur entre deux vagues ── */
.cta-section {
    margin: 0;
    border: 0;
    border-radius: 0;
    box-shadow: none;
    overflow-x: clip;
    overflow-y: visible;
    padding-top: clamp(64px, 9vw, 96px);
    padding-bottom: calc(clamp(56px, 9vw, 88px) + clamp(40px, 6vw, 96px));
}
.cta-section::after { display: none; }
.cta-section::before { top: clamp(10px, 3vw, 40px); right: 4%; }
.cta-section .om-magnet { display: block; max-width: 400px; margin: 0 auto; }
.cta-big .om-ch { transform-origin: 50% 100%; }

/* ── Formulaire : fond encre bordé de vagues, la carte ne bouge jamais ── */
section.section:has(> .section-inner #form-hero) {
    overflow-y: visible;
    padding-bottom: calc(clamp(56px, 9vw, 88px) + clamp(40px, 6vw, 96px));
}
/* sections mordues par la vague suivante : le texte du bas garde sa marge */
section.section:has(> .section-inner .faq-list),
section.section:has(> .section-inner .tarifs-grid) { padding-bottom: calc(clamp(56px, 9vw, 88px) + clamp(40px, 6vw, 96px) * .8); }
@media (max-width: 640px) { .hero .om-magnet { display: block; } }

/* ══ 3. FINITIONS ═══════════════════════════════ */

/* Les entrées décalées ou pivotées ne doivent jamais élargir la page (mobile qui dézoome) */
.section:has(.diff-stack), .section:has(.pain-item), .section:has(.steps), .cta-section { overflow-x: clip; }

/* Double filet sous l'en-tête (bordure + séparateur) */
.lp-header + .divider { display: none; }

/* Hero : note sous le bouton lisible (4,1:1 avant, 9:1 après) */
.hero > .btn-sub { color: var(--fg-inverse-muted); }

/* Retours à la ligne : pas de mot orphelin */
.hero-subtitle, .section-lead, .diff-sub, .pain-desc, .step-desc, .tarif-price-note,
.cta-sub, .faq-a, .capture-sub, .section-inner > p { text-wrap: pretty; }
.section-title, .cta-big, .faq-q, .diff-label, .pain-title { text-wrap: balance; }

/* Textes gris sur fond gris clair : 4,3:1 avant, 7:1 après */
/* « Voir le site » : 3:1 à 0,55 d'opacité, 8:1 à 0,85 */
.case-go { opacity: .85; }
.case-hint, .legal-footer p, .legal-footer a { color: #475569; }
section.section:has(> .section-inner .tarifs-grid) .section-inner > p[style] { color: #475569 !important; }

/* « Sans site pro » : trois colonnes écrasées sur tablette, empilées jusqu'à 900 px */
@media (max-width: 900px) {
    .section-inner-narrow > div:has(.pain-item) { grid-template-columns: 1fr; gap: 34px; max-width: 34rem; margin-inline: auto; }
    .section-inner-narrow > div:has(.pain-item)::before { display: none; }
}

/* Tarifs : une colonne pleine largeur sur tablette, recentrée */
@media (max-width: 799px) {
    .tarifs-grid { max-width: 34rem; margin-inline: auto; }
}

/* CTA : texte encre profonde sur terracotta (3,9:1 avant avec l'opacité, 5,4:1 après) */
.cta-sub, .cta-section .btn-sub, .cta-big { color: #0F172A; opacity: 1; }
@media (max-width: 640px) {
    .cta-section::before { display: none; }
}

/* FAQ : hauteur animée par GSAP, réponses visibles sans script */
html:not(.om-js) .faq-a { max-height: none; padding-bottom: 18px; }
html.om-js .faq-a { max-height: none; height: 0; padding-bottom: 0; transition: none; }
html.om-js .faq-item.open .faq-a { height: auto; }
html.om-js .faq-a::after { content: ''; display: block; height: 18px; }
.faq-q:focus-visible { outline: 3px solid var(--ring); outline-offset: 4px; border-radius: 4px; }
/* ouvert : la barre reste horizontale (« − »), elle ne se dressait plus en « | » */
.faq-item.open .faq-toggle { transform: rotate(180deg); }

/* ══ MOUVEMENT RÉDUIT ═══════════════════════════ */
@media (prefers-reduced-motion: reduce) {
    .diff-card, .pain-item, .tarif-card, .case-card { transition: none; }
}

/* ══ RETOURS DES CAPTURES ═══════════════════════ */
@media (max-width: 640px) {
    /* FAQ : la plaque jaune formait un pavé de trois lignes débordant la gouttière ;
       elle épouse maintenant chaque ligne (et suit toujours la lecture via --hl) */
    .section:has(.faq-list) .section-title em {
        display: inline;
        padding: 0 .1em;
        background: linear-gradient(var(--yellow), var(--yellow)) no-repeat 0 60% / calc(var(--hl, 1) * 100%) 78%;
        -webkit-box-decoration-break: clone;
                box-decoration-break: clone;
        border-radius: var(--r-sm);
    }
    .section:has(.faq-list) .section-title em::before { display: none; }
    /* CTA : les pastilles de fond tombaient sur la note de prix */
    .cta-section { background: var(--accent); }
}

/* ── Logo centré en tête du hero (header retiré le 2026-09-23) ── */
.lp-logo-hero {
    font-family: var(--font-head);
    font-weight: 800;
    font-size: clamp(1.6rem, 1.2rem + 1.4vw, 2.1rem);
    letter-spacing: -0.03em;
    line-height: 1;
    color: var(--fg-inverse);
    text-align: center;
    margin: 0 auto clamp(18px, 3vw, 28px);
}
.lp-logo-hero span { color: var(--accent); }

/* ── « Comment ça se passe » : texte trop pâle sur le fond à pois (retour Nicolas 2026-09-23) ── */
.steps .step-desc {
    color: #334155;           /* slate 700 : 10:1 sur crème, au lieu du gris 4,6:1 */
    font-weight: 500;
    font-size: 14.5px;
    line-height: 1.6;
}
.steps .step > div:last-child {
    background: var(--bg);    /* masque les pois derrière le texte */
    box-shadow: 0 0 0 12px var(--bg);
    border-radius: 10px;
}
.section-inner-narrow:has(.steps) .section-lead {
    color: #334155;
    font-weight: 500;
}

/* ══ HUB : CTA FLOTTANT + FENÊTRE À ONGLETS (offre-hub.js, 2026-09-24) ══
   Barre : mobile = dock pleine largeur en bas (rappel | démo | écrire),
   desktop = bloc compact en bas à droite (ne couvre plus le centre).
   Apparition inchangée : ni sur le hero, ni sur la section formulaire. */
.sticky-cta {
    position: fixed;
    z-index: 90;
    left: 10px;
    right: 10px;
    bottom: calc(10px + env(safe-area-inset-bottom, 0px));
    opacity: 0;
    visibility: hidden;
    transform: translateY(22px);
    transition: opacity .35s ease, transform .45s cubic-bezier(.2,.85,.25,1), visibility 0s linear .45s;
    pointer-events: none;
}
.sticky-cta.visible {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
    transition: opacity .35s ease, transform .45s cubic-bezier(.2,.85,.25,1), visibility 0s;
}
.oh-dock {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    align-items: stretch;
    gap: 6px;
    padding: 6px;
    background: var(--card);
    border: var(--bw) solid var(--fg);
    border-radius: 20px;
    box-shadow: var(--pop);
    pointer-events: auto;
}
.oh-fab {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    min-height: 48px;
    border-radius: 14px;
    font-family: var(--font-head);
    font-weight: 700;
    color: var(--fg);
    text-align: center;
    line-height: 1.1;
    -webkit-tap-highlight-color: transparent;
    transition: background .18s, transform var(--t) var(--ease-bounce), box-shadow var(--t) var(--ease-bounce);
}
.oh-fab:focus-visible { outline: 3px solid var(--ring); outline-offset: 2px; }
.oh-fab--side {
    flex-direction: column;
    gap: 3px;
    padding: 6px 8px;
    font-family: var(--font-body);
    font-size: 11px;
    letter-spacing: .01em;
}
.oh-fab--side svg { flex: none; }
.oh-fab--side:hover { background: var(--yellow); }
.oh-fab--main {
    padding: 8px 14px;
    background: var(--accent-ink);
    color: var(--accent-fg);
    border: var(--bw) solid var(--fg);
    font-size: 14.5px;
    letter-spacing: -.01em;
    text-wrap: balance;
}
.oh-fab--main:hover { transform: translate(-2px, -2px); box-shadow: var(--pop); }
.oh-fab--main:active { transform: translate(1px, 1px); box-shadow: none; }
.oh-fab-arrow { flex: none; }
@media (max-width: 380px) {
    .oh-fab--main { font-size: 13.5px; padding: 6px 10px; }
    .oh-fab-arrow { display: none; }
}
/* Desktop : colonne étroite ancrée en bas à droite (188 px : à 1440 elle reste dans la marge
   des sections texte, à 1024 elle ne mord que le bord droit) */
@media (min-width: 900px) {
    .sticky-cta { left: auto; right: 20px; bottom: 20px; width: 188px; }
    .oh-dock {
        grid-template-columns: 1fr;
        gap: 6px;
        padding: 7px;
        border-radius: var(--r-md);
        box-shadow: var(--pop-hover);
    }
    .oh-fab--main { order: -1; min-height: 58px; border-radius: 12px; font-size: 15px; padding: 8px 12px; }
    .oh-fab--side {
        flex-direction: row;
        justify-content: flex-start;
        gap: 9px;
        min-height: 40px;
        padding: 6px 12px;
        font-size: 13px;
        border-radius: 10px;
    }
}

/* ── Fenêtre ── */
html.oh-lock, html.oh-lock body { overflow: hidden; }
.oh-dialog {
    position: fixed;
    inset: 0;
    width: 100%;
    height: 100%;
    max-width: none;
    max-height: none;
    margin: 0;
    padding: 0;
    border: 0;
    background: transparent;
    color: var(--fg);
    overflow: hidden;
}
.oh-dialog[open] { display: flex; align-items: flex-end; justify-content: center; }
.oh-dialog::backdrop { background: color-mix(in srgb, var(--fg) 62%, transparent); }
.oh-box {
    display: flex;
    flex-direction: column;
    width: 100%;
    max-width: 580px;
    max-height: calc(100dvh - 12px);
    background: var(--bg);
    border: var(--bw) solid var(--fg);
    border-bottom: 0;
    border-radius: var(--r-lg) var(--r-lg) 0 0;
    overflow: hidden;
}
.oh-head {
    flex: none;
    display: grid;
    grid-template-columns: 1fr auto;
    align-items: center;
    gap: 12px 10px;
    padding: 16px 16px 14px;
    background: var(--card);
    border-bottom: var(--bw) solid var(--fg);
}
.oh-title {
    font-family: var(--font-head);
    font-weight: 800;
    font-size: var(--fs-md);
    letter-spacing: -.03em;
    line-height: 1.1;
}
.oh-close {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    padding: 0;
    background: var(--muted);
    color: var(--fg);
    border: var(--bw) solid var(--fg);
    border-radius: var(--r-full);
    cursor: pointer;
    transition: background .18s;
}
.oh-close:hover { background: var(--yellow); }
.oh-close:focus-visible, .oh-tab:focus-visible { outline: 3px solid var(--ring); outline-offset: 2px; }
.oh-tabs {
    grid-column: 1 / -1;
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 6px;
}
.oh-tab {
    min-height: 44px;
    padding: 6px 8px;
    background: var(--card);
    color: var(--fg);
    border: var(--bw) solid var(--fg);
    border-radius: var(--r-full);
    font-family: var(--font-body);
    font-size: 12.5px;
    font-weight: 700;
    line-height: 1.15;
    text-wrap: balance;
    cursor: pointer;
    transition: background .18s, box-shadow .18s, transform .18s;
}
.oh-tab:hover { background: var(--muted); }
.oh-tab[aria-selected="true"] {
    background: var(--yellow);
    box-shadow: var(--pop);
    transform: translate(-1px, -1px);
}
.oh-tab--demo[aria-selected="true"] { background: var(--accent-ink); color: var(--accent-fg); }
.oh-l-long { display: none; }
.oh-body {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
    padding: 20px 16px calc(20px + env(safe-area-inset-bottom, 0px));
}
.oh-lead { font-size: 14px; color: #334155; line-height: 1.5; margin-bottom: 16px; }
.oh-form .btn-main { margin-top: 6px; }
.oh-form .opt { opacity: 1; color: #475569; }   /* 7:1 au lieu de ~3,9:1 */
.oh-form .form-error-msg { margin: 0 0 10px; }
.oh-row { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.oh-row .form-field input { min-width: 0; }
.oh-field-error { margin-top: 5px; font-size: 12.5px; font-weight: 700; color: var(--danger); }
.oh-form input[aria-invalid="true"] { border-color: var(--danger); }
.oh-check {
    position: relative;
    display: flex;
    align-items: flex-start;
    gap: 10px;
    margin: 4px 0 14px;
    font-size: 13.5px;
    line-height: 1.45;
    cursor: pointer;
}
.oh-check input { position: absolute; opacity: 0; width: 22px; height: 22px; margin: 0; cursor: pointer; }
.oh-check-box {
    flex: none;
    width: 22px;
    height: 22px;
    background: var(--card);
    border: var(--bw) solid var(--fg);
    border-radius: 6px;
    display: grid;
    place-items: center;
}
.oh-check input:checked + .oh-check-box { background: var(--accent-ink); }
.oh-check input:checked + .oh-check-box::after {
    content: '';
    width: 10px;
    height: 6px;
    border: solid var(--accent-fg);
    border-width: 0 0 2.5px 2.5px;
    transform: translateY(-2px) rotate(-45deg);
}
.oh-check input:focus-visible + .oh-check-box { outline: 3px solid var(--ring); outline-offset: 2px; }
.oh-hint { margin-top: 12px; font-size: 12px; color: #475569; text-align: center; line-height: 1.5; }
.oh-hint a { text-decoration: underline; text-underline-offset: 2px; }
.oh-status { margin-top: 10px; font-size: 13px; font-weight: 700; text-align: center; }
.oh-status:empty { display: none; }
.oh-status.is-error { color: var(--danger); }
.oh-status a { text-decoration: underline; }
.oh-success { text-align: center; padding: 18px 4px 8px; }
.oh-success-icon {
    width: 56px;
    height: 56px;
    margin: 0 auto 14px;
    display: grid;
    place-items: center;
    background: var(--mint);
    color: var(--fg);
    border: var(--bw) solid var(--fg);
    border-radius: var(--r-full);
    box-shadow: var(--pop);
}
.oh-success-title { font-family: var(--font-head); font-weight: 800; font-size: var(--fs-lg); letter-spacing: -.03em; margin-bottom: 6px; outline: none; }
.oh-success-text { font-size: 14.5px; color: #334155; }
/* Le wizard de la page, installé dans le panneau : sans sa carte (la fenêtre en tient lieu) */
.oh-panel--demo #form-hero {
    max-width: none;
    padding: 2px 6px 6px 2px;          /* place pour l'ombre dure des boutons (la carte garde overflow:hidden) */
    margin: -2px -6px -6px -2px;
    background: transparent;
    border: 0;
    border-radius: 0;
    box-shadow: none;
}
.oh-form-placeholder { width: 100%; max-width: 520px; margin: 0 auto; }

@media (min-width: 560px) {
    .oh-l-long { display: inline; }
    .oh-l-short { display: none; }
    .oh-tabs { grid-template-columns: auto minmax(0, 1fr) auto; }
    .oh-tab { padding: 6px 16px; font-size: 13.5px; }
}
@media (min-width: 640px) {
    .oh-dialog[open] { align-items: center; padding: 24px; }
    .oh-box {
        max-height: calc(100dvh - 48px);
        border-bottom: var(--bw) solid var(--fg);
        border-radius: var(--r-lg);
        box-shadow: 8px 8px 0 0 var(--accent);
    }
    .oh-head { padding: 20px 24px 16px; }
    .oh-body { padding: 24px; }
}
@media (prefers-reduced-motion: reduce) {
    .sticky-cta, .sticky-cta.visible { transform: none; transition: opacity .2s ease, visibility 0s; }
    .oh-fab, .oh-tab { transition: none; }
}

