:root {
  /* Neutros */
  --clr-bg-main: #F7F4F2;      /* marfil */
  --clr-text-main: #2B1E24;    /* casi negro cálido */

  /* Paleta boda */
  --clr-wine: #6A1F3B;         /* vino profundo */
  --clr-rose: #C88AA5;         /* rosa empolvado */
  --clr-plum: #8E2A5A;         /* ciruela */
  --clr-olive: #6E7F4E;        /* verde olivo */

  /* Estados */
  --clr-accent: var(--clr-wine);
  --clr-soft: var(--clr-rose);
  
  /* Tipografías */
  --font-heading: "Playfair Display", serif;
  --font-body: "Montserrat", sans-serif;
}

:root{
  --max: 1100px;
  --pad: 1.25rem;
}

html, body {
  width: 100%;
  max-width: 100%;
  overflow-x: hidden;
}

h1, h2, h3,
.inv-004__title,
.her-002__title,
.pal-007__title,
.det-009__title,
.rsv-015__title {
  font-family: var(--font-heading);
  font-weight: 700;
  letter-spacing: .015em;
  color: var(--clr-wine); /* opcional, color principal */
}
body,
p,
span,
label,
blockquote,
.rsv-015__subtitle,
.det-009__subtitle,
.msg-005__quote p {
  font-family: var(--font-body);
  font-weight: 400;
  color: var(--clr-text-main); /* tono neutro */
}
small,
.help-text,
.meta-text {
  font-family: var(--font-body);
  font-size: .95rem;
  font-weight: 300;
  opacity: .8;
}
h1 { font-size: 3rem; }
h2 { font-size: 2.4rem; }
h3 { font-size: 1.8rem; }
p { font-size: 1rem; }
small { font-size: .9rem; }
.gal-016 p{
    font-size:1rem;
}

/* =========================
   POPUP INTRO (SOBRE)
   ========================= */
:root{
  --intro-bg: rgba(8, 8, 10, .72);
  --intro-card: rgba(255,255,255,.06);
  --intro-border: rgba(255,255,255,.14);
  --intro-shadow: 0 30px 80px rgba(0,0,0,.45);
  --intro-radius: 22px;
}

body.is-locked { overflow: hidden; }

.intro-overlay{
  position: fixed;
  inset: 0;
  z-index: 9999;
  display: grid;
  place-items: center;
  background: var(--intro-bg);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  opacity: 1;
  transition: opacity .35s ease;
}

.intro-card{
  width: min(99vh, 99vw);
  border-radius: var(--intro-radius);
  background: var(--intro-card);
  border: 1px solid var(--intro-border);
  box-shadow: var(--intro-shadow);
  overflow: hidden;
  transform: translateY(0);
}

.intro-media{
  position: relative;
  aspect-ratio: 9 / 16;
  overflow: hidden;
}

.intro-img{
  width: 100%;
  height: 100%;
  object-fit: cover;
  transform: translateY(0);
  will-change: transform, filter, opacity;
  filter: saturate(1.04) contrast(1.03);
}

/* Brillito elegante, tipo “premium” */
.intro-shine{
  pointer-events: none;
  position: absolute;
  inset: -40% -40%;
  background: radial-gradient(circle at 30% 10%, rgba(255,255,255,.35), rgba(255,255,255,0) 45%),
              linear-gradient(120deg, rgba(255,255,255,.18), rgba(255,255,255,0) 55%);
  transform: rotate(8deg);
  mix-blend-mode: screen;
  opacity: .55;
}

.intro-actions{
  display: grid;
  gap: 10px;
  padding: 16px 16px 18px;
  background: linear-gradient(to bottom, rgba(0,0,0,.00), rgba(0,0,0,.20));
}

