/*==================================================
  J & M · INVITACIÓN DE BODA
  STYLE.CSS · NUEVA VERSIÓN
  Compatible con el nuevo index.html
==================================================*/

/*==================================================
  VARIABLES
==================================================*/

:root{
    --pine:#355E3B;
    --pine-dark:#173C28;
    --gold:#C9A227;
    --paper:#FBF7EF;
    --paper-soft:#F7F0E5;
    --background:#F5EFE4;
    --text:#3F463F;
    --muted:#6E746D;
    --border-soft:rgba(201,162,39,.34);
    /* Tamaños tipográficos unificados para todas las escenas */
    --text-size-body:clamp(22px,1.45vw,31px);
    --text-size-script:clamp(36px,2.55vw,48px);
    --text-size-title:clamp(52px,4vw,78px);
    --text-size-eyebrow:clamp(14px,1vw,18px);
    --text-size-small:clamp(12px,.9vw,16px);
}

/*==================================================
  RESET
==================================================*/

*,
*::before,
*::after{
    margin:0;
    padding:0;
    box-sizing:border-box;
}

html{
    width:100%;
    min-height:100%;
}

body{
    width:100%;
    min-height:100vh;

    overflow:hidden;

    background-color:var(--background);
    background-image:url("../img/backgrounds/background-noise.webp");
    background-size:cover;
    background-position:center;
    background-repeat:no-repeat;
    background-attachment:fixed;

    font-family:"Cormorant Garamond",serif;
    color:var(--text);

    -webkit-font-smoothing:antialiased;
    text-rendering:optimizeLegibility;
}

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

/*==================================================
  SCROLL
==================================================*/

body.no-scroll{
    overflow:hidden !important;
}

body.scroll-enabled,
body.invitation-unfolded{
    overflow-x:hidden;
    overflow-y:auto;
}

html.invitation-scroll-active,
body.invitation-scroll-active{
    scrollbar-width:none;
    -ms-overflow-style:none;
}

html.invitation-scroll-active::-webkit-scrollbar,
body.invitation-scroll-active::-webkit-scrollbar{
    display:none;
    width:0;
    height:0;
}

/*==================================================
  ESCENA INICIAL
==================================================*/

main{
    position:relative;
    min-height:100vh;
    overflow:visible;
}

#intro{
    position:relative;

    width:100%;
    min-height:100vh;

    display:flex;
    flex-direction:column;

    justify-content:center;
    align-items:center;

    padding:0 20px;

    transform:translateY(150px);

    overflow:visible;
}

.petals{
    position:absolute;
    inset:0;

    overflow:hidden;

    pointer-events:none;

    z-index:0;
}

/*==================================================
  SOBRE
==================================================*/

#envelope{
    position:relative;

    width:520px;
    aspect-ratio:1.72 / 1;

    flex:0 0 auto;

    perspective:1600px;
    transform-style:preserve-3d;

    filter:
        drop-shadow(
            0
            24px
            25px
            rgba(0,0,0,.20)
        );

    animation:
        envelopeFloating
        5.5s
        ease-in-out
        infinite;

    will-change:transform;

    overflow:visible;

    z-index:2;
}

/*==================================================
  PIEZAS DEL SOBRE
==================================================*/

#back-pocket,
#front-pocket,
#flap-top{
    position:absolute;

    display:block;

    user-select:none;
    pointer-events:none;
}

/* Trasera */

#back-pocket{
    inset:0;

    width:100%;
    height:100%;

    object-fit:fill;

    border-radius:
        12px
        12px
        18px
        18px;

    z-index:1;
}

/*==================================================
  CARTA GUARDADA Y CENTRADA
==================================================*/

#envelope > #letter:not(.is-unfolded){
    position:absolute;

    left:12%;
    top:8%;

    width:76%;
    height:72%;

    transform:none;

    overflow:hidden;

    border-radius:10px;

    z-index:2;
}

/* Frontal */

#front-pocket{
    left:0;
    bottom:0;

    width:100%;
    height:100%;

    object-fit:fill;

    border-radius:
        0
        0
        18px
        18px;

    z-index:5;
}

/* Solapa */

#flap-top{
    left:0;
    top:5.7%;

    width:100%;
    height:66%;

    object-fit:fill;
    object-position:center top;

    transform-origin:50% 0%;
    transform-style:preserve-3d;

    backface-visibility:visible;
    -webkit-backface-visibility:visible;

    will-change:
        transform,
        opacity;

    z-index:6;
}

/*==================================================
  CAPAS DURANTE LA APERTURA
==================================================*/

/*
  ESTADO 1 · SOBRE CERRADO

  Trasera  = 1
  Carta    = 2
  Frontal  = 5
  Solapa   = 6
  Sello    = 8

  La carta permanece realmente dentro del sobre.
*/

/*
  Mientras se está abriendo la solapa,
  la carta TODAVÍA permanece detrás de ella.
*/

#envelope.is-opening{
    animation:none;
    overflow:visible;
}

#envelope.is-opening #back-pocket{
    z-index:1;
}

#envelope.is-opening > #letter{
    z-index:2;
}

#envelope.is-opening #front-pocket{
    z-index:5;
}

#envelope.is-opening #flap-top{
    z-index:6;

    opacity:1 !important;
    visibility:visible !important;
}

/*
  ESTADO 2 · LA SOLAPA YA ESTÁ ABIERTA

  JavaScript cambiará las capas justo antes
  de empezar a sacar la carta.

  Estas reglas sirven además como estado
  estable cuando termina la animación.
*/

#envelope.is-open{
    animation:none;
    overflow:visible;
}

#envelope.is-open #back-pocket{
    z-index:1;
}

#envelope.is-open #flap-top{
    z-index:2;

    opacity:1 !important;
    visibility:visible !important;
}

#envelope.is-open > #letter{
    z-index:8;
}

#envelope.is-open #front-pocket{
    z-index:5;
}

/*==================================================
  CARTA
==================================================*/

#letter{
    background-image:url("../img/envelope/paper-letter.webp");
    background-size:100% 100%;
    background-position:center;
    background-repeat:no-repeat;

    border:
        1px solid
        rgba(122,96,62,.14);

    box-shadow:
        0
        12px
        28px
        rgba(0,0,0,.17);

    will-change:
        left,
        top,
        width,
        height,
        transform;
}

#letter.is-extracted{
    z-index:10;

    box-shadow:
        0
        24px
        55px
        rgba(0,0,0,.24);
}

body > #letter.is-unfolded{
    position:fixed;

    transform:none;

    overflow:hidden;

    border-radius:14px;

    z-index:1000;
}

/*==================================================
  PORTADA DENTRO DEL SOBRE
==================================================*/

.letter-cover{
    position:absolute;
    inset:0;

    display:flex;
    flex-direction:column;

    justify-content:center;
    align-items:center;

    padding:30px 42px;

    overflow:hidden;

    text-align:center;

    color:var(--pine);

    z-index:2;
}

.cover-announcement{
    max-width:90%;

    margin:0 auto 8px;

    font-family:"Great Vibes",cursive;
    font-size:23px;
    font-weight:400;
    line-height:1;

    color:var(--pine);

    white-space:nowrap;
}

.cover-names{
    display:flex;
    flex-direction:column;

    justify-content:center;
    align-items:center;

    width:100%;
    max-width:88%;

    margin:0 auto;

    font-family:"Great Vibes",cursive;
    font-weight:400;
    line-height:.82;

    color:var(--pine);
}

.cover-name{
    display:block;

    max-width:100%;

    font-size:55px;
    line-height:.88;

    white-space:nowrap;

    color:var(--pine);
}

/*==================================================
  JESÚS · DESPLAZADO HACIA LA DERECHA
==================================================*/

.cover-names .cover-name:first-of-type{
    transform:translateX(28px);
}

/*==================================================
  MARÍA · DESPLAZADA HACIA LA IZQUIERDA
==================================================*/

.cover-names .cover-name:last-of-type{
    transform:translateX(-28px);
}

/*==================================================
  &
==================================================*/

.cover-ampersand{
    display:block;

    margin:6px 0 9px;

    font-size:33px;
    line-height:1;

    color:var(--gold);
}

/*==================================================
  SELLO
==================================================*/

.seal{
    position:absolute;

    left:50%;
    top:70%;

    width:106px;
    height:106px;

    transform:translate(-50%,-50%);

    cursor:pointer;

    user-select:none;
    touch-action:manipulation;

    z-index:8;

    will-change:
        transform,
        opacity;
}

.seal::before{
    content:"";

    position:absolute;

    inset:-28px;

    border-radius:50%;

    background:transparent;

    cursor:pointer;
}

.seal img{
    display:block;

    width:100%;
    height:100%;

    object-fit:contain;
    object-position:center;

    transform:none;

    pointer-events:none;

    filter:
        drop-shadow(
            0
            10px
            16px
            rgba(0,0,0,.30)
        );

    transition:
        transform .35s ease,
        filter .35s ease;
}

.seal:hover img{
    transform:
        scale(1.05)
        rotate(-2deg);

    filter:
        drop-shadow(
            0
            15px
            23px
            rgba(0,0,0,.36)
        );
}

