/* STYLE 1: LUMINOUS & ETHEREAL ROMANCE */
@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Montserrat:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;1,100;1,200;1,300;1,400;1,500;1,600&family=Dancing+Script:wght@400;500;600;700&display=swap');

:root {
    /* Typography */
    --primary-font: 'Cormorant Garamond', serif;
    --secondary-font: 'Montserrat', sans-serif;
    --hero-title-font: 'Dancing Script', cursive;

    /* Colors */
    --text-color-light: #f8f0e3; /* Soft cream for text on dark backgrounds */
    --text-color-dark: #5c544b;  /* Muted brown/grey for main text */
    --text-color-headings: #4a4137; /* Slightly darker for headings */
    --accent-color: #c8a07d; /* Muted gold/rose gold */
    --accent-color-rgb: 200, 160, 125; /* RGB for rgba() */
    --background-light: #fdfaf6; /* Very light cream for general background */
    --background-alt: #f4efea;   /* Slightly darker cream for alternate sections */
    --border-color: #e0d8cf;     /* Soft border color */

    /* Transitions & Animations */
    --base-transition-duration: 0.4s;
    --scroll-animation-timing: ease-in-out;

    /* Timeline Specific (Adjusted for ethereal style) */
    --timeline-color: var(--accent-color);
    --timeline-line-width: 2px;
    --timeline-marker-diameter: 18px;
    --timeline-marker-border: 3px;
    --timeline-gap-from-line: 40px;

    /* Chateau Theme (harmonized with ethereal style) */
    --chateau-primary-color: var(--text-color-headings);
    --chateau-secondary-color: var(--accent-color);

    /* Countdown */
    --countdown-text-color: var(--text-color-dark);
    --countdown-number-color: var(--accent-color);
}

/* Global Resets & Base Styles */
*, *::before, *::after {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}

html {
    scroll-behavior: smooth;
    font-size: 16px; /* Base font size */
    overflow-x: hidden; /* EMPÊCHE LE SCROLL HORIZONTAL */
}

body {
    font-family: var(--secondary-font);
    color: var(--text-color-dark);
    background-color: var(--background-light);
    line-height: 1.65;
    overflow-x: hidden; /* Prevent horizontal scroll */
    cursor: default;
}

/* Headings */
h1, h2, h3, h4, h5, h6 {
    font-family: var(--primary-font);
    color: var(--text-color-headings);
    font-weight: 600;
    line-height: 1.3;
}

p {
    margin-bottom: 1rem;
    font-size: 1rem;
    font-weight: 300; /* Lighter weight for body text */
}

a {
    color: var(--accent-color);
    text-decoration: none;
    transition: color var(--base-transition-duration) ease;
}

a:hover {
    color: var(--text-color-headings);
}

img {
    max-width: 100%;
    height: auto;
    display: block;
}

/* Section Base */
.content-section {
    scroll-margin-top: 12vh;
    padding: 80px 5%;
    position: relative;
    z-index: 1;
    opacity: 0;
    transform: translateY(40px);
    /* Voici l'animation (avec le réglage rapide à 0.4s) */
    transition: opacity 0.4s var(--scroll-animation-timing), transform 0.4s var(--scroll-animation-timing);
    /* background-color: var(--background-light); <-- SUPPRIMEZ ou VÉRIFIEZ que cette ligne n'y est pas */
}
/* ON EXCLUT LA SECTION RSVP DE L'ANIMATION DE TRANSFORMATION
   POUR PERMETTRE À 'BACKGROUND-ATTACHMENT: FIXED' DE FONCTIONNER. */
#rsvp-section.content-section {
    transform: none;
    opacity: 1;
}
.content-section.is-visible {
    opacity: 1;
    transform: translateY(0);
}
/* ON S'ASSURE QUE LA SECTION RSVP RESTE SANS TRANSFORMATION */
#rsvp-section.content-section.is-visible {
    transform: none;
}
.content-section:nth-of-type(even) {
    background-color: var(--background-alt);
}

/* General Section Title Styling */
.section-title-container {
    text-align: center;
    margin-bottom: 50px;
}
.section-title {
    font-size: clamp(2.5rem, 5vw, 3.5rem);
    font-weight: 700;
    position: relative;
    display: inline-block;
    padding-bottom: 15px;
    margin-bottom: 10px; /* Space for subtitle */
}
.section-title::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 80px;
    height: 2px;
    background-color: var(--accent-color);
}
.section-subtitle {
    font-family: var(--secondary-font);
    font-size: clamp(1rem, 2vw, 1.15rem);
    color: var(--text-color-dark);
    font-style: italic;
    font-weight: 300;
    max-width: 700px;
    margin: 0 auto;
}

/* --- Section 1: Hero --- */
#hero-section {
    height: 100vh;
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    overflow: hidden;
    background-color: #e0d8cf; /* Fallback if image doesn't load */
}

.hero-background {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-image: url('images/image1.jpg'); /* Fallback, mais idéalement une image Hotlink */
    background-size: cover;
    background-position: center;
    z-index: 1;
    transition: transform 0.5s var(--scroll-animation-timing), opacity 0.5s var(--scroll-animation-timing);
    filter: brightness(0.8) saturate(0.9); /* Adoucir légèrement */
}

#hero-section::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: linear-gradient(
      to bottom,
      rgba(var(--accent-color-rgb), 0.1) 0%,
      rgba(var(--accent-color-rgb), 0.3) 100%
    );
    z-index: 2;
    transition: opacity 0.5s var(--scroll-animation-timing);
}

.main-nav {
    position: absolute;
    top: 40px;
    left: 50%;
    transform: translateX(-50%);
    z-index: 1000;
    opacity: 1;
    padding: 10px 20px;
    border-radius: 30px; /* Pill shape */
    background-color: rgba(255, 255, 255, 0.2); /* Fond très subtil */
    backdrop-filter: blur(5px);
    transition: top 0.3s ease-out, background-color 0.3s ease-out, box-shadow 0.3s ease-out, padding 0.3s ease-out;
}

.main-nav.fixed-nav {
    position: fixed;
    top: 20px;
    background-color: rgba(253, 250, 246, 0.85); /* var(--background-light) avec opacité */
    backdrop-filter: blur(10px);
    box-shadow: 0 3px 15px rgba(var(--accent-color-rgb), 0.1);
}

.main-nav ul {
    list-style: none;
    display: flex;
    justify-content: center;
    align-items: center;
}

.main-nav ul li {
    margin: 0 25px;
}

.main-nav ul li a {
    text-decoration: none;
    color: var(--text-color-light);
    font-family: var(--secondary-font);
    font-size: 0.9rem;
    font-weight: 400; /* Bolder pour nav links */
    letter-spacing: 0.8px;
    /* padding: 8px 0; <-- MODIFIÉ */
    padding: 10px 0; /* Léger padding haut/bas */
    position: relative;
    transition: color var(--base-transition-duration) ease;
    text-transform: uppercase;
    
    /* --- AJOUTS POUR L'ALIGNEMENT --- */
    display: flex; /* Active Flexbox */
    align-items: center; /* Centre le texte verticalement */
    justify-content: center; /* Centre le texte horizontalement */
    text-align: center; /* S'assure que le texte multi-ligne est centré */
    box-sizing: border-box; /* Pour que le padding soit inclus */
    min-height: 50px; /* Hauteur minimale GARANTIE pour 2 lignes */
}

.main-nav.fixed-nav ul li a {
    color: var(--text-color-headings);
}

.main-nav ul li a::after {
    content: '';
    position: absolute;
    /* bottom: 0; <-- MODIFIÉ */
    bottom: 6px; /* Remonte le trait sous le texte (ajustez si besoin) */
    left: 50%;
    transform: translateX(-50%);
    width: 0;
    height: 1px;
    background-color: var(--accent-color);
    transition: width var(--base-transition-duration) ease;
}

.main-nav ul li a:hover::after,
.main-nav ul li a.active-nav-link::after {
    background-color: var(--text-color-light);
    width: 100%;
}

.main-nav ul li a:hover,
.main-nav ul li a.active-nav-link {
    color: var(--text-color-light);
}
.main-nav.fixed-nav ul li a:hover,
.main-nav.fixed-nav ul li a.active-nav-link {
    color: var(--accent-color);
}
.main-nav.fixed-nav ul li a.active-nav-link::after {
    background-color: var(--accent-color);
}