.intro-btn{
  appearance: none;
  border: 0;
  border-radius: 999px;
  padding: 14px 16px;
  font-weight: 700;
  letter-spacing: .2px;
  cursor: pointer;
  color: #1b1b1b;
  background: linear-gradient(180deg, #ffffff, #f3f1ee);
  box-shadow: 0 10px 24px rgba(0,0,0,.25);
  transform: translateY(0);
  transition: transform .18s ease, filter .18s ease;
}
.intro-btn:hover{ transform: translateY(-1px); filter: brightness(1.01); }
.intro-btn:active{ transform: translateY(1px) scale(.99); }

.intro-hint{
  margin: 0;
  text-align: center;
  font-size: .92rem;
  opacity: .9;
  color: rgba(255,255,255,.9);
}

/* === ANIMACIÓN PRO AL ABRIR === */
.intro-overlay.is-opening .intro-img{
  animation: introSlideUp 900ms cubic-bezier(.22,1,.18,1) forwards;
}
.intro-overlay.is-opening .intro-card{
  animation: introCardLift 900ms cubic-bezier(.22,1,.18,1) forwards;
}
.intro-overlay.is-opening{
  animation: introFadeOut 760ms ease forwards;
  animation-delay: 220ms;
}

@keyframes introSlideUp{
  0%   { transform: translateY(0); filter: blur(0); opacity: 1; }
  60%  { filter: blur(.3px); }
  100% { transform: translateY(-115%); filter: blur(1.2px); opacity: .98; }
}

@keyframes introCardLift{
  0%   { transform: translateY(0) scale(1); }
  55%  { transform: translateY(-6px) scale(1.01); }
  100% { transform: translateY(-10px) scale(1.01); }
}

@keyframes introFadeOut{
  to { opacity: 0; }
}

/* Accesibilidad */
@media (prefers-reduced-motion: reduce){
  .intro-overlay, .intro-btn, .intro-img, .intro-card{
    transition: none !important;
    animation: none !important;
  }
}
/* Fondo inferior suave para que el botón se lea siempre */
.intro-media::after{
  content:"";
  position:absolute;
  inset: 0;
  pointer-events:none;
  background: radial-gradient(60% 40% at 50% 60%, rgba(0,0,0,.18), rgba(0,0,0,0) 70%);
  opacity: .85;
}
/* Botón premium flotante */
.intro-btn--on-image{
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  z-index: 5;

  /* ✅ “2/4” (mitad superior). Ajusta fino aquí */
  top: 33%;

  /* ✅ menos ancho, responsive */
  width: clamp(170px, 44%, 230px);

  padding: 12px 16px;
  border-radius: 999px;
  box-shadow:
    0 12px 28px rgba(0,0,0,.35),
    inset 0 1px 0 rgba(255,255,255,.55);
    font-family: var(--font-body);
}

/* micro-animación elegante */
.intro-btn--on-image:hover{
  transform: translateX(-50%) translateY(-1px);
}
.intro-btn--on-image:active{
  transform: translateX(-50%) translateY(1px) scale(.99);
}

/* Hint sin bloque grande debajo */
.intro-actions--hintOnly{
  padding: 10px 16px 14px;
  background: linear-gradient(to bottom, rgba(0,0,0,.06), rgba(0,0,0,.22));
}
.intro-overlay.is-opening .intro-btn--on-image{
  animation: introBtnOut 700ms cubic-bezier(.22,1,.18,1) forwards;
}
@keyframes introBtnOut{
  to { transform: translateX(-50%) translateY(-12px) scale(.98); opacity: 0; }
}

/* =========================
   ORNAMENTO SUPERIOR – cue-003
   ========================= */

.cue-003{
  position: relative;
  overflow: hidden; /* evita scrolls raros */
}

.cue-003__ornament{
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  width: 100%;
  max-width: 2200px; /* controla exceso en pantallas grandes */
  pointer-events: none;
  z-index: 0;
}

.cue-003__ornament--top{
  top: 0;
}

.cue-003__ornament img{
  display: block;
  width: 100%;
  height: auto;
}

/* Aseguramos que el contenido quede encima */
.cue-003__wrap{
  position: relative;
  z-index: 1;
  padding-top: clamp(3.5rem, 8vw, 6rem); 
}
@media (min-width: 1024px){
  .cue-003__wrap{
    padding-top: 11rem; /* ajusta entre 3.5rem – 5rem */
  }
}

.cue-003{
  background: var(--clr-bg-main);
  text-align: center;
  padding: 5rem 0;
}

.cue-003__title{
  color: var(--clr-wine);
  margin: 5px 0 5px 0;
}

.cue-003__timer{
  display: flex;
  align-items: center;
  justify-content: center;
  gap: .9rem;
  flex-wrap: wrap;
}

.cue-003__item{
  display: flex;
  flex-direction: column;
  align-items: center;
  min-width: 68px;
}

.cue-003__number{
  font-family: var(--font-heading);
  font-size: clamp(2.4rem, 6vw, 3.4rem);
  font-weight: 700;
  line-height: 1;
}

.cue-003__label{
  margin-top: .35rem;
  font-size: .85rem;
  letter-spacing: .12em;
  text-transform: uppercase;
  opacity: .75;
}

.cue-003__sep{
  font-family: var(--font-heading);
  font-size: 2.2rem;
  line-height: 1;
  opacity: .4;
  margin: 0 .15rem;
  color: rgba(106,31,59,.35);
}

.cue-003__hint{
  margin-top: 1.4rem;
  font-size: .95rem;
  opacity: .85;
  letter-spacing: 8px;
}

/* Responsive */
@media (max-width: 520px){
  .cue-003__sep{
    display:none;
  }
  .cue-003__timer{
    gap: .2rem;
  }
  .cue-003 p{
      font-size: 19px !important;
  }
  .cue-003__number{
      font-weight: 500;
  }
}


.her-002 {
  background: linear-gradient(
    rgba(142,42,90,.55),
    rgba(106,31,59,.75)
  );
  color: var(--clr-bg-main);
}
.cue-003 {
  background: var(--clr-bg-main);
}

.cue-003__number {
  color: var(--clr-wine);
}
.inv-004,
.msg-005 {
  background: var(--clr-rose);
  color: var(--clr-wine);
}
.his-006__line {
  background: var(--clr-olive);
}

.his-006__date {
  color: var(--clr-wine);
}
.pal-007 {
  background: var(--clr-plum);
  color: var(--clr-bg-main);
}
.snf-008 {
  background: var(--clr-bg-main);
}

.snf-008__dot--active {
  background: var(--clr-rose);
}
/* CTA deslizar - Nuestros momentos */
.snf-stack__cta{
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 10vh;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  gap: 6px;
background: linear-gradient(to top, rgba(209, 62, 117, .95), rgba(209, 62, 117, .80), rgba(209, 62, 117, 0));
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  z-index: 6;
  pointer-events: none; /* no interfiere con swipe */
}

.snf-stack__icon{
  width: 44px;
  height: 44px;
  fill: #e5e3d7;
  opacity: .95;
}

.snf-stack__text{
  margin: 0;
  font-size: .95rem;
  font-weight: 600;
  letter-spacing: .3px;
  color: #e5e3d7;
}
.snf-stack__cta{
  bottom: -150px; /* baja el CTA 20px */
}
.det-009,
.cer-010,
.rec-011 {
  background: var(--clr-bg-main);
}

.det-009__icon,
.cer-010__icon {
  color: var(--clr-olive);
}
.ves-012 {
  background: var(--clr-rose);
  color: var(--clr-wine);
}
.reg-014 {
  background: var(--clr-bg-main);
}

.reg-014__btn {
  background: var(--clr-wine);
  color: var(--clr-bg-main);
}
.rsv-015 {
  background: var(--clr-wine);
  color: var(--clr-bg-main);
}

.rsv-015 input:focus,
.rsv-015 textarea:focus {
  outline: 2px solid var(--clr-rose);
}
.gal-016 {
  background: var(--clr-plum);
  color: var(--clr-bg-main);
}
.fot-017 {
  background: var(--clr-wine);
  color: var(--clr-rose);
}
*{ box-sizing: border-box; }
html{ scroll-behavior: smooth; }
body{ margin:0; line-height:1.5; }
img{ max-width:100%; height:auto; display:block; }

.container{
  width: min(var(--max), 100% - (var(--pad) * 2));
  margin-inline: auto;
}

.her-002__couple{
  font-family: "Ephesis", cursive;
  font-weight: 400;
}

.her-002__couple{
  letter-spacing: 0.04em;
}

@media (min-width: 768px){
  .her-002__couple{
    font-size: clamp(3rem, 6vw, 4.8rem);
  }
}

.her-002{
  position: relative;
  min-height: 100svh;
  display: grid;

  /* Antes: place-items:center; */
  align-items: start;
  justify-items: center;

  overflow: hidden;
}


.her-002__bg{
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center;
  transform: scale(1.03); /* sutil, para evitar bordes al render */
  will-change: opacity;
}

/* Estado por defecto: A visible, B oculto */
.her-002__bg--a{ opacity: 1; }
.her-002__bg--b{ opacity: 0; }

/* Cuando alternamos */
.her-002.is-fade .her-002__bg--a{ opacity: 0; }
.her-002.is-fade .her-002__bg--b{ opacity: 1; }

/* Transici贸n suave */
.her-002__bg{
  transition: opacity 900ms ease-in-out;
}

.her-002__overlay{
  position: absolute;
  inset: 0;
  background: linear-gradient(
    to bottom,
    rgba(0,0,0,.55) 0%,
    rgba(0,0,0,.35) 35%,
    rgba(0,0,0,.65) 100%
  );
}

/* Tu contenido encima */
.her-002__content{
  position: relative;
  z-index: 1;
  text-align: center;

  /* Antes: padding: 6rem 0 4rem; */
  padding: 2.2rem 0 4rem;
}


.her-002__kicker{
  margin: 0 0 .5rem;
  letter-spacing: .22em;
  text-transform: uppercase;
  font-size: 27px;
  opacity: .9;
  color: #fff;
}

.her-002__guest{
  margin: 0 0 1.25rem;
  font-size: clamp(1.4rem, 4.4vw, 2.3rem);
  line-height: 1.15;
  color: #fff;
}

.her-002__couple{
  margin: 0 0 .75rem;
  font-size: clamp(3.9rem, 7vw, 4rem);
  line-height: 1.05;
  color: #fff;
}

.her-002__date{
  margin: 1rem 0 1.5rem;
  font-size: 1rem;
  opacity: .95;
  color: #fff;
}

.her-002__cta{
  display: inline-block;
  padding: .9rem 1.2rem;
  border-radius: 999px;
  text-decoration: none;
  font-weight: 600;
  background: rgba(255,255,255,.92);
  color: #111;
  backdrop-filter: blur(6px);
}

@media (prefers-reduced-motion: reduce){
  .her-002__bg{ transition: none; }
}
/* INVITACIÓN PARA + invitado más arriba */
.her-002__kicker{ margin: 0 0 .35rem; }
.her-002__guest{ margin: 0 0 2.2rem; }

/* Sergio & Coral un poco más abajo */
.her-002__couple{ margin-top: 50%; }
@media (min-width: 992px){
  .her-002__content{
    padding-top: 1.6rem;
  }

  .her-002__guest{
    margin-bottom: 3rem;
  }

  .her-002__couple{
    margin-top: 25%;
  }
}

.scroll-hint{
  position: absolute;
  left: 50%;
  bottom: 18px;
  transform: translateX(-50%);
  z-index: 50;
  width: 26px;
  height: 42px;
  border: 1.8px solid rgba(255,255,255,.75);
  border-radius: 16px;
  background: rgba(0,0,0,.12);          /* sutil para que contraste */
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  box-shadow: 0 10px 26px rgba(0,0,0,.22);
  pointer-events: none;
}
.scroll-hint span{
  position: absolute;
  top: 9px;
  left: 50%;
  width: 4px;
  height: 7px;
  border-radius: 99px;
  background: rgba(255,255,255,.92);
  transform: translateX(-50%);
  animation: scrollDot 1.6s cubic-bezier(.22,1,.18,1) infinite;
}

@keyframes scrollDot{
  0%   { opacity: 0; transform: translate(-50%, 0); }
  25%  { opacity: 1; }
  100% { opacity: 0; transform: translate(-50%, 14px); }
}

.cue-003 p{
    margin: 5px 0 5px 0;
}
.cue-003{
  /* Tema claro (boda) */
  --cue-bg: var(--clr-bg-main);
  --cue-fg: var(--clr-text-main);
  --cue-muted: rgba(43,30,36,.72);
  --cue-card: rgba(255,255,255,.88);
  --cue-border: rgba(0,0,0,.08);

  padding: 2.5rem 0;
  background:
    radial-gradient(1200px 520px at 50% -10%, rgba(106,31,59,.10), transparent 55%),
    var(--cue-bg);
  color: var(--cue-fg);
}
.cue-003 p{
    font-size: 24px;
}

.cue-003__number{
  transition: transform .2s ease, opacity .2s ease;
}
.cue-003__wrap{
  text-align: center;
}

.cue-003__label{
  margin: .6rem 0 0;
  letter-spacing: .25em;
  text-transform: uppercase;
  font-size: .85rem;
  color: var(--cue-muted);
}

.cue-003__date{
  margin: 0 0 1.5rem;
  font-size: clamp(1.6rem, 6vw, 2.6rem);
  letter-spacing: .08em;
  font-weight: 700;
}

.cue-003__date .dot{
  margin: 0 .35rem;
  opacity: .65;
}

.cue-003__grid{
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: .75rem;
  max-width: 760px;
  margin: 0 auto 1rem;
}

.cue-003__box{
  background: var(--cue-card);
  border: 1px solid var(--cue-border);
  border-radius: 18px;
  padding: 1rem .75rem;
  backdrop-filter: blur(10px);
  transform: translateY(14px);
  opacity: 0;
}

.cue-003__num{
  font-size: clamp(1.6rem, 6vw, 2.5rem);
  font-weight: 800;
  line-height: 1;
  letter-spacing: .04em;
}

.cue-003__txt{
  margin-top: .5rem;
  font-size: .9rem;
  color: var(--cue-muted);
}

/* Transición de entrada (como la referencia: aparece suave) */
.cue-003.is-in .cue-003__box{
  transform: translateY(0);
  opacity: 1;
  transition: transform 700ms ease, opacity 700ms ease;
}
.cue-003.is-in .cue-003__box:nth-child(1){ transition-delay: 60ms; }
.cue-003.is-in .cue-003__box:nth-child(2){ transition-delay: 120ms; }
.cue-003.is-in .cue-003__box:nth-child(3){ transition-delay: 180ms; }
.cue-003.is-in .cue-003__box:nth-child(4){ transition-delay: 240ms; }

/* Micro-animación cuando cambia un número */
.cue-003__num.is-tick{
  animation: cueTick 240ms ease;
}
@keyframes cueTick{
  0%{ transform: translateY(0); opacity: 1; }
  35%{ transform: translateY(-4px); opacity: .88; }
  100%{ transform: translateY(0); opacity: 1; }
}

.cue-003__note{
  margin: 0;
  color: var(--cue-muted);
  font-size: .95rem;
}

/* Responsive */
@media (max-width: 520px){
  .cue-003__grid{ grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (prefers-reduced-motion: reduce){
  .cue-003__box{ transform:none; opacity:1; }
  .cue-003.is-in .cue-003__box{ transition:none; }
  .cue-003__num.is-tick{ animation:none; }
}
.inv-004{
  position: relative;
  overflow: hidden;
}

/* Contenedor de la imagen */
.inv-004__ornament{
  width: 100%;
  margin-top: 3rem;
  pointer-events: none;
}

/* Imagen decorativa */
.inv-004__ornament img{
  display: block;
  width: 100%;
  height: auto;
  max-width: 1600px;
  margin: 0 auto;
}
@media (min-width: 992px){
  .inv-004__ornament{
    margin-top: 4.5rem;
  }
}
.inv-004__ornament{
  opacity: 0.95;
}
.inv-004{
      padding: 6rem 0 10px 0;
  background:
    radial-gradient(900px 420px at 50% 0%, rgba(0,0,0,.06), transparent 55%),
    #fff;
  color: #111;
}

.inv-004__head{
  text-align: center;
  margin-bottom: 1.5rem;
}

.inv-004__eyebrow{
  margin: 0 0 .6rem;
  letter-spacing: .18em;
  text-transform: uppercase;
  font-size: 24px;
  opacity: .7;
}

.inv-004__title{
  margin: 0 0 .4rem;
  font-size: clamp(1.7rem, 5.6vw, 2.5rem);
  line-height: 1.1;
}

.inv-004__subtitle{
  margin: 0;
  font-size: 1rem;
  opacity: .85;
}

.inv-004__card{
  margin: 1.5rem auto 0;
  max-width: 860px;
  border-radius: 22px;
  border: 1px solid rgba(0,0,0,.08);
  background: rgba(255,255,255,.78);
  box-shadow: 0 18px 55px rgba(0,0,0,.08);
  padding: 1.25rem 1.25rem 1rem;
  backdrop-filter: blur(10px);

  transform: translateY(14px);
  opacity: 0;
}

.inv-004.is-in .inv-004__card{
  transform: translateY(0);
  opacity: 1;
  transition: transform 700ms ease, opacity 700ms ease;
}

.inv-004__for{
  display: grid;
  gap: .2rem;
  padding: .25rem 0 1rem;
  border-bottom: 1px solid rgba(0,0,0,.07);
}

.inv-004__forLabel{
  font-size: 22px;
  opacity: .7;
  text-align: center;
}

.inv-004__forName{
  font-size: clamp(1.15rem, 4.4vw, 1.6rem);
  line-height: 1.2;
  text-align: center;
}

.inv-004__meta{
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: .75rem;
  padding: 1rem 0;
}

.inv-004__metaItem{
  border: 1px solid rgba(0,0,0,.08);
  border-radius: 16px;
  padding: .75rem .85rem;
  background: rgba(255,255,255,.65);
}

.inv-004__metaK{
  display: block;
  font-size: .85rem;
  opacity: .7;
}

.inv-004__metaV{
  display: block;
  font-weight: 700;
  margin-top: .15rem;
}

.inv-004__actions{
  display: flex;
  gap: .75rem;
  justify-content: center;
  flex-wrap: wrap;
  padding-top: .25rem;
}

.inv-004__btn{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  text-decoration: none;
  padding: .9rem 1.1rem;
  border-radius: 999px;
  font-weight: 700;
  border: 1px solid rgba(0,0,0,.12);
  transition: transform 120ms ease, opacity 120ms ease;
}

.inv-004__btn:active{ transform: translateY(1px); }

.inv-004__btn--primary{
  background: #111;
  color: #fff;
}

.inv-004__btn--ghost{
  background: rgba(255,255,255,.9);
  color: #111;
}

.inv-004__footnote{
  margin: 1rem 0 0;
  text-align: center;
  font-size: .9rem;
  opacity: .75;
}

@media (max-width: 600px){
  .inv-004__meta{
    grid-template-columns: 1fr;
  }
}

@media (prefers-reduced-motion: reduce){
  .inv-004__card{ transform:none; opacity:1; }
  .inv-004.is-in .inv-004__card{ transition:none; }
}
.msg-005__bible {
  font-style: italic;
  opacity: 0.9;
  margin-bottom: 1.5rem;
}
.msg-005__bible span {
  display: block;
  font-size: 0.9rem;
  opacity: 0.8;
  margin-top: 0.25rem;
}
.msg-005{
  padding: 5rem 0;
  background:
    radial-gradient(700px 300px at 50% 0%, rgba(0,0,0,.05), transparent 60%),
    #fff;
  color: #111;
}

.msg-005__wrap{
  text-align: center;
}

.msg-005__quote{
  margin: 0;
  padding: 0;
}

.msg-005__quote p{
  margin: 0;
  font-size: clamp(1.4rem, 4.8vw, 2.1rem);
  line-height: 1.35;
  font-weight: 500;
  opacity: .92;
}

.msg-005__sign{
  margin-top: 1.2rem;
  font-size: 1.2rem;
  letter-spacing: .15em;
  text-transform: uppercase;
  opacity: .65;
}

/* Animación de entrada suave */
.msg-005__wrap{
  transform: translateY(14px);
  opacity: 0;
}

.msg-005.is-in .msg-005__wrap{
  transform: translateY(0);
  opacity: 1;
  transition: transform 700ms ease, opacity 700ms ease;
}

@media (prefers-reduced-motion: reduce){
  .msg-005__wrap{
    transform: none;
    opacity: 1;
  }
  .msg-005.is-in .msg-005__wrap{
    transition: none;
  }
}


/* =========================
   HIS-006 ORNAMENTO INFERIOR
   ========================= */

.his-006 {
  position: relative;
  overflow: hidden;
}

/* contenedor del adorno */
.his-006__ornament {
  width: 100%;
  margin-top: 4rem; /* separación del timeline */
  line-height: 0;   /* elimina espacios fantasma */
}

/* imagen horizontal */
.his-006__ornament img {
  display: block;
  width: 100%;
  height: auto;
  max-width: 100%;
}

/* Desktop: un poco más de aire */
@media (min-width: 1024px) {
  .his-006__ornament {
    margin-top: 6rem;
  }
}


.his-006{
  padding: 5rem 0 10px 0;
  background:
    radial-gradient(900px 420px at 50% 0%, rgba(0,0,0,.05), transparent 60%),
    #fff;
  color: #111;
}

.his-006__head{
  text-align: center;
  margin-bottom: 2rem;
}

.his-006__eyebrow{
  margin: 0 0 .6rem;
  letter-spacing: .18em;
  text-transform: uppercase;
  font-size: 24px;
  opacity: .7;
}

.his-006__title{
  margin: 0 0 .4rem;
  font-size: clamp(1.7rem, 5.6vw, 2.5rem);
  line-height: 1.1;
}

.his-006__subtitle{
  margin: 0;
  opacity: .85;
}

/* Timeline */
.his-006__timeline{
  list-style: none;
  padding: 0;
  margin: 0 auto;
  position: relative;
  max-width: 980px;
}

/* central line */
.his-006__timeline::before{
  content: "";
  position: absolute;
  top: 0;
  bottom: 0;
  left: 50%;
  width: 2px;
  transform: translateX(-50%);
  background: rgba(209, 62, 117, .70);
  border-radius: 999px;
}

.his-006__item{
  position: relative;
  display: grid;
  grid-template-columns: 1fr 64px 1fr;
  align-items: center;
  padding: 1rem 0;
}

/* Alternate sides */
.his-006__item:nth-child(odd) .his-006__card{
  grid-column: 1 / 2;
  justify-self: end;
  text-align: right;
}
.his-006__item:nth-child(even) .his-006__card{
  grid-column: 3 / 4;
  justify-self: start;
  text-align: left;
}

.his-006__dot{
  grid-column: 2 / 3;
  justify-self: center;
  width: 14px;
  height: 14px;
  border-radius: 50%;
  background: #111;
  box-shadow: 0 0 0 6px rgba(0,0,0,.08);
}

.his-006__card{
  width: min(420px, 100%);
  border-radius: 18px;
  border: 2px solid rgba(209, 62, 117, .70);
  background: rgba(255,255,255,.78);
  box-shadow: 0 18px 55px rgba(0,0,0,.06);
  padding: 1rem 1.05rem;
  backdrop-filter: blur(10px);

  transform: translateY(12px);
  opacity: 0;
}

.his-006__date{
  margin: 0 0 .25rem;
  letter-spacing: .18em;
  text-transform: uppercase;
  font-size: .8rem;
  opacity: .7;
}

.his-006__h3{
  margin: 0 0 .35rem;
  font-size: 1.15rem;
  line-height: 1.2;
  text-align: center;
}

.his-006__p{
  margin: 0;
  opacity: .9;
  text-align: justify;
}

/* Animate in */
.his-006.is-in .his-006__card{
  transform: translateY(0);
  opacity: 1;
  transition: transform 700ms ease, opacity 700ms ease;
}
.his-006.is-in .his-006__item:nth-child(1) .his-006__card{ transition-delay: 50ms; }
.his-006.is-in .his-006__item:nth-child(2) .his-006__card{ transition-delay: 120ms; }
.his-006.is-in .his-006__item:nth-child(3) .his-006__card{ transition-delay: 190ms; }
.his-006.is-in .his-006__item:nth-child(4) .his-006__card{ transition-delay: 260ms; }

/* Mobile: one column, line on left */
@media (max-width: 820px){
  .his-006__timeline::before{
    left: 18px;
    transform: none;
  }

  .his-006__item{
    grid-template-columns: 40px 1fr;
    gap: .75rem;
    padding: .9rem 0;
  }

  .his-006__dot{
    grid-column: 1 / 2;
    justify-self: center;
  }

  .his-006__card{
    grid-column: 2 / 3 !important;
    justify-self: stretch !important;
    text-align: left !important;
  }
}

@media (prefers-reduced-motion: reduce){
  .his-006__card{ transform:none; opacity:1; }
  .his-006.is-in .his-006__card{ transition:none; }
}
/* Reveal animation (suave y elegante) */
.reveal{
  opacity: 0;
  transform: translateY(14px);
  transition: opacity 700ms ease, transform 700ms ease;
  will-change: opacity, transform;
}

.reveal.is-in{
  opacity: 1;
  transform: translateY(0);
}

/* Un toque extra: izquierda/derecha distinto */
.his-006__item.left.reveal{
  transform: translate(-10px, 14px);
}
.his-006__item.left.reveal.is-in{
  transform: translate(0, 0);
}

.his-006__item.right.reveal{
  transform: translate(10px, 14px);
}
.his-006__item.right.reveal.is-in{
  transform: translate(0, 0);
}

/* Accesibilidad */
@media (prefers-reduced-motion: reduce){
  .reveal{ opacity: 1; transform: none; transition: none; }
}

.pal-007{
  padding: 5.5rem 0;
  background:
    radial-gradient(700px 380px at 50% 0%, rgba(0,0,0,.06), transparent 60%),
    #fff;
  color: #111;
}

.pal-007__wrap{
  max-width: 820px;
}

.pal-007__head{
  text-align: center;
  margin-bottom: 2rem;
}

.pal-007__eyebrow{
  margin: 0 0 .6rem;
  letter-spacing: .22em;
  text-transform: uppercase;
  font-size: 24px;
  opacity: .65;
}

.pal-007__title{
  margin: 0;
  font-size: clamp(1.7rem, 5.6vw, 2.5rem);
  line-height: 1.1;
}

.pal-007__letter{
  margin: 0 auto;
  padding: 2rem 2rem 2.2rem;
  border-radius: 26px;
  background: rgba(255,255,255,.85);
  border: 4px solid rgba(209,62,117,.70);
  box-shadow: 0 28px 70px rgba(0,0,0,.08);
  backdrop-filter: blur(12px);

  transform: translateY(18px);
  opacity: 0;
}

.pal-007__letter p{
  margin: 0 0 1.2rem;
  font-size: 1.05rem;
  line-height: 1.7;
  opacity: .92;
  text-align: justify;
}

.pal-007__letter p:last-of-type{
  margin-bottom: 0;
}

.pal-007__signature{
  margin-top: 1.6rem;
  font-weight: 600;
  letter-spacing: .04em;
  text-align: center !important;
}

/* Animación de entrada */
.pal-007.is-in .pal-007__letter{
  transform: translateY(0);
  opacity: 1;
  transition: transform 800ms ease, opacity 800ms ease;
}

@media (max-width: 600px){
  .pal-007__letter{
    padding: 1.6rem 1.4rem 1.8rem;
  }
}

/* Respeto a accesibilidad */
@media (prefers-reduced-motion: reduce){
  .pal-007__letter{
    transform: none;
    opacity: 1;
  }
  .pal-007.is-in .pal-007__letter{
    transition: none;
  }
}

/* =========================
   SNF-008 | Stack Swipe
   ========================= */
.snf-stack{
  padding: 56px 0 176px 0px;
}

.snf-stack__wrap{
  width: min(1100px, 92%);
  margin: 0 auto;
}

.snf-stack__head{
  text-align: center;
  margin-bottom: 18px;
}

.snf-stack__title{
  margin: 0;
  font-size: clamp(1.7rem, 5.6vw, 2.5rem);
}

.snf-stack__subtitle{
  margin: 10px auto 0;
  max-width: 60ch;
  opacity: .85;
  line-height: 1.55;
}

.snf-stack__stage{
  position: relative;
  margin: 22px auto 0;
  width: min(520px, 92vw);
  aspect-ratio: 9 / 12; /* estilo invitación */
  user-select: none;
  touch-action: pan-y; /* permite scroll vertical, pero arrastre horizontal funciona */
}

.snf-stack__deck{
  position: absolute;
  inset: 0;
  border-radius: 22px;
  perspective: 1200px;
}

/* ====== Stack más "montón de fotos" ====== */
.snf-stack__deck{
  position: absolute;
  inset: 0;
  border-radius: 22px;
  perspective: 1400px;
}

/* “marco” tipo foto impresa (opcional pero recomendado) */
.snf-card{
  position: absolute;
  inset: 0;
  border-radius: 22px;
  overflow: hidden;
  background: #fff;
  padding: 10px;                 /* marco */
  box-shadow: 0 24px 70px rgba(0,0,0,.22);
  transform-origin: 50% 70%;
  will-change: transform;
  cursor: grab;
}

.snf-card img{
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  border-radius: 16px;           /* esquinas del “foto” */
}

/* (Opcional) para que parezca papel: grano sutil */
.snf-card::after{
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
  background:
    radial-gradient(circle at 20% 10%, rgba(255,255,255,.35), rgba(255,255,255,0) 45%),
    linear-gradient(180deg, rgba(0,0,0,.02), rgba(0,0,0,.08));
  mix-blend-mode: overlay;
  opacity: .35;
}

/* Fondo suave para que se vea premium */
.snf-stack__stage::before{
  content:"";
  position:absolute;
  inset:-10px;
  border-radius: 28px;
  background: radial-gradient(800px 380px at 50% -10%, rgba(255,255,255,.18), transparent 60%);
  filter: blur(0px);
  opacity: .65;
  pointer-events:none;
}

/* Hint */
.snf-stack__hint{
  position: absolute;
  left: 50%;
  bottom: -14px;
  transform: translateX(-50%);
  display: inline-flex;
  gap: 10px;
  padding: 8px 12px;
  border-radius: 999px;
  background: rgba(255,255,255,.82);
  box-shadow: 0 12px 26px rgba(0,0,0,.14);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  font-size: 12px;
  opacity: .95;
}

/* Accesibilidad: reducir movimiento */
@media (prefers-reduced-motion: reduce){
  .snf-card{ transition: none !important; }
}

.det-009{
  padding: 5.5rem 0;
  background:
    radial-gradient(900px 420px at 50% 0%, rgba(0,0,0,.05), transparent 60%),
    #fff;
  color: #111;
}

.det-009__head{
  text-align: center;
  margin-bottom: 2rem;
}

.det-009__eyebrow{
  margin: 0 0 .6rem;
  letter-spacing: .18em;
  text-transform: uppercase;
  font-size: .85rem;
  opacity: .7;
}

.det-009__title{
  margin: 0 0 .4rem;
  font-size: clamp(1.7rem, 5.6vw, 2.5rem);
  line-height: 1.1;
}

.det-009__subtitle{
  margin: 0;
  opacity: .85;
}

/* Grid */
.det-009__grid{
  display: grid;
  grid-template-columns: repeat(2, minmax(0,1fr));
  gap: 1.25rem;
  max-width: 980px;
  margin: 0 auto;
}

/* Cards */
.det-009__card{
  border-radius: 22px;
  border: 1px solid rgba(0,0,0,.08);
  background: rgba(255,255,255,.85);
  box-shadow: 0 22px 60px rgba(0,0,0,.08);
  padding: 1.4rem 1.5rem;
  backdrop-filter: blur(10px);

  transform: translateY(18px);
  opacity: 0;
}

.det-009__cardTitle{
  margin: 0 0 .8rem;
  font-size: 1.3rem;
}

.det-009__list{
  list-style: none;
  padding: 0;
  margin: 0 0 1.2rem;
}

.det-009__list li{
  margin-bottom: .45rem;
  line-height: 1.5;
}

/* Botones */
.det-009__btn{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: .75rem 1.1rem;
  border-radius: 999px;
  text-decoration: none;
  font-weight: 600;
  background: #111;
  color: #fff;
  border: 1px solid rgba(0,0,0,.12);
}

.det-009__btn--ghost{
  background: rgba(255,255,255,.9);
  color: #111;
}

/* Nota */
.det-009__note{
  margin-top: 1.5rem;
  text-align: center;
  font-size: .9rem;
  opacity: .75;
}

/* Animación */
.det-009.is-in .det-009__card{
  transform: translateY(0);
  opacity: 1;
  transition: transform 700ms ease, opacity 700ms ease;
}

.det-009.is-in .det-009__card:nth-child(1){ transition-delay: 80ms; }
.det-009.is-in .det-009__card:nth-child(2){ transition-delay: 160ms; }

/* Mobile */
@media (max-width: 700px){
  .det-009__grid{
    grid-template-columns: 1fr;
  }
}

/* Accesibilidad */
@media (prefers-reduced-motion: reduce){
  .det-009__card{
    transform: none;
    opacity: 1;
  }
  .det-009.is-in .det-009__card{
    transition: none;
  }
}
.cer-010__media{
  width: 100%;
  overflow: hidden;
  border-radius: 18px 18px 0 0; /* solo arriba */
}

.cer-010__media img{
  display: block;
  width: 100%;
  height: auto;
  object-fit: cover;
}

/* Ajuste fino para desktop */
@media (min-width: 1024px){
  .cer-010__media{
    border-radius: 20px 20px 0 0;
  }
}
.cer-010__media::after{
  content: "";
  position: absolute;
  inset: 0;
}
.cer-010{
  padding: 5.5rem 0;
  background: radial-gradient(900px 420px at 50% 0%, rgba(0,0,0,.05), transparent 60%), #fff;
  color: #111;
}

.cer-010__head{
  text-align: center;
  margin-bottom: 2rem;
}

.cer-010__eyebrow{
  margin: 0 0 .6rem;
  letter-spacing: .18em;
  text-transform: uppercase;
  font-size: 24px;
  opacity: .7;
}

.cer-010__title{
  margin: 0 0 .4rem;
  font-size: clamp(1.7rem, 5.6vw, 2.5rem);
  line-height: 1.1;
}

.cer-010__subtitle{
  margin: 0;
  opacity: .85;
}

/* Layout */
.cer-010__grid{
  display: grid;
  grid-template-columns: 1.05fr .95fr;
  gap: 1.25rem;
  max-width: 1100px;
  margin: 0 auto;
  align-items: start;
}

/* Card texto */
.cer-010__card{
  border-radius: 22px;
  border: 2px solid rgba(209, 62, 117, .60);
  background: rgba(255,255,255,.85);
  box-shadow: 0 22px 60px rgba(0,0,0,.08);
  padding: 1.4rem 1.5rem;
  backdrop-filter: blur(10px);
  transform: translateY(16px);
  opacity: 0;
}

.cer-010__badge{
  padding: .35rem .7rem;
  border-radius: 999px;
  border: 1px solid rgba(0,0,0,.10);
  background: rgba(0,0,0,.04);
  font-size: .85rem;
  font-weight: 700;
  margin: 30px auto 2.0rem auto;
    display: flex;
    width: 150px;
    justify-content: center;
}

.cer-010__list{
  list-style: none;
  padding: 0;
  margin: 0 0 1rem;
}

.cer-010__list li{
  margin-bottom: .45rem;
  line-height: 1.55;
}

.cer-010__tips{
  border-top: 1px solid rgba(0,0,0,.07);
  padding-top: .9rem;
  margin-top: .9rem;
  text-align: justify;
}

.cer-010__tip{
  margin: 0 0 .55rem;
  opacity: .9;
}

.cer-010__actions{
  display: flex;
  gap: .75rem;
  flex-wrap: wrap;
  margin-top: 1rem;
}

.cer-010__btn{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: .8rem 1.1rem;
  border-radius: 999px;
  text-decoration: none;
  font-weight: 700;
  border: 1px solid rgba(0,0,0,.12);
  background: #111;
  color: #fff;
}

.cer-010__btn--ghost{
  background: rgba(255,255,255,.95);
  color: #111;
}

/* Card mapa */
.cer-010__mapCard{
  border-radius: 22px;
  border: 2px solid rgba(209, 62, 117, .60);
  background: rgba(255,255,255,.85);
  box-shadow: 0 22px 60px rgba(0,0,0,.08);
  overflow: hidden;
  backdrop-filter: blur(10px);
  transform: translateY(16px);
  opacity: 0;
}

.cer-010__mapHead{
  padding: 1rem 1.1rem .7rem;
  border-bottom: 1px solid rgba(0,0,0,.07);
}

.cer-010__mapTitle{
  margin: 0;
  font-size: 1.1rem;
  text-align: center;
}

.cer-010__mapHint{
  margin: .25rem 0 0;
  font-size: .9rem;
  opacity: .75;
    text-align: center;
}

.cer-010__mapShell{
  position: relative;
  height: clamp(320px, 42vw, 460px);
  background: linear-gradient(180deg, rgba(0,0,0,.05), rgba(0,0,0,.02));
  display: grid;
  place-items: center;
}

.cer-010__mapBtn{
  border: 1px solid rgba(0,0,0,.18);
  background-color: #89287f;
  color: #fff;
  font-weight: 800;
  border-radius: 999px;
  padding: .85rem 1.1rem;
  cursor: pointer;
}

.cer-010__mapFineprint{
  position: absolute;
  bottom: .7rem;
  left: .9rem;
  margin: 0;
  font-size: .82rem;
  opacity: .75;
}

/* Iframe cuando ya se cargó */
.cer-010__mapShell iframe{
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
}

/* Animación de entrada */
.cer-010.is-in .cer-010__card,
.cer-010.is-in .cer-010__mapCard{
  transform: translateY(0);
  opacity: 1;
  transition: transform 700ms ease, opacity 700ms ease;
}
.cer-010.is-in .cer-010__mapCard{ transition-delay: 120ms; }

/* Mobile */
@media (max-width: 900px){
  .cer-010__grid{ grid-template-columns: 1fr; }
}

/* Accesibilidad */
@media (prefers-reduced-motion: reduce){
  .cer-010__card, .cer-010__mapCard{ transform:none; opacity:1; }
  .cer-010.is-in .cer-010__card,
  .cer-010.is-in .cer-010__mapCard{ transition:none; }
}

.rec-011__media{
  width: 100%;
  overflow: hidden;
  border-radius: 18px 18px 0 0; /* solo arriba */
  height: 325px;
}

.rec-011__media img{
  display: block;
  width: 100%;
  height: auto;
  object-fit: cover;
}

/* Ajuste fino para desktop */
@media (min-width: 1024px){
  .rec-011__media{
    border-radius: 20px 20px 0 0;
  }
}
.rec-011__media::after{
  content: "";
  position: absolute;
  inset: 0;
}
.rec-011{
  padding: 5.5rem 0;
  background: radial-gradient(900px 420px at 50% 0%, rgba(0,0,0,.05), transparent 60%), #fff;
  color: #111;
}


.rec-011{
  padding: 5.5rem 0;
  background: radial-gradient(900px 420px at 50% 0%, rgba(0,0,0,.05), transparent 60%), #fff;
  color: #111;
}

.rec-011__head{
  text-align: center;
  margin-bottom: 2rem;
}

.rec-011__eyebrow{
  margin: 0 0 .6rem;
  letter-spacing: .18em;
  text-transform: uppercase;
  font-size: 24px;
  opacity: .7;
}

.rec-011__title{
  margin: 0 0 .4rem;
  font-size: clamp(1.7rem, 5.6vw, 2.5rem);
  line-height: 1.1;
}

.rec-011__subtitle{
  margin: 0;
  opacity: .85;
}

/* Layout */
.rec-011__grid{
  display: grid;
  grid-template-columns: 1.05fr .95fr;
  gap: 1.25rem;
  max-width: 1100px;
  margin: 0 auto;
  align-items: start;
}

/* Card texto */
.rec-011__card{
  border-radius: 22px;
  border: 2px solid rgba(209, 62, 117, .60);
  background: rgba(255,255,255,.85);
  box-shadow: 0 22px 60px rgba(0,0,0,.08);
  padding: 1.4rem 1.5rem;
  backdrop-filter: blur(10px);
  transform: translateY(16px);
  opacity: 0;
}

.rec-011__badge{
  padding: .35rem .7rem;
  border-radius: 999px;
  border: 1px solid rgba(0,0,0,.10);
  background: rgba(0,0,0,.04);
  font-size: .85rem;
  font-weight: 800;
    margin: 30px auto 2.0rem auto;
    display: flex;
    width: 150px;
    justify-content: center;
}

.rec-011__list{
  list-style: none;
  padding: 0;
  margin: 0 0 1rem;
}

.rec-011__list li{
  margin-bottom: .45rem;
  line-height: 1.55;
}

.rec-011__tips{
  border-top: 1px solid rgba(0,0,0,.07);
  padding-top: .9rem;
  margin-top: .9rem;
}

.rec-011__tip{
  margin: 0;
  opacity: .9;
  text-align: justify;
}

.rec-011__actions{
  display: flex;
  gap: .75rem;
  flex-wrap: wrap;
  margin-top: 1rem;
  justify-content: center;
}

.rec-011__btn{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: .8rem 1.1rem;
  border-radius: 999px;
  text-decoration: none;
  font-weight: 700;
  border: 1px solid rgba(0,0,0,.12);
  background-color: #89287f;
  color: #fff;
}

/* Card mapa */
.rec-011__mapCard{
  border-radius: 22px;
  border: 2px solid rgba(209, 62, 117, .60);
  background: rgba(255,255,255,.85);
  box-shadow: 0 22px 60px rgba(0,0,0,.08);
  overflow: hidden;
  backdrop-filter: blur(10px);
  transform: translateY(16px);
  opacity: 0;
}

.rec-011__mapHead{
  padding: 1rem 1.1rem .7rem;
  border-bottom: 1px solid rgba(0,0,0,.07);
}

.rec-011__mapTitle{
  margin: 0;
  font-size: 1.1rem;
  text-align: center;
}

.rec-011__mapHint{
  margin: .25rem 0 0;
  font-size: .9rem;
  opacity: .75;
text-align: center;
}

.rec-011__mapShell{
  position: relative;
  height: clamp(320px, 42vw, 460px);
  background: linear-gradient(180deg, rgba(0,0,0,.05), rgba(0,0,0,.02));
  display: grid;
  place-items: center;
}

.rec-011__mapBtn{
  border: 1px solid rgba(0,0,0,.18);
  background-color: #89287f;
  color: #fff;
  font-weight: 800;
  border-radius: 999px;
  padding: .85rem 1.1rem;
  cursor: pointer;
}

.rec-011__mapFineprint{
  position: absolute;
  bottom: .7rem;
  left: .9rem;
  margin: 0;
  font-size: .82rem;
  opacity: .75;
}

.rec-011__mapShell iframe{
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
}

/* Animación de entrada */
.rec-011.is-in .rec-011__card,
.rec-011.is-in .rec-011__mapCard{
  transform: translateY(0);
  opacity: 1;
  transition: transform 700ms ease, opacity 700ms ease;
}
.rec-011.is-in .rec-011__mapCard{ transition-delay: 120ms; }

/* Mobile */
@media (max-width: 900px){
  .rec-011__grid{ grid-template-columns: 1fr; }
}

/* Accesibilidad */
@media (prefers-reduced-motion: reduce){
  .rec-011__card, .rec-011__mapCard{ transform:none; opacity:1; }
  .rec-011.is-in .rec-011__card,
  .rec-011.is-in .rec-011__mapCard{ transition:none; }
}
.ves-012{
  /* Colores (los definimos al final) */
  --ves-bg: #fff;
  --ves-fg: #111;
  --ves-border: rgba(0,0,0,.08);
  --ves-card: rgba(255,255,255,.86);
  --ves-muted: rgba(0,0,0,.68);

  padding: 5.5rem 0;
  background: radial-gradient(900px 420px at 50% 0%, rgba(0,0,0,.05), transparent 60%), var(--ves-bg);
  color: var(--ves-fg);
}

/* =========================
   VES-012 FONDO ORNAMENTAL
   ========================= */

.ves-012__card{
  position: relative;
  overflow: hidden;
  border-radius: 18px; /* si ya usas radios, ajusta */
  background-color: #ffffff;
}

/* Fondo con opacidad */
.ves-012__card::before{
  content: "";
  position: absolute;
  inset: 0;
  background-image: url("../assets/img/ves-012-bg.webp");
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  opacity: 0.12;          /* 🔑 controla aquí la intensidad */
  z-index: 0;
  pointer-events: none;
}

/* Elevar contenido por encima del fondo */
.ves-012__media,
.ves-012__content{
  position: relative;
  z-index: 1;
}
.ves-012__card::before{
  opacity: 0.16;
}
.ves-012__card::before{
  filter: saturate(0.85) contrast(0.95);
}



.ves-012__head{
  text-align: center;
  margin-bottom: 2rem;
}

.ves-012__eyebrow{
  margin: 0 0 .6rem;
  letter-spacing: .18em;
  text-transform: uppercase;
  font-size: 24px;
  opacity: .7;
}

.ves-012__title{
  margin: 0 0 .4rem;
  font-size: clamp(1.7rem, 5.6vw, 2.5rem);
  line-height: 1.1;
}

.ves-012__subtitle{
  margin: 0;
  opacity: .85;
}

.ves-012__card{
  max-width: 980px;
  margin: 0 auto;
  border-radius: 24px;
  border: 1px solid var(--ves-border);
  background: var(--ves-card);
  box-shadow: 0 22px 60px rgba(0,0,0,.08);
  overflow: hidden;
  backdrop-filter: blur(10px);

  display: grid;
  grid-template-columns: 1fr 1.1fr;

  transform: translateY(18px);
  opacity: 0;
}

.ves-012__media {
  max-width: 520px;
  margin: 0 auto;
  text-align: center;
}

.ves-012__media img {
  width: 100%;
  height: auto;
  border-radius: 12px;
  box-shadow: 0 10px 30px rgba(0,0,0,.18);
}

.ves-012__content{
  padding: 1.6rem 1.6rem 1.8rem;
}

.ves-012__tag{
  margin: 0 0 .65rem;
  letter-spacing: .18em;
  text-transform: uppercase;
  font-weight: 800;
  opacity: .85;
  text-align: center;
}

.ves-012__text{
  margin: 0 0 1.15rem;
  line-height: 1.7;
  opacity: .92;
  text-align: justify;
}

.ves-012__tips{
  display: grid;
  gap: .7rem;
  margin-bottom: 1.2rem;
}

.ves-012__tip{
  border: 2px solid rgba(209, 62, 117, .60);
  border-radius: 16px;
  padding: .75rem .85rem;
  background: rgba(255,255,255,.70);
}

.ves-012__tipK{
  display: block;
  font-size: .82rem;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--ves-muted);
  font-weight: 700;
  margin: 10px 0 5px 0;
}
.ves-012__tipK2{
  display: block;
  font-size: .82rem;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--ves-muted);
  font-weight: 700;
  margin: 10px 0 5px 0;
  text-align: center;
}

.ves-012__tipV{
  display: block;
  margin-top: .25rem;
  font-weight: 400;
}

.ves-012__actions{
  display: flex;
  justify-content: center;
}

.ves-012__btn{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: .85rem 1.1rem;
  border-radius: 999px;
  text-decoration: none;
  font-weight: 800;
  border: 1px solid rgba(0,0,0,.12);
  background-color: #89287f;
  color: #fff;
}

/* Animación al entrar */
.ves-012.is-in .ves-012__card{
  transform: translateY(0);
  opacity: 1;
  transition: transform 800ms ease, opacity 800ms ease;
}

/* Mobile */
@media (max-width: 900px){
  .ves-012__card{
    grid-template-columns: 1fr;
  }
  .ves-012__content{
    padding: 1.35rem 1.25rem 1.55rem;
  }
}

/* Accesibilidad */
@media (prefers-reduced-motion: reduce){
  .ves-012__card{ transform:none; opacity:1; }
  .ves-012.is-in .ves-012__card{ transition:none; }
}
.pad-013{
  --pad-bg: #fff;
  --pad-fg: #111;
  --pad-border: rgba(0,0,0,.08);
  --pad-card: rgba(255,255,255,.86);
  --pad-muted: rgba(0,0,0,.68);

  padding: 5.5rem 0;
  background: radial-gradient(900px 420px at 50% 0%, rgba(0,0,0,.05), transparent 60%), var(--pad-bg);
  color: var(--pad-fg);
}

.pad-013__head{
  text-align: center;
  margin-bottom: 2rem;
}

.pad-013__eyebrow{
  margin: 0 0 .6rem;
  letter-spacing: .18em;
  text-transform: uppercase;
  font-size: 24px;
  opacity: .7;
}

.pad-013__title{
  margin: 0 0 .4rem;
  font-size: clamp(1.7rem, 5.6vw, 2.5rem);
  line-height: 1.1;
}

.pad-013__subtitle{
  margin: 0;
  opacity: .85;
}

.pad-013__grid{
  max-width: 1100px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: repeat(1, minmax(0, 1fr));
  gap: 1rem;
}

.pad-013__card{
  border-radius: 22px;
  border: 2px solid rgba(209, 62, 117, .60);
  background: var(--pad-card);
  box-shadow: 0 22px 60px rgba(0,0,0,.08);
  padding: 1.25rem 1.35rem;
  backdrop-filter: blur(10px);

  transform: translateY(16px);
  opacity: 0;
}

.pad-013__card--wide{
  grid-column: 1 / -1;
}

.pad-013__cardTitle{
  margin: 0 0 .55rem;
  font-size: 1.15rem;
      text-align: center;
}

.pad-013__names{
  margin: 0;
  opacity: .9;
  line-height: 1.6;
  font-weight: 600;
  text-align: center;
}

/* Animación */
.pad-013.is-in .pad-013__card{
  transform: translateY(0);
  opacity: 1;
  transition: transform 700ms ease, opacity 700ms ease;
}
.pad-013.is-in .pad-013__card:nth-child(1){ transition-delay: 60ms; }
.pad-013.is-in .pad-013__card:nth-child(2){ transition-delay: 120ms; }
.pad-013.is-in .pad-013__card:nth-child(3){ transition-delay: 180ms; }
.pad-013.is-in .pad-013__card:nth-child(4){ transition-delay: 240ms; }
.pad-013.is-in .pad-013__card:nth-child(5){ transition-delay: 300ms; }

@media (max-width: 820px){
  .pad-013__grid{
    grid-template-columns: 1fr;
  }
  .pad-013__card--wide{
    grid-column: auto;
  }
}

@media (prefers-reduced-motion: reduce){
  .pad-013__card{ transform:none; opacity:1; }
  .pad-013.is-in .pad-013__card{ transition:none; }
}
.reg-014{
  /* colores (luego los definimos) */
  --reg-bg: #fff;
  --reg-fg: #111;
  --reg-border: rgba(0,0,0,.08);
  --reg-card: rgba(255,255,255,.86);
  --reg-muted: rgba(0,0,0,.68);

  padding: 5.5rem 0;
  background: radial-gradient(900px 420px at 50% 0%, rgba(0,0,0,.05), transparent 60%), var(--reg-bg);
  color: var(--reg-fg);
}

.reg-014__head{
  text-align: center;
  margin-bottom: 2rem;
}

.reg-014__eyebrow{
  margin: 0 0 .6rem;
  letter-spacing: .18em;
  text-transform: uppercase;
  font-size: 24px;
  opacity: .7;
}

.reg-014__title{
  margin: 0 0 .4rem;
  font-size: clamp(1.7rem, 5.6vw, 2.5rem);
  line-height: 1.1;
}

.reg-014__subtitle{
  margin: 0;
  opacity: .85;
  max-width: 820px;
  margin-inline: auto;
}

.reg-014__grid{
  display: grid;
  grid-template-columns: repeat(2, minmax(0,1fr));
  gap: 1.25rem;
  max-width: 1100px;
  margin: 0 auto;
}

.reg-014__card{
  border-radius: 22px;
  border: 2px solid rgba(209, 62, 117, .60);
  background: var(--reg-card);
  box-shadow: 0 22px 60px rgba(0,0,0,.08);
  padding: 1.4rem 1.5rem;
  backdrop-filter: blur(10px);

  transform: translateY(16px);
  opacity: 0;
}

.reg-014__cardTitle{
  margin: 0 0 1rem;
  font-size: 1.2rem;
  text-align: center;
}

.reg-014__row{
  display: grid;
  grid-template-columns: 1fr;
  gap: .15rem;
  padding: .65rem .8rem;
  border: 1px solid rgba(209, 62, 117, .60);
  border-radius: 16px;
  background: rgba(255,255,255,.70);
  margin-bottom: .7rem;
}

.reg-014__k{
  font-size: .82rem;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--reg-muted);
}