.seal:active img{
    transform:scale(.96);
}

.seal:focus{
    outline:none;
}

/*==================================================
  TEXTO DE APERTURA
==================================================*/

.open-text{
    position:relative;

    margin-top:48px;

    font-family:"Great Vibes",cursive;
    font-size:52px;
    font-weight:400;
    line-height:1;

    color:var(--pine);

    text-align:center;
    letter-spacing:.5px;

    text-shadow:
        0
        2px
        5px
        rgba(53,94,59,.10);

    pointer-events:none;
    user-select:none;

    z-index:1;
}

/*==================================================
  INDICACIÓN PARA DESPLEGAR
==================================================*/

.unfold-hint{
    display:flex;
    flex-direction:column;

    justify-content:center;
    align-items:center;

    gap:8px;

    margin-top:34px;

    opacity:0;
    visibility:hidden;

    transform:translateY(12px);

    pointer-events:none;

    z-index:20;
}

.unfold-hint.is-visible{
    opacity:1;
    visibility:visible;

    transform:translateY(0);
}

.unfold-hint-text{
    font-family:"Great Vibes",cursive;
    font-size:46px;
    font-weight:400;
    line-height:1;

    color:var(--pine);

    text-align:center;

    text-shadow:
        0
        2px
        5px
        rgba(53,94,59,.12);
}

.unfold-arrow{
    width:42px;
    height:auto;

    object-fit:contain;

    pointer-events:none;
    user-select:none;

    animation:
        unfoldArrowMovement
        1.8s
        ease-in-out
        infinite;
}

/*==================================================
  CONTENIDO DESPLEGADO
==================================================*/

.letter-details{
    position:absolute;
    inset:0;

    display:none;

    width:100%;
    height:100%;

    overflow:hidden;

    text-align:center;

    color:var(--text);

    opacity:0;
    visibility:hidden;
}

.invitation-scene{
    position:absolute;
    inset:0;

    display:flex;

    justify-content:center;
    align-items:center;

    padding:54px 74px;

    overflow:hidden;

    text-align:center;

    opacity:0;
    visibility:hidden;

    pointer-events:none;
}

.invitation-scene.is-active{
    pointer-events:auto;
}

.scene-content{
    width:100%;
    max-width:690px;

    margin:auto;

    text-align:center;
}

.section-eyebrow{
    margin-bottom:14px;

    font-family:"Cormorant Garamond",serif;
    font-size:var(--text-size-eyebrow);
    font-weight:600;
    line-height:1.2;

    letter-spacing:4px;

    text-transform:uppercase;

    color:var(--gold);
}

.invitation-divider{
    width:115px;
    height:1px;

    margin:25px auto 20px;

    background:
        linear-gradient(
            to right,
            transparent,
            var(--gold),
            transparent
        );
}

/*==================================================
  DISEÑO DE DOS COLUMNAS
==================================================*/

.split-scene{
    padding:54px 64px;
}

.split-content{
    display:grid;

    grid-template-columns:
        minmax(0,.92fr)
        minmax(0,1.08fr);

    gap:46px;

    align-items:center;

    width:100%;
    height:100%;

    max-width:860px;

    margin:auto;
}

.split-text{
    display:flex;
    flex-direction:column;

    justify-content:center;
    align-items:center;

    min-width:0;

    text-align:center;
}

.split-image{
    position:relative;

    width:100%;
    height:min(520px,72vh);

    min-height:360px;

    overflow:hidden;

    border-radius:22px;

    margin:0;
}

.split-image img{
    width:100%;
    height:100%;

    object-fit:cover;
    object-position:center;

    border-radius:22px;

    -webkit-mask-image:
        linear-gradient(
            to right,
            transparent 0%,
            black 5%,
            black 95%,
            transparent 100%
        ),
        linear-gradient(
            to bottom,
            transparent 0%,
            black 5%,
            black 95%,
            transparent 100%
        );

    -webkit-mask-composite:source-in;

    mask-image:
        linear-gradient(
            to right,
            transparent 0%,
            black 5%,
            black 95%,
            transparent 100%
        ),
        linear-gradient(
            to bottom,
            transparent 0%,
            black 5%,
            black 95%,
            transparent 100%
        );

    mask-composite:intersect;
}

/*==================================================
  ESCENA 1 · ANUNCIO
==================================================*/

.scene-announcement{
    padding:42px 48px;
}

/*==================================================
  ESCENA 1 · DISTRIBUCIÓN
==================================================*/

.scene-announcement .split-content{

    display:grid;

    grid-template-columns:
        minmax(0,.92fr)
        minmax(0,1.08fr);

    gap:30px;

    align-items:center;

    width:100%;
    height:100%;

    max-width:960px;

    margin:auto;
}

/*==================================================
  ESCENA 1 · BLOQUE DE TEXTO
==================================================*/

.scene-announcement .announcement-text{

    position:relative;

    display:flex;

    flex-direction:column;

    justify-content:center;
    align-items:center;

    width:100%;

    padding:
        30px
        24px;

    text-align:center;

    color:#244d35;

    isolation:isolate;
}

/*==================================================
  ESCENA 1 · SIN VELO / SIN DEGRADADO
==================================================*/

.scene-announcement .announcement-text::before{

    content:none;

    display:none;
}

/*==================================================
  ESCENA 1 · CONTENIDO SOBRE EL FONDO
==================================================*/

.scene-announcement .announcement-text > *{

    position:relative;

    z-index:1;
}

/*==================================================
  ESCENA 1 · 10 AÑOS JUNTOS
==================================================*/

.scene-announcement .announcement-green{

    color:#1f5937;

    /*
      Peso normal.
      Antes estaba en 1200.
    */

    font-weight:400;
}

/*==================================================
  ESCENA 1 · TEXTO SUPERIOR
==================================================*/

.scene-announcement .announcement-intro{

    width:100%;

    max-width:430px;

    margin:0 auto;

    font-family:
        "Cormorant Garamond",
        Georgia,
        serif;

    font-size:36px;

    /*
      Texto normal, sin negrita.
    */

    font-weight:400;

    line-height:1.08;

    letter-spacing:.2px;

    color:#28543a;

    text-align:center;

    text-shadow:
        0 1px 0 rgba(255,255,255,.70),
        0 2px 4px rgba(36,76,52,.08);
}

/*==================================================
  ESCENA 1 · DECORACIÓN DORADA SUPERIOR
==================================================*/

.scene-announcement .announcement-decoration{

    display:flex;

    justify-content:center;
    align-items:center;

    gap:12px;

    width:220px;

    /*
      Espaciado ya compensado para
      el nuevo tamaño del texto.
    */

    margin:
        12px auto
        9px;
}

/* Líneas */

.scene-announcement
.announcement-decoration
> span:not(.announcement-heart){

    display:block;

    width:78px;
    height:2px;

    border-radius:999px;

    background:
        linear-gradient(
            90deg,
            transparent,
            #c59a25
        );
}

.scene-announcement
.announcement-decoration
> span:last-child:not(.announcement-heart){

    background:
        linear-gradient(
            90deg,
            #c59a25,
            transparent
        );
}

/* Corazón */

.scene-announcement .announcement-heart{

    display:block;

    font-family:
        Georgia,
        serif;

    font-size:22px;

    line-height:1;

    color:#c99b20;

    text-shadow:
        0 1px 2px
        rgba(160,115,10,.18);
}

/*==================================================
  ESCENA 1 · ¡NOS CASAMOS!
==================================================*/

.scene-announcement .announcement-main{

    width:100%;

    margin:0;

    font-family:
        "Great Vibes",
        cursive;

    font-size:86px;

    font-weight:400;

    line-height:.82;

    color:#1f5937;

    text-align:center;

    white-space:nowrap;

    /*
      Conservamos el desplazamiento hacia
      la izquierda que ya tenías.
    */

    transform:translateX(-38px);

    text-shadow:
        0 2px 3px
        rgba(34,72,47,.10);
}

/*==================================================
  ESCENA 1 · DECORACIÓN DEBAJO DE NOS CASAMOS
==================================================*/

.scene-announcement
.announcement-decoration-bottom{

    width:245px;

    margin:
        9px auto
        13px;
}

.scene-announcement
.announcement-decoration-bottom
> span:not(.announcement-heart){

    width:88px;

    background:
        linear-gradient(
            90deg,
            transparent,
            #c59a25
        );
}

.scene-announcement
.announcement-decoration-bottom
> span:last-child:not(.announcement-heart){

    background:
        linear-gradient(
            90deg,
            #c59a25,
            transparent
        );
}

/*==================================================
  ESCENA 1 · TEXTO INFERIOR
==================================================*/

.scene-announcement .announcement-closing{

    width:100%;

    max-width:440px;

    margin:0 auto;

    font-family:
        "Cormorant Garamond",
        Georgia,
        serif;

    font-size:32px;

    font-weight:500;

    line-height:1.10;

    letter-spacing:.15px;

    color:#28543a;

    text-align:center;

    text-shadow:
        0 1px 0 rgba(255,255,255,.70),
        0 2px 4px rgba(36,76,52,.08);
}

