/* -------------------------------------------------------------
   ESTILOS GENERALES Y VARIABLES DE LA INVITACIÓN DIGITAL
   Diseño editorial premium - Margarita & Brasilio (19.12.2026)
   ------------------------------------------------------------- */

/* IMPORTACIÓN DE FUENTES */
@import url('https://fonts.googleapis.com/css2?family=Alex+Brush&family=Cormorant+Garamond:ital,wght@0,300;0,400;0,600;0,700;1,400&family=Montserrat:wght@300;400;500;600&display=swap');

@font-face {
  font-family: 'Hum';
  src: url('../assets/font/Hum.woff') format('woff'),
       url('../assets/font/Hum.ttf') format('truetype');
  font-weight: normal;
  font-style: normal;
  font-display: swap;
}

:root {
  /* Paleta cromática - Colores del Dress Code y variables principales */
  --color-fuchsia: #d53369;
  --color-orange: #f26419;
  --color-yellow: #f6ae2d;
  --color-lilac: #a044b3;
  --color-green: #7a9a60;
  --color-blue: #4f86c6;

  /* Colores de fondo de módulos */
  --bg-hero: #fdf6f6;
  --bg-story: #e5e9e2;
  --bg-celebration: #fdf0f2;
  --bg-location: #ebdff2;
  --bg-dresscode: #fcf8f2;
  --bg-details: #faf5ee;
  --bg-confirmation: #f2e8f7;

  /* Tonos de texto y acentos */
  --color-primary: #8a2387;
  --color-primary-light: #b224ef;
  --color-accent-gold: #cba358;
  --color-text-dark: #3c3c3c;
  --color-text-light: #fefefe;
  --color-text-muted: #767676;
  --color-heart-pink: #e75c74;

  /* Tipografías */
  --font-script: 'Hum', 'Alex Brush', cursive;
  --font-serif: 'Montserrat', sans-serif;
  --font-sans: 'Montserrat', sans-serif;

  /* Sombras y bordes */
  --shadow-polaroid: 0 8px 16px rgba(0, 0, 0, 0.12), 0 1px 3px rgba(0, 0, 0, 0.08);
  --shadow-button: 0 4px 10px rgba(138, 35, 135, 0.2);
  --shadow-button-hover: 0 6px 15px rgba(138, 35, 135, 0.35);
  --transition-smooth: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

/* RESET E HIGIENE */
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  -webkit-tap-highlight-color: transparent;
}

html {
  scroll-behavior: smooth;
  font-size: 16px;
}

body {
  font-family: var(--font-sans);
  background-color: #f0eae3; /* Fondo exterior para centrar en Desktop */
  color: var(--color-text-dark);
  line-height: 1.6;
  display: flex;
  justify-content: center;
  align-items: flex-start;
  min-height: 100vh;
}

/* -------------------------------------------------------------
   SISTEMA DE SCROLL REVEAL (REVELADO AL DESLIZAR)
   ------------------------------------------------------------- */
/* Estado inicial (invisible y ligeramente desplazado) si JS está activo */
.js-enabled .reveal-on-scroll {
  opacity: 0;
  transform: translateY(35px);
  transition: opacity 1.2s cubic-bezier(0.22, 1, 0.36, 1), 
              transform 1.2s cubic-bezier(0.22, 1, 0.36, 1);
  pointer-events: none;
}

/* Estado activo cuando el elemento entra en pantalla */
.reveal-on-scroll.revealed {
  opacity: 1 !important;
  transform: translateY(0) !important;
  pointer-events: auto !important;
}

/* Retrasos escalonados (Stagger delays) */
.delay-1 { transition-delay: 0.15s !important; }
.delay-2 { transition-delay: 0.3s !important; }
.delay-3 { transition-delay: 0.45s !important; }
.delay-4 { transition-delay: 0.6s !important; }

/* CONTENEDOR PRINCIPAL - SIMULACIÓN DE MÓVIL EN DESKTOP */
.invitation-wrapper {
  width: 100%;
  max-width: 480px; /* Ancho máximo tipo teléfono móvil */
  background-color: #ffffff;
  min-height: 100vh;
  box-shadow: 0 0 40px rgba(0, 0, 0, 0.15);
  position: relative;
  overflow: hidden;
  display: flex;
  flex-direction: column;
}

/* ESTILOS COMUNES DE SECCIÓN */
section {
  position: relative;
  padding: 80px 30px;
  width: 100%;
  overflow: hidden;
  text-align: center;
}

/* Títulos y Subtítulos */
.section-tag {
  font-family: var(--font-serif);
  font-size: 1.1rem;
  font-weight: 600;
  letter-spacing: 3px;
  text-transform: uppercase;
  color: var(--color-accent-gold);
  margin-bottom: 10px;
  display: inline-block;
}

.section-title {
  font-family: var(--font-serif);
  font-size: 2.4rem;
  font-weight: 400;
  color: var(--color-primary);
  line-height: 1.2;
  margin-bottom: 20px;
}

.section-title.script-style {
  font-family: var(--font-script);
  font-size: 3.2rem;
  color: var(--color-primary);
  text-transform: none;
  font-weight: normal;
}

.heart-divider {
  display: inline-block;
  width: 18px;
  height: 18px;
  margin: 15px auto;
  color: var(--color-accent-gold);
}

.heart-divider img,
.heart-divider svg {
  width: 100%;
  height: 100%;
}

/* BOTONES PREMIUM */
.btn-premium {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  padding: 14px 28px;
  border-radius: 30px;
  font-family: var(--font-sans);
  font-size: 0.85rem;
  font-weight: 600;
  letter-spacing: 2px;
  text-transform: uppercase;
  text-decoration: none;
  border: none;
  cursor: pointer;
  transition: var(--transition-smooth);
  margin-top: 15px;
  box-shadow: var(--shadow-button);
}

.btn-pink {
  background: linear-gradient(135deg, var(--color-fuchsia), #ec4899);
  color: var(--color-text-light);
}

.btn-pink:hover {
  transform: scale(1.05) translateY(-2.5px);
  box-shadow: 0 8px 20px rgba(236, 72, 153, 0.4);
  filter: brightness(1.05);
}

.btn-purple {
  background: linear-gradient(135deg, var(--color-primary), var(--color-primary-light));
  color: var(--color-text-light);
}

.btn-purple:hover {
  transform: scale(1.05) translateY(-2.5px);
  box-shadow: 0 8px 20px rgba(138, 35, 135, 0.35);
  filter: brightness(1.05);
}

.btn-icon {
  width: 18px;
  height: 18px;
  fill: currentColor;
  stroke: currentColor;
}

/* -------------------------------------------------------------
   MÓDULO 1: HERO / PORTADA
   ------------------------------------------------------------- */
#hero {
  background-color: var(--bg-hero);
  background-image: url('../assets/photos/fondo1.jpg');
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  padding: 100px 30px 60px 30px;
}

/* Flores en las esquinas - Propiedades Base */
.corner-flower {
  position: absolute;
  z-index: 10;
  pointer-events: none;
  transition: var(--transition-smooth);
}

/* --- ROSA SUPERIOR IZQUIERDA (Top-Left) --- */
.corner-flower-tl {
  width: 170px;          /* AJUSTA EL ANCHO */
  height: 170px;         /* AJUSTA EL ALTO */
  top: 0px;              /* MOVIMIENTO ARRIBA / ABAJO (ej: -10px sube, 10px baja) */
  left: 0px;             /* MOVIMIENTO IZQUIERDA / DERECHA (ej: -10px saca, 10px mete) */
  opacity: 0;
  animation: fadeInSlideTL 1.5s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards;
}

/* --- ROSA SUPERIOR DERECHA (Top-Right) --- */
.corner-flower-tr {
  width: 170px;          /* AJUSTA EL ANCHO */
  height: 170px;         /* AJUSTA EL ALTO */
  top: 0px;              /* MOVIMIENTO ARRIBA / ABAJO */
  right: 0px;            /* MOVIMIENTO IZQUIERDA / DERECHA */
  opacity: 0;
  animation: fadeInSlideTR 1.5s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards;
}