.reg-014__v{
  font-weight: 800;
  line-height: 1.35;
}

.reg-014__mono{
  font-variant-numeric: tabular-nums;
  letter-spacing: .04em;
}

.reg-014__note{
  margin: .25rem 0 1rem;
  opacity: .85;
  line-height: 1.6;
}

.reg-014__btn{
  display: flex;
  align-items: center;
  justify-content: center;
  padding: .85rem 1.1rem;
  border-radius: 999px;
  text-decoration: none;
  font-weight: 800;
  border: 1px solid rgba(0,0,0,.12);
  background-color: #89287f;
  color: #fff;
  cursor: pointer;
  margin:0 auto;
  font-family:arial;
  font-size:13.33px;
  width:260px;
}

.reg-014__btn--ghost{
  background-color: #89287f;
  color: #fff;
  margin-left: auto;
  margin-right: auto;
  display: flex;
}

.reg-014__copied{
  margin: .75rem 0 0;
  font-size: .9rem;
  opacity: .85;
  text-align: center;
}

/* Animación al entrar */
.reg-014.is-in .reg-014__card{
  transform: translateY(0);
  opacity: 1;
  transition: transform 700ms ease, opacity 700ms ease;
}
.reg-014.is-in .reg-014__card:nth-child(1){ transition-delay: 70ms; }
.reg-014.is-in .reg-014__card:nth-child(2){ transition-delay: 140ms; }