/*==================================================
  ESCENA 1 · PALABRAS DORADAS
==================================================*/

.scene-announcement .announcement-gold{

    color:#bd8d13;

    font-weight:700;

    text-shadow:
        0 1px 1px
        rgba(255,255,255,.4);
}

/*==================================================
  ESCENA 1 · ALIANZAS
==================================================*/

.scene-announcement .announcement-rings{

    position:relative;

    width:68px;
    height:39px;

    margin:
        14px auto
        0;
}

.scene-announcement .announcement-rings::before{

    content:"♥";

    position:absolute;

    left:50%;
    top:-11px;

    transform:
        translateX(-50%);

    font-family:
        Georgia,
        serif;

    font-size:14px;

    color:#c99b20;
}

.scene-announcement .announcement-rings span{

    position:absolute;

    top:5px;

    width:32px;
    height:32px;

    border:
        3px solid
        #c99b20;

    border-radius:50%;

    box-sizing:border-box;
}

.scene-announcement
.announcement-rings
span:first-child{

    left:8px;

    transform:
        rotate(-10deg);
}

.scene-announcement
.announcement-rings
span:last-child{

    right:8px;

    transform:
        rotate(10deg);
}

/*==================================================
  ESCENA 1 · FOTOGRAFÍA
==================================================*/

.scene-announcement .announcement-photo{

    position:relative;

    width:100%;

    height:91%;

    min-height:440px;

    margin:0;

    overflow:hidden;

    border-radius:24px;

    border:none;

    outline:none;

    background:transparent;

    box-shadow:
        0 14px 34px
        rgba(55,43,28,.14);
}

/*==================================================
  ESCENA 1 · IMAGEN
==================================================*/

.scene-announcement .announcement-photo img{

    display:block;

    width:100%;
    height:100%;

    object-fit:cover;

    object-position:center;

    border:none;

    outline:none;

    border-radius:24px;

    -webkit-mask-image:
        linear-gradient(
            to right,
            transparent 0%,
            #000 4%,
            #000 96%,
            transparent 100%
        ),
        linear-gradient(
            to bottom,
            transparent 0%,
            #000 4%,
            #000 96%,
            transparent 100%
        );

    -webkit-mask-composite:
        source-in;

    mask-image:
        linear-gradient(
            to right,
            transparent 0%,
            #000 4%,
            #000 96%,
            transparent 100%
        ),
        linear-gradient(
            to bottom,
            transparent 0%,
            #000 4%,
            #000 96%,
            transparent 100%
        );

    mask-composite:
        intersect;
}

/*==================================================
  ESCENA 1 · ELIMINAR MARCO DE LA FOTO
==================================================*/

.scene-announcement
.announcement-photo::after{

    content:none;

    display:none;
}

.scene-announcement
.invitation-photo{

    border:none;

    outline:none;
}

.scene-announcement
.invitation-photo::before,

.scene-announcement
.invitation-photo::after{

    border:none;
}

/*==================================================
  ESCENA 1 · TABLET
==================================================*/

@media (max-width:900px){

    .scene-announcement{

        padding:
            34px
            36px;
    }

    .scene-announcement .split-content{

        grid-template-columns:
            minmax(0,.94fr)
            minmax(0,1.06fr);

        gap:24px;
    }

    .scene-announcement .announcement-intro{

        font-size:32px;

        font-weight:400;

        line-height:1.08;
    }

    .scene-announcement .announcement-green{

        font-weight:400;
    }

    .scene-announcement .announcement-main{

        font-size:76px;

        font-weight:400;

        line-height:.82;

        margin:0;
    }

    .scene-announcement .announcement-closing{

        font-size:28px;

        line-height:1.10;
    }

    .scene-announcement .announcement-decoration{

        margin-top:10px;

        margin-bottom:7px;
    }

    .scene-announcement
    .announcement-decoration-bottom{

        margin-top:7px;

        margin-bottom:10px;
    }

    .scene-announcement .announcement-rings{

        margin-top:11px;
    }

    .scene-announcement .announcement-photo{

        min-height:390px;
    }

}

/*==================================================
  ESCENA 1 · MÓVIL
==================================================*/

@media (max-width:600px){

    .scene-announcement{

        padding:
            20px
            18px;
    }

    .scene-announcement .split-content{

        grid-template-columns:1fr;

        grid-template-rows:
            auto
            minmax(0,1fr);

        gap:13px;
    }

    .scene-announcement
    .announcement-text{

        padding:0;
    }

    .scene-announcement
    .announcement-intro{

        max-width:350px;

        font-size:25px;

        font-weight:400;

        line-height:1.08;
    }

    .scene-announcement
    .announcement-green{

        font-weight:400;
    }

    .scene-announcement
    .announcement-decoration{

        width:150px;

        gap:8px;

        margin:
            7px auto
            5px;
    }

    .scene-announcement
    .announcement-decoration
    > span:not(.announcement-heart){

        width:50px;
    }

    .scene-announcement
    .announcement-heart{

        font-size:15px;
    }

    .scene-announcement
    .announcement-main{

        font-size:60px;

        font-weight:400;

        line-height:.82;

        margin:0;
    }

    .scene-announcement
    .announcement-decoration-bottom{

        margin:
            5px auto
            7px;
    }

    .scene-announcement
    .announcement-closing{

        max-width:350px;

        font-size:23px;

        line-height:1.10;
    }

    .scene-announcement
    .announcement-rings{

        margin-top:7px;

        transform:
            scale(.8);
    }

    .scene-announcement
    .announcement-photo{

        height:100%;

        min-height:0;

        border-radius:16px;

        box-shadow:
            0 8px 20px
            rgba(55,43,28,.12);
    }

    .scene-announcement
    .announcement-photo img{

        border-radius:16px;
    }

}

/*==================================================
  ESCENA 2 · NUESTRA HISTORIA
==================================================*/

.scene-story{
    padding:48px 58px;
}

/*==================================================
  ESCENA 2 · DISTRIBUCIÓN
==================================================*/

.scene-story .split-content{

    grid-template-columns:
        minmax(0,1.04fr)
        minmax(0,.96fr);

    gap:42px;
}

/*==================================================
  ESCENA 2 · CONTENIDO DE TEXTO
==================================================*/

.scene-story .story-content{

    height:auto;

    max-width:420px;

    margin:auto;
}

/*==================================================
  ESCENA 2 · TÍTULO PEQUEÑO
==================================================*/

.scene-story .section-eyebrow{

    margin-bottom:10px !important;

    font-size:20px !important;

    line-height:1.1 !important;

    letter-spacing:4px;
}

/*==================================================
  ESCENA 2 · FRASE INICIAL
==================================================*/

.scene-story .story-opening{

    max-width:390px;

    margin:
        0
        auto
        12px !important;

    font-family:
        "Great Vibes",
        cursive;

    font-size:44px !important;

    font-weight:400;

    line-height:1.02 !important;

    color:var(--pine);
}

/*==================================================
  ESCENA 2 · TEXTO PRINCIPAL
==================================================*/

.scene-story p{

    max-width:405px;

    margin:
        0
        auto
        8px !important;

    font-size:27px !important;

    font-weight:500;

    line-height:1.16 !important;

    color:#4D524C;
}

/*==================================================
  ESCENA 2 · TEXTO DESTACADO
==================================================*/

.scene-story .story-highlight{

    max-width:390px;

    margin:
        6px
        auto
        9px !important;

    font-family:
        "Great Vibes",
        cursive;

    font-size:42px !important;

    font-weight:400;

    line-height:1 !important;

    color:var(--gold);
}

/*==================================================
  ESCENA 2 · TEXTO FINAL
==================================================*/

.scene-story .story-closing{

    margin-top:8px !important;

    font-size:28px !important;

    font-weight:600;

    line-height:1.12 !important;

    color:var(--pine);
}

/*==================================================
  ESCENA 2 · FOTOGRAFÍA
  MISMO TAMAÑO VISUAL QUE ESCENA 1
==================================================*/

.scene-story .split-image{

    position:relative;

    width:100%;

    height:91%;

    min-height:440px;

    margin:0;

    overflow:hidden;

    border-radius:24px;

    border:none !important;

    outline:none !important;

    background:transparent;

    box-shadow:
        0 14px 34px
        rgba(55,43,28,.14);
}

/*==================================================
  ESCENA 2 · IMAGEN
==================================================*/

.scene-story .split-image img{

    display:block;

    width:100%;
    height:100%;

    object-fit:cover;

    object-position:center;

    border:none !important;

    outline:none !important;

    border-radius:24px;

    -webkit-mask-image:
        linear-gradient(
            to right,
            transparent 0%,
            #000 4%,
            #000 96%,
            transparent 100%
        ),
        linear-gradient(
            to bottom,
            transparent 0%,
            #000 4%,
            #000 96%,
            transparent 100%
        );

    -webkit-mask-composite:
        source-in;

    mask-image:
        linear-gradient(
            to right,
            transparent 0%,
            #000 4%,
            #000 96%,
            transparent 100%
        ),
        linear-gradient(
            to bottom,
            transparent 0%,
            #000 4%,
            #000 96%,
            transparent 100%
        );

    mask-composite:
        intersect;
}