/* --- Styles pour le bouton RSVP dans la Nav --- */
/* 1. Style de base du bouton */
.nav-rsvp-button {
    background-color: var(--accent-color);
    padding: 8px 18px !important; /* !important RESTAURÉ pour garder la forme pilule */
    border-radius: 20px; /* Forme de pilule */
    transition: background-color 0.3s ease, color 0.3s ease, transform 0.2s ease;

    /* --- AJOUTS POUR L'ALIGNEMENT --- */
    min-height: auto; /* Annule le min-height de 55px hérité */
    height: auto; /* Laisse le padding gérer la hauteur */
}

/* 2. Couleur du texte (doit rester claire/blanche) */
.main-nav ul li a.nav-rsvp-button,
.main-nav.fixed-nav ul li a.nav-rsvp-button {
    color: var(--text-color-light) !important;
    text-shadow: none !important; /* On retire l'ombre du texte pour ce bouton */
}

/* 3. Style au survol (CORRIGÉ) */
.main-nav ul li a.nav-rsvp-button:hover {
    background-color: #fff;
    color: var(--accent-color) !important; /* Le texte devient doré sur fond blanc */
    transform: scale(1.05);
}
.main-nav.fixed-nav ul li a.nav-rsvp-button:hover {
    background-color: var(--text-color-headings); /* Fond sombre au survol en mode fixe */
    color: #fff !important;
}

/* 4. Gestion du trait de soulignement */
/* On désactive le trait au survol UNIQUEMENT pour le bouton RSVP */
.main-nav ul li a.nav-rsvp-button:hover::after {
    width: 0 !important;
}
/* On ajuste sa position verticale pour qu'il ne soit pas trop bas */
.main-nav ul li a.nav-rsvp-button::after {
    bottom: -5px !important; /* Force la position SOUS le bouton */
}
/* On garde le trait quand la section RSVP est ACTIVE SUR LE HERO */
.main-nav ul li a.nav-rsvp-button.active-nav-link::after {
    background-color: var(--text-color-light); /* Le trait est blanc */
    width: 70%; /* On le rend visible en permanence */
}
/* On garde le trait quand la section RSVP est ACTIVE ET que le menu est FIXE */
.main-nav.fixed-nav ul li a.nav-rsvp-button.active-nav-link::after {
    background-color: var(--accent-color); /* Le trait redevient doré */
}
/* --- Fin Styles Bouton RSVP --- */

.hero-content {
    position: relative;
    z-index: 3;
    color: var(--text-color-light);
    text-shadow: 0px 1px 5px rgba(0,0,0,0.1);
    transition: opacity 0.5s var(--scroll-animation-timing), transform 0.5s var(--scroll-animation-timing);
}

.hero-content .hero-subtitle {
    font-family: var(--secondary-font);
    font-size: clamp(1.3rem, 3vw, 1.8rem);
    color: var(--text-color-light);
    font-weight: 300;
    letter-spacing: 2px;
    margin-bottom: 20px;
    text-transform: uppercase;
}

.hero-content h1 {
    font-family: var(--hero-title-font);
    font-size: clamp(4.5rem, 12vw, 9rem);
    font-weight: normal; /* Script fonts often have built-in weight */
    line-height: 1.1;
    margin: 0 0 25px 0;
    color: var(--text-color-light);
}

.hero-content .wedding-date {
    font-family: var(--primary-font);
    font-size: clamp(1.8rem, 4vw, 2.5rem);
    color: var(--text-color-light);
    font-weight: 500; /* Semi-bold Garamond */
    letter-spacing: 1px;
    opacity: 0.9;
}

.scroll-down-indicator {
    position: absolute;
    bottom: 40px;
    left: 50%;
    transform: translateX(-50%);
    color: var(--text-color-light);
    display: flex;
    flex-direction: column;
    align-items: center;
    transition: opacity 0.5s var(--scroll-animation-timing);
    z-index: 3;
    opacity: 0.7;
}

.scroll-down-indicator span {
    font-family: var(--secondary-font);
    font-size: 0.8rem;
    margin-bottom: 10px;
    letter-spacing: 1px;
    text-transform: uppercase;
}

.scroll-down-indicator .arrow {
    width: 20px; 
    height: 20px;
    border: none; background: none;
}
.scroll-down-indicator .arrow::before {
    content: '\f078'; /* Font Awesome down arrow */
    font-family: "Font Awesome 6 Free";
    font-weight: 900;
    font-size: 1.2rem;
    animation: scroll-arrow-animation 2s infinite ease-out;
}

@keyframes scroll-arrow-animation {
    0% { transform: translateY(-5px); opacity: 0.5; }
    50% { transform: translateY(5px); opacity: 1; }
    100% { transform: translateY(-5px); opacity: 0.5; }
}

/* RSVP Fixed CTA */
.rsvp-cta-fixed {
    position: fixed;
    top: 25px;
    right: 30px;
    z-index: 1001;
    background-color: var(--accent-color);
    color: var(--text-color-light);
    font-family: var(--primary-font);
    font-size: 0.9rem;
    font-weight: 600;
    padding: 10px 20px;
    text-decoration: none;
    border-radius: 30px; /* Pill shape */
    box-shadow: 0 2px 10px rgba(var(--accent-color-rgb),0.3);
    transition: transform 0.2s ease-out, box-shadow 0.2s ease-out, background-color 0.3s ease, color 0.3s ease;
    border: 1px solid transparent;
}

.rsvp-cta-fixed:hover {
    transform: translateY(-2px) scale(1.05);
    box-shadow: 0 4px 15px rgba(var(--accent-color-rgb),0.4);
    background-color: var(--text-color-light);
    color: var(--accent-color);
    border-color: var(--accent-color);
}

/* --- Section "Notre Histoire" --- */
#notre-histoire-section .intro-text {
    max-width: 750px;
    margin: 0 auto 70px auto;
    text-align: center;
    font-size: 1.1rem;
    line-height: 1.8;
    font-weight: 300;
}

/* Timeline Styles (Ethereal) */
.timeline-container {
    position: relative;
    max-width: 900px;
    margin: 50px auto;
    padding: 30px 0;
}

.timeline-line {
    position: absolute;
    left: 50%;
    top: 0;
    bottom: 0;
    width: var(--timeline-line-width);
    background-color: var(--border-color);
    transform: translateX(-50%);
    z-index: 1;
}

.timeline-line-progress {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 0%;
    background-color: var(--timeline-color);
    transition: height 0.1s linear; /* Smooth fill */
}

.timeline-item {
    display: flex;
    justify-content: space-between;
    align-items: center; /* Vertically align items better */
    position: relative;
    margin-bottom: 70px;
    opacity: 0;
    transform: translateY(30px);
    transition: opacity 0.6s ease-out, transform 0.6s ease-out;
    z-index: 2;
}
.timeline-item.is-visible {
    opacity: 1;
    transform: translateY(0);
}

.timeline-content-block {
    width: calc(50% - (var(--timeline-line-width) / 2) - var(--timeline-gap-from-line));
    box-sizing: border-box;
    border-radius: 8px;
}

.timeline-content-block.image-block {
    overflow: hidden; /* Ensures image respects border-radius */
    border: 1px solid var(--border-color); /* Subtle border */
    box-shadow: 0 5px 15px rgba(0,0,0,0.05);
}
.timeline-content-block.image-block img {
    width: 100%;
    height: auto;
    max-height: 300px; /* Increased max height */
    object-fit: cover;
    display: block;
    border-radius: 7px; /* Match parent's inner radius */
    transition: transform 0.4s ease;
}
.timeline-item:hover .timeline-content-block.image-block img {
    transform: scale(1.05);
}


.text-block {
    padding: 25px; /* More padding */
}
.timeline-item:nth-child(odd) .image-block { order: 1; }
.timeline-item:nth-child(odd) .text-block { order: 2; text-align: left; padding-left: 0; }
.timeline-item:nth-child(even) .image-block { order: 2; }
.timeline-item:nth-child(even) .text-block { order: 1; text-align: right; padding-right: 0; }


.timeline-marker {
    width: var(--timeline-marker-diameter);
    height: var(--timeline-marker-diameter);
    border-radius: 50%;
    background-color: var(--background-light);
    border: var(--timeline-marker-border) solid var(--timeline-color);
    position: absolute;
    top: 50%; /* Center marker vertically relative to item */
    left: 50%;
    transform: translate(-50%, -50%) scale(0); /* Initial state */
    z-index: 3;
    transition: transform 0.5s cubic-bezier(0.68, -0.55, 0.27, 1.55) 0.2s; /* Pop effect */
}
.timeline-item.is-visible .timeline-marker {
    transform: translate(-50%, -50%) scale(1);
}