@media (max-width: 900px){
  .reg-014__grid{ grid-template-columns: 1fr; }
}

@media (prefers-reduced-motion: reduce){
  .reg-014__card{ transform:none; opacity:1; }
  .reg-014.is-in .reg-014__card{ transition:none; }
}
.reg-014__brand {
  display: flex;
  justify-content: center;
  margin-top: 1.5rem;
}

.reg-014__brandImg {
  max-width: 160px;
  width: 100%;
  height: auto;
  opacity: 0.9;
  border-radius: 15px;
}
.rsv-015{
  padding: 5.5rem 0;
  background: radial-gradient(900px 420px at 50% 0%, rgba(0,0,0,.05), transparent 60%), #fff;
  color: #111;
}

.rsv-015__head{ text-align:center; margin-bottom:2rem; }
.rsv-015__eyebrow{ margin:0 0 .6rem; letter-spacing:.18em; text-transform:uppercase; font-size:24px; opacity:.7; }
.rsv-015__title{ margin:0 0 .4rem; font-size:clamp(1.7rem, 5.6vw, 2.5rem); line-height:1.1; }
.rsv-015__subtitle{ margin:0; opacity:.85; max-width:820px; margin-inline:auto; }

.rsv-015__grid{
  max-width: 1100px;
  margin: 0 auto;
  display:grid;
  grid-template-columns: .92fr 1.08fr;
  gap: 1.25rem;
  align-items:start;
}