/*==================================================
  ESCENA 2 · TABLET
==================================================*/

@media (max-width:900px){

    .scene-story{

        padding:
            38px
            40px;
    }

    .scene-story .split-content{

        gap:28px;
    }

    .scene-story .section-eyebrow{

        font-size:18px !important;

        margin-bottom:8px !important;
    }

    .scene-story .story-opening{

        font-size:38px !important;

        line-height:1.02 !important;

        margin-bottom:10px !important;
    }

    .scene-story p{

        font-size:23px !important;

        line-height:1.15 !important;

        margin-bottom:7px !important;
    }

    .scene-story .story-highlight{

        font-size:36px !important;

        line-height:1 !important;

        margin:
            5px
            auto
            8px !important;
    }

    .scene-story .story-closing{

        font-size:24px !important;

        line-height:1.1 !important;

        margin-top:7px !important;
    }

    .scene-story .split-image{

        min-height:390px;
    }

}

/*==================================================
  ESCENA 2 · MÓVIL
==================================================*/

@media (max-width:600px){

    .scene-story{

        padding:
            20px
            18px;
    }

    .scene-story .split-content{

        grid-template-columns:1fr;

        grid-template-rows:
            minmax(0,.86fr)
            auto;

        gap:12px;

        height:100%;
    }

    .scene-story .story-content{

        max-width:100%;
    }

    .scene-story .section-eyebrow{

        margin-bottom:6px !important;

        font-size:13px !important;

        line-height:1.05 !important;
    }

    .scene-story .story-opening{

        font-size:29px !important;

        line-height:1 !important;

        margin-bottom:7px !important;
    }

    .scene-story p{

        font-size:16px !important;

        line-height:1.12 !important;

        margin-bottom:4px !important;
    }

    .scene-story .story-highlight{

        font-size:27px !important;

        line-height:.98 !important;

        margin:
            4px
            auto
            6px !important;
    }

    .scene-story .story-closing{

        font-size:18px !important;

        line-height:1.08 !important;

        margin-top:5px !important;
    }

    .scene-story .split-image{

        width:100%;

        height:100%;

        min-height:0;

        border-radius:16px;
    }

    .scene-story .split-image img{

        border-radius:16px;
    }

}

/*==================================================
  ESCENA 3 · DOS FOTOS
==================================================*/

.scene-family{
    padding:50px 62px;
}

.family-gallery{
    display:grid;

    grid-template-columns:
        repeat(2,minmax(0,1fr));

    gap:34px;

    width:100%;
    height:100%;

    max-width:860px;

    margin:auto;
}

.family-photo{
    position:relative;

    width:100%;
    height:100%;

    min-height:470px;

    overflow:hidden;

    border-radius:22px;

    margin:0;
}

.family-photo img{
    width:100%;
    height:100%;

    object-fit:cover;
    object-position:center;

    border-radius:22px;

    -webkit-mask-image:
        linear-gradient(
            to right,
            transparent 0%,
            black 5%,
            black 95%,
            transparent 100%
        ),
        linear-gradient(
            to bottom,
            transparent 0%,
            black 5%,
            black 95%,
            transparent 100%
        );

    -webkit-mask-composite:source-in;

    mask-image:
        linear-gradient(
            to right,
            transparent 0%,
            black 5%,
            black 95%,
            transparent 100%
        ),
        linear-gradient(
            to bottom,
            transparent 0%,
            black 5%,
            black 95%,
            transparent 100%
        );

    mask-composite:intersect;
}

/*==================================================
  ESCENA 4 · CALENDARIO + CONTADOR
==================================================*/

.scene-save-the-date{
    padding:36px 54px;
}

/*==================================================
  ESCENA 4 · DISTRIBUCIÓN GENERAL
  CALENDARIO ARRIBA · CONTADOR ABAJO
==================================================*/

.save-the-date-content{
    display:flex;
    flex-direction:column;

    justify-content:center;
    align-items:center;

    gap:24px;

    width:100%;
    height:100%;

    max-width:1050px;

    margin:auto;
}

/*==================================================
  ESCENA 4 · PANEL DEL CALENDARIO
==================================================*/

.calendar-panel{
    display:flex;
    flex-direction:column;

    justify-content:center;
    align-items:center;

    width:100%;
}

/*==================================================
  ESCENA 4 · RESERVA LA FECHA
==================================================*/

.scene-save-the-date .section-eyebrow{
    margin-bottom:10px;

    font-size:80px;
    font-weight:600;
    line-height:1;

    letter-spacing:5px;

    color:var(--gold);
}

/*==================================================
  ESCENA 4 · CALENDARIO
==================================================*/

.wedding-calendar{
    width:100%;
    max-width:none;

    padding:
        14px
        30px
        16px;

    border:
        1px solid
        rgba(201,162,39,.48);

    border-radius:18px;

    background:
        rgba(251,247,239,.88);

    box-shadow:
        0 10px 26px
        rgba(53,94,59,.06);
}

/*==================================================
  ESCENA 4 · CABECERA DEL CALENDARIO
  JUNIO + 2027
==================================================*/

.calendar-header{
    display:flex;

    justify-content:center;
    align-items:baseline;

    gap:18px;

    padding-bottom:9px;

    border-bottom:
        1px solid
        rgba(201,162,39,.28);
}

.calendar-month{
    font-family:
        "Great Vibes",
        cursive;

    font-size:44px;

    font-weight:400;
    line-height:1;

    color:var(--pine);
}

.calendar-year{
    font-size:44px;

    font-weight:400;
    line-height:1;

    letter-spacing:2px;

    color:var(--gold);
}

/*==================================================
  ESCENA 4 · DÍAS DE LA SEMANA
==================================================*/

.calendar-weekdays{
    display:grid;

    grid-template-columns:
        repeat(7,1fr);

    gap:8px;

    width:100%;

    margin:
        10px
        0
        4px;
}

.calendar-weekdays span{
    display:flex;

    justify-content:center;
    align-items:center;

    font-size:23px;

    font-weight:700;

    color:var(--gold);
}

/*==================================================
  ESCENA 4 · DÍAS DEL MES
==================================================*/

.calendar-days{
    display:grid;

    grid-template-columns:
        repeat(7,1fr);

    gap:
        2px
        8px;

    width:100%;
}

.calendar-days span,
.calendar-days time{
    position:relative;

    display:flex;

    justify-content:center;
    align-items:center;

    min-height:39px;

    font-size:38px;

    font-weight:500;
    line-height:1;

    color:#4D524C;

    text-decoration:none;
}

.calendar-empty{
    visibility:hidden;
}

/*==================================================
  ESCENA 4 · DÍA DE LA BODA
  CORAZÓN EN VEZ DE CÍRCULO
==================================================*/

.calendar-wedding-day{
    position:relative;

    background:none !important;

    border-radius:0 !important;

    box-shadow:none !important;

    color:#ffffff !important;

    font-weight:600 !important;

    isolation:isolate;
}

.calendar-wedding-day::before{
    content:"♥";

    position:absolute;

    left:50%;
    top:50%;

    transform:
        translate(-50%,-48%);

    font-family:
        Georgia,
        serif;

    font-size:61px;

    line-height:1;

    color:var(--pine);

    z-index:-1;

    pointer-events:none;
}

/*==================================================
  ESCENA 4 · PANEL DEL CONTADOR
==================================================*/

.countdown-panel{
    display:flex;
    flex-direction:column;

    justify-content:center;
    align-items:center;

    width:100%;
}

/*==================================================
  ESCENA 4 · TÍTULO DEL CONTADOR
==================================================*/

.countdown-heading{
    width:100%;

    margin:
        0
        auto
        10px;

    font-family:
        "Great Vibes",
        cursive;

    font-size:32px;

    font-weight:400;
    line-height:1;

    color:var(--pine);

    text-align:center;
}

/*==================================================
  ESCENA 4 · CONTADOR
==================================================*/

.wedding-countdown{
    display:grid;

    grid-template-columns:
        repeat(4,1fr);

    gap:14px;

    width:100%;

    max-width:none;
}

/*==================================================
  ESCENA 4 · BLOQUES DEL CONTADOR
==================================================*/

.countdown-unit{
    display:flex;
    flex-direction:column;

    justify-content:center;
    align-items:center;

    min-width:0;

    padding:
        7px
        8px
        6px;

    border:
        1px solid
        rgba(201,162,39,.45);

    border-radius:14px;

    background:
        rgba(251,247,239,.82);
}

.countdown-number{
    display:block;

    font-size:28px;

    font-weight:500;

    line-height:1;

    color:var(--pine);
}

.countdown-label{
    display:block;

    margin-top:4px;

    font-size:8px;

    font-weight:600;

    letter-spacing:1px;

    text-transform:uppercase;

    color:var(--gold);
}

/*==================================================
  ESCENA 4 · FECHA
==================================================*/

.countdown-date{
    display:block;

    margin-top:9px;

    font-family:
        "Great Vibes",
        cursive;

    font-size:36px;

    font-weight:400;
    line-height:1;

    color:var(--gold);

    text-align:center;

    text-decoration:none;
}