.text-block h3 { /* Timeline event title */
    font-family: var(--primary-font);
    font-size: 1.6em;
    margin-top: 0;
    margin-bottom: 10px;
    color: var(--text-color-headings);
    font-weight: 700;
}
.text-block p { /* Timeline event description */
    font-size: 0.95em;
    line-height: 1.7;
    color: var(--text-color-dark);
    font-weight: 300;
}

/* --- Section "Notre Équipe" --- */
#equipe-section {
    background-color: var(--background-alt);
}
.team-content-wrapper {
    max-width: 1200px;
    margin: 0 auto;
}
.team-category {
    margin-bottom: 70px;
}
.team-category-title {
    font-family: var(--primary-font);
    font-size: clamp(1.8rem, 4vw, 2.2rem);
    color: var(--chateau-primary-color);
    text-align: center;
    margin-bottom: 50px;
    position: relative;
    padding-bottom: 10px;
}
.team-category-title::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 60px;
    height: 1.5px;
    background-color: var(--accent-color);
}
.team-grid {
    display: grid;
    gap: 35px;
}
.officiant-grid {
    grid-template-columns: 1fr;
    justify-items: center;
}
.officiant-grid .team-member-card {
    max-width: 350px; /* Slightly larger for officiant */
}
.temoins-grid, .couple-grid {
    grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); /* Responsive grid */
}
.team-member-card {
    background-color: var(--background-light);
    border-radius: 12px;
    box-shadow: 0 8px 25px rgba(var(--accent-color-rgb), 0.08);
    text-align: center;
    padding: 30px 25px;
    transition: transform var(--base-transition-duration) ease, box-shadow var(--base-transition-duration) ease;
    display: flex;
    flex-direction: column;
    align-items: center;
}
.team-member-card:hover {
    transform: translateY(-10px);
    box-shadow: 0 12px 35px rgba(var(--accent-color-rgb), 0.12);
}
.team-member-photo {
    width: 160px;
    height: 160px;
    border-radius: 50%;
    overflow: hidden;
    margin-bottom: 25px;
    background-color: var(--border-color);
    box-shadow: 0 0 0 5px var(--background-light), 0 0 0 7px var(--accent-color); /* Elegant border */
}
.team-member-photo img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.team-member-name {
    font-family: var(--primary-font);
    font-size: 1.5em;
    color: var(--text-color-headings);
    margin-bottom: 8px;
    font-weight: 700;
}
.team-member-role {
    font-family: var(--secondary-font);
    font-size: 0.9em;
    color: var(--accent-color);
    font-style: italic;
    margin-bottom: 10px;
    font-weight: 500;
}
.team-member-bio {
    font-family: var(--secondary-font);
    font-size: 0.85em;
    color: var(--text-color-dark);
    line-height: 1.6;
    font-weight: 300;
}


/* --- Section "Programme & Countdown" --- */
#programme-section .section-title-container {
    margin-bottom: 30px;
}
#programme-section .section-title {
     color: var(--chateau-primary-color);
     font-size: clamp(2.2rem, 5vw, 3rem);
}
#programme-section .section-subtitle {
     font-size: 1.1em;
     color: var(--text-color-dark);
     margin-top: 5px;
     font-style: normal; /* Less italic, more direct */
}

.countdown-timer-flex {
    display: flex;
    justify-content: center;
    align-items: baseline;
    gap: 20px;
    margin-top: 40px;
    margin-bottom: 70px; /* Space before programme details */
}
.countdown-block {
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: 15px 20px;
    background-color: rgba(var(--accent-color-rgb), 0.05);
    border-radius: 10px;
    min-width: 90px;
    border: 1px solid rgba(var(--accent-color-rgb), 0.1);
}
.countdown-number {
    font-family: var(--primary-font);
    font-size: clamp(2.8rem, 7vw, 4rem);
    font-weight: 700;
    color: var(--countdown-number-color);
    line-height: 1;
}
.countdown-label {
    font-family: var(--secondary-font);
    font-size: clamp(0.75rem, 1.8vw, 0.9rem);
    color: var(--countdown-text-color);
    text-transform: uppercase;
    letter-spacing: 1.5px;
    margin-top: 8px;
    font-weight: 400;
}
.countdown-separator {
    font-family: var(--primary-font);
    font-size: clamp(2rem, 5vw, 3rem);
    color: var(--accent-color);
    opacity: 0.6;
    align-self: center; /* Vertically center with blocks */
    line-height: 1;
    position: relative;
    top: -0.15em; /* Fine-tune vertical alignment */
}

.countdown-finished {
    font-family: var(--primary-font);
    font-size: clamp(1.8rem, 4vw, 2.5rem);
    color: var(--accent-color);
    padding: 40px 20px;
    text-align: center;
    font-weight: 600;
}

.programme-wrapper {
    max-width: 1100px;
    margin: 0 auto;
}
.programme-day {
    margin-bottom: 70px;
}
.programme-day-title {
    font-family: var(--primary-font);
    font-size: clamp(2rem, 4.5vw, 2.6rem);
    color: var(--chateau-primary-color);
    text-align: center;
    margin-bottom: 50px;
    padding-bottom: 15px;
    position: relative;
    border-bottom: 1px solid var(--border-color);
}
.programme-day-title::after {
    content: ''; /* MODIFIÉ: Vide pour mettre une image */
    background-image: url('images/logo.png'); /* AJOUT: Chemin vers votre logo */
    background-size: contain; /* AJOUT: L'image s'adapte */
    background-repeat: no-repeat; /* AJOUT: Pas de répétition */
    background-position: center; /* AJOUT: Centrage */
    
    width: 90px; /* AJOUT: Largeur de l'icône */
    height: 90px; /* AJOUT: Hauteur de l'icône */

    /* font-size: 1em; <-- SUPPRIMÉ */
    /* color: var(--accent-color); <-- SUPPRIMÉ */
    
    position: absolute;
    bottom: -45px; /* MODIFIÉ: Ajusté pour la hauteur de l'image (moitié de 35px) */
    left: 50%;
    transform: translateX(-50%);
    background-color: var(--background-light); /* Match section BG */
    padding: 0 10px; /* Gardé pour l'espace autour */
    z-index: 1;
}

/* NOUVELLES RÈGLES GLOBALES (pour ordinateur ET mobile) */
.programme-day-title .day-date,
.programme-day-title .day-subtitle {
    display: block; /* Force le passage à la ligne */
    margin: 0 auto; /* Centre les blocs */
    line-height: 1.3;
    text-align: center; /* Centre le texte */
    position: relative; /* AJOUT: Permet au z-index de fonctionner */
    z-index: 2; /* AJOUT: Place le texte AU-DESSUS du logo (niveau 2) */
}
.programme-day-title .day-date {
    font-family: var(--secondary-font); /* Police non-serif pour la date */
    font-size: 0.7em; /* Date plus petite */
    text-transform: uppercase;
    font-weight: 600;
    letter-spacing: 0.5px;
}
.programme-day-title .day-subtitle {
    font-size: 1em; /* Garde la taille relative du titre */
    font-style: italic;
    font-weight: 600; /* Garde le poids du h3 */
}
#programme-section.content-section:nth-of-type(even) .programme-day-title::after {
    background-color: var(--background-alt); /* Match alt section BG */
}


.programme-events-grid {
    display: grid;
    gap: 30px;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); /* Flexible grid */
}
.programme-event-card {
    background-color: var(--background-light);
    border-radius: 10px;
    box-shadow: 0 6px 20px rgba(var(--accent-color-rgb), 0.07);
    padding: 35px 30px;
    text-align: center;
    transition: transform var(--base-transition-duration) ease, box-shadow var(--base-transition-duration) ease;
    border: 1px solid var(--border-color);
    display: flex;
    flex-direction: column;
    align-items: center;
}
#programme-section.content-section:nth-of-type(even) .programme-event-card {
    background-color: var(--background-alt); /* If programme is on an even section */
    border-color: #e0d8cf; /* Slightly darker border if on alt background */
}