.rsv-015__card{
  border-radius: 22px;
  border: 2px solid rgba(209, 62, 117, .60);
  background: rgba(255,255,255,.86);
  box-shadow: 0 22px 60px rgba(0,0,0,.08);
  padding: 1.4rem 1.5rem;
  backdrop-filter: blur(10px);
  transform: translateY(16px);
  opacity: 0;
}

.rsv-015__h3{ margin:0 0 1rem; font-size:1.2rem;
text-align: center;
}

.rsv-015__row{
  border: 1px solid rgba(209, 62, 117, .60);
  border-radius: 16px;
  padding: .75rem .85rem;
  background: rgba(255,255,255,.70);
  margin-bottom: .7rem;
}
.rsv-015__k{ display:block; font-size:.82rem; letter-spacing:.14em; text-transform:uppercase; opacity:.65; }
.rsv-015__v{ display:block; margin-top:.2rem; font-weight:800; line-height:1.35; }

.rsv-015__note{ margin:.8rem 0 0; opacity:.8; line-height:1.6; text-align: justify;}

.rsv-015__form{ display:grid; gap:.85rem; }
.rsv-015__field{ display:grid; gap:.35rem; }
.rsv-015__field span{ font-weight:700; }
.rsv-015__field input,
.rsv-015__field select,
.rsv-015__field textarea{
  width:100%;
  border-radius: 14px;
  border: 1px solid rgba(209, 62, 117, .60);
  padding: .85rem .9rem;
  background:#fff;
  font: inherit;
}
.rsv-015__field textarea{ resize: vertical; }