/*==================================================
  ESCENA 4 · TABLET
==================================================*/

@media (max-width:900px){

    .scene-save-the-date{
        padding:
            28px
            36px;
    }

    .save-the-date-content{
        gap:18px;
    }

    /* RESERVA LA FECHA */

    .scene-save-the-date .section-eyebrow{
        margin-bottom:8px;

        font-size:52px;

        line-height:1;

        letter-spacing:4px;
    }

    /* CALENDARIO */

    .wedding-calendar{
        padding:
            14px
            22px
            16px;
    }

    /* JUNIO + 2027 */

    .calendar-header{
        gap:14px;
    }

    .calendar-month{
        font-size:38px;
    }

    .calendar-year{
        font-size:38px;

        letter-spacing:2px;
    }

    /* DÍAS DE LA SEMANA */

    .calendar-weekdays span{
        font-size:17px;
    }

    /* NÚMEROS DEL CALENDARIO */

    .calendar-days span,
    .calendar-days time{
        min-height:31px;

        font-size:27px;
    }

    /* CORAZÓN */

    .calendar-wedding-day::before{
        font-size:46px;
    }

    /* TÍTULO DEL CONTADOR */

    .countdown-heading{
        font-size:32px;
    }

    /* BLOQUES DEL CONTADOR */

    .countdown-unit{
        padding:
            8px
            8px
            7px;
    }

    .countdown-number{
        font-size:28px;
    }

    .countdown-label{
        font-size:9px;
    }

    /* FECHA */

    .countdown-date{
        font-size:31px;
    }

}

/*==================================================
  ESCENA 4 · MÓVIL
==================================================*/

@media (max-width:600px){

    .scene-save-the-date{
        padding:
            16px
            14px;
    }

    .save-the-date-content{
        gap:10px;

        height:100%;
    }

    /* RESERVA LA FECHA */

    .scene-save-the-date .section-eyebrow{
        margin-bottom:4px;

        font-size:32px;

        line-height:1;

        letter-spacing:2.5px;
    }

    /* CALENDARIO */

    .wedding-calendar{
        padding:
            8px
            10px
            9px;

        border-radius:12px;
    }

    /* JUNIO + 2027 */

    .calendar-header{
        gap:10px;

        padding-bottom:5px;
    }

    .calendar-month{
        font-size:30px;
    }

    .calendar-year{
        font-size:30px;

        line-height:1;

        letter-spacing:1px;
    }

    /* DÍAS DE LA SEMANA */

    .calendar-weekdays{
        gap:2px;

        margin:
            5px
            0
            2px;
    }

    .calendar-weekdays span{
        font-size:12px;
    }

    /* NÚMEROS DEL CALENDARIO */

    .calendar-days{
        gap:
            0
            2px;
    }

    .calendar-days span,
    .calendar-days time{
        min-height:24px;

        font-size:18px;
    }

    /* CORAZÓN */

    .calendar-wedding-day::before{
        font-size:33px;
    }

    /* TÍTULO DEL CONTADOR */

    .countdown-heading{
        margin-bottom:5px;

        font-size:23px;
    }

    /* CONTADOR */

    .wedding-countdown{
        gap:5px;
    }

    .countdown-unit{
        padding:
            5px
            3px
            5px;

        border-radius:9px;
    }

    .countdown-number{
        font-size:18px;
    }

    .countdown-label{
        margin-top:3px;

        font-size:7px;
    }

    /* FECHA */

    .countdown-date{
        margin-top:4px;

        font-size:24px;
    }

}

/*==================================================
  ESCENA 4 · TAMAÑOS DEFINITIVOS
  DEBE SER EL ÚLTIMO BLOQUE DE STYLE.CSS
==================================================*/

/* RESERVA LA FECHA */

.scene-save-the-date .section-eyebrow{
    font-size:35px !important;
    line-height:1 !important;
}

/* JUNIO */

.scene-save-the-date .calendar-month{
    font-size:40px !important;
    line-height:1 !important;
}

/* 2027 · MISMO TAMAÑO QUE JUNIO */

.scene-save-the-date .calendar-year{
    font-size:40px !important;
    line-height:1 !important;
}

/* L · M · X · J · V · S · D */

.scene-save-the-date .calendar-weekdays span{
    font-size:20px !important;
}

/* NÚMEROS DEL CALENDARIO */

.scene-save-the-date .calendar-days span,
.scene-save-the-date .calendar-days time{
    font-size:35px !important;
    line-height:1 !important;
}

/* CORAZÓN DEL DÍA 12 */

.scene-save-the-date .calendar-wedding-day::before{
    font-size:71px !important;
}

/*==================================================
  ESCENA 5 · CEREMONIA
==================================================*/

.scene-ceremony{
    padding:54px 64px;
}

.scene-ceremony .split-content{
    grid-template-columns:
        minmax(0,.9fr)
        minmax(0,1.1fr);
}

/*==================================================
  ESCENA 5 · CONTENIDO
==================================================*/

.ceremony-content{
    padding:20px 0;
}

/*==================================================
  ESCENA 5 · ANILLOS
==================================================*/

.rings-icon{
    position:relative;

    width:74px;
    height:46px;

    margin:-20px auto 20px;
}

.rings-icon span{
    position:absolute;

    top:4px;

    width:38px;
    height:38px;

    border:3px solid var(--gold);
    border-radius:50%;
}

.rings-icon span:first-child{
    left:7px;

    transform:rotate(-12deg);
}

.rings-icon span:last-child{
    right:7px;

    transform:rotate(12deg);
}

/*==================================================
  ESCENA 5 · CEREMONIA · TEXTO SUPERIOR
  Ligeramente más abajo
==================================================*/

.scene-ceremony .section-eyebrow{
    margin-top:20px !important;
    margin-bottom:20px !important;

    font-size:40px !important;
    font-weight:600 !important;
    line-height:1 !important;

    letter-spacing:4px !important;

    color:var(--gold);
}

/*==================================================
  ESCENA 5 · TÍTULO · LA JAIMA
==================================================*/

.scene-ceremony .scene-title{
    margin:0;

    font-family:"Great Vibes",cursive;

    font-size:74px;
    font-weight:500;
    line-height:1;

    color:var(--pine);
}

/*==================================================
  ESCENA 5 · HORA
  Separada del título
==================================================*/

.ceremony-time-row{
    display:flex;

    justify-content:center;
    align-items:center;

    gap:10px;

    margin-top:25px;
}

.clock-icon{
    width:27px;
    height:27px;

    fill:none;
    stroke:var(--gold);
    stroke-width:1.8;
    stroke-linecap:round;
    stroke-linejoin:round;

    flex:0 0 auto;
}

.scene-ceremony .ceremony-time{
    margin:0;

    font-size:36px;
    font-weight:600;

    letter-spacing:1px;

    color:var(--gold);

    text-decoration:none;
}

/*==================================================
  ESCENA 5 · MAPA
==================================================*/

.ceremony-map{
    width:100%;
    max-width:390px;

    margin:22px auto 0;

    text-align:center;
}

.ceremony-map-frame{
    display:block;

    width:100%;
    height:145px;

    border:0;
    border-radius:16px;

    box-shadow:
        0 8px 22px
        rgba(53,94,59,.12);
}

/*==================================================
  ESCENA 5 · CÓMO LLEGAR
==================================================*/

.ceremony-map-link{
    display:inline-flex;

    justify-content:center;
    align-items:center;

    gap:8px;

    margin-top:10px;

    font-size:18px;
    font-weight:600;

    color:var(--pine);

    text-decoration:none;

    transition:
        color .2s ease,
        transform .2s ease;
}

.ceremony-map-link:hover{
    color:var(--gold);

    transform:translateY(-1px);
}

.ceremony-location-icon{
    width:20px;
    height:20px;

    fill:none;

    stroke:var(--gold);
    stroke-width:1.8;
    stroke-linecap:round;
    stroke-linejoin:round;

    flex:0 0 auto;
}

/*==================================================
  ESCENA 6 · CONFIRMACIÓN
==================================================*/

/*==================================================
  ESCENA 6 · CONTENEDOR GENERAL
==================================================*/

.confirmation-content{
    max-width:690px;
}

/*==================================================
  ESCENA 6 · ANILLOS
  Bajados ligeramente
==================================================*/

.scene-confirmation .rings-icon{
    margin-top:50px !important;
    margin-bottom:10px !important;
}

/*==================================================
  ESCENA 6 · TÍTULO PRINCIPAL
==================================================*/

.confirmation-title{
    max-width:600px;

    margin:auto;

    font-family:
        "Great Vibes",
        cursive;

    font-size:72px !important;
    font-weight:500;
    line-height:1.1;

    color:var(--pine);
}

/*==================================================
  ESCENA 6 · TEXTO "CONFIRMACIÓN"
==================================================*/

.scene-confirmation .section-eyebrow{
    font-size:35px !important;
}

/*==================================================
  ESCENA 6 · FECHA LÍMITE
==================================================*/

.confirmation-deadline{
    margin-top:22px;

    font-size:var(--text-size-body);
    line-height:1.4;
}