/* --- ROSA INFERIOR IZQUIERDA (Bottom-Left) --- */
.corner-flower-bl {
  width: 170px;          /* AJUSTA EL ANCHO */
  height: 170px;         /* AJUSTA EL ALTO */
  bottom: 0px;           /* MOVIMIENTO ARRIBA / ABAJO */
  left: 0px;             /* MOVIMIENTO IZQUIERDA / DERECHA */
  opacity: 0;
  animation: fadeInSlideBL 1.5s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards;
}

/* --- ROSA INFERIOR DERECHA (Bottom-Right) --- */
.corner-flower-br {
  width: 170px;          /* AJUSTA EL ANCHO */
  height: 170px;         /* AJUSTA EL ALTO */
  bottom: 0px;           /* MOVIMIENTO ARRIBA / ABAJO */
  right: 0px;            /* MOVIMIENTO IZQUIERDA / DERECHA */
  opacity: 0;
  animation: fadeInSlideBR 1.5s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards;
}

@keyframes fadeInSlideTL {
  0% {
    transform: translate(-40px, -40px);
    opacity: 0;
  }
  100% {
    transform: translate(0, 0);
    opacity: 1;
  }
}

@keyframes fadeInSlideTR {
  0% {
    transform: translate(40px, -40px);
    opacity: 0;
  }
  100% {
    transform: translate(0, 0);
    opacity: 1;
  }
}

@keyframes fadeInSlideBL {
  0% {
    transform: translate(-40px, 40px);
    opacity: 0;
  }
  100% {
    transform: translate(0, 0);
    opacity: 1;
  }
}

@keyframes fadeInSlideBR {
  0% {
    transform: translate(40px, 40px);
    opacity: 0;
  }
  100% {
    transform: translate(0, 0);
    opacity: 1;
  }
}

/* Contenido del Hero */
.hero-tag {
  font-family: var(--font-serif);
  font-size: 0.95rem;
  letter-spacing: 4px;
  text-transform: uppercase;
  color: var(--color-text-muted);
  margin-bottom: 5px;
}

.hero-names-img {
  position: relative;    /* Permite el posicionamiento manual relativo */
  top: -50px;              /* AJUSTA ARRIBA / ABAJO (ej: -10px sube, 10px baja) */
  left: 0px;             /* AJUSTA IZQUIERDA / DERECHA (ej: -10px izquierda, 10px derecha) */
  margin: 30px 0;        /* Margen de espaciado vertical */
  width: 100%;
  max-width: 420px;      /* TAMAÑO MÁXIMO (hacerlo un poco más grande, antes 420px) */
  display: flex;
  justify-content: center;
  align-items: center;
  padding: 0 10px;
  opacity: 0;            /* Comienza invisible */
  animation: fadeInNames 1.6s cubic-bezier(0.25, 0.46, 0.45, 0.94) 0.3s forwards; /* Animación de aparición */
}

.hero-names-png {
  width: 140%;
  height: auto;
  object-fit: contain;
  display: block;
}

@keyframes fadeInNames {
  0% {
    transform: translateY(25px) scale(0.95);
    opacity: 0;
  }
  100% {
    transform: translateY(0) scale(1);
    opacity: 1;
  }
}

.hero-names {
  margin: 20px 0;
  display: flex;
  flex-direction: column;
  align-items: center;
}

.hero-name {
  font-family: var(--font-script);
  font-size: 5.5rem;
  line-height: 0.9;
  font-weight: normal;
}

.hero-name.bride {
  color: var(--color-fuchsia);
}

.hero-name.groom {
  color: var(--color-primary);
  margin-top: -10px;
}

.hero-ampersand {
  font-family: var(--font-serif);
  font-size: 2.2rem;
  font-weight: 300;
  color: var(--color-accent-gold);
  margin: 5px 0;
  font-style: italic;
}

.hero-date-box {
  position: relative;    /* Permite el posicionamiento manual relativo */
  top: -60px;              /* AJUSTA ARRIBA / ABAJO (ej: -15px sube, 15px baja) */
  left: 0px;             /* AJUSTA IZQUIERDA / DERECHA */
  border-top: 1px solid rgba(203, 163, 88, 0.4);
  border-bottom: 1px solid rgba(203, 163, 88, 0.4);
  padding: 10px 30px;
  margin: 25px 0;
  font-family: var(--font-serif);
  font-size: 1.2rem;
  letter-spacing: 3px;
  text-transform: uppercase;
  color: var(--color-text-dark);
  opacity: 0;
  animation: fadeInGeneric 1.5s ease 0.6s forwards;
}

.hero-phrase {
  position: relative;    /* Permite el posicionamiento manual relativo */
  top: -60px;              /* AJUSTA ARRIBA / ABAJO (ej: -15px sube, 15px baja) */
  left: 0px;             /* AJUSTA IZQUIERDA / DERECHA */
  font-family: var(--font-serif);
  font-style: italic;
  font-size: 1.15rem;
  color: var(--color-primary);
  max-width: 280px;
  margin: 0 auto;
  opacity: 0;
  animation: fadeInGeneric 1.5s ease 0.9s forwards;
}

@keyframes fadeInGeneric {
  0% {
    opacity: 0;
    transform: translateY(10px);
  }
  100% {
    opacity: 1;
    transform: translateY(0);
  }
}

/* -------------------------------------------------------------
   MÓDULO 2: NUESTRA HISTORIA
   ------------------------------------------------------------- */
#story {
  background-color: #f2e9d8;
  background-image: url('../assets/photos/fondo2.jpg');
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  padding-bottom: 100px;
}

#story .section-title {
  position: relative;
  z-index: 2; /* Pasa por delante de la pelota giratoria */
  color: #ffffff; /* Título color blanco */
}

/* Raqueta decorativa flotante en la esquina inferior derecha */
.story-decor-racket {
  position: absolute;
  bottom: 25px;
  right: -20px;
  width: 120px;
  height: 120px;
  opacity: 0.9;
  transform: rotate(-15deg);
  z-index: 2;
  pointer-events: none;
}

/* Contenedor de la Pelota de Tenis (Centrado detrás del título) */
.story-decor-tennis-container {
  position: absolute;
  top: 25px; /* Altura aproximada del título */
  left: 50%;
  transform: translateX(-50%);
  width: 150px; /* Tamaño del elemento */
  height: auto;
  z-index: 1; /* Pasa por detrás del título */
  pointer-events: none;
  display: flex;
  justify-content: center;
  align-items: center;
}

/* Pelota de Tenis Giratoria de Fondo (Sin deformación) */
.story-decor-tennis {
  width: 100%;
  height: auto; /* Mantiene la proporción original para evitar deformación */
  object-fit: contain;   /* Protege el aspect ratio nativo */
  opacity: 1; /* Completamente visible y opaca */
  animation: spinDisk 12s linear infinite; /* Giro lento y constante */
}

@keyframes spinDisk {
  0% {
    transform: rotate(0deg);
  }
  100% {
    transform: rotate(360deg);
  }
}

/* Polaroid Container y Slider */
.polaroid-container {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 60px;
  margin-top: 40px;
  position: relative;
  z-index: 2;
}

/* Tarjeta Polaroid */
.polaroid-card-wrapper {
  width: 100%;
  max-width: 290px;
  position: relative;
  z-index: 3; /* Pasa por delante de la línea punteada */
  text-align: center; /* Centrar contenidos inline */
}

/* Estado inicial de animación si JS está activado */
.js-enabled .polaroid-card-wrapper {
  opacity: 0;
  transform: translateY(60px) scale(0.9);
  transition: opacity 1.2s ease, transform 1.2s cubic-bezier(0.25, 0.8, 0.25, 1);
  pointer-events: none;
}

/* Rotaciones orgánicas finales cuando se revelan */
.polaroid-card-wrapper.revealed {
  opacity: 1;
  pointer-events: auto;
}

.polaroid-card-wrapper.revealed.rot-left-1  { transform: translateY(0) scale(1) rotate(-3deg); }
.polaroid-card-wrapper.revealed.rot-right-1 { transform: translateY(0) scale(1) rotate(2deg); }
.polaroid-card-wrapper.revealed.rot-left-2  { transform: translateY(0) scale(1) rotate(-1deg); }
.polaroid-card-wrapper.revealed.rot-right-2 { transform: translateY(0) scale(1) rotate(3deg); }
.polaroid-card-wrapper.revealed.rot-left-3  { transform: translateY(0) scale(1) rotate(-2deg); }