.rsv-015__cols{
  display:grid;
  grid-template-columns: 1fr 1fr;
  gap: .85rem;
}

.rsv-015__help{ font-size:.86rem; opacity:.7; }

.rsv-015__btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding: .95rem 1.1rem;
  border-radius: 999px;
  border: 1px solid rgba(0,0,0,.12);
  background-color:#89287f;
  color:#fff;
  font-weight:800;
  cursor:pointer;
  margin-left: 20%;
  margin-right: 20%;
}

.rsv-015__status{ margin:.25rem 0 0; min-height:1.2em; font-weight:700; text-align: center;}
.rsv-015__fineprint{ margin:1rem 0 0; opacity:.8; line-height:1.6; text-align: justify;}

.rsv-015.is-in .rsv-015__card{
  transform: translateY(0);
  opacity: 1;
  transition: transform 700ms ease, opacity 700ms ease;
}
.rsv-015.is-in .rsv-015__card:nth-child(2){ transition-delay: 120ms; }

@media (max-width: 900px){
  .rsv-015__grid{ grid-template-columns: 1fr; }
  .rsv-015__cols{ grid-template-columns: 1fr; }
}

@media (prefers-reduced-motion: reduce){
  .rsv-015__card{ transform:none; opacity:1; }
  .rsv-015.is-in .rsv-015__card{ transition:none; }
}
.rsv-015__deadline{
  margin: .8rem 0 17px 0;
  opacity: .85;
}
/* ===========================
   gal-016 | Galería (OneDrive QR)
   =========================== */