.programme-event-card:hover {
    transform: translateY(-8px) scale(1.02);
    box-shadow: 0 10px 30px rgba(var(--accent-color-rgb), 0.12);
}
.event-icon {
    font-size: 2.5em;
    color: var(--accent-color);
    margin-bottom: 20px;
    line-height: 1;
    transition: transform 0.3s ease;
}
.programme-event-card:hover .event-icon {
    transform: scale(1.1);
}
.event-time {
    font-family: var(--secondary-font);
    font-size: 1rem;
    font-weight: 500; /* Semi-bold for time */
    color: var(--text-color-dark);
    margin-bottom: 8px;
    letter-spacing: 0.5px;
}
.event-name {
    font-family: var(--primary-font);
    font-size: 1.6em;
    color: var(--text-color-headings);
    margin-bottom: 12px;
    font-weight: 700;
}
.event-description {
    font-family: var(--secondary-font);
    font-size: 0.9rem;
    color: var(--text-color-dark);
    line-height: 1.7;
    font-weight: 300;
    flex-grow: 1; /* Helps align content if descriptions vary in length */
}
.lendemin-grid { /* For single item like brunch */
    grid-template-columns: minmax(auto, 450px);
    justify-content: center;
}


/* --- Section "Infos Pratiques" (Le Mariage) --- */
#infospratiques-section .section-title { /* Se Rendre au Château */
     color: var(--chateau-primary-color);
}
.mariage-content-grid {
    display: grid;
    grid-template-columns: 1.2fr 1fr; /* Emphasize text slightly */
    gap: 60px;
    align-items: center;
    max-width: 1100px;
    margin: 0 auto;
}
.mariage-itineraires h3 {
    font-family: var(--primary-font);
    color: var(--chateau-primary-color);
    font-size: 1.8em;
    margin-bottom: 30px;
    display: flex;
    align-items: center;
    font-weight: 700;
}
.mariage-itineraires h3 i {
    margin-right: 15px;
    color: var(--chateau-secondary-color);
    font-size: 0.9em; /* Slightly smaller icon relative to text */
}
.transport-mode {
    margin-bottom: 30px;
    padding-left: 20px;
    border-left: 2px solid var(--accent-color);
}
.transport-mode h4 {
    font-family: var(--primary-font);
    font-size: 1.3em;
    color: var(--text-color-headings);
    margin-bottom: 10px;
    font-weight: 600;
}
.transport-mode h4 i {
    margin-right: 10px;
    color: var(--accent-color);
    width: 20px;
    text-align: center;
}
.transport-mode p {
    line-height: 1.7;
    color: var(--text-color-dark);
    font-size: 0.95em;
    font-weight: 300;
}
.transport-mode p em {
    color: var(--text-color-headings);
    font-style: normal;
    font-weight: 500;
}
.cta-button-small { /* For map links etc. */
    display: inline-block;
    background-color: transparent;
    color: var(--accent-color);
    padding: 8px 18px;
    border-radius: 20px; /* Pill shape */
    text-decoration: none;
    font-size: 0.8rem;
    font-weight: 500;
    border: 1px solid var(--accent-color);
    transition: background-color var(--base-transition-duration) ease, color var(--base-transition-duration) ease, transform 0.2s ease;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-top: 5px;
}
.cta-button-small:hover {
    background-color: var(--accent-color);
    color: var(--text-color-light);
    transform: translateY(-2px);
}
.mariage-chateau-info {
    text-align: center;
}
.chateau-image-container {
    margin-bottom: 20px;
    display: inline-block;
    border-radius: 12px;
    overflow: hidden;
    box-shadow: 0 10px 30px rgba(var(--accent-color-rgb), 0.15);
}
.chateau-image-container img {
    border-radius: 9px; /* Inner radius */
}
.chateau-caption { margin-top: 15px; }
.chateau-name {
    font-family: var(--primary-font);
    font-size: 1.6em;
    color: var(--chateau-primary-color);
    margin-bottom: 8px;
    font-weight: 700;
}
.chateau-address {
    font-size: 0.95em;
    color: var(--text-color-dark);
    line-height: 1.6;
    font-weight: 300;
}

/* Hébergement Suggestions */
.hebergement-suggestions-wrapper {
    margin-top: 70px;
    padding-top: 50px;
    border-top: 1px solid var(--border-color);
}
.hebergement-main-title {
    font-family: var(--primary-font);
    color: var(--chateau-primary-color);
    font-size: 1.8em;
    text-align: center;
    margin-bottom: 50px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 700;
}
.hebergement-main-title i {
    margin-right: 15px;
    color: var(--chateau-secondary-color);
    font-size: 0.9em;
}
.hebergement-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
    gap: 35px;
}
.hebergement-card {
    background-color: var(--background-light);
    border-radius: 10px;
    box-shadow: 0 5px 20px rgba(var(--accent-color-rgb), 0.07);
    overflow: hidden;
    display: flex;
    flex-direction: column;
    transition: transform var(--base-transition-duration) ease, box-shadow var(--base-transition-duration) ease;
    border: 1px solid var(--border-color);
}
.hebergement-card:hover {
    transform: translateY(-8px);
    box-shadow: 0 10px 30px rgba(var(--accent-color-rgb), 0.12);
}
.hebergement-card-image img {
    width: 100%;
    height: 220px;
    object-fit: cover;
    display: block;
    transition: transform 0.4s ease;
}
.hebergement-card:hover .hebergement-card-image img {
    transform: scale(1.05);
}
.hebergement-card-content {
    padding: 25px;
    display: flex;
    flex-direction: column;
    flex-grow: 1;
}
.hebergement-card-content h4 {
    font-family: var(--primary-font);
    font-size: 1.3em;
    color: var(--text-color-headings);
    margin-bottom: 10px;
    font-weight: 600;
}
.hebergement-description {
    font-size: 0.9em;
    color: var(--text-color-dark);
    line-height: 1.7;
    margin-bottom: 20px;
    flex-grow: 1;
    font-weight: 300;
}
.hebergement-link {
    margin-top: auto;
}

/* --- Section RSVP --- */
/* Removing the sketch background for a cleaner, more elegant look */
#rsvp-section {
    padding-top: 80px;
    padding-bottom: 80px;
    background-color: var(--background-alt); /* Soft background */
    position: relative;
}
#rsvp-section.rsvp-section-bg-sketch {
    position: relative; /* Indispensable pour la nouvelle technique */
    z-index: 1; /* S'assure qu'elle est au-dessus du reste */
    padding-top: 60px; 
    padding-bottom: 60px;
    overflow: hidden; /* L'ASTUCE : "cadre" l'image à l'intérieur */
    /* Toutes les lignes background-* ont été SUPPRIMÉES */
}
.rsvp-background-image {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%; /* S'étend à toute la section parente */
    z-index: -1;  /* Se place derrière le formulaire */

    /* On remet les propriétés de l'image ici */
    background-image: url('images/sketch chateau.png');
    background-position: center center;
    background-repeat: no-repeat;
    background-size: cover;
    
    /* C'est la combinaison magique : */
    background-attachment: fixed;
}

.rsvp-bg-overlay-text { /* This will be the header above the form box */
    position: relative;
    z-index: 2;
    text-align: center;
    color: var(--text-color-headings);
    margin-bottom: 50px;
    padding: 0 20px; /* Only horizontal padding */
}
.rsvp-bg-title { /* "RSVP" */
    font-family: var(--primary-font);
    font-size: clamp(2.8rem, 6vw, 4rem);
    color: var(--chateau-primary-color);
    font-weight: 700;
    margin-bottom: 10px;
    text-transform: uppercase;
    letter-spacing: 2px;
}
.rsvp-bg-names { /* "Elise & Maxime" */
    font-family: var(--hero-title-font); /* Using the script font */
    font-size: clamp(2rem, 4.5vw, 2.8rem);
    color: var(--accent-color);
    margin-bottom: 15px;
}
.rsvp-bg-date { /* "20 juin 2026" */
    font-family: var(--secondary-font);
    font-size: clamp(1.1rem, 2.5vw, 1.3rem);
    color: var(--text-color-dark);
    font-weight: 400;
    opacity: 0.8;
}

/* RSVP Form Wrapper Styling */
.rsvp-content-wrapper { /* This is the box containing the form */
    max-width: 700px;
    margin: 0 auto;
    background-color: var(--background-light);
    padding: 50px 60px;
    border-radius: 12px;
    box-shadow: 0 10px 40px rgba(var(--accent-color-rgb), 0.15);
    border: 1px solid var(--border-color);
    position: relative; /* Ensure it's above section BG if needed */
    z-index: 1;
}

/* Hide the original title inside the form box, as we have a new one above */
#rsvp-section .rsvp-form-header {
    display: none;
}