/* Frase por encima de cada Polaroid */
.polaroid-caption-top {
  font-family: var(--font-serif);
  font-size: 1.25rem; /* Frase más grande (antes 1rem) */
  font-weight: 600;
  color: var(--color-text-dark);
  margin-bottom: 16px;
  text-align: center;
  display: inline-block; /* Ajusta al ancho del texto */
  background-color: #f2e9d8; /* Oculta la línea punteada detrás */
  padding: 6px 16px;
  border-radius: 20px; /* Estilo sticker redondeado */
  box-shadow: 0 3px 10px rgba(0, 0, 0, 0.04);
  position: relative;
  z-index: 4; /* Queda por delante de la línea */
}

.polaroid-caption-top .caption-icon {
  display: inline-block;
  width: 16px;
  height: 16px;
  vertical-align: middle;
  margin-left: 5px;
}

.polaroid-card {
  background-color: #ffffff;
  padding: 15px 15px 35px 15px;
  box-shadow: var(--shadow-polaroid);
  border-radius: 2px;
  transition: var(--transition-smooth);
  width: 100%;
}

.polaroid-card img {
  width: 100%;
  height: 240px;
  object-fit: cover;
  border: 1px solid rgba(0, 0, 0, 0.05);
  display: block;
}

/* Ligeras rotaciones orgánicas (por defecto en caso de no-JS) */
.rot-left-1 { transform: rotate(-3deg); }
.rot-right-1 { transform: rotate(2deg); }
.rot-left-2 { transform: rotate(-1deg); }
.rot-right-2 { transform: rotate(3deg); }
.rot-left-3 { transform: rotate(-2deg); }

.polaroid-card-wrapper:hover .polaroid-card {
  transform: scale(1.03) rotate(0deg);
  box-shadow: 0 15px 25px rgba(0, 0, 0, 0.18);
  z-index: 5;
}

/* Conectores con Corazones */
.story-timeline-line {
  position: absolute;
  top: 150px;
  bottom: 50px;
  left: 50%;
  transform: translateX(-50%);
  width: 2px;
  border-left: 2px dotted rgba(231, 92, 116, 0.4);
  z-index: 1; /* Pasa por detrás */
  pointer-events: none;
}

/* Corazones entrelazados en la línea */
.timeline-hearts {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  width: 65px;
  height: 40px;
  background-color: #f2e9d8; /* Mismo color de fondo para tapar la línea punteada */
  padding: 5px;
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: center;
}

.timeline-hearts-svg {
  width: 100%;
  height: 100%;
}

/* -------------------------------------------------------------
   MÓDULO 3: AHORA QUEREMOS CELEBRAR CONTIGO
   ------------------------------------------------------------- */
#celebration {
  background-color: var(--bg-celebration);
  background-image: url('../assets/photos/fondo1.jpg');
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  padding: 90px 30px;
}

#celebration .section-tag {
  color: #666642; /* Verde oliva solicitado */
}

.celebration-decor-left {
  position: absolute;
  left: -40px;
  top: 50%;
  transform: translateY(-50%) rotate(45deg);
  width: 120px;
  height: 120px;
  opacity: 0.9;
  pointer-events: none;
}

/* Flores decorativas arriba.png en la parte superior izquierda */
.celebration-decor-top-left {
  position: absolute;
  top: 0px;              /* MOVIMIENTO ARRIBA / ABAJO (valores más altos bajan, negativos suben) */
  left: -25px;           /* MOVIMIENTO IZQUIERDA / DERECHA (valores más altos meten, negativos sacan) */
  width: 350px;          /* TAMAÑO / ANCHO DEL ELEMENTO */
  height: auto;          /* MANTIENE LA PROPORCIÓN ORIGINAL (evita deformación) */
  object-fit: contain;   /* Protege el aspect ratio nativo de la imagen */
  opacity: 0.95;
  pointer-events: none;
  z-index: 2;
}

/* Estado inicial de animación si JS está activado */
.js-enabled .celebration-decor-top-left.reveal-on-scroll {
  opacity: 0;
  transform: translate(-30px, -30px);
  transition: opacity 1.5s cubic-bezier(0.22, 1, 0.36, 1), 
              transform 1.5s cubic-bezier(0.22, 1, 0.36, 1);
}

/* Flores decorativas abajo.png en la parte inferior derecha */
.celebration-decor-bottom-right {
  position: absolute;
  bottom: 0px;           /* MOVIMIENTO ARRIBA / ABAJO (valores más altos suben, negativos bajan) */
  right: -25px;          /* MOVIMIENTO IZQUIERDA / DERECHA (valores más altos meten, negativos sacan) */
  width: 350px;          /* TAMAÑO / ANCHO DEL ELEMENTO */
  height: auto;          /* MANTIENE LA PROPORCIÓN ORIGINAL (evita deformación) */
  object-fit: contain;   /* Protege el aspect ratio nativo de la imagen */
  opacity: 0.95;
  pointer-events: none;
  z-index: 2;
}

/* Estado inicial de animación si JS está activado */
.js-enabled .celebration-decor-bottom-right.reveal-on-scroll {
  opacity: 0;
  transform: translate(30px, 30px);
  transition: opacity 1.5s cubic-bezier(0.22, 1, 0.36, 1), 
              transform 1.5s cubic-bezier(0.22, 1, 0.36, 1);
}

/* Cuando se revelan */
.celebration-decor-top-left.reveal-on-scroll.revealed,
.celebration-decor-bottom-right.reveal-on-scroll.revealed {
  opacity: 0.95 !important;
  transform: translate(0, 0) !important;
}

.celebration-content {
  position: relative;
  z-index: 2;
  display: flex;
  flex-direction: column;
  align-items: center;
}

.celebration-intro {
  font-family: var(--font-serif);
  font-size: 1.1rem;
  color: var(--color-text-dark);
  max-width: 290px;
  margin: 0 auto 35px auto;
}

/* Tarjetas de Detalles */
.info-items-container {
  display: flex;
  flex-direction: column;
  gap: 25px;
  width: 100%;
  max-width: 320px;
  margin-bottom: 35px;
}

.info-item {
  display: flex;
  align-items: center;
  gap: 15px;
  text-align: left;
  background: none;        /* Quitado el recuadro de fondo */
  border: none;            /* Quitado el borde */
  padding: 10px 0;         /* Espaciado ajustado */
  transition: var(--transition-smooth);
}

.info-item:hover {
  transform: translateY(-2px);
}

.info-item-icon {
  width: 28px;
  height: 28px;
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
}

.info-item-icon img {
  width: 100%;
  height: 100%;
  object-fit: contain;
}

.info-item-text {
  font-family: var(--font-sans);
}

.info-title {
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  margin-bottom: 2px;
}

.info-desc {
  font-family: var(--font-serif);
  font-size: 1.2rem;
  font-weight: 600;
}

/* --- COLORES INDIVIDUALES Y FILTROS PARA ICONOS --- */

/* Item 1: Día (Verde) */
.info-item:nth-child(1) .info-title,
.info-item:nth-child(1) .info-desc {
  color: #4a6b32; /* Verde profundo para legibilidad */
}
.info-item:nth-child(1) .info-item-icon img {
  filter: invert(36%) sepia(21%) saturate(1478%) hue-rotate(54deg) brightness(95%) contrast(88%);
}

/* Item 2: Hora (Rosa) */
.info-item:nth-child(2) .info-title,
.info-item:nth-child(2) .info-desc {
  color: #c2185b; /* Rosa fucsia profundo */
}
.info-item:nth-child(2) .info-item-icon img {
  filter: invert(15%) sepia(95%) saturate(3990%) hue-rotate(324deg) brightness(85%) contrast(97%);
}

/* Item 3: Lugar (Amarillo) */
.info-item:nth-child(3) .info-title,
.info-item:nth-child(3) .info-desc {
  color: #b58012; /* Amarillo dorado profundo */
}
.info-item:nth-child(3) .info-item-icon img {
  filter: invert(51%) sepia(76%) saturate(1376%) hue-rotate(18deg) brightness(91%) contrast(93%);
}

