/* Styles Généraux */
        body {
            margin: 0;
            font-family: 'Montserrat', sans-serif;
            color: #4a4a4a;
            scroll-behavior: smooth;
            background-color: #fdfaf7;
            /* Add padding to the top to prevent content from being hidden by the fixed navbar */
            padding-top: 55px;
        }

        h1, h2 {
            font-family: 'Dancing Script', cursive;
            color: #8d7060;
        }

        /* Menu de Navigation */
        nav {
            position: fixed;
            top: 0;
            width: 100%;
            background-color: rgba(255, 255, 255, 0.95);
            display: flex;
            justify-content: center;
            padding: 15px 0;
            box-shadow: 0 2px 5px rgba(0,0,0,0.05);
            z-index: 1000;
            box-sizing: border-box;
        }

        nav a {
            margin: 0 20px;
            text-decoration: none;
            color: #555;
            text-transform: uppercase;
            font-size: 0.9rem;
            letter-spacing: 1px;
            transition: color 0.3s;
        }

        nav a:hover {
            color: #8d7060;
        }

        /* Photo Centrale (Hero) */
        .hero {
            height: 90vh;
            background: linear-gradient(rgba(0,0,0,0.2), rgba(0,0,0,0.2)), 
                        url('images/famille_piscine_espagne_2025.jpg') center/cover no-repeat;
            display: flex;
            align-items: center;
            justify-content: center;
            text-align: center;
            color: white;
            margin-top: 50px;
        }

        .hero-text h1 {
            font-size: 5rem;
            margin: 0;
            color: white;
            text-shadow: 2px 2px 4px rgba(0,0,0,0.3);
            text-shadow: 2px 2px 4px rgba(0,0,0,0.4);
        }

        #compteur {
            margin-top: 2em;
            font-weight: bold;
        }

        /* Sections */
        section {
            padding: 80px 20px;
            max-width: 80%;
            margin: 0 auto;
            text-align: center;
        }

        .card {
            background: white;
            padding: 40px;
            border-radius: 15px;
            box-shadow: 0 10px 30px rgba(0,0,0,0.05);
        }
        #map { 
            width: 100%; 
            height: 560px; 
        }

        /* Formulaire RSVP */
        input, select, button {
            width: 100%;
            padding: 12px;
            margin: 10px 0;
            border: 1px solid #ddd;
            border-radius: 5px;
            box-sizing: border-box;
        }

        form label {
            display: block;
            margin-top: 20px;
            margin-bottom: 5px;
            text-align: left;
            line-height: 1.5;
        }

        button {
            background-color: #8d7060;
            color: white;
            border: none;
            cursor: pointer;
            font-size: 1rem;
            transition: background 0.3s;
        }

        button:hover {
            background-color: #6b5346;
        }


        /* Puzzle Game */
        .puzzle-container {
            display: flex;
            justify-content: center;
            margin: 20px 0;
        }

        .puzzle-board {
            /* The puzzle's dimensions and layout are set via JavaScript (puzzle.js). */
            border: 5px solid #8d7060;
            background-color: #f0f0f0;
        }

        .piece {
            cursor: pointer;
            border: 1px solid #fff;
            box-sizing: border-box;
            transition: transform 0.2s, border-color 0.2s;
        }

        .piece.selected {
            border: 3px solid #e74c3c;
            transform: scale(0.95);
            z-index: 10;
        }

        /* =================================== */
        /*          Responsive Design          */
        /* =================================== */

        /* For tablets and smaller devices */
        @media (max-width: 768px) {
            body {
                /* The nav might wrap, so we need more space. Adjust if needed. */
                padding-top: 85px;
            }

            .hero {
                height: 70vh;
            }

            .hero-text h1 {
                font-size: 3.5rem;
            }

            h2 {
                font-size: 2rem;
            }

            section {
                padding: 40px 15px;
            }

            .card {
                padding: 25px;
            }

            #map {
                height: 400px;
            }
        }

        /* For mobile phones */
        @media (max-width: 480px) {
            nav a {
                margin: 0 5px;
                font-size: 0.75rem;
            }

            .hero {
                height: 60vh;
            }

            .hero-text h1 {
                font-size: 2.8rem;
            }
        }