.confirmation-deadline strong{
    display:block;

    margin-top:7px;

    font-size:var(--text-size-body);

    color:var(--pine);
}

/*==================================================
  ESCENA 6 · OPCIONES DE CONFIRMACIÓN
==================================================*/

.confirmation-options{
    display:grid;

    grid-template-columns:
        repeat(2,minmax(0,1fr));

    gap:18px;

    margin-top:30px;
}

/*==================================================
  ESCENA 6 · TARJETAS DE WHATSAPP
==================================================*/

.whatsapp-card{
    display:flex;
    flex-direction:column;

    justify-content:center;
    align-items:center;

    min-height:125px;

    padding:18px 15px;

    border:
        1px solid
        rgba(201,162,39,.75);

    border-radius:14px;

    background:
        rgba(251,247,239,.78);

    color:var(--pine);

    text-decoration:none;

    box-shadow:
        0
        10px
        28px
        rgba(53,94,59,.08);

    transition:
        transform .25s ease,
        box-shadow .25s ease,
        background-color .25s ease;
}

/*==================================================
  ESCENA 6 · HOVER DE WHATSAPP
==================================================*/

.whatsapp-card:hover{
    transform:translateY(-4px);

    background:
        rgba(255,255,255,.92);

    box-shadow:
        0
        16px
        34px
        rgba(53,94,59,.14);
}

/*==================================================
  ESCENA 6 · "CONFIRMA ASISTENCIA CON"
==================================================*/

.whatsapp-card-label{
    font-size:20px !important;
    line-height:1.2 !important;
}

/*==================================================
  ESCENA 6 · NOMBRE
==================================================*/

.whatsapp-card strong{
    margin:7px 0;

    font-family:
        "Great Vibes",
        cursive;

    font-size:var(--text-size-script);
    font-weight:400;
}

/*==================================================
  ESCENA 6 · ACCIÓN
==================================================*/

.whatsapp-card-action{
    font-size:var(--text-size-small);

    font-weight:600;

    letter-spacing:1px;

    text-transform:uppercase;

    color:var(--gold);
}

/*==================================================
  ESCENA 7 · DESPEDIDA FINAL
==================================================*/

.scene-farewell-final{
    padding:54px 78px;
}

/*==================================================
  ESCENA 7 · CONTENIDO
==================================================*/

.farewell-final-content{
    display:flex;
    flex-direction:column;

    justify-content:center;
    align-items:center;

    max-width:720px;
}

/*==================================================
  ESCENA 7 · TEXTO INICIAL
==================================================*/

.farewell-opening{
    max-width:620px;

    font-family:"Great Vibes",cursive;
    font-size:60px !important;
    font-weight:400;
    line-height:1.15;

    color:var(--pine);
}

/*==================================================
  ESCENA 7 · TEXTO SECUNDARIO
==================================================*/

.farewell-secondary{
    max-width:560px;

    margin-top:31px;

    font-size:30px;
    font-weight:500;
    line-height:1.35;

    color:#4D524C;
}

/*==================================================
  ESCENA 7 · FRASE DESTACADA
==================================================*/

.farewell-big{
    max-width:660px;

    margin-top:2px;

    font-family:"Great Vibes",cursive;
    font-size:50px;
    line-height:1.05;

    color:var(--pine);
}

/*==================================================
  ESCENA 7 · JESÚS Y MARÍA
  Más grandes y protagonistas
==================================================*/

.farewell-couple{
    display:flex !important;

    justify-content:center !important;
    align-items:center !important;

    gap:18px !important;

    margin-top:27px !important;

    font-family:"Great Vibes",cursive !important;
    font-size:76px !important;
    font-weight:500 !important;
    line-height:1 !important;

    color:var(--gold) !important;
}

/*==================================================
  ESCENA 7 · CORAZÓN
==================================================*/

.farewell-heart{
    display:inline-block !important;

    font-family:Georgia,serif !important;
    font-size:32px !important;

    color:var(--gold) !important;

    transform:translateY(-1px) !important;
}

/*==================================================
  ESCENA 7 · FECHA
  Más grande y visible
==================================================*/

.farewell-date{
    display:block !important;

    margin-top:17px !important;

    font-size:32px !important;
    font-weight:600 !important;

    letter-spacing:4px !important;
 
    color:var(--pine) !important;

    text-decoration:none !important;
}

/*==================================================
  ANIMACIONES
==================================================*/

@keyframes envelopeFloating{
    0%,
    100%{
        transform:
            translateY(0)
            rotateX(0deg)
            rotateY(0deg);
    }

    50%{
        transform:
            translateY(-7px)
            rotateX(.4deg)
            rotateY(-.4deg);
    }
}

@keyframes unfoldArrowMovement{
    0%,
    100%{
        transform:translateY(0);
        opacity:.62;
    }

    50%{
        transform:translateY(9px);
        opacity:1;
    }
}

/*==================================================
  TABLET
==================================================*/

@media (max-width:900px){

    #intro{
        transform:translateY(90px);
    }

    #envelope{
        width:460px;
    }

    .open-text{
        margin-top:44px;
        font-size:48px;
    }

    .invitation-scene{
        padding:42px 48px;
    }

    .split-scene,
    .scene-story,
    .scene-ceremony{
        padding:42px 45px;
    }

    .split-content{
        gap:30px;
    }

    .announcement-intro{
        font-size:22px;
    }

    .announcement-main{
        font-size:var(--text-size-title);
    }

    .announcement-closing{
        font-size:20px;
    }

    .scene-story .story-opening{
        font-size:var(--text-size-script);
    }

    .scene-story p{
        font-size:var(--text-size-body);
    }

    .scene-story .story-highlight{
        font-size:var(--text-size-script);
    }

    .scene-story .story-closing{
        font-size:var(--text-size-body);
    }

    .family-gallery{
        gap:22px;
    }

    .scene-save-the-date{
        padding:40px 46px;
    }

    .save-the-date-content{
        gap:28px;
    }

    .calendar-month{
        font-size:var(--text-size-script);
    }

    .countdown-heading{
        font-size:var(--text-size-script);
    }

    .countdown-number{
        font-size:30px;
    }

    .scene-title{
        font-size:var(--text-size-title);
    }

}

/*==================================================
  PANTALLAS BAJAS
==================================================*/

@media (max-height:780px) and (min-width:601px){

    #intro{
        transform:translateY(78px);
    }

    #envelope{
        width:450px;
    }

    .open-text{
        margin-top:38px;
        font-size:46px;
    }

    .invitation-scene{
        padding-top:30px;
        padding-bottom:30px;
    }

    .split-image{
        height:min(455px,68vh);
        min-height:300px;
    }

    .announcement-intro{
        font-size:20px;
    }

    .announcement-main{
        margin-top:18px;
        font-size:var(--text-size-title);
    }

    .announcement-closing{
        font-size:18px;
    }

    .scene-story{
        padding-top:28px;
        padding-bottom:28px;
    }

    .scene-story .story-opening{
        margin-bottom:13px;
        font-size:var(--text-size-script);
    }

    .scene-story p{
        margin-bottom:8px;
        font-size:var(--text-size-body);
        line-height:1.22;
    }

    .scene-story .story-highlight{
        margin:6px auto 9px;
        font-size:var(--text-size-script);
    }

    .scene-story .story-closing{
        margin-top:8px;
        font-size:var(--text-size-body);
    }

    .family-photo{
        min-height:390px;
    }

    .wedding-calendar{
        padding:17px 19px 19px;
    }

    .calendar-days span,
    .calendar-days time{
        font-size:13px;
    }

    .countdown-heading{
        margin-bottom:18px;
        font-size:var(--text-size-script);
    }

    .countdown-unit{
        padding:13px 6px 10px;
    }

    .countdown-number{
        font-size:27px;
    }

    .countdown-date{
        margin-top:17px;
        font-size:var(--text-size-script);
    }

}

/*==================================================
  MÓVIL
==================================================*/