/* -------------------------------------------------------------
   MÓDULO 4: LUGAR / UBICACIÓN
   ------------------------------------------------------------- */
#location {
  position: relative;
  background-color: var(--bg-location);
  background-image: url('../assets/photos/fondo3.jpg'); /* Quitado el degradado blanco (foto limpia) */
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  
  /* CONTROL DE TAMAÑO / ALTURA DE LA SECCIÓN (Para hacerla más alargada) */
  min-height: 520px;     /* ALTURA MÍNIMA (Aumenta para alargarla más) */
  padding-top: 130px;    /* ESPACIADO SUPERIOR INTERNO */
  padding-bottom: 130px; /* ESPACIADO INFERIOR INTERNO */
  
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
}

#location .location-title {
  position: relative;    /* Permite el posicionamiento manual relativo */
  /* CONTROL MANUAL PARA EL TÍTULO */
  top: -70px;             /* AJUSTA ARRIBA (negativo) / ABAJO (positivo) */
  left: 0px;             /* AJUSTA IZQUIERDA (negativo) / DERECHA (positivo) */
  font-size: 3.2rem;     /* AJUSTA EL TAMAÑO DE LA TIPOGRAFÍA */
  z-index: 2;
  color: var(--color-primary);
  text-shadow: 0 1px 3px rgba(255, 255, 255, 0.5);
}

.location-venue {
  position: relative;    /* Permite el posicionamiento manual relativo */
  /* CONTROL MANUAL PARA EL NOMBRE DEL LUGAR */
  top: -50px;             /* AJUSTA ARRIBA / ABAJO */
  left: 0px;             /* AJUSTA IZQUIERDA / DERECHA */
  font-size: 1.45rem;    /* AJUSTA EL TAMAÑO DE LA TIPOGRAFÍA */
  font-family: var(--font-serif);
  font-weight: 700;
  color: var(--color-primary);
  margin-bottom: 5px;
  z-index: 2;
  text-shadow: 0 1px 3px rgba(255, 255, 255, 0.7);
}

.location-time {
  position: relative;    /* Permite el posicionamiento manual relativo */
  /* CONTROL MANUAL PARA EL HORARIO */
  top: -60px;             /* AJUSTA ARRIBA / ABAJO */
  left: 0px;             /* AJUSTA IZQUIERDA / DERECHA */
  font-size: 1.05rem;    /* AJUSTA EL TAMAÑO DE LA TIPOGRAFÍA */
  font-family: var(--font-serif);
  font-weight: 600;
  color: var(--color-text-dark);
  margin-bottom: 4px;
  z-index: 2;
  text-shadow: 0 1px 3px rgba(255, 255, 255, 0.7);
}

.location-address {
  position: relative;    /* Permite el posicionamiento manual relativo */
  /* CONTROL MANUAL PARA LA DIRECCIÓN */
  top: -10px;             /* AJUSTA ARRIBA / ABAJO */
  left: 0px;             /* AJUSTA IZQUIERDA / DERECHA */
  font-size: 0.95rem;    /* AJUSTA EL TAMAÑO DE LA TIPOGRAFÍA */
  font-family: var(--font-serif);
  color: var(--color-text-muted);
  margin-bottom: 25px;
  z-index: 2;
  text-shadow: 0 1px 3px rgba(255, 255, 255, 0.7);
}

.location-description {
  position: relative;    /* Permite el posicionamiento manual relativo */
  /* CONTROL MANUAL PARA LA FRASE DESCRIPTIVA */
  top: 0px;              /* AJUSTA ARRIBA / ABAJO */
  left: 0px;             /* AJUSTA IZQUIERDA / DERECHA */
  font-size: 1.15rem;    /* AJUSTA EL TAMAÑO DE LA TIPOGRAFÍA */
  font-family: var(--font-serif);
  font-style: italic;
  color: #ffffff;
  max-width: 300px;
  margin: 0 auto 25px auto;
  text-shadow: 0 2px 5px rgba(0, 0, 0, 0.65);
  z-index: 2;
}

#location .location-btn {
  position: relative;    /* Permite el posicionamiento manual relativo */
  /* CONTROL MANUAL PARA EL BOTÓN */
  top: 30px;             /* AJUSTA ARRIBA / ABAJO */
  left: 0px;             /* AJUSTA IZQUIERDA / DERECHA */
  font-size: 0.75rem;    /* AJUSTA EL TAMAÑO DE LA TIPOGRAFÍA */
  padding: 6px 12px;     /* AJUSTA EL TAMAÑO DEL BOTÓN (más chico) */
  z-index: 2;
}

.location-image-container {
  width: 100%;
  max-width: 380px;
  margin: 0 auto 30px auto;
  border-radius: 20px;
  overflow: hidden;
  box-shadow: var(--shadow-polaroid);
  border: 3px solid #ffffff;
  position: relative;
}

.location-image-container img {
  width: 100%;
  height: 240px;
  object-fit: cover;
  display: block;
}

.location-decor-flower {
  position: absolute;
  width: 90px;
  height: 90px;
  z-index: 10;
  bottom: 0;
  pointer-events: none;
}

.location-decor-bl { left: 0; }
.location-decor-br { right: 0; }

/* -------------------------------------------------------------
   MÓDULO 5: DRESS CODE
   ------------------------------------------------------------- */
#dress-code {
  position: relative;
  background-color: var(--bg-dresscode);
  background-image: url('../assets/photos/fondo4.jpg');
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  
  /* CONTROL DE TAMAÑO / ALTURA DE LA SECCIÓN (Para hacerla más alargada) */
  min-height: 520px;
  padding-top: 100px;
  padding-bottom: 100px;
  
  display: flex;
  flex-direction: column;
  align-items: center;
}

#dress-code .section-title {
  position: relative;    /* Permite posicionamiento manual */
  top: 0px;              /* AJUSTA ARRIBA / ABAJO */
  left: 0px;             /* AJUSTA IZQUIERDA / DERECHA */
  z-index: 2;
}

.dress-code-intro {
  position: relative;    /* Permite posicionamiento manual */
  top: 0px;              /* AJUSTA ARRIBA / ABAJO */
  left: 0px;             /* AJUSTA IZQUIERDA / DERECHA */
  font-family: var(--font-serif);
  font-size: 1.2rem;
  color: var(--color-text-dark);
  margin-bottom: 30px;
  z-index: 2;
}

/* Círculos de Colores Recomendados */
.color-palette-container {
  position: relative;    /* Permite posicionamiento manual */
  top: 0px;              /* AJUSTA ARRIBA / ABAJO */
  left: 0px;             /* AJUSTA IZQUIERDA / DERECHA */
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: 15px;
  margin: 25px 0 45px 0;
  z-index: 2;
}

.color-swatch-wrapper {
  display: flex;
  flex-direction: column;
  align-items: center;
  width: 55px;
}

.color-swatch {
  width: 44px;
  height: 44px;
  border-radius: 50%;
  border: 2px solid #ffffff;
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
  transition: var(--transition-smooth);
  cursor: pointer;
}

.color-swatch:hover {
  transform: scale(1.15);
  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.15);
}

.color-label {
  font-size: 0.65rem;
  font-weight: 500;
  letter-spacing: 0.5px;
  color: var(--color-text-muted);
  margin-top: 6px;
  text-transform: lowercase;
}

/* Clases específicas de colores */
.swatch-fuchsia { background-color: var(--color-fuchsia); }
.swatch-orange { background-color: var(--color-orange); }
.swatch-yellow { background-color: var(--color-yellow); }
.swatch-lilac { background-color: var(--color-lilac); }
.swatch-green { background-color: var(--color-green); }
.swatch-blue { background-color: var(--color-blue); }

/* Sección Prohibidos */
.avoid-section {
  position: relative;    /* Permite posicionamiento manual */
  top: 0px;              /* AJUSTA ARRIBA / ABAJO */
  left: 0px;             /* AJUSTA IZQUIERDA / DERECHA */
  z-index: 2;
}

.avoid-title {
  font-family: var(--font-serif);
  font-size: 1.05rem;
  font-weight: 600;
  letter-spacing: 1px;
  color: var(--color-text-dark);
  margin-bottom: 25px;
  position: relative;
}