.rsvp-intro { /* Optional intro text if you had one */
    text-align: center;
    margin-bottom: 35px;
    font-size: 1rem;
    line-height: 1.7;
    color: var(--text-color-dark);
    font-weight: 300;
}
.rsvp-intro strong {
    color: var(--accent-color);
    font-weight: 500;
}

/* Form elements */
.rsvp-form .form-group {
    margin-bottom: 25px;
}
.rsvp-form .form-label,
.rsvp-form label {
    display: block;
    font-family: var(--secondary-font);
    font-weight: 500; /* Semi-bold labels */
    margin-bottom: 8px;
    color: var(--text-color-headings);
    font-size: 0.9rem;
    letter-spacing: 0.3px;
}
.rsvp-form input[type="text"],
.rsvp-form input[type="email"],
.rsvp-form input[type="number"],
.rsvp-form textarea,
.rsvp-form .rsvp-select {
    width: 100%;
    padding: 12px 15px;
    border: 1px solid var(--border-color);
    border-radius: 6px;
    box-sizing: border-box;
    font-family: var(--secondary-font);
    font-size: 0.95rem;
    color: var(--text-color-dark);
    background-color: #fff; /* Slightly whiter than section bg */
    transition: border-color var(--base-transition-duration) ease, box-shadow var(--base-transition-duration) ease;
    font-weight: 300;
}
.rsvp-form input[type="text"]::placeholder,
.rsvp-form textarea::placeholder {
    color: #999;
    font-style: normal;
    opacity: 1;
}
.rsvp-form input[type="text"]:focus,
.rsvp-form input[type="email"]:focus,
.rsvp-form input[type="number"]:focus,
.rsvp-form textarea:focus,
.rsvp-form .rsvp-select:focus {
    border-color: var(--accent-color);
    box-shadow: 0 0 0 3px rgba(var(--accent-color-rgb), 0.15);
    outline: none;
}
.rsvp-form textarea {
    min-height: 100px;
    resize: vertical;
}
.rsvp-form .rsvp-select { /* Custom select arrow */
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
    background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg xmlns%3D%22http%3A//www.w3.org/2000/svg%22 width%3D%2220%22 height%3D%2220%22 viewBox%3D%220 0 20 20%22 fill%3D%22none%22%3E%3Cpath d%3D%22M5 7.5L10 12.5L15 7.5%22 stroke%3D%22%235c544b%22 stroke-width%3D%221.2%22 stroke-linecap%3D%22round%22 stroke-linejoin%3D%22round%22/%3E%3C/svg%3E'); /* Updated color */
    background-repeat: no-repeat;
    background-position: right 15px center;
    background-size: 16px;
    cursor: pointer;
}
.rsvp-form .form-row {
    display: flex;
    gap: 20px;
}
.rsvp-form .form-group.half-width {
    flex: 1;
    min-width: 0;
}

/* Add space between the name fields and the attendance question */
.rsvp-form .form-row + .form-group {
    margin-top: 35px;
}

/* Radio Buttons (Modernized) */
.radio-group.attendance-group {
    display: flex;
    gap: 10px; /* Reduced gap for Yes/No */
    flex-wrap: wrap;
}

.guest-block .form-row + .form-group {
    margin-top: 20px;
}
.modern-radio { /* Label wrapping the input */
    display: inline-flex; /* Align custom radio and text */
    align-items: center;
    padding: 10px 0; /* Only vertical padding to affect height, horizontal comes from spacing */
    cursor: pointer;
    font-size: 0.95rem;
    font-weight: 300;
}
.radio-custom-design { /* The circle */
    width: 20px;
    height: 20px;
    border: 1.5px solid var(--border-color);
    border-radius: 50%;
    margin-right: 10px;
    position: relative;
    transition: border-color var(--base-transition-duration) ease, background-color var(--base-transition-duration) ease;
}
.modern-radio input[type="radio"]:checked + .radio-custom-design {
    border-color: var(--accent-color);
    background-color: var(--accent-color);
}
.radio-custom-design::after { /* Inner dot */
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%) scale(0);
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background-color: white;
    transition: transform 0.2s ease-out;
}
.modern-radio input[type="radio"]:checked + .radio-custom-design::after {
    transform: translate(-50%, -50%) scale(1);
}
.modern-radio input[type="radio"]:focus-visible + .radio-custom-design { /* Focus ring */
    box-shadow: 0 0 0 2px rgba(var(--accent-color-rgb), 0.2);
}

/* RSVP Details Container (if "Oui") */
#rsvp-details-container {
    padding: 25px;
    background-color: rgba(var(--accent-color-rgb), 0.03);
    border-radius: 8px;
    margin-top: 25px;
    border: 1px solid rgba(var(--accent-color-rgb), 0.1);
}
#additionalGuestsSection {
    padding: 20px;
    background-color: rgba(var(--chateau-primary-color), 0.02);
    border-radius: 8px;
    margin-top: 20px;
    margin-bottom: 25px;
    border: 1px solid rgba(var(--chateau-primary-color), 0.05);
}
#additionalGuestsSection .form-label {
    font-size: 0.95em;
    font-weight: 500;
    font-family: var(--primary-font);
    color: var(--chateau-primary-color);
    margin-bottom: 15px;
}
.guest-block {
    border-top: 1px solid var(--border-color);
    padding-top: 20px;
    margin-top: 20px;
}
/* Pas de bordure/marge pour le premier bloc invité */
#additionalGuestsSection .guest-block:first-child {
    border-top: none;
    padding-top: 0;
    margin-top: 0;
}
.guest-block-title {
    font-family: var(--primary-font);
    font-size: 1.1rem;
    font-weight: 600;
    color: var(--accent-color); /* Couleur accentuée pour le titre */
    margin-bottom: 10px;
}

/* Add space between guest name and their allergy dropdown */
.guest-block .form-row + .form-group {
    margin-top: 20px;
}
#allergiesAutreContainer {
    margin-top: 10px; /* Closer to select */
    padding-left: 0; /* No indent needed if styled clearly */
}
#allergiesAutreContainer label {
    font-size: 0.85em;
    font-weight: 400;
    color: var(--text-color-dark);
    opacity: 0.8;
}

/* Submit Button */
.form-submit {
    text-align: center;
    margin-top: 35px;
}
.cta-button.rsvp-button {
    padding: 14px 35px;
    font-size: 1rem;
    font-family: var(--primary-font);
    font-weight: 600;
    background-color: var(--accent-color);
    color: var(--text-color-light);
    border: none;
    border-radius: 30px; /* Pill shape */
    cursor: pointer;
    transition: background-color var(--base-transition-duration) ease, transform 0.2s ease, box-shadow var(--base-transition-duration) ease;
    box-shadow: 0 4px 15px rgba(var(--accent-color-rgb), 0.2);
}
.cta-button.rsvp-button:hover {
    background-color: var(--text-color-headings); /* Darken */
    transform: translateY(-3px) scale(1.03);
    box-shadow: 0 6px 20px rgba(var(--accent-color-rgb), 0.3);
}
.cta-button.rsvp-button:disabled {
    background-color: #ccc;
    box-shadow: none;
    cursor: not-allowed;
    transform: none;
}
.rsvp-form-message {
    margin-top: 25px;
    padding: 15px 20px;
    border-radius: 8px;
    text-align: center;
    font-size: 1rem;
    line-height: 1.6;
    font-weight: 300;
}
.rsvp-form-message.success {
    background-color: rgba(var(--accent-color-rgb), 0.1);
    color: var(--accent-color);
    border: 1px solid rgba(var(--accent-color-rgb), 0.3);
}
.rsvp-form-message.error {
    background-color: #fceded; /* Soft red */
    color: #c53030; /* Darker red */
    border: 1px solid #f7baba;
}
.rsvp-contact-note {
    text-align: center;
    margin-top: 40px;
    font-size: 0.9em;
    color: var(--text-color-dark);
    opacity: 0.7;
    font-weight: 300;
}
.rsvp-contact-note a {
    font-weight: 500; /* Semi-bold link */
}

/* --- Section Liste de Mariage --- */
#liste-de-mariage-section {
    background-color: var(--background-alt); /* Utilise la couleur de fond alternée */
}
.wedding-list-intro {
    max-width: 700px;
    margin: 40px auto 0 auto; /* Espace après le titre et centrage */
    text-align: center;
}
.wedding-list-intro p {
    font-size: 1.1rem;
    line-height: 1.8;
    font-weight: 300;
    color: var(--text-color-dark);
}
.wedding-list-intro .cta-button {
    margin-top: 60px; /* Espace augmenté */
    display: inline-block; /* AJOUTÉ : Force le navigateur à appliquer le margin-top */
}
/* --- Fin Section Liste de Mariage --- */