@media (max-width:600px){

    body{
        min-width:320px;
    }

    #intro{
        min-height:100svh;

        padding:0 14px;

        transform:translateY(52px);
    }

    #envelope{
        width:min(92vw,390px);

        perspective:1300px;
    }

    #envelope > #letter:not(.is-unfolded){
        left:12%;
        top:8%;

        width:76%;
        height:72%;

        transform:none;

        border-radius:8px;
    }

    .seal{
        width:82px;
        height:82px;
    }

    .open-text{
        margin-top:36px;

        font-size:40px;
    }

    .unfold-hint{
        gap:6px;

        margin-top:22px;
    }

    .unfold-hint-text{
        font-size:38px;
    }

    .unfold-arrow{
        width:34px;
    }

    .letter-cover{
        padding:22px 26px;
    }

    .cover-announcement{
        font-size:20px;
    }

    .cover-name{
        font-size:45px;
    }

    .cover-ampersand{
        font-size:29px;
    }

    .invitation-scene{
        padding:27px 22px;
    }

    /*
      En móvil las páginas de dos columnas pasan a vertical.
      Se conserva el orden del HTML:
      página 1 texto/foto y página 2 foto/texto.
    */

    .split-content{
        grid-template-columns:1fr;

        grid-template-rows:auto minmax(0,1fr);

        gap:15px;

        height:100%;
    }

    .split-image{
        height:100%;
        min-height:0;

        border-radius:15px;
    }

    .split-image img{
        border-radius:15px;
    }

    .announcement-text{
        padding:0;
    }

    .announcement-intro{
        max-width:310px;

        font-size:16px;
        line-height:1.25;
    }

    .announcement-main{
        margin-top:9px;

        font-size:var(--text-size-title);
    }

    .scene-announcement .invitation-divider{
        margin:12px auto 10px;
    }

    .announcement-closing{
        max-width:315px;

        font-size:15px;
        line-height:1.22;
    }

    .scene-story{
        padding:22px 20px;
    }

    .scene-story .split-content{
        grid-template-columns:1fr;
        grid-template-rows:minmax(0,.86fr) auto;

        gap:12px;
    }

    .scene-story .story-content{
        max-width:100%;
    }

    .scene-story .section-eyebrow{
        margin-bottom:7px;

        font-size:var(--text-size-eyebrow);
        letter-spacing:2.5px;
    }

    .scene-story .story-opening{
        margin-bottom:8px;

        font-size:var(--text-size-script);
        line-height:1.06;
    }

    .scene-story p{
        margin-bottom:5px;

        font-size:var(--text-size-body);
        line-height:1.18;
    }

    .scene-story .story-highlight{
        margin:4px auto 6px;

        font-size:var(--text-size-script);
    }

    .scene-story .story-closing{
        margin-top:5px;

        font-size:var(--text-size-body);
    }

    .scene-family{
        padding:25px 20px;
    }

    .family-gallery{
        grid-template-columns:1fr 1fr;

        gap:12px;

        height:100%;
    }

    .family-photo{
        min-height:0;

        border-radius:15px;
    }

    .family-photo img{
        border-radius:15px;
    }

    .scene-save-the-date{
        padding:23px 20px;
    }

    .save-the-date-content{
        grid-template-columns:1fr;

        gap:14px;

        height:100%;
    }

    .calendar-panel .section-eyebrow{
        margin-bottom:7px;

        font-size:11px;
    }

    .wedding-calendar{
        max-width:310px;

        padding:11px 14px 13px;

        border-radius:13px;
    }

    .calendar-header{
        padding-bottom:8px;
    }

    .calendar-month{
        font-size:var(--text-size-script);
    }

    .calendar-year{
        font-size:var(--text-size-small);
    }

    .calendar-weekdays{
        margin-top:9px;
        margin-bottom:4px;
    }

    .calendar-weekdays span{
        font-size:var(--text-size-small);
    }

    .calendar-weekdays,
    .calendar-days{
        gap:2px;
    }

    .calendar-days span,
    .calendar-days time{
        font-size:11px;
    }

    .countdown-heading{
        margin-bottom:10px;

        font-size:var(--text-size-script);
    }

    .wedding-countdown{
        max-width:330px;

        gap:5px;
    }

    .countdown-unit{
        padding:9px 4px 7px;

        border-radius:10px;
    }

    .countdown-number{
        font-size:22px;
    }

    .countdown-label{
        margin-top:4px;

        font-size:var(--text-size-small);
    }

    .countdown-date{
        margin-top:10px;

        font-size:var(--text-size-script);
    }

    .scene-ceremony{
        padding:26px 21px;
    }

    .scene-ceremony .split-content{
        grid-template-columns:1fr;

        grid-template-rows:auto minmax(0,1fr);

        gap:14px;
    }

    .rings-icon{
        width:54px;
        height:33px;

        margin-bottom:10px;
    }

    .rings-icon span{
        width:28px;
        height:28px;

        border-width:2px;
    }

    .scene-title{
        font-size:var(--text-size-title);
    }

    .ceremony-time-row{
        margin-top:12px;
    }

    .clock-icon{
        width:21px;
        height:21px;
    }

    .ceremony-time{
        font-size:var(--text-size-body);
    }

    .confirmation-title{
        font-size:var(--text-size-title);
    }

    .confirmation-options{
        grid-template-columns:1fr;

        gap:9px;

        margin-top:18px;
    }

    .whatsapp-card{
        min-height:78px;

        padding:10px;
    }

    .scene-farewell-final{
        padding:34px 25px;
    }

    .farewell-opening{
        font-size:var(--text-size-script);
    }

    .farewell-secondary{
        margin-top:14px;

        font-size:var(--text-size-body);
    }

    .farewell-big{
        font-size:var(--text-size-title);
    }

    .farewell-couple{
        gap:9px;

        margin-top:18px;

        font-size:var(--text-size-script);
    }

    .farewell-heart{
        font-size:var(--text-size-small);
    }

    .farewell-date{
        margin-top:12px;

        font-size:var(--text-size-small);
        letter-spacing:3px;
    }

}

/*==================================================
  MÓVILES PEQUEÑOS
==================================================*/

@media (max-width:380px){

    #envelope{
        width:94vw;
    }

    .seal{
        width:74px;
        height:74px;
    }

    .open-text{
        margin-top:32px;

        font-size:36px;
    }

    .unfold-hint-text{
        font-size:34px;
    }

    .unfold-arrow{
        width:30px;
    }

    .announcement-main{
        font-size:var(--text-size-title);
    }

    .scene-story .story-opening{
        font-size:var(--text-size-script);
    }

    .scene-story p{
        font-size:var(--text-size-body);
    }

    .wedding-calendar{
        max-width:285px;
    }

    .countdown-number{
        font-size:20px;
    }

}

/*==================================================
  TÁCTIL
==================================================*/

@media (hover:none){

    .seal:hover img{
        transform:none;

        filter:
            drop-shadow(
                0
                11px
                18px
                rgba(0,0,0,.30)
            );
    }

    .whatsapp-card:hover{
        transform:none;
    }

}

/*==================================================
  MOVIMIENTO REDUCIDO
==================================================*/

@media (prefers-reduced-motion:reduce){

    #envelope,
    .unfold-arrow{
        animation:none;
    }

    .seal img,
    .whatsapp-card{
        transition:none;
    }

}

/*==================================================
  CURSOR PERSONALIZADO
==================================================*/

html,
body,
body *,
body *::before,
body *::after{
    cursor:
        url("../img/cursors/letter-opener.cur") 2 2,
        auto !important;
}

/*==================================================
  SOBRE FIJO DURANTE Y DESPUÉS DE LA APERTURA
==================================================*/

#envelope.is-open,
#envelope.is-opening,
#envelope.is-unfolding,
#envelope.envelope-static,
body.invitation-unfolded #envelope,
body.scroll-enabled #envelope{

    /*
      Pausamos la animación EN EL PUNTO EXACTO
      en el que se encuentra.

      No usamos animation:none porque eso puede
      recalcular transform y producir un salto.
    */

    animation-play-state:paused !important;

    filter:
        drop-shadow(
            0
            24px
            25px
            rgba(0,0,0,.20)
        );

}

/*==================================================
  INTRO FIJO SIN CAMBIAR DE POSICIÓN
==================================================*/

body.invitation-unfolded #intro,
body.scroll-enabled #intro{

    /*
      El intro permanece exactamente donde estaba.

      NO cambiamos:
      position
      top
      left
      inset
      transform

      porque cualquiera de esos cambios provocaría
      un salto visual.
    */

    overflow:visible;

    pointer-events:none;

}

/*==================================================
  SOBRE NO INTERACTIVO TRAS DESPLEGAR
==================================================*/

body.invitation-unfolded #envelope,
body.scroll-enabled #envelope{

    pointer-events:none;

}

/*==================================================
  SOBRE TOTALMENTE ESTÁTICO DURANTE EL DESPLIEGUE
==================================================*/

#envelope.envelope-static{

    /*
      No cambiamos posición ni transform.

      Solo nos aseguramos de que no vuelva
      a arrancar la animación flotante.
    */

    animation-play-state:paused !important;

    pointer-events:none;

}
/*==================================================
  TIPOGRAFÍA UNIFICADA · REGLA ÚNICA FINAL
  Mantiene cada fuente y color; solo iguala tamaños.
==================================================*/

/* Texto normal */
.scene-announcement .announcement-intro,
.scene-announcement .announcement-closing,
.scene-story p,
.scene-story .story-closing,
.ceremony-time,
.confirmation-deadline,
.confirmation-deadline strong,
.farewell-secondary{
    font-size:var(--text-size-body);
}

/* Frases caligráficas */
.scene-story .story-opening,
.scene-story .story-highlight,
.calendar-month,
.countdown-heading,
.countdown-date,
.whatsapp-card strong,
.farewell-opening,
.farewell-couple{
    font-size:var(--text-size-script);
}

/* Títulos principales */
.scene-announcement .announcement-main,
.scene-title,
.confirmation-title,
.farewell-big{
    font-size:var(--text-size-title);
}

/* Cabeceras pequeñas */
.section-eyebrow,
.scene-story .section-eyebrow,
.scene-save-the-date .section-eyebrow,
.scene-ceremony .section-eyebrow,
.scene-confirmation .section-eyebrow{
    font-size:var(--text-size-eyebrow);
}