.avoid-grid {
  display: flex;
  justify-content: center;
  gap: 20px;
  flex-wrap: wrap;
}

.avoid-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  width: 65px;
}

.avoid-color-box {
  width: 50px;
  height: 50px;
  background: none !important;
  border: none !important;
  box-shadow: none !important;
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
}

/* Remoción de las asignaciones de color de fondo anteriores y aplicación de filtros para colorear las X */
.avoid-item.red .avoid-color-box {
  background: none !important;
}
.avoid-item.red .avoid-cross-icon {
  filter: none; /* Rojo original del SVG */
}

.avoid-item.black .avoid-color-box {
  background: none !important;
}
.avoid-item.black .avoid-cross-icon {
  filter: brightness(0); /* Negro */
}

.avoid-item.white .avoid-color-box {
  background: none !important;
}
.avoid-item.white .avoid-cross-icon {
  filter: brightness(0) invert(1) drop-shadow(0px 1px 3px rgba(0, 0, 0, 0.4)); /* Blanco con sombra */
}

.avoid-item.beige .avoid-color-box {
  background: none !important;
}
.avoid-item.beige .avoid-cross-icon {
  filter: brightness(0) invert(94%) sepia(10%) saturate(1282%) hue-rotate(326deg) brightness(97%) contrast(93%); /* Beige #ebdabe */
}

.avoid-cross-icon {
  position: absolute;
  width: 45px; /* Aumentado a 45px (X más grande) */
  height: 45px;
  pointer-events: none;
}

.avoid-label {
  font-size: 0.8rem; /* Un poco más legible */
  font-weight: 600;
  letter-spacing: 0.5px;
  color: var(--color-text-dark); /* Color más oscuro para lectura clara */
  margin-top: 8px;
}

/* -------------------------------------------------------------
   MÓDULO 6: DETALLES / ALGO DE NOSOTROS
   ------------------------------------------------------------- */
#details {
  position: relative;
  background-color: var(--bg-details);
  background-image: url('../assets/photos/fondo1.jpg');
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  padding-top: 100px;
  padding-bottom: 110px;
}

#details .section-title {
  position: relative;    /* Permite posicionamiento manual */
  top: 0px;              /* AJUSTA ARRIBA / ABAJO */
  left: 0px;             /* AJUSTA IZQUIERDA / DERECHA */
  z-index: 2;
}

#details .heart-divider {
  position: relative;    /* Permite posicionamiento manual */
  top: 0px;              /* AJUSTA ARRIBA / ABAJO */
  left: 0px;             /* AJUSTA IZQUIERDA / DERECHA */
  z-index: 2;
}

/* Flores decorativas rosaderachasuperior.png en la parte superior derecha */
.details-decor-top-right {
  position: absolute;
  top: 0px;             /* MOVER ARRIBA / ABAJO: Cambia este número en px para subir o bajar la flor (ej: 10px la baja) */
  right: -25px;         /* MOVER IZQUIERDA / DERECHA: Cambia este número en px para meter o sacar la flor a los lados */
  width: 200px;         /* TAMAÑO / ANCHO: Ajusta los px para hacer la flor más grande o más pequeña */
  height: auto;         /* Proporción original (evita deformación) */
  object-fit: contain;  /* Protege el aspect ratio nativo */
  opacity: 0.95;
  pointer-events: none;
  z-index: 2;
}

/* Entrada suave desde la esquina superior derecha */
.js-enabled .details-decor-top-right.reveal-on-scroll {
  opacity: 0;
  transform: translate(30px, -30px);
  transition: opacity 1.5s cubic-bezier(0.22, 1, 0.36, 1), 
              transform 1.5s cubic-bezier(0.22, 1, 0.36, 1);
}

.details-decor-top-right.reveal-on-scroll.revealed {
  opacity: 0.95 !important;
  transform: translate(0, 0) !important;
}

/* Flores decorativas izquierda.png en la parte inferior izquierda */
.details-decor-bottom-left {
  position: absolute;
  bottom: 0px;          /* MOVER ARRIBA / ABAJO: Cambia este número en px para subir o bajar la flor (ej: 10px la sube) */
  left: -25px;          /* MOVER IZQUIERDA / DERECHA: Cambia este número en px para meter o sacar la flor a los lados */
  width: 190px;         /* TAMAÑO / ANCHO: Ajusta los px para hacer la flor más grande o más pequeña */
  height: auto;         /* Proporción original (evita deformación) */
  object-fit: contain;  /* Protege el aspect ratio nativo */
  opacity: 0.95;
  pointer-events: none;
  z-index: 2;
}

/* Entrada suave desde la esquina inferior izquierda */
.js-enabled .details-decor-bottom-left.reveal-on-scroll {
  opacity: 0;
  transform: translate(-30px, 30px);
  transition: opacity 1.5s cubic-bezier(0.22, 1, 0.36, 1), 
              transform 1.5s cubic-bezier(0.22, 1, 0.36, 1);
}

.details-decor-bottom-left.reveal-on-scroll.revealed {
  opacity: 0.95 !important;
  transform: translate(0, 0) !important;
}

.details-decor-side {
  position: absolute;
  right: 0;
  top: 30%;
  width: 60px;
  height: 120px;
  opacity: 0.85;
  pointer-events: none;
}

/* --- LÍNEA DE TIEMPO (TIMELINE) --- */
.timeline-container {
  position: relative;
  max-width: 320px;
  margin: 40px auto;
  padding-left: 24px;   /* Deja espacio para la línea y los badges */
  box-sizing: border-box;
  text-align: left;
  z-index: 2;
}

/* Línea vertical central/lateral */
.timeline-line {
  position: absolute;
  top: 10px;
  bottom: 10px;
  left: 10px;
  width: 2px;
  background: linear-gradient(to bottom, var(--color-primary), var(--color-accent-gold));
  opacity: 0.3;
}

/* Item individual */
.timeline-item {
  position: relative;
  margin-bottom: 25px;
  display: flex;
  align-items: flex-start;
}

.timeline-item:last-child {
  margin-bottom: 0;
}

/* Insignia / Círculo con Emoji (Sin contorno dorado, emojis flotando libres) */
.timeline-badge {
  position: absolute;
  left: -24px;          /* Centrado sobre la línea */
  width: 28px;
  height: 28px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.4rem;    /* Emojis ligeramente más grandes */
  background: transparent;
  border: none;
  box-shadow: none;
  z-index: 3;
}

/* Caja de contenido */
.timeline-content {
  background: rgba(255, 255, 255, 0.6);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  padding: 14px 18px;
  border-radius: 12px;
  width: 100%;
  box-shadow: 0 4px 10px rgba(0,0,0,0.03);
  box-sizing: border-box;
  border: 1px solid rgba(138, 35, 135, 0.05);
}

.timeline-time {
  font-family: var(--font-serif);
  font-size: 0.85rem;
  font-weight: 700;
  color: var(--color-primary);
  text-transform: uppercase;
  letter-spacing: 0.5px;
}

.timeline-title {
  font-family: var(--font-serif);
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--color-text-dark);
  margin-top: 2px;
}

.timeline-desc {
  font-family: var(--font-serif);
  font-size: 0.95rem;
  color: var(--color-text-dark);
  margin-top: 4px;
  font-weight: 500;
}

/* Botón pequeño dentro del evento */
.timeline-btn {
  display: inline-flex;
  align-items: center;
  margin-top: 8px;
  padding: 5px 12px;
  font-family: var(--font-sans);
  font-size: 0.75rem;
  font-weight: 700;
  color: #ffffff;
  background: var(--color-primary);
  border-radius: 6px;
  text-decoration: none;
  transition: var(--transition-smooth);
}

.timeline-btn:hover {
  background: var(--color-accent-gold);
  transform: translateY(-1px);
}

/* Contenedor del Sello Pelota de Tenis (Para posicionamiento manual) */
.decor-tennis-ball-details-container {
  position: absolute;
  bottom: 20px;          /* AJUSTA ARRIBA / ABAJO (valores más altos suben, negativos bajan) */
  right: 20px;           /* AJUSTA IZQUIERDA / DERECHA (valores más altos meten, negativos sacan) */
  width: 90px;           /* MODIFICA EL TAMAÑO / ANCHO AQUÍ (Ajusta la escala global de la pelota) */
  z-index: 3;
}