/* --- Section FAQ --- */
#faq-section {
    background-color: var(--background-light);
}
.faq-layout-container {
    display: grid;
    grid-template-columns: 1fr; /* Mobile first */
    gap: 40px;
    max-width: 1000px;
    margin: 0 auto;
}
.faq-nav-categories ul {
    list-style: none;
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-bottom: 30px; /* Space before content on mobile */
    justify-content: center; /* Center categories on mobile */
}
.faq-nav-link {
    display: block;
    padding: 10px 18px;
    font-family: var(--secondary-font);
    font-size: 0.9rem;
    font-weight: 500;
    color: var(--text-color-dark);
    border-radius: 20px; /* Pill shape */
    transition: background-color var(--base-transition-duration) ease, color var(--base-transition-duration) ease;
    border: 1px solid var(--border-color);
}
.faq-nav-link:hover {
    background-color: rgba(var(--accent-color-rgb), 0.1);
    color: var(--accent-color);
    border-color: rgba(var(--accent-color-rgb), 0.3);
}
.faq-nav-link.active {
    background-color: var(--accent-color);
    color: var(--text-color-light);
    border-color: var(--accent-color);
    font-weight: 600;
}
.faq-category-content { /* JS handles display */ }
.faq-qa-pair {
    margin-bottom: 30px;
    padding-bottom: 25px;
    border-bottom: 1px solid var(--border-color);
}
.faq-qa-pair:last-child {
    margin-bottom: 0;
    border-bottom: none;
}
.faq-question-title {
    font-family: var(--primary-font);
    font-size: clamp(1.3rem, 2.5vw, 1.6rem);
    font-weight: 700;
    color: var(--text-color-headings);
    margin-bottom: 12px;
}
.faq-answer-text p {
    font-family: var(--secondary-font);
    font-size: clamp(0.9rem, 2vw, 1rem);
    line-height: 1.8;
    color: var(--text-color-dark);
    font-weight: 300;
}
.faq-answer-text strong {
    color: var(--text-color-headings);
    font-weight: 500;
}
.faq-inline-link {
    color: var(--accent-color);
    font-weight: 500;
    border-bottom: 1px solid transparent;
}
.faq-inline-link:hover {
    border-bottom-color: var(--accent-color);
}


/* --- Modal Save The Date --- */
.modal-overlay {
    background-color: rgba(60, 50, 40, 0.8); /* Darker, warmer overlay */
    backdrop-filter: blur(5px);
}
.modal-content {
    background-color: var(--background-light);
    padding: 40px; /* More padding */
    border-radius: 12px;
    box-shadow: 0 8px 40px rgba(0,0,0,0.2);
    max-width: 650px;
    width: 90%;
    border: 1px solid var(--border-color);
}
.modal-close-button {
    font-size: 2rem;
    font-weight: 300;
    color: var(--text-color-dark);
    opacity: 0.7;
}
.modal-close-button:hover {
    color: var(--accent-color);
    opacity: 1;
}

/* STD Content Specifics (Option 1: Full Image) */
.std-modal-content .save-the-date-image {
    border-radius: 8px;
    box-shadow: 0 5px 15px rgba(0,0,0,0.1);
    margin-bottom: 25px; /* Space before buttons */
}
/* If using Option 2 (Text + Sketch) */
.std-modal-content .std-header-image { margin-bottom: 20px; }
.std-modal-content .std-sketch-image { max-width: 120px; opacity: 0.5; }
.std-modal-content h2 { /* "Save The Date" title text */
    font-family: var(--primary-font);
    font-size: clamp(2.2rem, 5vw, 3rem);
    color: var(--accent-color);
    margin-top: 10px; margin-bottom: 15px; font-weight: 700;
}
.std-modal-content .std-names {
    font-family: var(--hero-title-font);
    font-size: clamp(1.8rem, 4vw, 2.4rem);
    color: var(--text-color-headings);
    margin-bottom: 10px;
}
/* Other STD text elements would follow this elegant style */
.std-calendar-buttons {
    margin-top: 30px;
    padding-top: 20px;
    border-top: 1px solid var(--border-color);
    gap: 15px;
}
.std-button {
    font-family: var(--secondary-font);
    font-size: 0.9rem;
    font-weight: 500;
    padding: 12px 25px;
    border-radius: 25px; /* Pill shape */
    min-width: 220px;
    letter-spacing: 0.5px;
}
.std-button i { font-size: 1.1em; }

.apple-button {
    background-color: #f0f0f0; color: #333; border-color: #ccc;
}
.apple-button:hover { background-color: #e0e0e0; color: #000; }
.google-button {
    background-color: var(--accent-color); color: var(--text-color-light); border-color: var(--accent-color);
}
.google-button:hover {
    background-color: var(--text-color-headings); color: var(--text-color-light);
}
/* --- Footer --- */
.site-footer {
    background-color: var(--text-color-headings); /* Dark, sophisticated footer */
    color: var(--text-color-light);
    padding: 50px 5%;
    text-align: center;
    margin-top: 60px;
    border-top: 3px solid var(--accent-color);
}
.footer-content-wrapper {
    margin-bottom: 25px;
}
.footer-names {
    font-family: var(--hero-title-font);
    font-size: clamp(2rem, 4.5vw, 2.5rem);
    color: var(--text-color-light);
    margin-bottom: 5px;
}
.footer-separator {
    font-size: 1.5rem;
    color: var(--accent-color);
    margin: 8px 0;
}
.footer-date {
    font-family: var(--primary-font);
    font-size: clamp(1.2rem, 2.5vw, 1.4rem);
    font-weight: 500;
    color: var(--text-color-light);
    opacity: 0.9;
    letter-spacing: 1px;
}
.footer-signature {
    font-family: var(--secondary-font);
    font-size: 0.85em;
    color: rgba(248, 240, 227, 0.7); /* Lighter text on dark bg */
    line-height: 1.6;
    font-weight: 300;
}
.footer-signature p { margin: 3px 0 0 0; }

/* ========== 4) CURSEUR “CUSTOM” + VIGNETTES SURFANTES V3 ========== */

/* Container des vignettes (invisible par défaut) */
#image-cursor-container {
  position: fixed;
  top: 0;
  left: 0;
  width: 0;
  height: 0;
  pointer-events: none;
  z-index: 9999;
  display: none; /* on l’affiche ensuite via JS, seulement dans le hero */
}

/* ===== Styles pour la V3 – “Vignettes surfantes” avec label d’année ===== */
.vignette-wrapper {
  position: fixed;          /* déjà en fixed pour que l’image suive le viewport */
  width: 160px;
  height: 240px;
  overflow: hidden;
  pointer-events: none;
  border-radius: 8px;
  box-shadow: 0 8px 20px rgba(0, 0, 0, 0.12);
  background-color: transparent;  /* plus de fond noir */
  z-index: 9999;
}