/* Texto pequeño funcional */
.calendar-year,
.calendar-weekdays span,
.countdown-label,
.whatsapp-card-label,
.whatsapp-card-action,
.farewell-date,
.farewell-heart{
    font-size:var(--text-size-small);
}

/*==================================================
  PRIMERA PÁGINA · SIN DEGRADADO/VELO DE TEXTO
==================================================*/

.scene-announcement .announcement-text::before{
    content:none !important;
    display:none !important;
    background:none !important;
    backdrop-filter:none !important;
    -webkit-backdrop-filter:none !important;
}

/*==================================================
  ESCENA 1 · TAMAÑOS DE TEXTO DEFINITIVOS
  Texto más grande SIN aumentar demasiado
  la altura total del bloque
==================================================*/

.scene-announcement .announcement-intro{
    font-size:36px !important;
    line-height:1.08 !important;
}

.scene-announcement .announcement-main{
    font-size:86px !important;
    line-height:.82 !important;
    margin:0 !important;
}

.scene-announcement .announcement-closing{
    font-size:32px !important;
    line-height:1.10 !important;
}

/*
  Al crecer el texto reducimos únicamente
  los espacios verticales de las decoraciones
  para conservar la altura original del conjunto.
*/

.scene-announcement .announcement-decoration{
    margin-top:12px !important;
    margin-bottom:9px !important;
}

.scene-announcement .announcement-decoration-bottom{
    margin-top:9px !important;
    margin-bottom:13px !important;
}

.scene-announcement .announcement-rings{
    margin-top:14px !important;
}

/*==================================================
  TABLET
==================================================*/

@media (max-width:900px){

    .scene-announcement .announcement-intro{
        font-size:32px !important;
        line-height:1.08 !important;
    }

    .scene-announcement .announcement-main{
        font-size:76px !important;
        line-height:.82 !important;
        margin:0 !important;
    }

    .scene-announcement .announcement-closing{
        font-size:28px !important;
        line-height:1.10 !important;
    }

    .scene-announcement .announcement-decoration{
        margin-top:10px !important;
        margin-bottom:7px !important;
    }

    .scene-announcement .announcement-decoration-bottom{
        margin-top:7px !important;
        margin-bottom:10px !important;
    }

    .scene-announcement .announcement-rings{
        margin-top:11px !important;
    }

}

/*==================================================
  MÓVIL
==================================================*/

@media (max-width:600px){

    .scene-announcement .announcement-intro{
        font-size:25px !important;
        line-height:1.08 !important;
    }

    .scene-announcement .announcement-main{
        font-size:60px !important;
        line-height:.82 !important;
        margin:0 !important;
    }

    .scene-announcement .announcement-closing{
        font-size:23px !important;
        line-height:1.10 !important;
    }

    .scene-announcement .announcement-decoration{
        margin-top:7px !important;
        margin-bottom:5px !important;
    }

    .scene-announcement .announcement-decoration-bottom{
        margin-top:5px !important;
        margin-bottom:7px !important;
    }

    .scene-announcement .announcement-rings{
        margin-top:7px !important;
    }

}

/*==================================================
  ESCENA 6 · ALERGIAS E INTOLERANCIAS
==================================================*/

.scene-confirmation .confirmation-allergies {
    width: 100%;
    max-width: 620px;

    margin: 28px auto 0;

    text-align: left;
}

.scene-confirmation .confirmation-allergies-label {
    display: block;

    margin-bottom: 12px;

    font-family: "Cormorant Garamond", serif;
    font-size: clamp(19px, 1.4vw, 24px);
    font-weight: 600;
    line-height: 1.35;

    color: var(--pine);
}

.scene-confirmation .confirmation-allergies-input {
    display: block;

    width: 100%;
    min-height: 105px;

    padding: 14px 16px;

    border: 1px solid rgba(201, 162, 39, .65);
    border-radius: 14px;

    background: rgba(251, 247, 239, .85);

    font-family: "Cormorant Garamond", serif;
    font-size: 18px;
    line-height: 1.4;

    color: var(--text);

    resize: vertical;

    transition:
        border-color .2s ease,
        box-shadow .2s ease;
}

.scene-confirmation .confirmation-allergies-input::placeholder {
    color: var(--muted);
    opacity: .8;
}

.scene-confirmation .confirmation-allergies-input:focus {
    outline: none;

    border-color: var(--gold);

    box-shadow: 0 0 0 3px rgba(201, 162, 39, .13);
}

.scene-confirmation .confirmation-allergies-help {
    margin-top: 7px;

    font-size: 15px;
    line-height: 1.35;

    color: var(--muted);
}

/*==================================================
  ESCENA 6 · MÓVIL
==================================================*/

@media (max-width: 600px) {

    .scene-confirmation .confirmation-allergies {
        margin-top: 20px;
    }

    .scene-confirmation .confirmation-allergies-label {
        font-size: 18px;
    }

    .scene-confirmation .confirmation-allergies-input {
        min-height: 90px;
        padding: 12px;
        font-size: 16px;
    }

    .scene-confirmation .confirmation-allergies-help {
        font-size: 13px;
    }

}

/*==================================================
  ESCENA 6 · AJUSTE VISUAL DE CONFIRMACIÓN
  Compacta los textos y espacios para que el formulario
  y las dos tarjetas se vean completos en pantalla.
==================================================*/

.scene-confirmation {
    padding: 28px 48px !important;
}

.scene-confirmation .confirmation-content {
    width: 100%;
    max-width: 820px;
}

.scene-confirmation .rings-icon {
    margin-top: 8px !important;
    margin-bottom: 6px !important;
}

.scene-confirmation .section-eyebrow {
    margin-bottom: 8px !important;
    font-size: clamp(24px, 2.1vw, 30px) !important;
    line-height: 1 !important;
    letter-spacing: 4px;
}

.scene-confirmation .confirmation-title {
    max-width: 760px;
    font-size: clamp(44px, 4.1vw, 60px) !important;
    line-height: .98 !important;
}

.scene-confirmation .confirmation-deadline {
    margin-top: 14px;
    font-size: clamp(18px, 1.55vw, 23px) !important;
    line-height: 1.25;
}

.scene-confirmation .confirmation-deadline strong {
    margin-top: 5px;
    font-size: clamp(19px, 1.6vw, 23px) !important;
}

.scene-confirmation .confirmation-options {
    gap: 14px;
    margin-top: 20px;
}

.scene-confirmation .whatsapp-card {
    min-height: 100px;
    padding: 12px 12px;
}

.scene-confirmation .whatsapp-card-label {
    font-size: 17px !important;
    line-height: 1.2;
}

.scene-confirmation .whatsapp-card strong {
    font-size: 42px !important;
    line-height: 1;
}

.scene-confirmation .whatsapp-card-action {
    margin-top: 4px;
    font-size: 13px !important;
    letter-spacing: 1px;
}

.scene-confirmation .confirmation-allergies {
    max-width: 760px;
    margin-top: 18px;
}

.scene-confirmation .confirmation-allergies-label {
    margin-bottom: 8px;
    font-size: clamp(17px, 1.45vw, 21px) !important;
    line-height: 1.2;
}

.scene-confirmation .confirmation-allergies-input {
    min-height: 72px;
    padding: 10px 14px;
    font-size: 17px;
}

.scene-confirmation .confirmation-allergies-help {
    margin-top: 5px;
    font-size: 13px;
}

@media (max-width: 900px) {
    .scene-confirmation {
        padding: 22px 28px !important;
    }

    .scene-confirmation .confirmation-title {
        font-size: clamp(40px, 5.5vw, 52px) !important;
    }

    .scene-confirmation .confirmation-options {
        margin-top: 16px;
    }

    .scene-confirmation .whatsapp-card strong {
        font-size: 36px !important;
    }
}

@media (max-width: 600px) {
    .scene-confirmation {
        padding: 16px 14px !important;
    }

    .scene-confirmation .section-eyebrow {
        font-size: 20px !important;
        letter-spacing: 2px;
    }

    .scene-confirmation .confirmation-title {
        font-size: clamp(34px, 9vw, 44px) !important;
        line-height: 1 !important;
    }

    .scene-confirmation .confirmation-deadline,
    .scene-confirmation .confirmation-deadline strong {
        font-size: 17px !important;
    }

    .scene-confirmation .confirmation-options {
        grid-template-columns: 1fr;
        gap: 10px;
        margin-top: 14px;
    }

    .scene-confirmation .whatsapp-card {
        min-height: 82px;
        padding: 9px 10px;
    }

    .scene-confirmation .whatsapp-card-label {
        font-size: 15px !important;
    }

    .scene-confirmation .whatsapp-card strong {
        font-size: 32px !important;
    }

    .scene-confirmation .whatsapp-card-action {
        font-size: 11px !important;
    }

    .scene-confirmation .confirmation-allergies {
        margin-top: 14px;
    }

    .scene-confirmation .confirmation-allergies-label {
        font-size: 16px !important;
    }

    .scene-confirmation .confirmation-allergies-input {
        min-height: 64px;
        font-size: 15px;
    }
}
