/* =================================================================
   Module Voyage IA — V1.1
   Présentation + animation van SVG
   ================================================================= */

/* ---- Hero ------------------------------------------------------- */
.vi-hero {
    position: relative;
    overflow: hidden;
    background: #f8fafc;
}

.vi-hero__bg {
    position: absolute;
    inset: 0;
    background:
        radial-gradient(ellipse at 20% 0%, rgba(59, 130, 246, .15), transparent 60%),
        radial-gradient(ellipse at 80% 100%, rgba(16, 185, 129, .10), transparent 60%);
    pointer-events: none;
}

.vi-hero__inner {
    position: relative;
    z-index: 1;
}

.vi-hero__head { max-width: 760px; margin: 0 auto; }

.vi-hero__title {
    font-size: clamp(2rem, 4vw, 3rem);
    font-weight: 800;
    line-height: 1.15;
    margin-bottom: 1rem;
    color: #0f172a;
    letter-spacing: -.02em;
}

.vi-hero__sub {
    font-size: 1.1rem;
    color: #475569;
    max-width: 640px;
    line-height: 1.6;
}

.vi-badge {
    display: inline-block;
    background: linear-gradient(135deg, #dbeafe 0%, #ede9fe 100%);
    color: #1d4ed8;
    padding: .4rem 1rem;
    border-radius: 999px;
    font-size: .85rem;
    font-weight: 600;
    margin-bottom: 1.25rem;
    border: 1px solid rgba(59, 130, 246, .2);
}

/* ---- Stage : zone interactive ----------------------------------- */
.vi-stage {
    position: relative;
    min-height: 460px;
}

.vi-stage__form,
.vi-stage__loading {
    transition: opacity .35s ease, transform .35s ease;
}

.vi-stage__form.is-hidden {
    opacity: 0;
    transform: translateY(-12px);
    pointer-events: none;
    height: 0;
    overflow: hidden;
}

/* ---- Formulaire ------------------------------------------------- */
.vi-form {
    border-radius: 1.25rem;
    border: 1px solid #e2e8f0 !important;
    background: #fff;
    box-shadow: 0 10px 40px -10px rgba(15, 23, 42, .08), 0 2px 6px rgba(15, 23, 42, .04) !important;
}

.vi-form textarea.form-control {
    resize: vertical;
    min-height: 110px;
}

/* ---- Dictée vocale (Web Speech API) ----------------------------- */
.vi-prompt-wrap {
    position: relative;
}

.vi-prompt {
    /* On laisse de la place à droite pour le bouton micro */
    padding-right: 4rem !important;
}

.vi-mic {
    position: absolute;
    right: .7rem;
    bottom: .7rem;
    width: 2.75rem;
    height: 2.75rem;
    border-radius: 50%;
    border: 0;
    background: #fff;
    color: #1d4ed8;
    box-shadow: 0 4px 14px -3px rgba(15, 23, 42, .18), 0 0 0 1px rgba(15, 23, 42, .06);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: transform .15s ease, box-shadow .2s ease, background .2s ease, color .2s ease;
    z-index: 2;
}
.vi-mic:hover {
    transform: translateY(-1px);
    box-shadow: 0 8px 20px -5px rgba(15, 23, 42, .25), 0 0 0 1px rgba(29, 78, 216, .25);
    color: #1e40af;
}
.vi-mic:active { transform: translateY(0); }
.vi-mic:focus-visible {
    outline: none;
    box-shadow: 0 0 0 3px rgba(59, 130, 246, .35), 0 4px 14px -3px rgba(15, 23, 42, .18);
}

.vi-mic__icon {
    width: 1.3rem;
    height: 1.3rem;
    position: relative;
    z-index: 1;
}

/* État actif : écoute en cours */
.vi-mic.is-listening {
    background: #ef4444;
    color: #fff;
    box-shadow: 0 6px 18px -3px rgba(239, 68, 68, .55);
}

.vi-mic__pulse {
    position: absolute;
    inset: 0;
    border-radius: 50%;
    pointer-events: none;
    opacity: 0;
}
.vi-mic.is-listening .vi-mic__pulse {
    opacity: 1;
    animation: vi-mic-pulse 1.4s ease-out infinite;
}
@keyframes vi-mic-pulse {
    0%   { box-shadow: 0 0 0 0   rgba(239, 68, 68, .55); }
    100% { box-shadow: 0 0 0 18px rgba(239, 68, 68, 0);  }
}

.vi-mic-hint {
    color: #64748b;
    font-size: .8rem;
}

@media (prefers-reduced-motion: reduce) {
    .vi-mic.is-listening .vi-mic__pulse { animation: none; }
}

.vi-form .form-control,
.vi-form .form-select {
    border-radius: .65rem;
    border-color: #e2e8f0;
    transition: border-color .2s ease, box-shadow .2s ease;
}

.vi-form .form-control:focus,
.vi-form .form-select:focus {
    border-color: #3b82f6;
    box-shadow: 0 0 0 3px rgba(59, 130, 246, .12);
}

.vi-form .form-label {
    font-weight: 600;
    color: #334155;
    margin-bottom: .35rem;
}

.vi-icon {
    display: inline-block;
    margin-right: .15rem;
}

.vi-submit {
    border-radius: .75rem;
    padding: 1rem 1.5rem;
    font-weight: 600;
    font-size: 1.05rem;
    background: linear-gradient(135deg, #1d4ed8 0%, #3b82f6 100%);
    border: 0;
    box-shadow: 0 6px 20px -8px rgba(29, 78, 216, .5);
    transition: transform .15s ease, box-shadow .25s ease;
}
.vi-submit:hover {
    transform: translateY(-1px);
    box-shadow: 0 10px 25px -8px rgba(29, 78, 216, .6);
}
.vi-submit:active { transform: translateY(0); }
.vi-submit__icon { margin-right: .35rem; }

/* =================================================================
   Loader : van qui roule
   ================================================================= */
.vi-loader {
    text-align: center;
    padding: 2rem 1rem;
}

.vi-van-scene {
    max-width: 720px;
    margin: 0 auto;
    border-radius: 1.25rem;
    overflow: hidden;
    box-shadow: 0 20px 50px -15px rgba(15, 23, 42, .25);
}

.vi-van-scene__svg {
    width: 100%;
    height: auto;
    display: block;
}

.vi-loader__text {
    font-size: 1.1rem;
    color: #334155;
}
.vi-loader__main {
    display: block;
    font-weight: 700;
    color: #0f172a;
    font-size: 1.25rem;
    margin-bottom: .25rem;
}
.vi-loader__sub {
    display: block;
    color: #64748b;
    font-size: .95rem;
    animation: vi-fade-pulse 2.5s ease-in-out infinite;
}

/* --- Lignes au sol qui défilent (illusion de vitesse) --- */
.vi-road-lines {
    animation: vi-road-scroll 1s linear infinite;
}
@keyframes vi-road-scroll {
    from { transform: translateX(0); }
    to   { transform: translateX(-120px); }
}

/* --- Roues qui tournent --- */
.vi-wheel {
    transform-box: fill-box;
    transform-origin: center;
    animation: vi-wheel-spin .3s linear infinite;
}
.vi-wheel--front { transform-origin: 165px 85px; }
.vi-wheel--rear  { transform-origin: 40px 85px; }
@keyframes vi-wheel-spin {
    to { transform: rotate(360deg); }
}

/* --- Légère oscillation du van (suspension) --- */
.vi-van {
    animation: vi-van-bounce 1.4s ease-in-out infinite;
    transform-origin: center;
}
@keyframes vi-van-bounce {
    0%, 100% { transform: translateY(0) rotate(0deg); }
    25%      { transform: translateY(-1.5px) rotate(-.15deg); }
    50%      { transform: translateY(0) rotate(0deg); }
    75%      { transform: translateY(-1px) rotate(.15deg); }
}

/* --- Ombre qui pulse --- */
.vi-van__shadow {
    animation: vi-shadow-pulse 1.4s ease-in-out infinite;
    transform-origin: 360px 262px;
}
@keyframes vi-shadow-pulse {
    0%, 100% { transform: scaleX(1);   opacity: .25; }
    50%      { transform: scaleX(.92); opacity: .35; }
}

/* --- Lignes de vitesse derrière le van --- */
.vi-speed-lines line {
    animation: vi-speed 0.6s linear infinite;
    opacity: 0;
}
.vi-speed-lines line:nth-child(1) { animation-delay: 0s; }
.vi-speed-lines line:nth-child(2) { animation-delay: .2s; }
.vi-speed-lines line:nth-child(3) { animation-delay: .4s; }
@keyframes vi-speed {
    0%   { opacity: 0;   transform: translateX(20px); }
    30%  { opacity: .55; transform: translateX(0); }
    100% { opacity: 0;   transform: translateX(-40px); }
}

/* --- Nuages : parallaxe lent / rapide --- */
.vi-clouds--slow { animation: vi-cloud-slow 30s linear infinite; }
.vi-clouds--fast { animation: vi-cloud-fast 18s linear infinite; }
@keyframes vi-cloud-slow {
    from { transform: translateX(0); }
    to   { transform: translateX(-720px); }
}
@keyframes vi-cloud-fast {
    from { transform: translateX(0); }
    to   { transform: translateX(-720px); }
}

/* --- Oiseaux qui battent --- */
.vi-birds {
    animation: vi-birds-fly 8s linear infinite;
    transform-origin: center;
}
.vi-birds path {
    animation: vi-birds-flap .4s ease-in-out infinite alternate;
    transform-origin: center;
}
@keyframes vi-birds-fly {
    from { transform: translateX(0); }
    to   { transform: translateX(-300px); }
}
@keyframes vi-birds-flap {
    from { transform: scaleY(1); }
    to   { transform: scaleY(.6); }
}

/* --- Montagnes : parallaxe --- */
.vi-mountains--far  { animation: vi-mountain-scroll 24s linear infinite; }
.vi-mountains--near { animation: vi-mountain-scroll 12s linear infinite; }
@keyframes vi-mountain-scroll {
    from { transform: translateX(0); }
    to   { transform: translateX(-280px); }
}

/* --- Collines (parallaxe moyen) --- */
.vi-hills { animation: vi-hills-scroll 6s linear infinite; }
@keyframes vi-hills-scroll {
    from { transform: translateX(0); }
    to   { transform: translateX(-300px); }
}

/* --- Sapins : défilement plus rapide --- */
.vi-trees { animation: vi-trees-scroll 4s linear infinite; }
@keyframes vi-trees-scroll {
    from { transform: translateX(0); }
    to   { transform: translateX(-200px); }
}

/* --- Particules de poussière --- */
.vi-dust circle {
    animation: vi-dust-fade 1.1s ease-out infinite;
}
.vi-dust circle:nth-child(1) { animation-delay: 0s; }
.vi-dust circle:nth-child(2) { animation-delay: .25s; }
.vi-dust circle:nth-child(3) { animation-delay: .5s; }
.vi-dust circle:nth-child(4) { animation-delay: .75s; }
@keyframes vi-dust-fade {
    0%   { opacity: .7; transform: translate(0, 0) scale(1); }
    100% { opacity: 0;  transform: translate(-25px, -4px) scale(.6); }
}

@keyframes vi-fade-pulse {
    0%, 100% { opacity: .65; }
    50%      { opacity: 1;   }
}

/* Accessibilité : pas d'animation si l'utilisateur préfère */
@media (prefers-reduced-motion: reduce) {
    .vi-road-lines, .vi-wheel, .vi-van, .vi-van__shadow, .vi-speed-lines line,
    .vi-clouds--slow, .vi-clouds--fast, .vi-birds, .vi-birds path,
    .vi-mountains--far, .vi-mountains--near, .vi-hills,
    .vi-trees, .vi-dust circle, .vi-loader__sub {
        animation: none !important;
    }
}

/* =================================================================
   Résultat
   ================================================================= */
.vi-result__hero {
    position: relative;
    color: #fff;
    border-radius: 1.5rem;
    overflow: hidden;
    box-shadow: 0 20px 50px -15px rgba(29, 78, 216, .35);
    margin-bottom: 2rem;
    min-height: 320px;
    background: linear-gradient(135deg, #1e3a8a 0%, #3b82f6 50%, #06b6d4 100%);
}
.vi-result__cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    z-index: 0;
    opacity: .85;
}
.vi-result__hero::after {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(135deg, rgba(15, 23, 42, .65) 0%, rgba(30, 58, 138, .55) 50%, rgba(6, 182, 212, .45) 100%);
    z-index: 1;
}
.vi-result__hero-content {
    position: relative;
    z-index: 2;
    padding: 2.5rem;
}

.vi-result__title {
    font-size: clamp(1.5rem, 3vw, 2.25rem);
    font-weight: 800;
    margin-bottom: .5rem;
    letter-spacing: -.01em;
}
.vi-result__phrase {
    font-size: 1.15rem;
    opacity: .95;
    margin-bottom: 1.5rem;
    line-height: 1.55;
}

.vi-stats {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
}
.vi-stat {
    display: inline-flex;
    align-items: center;
    gap: .4rem;
    background: rgba(255, 255, 255, .15);
    backdrop-filter: blur(8px);
    padding: .55rem 1rem;
    border-radius: 999px;
    font-size: .95rem;
    font-weight: 500;
    border: 1px solid rgba(255, 255, 255, .2);
}
.vi-stat--brand {
    background: rgba(255, 255, 255, .9);
    color: #1e3a8a;
    font-weight: 700;
    border-color: rgba(255, 255, 255, 1);
}


/* ================================================================
   Repas — cartes restaurant / van
   ================================================================ */
.vi-meals {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
    gap: 1rem;
}
.vi-meal {
    display: flex;
    gap: 1rem;
    padding: 1rem 1.25rem;
    background: #fff;
    border: 1px solid #e2e8f0;
    border-radius: 1rem;
    transition: transform .15s ease, box-shadow .25s ease;
}
.vi-meal:hover {
    transform: translateY(-2px);
    box-shadow: 0 10px 25px -10px rgba(15, 23, 42, .15);
}
.vi-meal--resto { background: linear-gradient(135deg, #fffbeb 0%, #fff 100%); border-color: #fde68a; }
.vi-meal--van   { background: linear-gradient(135deg, #eff6ff 0%, #fff 100%); border-color: #bfdbfe; }

.vi-meal__icon {
    flex-shrink: 0;
    width: 3rem; height: 3rem;
    border-radius: 50%;
    background: #fff;
    display: flex; align-items: center; justify-content: center;
    font-size: 1.5rem;
    box-shadow: 0 4px 10px -2px rgba(15, 23, 42, .08);
}
.vi-meal--resto .vi-meal__icon { background: #fef3c7; }
.vi-meal--van   .vi-meal__icon { background: #dbeafe; }

.vi-meal__content { flex: 1; min-width: 0; }

.vi-meal__top {
    display: flex; flex-wrap: wrap; gap: .4rem; align-items: center;
    margin-bottom: .35rem;
}
.vi-meal__moment {
    font-weight: 700;
    text-transform: uppercase;
    font-size: .7rem;
    letter-spacing: .08em;
    padding: .15rem .55rem;
    background: #0f172a;
    color: #fff;
    border-radius: 999px;
}
.vi-meal__type {
    font-size: .8rem;
    color: #64748b;
    font-weight: 500;
}
.vi-meal__price {
    margin-left: auto;
    font-weight: 700;
    color: #16a34a;
    background: #dcfce7;
    padding: .15rem .6rem;
    border-radius: 999px;
    font-size: .85rem;
}
.vi-meal__name {
    font-weight: 700;
    font-size: 1.05rem;
    color: #0f172a;
    margin: .25rem 0;
}
.vi-meal__special {
    color: #92400e;
    font-size: .9rem;
    margin: .25rem 0;
}
.vi-meal--van .vi-meal__special { color: #1e40af; }
.vi-meal__desc {
    color: #475569;
    font-size: .9rem;
    margin: .35rem 0;
    line-height: 1.5;
}
.vi-meal__addr,
.vi-meal__market {
    color: #475569;
    font-size: .85rem;
    margin: .25rem 0 0;
}
.vi-meal__market strong {
    color: #1e40af;
    background: #dbeafe;
    padding: .05rem .4rem;
    border-radius: .35rem;
}

/* ================================================================
   Outdoor — chips compactes
   ================================================================ */
.vi-chips {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
}
.vi-chip {
    display: inline-flex;
    align-items: center;
    gap: .5rem;
    padding: .55rem .9rem;
    background: #f0fdf4;
    border: 1px solid #bbf7d0;
    border-radius: 999px;
    text-decoration: none;
    color: #0f172a;
    font-size: .9rem;
    font-weight: 500;
    transition: transform .15s ease, box-shadow .2s ease, background .2s ease;
}
a.vi-chip:hover {
    background: #dcfce7;
    transform: translateY(-1px);
    box-shadow: 0 4px 12px -2px rgba(22, 163, 74, .15);
    text-decoration: none;
    color: #0f172a;
}
.vi-chip__icon { font-size: 1.05rem; }
.vi-chip__ext  { color: #16a34a; font-weight: 700; font-size: .85rem; }

/* ================================================================
   Hébergement (nuit) — bloc clean
   ================================================================ */
.vi-sleep {
    background: linear-gradient(135deg, #f5f3ff 0%, #fff 100%);
    border: 1px solid #ddd6fe;
    border-radius: 1rem;
    padding: 1rem 1.25rem;
}
.vi-sleep__head {
    display: flex; flex-wrap: wrap; gap: .5rem; align-items: center;
    margin-bottom: .25rem;
}
.vi-sleep__name { font-weight: 700; color: #0f172a; }
.vi-sleep__price {
    margin-left: auto;
    font-weight: 700;
    color: #16a34a;
    background: #dcfce7;
    padding: .15rem .6rem;
    border-radius: 999px;
    font-size: .85rem;
}
.vi-sleep__remark {
    margin: .25rem 0 0;
    color: #64748b;
    font-size: .85rem;
    font-style: italic;
}

.vi-section-title {
    font-size: 1.4rem;
    font-weight: 700;
    color: #0f172a;
    margin: 2rem 0 1rem;
    display: flex;
    align-items: center;
    gap: .5rem;
}

/* ================================================================
   Jour (accordéon) — design carte
   ================================================================ */
.vi-accordion .accordion-item {
    border-radius: 1.25rem !important;
    overflow: hidden;
    margin-bottom: 1.25rem;
    border: 1px solid #e2e8f0;
    box-shadow: 0 4px 18px -6px rgba(15, 23, 42, .08);
    background: #fff;
}
.vi-accordion .accordion-button {
    padding: 1.25rem 1.5rem;
    font-size: 1.05rem;
    background: #fff;
    gap: 1rem;
    align-items: center;
}
.vi-accordion .accordion-button:not(.collapsed) {
    background: linear-gradient(135deg, #eff6ff 0%, #dbeafe 100%);
    color: #1e3a8a;
    box-shadow: none;
}
.vi-accordion .accordion-button:focus { box-shadow: none; }

.vi-day__num {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.5rem; height: 2.5rem;
    border-radius: 50%;
    background: linear-gradient(135deg, #1d4ed8 0%, #06b6d4 100%);
    color: #fff;
    font-weight: 800;
    font-size: 1.1rem;
    flex-shrink: 0;
}
.vi-day__title { font-weight: 700; font-size: 1.1rem; }

/* Photo hero du jour (en haut de l'accordéon body) */
.vi-day-photo {
    position: relative;
    height: 280px;
    overflow: hidden;
    background: #f1f5f9;
}
.vi-day-photo img {
    width: 100%; height: 100%;
    object-fit: cover; display: block;
    transition: transform .6s ease;
}
.vi-day-photo:hover img { transform: scale(1.03); }
.vi-day-photo__route {
    position: absolute;
    left: 1rem; bottom: 1rem;
    background: rgba(15, 23, 42, .8);
    backdrop-filter: blur(8px);
    color: #fff;
    padding: .65rem 1.1rem;
    border-radius: .75rem;
    font-size: .9rem;
    font-weight: 500;
}

.vi-day-content { padding: 1.5rem; }

/* Blocs section dans un jour */
.vi-block { margin-bottom: 2rem; }
.vi-block:last-child { margin-bottom: 0; }

.vi-block__title {
    font-size: 1.05rem;
    font-weight: 700;
    color: #0f172a;
    margin-bottom: 1rem;
    padding-bottom: .5rem;
    border-bottom: 2px solid #e2e8f0;
}

/* ================================================================
   Étapes (cartes horizontales avec photo)
   ================================================================ */
.vi-steps {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1rem;
}

.vi-step {
    display: flex;
    background: #fff;
    border: 1px solid #e2e8f0;
    border-radius: 1rem;
    overflow: hidden;
    transition: transform .15s ease, box-shadow .25s ease;
}
.vi-step:hover {
    transform: translateY(-2px);
    box-shadow: 0 10px 25px -10px rgba(15, 23, 42, .15);
}
.vi-step__photo {
    flex-shrink: 0;
    width: 140px;
    background: #f1f5f9;
    overflow: hidden;
}
.vi-step__photo img {
    width: 100%; height: 100%;
    object-fit: cover; display: block;
}
.vi-step__body {
    flex: 1;
    padding: 1rem 1.25rem;
    display: flex;
    flex-direction: column;
    justify-content: center;
    min-width: 0;
}
.vi-step__head {
    display: flex; align-items: center; gap: .5rem;
    flex-wrap: wrap;
    margin-bottom: .25rem;
}
.vi-step__name {
    font-size: 1.05rem;
    font-weight: 700;
    color: #0f172a;
    margin: 0;
}
.vi-step__desc {
    color: #475569;
    font-size: .92rem;
    margin: .35rem 0 .5rem;
    line-height: 1.5;
}
.vi-step__meta {
    display: flex; flex-wrap: wrap; gap: .9rem;
    color: #64748b;
    font-size: .85rem;
}

@media (max-width: 576px) {
    .vi-step { flex-direction: column; }
    .vi-step__photo { width: 100%; height: 180px; }
}

.vi-tag {
    display: inline-block;
    font-size: .72rem;
    font-weight: 600;
    padding: .15rem .55rem;
    border-radius: 999px;
    background: #f1f5f9;
    color: #475569;
    text-transform: capitalize;
}
.vi-tag--nuit-aire_officielle { background: #dbeafe; color: #1e40af; }
.vi-tag--nuit-camping          { background: #dcfce7; color: #166534; }
.vi-tag--nuit-france_passion   { background: #fce7f3; color: #9d174d; }
.vi-tag--nuit-sauvage_legal    { background: #f3e8ff; color: #6b21a8; }

.vi-planb {
    padding: .85rem 1rem;
    background: linear-gradient(135deg, #fef9c3 0%, #fef3c7 100%);
    border-left: 4px solid #f59e0b;
    border-radius: .65rem;
    font-size: .9rem;
    color: #713f12;
}

/* Cartes budget / checklist */
.vi-info-card {
    border: 0;
    border-radius: 1rem !important;
    box-shadow: 0 4px 15px -5px rgba(15, 23, 42, .08);
    height: 100%;
}
.vi-info-card .card-body { padding: 1.5rem; }
.vi-info-card h3 {
    font-size: 1.15rem;
    font-weight: 700;
    color: #0f172a;
    margin-bottom: 1rem;
    display: flex;
    align-items: center;
    gap: .4rem;
}

.vi-budget-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: .65rem 0;
    border-bottom: 1px solid #f1f5f9;
}
.vi-budget-row:last-child { border-bottom: 0; }
.vi-budget-row__label { color: #475569; font-weight: 500; }
.vi-budget-row__total { font-size: 1.15rem; font-weight: 700; }
.vi-budget-row__total--eco     { color: #16a34a; }
.vi-budget-row__total--confort { color: #2563eb; }
.vi-budget-row__total--premium { color: #c026d3; }

.vi-checklist {
    list-style: none;
    padding: 0;
    margin: 0;
}
.vi-checklist li {
    padding: .35rem 0 .35rem 1.5rem;
    position: relative;
    color: #334155;
}
.vi-checklist li::before {
    content: "✓";
    position: absolute;
    left: 0;
    color: #16a34a;
    font-weight: 700;
}

.vi-warning {
    background: #fef3c7;
    border-left: 4px solid #f59e0b;
    color: #78350f;
    padding: .75rem 1rem;
    border-radius: .5rem;
    margin-bottom: .5rem;
    font-size: .9rem;
}

/* Actions finales */
.vi-actions {
    display: flex;
    flex-wrap: wrap;
    gap: .75rem;
    justify-content: center;
    margin-top: 2rem;
    padding: 1.5rem;
    background: #f8fafc;
    border-radius: 1rem;
}
.vi-actions .btn { border-radius: .75rem; padding: .75rem 1.5rem; font-weight: 600; }

/* ================================================================
   Opt-in partage dans le formulaire
   ================================================================ */
.vi-share {
    margin: 1.5rem 0 1rem;
    padding: 1rem;
    background: #fffbeb;
    border: 1px dashed #fde68a;
    border-radius: .75rem;
}
.vi-share__check {
    display: flex;
    align-items: flex-start;
    gap: .65rem;
    cursor: pointer;
    margin: 0;
    font-size: .95rem;
    color: #334155;
}
.vi-share__check input[type="checkbox"] {
    margin-top: .2rem;
    width: 1.15rem;
    height: 1.15rem;
    flex-shrink: 0;
    accent-color: #f59e0b;
}
.vi-share__check small {
    font-size: .8rem;
    margin-top: .15rem;
    color: #92400e;
}
.vi-share__name {
    margin-top: .75rem;
    padding-top: .75rem;
    border-top: 1px dashed #fde68a;
}

/* ================================================================
   Section "Idées de séjours" sur /location-vans
   ================================================================ */
.vi-ideas {
    background: linear-gradient(180deg, #fff 0%, #f8fafc 100%);
}

.vi-ideas__grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 1.5rem;
    margin-top: 2rem;
}

.vi-idea-card {
    display: flex;
    flex-direction: column;
    background: #fff;
    border-radius: 1.25rem;
    overflow: hidden;
    text-decoration: none;
    color: inherit;
    border: 1px solid #e2e8f0;
    box-shadow: 0 4px 18px -6px rgba(15, 23, 42, .08);
    transition: transform .2s ease, box-shadow .25s ease;
}
.vi-idea-card:hover {
    transform: translateY(-4px);
    box-shadow: 0 20px 40px -12px rgba(15, 23, 42, .2);
    text-decoration: none;
    color: inherit;
}

.vi-idea-card__photo {
    position: relative;
    height: 200px;
    background: linear-gradient(135deg, #dbeafe 0%, #ede9fe 100%);
    overflow: hidden;
}
.vi-idea-card__photo img {
    width: 100%; height: 100%;
    object-fit: cover; display: block;
    transition: transform .6s ease;
}
.vi-idea-card:hover .vi-idea-card__photo img { transform: scale(1.05); }
.vi-idea-card__photo-fallback {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%; height: 100%;
    font-size: 4rem;
    opacity: .6;
}
.vi-idea-card__badge {
    position: absolute;
    top: .75rem; right: .75rem;
    background: rgba(15, 23, 42, .85);
    backdrop-filter: blur(8px);
    color: #fff;
    padding: .25rem .65rem;
    border-radius: 999px;
    font-size: .8rem;
    font-weight: 600;
}

.vi-idea-card__body {
    padding: 1.25rem;
    display: flex;
    flex-direction: column;
    gap: .5rem;
    flex: 1;
}

.vi-idea-card__author {
    display: flex;
    align-items: center;
    gap: .5rem;
    margin: 0;
    font-size: .85rem;
    color: #64748b;
}
.vi-idea-card__avatar {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.75rem; height: 1.75rem;
    border-radius: 50%;
    background: linear-gradient(135deg, #1d4ed8 0%, #06b6d4 100%);
    color: #fff;
    font-weight: 700;
    font-size: .85rem;
}
.vi-idea-card__author strong { color: #0f172a; }

.vi-idea-card__title {
    font-size: 1.15rem;
    font-weight: 700;
    color: #0f172a;
    margin: 0;
    line-height: 1.3;
}
.vi-idea-card__phrase {
    color: #475569;
    font-size: .9rem;
    line-height: 1.45;
    margin: 0;
    flex: 1;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.vi-idea-card__tag {
    display: inline-block;
    align-self: flex-start;
    font-size: .8rem;
    color: #1e40af;
    background: #dbeafe;
    padding: .2rem .65rem;
    border-radius: 999px;
    text-transform: capitalize;
}

/* CTA inline (utilisé sur /location-vans) */
.vi-cta-inline {
    background: linear-gradient(135deg, #1e3a8a 0%, #3b82f6 100%);
    color: #fff;
    border-radius: 1.25rem;
    padding: 2.5rem 2rem;
    text-align: center;
    box-shadow: 0 20px 50px -15px rgba(29, 78, 216, .35);
}
.vi-cta-inline h2 { color: #fff; }
.vi-cta-inline .badge { background: rgba(255, 255, 255, .2); color: #fff; }
.vi-cta-inline .btn-light {
    font-weight: 600;
    border-radius: 0.75rem;
    padding: 0.85rem 1.75rem;
    color: #1e3a8a;
}

@media (max-width: 768px) {
    .vi-result__hero { padding: 1.75rem; }
    .vi-actions { padding: 1rem; }
}