.vignette-img {
  position: absolute;    /* prend toute la surface du wrapper */
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.vignette-year {
  position: absolute;
  bottom: 4px;
  left: 50%;
  transform: translateX(-50%);
  color: #fff;
  font-size: 0.75rem;
  font-family: 'Montserrat', sans-serif;
  text-shadow: 0 0 5px rgba(0, 0, 0, 0.5);
  pointer-events: none;
  white-space: nowrap;
}

/* --- CORRECTION ERREUR DE SYNTAXE --- */
.martin-card .team-member-photo img {
    transform: scale(1.5);
}
.shuttle-info-wrapper {
    margin-top: 70px; /* Espace par rapport à la section du dessus */
}
/* --- FIN CORRECTION --- */


/* --- Style pour les Blocs d'Information (Navette, etc.) --- */

.info-block-wrapper {
    margin-top: 70px; /* Espace par rapport à la section du dessus */
    padding: 0 20px; /* Un peu d'aération sur les côtés */
}

.info-block {
    max-width: 800px; /* Un peu plus large pour le confort de lecture */
    margin: 0 auto;   /* Pour le centrer sur la page */
    padding: 30px 30px 30px 35px; /* Padding généreux, surtout à gauche */
    
    /* Style "NB" (Nota Bene) */
    border-left: 4px solid var(--accent-color); /* MODIFIÉ : Ligne encore plus épaisse */
    border-top: 1px solid var(--border-color); /* Ligne supérieure */
    border-bottom: 1px solid var(--border-color); /* Ligne inférieure */
    
    background-color: transparent; /* MODIFIÉ : Fond retiré */
    border-radius: 0; /* MODIFIÉ : Plus de coins arrondis */
    box-shadow: none; /* Ombre retirée pour un look plus direct */
}

/* --- Style Spécifique "Navettes" (Rupture visuelle / Night Mode) --- */
.info-block.shuttle-info {
    background-color: var(--text-color-headings); /* Fond sombre */
    border: none; /* On enlève les bordures par défaut */
    border-left: 4px solid var(--accent-color); /* On garde juste une touche dorée à gauche ou on l'enlève ? Allons pour un style "Carte" complet */
    border-left: none; /* Finalement, pas de bordure gauche */

    border-radius: 12px; /* Coins arrondis */
    box-shadow: 0 15px 40px rgba(0,0,0,0.2); /* Ombre portée marquée */
    padding: 40px;
    text-align: center; /* Centrer le texte pour l'effet "Annonce importante" */
}

.info-block.shuttle-info h4 {
    color: var(--accent-color); /* Titre doré */
    justify-content: center; /* Centre l'icône et le titre */
    font-size: 1.8rem;
    margin-bottom: 20px;
}

.info-block.shuttle-info h4 i {
    color: #fff; /* Icône blanche pour contraster */
    background-color: rgba(255,255,255,0.1);
    width: 50px;
    height: 50px;
    line-height: 50px;
    border-radius: 50%;
    text-align: center;
    margin-right: 15px;
}

.info-block.shuttle-info p {
    color: var(--text-color-light); /* Texte clair */
    font-size: 1.05rem;
}

.info-block.shuttle-info p strong {
    color: #fff;
    font-weight: 600;
    border-bottom: 1px solid var(--accent-color); /* Soulignement subtil */
}

.info-block h4 {
    display: flex; /* Permet d'aligner l'icône et le texte */
    align-items: center;
    font-family: var(--primary-font);
    font-size: 1.4em;
    color: var(--text-color-headings);
    margin-bottom: 15px;
    font-weight: 700;
}

.info-block h4 i {
    margin-right: 15px; /* Espace entre l'icône et le titre */
    color: var(--accent-color);
    font-size: 0.9em;
}

.info-block p {
    font-family: var(--secondary-font);
    font-size: 0.95rem;
    color: var(--text-color-headings); /* MODIFIÉ : Texte plus sombre pour plus d'importance */
    line-height: 1.7;
    font-weight: 400; /* Texte plus lisible (était 300) */
    margin-bottom: 0;
}

/* ==========================================================================
   STYLES MOBILES (Précédemment dans index9.html)
========================================================================== 
*/

/* --- Styles pour le menu hamburger mobile --- */
.mobile-nav-toggle {
    display: none; /* Caché par défaut sur ordinateur */
    position: fixed;
    top: 25px;
    right: 30px;
    z-index: 1002; /* Au-dessus du menu (1001) et du RSVP (1001) */
    background: none;
    border: none;
    padding: 10px;
    cursor: pointer;
    font-size: 1.6rem;
    color: var(--text-color-light); /* Couleur initiale (sur le hero) */
    transition: color 0.3s ease;
}

@media (max-width: 1100px) {

    /* ACCÉLÈRE L'ANIMATION D'APPARITION SUR MOBILE */
    .content-section > div {
     transition: opacity 0.2s var(--scroll-animation-timing), transform 0.2s var(--scroll-animation-timing);
}
    
    /* 1. On affiche le bouton hamburger */
    .mobile-nav-toggle {
        display: block;
    }

    /* 2. On cache le bouton RSVP fixe (il entre en conflit avec le toggle) */
    .rsvp-cta-fixed {
        display: none;
    }

    /* 3. On transforme la barre de navigation en panneau latéral */
    .main-nav {
        /* On enlève les styles de la barre de bureau */
        background-color: transparent;
        backdrop-filter: none;
        box-shadow: none;
        padding: 0;
        
        /* On la positionne en plein écran, cachée à droite */
        position: fixed;
        top: 0;
        left: 0;
        width: 100%;
        height: 100dvh; /* 100% de la hauteur de la vue */
        transform: translateX(100%); /* Commence hors de l'écran */
        transition: transform 0.4s cubic-bezier(0.23, 1, 0.32, 1);
        overflow-y: hidden;
        /* ... */
        
        /* Doit être sous le bouton toggle (1002) */
        z-index: 1001; 
    }

    /* 4. Style du menu quand il est ouvert */
    .main-nav.is-open {
       transform: translateX(0); /* Le fait glisser en position */
        background-color: #fdfaf6; /* MODIFIÉ: Force la couleur solide (valeur de --background-light) */
        backdrop-filter: none; /* AJOUT: Supprime tout effet de flou hérité */
    }
    
    /* 5. On réinitialise le .fixed-nav (QUAND IL EST FERMÉ) */
    .main-nav.fixed-nav:not(.is-open) {
        background-color: transparent;
        backdrop-filter: none;
        box-shadow: none;
        top: 0;
        padding: 0;
    }

    /* 6. On centre la liste des liens verticalement */
    .main-nav ul {
    flex-direction: column;
    justify-content: space-evenly; /* MODIFIÉ : Répartit les liens verticalement */
    align-items: center;
    height: 100%; /* MODIFIÉ : Prend 100% de la hauteur de l'écran */
    padding: 20px 0; /* MODIFIÉ : Padding haut/bas réduit */
    box-sizing: border-box; /* AJOUT : S'assure que le padding est inclus dans la hauteur */
}
    .main-nav ul li {
        margin: 0;
    }

    /* 7. On grossit les liens pour le mobile */
    .main-nav ul li a,
.main-nav.fixed-nav ul li a {
    font-size: 1.3rem; /* MODIFIÉ : Police légèrement plus petite */
    font-weight: 500;
    color: var(--text-color-headings); 
    padding: 5px 10px; /* MODIFIÉ : Padding réduit */
}
    /* Style spécifique pour le bouton RSVP dans le menu mobile ouvert */
    .main-nav.is-open ul li a.nav-rsvp-button {
        background-color: var(--accent-color);
        color: var(--text-color-light) !important; /* Force le texte blanc */
        border-radius: 25px; /* Plus arrondi pour mobile */
        padding: 12px 25px !important; /* Padding plus généreux */
        font-weight: 600; /* Un peu plus gras */
    }
    .main-nav.is-open ul li a.nav-rsvp-button:hover {
        background-color: var(--text-color-headings); /* Survol plus sombre */
        transform: scale(1.03); /* Léger grossissement au survol */
    }

    /* 8. On simplifie l'effet de survol/actif pour les liens NORMAUX */
    .main-nav ul li a:not(.nav-rsvp-button):hover,
    .main-nav ul li a:not(.nav-rsvp-button).active-nav-link,
    .main-nav.fixed-nav ul li a:not(.nav-rsvp-button):hover,
    .main-nav.fixed-nav ul li a:not(.nav-rsvp-button).active-nav-link {
        color: var(--accent-color);
    }

    /* 9. On cache les petits traits sous les liens */
    .main-nav ul li a::after,
    .main-nav.fixed-nav ul li a.active-nav-link::after {
        display: none;
    }

    /* --- Styles pour la Timeline sur mobile --- */

    /* 1. On déplace la ligne de temps sur la gauche */
    .timeline-line {
        left: 20px; /* Au lieu de 50% */
        transform: translateX(0);
    }

    /* 2. On déplace les "puces" sur cette nouvelle ligne */
    .timeline-marker {
        left: 21px; /* Au lieu de 50% */
        top: 30px;  /* On la place en haut de l'élément */
        transform: translateX(-50%); /* On centre horizontalement */
    }
    .timeline-item.is-visible .timeline-marker {
    /* On garde l'animation "scale(1)" 
       mais on force la transformation X correcte SANS le décalage Y */
    transform: translateX(-50%) scale(1);
}
    
    /* 3. On dit aux items de s'empiler verticalement */
    .timeline-item {
        display: flex;
        flex-direction: column; /* Empiler (au lieu de côte à côte) */
        padding-left: 55px; /* Espace pour la nouvelle ligne (20px) + un écart (35px) */
        margin-bottom: 40px;
    }

    /* 4. On dit aux blocs de prendre 100% de la largeur */
    .timeline-content-block {
        width: 100%;
        max-width: 100%;
    }
    
    /* 5. On force le TEXTE en premier (pour PAIR ET IMPAIR) */
    .timeline-item:nth-child(odd) .text-block,
    .timeline-item:nth-child(even) .text-block {
        order: 1; /* Texte en premier */
        margin-bottom: 15px; /* Espace avant l'image */
        text-align: left; /* Toujours aligné à gauche */
        padding-left: 10px;
        padding-right: 10px;
        padding-top: 25px;
    }
    
    /* 6. On force l'IMAGE en second (pour PAIR ET IMPAIR) */
    .timeline-item:nth-child(odd) .image-block,
    .timeline-item:nth-child(even) .image-block {
         order: 2; /* Image en second */
    }
    /* --- Styles pour les Témoins (2 colonnes) --- */
    .temoins-grid {
        /* Force une grille de 2 colonnes, 1fr = 1 fraction (50%) */
        grid-template-columns: 1fr 1fr;
        gap: 20px; /* On réduit l'espace entre les cartes */
    }
    
    /* Optionnel : On peut aussi réduire un peu la taille
       des cartes pour que ça rentre mieux */
    .team-member-card {
        padding: 20px 15px;
    }
    .team-member-photo {
        width: 120px;
        height: 120px;
        margin-bottom: 15px;
    }
    .team-member-name {
        font-size: 1.3rem; /* On réduit un peu la police du nom */
    }
    /* --- Styles pour le Programme (Mobile) --- */
    .programme-events-grid {
        /* On force la grille à n'avoir qu'une seule colonne */
        grid-template-columns: 1fr; 
        gap: 15px; /* On réduit l'écart entre les "lignes" */
    }
    
    .lendemin-grid {
        /* On s'assure que le brunch aussi est en 1 colonne */
        grid-template-columns: 1fr;
    }

    .programme-event-card {
        /* On transforme la carte elle-même en grille (icône à gauche, texte à droite) */
        display: grid;
        grid-template-columns: auto 1fr;  /* 1e col s'adapte à l'icône, 2e prend le reste */
        grid-template-rows: auto auto auto; /* 3 rangées pour Heure, Titre, Description */
        gap: 0px 20px; /* 0 d'écart vertical, 20px d'écart horizontal */
        align-items: start; /* On aligne tout en haut */
        text-align: left;   /* On aligne le texte à gauche */
        padding: 20px;
    }
    
    .programme-event-card:hover {
        /* On désactive l'effet de "pop" sur mobile */
        transform: none;
    }

    .event-icon {
        /* L'icône est en 1e colonne et s'étend sur les 3 rangées */
        grid-column: 1 / 2;
        grid-row: 1 / 4;
        font-size: 2.2rem;
        margin-bottom: 0; /* Annule la marge par défaut */
        align-self: center; /* Se centre verticalement dans la carte */
    }

    .event-time {
        grid-column: 2 / 3; /* 2e colonne */
        grid-row: 1 / 2;    /* 1e rangée */
        margin-bottom: 2px; /* Petite marge sous l'heure */
        font-size: 0.9rem;
        font-weight: 600;
        color: var(--accent-color); /* On met l'heure en couleur pour la voir */
    }

    .event-name {
        grid-column: 2 / 3; /* 2e colonne */
        grid-row: 2 / 3;    /* 2e rangée */
        margin-bottom: 8px; /* Marge sous le titre */
        font-size: 1.3rem;
    }

    .event-description {
        grid-column: 2 / 3; /* 2e colonne */
        grid-row: 3 / 4;    /* 3e rangée */
        margin-bottom: 0;
        font-size: 0.9rem;
        line-height: 1.6;
    }
    /* --- Styles for Infos Pratiques (Mobile) --- */
    .mariage-content-grid {
        /* On empile les deux colonnes (itinéraires et info château) */
        grid-template-columns: 1fr;
        gap: 50px; /* Espace entre les deux blocs */
    }
    
    .mariage-chateau-info {
         /* L'info château (colonne 2) vient en premier sur mobile */
        grid-row: 1;
    }
    
    .hebergement-grid {
        /* On force 2 colonnes pour les suggestions d'hôtels, comme les témoins */
        grid-template-columns: 1fr 1fr;
        gap: 20px; /* Espace réduit */
    }
    
    /* On adapte les cartes d'hôtel pour qu'elles rentrent */
    .hebergement-card-content {
        padding: 20px; /* Padding réduit */
    }
    .hebergement-card-content h4 {
        font-size: 1.1rem; /* Police plus petite */
    }
    .hebergement-description {
        font-size: 0.85rem; /* Police plus petite */
        margin-bottom: 15px;
    }
    .hebergement-card-image img {
        height: 160px; /* Image moins haute */
    }
    .hebergement-link {
        align-self: center;
    }

    .cta-button.rsvp-button {
        padding: 12px 20px; /* Padding réduit pour les petits écrans */
        font-size: 1.1rem; /* Police légèrement plus petite */
    }
}

@media (max-width: 768px) {
    /* --- Styles for RSVP Form (Mobile) --- */
    .rsvp-content-wrapper {
        padding: 40px 25px; /* Moins de padding horizontal sur mobile */
    }

    .rsvp-form .form-row {
        flex-direction: column; /* Empile les champs Prénom/Nom */
        gap: 0; /* Annule l'écart horizontal, géré par le margin-bottom du form-group */
    }

    .rsvp-form .form-group.half-width {
        margin-bottom: 25px; /* Ajoute un écart vertical entre les champs empilés */
    }

    /* S'assure que le dernier champ du "form-row" n'a pas de marge en bas,
       car le form-group parent en a déjà une */
    .rsvp-form .form-row .form-group.half-width:last-child {
        margin-bottom: 0;
    }
}

@media (max-width: 768px) {
    /* --- Styles for RSVP Form (Mobile) --- */
    .rsvp-content-wrapper {
        padding: 40px 25px; /* Moins de padding horizontal sur mobile */
    }

    .rsvp-form .form-row {
        flex-direction: column; /* Empile les champs Prénom/Nom */
        gap: 0; /* Annule l'écart horizontal, géré par le margin-bottom du form-group */
    }

    .rsvp-form .form-group.half-width {
        margin-bottom: 25px; /* Ajoute un écart vertical entre les champs empilés */
    }

    /* S'assure que le dernier champ du "form-row" n'a pas de marge en bas,
       car le form-group parent en a déjà une */
    .rsvp-form .form-row .form-group.half-width:last-child {
        margin-bottom: 0;
    }
}

/* --- Password Popup --- */
.password-overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(0, 0, 0, 0.7);
    backdrop-filter: blur(5px);
    display: flex;
    justify-content: center;
    align-items: center;
    z-index: 10000;
    transition: opacity 0.3s ease;
}

