   :root {
            --olivo-oscuro: #3e4e31;
            --olivo-medio: #556b2f;
            --eucalipto: #a3b18a;
            --crema: #f8f5f0;
            --dorado-suave: #c2a878;
            --negro-cine: #0a0a0a;
        }

        * { margin: 0; padding: 0; box-sizing: border-box; }
        body { 
            font-family: 'Montserrat', sans-serif; 
            background-color: var(--crema); 
            color: var(--olivo-oscuro); 
            overflow-x: hidden;
            display: none; /* Seguridad: se muestra solo por JS */
        }

        /* --- Pantalla de Bloqueo --- */
        #lock-screen {
            display: flex; height: 100vh; width: 100vw; align-items: center; justify-content: center;
            background: var(--negro-cine); color: white; text-align: center; position: fixed; z-index: 9999;
        }

        /* --- INTRO CINEMATOGRÁFICA --- */
        #cinema-intro {
            position: fixed; top: 0; left: 0; width: 100%; height: 100vh;
            background-color: var(--negro-cine); z-index: 1000;
            display: flex; justify-content: center; align-items: center;
            overflow: hidden;
        }

        /* Efecto de Grano y Polvo de Película Antigua */
        #cinema-intro::before {
            content: ""; position: absolute; top: 0; left: 0; width: 100%; height: 100%;
            background-image: url('https://www.transparenttextures.com/patterns/stardust.png'); /* Textura de polvo */
            opacity: 0.15; pointer-events: none; animation: grain 1s steps(10) infinite;
        }

        @keyframes grain {
            0%, 100% { transform: translate(0, 0); }
            10% { transform: translate(-5%, -5%); }
            30% { transform: translate(5%, -10%); }
            50% { transform: translate(-10%, 5%); }
            70% { transform: translate(10%, 10%); }
            90% { transform: translate(-5%, 0); }
        }

        .cinema-credits {
            text-align: center; color: var(--crema); font-family: 'Cormorant Garamond', serif;
            opacity: 0; /* Empiezan invisibles */
        }

        .credit-text { font-size: clamp(1.5rem, 5vw, 2.5rem); font-weight: 300; font-style: italic; margin-bottom: 1rem; display: block; }
        .credit-names { font-size: clamp(3rem, 10vw, 7rem); font-weight: 600; text-transform: uppercase; letter-spacing: 5px; color: var(--dorado-suave); }

        /* --- Botón para Iniciar la Experiencia --- */
        #start-button {
            position: absolute; bottom: 10%; left: 50%; transform: translateX(-50%);
            padding: 15px 30px; background: none; border: 2px solid var(--dorado-suave);
            color: var(--dorado-suave); font-family: 'Montserrat', sans-serif; text-transform: uppercase;
            letter-spacing: 2px; cursor: pointer; opacity: 0; transition: all 0.3s ease; z-index: 1001;
        }
        #start-button:hover { background-color: var(--dorado-suave); color: var(--negro-cine); }

        /* --- Reproductor de Música (Estilo Mini) --- */
        .music-widget {
            position: fixed; bottom: 20px; right: 20px; z-index: 100;
            background: rgba(10,10,10,0.8); padding: 10px 15px; border-radius: 5px;
            display: flex; align-items: center; gap: 10px; border: 1px solid var(--dorado-suave);
            box-shadow: 0 5px 15px rgba(0,0,0,0.3); backdrop-filter: blur(3px);
            opacity: 0; /* Empieza invisible hasta que abre el telón */
        }
        .music-btn { background: none; border: none; cursor: pointer; color: var(--crema); font-size: 1rem; }
        #song-title { font-size: 0.7rem; color: var(--eucalipto); max-width: 150px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

        /* --- Contenido Principal (Estilo Olivo Premium) --- */
        #content-wrapper { opacity: 0; } /* Invisible hasta que abre el telón */

        .hero {
            height: 100vh; display: flex; align-items: center; justify-content: center;
            position: relative; overflow: hidden; background: var(--crema);
        }
        .hero-content { z-index: 10; text-align: center; }
        .hero h1 { font-family: 'Cormorant Garamond', serif; font-size: clamp(3rem, 10vw, 6rem); color: var(--olivo-medio); font-weight: 300; }
        .hero p { font-style: italic; font-size: 1.2rem; letter-spacing: 2px; color: var(--dorado-suave); margin-top: 10px; }

        .leaf { position: absolute; pointer-events: none; opacity: 0.4; z-index: 1; filter: blur(0.5px); }

        /* --- Galería Polaroid --- */
        .gallery-section { padding: 100px 5%; display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 40px; background-color: white; }
        .polaroid {
            background: white; padding: 15px 15px 50px 15px; box-shadow: 0 10px 25px rgba(0,0,0,0.05);
            transition: transform 0.4s ease; position: relative; border: 1px solid #eee;
        }
        .polaroid:hover { transform: scale(1.05) rotate(0deg) !important; z-index: 10; }
        .polaroid img { width: 100%; height: 300px; object-fit: cover; }
        .polaroid span { 
            position: absolute; bottom: 15px; left: 0; width: 100%; text-align: center;
            font-family: 'Cormorant Garamond', serif; font-size: 1.3rem; color: #555; font-style: italic;
        }

        /* --- Formulario RSVP --- */
        .rsvp-container { max-width: 700px; margin: 100px auto; padding: 50px; background: white; border-radius: 2px; box-shadow: 0 10px 30px rgba(0,0,0,0.03); }
        .form-title { font-family: 'Cormorant Garamond', serif; font-size: 2.8rem; text-align: center; margin-bottom: 10px; color: var(--olivo-oscuro); }
        .form-subtitle { text-align: center; color: var(--dorado-suave); margin-bottom: 40px; font-weight: 200; letter-spacing: 1px; }
        .input-group { margin-bottom: 25px; }
        label { display: block; margin-bottom: 8px; font-size: 0.9rem; color: var(--olivo-medio); text-transform: uppercase; letter-spacing: 1px; }
        input, select, textarea { 
            width: 100%; padding: 15px; border: 1px solid #e0e0e0; background: #fafafa; 
            font-family: inherit; transition: all 0.3s; border-radius: 0;
        }
        input:focus, select:focus, textarea:focus { border-color: var(--dorado-suave); outline: none; background: #fff; box-shadow: 0 0 10px rgba(194,168,120,0.1); }
        .btn-submit { 
            background: var(--olivo-oscuro); color: white; border: none; padding: 20px; 
            width: 100%; cursor: pointer; font-size: 1rem; letter-spacing: 3px; text-transform: uppercase;
            transition: all 0.4s; font-weight: 400;
        }
        .btn-submit:hover { background: var(--olivo-medio); letter-spacing: 4px; }

        /* --- Adaptativo Móvil --- */
        @media (max-width: 600px) {
            .rsvp-container { padding: 30px 20px; margin: 20px; }
            .music-widget { bottom: 10px; right: 10px; left: 10px; width: auto; justify-content: center; }
            .credit-names { font-size: 3rem; }
        }



        /*VERDE*/
                .galeria-section {
        padding: 60px 20px;
        background-color: #fdfcf9; /* Un tono crema muy suave */
        text-align: center;
    }

    .galeria-titulo {
        font-family: 'Great Vibes', cursive;
        font-size: 3.5rem;
        color: #708238;
        margin-bottom: 40px;
    }

    .galeria-container {
        display: flex;
        flex-wrap: wrap;
        justify-content: center;
        gap: 25px;
        max-width: 1100px;
        margin: 0 auto;
    }

    .foto-marco {
        background: white;
        padding: 12px 12px 40px 12px; /* Espacio inferior más ancho tipo Polaroid */
        box-shadow: 0 8px 15px rgba(0,0,0,0.1);
        border: 1px solid #eee;
        transition: all 0.4s ease;
        max-width: 280px;
        position: relative;
    }

    /* Rotación alterna para dar aspecto natural */
    .foto-marco:nth-child(odd) { transform: rotate(-2deg); }
    .foto-marco:nth-child(even) { transform: rotate(2deg); }

    .foto-marco:hover {
        transform: rotate(0deg) scale(1.05);
        box-shadow: 0 15px 30px rgba(0,0,0,0.15);
        z-index: 10;
    }

    .foto-marco img {
        width: 100%;
        height: 250px;
        object-fit: cover; /* Para que todas las fotos tengan el mismo tamaño */
        display: block;
    }

    .foto-marco::after {
        content: "I & D";
        font-family: 'Great Vibes', cursive;
        position: absolute;
        bottom: 10px;
        left: 0;
        right: 0;
        color: #a0a0a0;
        font-size: 1.2rem;
    }

    /* Adorno de ramita de olivo pequeña en la galería */
    .olivo-divider {
        width: 80px;
        margin: 20px auto;
        opacity: 0.6;
    }
        :root {
            --verde-olivo: #708238;
            --verde-suave: #f4f7ed;
            --dorado: #b0965d;
            --texto: #4a4a4a;
        }

        body, html {
            margin: 0;
            padding: 0;
            font-family: 'Montserrat', sans-serif;
            color: var(--texto);
            background-color: #fdfcf9;
            scroll-behavior: smooth;
            overflow-x: hidden;
        }

        /* --- INTRODUCCIÓN: EL SOBRE MÁGICO --- */
        #intro-overlay {
            position: fixed;
            top: 0; left: 0; width: 100%; height: 100%;
            background: #fdfcf9;
            z-index: 1000;
            display: flex;
            justify-content: center;
            align-items: center;
            transition: opacity 1s ease;
        }

        .envelope-wrapper {
            perspective: 1000px;
            cursor: pointer;
        }

        .envelope {
            width: 320px;
            height: 220px;
            background: #f4f1ea;
            position: relative;
            box-shadow: 0 15px 35px rgba(0,0,0,0.1);
            transition: 0.5s;
        }

        .flap {
            position: absolute;
            top: 0; width: 100%; height: 100%;
            background: #f4f1ea;
            clip-path: polygon(0 0, 50% 50%, 100% 0);
            z-index: 3;
            transform-origin: top;
            transition: transform 0.6s ease;
            border-bottom: 1px solid rgba(0,0,0,0.05);
        }

        .seal {
            position: absolute;
            top: 45%; left: 50%;
            transform: translate(-50%, -50%);
            width: 45px; height: 45px;
            background: #8e2121; /* Rojo Lacre */
            border-radius: 50%;
            z-index: 4;
            display: flex;
            justify-content: center;
            align-items: center;
            color: white;
            font-family: serif;
            box-shadow: 0 4px 10px rgba(0,0,0,0.2);
        }

        /* Al abrir el sobre */
        .envelope.open .flap { transform: rotateX(180deg); }
        .envelope.open .seal { opacity: 0; }
        
        /* --- CONTENIDO PRINCIPAL --- */
        #main-content {
            opacity: 0;
            transition: opacity 1.5s ease;
        }

        section {
            padding: 80px 20px;
            max-width: 900px;
            margin: 0 auto;
            text-align: center;
        }

        h1, h2 {
            font-family: 'Great Vibes', cursive;
            color: var(--verde-olivo);
        }

        h1 { font-size: 4rem; margin-bottom: 10px; }
        h2 { font-size: 3rem; }

        .fecha {
            font-size: 1.2rem;
            letter-spacing: 4px;
            text-transform: uppercase;
            margin-bottom: 40px;
            color: var(--dorado);
        }

        /* --- CARDS ESTILO SEVILLANO --- */
        .info-grid {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
            gap: 30px;
            margin-top: 50px;
        }

        .card {
            background: white;
            padding: 40px;
            border-radius: 15px;
            box-shadow: 0 10px 20px rgba(112, 130, 56, 0.05);
            border: 1px solid var(--verde-suave);
            position: relative;
            overflow: hidden;
        }

        .card::before {
            content: '🌿';
            position: absolute;
            top: 10px; right: 10px;
            opacity: 0.2;
            font-size: 1.5rem;
        }

        .btn {
            display: inline-block;
            margin-top: 20px;
            padding: 12px 25px;
            background: var(--verde-olivo);
            color: white;
            text-decoration: none;
            border-radius: 30px;
            font-size: 0.9rem;
            transition: 0.3s;
        }

        .btn:hover { background: var(--dorado); }

        /* --- CONTADOR --- */
        .timer-container {
            display: flex;
            justify-content: center;
            gap: 20px;
            margin: 40px 0;
        }

        .timer-box {
            background: var(--verde-suave);
            padding: 15px;
            border-radius: 10px;
            min-width: 70px;
        }

        .timer-box span {
            display: block;
            font-size: 1.5rem;
            font-weight: bold;
            color: var(--verde-olivo);
        }

        /* Animación de entrada */
        .reveal { opacity: 1 !important; }