.gal-016{
  padding: 6rem 0;
  background: linear-gradient(
    180deg,
    rgba(142,42,90,.08),
    rgba(106,31,59,.06)
  ), var(--clr-bg-main);
  color: var(--clr-text-main);
}
.eyebrow{
    letter-spacing: .18em;
    text-transform: uppercase;
    font-size: 24px !important;
    opacity: .7;
}

.gal-016__wrap{
  max-width: 980px;
  margin: 0 auto;
  padding: 0 1rem;
}

.gal-016__head{
  text-align: center;
  max-width: 720px;
  margin: 0 auto 2.6rem;
}

.gal-016__title{
  color: var(--clr-wine);
}

.gal-016__subtitle{
  margin: 0;
  opacity: .85;
}

.gal-016__qrBox{
  max-width: 680px;
  margin: 0 auto;
  padding: 1.6rem 1.6rem 1.8rem;
      border-radius: 26px;
  background: rgba(255,255,255,.88);
  border: 1px solid rgba(0,0,0,.08);
  box-shadow: var(--shadow);
  backdrop-filter: blur(10px);
  text-align: center;
}

.gal-016__qrFrame{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 14px;
  border-radius: 26px;
  background: #fff;
  border: 1px solid rgba(0,0,0,.10);
  box-shadow: 0 18px 45px rgba(0,0,0,.10);
  margin: 0 auto .95rem;
}