.password-modal-content {
    background-color: var(--background-light);
    padding: 40px;
    border-radius: 12px;
    box-shadow: 0 5px 25px rgba(0,0,0,0.15);
    text-align: center;
    max-width: 400px;
    width: 90%;
    border: 1px solid var(--border-color);
}

.password-modal-content h2 {
    font-family: var(--primary-font);
    font-size: 2em;
    color: var(--text-color-headings);
    margin-bottom: 15px;
}

.password-modal-content p {
    font-size: 1rem;
    color: var(--text-color-dark);
    margin-bottom: 25px;
}

#password-input {
    width: 100%;
    padding: 12px 40px 12px 12px;
    border: 1px solid var(--border-color);
    border-radius: 6px;
    font-size: 1rem;
    text-align: center;
}

.password-input-wrapper {
    position: relative;
    margin-bottom: 20px;
}

#toggle-password {
    position: absolute;
    top: 50%;
    right: 15px;
    transform: translateY(-50%);
    cursor: pointer;
    color: var(--text-color-dark);
}
#password-input:focus {
    border-color: var(--accent-color);
    outline: none;
    box-shadow: 0 0 0 3px rgba(var(--accent-color-rgb), 0.15);
}

#password-input.error {
    border-color: #c53030;
}

#password-submit {
    background-color: var(--accent-color);
    color: var(--text-color-light);
    border: none;
    padding: 12px 30px;
    border-radius: 25px;
    font-family: var(--primary-font);
    font-size: 1.1rem;
    font-weight: 600;
    cursor: pointer;
    transition: background-color 0.3s ease, transform 0.2s ease;
}

#password-submit:hover {
    background-color: var(--text-color-headings);
    transform: translateY(-2px);
}

.error-message {
    color: #c53030;
    margin-top: 15px;
    font-weight: 500;
}

#main-content {
    transition: opacity 0.3s ease;
}