/* Pelota de Tenis que gira (Sin deformación) */
.decor-tennis-ball-details {
  width: 100%;           /* Toma el 100% del ancho del contenedor */
  height: auto;          /* MANTIENE LA PROPORCIÓN ORIGINAL (evita deformación) */
  object-fit: contain;   /* Protege el aspect ratio nativo */
  display: block;
  animation: spinDisk 9s linear infinite; /* Rueda constantemente sobre su propio eje */
  transition: transform 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
}

.decor-tennis-ball-details:hover {
  /* Escala ligeramente al posarse encima sin interrumpir el giro continuo */
  transform: scale(1.1);
}

/* -------------------------------------------------------------
   MÓDULO 7: CONFIRMACIÓN
   ------------------------------------------------------------- */
#confirmation {
  position: relative;
  background-color: var(--bg-confirmation);
  background-image: url('../assets/photos/fondo1.jpg');
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  
  /* CONTROL DE TAMAÑO / ALTURA DE LA SECCIÓN (Alarga la sección) */
  min-height: 520px;
  padding-top: 100px;
  padding-bottom: 100px;
  
  display: flex;
  flex-direction: column;
  align-items: center;
}

#confirmation .section-title {
  position: relative;    /* Permite posicionamiento manual */
  top: 0px;              /* AJUSTA ARRIBA / ABAJO */
  left: 0px;             /* AJUSTA IZQUIERDA / DERECHA */
  z-index: 2;
}

.confirmation-intro {
  position: relative;    /* Permite posicionamiento manual */
  top: 0px;              /* AJUSTA ARRIBA / ABAJO */
  left: 0px;             /* AJUSTA IZQUIERDA / DERECHA */
  font-family: var(--font-serif);
  font-size: 1.2rem;
  color: var(--color-text-dark);
  max-width: 320px;
  margin: 0 auto 30px auto;
  z-index: 2;
}

.confirmation-flex-container {
  position: relative;    /* Permite posicionamiento manual */
  top: 0px;              /* AJUSTA ARRIBA / ABAJO */
  left: 0px;             /* AJUSTA IZQUIERDA / DERECHA */
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 30px;
  margin-bottom: 50px;
  z-index: 2;
  width: 100%;
}

/* Contenedor del Formulario RSVP */
.rsvp-form-container {
  width: 100%;
  max-width: 330px;      /* Ligeramente más ancho para mejor balance */
  background-color: rgba(255, 255, 255, 0.93);
  padding: 26px 24px;
  border-radius: 16px;
  border: 1.5px solid rgba(138, 35, 135, 0.15);
  box-shadow: 0 10px 30px rgba(138, 35, 135, 0.08);
  box-sizing: border-box;
  z-index: 2;
}

/* Grupo de selección Sí/No en botones horizontales */
.rsvp-status-toggle {
  display: flex;
  gap: 12px;
  margin-bottom: 20px;
  width: 100%;
}

.toggle-btn {
  flex: 1;
  cursor: pointer;
  display: block;
}

.toggle-btn input[type="radio"] {
  position: absolute;
  opacity: 0;
  pointer-events: none;
}

.toggle-btn span {
  display: block;
  text-align: center;
  padding: 12px 10px;
  background-color: #ffffff;
  color: var(--color-text-dark);
  font-family: var(--font-sans);
  font-size: 0.95rem;
  font-weight: 700;
  border: 1.5px solid rgba(138, 35, 135, 0.2);
  border-radius: 8px;
  transition: var(--transition-smooth);
}

.toggle-btn input[type="radio"]:checked + span {
  background: linear-gradient(135deg, var(--color-primary), var(--color-primary-light));
  color: #ffffff;
  border-color: var(--color-primary);
  box-shadow: 0 4px 12px rgba(138, 35, 135, 0.18);
}

/* Campos de Formulario Clásicos con Label Superior */
.form-group-block {
  margin-bottom: 16px;
  text-align: left;
  width: 100%;
}

.form-group-block:last-of-type {
  margin-bottom: 20px;
}

.form-field-label {
  display: block;
  font-family: var(--font-serif);
  font-size: 0.9rem;
  color: var(--color-text-dark);
  font-weight: 600;
  margin-bottom: 6px;
}

.form-control-styled {
  width: 100%;
  padding: 12px 14px;
  font-family: var(--font-serif);
  font-size: 0.95rem;
  color: var(--color-text-dark);
  background-color: #ffffff;
  border: 1.5px solid rgba(138, 35, 135, 0.2);
  border-radius: 8px;
  outline: none;
  box-sizing: border-box;
  transition: var(--transition-smooth);
}

.form-control-styled::placeholder {
  color: #a3a3a3;
}

.form-control-styled:focus {
  border-color: var(--color-primary);
  box-shadow: 0 0 6px rgba(138, 35, 135, 0.18);
}

/* Dropdown estilizado */
.select-wrapper-styled {
  position: relative;
  width: 100%;
}

select.form-control-styled {
  appearance: none;
  background-image: url("data:image/svg+xml;utf8,<svg fill='%238a2387' height='24' viewBox='0 0 24 24' width='24' xmlns='http://www.w3.org/2000/svg'><path d='M7 10l5 5 5-5z'/></svg>");
  background-repeat: no-repeat;
  background-position: right 10px center;
  background-size: 18px;
  padding-right: 32px;
  cursor: pointer;
}

.w-100-btn {
  width: 100% !important;
  box-sizing: border-box;
  text-align: center;
  justify-content: center;
  cursor: pointer;
  border: none;
}

/* Flores decorativas arriba.png en la parte superior izquierda de confirmación */
.confirmation-decor-top-left {
  position: absolute;
  top: 0px;             /* MOVER ARRIBA / ABAJO: Cambia este número en px para subir o bajar la flor (ej: 10px la baja) */
  left: -25px;          /* MOVER IZQUIERDA / DERECHA: Cambia este número en px para meter o sacar la flor a los lados */
  width: 310px;         /* TAMAÑO / ANCHO: Ajusta los px para hacer la flor más grande o más pequeña */
  height: auto;         /* Proporción original (evita deformación) */
  object-fit: contain;  /* Protege el aspect ratio nativo */
  opacity: 0.95;
  pointer-events: none;
  z-index: 2;
}

/* Entrada suave desde la esquina superior izquierda */
.js-enabled .confirmation-decor-top-left.reveal-on-scroll {
  opacity: 0;
  transform: translate(-30px, -30px);
  transition: opacity 1.5s cubic-bezier(0.22, 1, 0.36, 1), 
              transform 1.5s cubic-bezier(0.22, 1, 0.36, 1);
}

.confirmation-decor-top-left.reveal-on-scroll.revealed {
  opacity: 0.95 !important;
  transform: translate(0, 0) !important;
}

/* Flores decorativas abajo.png en la parte inferior derecha de confirmación */
.confirmation-decor-bottom-right {
  position: absolute;
  bottom: 0px;          /* MOVER ARRIBA / ABAJO: Cambia este número en px para subir o bajar la flor (ej: 10px la sube) */
  right: -25px;         /* MOVER IZQUIERDA / DERECHA: Cambia este número en px para meter o sacar la flor a los lados */
  width: 310px;         /* TAMAÑO / ANCHO: Ajusta los px para hacer la flor más grande o más pequeña */
  height: auto;         /* Proporción original (evita deformación) */
  object-fit: contain;  /* Protege el aspect ratio nativo */
  opacity: 0.95;
  pointer-events: none;
  z-index: 2;
}

/* Entrada suave desde la esquina inferior derecha */
.js-enabled .confirmation-decor-bottom-right.reveal-on-scroll {
  opacity: 0;
  transform: translate(30px, 30px);
  transition: opacity 1.5s cubic-bezier(0.22, 1, 0.36, 1), 
              transform 1.5s cubic-bezier(0.22, 1, 0.36, 1);
}

.confirmation-decor-bottom-right.reveal-on-scroll.revealed {
  opacity: 0.95 !important;
  transform: translate(0, 0) !important;
}

