/* Fuentes locales */
@font-face{font-family:"Pinyon Script";src:url(../fonts/pinyon-script-latin-400-normal.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Cormorant Garamond";src:url(../fonts/cormorant-garamond-latin-400-normal.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Cormorant Garamond";src:url(../fonts/cormorant-garamond-latin-500-normal.woff2) format("woff2");font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:"Cormorant Garamond";src:url(../fonts/cormorant-garamond-latin-600-normal.woff2) format("woff2");font-weight:600;font-style:normal;font-display:swap}
@font-face{font-family:"Cormorant Garamond";src:url(../fonts/cormorant-garamond-latin-400-italic.woff2) format("woff2");font-weight:400;font-style:italic;font-display:swap}

:root{
  --sobre:#2C140E; --solapa:#3A0F14; --solapa-2:#8A4A45; --cera:#EBC4AE; --papel:#F0D2C4;
  --vino:#6B1E26; --cobre:#C77A3E; --luz:#FFE3B0; --tinta:#4A1A1F; --wa:#1F7A43;
  --col:480px;
  --script:"Pinyon Script","Snell Roundhand",cursive;
  --serif:"Cormorant Garamond",Garamond,Georgia,serif;
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:auto}
body{
  margin:0;min-height:100%;color:var(--tinta);font-family:var(--serif);font-size:19px;line-height:1.5;
  background:#2a1310 radial-gradient(120% 80% at 50% 0%,#4a211b 0%,#2a1310 60%,#1d0c0a 100%) fixed;
}
body.bloqueado{overflow:hidden;height:100svh;touch-action:none}
img{max-width:100%}
[hidden]{display:none!important}
:focus-visible{outline:2px solid var(--cobre);outline-offset:3px;border-radius:4px}
.saltar-contenido{position:absolute;left:-999px;top:8px;z-index:100;background:#fff;color:var(--vino);padding:8px 12px}
.saltar-contenido:focus{left:8px}
.noscript{position:fixed;inset:auto 0 0;background:#fff;color:var(--vino);text-align:center;padding:12px;margin:0}

/* Columna móvil centrada */
.app{
  position:relative;max-width:var(--col);margin:0 auto;overflow:hidden;container-type:inline-size;
  background:var(--papel) url(../img/papel.webp) repeat;background-size:256px;
  box-shadow:0 0 60px rgba(0,0,0,.45);
}

/* ---------- A. Apertura ---------- */
.apertura{
  position:fixed;top:0;bottom:0;left:50%;width:min(100%,var(--col));transform:translateX(-50%);
  z-index:50;background:var(--sobre);overflow:hidden;container-type:size;
}
.ap-lienzo{position:absolute;left:50%;top:50%;width:max(100cqw,calc(100cqh * 768 / 1376));aspect-ratio:768/1376;transform:translate(-50%,-50%);container-type:inline-size}
.ap-capa{position:absolute;inset:0;will-change:transform,opacity}
.ap-img{position:absolute;inset:0;width:100%;height:100%;display:block}
/* Monograma de la pareja sobre el sello de cera (sustituye las iniciales de la ilustración) */
.ap-mono{position:absolute;left:var(--x);top:var(--y);width:var(--d);aspect-ratio:1;transform:translate(-50%,-50%);border-radius:50%;display:flex;align-items:center;justify-content:center;pointer-events:none;font-family:var(--script);line-height:1;color:#a5705f;background:radial-gradient(circle at 42% 36%,#f3d1bf 0%,#e8baa4 48%,#dda792 72%,rgba(221,167,146,.85) 86%,rgba(221,167,146,0) 100%);text-shadow:0 1px 0 rgba(255,236,226,.75),0 -1px 0 rgba(120,62,50,.35);letter-spacing:-.04em}
.cierre-sello-caja{position:relative;display:block;width:120px;height:120px;margin:34px auto 12px}
.cierre-sello-caja .cierre-sello{margin:0}
.ap-abierto{opacity:0}
.ap-brillo{
  position:absolute;left:50%;top:49%;width:38cqw;aspect-ratio:1;transform:translate(-50%,-50%);border-radius:50%;opacity:0;pointer-events:none;
  background:radial-gradient(circle,transparent 52%,rgba(255,227,176,.85) 60%,rgba(199,122,62,.35) 68%,transparent 74%);
  mix-blend-mode:screen;
}
.ap-nucleo{
  position:absolute;left:50%;top:49.3%;width:110cqw;aspect-ratio:1;transform:translate(-50%,-50%) scale(.2);opacity:0;pointer-events:none;border-radius:50%;
  background:radial-gradient(circle,#fff 0%,#fff6e4 14%,rgba(255,227,176,.85) 30%,rgba(255,227,176,.35) 50%,transparent 70%);
}
.ap-destello{position:absolute;inset:0;background:radial-gradient(circle at 50% 49%,#fffaf0,var(--luz) 60%,#f6d3b0);opacity:0;pointer-events:none}
.ap-para{
  position:absolute;left:0;right:0;top:14%;margin:0;padding:0 24px;text-align:center;
  font-family:var(--script);font-size:clamp(28px,9cqw,40px);line-height:1.15;color:var(--cera);text-shadow:0 1px 8px rgba(0,0,0,.6);
}
.ap-sello{
  position:absolute;left:50%;top:49%;width:34cqw;aspect-ratio:1;transform:translate(-50%,-50%);
  border:0;border-radius:50%;background:transparent;cursor:pointer;-webkit-tap-highlight-color:transparent;
}
.ap-pista{
  position:absolute;left:50%;top:calc(49% + 24cqw);transform:translateX(-50%);white-space:nowrap;
  font:500 17px/1 var(--serif);letter-spacing:.06em;color:#fbe7da;background:rgba(44,20,14,.6);
  border:1px solid rgba(235,196,174,.55);border-radius:99px;padding:10px 18px;cursor:pointer;
  animation:pulso 2.6s ease-in-out infinite;
}
@keyframes pulso{0%,100%{opacity:.8;transform:translateX(-50%) scale(1)}50%{opacity:1;transform:translateX(-50%) scale(1.04)}}
.ap-saltar{
  position:absolute;top:calc(12px + env(safe-area-inset-top));right:calc(12px + env(safe-area-inset-right));
  font:500 15px/1 var(--serif);letter-spacing:.08em;color:#f3d9cb;background:rgba(44,20,14,.45);
  border:1px solid rgba(235,196,174,.35);border-radius:99px;padding:8px 14px;cursor:pointer;
}

/* ---------- B. Portada ---------- */
.portada{position:relative;min-height:100svh;display:flex;flex-direction:column}
.portada-arte{position:relative}
.portada-img{display:block;width:100%;height:auto;aspect-ratio:768/1376}
.portada-arte::after{content:"";position:absolute;left:0;right:0;bottom:0;height:12%;background:linear-gradient(to bottom,rgba(240,210,196,0),var(--papel));pointer-events:none}
.petalos-canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;mix-blend-mode:multiply}
/* El bloque de texto queda en la zona central despejada de la ilustración (sea cual sea): columna estrecha,
   un velo suave del color del papel detrás y un halo del mismo color en cada letra, para que nunca se pierda
   sobre el arco, las ramas o cualquier detalle del dibujo. */
.portada-txt{position:absolute;left:50%;top:15.5%;width:66%;transform:translateX(-50%);text-align:center;z-index:3;padding:0;isolation:isolate}
.portada-txt::before{
  content:"";position:absolute;z-index:-1;left:-14%;right:-14%;top:-10%;bottom:-10%;pointer-events:none;
  background:radial-gradient(closest-side,color-mix(in srgb,var(--papel) 82%,transparent) 0%,color-mix(in srgb,var(--papel) 62%,transparent) 55%,color-mix(in srgb,var(--papel) 0%,transparent) 100%);
  filter:blur(6px);
}
.portada-txt p{margin:0}
.pt-sup{font-weight:600;font-size:clamp(13px,3.9cqw,18px);letter-spacing:.2em;padding-left:.2em;max-width:54cqw;margin:0 auto!important;text-transform:uppercase;color:var(--vino);line-height:1.3;text-wrap:balance;
  text-shadow:0 0 12px var(--papel),0 0 6px var(--papel),0 0 2px var(--papel),0 0 1px var(--papel)}
.pt-fecha{margin-top:4px!important;padding-left:.2em;font-weight:600;font-size:clamp(15px,4.4cqw,20px);letter-spacing:.2em;color:var(--vino);font-variant-numeric:tabular-nums;
  text-shadow:0 0 12px var(--papel),0 0 6px var(--papel),0 0 2px var(--papel),0 0 1px var(--papel)}
.pt-nombres{
  margin:2.5cqw 0 0;font-family:var(--script);font-weight:400;color:var(--vino);
  font-size:clamp(42px,13cqw,62px);line-height:.98;display:flex;flex-direction:column;align-items:center;overflow-wrap:anywhere;
  text-shadow:0 0 16px var(--papel),0 0 8px var(--papel),0 0 3px var(--papel),0 0 1px var(--papel);
}
.pt-amp{font-size:.55em;line-height:1.1}
.borrador{
  position:absolute;top:calc(10px + env(safe-area-inset-top));left:10px;z-index:4;margin:0;
  font:600 13px/1 system-ui,-apple-system,sans-serif;color:#5c3b00;background:#fff3cd;border:1px solid #e6c46e;border-radius:6px;padding:6px 9px;
}
.desliza{
  margin:auto auto 0;padding:14px 0 calc(22px + env(safe-area-inset-bottom));display:flex;flex-direction:column;align-items:center;gap:6px;
  color:var(--vino);text-decoration:none;font-weight:600;font-size:15px;letter-spacing:.3em;text-transform:uppercase;z-index:3;
}
.desliza i{display:block;width:1px;height:30px;background:var(--vino);position:relative;animation:oscila 2.2s ease-in-out infinite}
.desliza i::after{content:"";position:absolute;left:-4px;bottom:0;width:8px;height:8px;border-right:1px solid var(--vino);border-bottom:1px solid var(--vino);transform:rotate(45deg)}
@keyframes oscila{0%,100%{transform:translateY(0)}50%{transform:translateY(7px)}}

/* ---------- Secciones ---------- */
.seccion{position:relative;padding:56px 28px 64px;text-align:center}
.titulo{font-family:var(--script);font-weight:400;color:var(--vino);font-size:clamp(36px,10.5cqw,48px);line-height:1.1;margin:0 0 12px}
.rasgado{position:relative;height:0;pointer-events:none}
.rasgado img{position:absolute;left:-12%;width:124%;max-width:none;top:-26px;height:auto;mix-blend-mode:multiply;opacity:.9}
.rasgado-b img{transform:scaleX(-1)}

/* C. Invitación */
.invitacion{padding-top:0;min-height:70svh}
.flores{display:block;width:118%;max-width:none;margin:-2% -9% 0;mix-blend-mode:multiply;will-change:transform}
.saludo{margin:4px 0 6px;font-style:italic;font-size:21px;color:var(--vino)}
.inv-nombres{font-family:var(--script);color:var(--vino);font-size:clamp(34px,9.6cqw,48px);line-height:1.1;margin:8px 0 10px;white-space:nowrap}
.inv-texto{font-size:22px;line-height:1.45;margin:0 auto;max-width:20em}

/* Foto de la pareja (opcional) */
.foto{padding-top:40px;padding-bottom:52px}
.foto-marco{
  position:relative;width:74%;max-width:320px;margin:0 auto;aspect-ratio:3/4;padding:10px;
  border-radius:999px 999px 10px 10px;background:linear-gradient(160deg,#fbf3ec,#ead2c4);
  box-shadow:0 10px 26px rgba(74,26,31,.18),inset 0 0 0 1px rgba(199,122,62,.45);
}
.foto-marco img{display:block;width:100%;height:100%;object-fit:cover;object-position:50% 30%;border-radius:999px 999px 6px 6px}
.foto-marco::after{content:"";position:absolute;inset:4px;border-radius:999px 999px 8px 8px;border:1px solid rgba(199,122,62,.55);pointer-events:none}
.foto-frase{font-family:var(--script);color:var(--vino);font-size:clamp(30px,9cqw,40px);line-height:1.15;margin:20px 0 0}

/* E. Cuenta atrás */
.cd{display:flex;justify-content:center;gap:clamp(8px,3cqw,16px);margin:16px 0 14px}
.cd-bloque{min-width:64px;display:flex;flex-direction:column;align-items:center}
.cd-num{display:inline-flex;font-size:clamp(40px,12cqw,52px);font-weight:500;line-height:1;color:var(--vino);font-variant-numeric:tabular-nums lining-nums}
.dg{position:relative;display:inline-block;width:.56em;height:1.1em;overflow:hidden}
.dg span{position:absolute;left:0;right:0;top:.05em;text-align:center}
.dg .sale{animation:sale .26s ease-in forwards}
.dg .entra{animation:entra .26s ease-out}
@keyframes sale{to{transform:translateY(-55%);opacity:0;filter:blur(2px)}}
@keyframes entra{from{transform:translateY(55%);opacity:0;filter:blur(2px)}}
.cd-lbl{margin-top:6px;font-size:13px;font-weight:600;letter-spacing:.16em;text-transform:uppercase}
.cd-hoy{font-family:var(--script);color:var(--vino);font-size:clamp(38px,11cqw,50px);margin:12px 0}
.cd-fecha{margin:0;font-size:19px}

/* F. Programa */
.con-adornos{display:flex;align-items:center;justify-content:center;gap:8px;font-size:clamp(30px,8.6cqw,42px);white-space:nowrap}
.adorno{flex:0 0 26px;height:14px;position:relative}
.adorno::before{content:"";position:absolute;left:0;right:8px;top:50%;height:1px;background:var(--vino)}
.adorno::after{content:"";position:absolute;right:0;top:50%;width:7px;height:7px;border:1px solid var(--vino);transform:translateY(-50%) rotate(45deg)}
.adorno-d{transform:scaleX(-1)}
.prog{position:relative;max-width:330px;margin:22px auto 0}
.prog-lista{list-style:none;margin:0;padding:0}
.prog-lista li{display:grid;grid-template-columns:1fr 34px 1fr;align-items:center;height:76px}
.prog-hora{text-align:right;font-weight:600;font-size:21px;font-variant-numeric:tabular-nums;padding-right:12px}
.prog-acto{text-align:left;font-size:21px;padding-left:12px}
.rombo{width:11px;height:11px;margin:auto;background:var(--papel);border:1px solid var(--vino);transform:rotate(45deg);position:relative;z-index:1}
.prog-linea{position:absolute;left:50%;top:38px;bottom:38px;width:1px;background:var(--vino);opacity:.55}
.prog-rosa{position:absolute;left:50%;top:0;width:58px;height:58px;z-index:2;pointer-events:none;will-change:transform;transform:translate(-50%,8px)}

/* G. Ubicación */
.ubicacion{overflow:hidden}
.mini-adorno{display:block;width:9px;height:9px;margin:0 auto 14px;border:1px solid var(--vino);transform:rotate(45deg)}
.lugar-nombre{margin:0;font-size:24px;font-weight:600;color:var(--vino)}
.lugar-fecha,.lugar-dir{margin:4px 0 0;font-size:19px}
.lugar-img{display:block;width:100%;height:auto;margin:14px auto 6px;mix-blend-mode:multiply}
.petalo{position:absolute;width:76px;height:76px;background:url(../img/petalos.webp) no-repeat;background-size:200% 200%;mix-blend-mode:multiply;pointer-events:none}
.petalo-i{left:-26px;top:70px;background-position:0 0}
.petalo-d{right:-24px;top:260px;background-position:100% 100%}

/* Botones */
.boton{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:12px 26px;margin-top:14px;
  border:1px solid var(--vino);border-radius:99px;background:var(--vino);color:#fff;
  font:600 18px/1 var(--serif);letter-spacing:.06em;text-decoration:none;cursor:pointer;
}
.boton:hover{background:#561820}
.boton-sec{background:transparent;color:var(--vino)}
.boton-sec:hover{background:rgba(107,30,38,.08)}
.boton-wa{background:var(--wa);border-color:var(--wa)}
.boton-wa:hover{background:#18653a}
.boton[aria-busy="true"]{opacity:.75;cursor:progress}
.enlace{background:none;border:0;color:var(--vino);font:italic 17px var(--serif);text-decoration:underline;cursor:pointer;padding:8px;margin-top:10px}

/* H. Confirmación */
.rsvp-limite{margin:0 0 8px;font-size:19px}
.form{max-width:360px;margin:8px auto 0;text-align:left}
.campo{margin:14px 0 0;border:0;padding:0}
.campo label,.campo legend{display:block;font-weight:600;font-size:17px;margin-bottom:4px;padding:0}
.campo input[type=text],.campo select,.campo textarea{
  width:100%;font:18px/1.3 var(--serif);color:var(--tinta);background:#fff8f4;border:1px solid #b88f82;border-radius:8px;padding:10px 12px;min-height:46px;
}
.campo textarea{resize:vertical}
.campo [aria-invalid="true"]{border-color:#9b1c1c;box-shadow:0 0 0 1px #9b1c1c}
.radios{display:flex;flex-direction:column;gap:6px}
.radios label{font-weight:400;font-size:18px;display:flex;align-items:center;gap:10px;min-height:40px;cursor:pointer}
.radios input{width:20px;height:20px;accent-color:var(--vino)}
.error,.form-error{color:#8e1616;font-size:16px;font-weight:600;margin:4px 0 0}
.form .boton{width:100%}
.rsvp-ok{max-width:360px;margin:16px auto 0;outline:none}
.rsvp-ok-txt{font-size:20px;margin:0}
.rsvp-nota{font-size:15px;margin:10px 0 0;background:#fff3cd;color:#5c3b00;border-radius:8px;padding:8px 10px;text-align:left}
.rsvp-cerrado{font-size:20px;font-style:italic}

/* Cierre */
.cierre{padding-bottom:calc(48px + env(safe-area-inset-bottom))}
.cierre-sello{display:block;width:120px;height:120px;margin:34px auto 12px;filter:drop-shadow(0 4px 8px rgba(74,26,31,.25))}
.cierre-txt{margin:0;font-size:22px}
.cierre-nombres{font-family:var(--script);color:var(--vino);font-size:clamp(38px,11cqw,48px);margin:2px 0 10px}

/* Música (solo si hay archivo) */
.musica{
  position:fixed;z-index:40;width:52px;height:52px;border-radius:50%;border:0;background:var(--vino);color:#fff;cursor:pointer;
  right:max(16px,calc((100vw - var(--col)) / 2 + 16px));right:max(calc(16px + env(safe-area-inset-right)),calc((100vw - var(--col)) / 2 + 16px));
  bottom:calc(16px + env(safe-area-inset-bottom));box-shadow:0 4px 14px rgba(0,0,0,.3);display:flex;align-items:center;justify-content:center;
}
.musica svg{width:20px;height:20px;fill:currentColor}

@media (prefers-reduced-motion: reduce){
  .ap-pista,.desliza i{animation:none}
  .dg .sale,.dg .entra{animation:none}
}

/* Selector de idioma (invitaciones bilingües) */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.idiomas{position:fixed;z-index:60;top:calc(12px + env(safe-area-inset-top));left:max(12px,calc((100vw - var(--col)) / 2 + 12px));display:flex;border:1px solid rgba(235,196,174,.6);border-radius:99px;overflow:hidden;background:rgba(44,20,14,.55);backdrop-filter:blur(4px)}
.idiomas button{font:600 13px/1 var(--serif);letter-spacing:.08em;color:#f3d9cb;background:none;border:0;padding:8px 11px;cursor:pointer}
.idiomas button[aria-pressed="true"]{background:color-mix(in srgb,var(--cera) 30%,#fff6ee);color:#241612}
/* Foto animada de la pareja */
.foto-marco{overflow:hidden}
.foto-marco .foto-video{position:absolute;inset:10px;width:calc(100% - 20px);height:calc(100% - 20px);object-fit:cover;border-radius:999px 999px 6px 6px}