.gal-016__qrFrame img{
  display: block;
  width: min(320px, 72vw);
  height: auto;
  border-radius: 18px;
}

.gal-016__hint{
  margin: .4rem auto 1rem;
  max-width: 520px;
  opacity: .85;
  line-height: 1.6;
}

.gal-016__actions{
  display: flex;
  gap: .75rem;
  justify-content: center;
  flex-wrap: wrap;
  margin-top: .6rem;
}

.gal-016__btn{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: .95rem 1.15rem;
  border-radius: 999px;
  border: 1px solid rgba(0,0,0,.12);
  background-color: #89287f;
  color: #fff;
  font-weight: 800;
  text-decoration: none;
  cursor: pointer;
  transition: transform .15s ease, filter .2s ease;
}

.gal-016__btn:hover{ filter: brightness(1.06); transform: translateY(-1px); }
.gal-016__btn:active{ transform: translateY(0); }

.gal-016__btn--ghost{
  background-color: #89287f;
  color: #fff;
}

.gal-016__fineprint{
  margin-top: 1rem;
  font-size: .92rem;
  opacity: .75;
}

/* Detalle decorativo opcional */
.gal-016__spark{
  display:inline-block;
  color: var(--clr-olive);
  font-weight: 800;
}

/* Responsive */
@media (max-width: 520px){
  .gal-016{ padding: 5rem 0; }
  .gal-016__qrBox{ padding: 1.35rem 1.1rem 1.5rem; }
}
/* ===========================
   fot-017 | Footer / Cierre
   =========================== */

.fot-017{
  padding: 6rem 0 5rem;
  background: var(--clr-bg-main);
  color: var(--clr-wine);
  text-align: center;
}

.fot-017__wrap{
  max-width: 720px;
  margin: 0 auto;
  padding: 0 1rem;
}

.fot-017__quote{
  font-family: var(--font-heading);
  font-size: clamp(1.3rem, 4.5vw, 1.75rem);
  font-style: italic;
  line-height: 1.5;
  margin-bottom: 2rem;
  opacity: .95;
}

.fot-017__names{
  font-family: var(--font-heading);
  font-size: clamp(1.8rem, 6vw, 2.6rem);
  font-weight: 700;
  margin: 0;
  letter-spacing: .03em;
}

.fot-017__date{
  margin-top: .5rem;
  font-size: .95rem;
  letter-spacing: .12em;
  text-transform: uppercase;
  opacity: .85;
}

.fot-017__divider{
  width: 70px;
  height: 2px;
  background: var(--clr-rose);
  margin: 2.2rem auto 1.8rem;
  border-radius: 2px;
}

.fot-017__thanks{
  font-size: .95rem;
  opacity: .9;
  line-height: 1.6;
}

/* Responsive */
@media (max-width: 520px){
  .fot-017{
    padding: 5rem 0 4.2rem;
  }
}
.fot-017__signature{
  margin-top: 1.4rem;
  font-size: .85rem;
  opacity: .75;
}
/* =========================
   ORNAMENTO INFERIOR FOT-017
   ========================= */

.fot-017 {
  position: relative;
  overflow: hidden; /* evita scroll horizontal */
}

.fot-017__ornament {
  position: absolute;
  bottom: -2px; /* pequeño solape elegante */
  left: 50%;
  transform: translateX(-50%);
  width: 100%;
  pointer-events: none;
  z-index: 3;
}

.fot-017__ornament img {
  width: 100%;
  max-width: 2000px; /* controla exceso en pantallas grandes */
  height: auto;
  display: block;
  margin: 0 auto;
}
.fot-017__ornament img {
  filter: drop-shadow(0 -6px 12px rgba(0,0,0,.12));
}
.fot-017__ornament {
  mask-image: linear-gradient(to top, black 70%, transparent);
  -webkit-mask-image: linear-gradient(to top, black 70%, transparent);
}
/* =========================
   fot-017: FIX marco tapa texto (desktop)
   ========================= */
   .health-event-status {
    margin-top: 6px;
}
.fot-017{
  position: relative;
  overflow: hidden;
}

/* El contenido SIEMPRE arriba */
.fot-017__wrap{
  position: relative;
  z-index: 3;
}

/* El marco SIEMPRE abajo y detrás */
.fot-017__ornament{
  position: absolute !important;
  right: 0;
  bottom: 0;
  z-index: 1;
  pointer-events: none;
}

.fot-017__ornament .fot-marco{
  display: block;
  width: 100%;
  height: auto;
}

/* Deja “aire” para que el marco no invada el texto */
.fot-017{
  padding-bottom: 92px; /* base móvil */
}

@media (min-width: 992px){
  .fot-017{
    padding-bottom: 190px; /* escritorio (sube/baja si quieres) */
  }
}
.music-fab{
  position: fixed;
  right: 18px;
  bottom: 18px;
  z-index: 9999;

  width: 52px;
  height: 52px;
  border-radius: 999px;

  display: inline-flex;
  align-items: center;
  justify-content: center;

  border: 1px solid rgba(0,0,0,.10);
  background: rgba(255,255,255,.88);
  color: var(--clr-wine);

  box-shadow: 0 18px 45px rgba(0,0,0,.14);
  backdrop-filter: blur(10px);

  font-weight: 900;
  cursor: pointer;
  transition: transform .15s ease, filter .2s ease;
}

.music-fab:hover{ filter: brightness(1.05); transform: translateY(-1px); }
.music-fab:active{ transform: translateY(0); }

.music-fab.is-playing{
  background: rgba(106,31,59,.92);
  color: var(--clr-bg-main);
  border-color: rgba(255,255,255,.18);
}
.music-fab.is-playing{
  animation: musicPulse 1.8s ease-in-out infinite;
}

@keyframes musicPulse{
  0%,100%{ transform: translateY(0) scale(1); }
  50%{ transform: translateY(-1px) scale(1.04); }
}

.rsv-015__status--success{
  margin-top: 1rem;
  padding: .9rem 1rem;
  border-radius: 14px;
  background: rgba(76, 175, 80, .14);
  border: 1px solid rgba(76, 175, 80, .35);
  color: #2e7d32;
  font-weight: 600;
  text-align: center;
  box-shadow: 0 8px 20px rgba(46,125,50,.08);
}