.confirmation-photo {
  width: 100%;
  max-width: 320px;
  border-radius: 15px;
  overflow: hidden;
  box-shadow: var(--shadow-polaroid);
  border: 3px solid #ffffff;
}

.confirmation-photo img {
  width: 100%;
  height: 220px;
  object-fit: cover;
  display: block;
}

/* Botón WhatsApp */
.btn-whatsapp {
  background: linear-gradient(135deg, #25d366, #128c7e);
  box-shadow: 0 4px 10px rgba(37, 211, 102, 0.2);
}

.btn-whatsapp:hover {
  transform: scale(1.05) translateY(-2.5px);
  box-shadow: 0 8px 20px rgba(37, 211, 102, 0.4);
  filter: brightness(1.05);
}

/* Footer de la Invitación */
.invitation-footer {
  border-top: 1px solid rgba(138, 35, 135, 0.15);
  padding-top: 30px;
  margin-top: 40px;
}

.footer-names {
  font-family: var(--font-serif);
  font-size: 0.8rem;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: var(--color-primary);
  font-weight: 600;
}

.footer-heart {
  display: inline-block;
  width: 12px;
  height: 12px;
  color: var(--color-heart-pink);
  margin: 0 5px;
  vertical-align: middle;
}

/* -------------------------------------------------------------
   MÓDULO ADICIONAL: INVITACIÓN AL JUEGO
   ------------------------------------------------------------- */
#game-promo {
  position: relative;
  background-color: var(--bg-story);
  background-image: url('../assets/photos/fondo6.jpg');
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  border-top: 1px solid rgba(138, 35, 135, 0.1);
  padding: 80px 30px;
  display: flex;
  flex-direction: column;
  align-items: center;
  overflow: hidden;
  
  /* CONTROL DE TAMAÑO / ALTURA DE LA SECCIÓN (Alarga la sección) */
  min-height: 380px;
  justify-content: center;
}

#game-promo .section-tag {
  position: relative;    /* Permite posicionamiento manual */
  top: 0px;              /* AJUSTA ARRIBA / ABAJO */
  left: 0px;             /* AJUSTA IZQUIERDA / DERECHA */
  z-index: 2;
}

#game-promo .section-title {
  position: relative;    /* Permite posicionamiento manual */
  top: 0px;              /* AJUSTA ARRIBA / ABAJO */
  left: 0px;             /* AJUSTA IZQUIERDA / DERECHA */
  z-index: 2;
  margin-bottom: 15px;
}

.game-promo-desc {
  position: relative;    /* Permite posicionamiento manual */
  top: 0px;              /* AJUSTA ARRIBA / ABAJO */
  left: 0px;             /* AJUSTA IZQUIERDA / DERECHA */
  font-family: var(--font-serif);
  font-size: 1.2rem;
  color: var(--color-primary);
  margin: 0 auto 25px auto;
  max-width: 330px;
  line-height: 1.5;
  text-shadow: 0 1px 2px rgba(255, 255, 255, 0.5); /* Suave brillo de lectura */
  z-index: 2;
}

#game-promo .btn-premium {
  position: relative;    /* Permite posicionamiento manual */
  top: 0px;              /* AJUSTA ARRIBA / ABAJO */
  left: 0px;             /* AJUSTA IZQUIERDA / DERECHA */
  z-index: 2;
}

/* Contenedor wrapper para el avatar y sus decoraciones */
.game-pixel-avatar-wrapper {
  position: relative;
  top: 0px;              /* AJUSTA ARRIBA / ABAJO: Cambia en px para subir o bajar el avatar */
  left: 0px;             /* AJUSTA IZQUIERDA / DERECHA: Cambia en px para centrar horizontalmente */
  width: 180px;          /* Más grande como se solicitó */
  height: 180px;
  margin: 15px auto 25px auto;
  display: flex;
  justify-content: center;
  align-items: center;
  animation: bounceSprite 2s ease-in-out infinite alternate; /* Rebote vertical suave en bloque */
  z-index: 2;
}

/* Personajes Pixel Art Animados (Sin contorno circular ni sombras) */
.game-pixel-couple {
  width: 145px;          /* TAMAÑO / ANCHO: Ajusta los px para cambiar el tamaño de los novios */
  height: auto;          /* Proporción original (evita deformación) */
  object-fit: contain;   /* Protege el aspect ratio nativo */
  image-rendering: pixelated; /* Proporciona mayor nitidez retro pixel art */
  z-index: 2;
}

/* Pelotita de tenis flotante en la esquina */
.game-pixel-ball-decor {
  position: absolute;
  top: 5px;
  right: 5px;
  width: 34px;           /* Tamaño de la pelotita */
  height: auto;          /* Evita deformación (proporción natural) */
  object-fit: contain;   /* Protege el aspect ratio nativo */
  z-index: 3;
  animation: floatBall 3s ease-in-out infinite alternate, spinDisk 7s linear infinite;
  pointer-events: none;
}

/* Destellos decorativos pixelados */
.game-pixel-sparkle {
  position: absolute;
  color: var(--color-accent-gold);
  font-size: 1.2rem;
  pointer-events: none;
  z-index: 1;
  animation: pulseSparkle 2s ease-in-out infinite alternate;
}
.sparkle-1 {
  top: 25px;
  left: 10px;
  animation-delay: 0.2s;
}
.sparkle-2 {
  bottom: 35px;
  right: 10px;
  animation-delay: 0.8s;
}

/* Botón con efecto de pulso retro y brillo */
.btn-pulse-effect {
  font-size: 1.15rem !important;
  font-weight: 700 !important;
  letter-spacing: 1.5px !important;
  padding: 16px 45px !important; /* Más presencia y tamaño */
  box-shadow: 0 6px 18px rgba(138, 35, 135, 0.4), 0 0 0 0px rgba(138, 35, 135, 0.3);
  animation: btnPulse 2s infinite ease-in-out;
  transition: var(--transition-smooth);
}

.btn-pulse-effect:hover {
  transform: scale(1.05) translateY(-2px);
  box-shadow: 0 8px 24px rgba(138, 35, 135, 0.5);
}

/* Subtexto debajo del botón */
.game-promo-subtext {
  font-family: var(--font-sans);
  font-size: 0.8rem;
  font-weight: 600;
  color: #767676;
  margin-top: 15px;
  letter-spacing: 0.5px;
  text-align: center;
  z-index: 2;
}

/* KEYFRAMES PARA LAS ANIMACIONES */
@keyframes bounceSprite {
  0% {
    transform: translateY(0) scale(1);
  }
  100% {
    transform: translateY(-12px) scale(1.03);
  }
}

@keyframes floatBall {
  0% {
    transform: translateY(0);
  }
  100% {
    transform: translateY(-10px);
  }
}

@keyframes pulseSparkle {
  0% {
    opacity: 0.3;
    transform: scale(0.8) rotate(0deg);
  }
  100% {
    opacity: 1;
    transform: scale(1.3) rotate(20deg);
  }
}

@keyframes btnPulse {
  0% {
    box-shadow: 0 6px 18px rgba(138, 35, 135, 0.45), 0 0 0 0px rgba(138, 35, 135, 0.4);
  }
  70% {
    box-shadow: 0 8px 22px rgba(138, 35, 135, 0.35), 0 0 0 10px rgba(138, 35, 135, 0);
  }
  100% {
    box-shadow: 0 6px 18px rgba(138, 35, 135, 0.45), 0 0 0 0px rgba(138, 35, 135, 0);
  }
}


/* -------------------------------------------------------------
   SISTEMA DE MÚSICA - BOTÓN FLOTANTE
   ------------------------------------------------------------- */
.music-player-fab {
  position: fixed;
  bottom: 25px;
  right: 25px; /* Reposicionado a la derecha */
  width: 50px;
  height: 50px;
  border-radius: 50%;
  background-color: #ffffff;
  box-shadow: 0 4px 15px rgba(0, 0, 0, 0.15);
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  z-index: 999;
  transition: var(--transition-smooth);
  border: 1px solid rgba(138, 35, 135, 0.15);
}

.music-player-fab:hover {
  transform: scale(1.1);
  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.25);
}

/* -------------------------------------------------------------
   BOTÓN VOLVER ARRIBA (LADO IZQUIERDO INFERIOR)
   ------------------------------------------------------------- */
.back-to-top-fab {
  position: fixed;
  bottom: 25px;
  left: 25px; /* Posicionado a la izquierda */
  width: 50px;
  height: 50px;
  border-radius: 50%;
  background-color: #ffffff;
  box-shadow: 0 4px 15px rgba(0, 0, 0, 0.15);
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  z-index: 999;
  border: 1px solid rgba(138, 35, 135, 0.15);
  color: var(--color-primary);
  opacity: 0;
  pointer-events: none;
  transform: scale(0.8);
  transition: var(--transition-smooth);
}

.back-to-top-fab.visible {
  opacity: 1;
  pointer-events: auto;
  transform: scale(1);
}

.back-to-top-fab:hover {
  transform: scale(1.1);
  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.25);
  color: var(--color-accent-gold);
}

.back-to-top-icon {
  width: 24px;
  height: 24px;
}

.music-icon-svg {
  width: 24px;
  height: 24px;
  color: var(--color-primary);
  transition: var(--transition-smooth);
}

/* Animación de rotación del disco cuando suena */
.music-playing .music-icon-svg {
  animation: spin 3s linear infinite;
}

@keyframes spin {
  100% {
    transform: rotate(360deg);
  }
}

/* Ondas musicales de reproducción */
.music-waves {
  position: absolute;
  width: 100%;
  height: 100%;
  border-radius: 50%;
  border: 1px solid rgba(138, 35, 135, 0.3);
  pointer-events: none;
  opacity: 0;
  transform: scale(1);
}

.music-playing .music-waves-1 {
  animation: pulse-wave 2s infinite linear;
}

.music-playing .music-waves-2 {
  animation: pulse-wave 2s infinite linear 1s;
}

@keyframes pulse-wave {
  0% {
    transform: scale(1);
    opacity: 0.6;
  }
  100% {
    transform: scale(1.6);
    opacity: 0;
  }
}

/* -------------------------------------------------------------
   MÓDULO ADICIONAL: GALERÍA DE FOTOS
   ------------------------------------------------------------- */
#gallery {
  background-color: var(--bg-dresscode);
  background-image: url('../assets/photos/fondo5.jpg');
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  padding: 85px 24px;
}

.gallery-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 12px;
  max-width: 100%;
}

.gallery-item {
  aspect-ratio: 1 / 1;
  border-radius: 12px;
  overflow: hidden;
  border: 3px solid #ffffff;
  box-shadow: 0 4px 10px rgba(0, 0, 0, 0.05);
  cursor: pointer;
  transition: var(--transition-smooth);
}

.gallery-item img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: var(--transition-smooth);
}

.gallery-item:hover {
  transform: translateY(-3px) scale(1.02);
  box-shadow: 0 8px 20px rgba(138, 35, 135, 0.15);
}

.gallery-item:hover img {
  transform: scale(1.05);
}

@media screen and (max-width: 480px) {
  .gallery-grid {
    grid-template-columns: repeat(2, 1fr);
    gap: 8px;
  }
  .gallery-item:nth-child(9) {
    grid-column: span 2;
    aspect-ratio: 2 / 1;
  }
}

/* -------------------------------------------------------------
   PIE DE PÁGINA GLOBAL (FOOTER MAIN)
   ------------------------------------------------------------- */
#main-footer {
  background-color: var(--color-primary); /* Fondo morado premium */
  color: #ffffff;
  padding: 60px 30px;
  text-align: center;
  position: relative;
}

#main-footer::before {
  content: "";
  position: absolute;
  top: 0;
  left: 10%;
  right: 10%;
  height: 1px;
  background: linear-gradient(to right, transparent, var(--color-accent-gold), transparent);
}

#main-footer .footer-names {
  font-family: 'Alex Brush', cursive;
  font-size: 3.5rem;
  font-weight: normal;
  color: var(--color-accent-gold);
  text-transform: none;
  letter-spacing: normal;
}

#main-footer .footer-date {
  font-family: var(--font-sans);
  font-size: 0.75rem;
  font-weight: 500;
  letter-spacing: 3px;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.7);
  margin-top: 6px;
}

.footer-socials {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 15px;
  margin: 30px 0;
}

.social-icon {
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background-color: rgba(255, 255, 255, 0.08);
  border: 1px solid rgba(255, 255, 255, 0.15);
  display: flex;
  align-items: center;
  justify-content: center;
  color: #ffffff;
  transition: var(--transition-smooth);
}

.social-icon img {
  width: 20px;
  height: 20px;
  filter: brightness(0) invert(1); /* Convierte los iconos SVG en blanco */
  transition: var(--transition-smooth);
}

.social-icon:hover {
  background-color: var(--color-accent-gold);
  border-color: var(--color-accent-gold);
  transform: translateY(-3px);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
}

.social-icon:hover img {
  filter: brightness(0) invert(1); /* Mantiene el icono blanco sobre el fondo dorado */
}

.footer-credit {
  font-family: var(--font-sans);
  font-size: 0.7rem;
  letter-spacing: 1px;
  color: rgba(255, 255, 255, 0.5);
  margin-top: 25px;
  border-top: 1px solid rgba(255, 255, 255, 0.1);
  padding-top: 20px;
}

.footer-credit a {
  color: var(--color-accent-gold);
  text-decoration: none;
  font-weight: 600;
  transition: var(--transition-smooth);
}

.footer-credit a:hover {
  color: #ffffff;
}

/* -------------------------------------------------------------
   MODAL LIGHTBOX (Galería)
   ------------------------------------------------------------- */
.lightbox-modal {
  display: none; /* Oculto por defecto */
  position: fixed;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  background-color: rgba(15, 10, 20, 0.95);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  z-index: 10000;
  align-items: center;
  justify-content: center;
  opacity: 0;
  transition: opacity 0.3s ease;
}

.lightbox-modal.active {
  display: flex;
  opacity: 1;
}

.lightbox-content {
  max-width: 90%;
  max-height: 80%;
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5);
  border-radius: 12px;
  overflow: hidden;
  border: 4px solid #ffffff;
  transform: scale(0.9);
  transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
}

.lightbox-modal.active .lightbox-content {
  transform: scale(1);
}

.lightbox-content img {
  max-width: 100%;
  max-height: 75vh;
  object-fit: contain;
  display: block;
}

/* Botones del Lightbox */
.lightbox-close {
  position: absolute;
  top: 20px;
  right: 25px;
  color: rgba(255, 255, 255, 0.7);
  font-size: 40px;
  font-weight: 300;
  cursor: pointer;
  transition: var(--transition-smooth);
  line-height: 1;
  z-index: 10100;
}

.lightbox-close:hover {
  color: #ffffff;
  transform: rotate(90deg);
}

.lightbox-btn {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  background: rgba(255, 255, 255, 0.08);
  border: 1px solid rgba(255, 255, 255, 0.15);
  color: #ffffff;
  font-size: 24px;
  width: 50px;
  height: 50px;
  border-radius: 50%;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: var(--transition-smooth);
  z-index: 10100;
}

.lightbox-btn:hover {
  background-color: #ffffff;
  color: var(--color-primary);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
}

.lightbox-prev {
  left: 20px;
}

.lightbox-next {
  right: 20px;
}

@media screen and (max-width: 768px) {
  .lightbox-btn {
    width: 44px;
    height: 44px;
    font-size: 18px;
  }
  .lightbox-prev { left: 10px; }
  .lightbox-next { right: 10px; }
}

/* --- BLOQUEO DE INVITACIÓN (PANTALLA DE PORTADA) --- */
.invitation-locked,
.invitation-locked body {
  overflow: hidden !important;
  height: 100vh !important;
  width: 100vw !important;
}

.invitation-locked .invitation-wrapper > section:not(#hero),
.invitation-locked .invitation-wrapper > footer,
.invitation-locked #music-fab {
  display: none !important;
}

/* Botón para desbloquear la invitación en el Hero */
.hero-unlock-btn {
  position: relative;
  top: -45px;
  left: 0px;
  opacity: 0;
  animation: fadeInGeneric 1.5s ease 1.2s forwards;
  z-index: 10;
  cursor: pointer;
  border: none;
}
