/* Castilacre · motor común de invitaciones
   Cada diseño define sus colores y tipografías en su propia página. */
:root{
  --mesa:#EFE9DF; --papel:#FBF8F2; --tinta:#26364F; --tinta-2:#6B7383; --oro:#B08D57; --linea:#DDD3C3;
  --banda:250,246,238; --banda-txt:var(--tinta);
  --f-display:'Cormorant Garamond','Bodoni Moda',Georgia,serif;
  --f-body:'Jost','Futura','Avenir Next',system-ui,sans-serif;
  --f-script:'Pinyon Script','Snell Roundhand','Apple Chancery',cursive;
  --grano:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .42 0 0 0 0 .34 0 0 0 0 .26 0 0 0 .08 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  color-scheme:light;
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--mesa);background-image:var(--grano);color:var(--tinta);font:300 16px/1.6 var(--f-body);-webkit-font-smoothing:antialiased}
body.cerrada{overflow:hidden;height:100svh}
img{max-width:100%;display:block}
button,input,textarea{font:inherit;color:inherit}
button{cursor:pointer}
:focus-visible{outline:2px solid var(--oro);outline-offset:4px;border-radius:4px}
[hidden]{display:none!important}
.eyebrow{font:400 11px/1.9 var(--f-body);letter-spacing:.32em;text-transform:uppercase;color:var(--tinta-2)}
h2{font:400 36px/1.1 var(--f-display);margin:6px 0 0;text-wrap:balance}
h3{font:400 25px/1.2 var(--f-display);margin:0}
p{margin:0}
.adorno{display:flex;align-items:center;justify-content:center;gap:12px;color:var(--oro);font-size:9px;margin:18px auto}
.adorno::before,.adorno::after{content:"";width:56px;height:1px;background:var(--linea)}

/* =========================== Escena de apertura =========================== */
.escena{position:relative;height:100svh;min-height:480px;overflow:hidden;background:var(--mesa)}
.borroso{position:absolute;inset:-6%;width:112%;height:112%;object-fit:cover;filter:blur(22px) saturate(.9);opacity:.95}
.vista{position:absolute;inset:0;will-change:transform}
.vista img{width:100%;height:100%;object-fit:cover}
.esc{position:absolute;left:0;top:0;transform-origin:0 0;will-change:transform}
.esc>img,.esc .capa{position:absolute;left:0;top:0;width:100%;height:100%}
.luz{position:absolute;inset:0;pointer-events:none;opacity:0;background:radial-gradient(circle at var(--lx,50%) var(--ly,50%),rgba(255,236,196,.9),rgba(255,226,170,.35) 24%,transparent 52%);mix-blend-mode:screen}
.petalos{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}

/* Lacre: botón, latido y dos mitades que se separan */
.lacre-btn{position:absolute;border:0;padding:0;background:none;border-radius:50%;z-index:5}
.lacre-btn::after{content:"";position:absolute;inset:-28%;border-radius:50%;border:2px solid rgba(255,236,196,.95);animation:latido 2.2s ease-out infinite .8s;pointer-events:none;box-shadow:0 0 12px rgba(255,230,180,.35)}
.abriendo .lacre-btn::after,.abierta .lacre-btn::after{display:none}
@keyframes latido{0%{transform:scale(.7);opacity:.95}100%{transform:scale(1.5);opacity:0}}
.mitad{position:absolute;inset:0;background-size:100% 100%;will-change:transform}
.mitad.m1,.lacre-svg .m1{clip-path:polygon(0 0,52% 0,44% 40%,56% 62%,46% 100%,0 100%)}
.mitad.m2,.lacre-svg .m2{clip-path:polygon(52% 0,100% 0,100% 100%,46% 100%,56% 62%,44% 40%)}
.mitad span{position:absolute;inset:0;display:grid;place-items:center;font:400 var(--fi,40px)/1 var(--f-script);color:rgba(92,64,26,.62);text-shadow:0 1px 0 rgba(255,238,200,.55),0 -1px 0 rgba(60,40,10,.25);padding-top:4%}
.lacre-svg{position:absolute;inset:0}
.lacre-svg svg{position:absolute;inset:0;width:100%;height:100%;filter:drop-shadow(0 2px 3px rgba(20,14,8,.45))}

/* Puerta (pasillo con hueco + dos hojas) */
.pe-puerta{position:absolute;perspective:600px}
.pe-puerta .hoja{position:absolute;top:0;height:100%;will-change:transform;backface-visibility:hidden}
.pe-puerta .hoja.izq{left:0;transform-origin:0 50%}
.pe-puerta .hoja.der{right:0;transform-origin:100% 50%}
.pe-puerta .lacre-btn{transform:translate(-50%,-50%)}

/* Puertas de cristal y telón */
.puertas{position:absolute;inset:0;perspective:1700px}
.puertas img{position:absolute;top:0;height:100%;will-change:transform;backface-visibility:hidden}

/* Sobre de cuatro solapas */
.solapas{position:absolute;inset:0;perspective:2200px}
.solapa{position:absolute;inset:0;transform-style:preserve-3d;will-change:transform}
.cara{position:absolute;inset:0;background-size:100% 100%}
.cara.frente{backface-visibility:hidden;-webkit-backface-visibility:hidden}
.cara.dorso{transform:translateZ(-1px)}

/* Sobre clásico */
.c-solapa-w{position:absolute;inset:0;perspective:2200px}
.c-solapa{position:absolute;inset:0;background-size:100% 100%;will-change:transform;backface-visibility:hidden}
.c-clip{position:absolute;inset:0}
.c-tarjeta,.c-bolsillo{position:absolute;background-repeat:no-repeat}
.c-tarjeta{filter:drop-shadow(0 6px 10px rgba(60,40,20,.18))}

/* Textos sobre la escena */
.arriba{position:absolute;left:0;right:0;top:0;padding:calc(30px + env(safe-area-inset-top,0px)) 20px 70px;text-align:center;background:linear-gradient(rgba(var(--banda),.95),rgba(var(--banda),.82) 55%,rgba(var(--banda),0));transition:opacity .6s;color:var(--banda-txt);z-index:6}
.para{font:400 clamp(32px,8.5vw,46px)/1.1 var(--f-script)}
.abajo{position:absolute;left:0;right:0;bottom:0;padding:60px 20px calc(28px + env(safe-area-inset-bottom,0px));text-align:center;background:linear-gradient(rgba(var(--banda),0),rgba(var(--banda),.88) 50%);transition:opacity .6s;color:var(--banda-txt);z-index:6;pointer-events:none}
.abajo .pista{font:500 10.5px/1 var(--f-body);letter-spacing:.3em;text-transform:uppercase}
.abriendo .arriba,.abriendo .abajo,.abierta .arriba,.abierta .abajo{opacity:0;pointer-events:none}

/* Portada: nombres al abrir */
.portada-txt{position:absolute;z-index:7;text-align:center;display:grid;justify-items:center;align-content:start;gap:2px;pointer-events:none;color:var(--banda-txt)}
.portada-txt.banda{left:0;right:0;top:0;padding:calc(42px + env(safe-area-inset-top,0px)) 20px 110px;background:linear-gradient(rgba(var(--banda),.95) 0%,rgba(var(--banda),.86) 58%,rgba(var(--banda),0) 100%);opacity:0;transition:opacity 1s}
.iniciada .portada-txt.banda{opacity:1}
.portada-txt .eyebrow{color:inherit}
.nombres{font:400 clamp(42px,11.5vw,72px)/1 var(--f-display);margin:10px 0 0;letter-spacing:-.005em}
.nombres i{font:italic 400 .62em/1 var(--f-display);color:var(--oro);margin:0 .16em}
.fecha-portada{font:400 15px/1.6 var(--f-display);letter-spacing:.24em;text-transform:uppercase}
.lugar-portada{font:400 11px/1.6 var(--f-body);letter-spacing:.32em;text-transform:uppercase;opacity:.75}
/* Nombres dentro del marco o de la tarjeta (coordenadas de la imagen) */
.portada-txt.marco{container-type:inline-size;align-content:center;color:var(--tinta);gap:0}
.marco .eyebrow{font-size:max(3.1cqw,calc(8.5px*var(--ik,1)));letter-spacing:.3em;line-height:1.9}
.marco .nombres{font-size:max(15cqw,calc(30px*var(--ik,1)));margin:.35em 0 .1em}
.marco .nombres span{display:block}
.marco .nombres i{display:block;margin:.08em 0;font-size:.62em}
.marco .adorno{margin:.6em auto;font-size:1.6cqw}
.marco .adorno::before,.marco .adorno::after{width:12cqw}
.marco .fecha-portada{font-size:max(4.4cqw,calc(11px*var(--ik,1)))}
.marco .lugar-portada{font-size:max(2.9cqw,calc(8.5px*var(--ik,1)))}
.marco.ancho .eyebrow{font-size:2.2cqw}
.marco.ancho .nombres{font-size:8.5cqw;margin:.3em 0 0}
.marco.ancho .nombres span{display:inline}
.marco.ancho .nombres i{display:inline;margin:0 .2em;font-size:.62em}
.marco.ancho .adorno{margin:.5em auto;font-size:1.1cqw}
.marco.ancho .fecha-portada{font-size:3cqw}
.marco.ancho .lugar-portada{font-size:2cqw}
.aparece{opacity:0;transform:translateY(14px);transition:opacity 1.2s ease,transform 1.4s cubic-bezier(.2,.7,.2,1)}
.iniciada .aparece{opacity:1;transform:none}
.iniciada .a1{transition-delay:.15s}.iniciada .a2{transition-delay:.45s}.iniciada .a3{transition-delay:.75s}.iniciada .a4{transition-delay:1.05s}
.desliza{position:absolute;z-index:8;left:50%;bottom:calc(26px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);display:grid;justify-items:center;gap:6px;font:400 10px/1 var(--f-body);letter-spacing:.32em;color:var(--banda-txt);text-decoration:none;background:rgba(var(--banda),.9);padding:12px 18px;border-radius:999px;opacity:0;pointer-events:none;transition:opacity 1s 1.4s;white-space:nowrap}
.iniciada .desliza{opacity:1;pointer-events:auto}
.desliza b{font-weight:300;font-size:16px;animation:baja 2s ease-in-out infinite}
@keyframes baja{50%{transform:translateY(5px)}}
.incrustada .arriba{padding-top:58px}
.incrustada .portada-txt.banda{padding-top:62px}

/* =========================== La invitación =========================== */
main{position:relative;max-width:600px;margin:0 auto;background:var(--papel);background-image:var(--grano);box-shadow:0 0 80px rgba(40,30,20,.12)}
.sec{position:relative;padding:76px 28px;text-align:center;display:grid;justify-items:center;gap:6px}
.sec+.sec{border-top:1px solid color-mix(in srgb,var(--linea) 55%,transparent)}
.cuerpo{font:400 19px/1.6 var(--f-display);max-width:30ch}
.cuerpo.peq{font:300 15.5px/1.65 var(--f-body);color:var(--tinta-2);max-width:34ch}
.frase{font:italic 400 27px/1.35 var(--f-display);max-width:20ch;margin-top:10px}
.revela{opacity:0;transform:translateY(22px);transition:opacity 1s ease,transform 1.1s cubic-bezier(.2,.7,.2,1)}
.revela.visto{opacity:1;transform:none}
.marco-c{border:1px solid var(--linea);outline:1px solid var(--linea);outline-offset:5px;padding:34px 18px 28px;width:100%;max-width:440px;display:grid;justify-items:center;gap:6px;margin-top:18px}
.cuenta{display:grid;grid-template-columns:repeat(4,1fr);width:100%;margin-top:14px}
.cuenta div{display:grid;gap:4px;border-left:1px solid var(--linea)}
.cuenta div:first-child{border-left:0}
.cuenta b{font:400 34px/1 var(--f-display);font-variant-numeric:lining-nums tabular-nums}
.cuenta span{font:400 9.5px/1 var(--f-body);letter-spacing:.24em;color:var(--tinta-2)}
.foto{width:78%;max-width:380px;aspect-ratio:4/5;margin:24px auto 18px;border-radius:200px 200px 4px 4px;overflow:hidden;border:1px solid var(--linea);outline:1px solid var(--linea);outline-offset:6px}
.foto img{width:100%;height:100%;object-fit:cover}
.hora{font:400 13px/1 var(--f-body);letter-spacing:.3em;color:var(--oro);margin-top:6px}
.boton{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:46px;padding:12px 24px;margin-top:18px;border:1px solid var(--tinta);border-radius:999px;background:transparent;font:400 11px/1 var(--f-body);letter-spacing:.24em;text-transform:uppercase;text-decoration:none;color:var(--tinta);transition:background .25s,color .25s}
.boton:hover{background:var(--tinta);color:var(--papel)}
.boton.lleno{background:var(--tinta);color:var(--papel)}
.arco{position:relative;width:100%;max-width:440px;margin-top:18px;padding:64px 28px 40px;border:1px solid var(--linea);border-radius:220px 220px 6px 6px}
.programa{list-style:none;margin:0;padding:0;display:grid;gap:26px}
.programa li{display:grid;gap:4px}
.programa time{font:400 12px/1 var(--f-body);letter-spacing:.3em;color:var(--oro)}
.programa p{font-size:14.5px;color:var(--tinta-2)}
.cuenta-banco{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:10px;margin-top:16px;font:400 16px/1.4 var(--f-display);letter-spacing:.08em;user-select:all}
.cuenta-banco button{border:1px solid var(--linea);background:transparent;border-radius:999px;padding:6px 12px;font:400 10px/1 var(--f-body);letter-spacing:.2em;text-transform:uppercase;user-select:none}
form.rsvp{width:100%;max-width:420px;display:grid;gap:16px;margin-top:22px;text-align:left}
.campo{display:grid;gap:6px}
.campo>span,.campo legend{font:400 10px/1 var(--f-body);letter-spacing:.26em;text-transform:uppercase;color:var(--tinta-2)}
.campo input,.campo textarea{width:100%;border:0;border-bottom:1px solid var(--linea);background:transparent;padding:10px 2px;font:400 18px/1.4 var(--f-display);border-radius:0}
.campo textarea{min-height:76px;resize:vertical}
.campo input:focus,.campo textarea:focus{outline:none;border-bottom-color:var(--tinta)}
.campo input::placeholder,.campo textarea::placeholder{color:var(--tinta-2);opacity:.7}
fieldset.campo{border:0;padding:0;margin:0}
.opciones{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:4px}
.opciones label{position:relative}
.opciones input{position:absolute;opacity:0}
.opciones span{display:block;text-align:center;border:1px solid var(--linea);border-radius:999px;padding:12px 8px;font:400 16px/1.2 var(--f-display);transition:all .2s;cursor:pointer}
.opciones input:checked+span{background:var(--tinta);color:var(--papel);border-color:var(--tinta)}
.opciones input:focus-visible+span{outline:2px solid var(--oro);outline-offset:3px}
.contador{display:flex;align-items:center;gap:18px;margin-top:4px}
.contador button{width:40px;height:40px;border-radius:50%;border:1px solid var(--linea);background:transparent;font:300 20px/1 var(--f-body)}
.contador output{font:400 26px/1 var(--f-display);min-width:1ch;text-align:center}
.contador small{font-size:13px;color:var(--tinta-2)}
.consent{display:flex;gap:10px;align-items:flex-start;font-size:13px;color:var(--tinta-2);line-height:1.5}
.consent input{margin-top:3px;accent-color:var(--tinta)}
.aviso{font-size:12px;color:var(--tinta-2);text-align:center}
.error{color:#9A3B32;font-size:14px;text-align:center}
.gracias{display:grid;justify-items:center;gap:8px;margin-top:22px}
.gracias .firma{font:400 42px/1 var(--f-script);color:var(--oro)}
footer.final{padding:70px 28px 110px;text-align:center;display:grid;justify-items:center;gap:6px}
footer .firma{font:400 52px/1 var(--f-script);margin-top:6px}
footer .marca{margin-top:26px;font:400 10px/1.8 var(--f-body);letter-spacing:.3em;color:var(--tinta-2)}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{transition-duration:.01ms!important;animation:none!important;transition-delay:0s!important}
}

/* =========================== Dibujos de cada mundo =========================== */
.tarjeta{position:relative;width:min(100%,430px);aspect-ratio:2/3;margin:0 auto 34px;display:grid;place-items:center}
.tarjeta-marco{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
.tarjeta-txt{position:relative;width:62%;text-align:center;display:grid;justify-items:center;gap:2px}
.t-nombres{font:400 clamp(38px,11vw,54px)/1 var(--f-display);margin:10px 0 0}
.t-nombres span{display:block}.t-nombres i{display:block;font:400 .6em/1.2 var(--f-script);color:var(--oro);font-style:normal}
.dib{display:block;margin:20px auto 16px;max-width:100%}
.dib-lugar{width:96%}
.dib-invitados{width:100%;margin:22px auto 8px}
.dib-vestido *{vector-effect:non-scaling-stroke}
.dib-vestido{width:min(80%,380px);height:auto;margin:22px auto 10px;color:var(--tinta);stroke-width:1.3px;overflow:visible}
.dib-pareja{width:min(62%,280px);margin:0 auto 14px}
.icono{display:block;width:62px;height:62px;object-fit:contain;margin:0 auto 6px}
.deco-ico .icono{width:84px;height:84px;margin-bottom:10px}
/* =========================== Variantes de estilo =========================== */
body[data-titulo="script"] h2{font:400 46px/1.05 var(--f-script);letter-spacing:0}
body[data-titulo="versal"] h2{font:500 22px/1.3 var(--f-display);letter-spacing:.32em;text-transform:uppercase}
body[data-titulo="versal"] .eyebrow{letter-spacing:.42em}
body[data-titulo="italica"] h2{font-style:italic}
body[data-titulo="deco"] h2{font:400 30px/1.15 var(--f-display);letter-spacing:.18em;text-transform:uppercase}
body[data-forma="recto"] .arco{border-radius:2px;outline:1px solid var(--linea);outline-offset:6px}
body[data-forma="recto"] .foto{border-radius:2px}
body[data-forma="ovalo"] .arco{border-radius:50% / 34%;padding:84px 36px 70px}
body[data-forma="ovalo"] .foto{border-radius:50%;aspect-ratio:3/4}
body[data-forma="ovalo"] .marco-c{border-radius:999px;padding:30px 30px 26px}
body[data-forma="arco-arabe"] .arco{border-radius:50% 50% 6px 6px / 28% 28% 6px 6px}
body[data-forma="arco-arabe"] .foto{border-radius:50% 50% 4px 4px / 34% 34% 4px 4px}
body[data-forma="linea"] .arco,body[data-forma="linea"] .marco-c{border:0;outline:0;border-top:1px solid var(--tinta);border-bottom:1px solid var(--tinta);border-radius:0}
body[data-forma="linea"] .foto{border-radius:0;outline:0;border:0;filter:grayscale(1) contrast(1.05)}
body[data-forma="linea"] .boton{border-radius:0}
body[data-forma="deco"] .arco,body[data-forma="deco"] .marco-c{border-radius:0;border:1px solid var(--oro);outline:1px solid var(--oro);outline-offset:6px;clip-path:polygon(18px 0,calc(100% - 18px) 0,100% 18px,100% calc(100% - 18px),calc(100% - 18px) 100%,18px 100%,0 calc(100% - 18px),0 18px)}
body[data-papel="textura"] main{background-image:var(--grano),radial-gradient(circle at 20% 10%,rgba(255,255,255,.5),transparent 60%)}

/* =========================== Sin "folio": la invitación ocupa todo el ancho =========================== */
body{background-color:var(--papel)}
main{max-width:none;box-shadow:none;background-color:var(--papel)}
.sec{max-width:640px;margin:0 auto}
.sec+.sec{border-top:0}
footer.final{max-width:640px;margin:0 auto}
/* la escena se funde con el papel al abrirse: no hay corte */
.escena::after{content:"";position:absolute;left:0;right:0;bottom:0;height:34%;background:linear-gradient(rgba(0,0,0,0),var(--papel) 92%);opacity:0;transition:opacity 1.6s ease .4s;pointer-events:none;z-index:7}
.escena.abierta::after{opacity:1}
.escena .desliza{z-index:9}
/* separador entre apartados: el adorno de cada mundo con dos trazos */
.sec+.sec::before{content:attr(data-adorno);position:absolute;top:-10px;left:50%;transform:translateX(-50%);color:var(--oro);font-size:12px;letter-spacing:.4em}
.tarjeta-txt{width:52%;gap:0}
.tarjeta .eyebrow{font-size:9.5px;letter-spacing:.18em;line-height:1.7}
.t-nombres{font-size:clamp(32px,8.6vw,46px);margin:6px 0 0}
.tarjeta .adorno{margin:10px auto}
.tarjeta .adorno::before,.tarjeta .adorno::after{width:30px}
.tarjeta .fecha-portada{font-size:12px;letter-spacing:.1em;white-space:nowrap}
.tarjeta .lugar-portada{font-size:10px}

/* Viaje entre escenas */
.esc .vcapa{position:absolute;left:0;top:0;transform-origin:0 0;will-change:transform,opacity;max-width:none}
/* Cortinas de lino */
.esc .cort{position:absolute;top:0;height:100%;will-change:transform}
/* Tarjeta que se despliega */
.t-tapa-w{position:absolute;perspective:2000px;perspective-origin:50% 0}
.t-tapa{position:absolute;inset:0;transform-style:preserve-3d;transform-origin:50% 0;will-change:transform}
.t-papel{background:var(--papel);background-image:radial-gradient(rgba(0,0,0,.035) 1px,transparent 1.2px),linear-gradient(170deg,#fff,#f6f5f1);background-size:calc(5*var(--iu)) calc(5*var(--iu)),100% 100%;box-shadow:inset 0 0 calc(60*var(--iu)) rgba(0,0,0,.05)}
.t-marco{position:absolute;inset:calc(22*var(--iu));border:calc(1*var(--iu)) solid var(--tinta);opacity:.75}
.t-pliegue{position:absolute;left:0;right:0;top:50%;height:calc(1*var(--iu));background:linear-gradient(90deg,transparent,rgba(0,0,0,.08) 12%,rgba(0,0,0,.08) 88%,transparent)}
.sello-min{position:absolute;inset:0;border-radius:50%;background:var(--tinta);color:var(--papel);display:grid;place-items:center;font:400 calc(12*var(--iu,1px)) var(--f-body);letter-spacing:.18em;box-shadow:0 2px 6px rgba(0,0,0,.25)}
/* Diario de viaje */
.l-tapa-w{position:absolute;inset:0;perspective:2600px;perspective-origin:0 50%}
.l-tapa{position:absolute;inset:0;transform-style:preserve-3d;transform-origin:0 50%;will-change:transform}
.polaroid{position:absolute;background:#fbf8f1;box-shadow:0 3px 10px rgba(60,40,20,.28);transform:rotate(-2.6deg);will-change:transform}
.polaroid img{display:block;width:100%;height:100%;object-fit:cover}

/* Colección Atelier */
.esc .a-hoja{position:absolute;top:0;height:100%;background-repeat:no-repeat;will-change:transform;backface-visibility:hidden}
.esc #a-portada{will-change:transform,opacity}
.lacre-btn.toda{border-radius:0}
.lacre-btn.toda::after{display:none}

.esc #a-lamina{will-change:transform,opacity}
.esc #a-lamina>img{position:absolute;left:0;top:0;width:100%;height:100%}

.esc .a-arco{position:absolute;transform-origin:50% 50%;will-change:transform,opacity;opacity:0}
.esc #a-lienzo>img{max-width:none}

.esc .pl-w{position:absolute;perspective:2400px}
.esc .pl{position:absolute;inset:0;transform-style:preserve-3d;will-change:transform}
.esc .pl>.f,.esc .pl>.b,.esc .pl>.b2{position:absolute;inset:0;background-repeat:no-repeat;backface-visibility:hidden;-webkit-backface-visibility:hidden}
.esc .pl>.b{transform:rotateX(180deg)}
.esc .pl>.b2{transform:rotateY(180deg)}
.esc #a-base>img{position:absolute;left:0;top:0;width:100%;height:100%}
.esc #a-base>img.a-arco{width:auto;height:auto}

#escena.cargando>*{visibility:hidden}

/* pareja que baila (Atelier): se balancea despacio, como en una caja de música */
.esc .a-fig{position:absolute;left:0;top:0;width:100%;height:100%;will-change:transform;animation:baile 4.8s ease-in-out infinite alternate}
@keyframes baile{0%{transform:rotate(-2.6deg) translateY(0)}50%{transform:rotate(0deg) translateY(-.8%)}100%{transform:rotate(2.6deg) translateY(0)}}
@media (prefers-reduced-motion:reduce){.esc .a-fig{animation:none}}

/* Transporte · alojamiento · fin de semana · rincones */
.info{display:flex;flex-wrap:wrap;justify-content:center;gap:16px;width:100%;max-width:560px;margin-top:20px}
.info-t{flex:1 1 240px;min-width:0;max-width:100%}
.info-t{border:1px solid var(--linea);padding:26px 18px 22px;display:grid;justify-items:center;align-content:start;gap:6px;background:color-mix(in srgb,var(--papel) 70%,transparent)}
.ico-info{width:44px;height:44px;color:var(--oro);margin-bottom:4px}
.info-t h3,.rincones h3,.finde h3{font-size:22px}
.info-t .peq{font:300 14.5px/1.6 var(--f-body);color:var(--tinta-2);margin:0;max-width:30ch}
.info-t .dist,.rincones span{font:400 11px/1.4 var(--f-body);letter-spacing:.22em;text-transform:uppercase;color:var(--oro);margin:0}
.info-t dl{display:grid;grid-template-columns:auto auto;gap:4px 12px;margin:8px 0 0;font:300 14.5px/1.5 var(--f-body);text-align:left}
.info-t dt{font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--oro);align-self:center}
.info-t dd{margin:0}
.enlace{display:inline-flex;align-items:center;min-height:44px;font:400 11px/1 var(--f-body);letter-spacing:.2em;text-transform:uppercase;color:inherit;text-decoration:underline;text-decoration-color:var(--oro);text-underline-offset:5px}
.finde{list-style:none;margin:14px 0 0;padding:0;display:grid;gap:26px;max-width:34ch}
.finde li{display:grid;gap:4px}
.finde time{font:400 12px/1.4 var(--f-body);letter-spacing:.22em;text-transform:uppercase;color:var(--oro)}
.finde p,.rincones p{font:300 14.5px/1.6 var(--f-body);color:var(--tinta-2);margin:0}
.rincones{list-style:none;margin:14px 0 0;padding:0;display:grid;gap:22px;max-width:34ch}
.rincones li{display:grid;justify-items:center;gap:3px}
#rincones .ico-info{margin-bottom:8px}
body[data-forma="ovalo"] .info-t{border-radius:28px}
body[data-forma="deco"] .info-t{border-color:var(--oro)}
@media (min-width:600px){.info-t{max-width:272px}}


/* ---------- Efectos ---------- */
/* separador de flores entre secciones (color oro de cada diseño) */
.sec+.sec::before{content:"";width:140px;height:24px;top:-12px;background:var(--oro);-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 140 24'%3E%3Cg fill='none' stroke='%23000' stroke-width='1.1' stroke-linecap='round'%3E%3Cpath d='M8 12 H58 M82 12 H132'/%3E%3Cpath d='M22 12 q6 -7 14 -6 q-4 6 -14 6z M34 12 q6 7 14 6 q-4 -6 -14 -6z M46 12 q5 -6 11 -5 q-3 5 -11 5z'/%3E%3Cpath d='M118 12 q-6 -7 -14 -6 q4 6 14 6z M106 12 q-6 7 -14 6 q4 -6 14 -6z M94 12 q-5 -6 -11 -5 q3 5 11 5z'/%3E%3C/g%3E%3Cg fill='%23000'%3E%3Ccircle cx='70' cy='12' r='3.2'/%3E%3Ccircle cx='70' cy='5.6' r='2.2'/%3E%3Ccircle cx='70' cy='18.4' r='2.2'/%3E%3Ccircle cx='63.6' cy='12' r='2.2'/%3E%3Ccircle cx='76.4' cy='12' r='2.2'/%3E%3C/g%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 140 24'%3E%3Cg fill='none' stroke='%23000' stroke-width='1.1' stroke-linecap='round'%3E%3Cpath d='M8 12 H58 M82 12 H132'/%3E%3Cpath d='M22 12 q6 -7 14 -6 q-4 6 -14 6z M34 12 q6 7 14 6 q-4 -6 -14 -6z M46 12 q5 -6 11 -5 q-3 5 -11 5z'/%3E%3Cpath d='M118 12 q-6 -7 -14 -6 q4 6 14 6z M106 12 q-6 7 -14 6 q4 -6 14 -6z M94 12 q-5 -6 -11 -5 q3 5 11 5z'/%3E%3C/g%3E%3Cg fill='%23000'%3E%3Ccircle cx='70' cy='12' r='3.2'/%3E%3Ccircle cx='70' cy='5.6' r='2.2'/%3E%3Ccircle cx='70' cy='18.4' r='2.2'/%3E%3Ccircle cx='63.6' cy='12' r='2.2'/%3E%3Ccircle cx='76.4' cy='12' r='2.2'/%3E%3C/g%3E%3C/svg%3E") center/contain no-repeat;letter-spacing:0;font-size:0;opacity:.85}
/* rasca la fecha */
.rasca{position:relative;width:min(300px,82%);aspect-ratio:3/2;margin-top:18px;border:1px solid var(--linea);outline:1px solid var(--linea);outline-offset:5px;background:var(--papel);display:grid;place-items:center;touch-action:none;user-select:none}
.rasca-fecha{display:grid;justify-items:center;gap:2px;line-height:1}
.rasca-fecha span{font:400 11px/1.4 var(--f-body);letter-spacing:.3em;text-transform:uppercase;color:var(--tinta-2)}
.rasca-fecha b{font:400 64px/1 var(--f-display);color:var(--tinta);margin:4px 0}
.rasca canvas{position:absolute;inset:0;width:100%;height:100%;cursor:grab;transition:opacity .8s ease}
.rasca.descubierta canvas{opacity:0;pointer-events:none}
.rasca-pista{font:300 13px/1.5 var(--f-body);color:var(--tinta-2);margin-top:10px}
/* confeti */
.confeti{position:fixed;inset:0;width:100vw;height:100vh;pointer-events:none;z-index:60}
/* monograma que se dibuja */
.monograma{width:min(230px,62%);height:auto;overflow:visible;margin:6px auto 4px;display:block}
.monograma circle{fill:none;stroke:var(--oro);stroke-width:1;stroke-dasharray:1;stroke-dashoffset:1;opacity:.7}
.monograma text{font:400 64px var(--f-display);fill:transparent;stroke:var(--oro);stroke-width:.9;stroke-dasharray:900;stroke-dashoffset:900}
.monograma.visto circle{animation:traza-c 2.4s ease forwards}
.monograma.visto text{animation:traza-t 3.6s ease .3s forwards}
@keyframes traza-c{to{stroke-dashoffset:0}}
@keyframes traza-t{70%{stroke-dashoffset:0;fill:transparent}100%{stroke-dashoffset:0;fill:var(--oro)}}
/* lacre con iniciales (Atelier) */
.esc .ini-lacre{position:absolute;border-radius:50%;-webkit-mask:radial-gradient(circle,#000 80%,transparent 100%);mask:radial-gradient(circle,#000 80%,transparent 100%);display:grid;place-items:center;pointer-events:none;opacity:0;transition:opacity .4s ease;
  background:radial-gradient(circle at 38% 32%,var(--cera-c,#d9b878) 0%,var(--cera,#b08d57) 55%,var(--cera-o,#7d6239) 100%);
  box-shadow:inset 0 0 calc(var(--fs)*.25) var(--cera-o,#7d6239),inset 0 0 0 calc(var(--fs)*.05) var(--cera-c,#d9b878)}
.esc .ini-lacre.lista{opacity:1}
.esc .ini-lacre span{font:400 var(--fs)/1 var(--f-display);color:var(--cera-t,#5a4526);text-shadow:0 1px 0 var(--cera-c,#e6cc94),0 -1px 0 rgba(0,0,0,.18);letter-spacing:.02em;white-space:nowrap}
.esc .ini-lacre i{font-style:normal;font-size:.7em;margin:0 .08em}
/* luciérnagas */
.escena .luces{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;opacity:0;transition:opacity 2s ease 1s;z-index:3}
.escena.abierta .luces{opacity:1}
@media (prefers-reduced-motion:reduce){.monograma text{fill:var(--oro);stroke-dashoffset:0}.monograma circle{stroke-dashoffset:0}}
/* música */
.musica{position:fixed;right:16px;bottom:16px;z-index:55;width:46px;height:46px;border-radius:50%;border:1px solid var(--linea);background:color-mix(in srgb,var(--papel) 88%,transparent);backdrop-filter:blur(6px);display:grid;place-items:center;cursor:pointer;box-shadow:0 2px 10px rgba(0,0,0,.12)}
.musica svg{width:20px;height:20px;fill:none;stroke:var(--tinta);stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.musica[aria-pressed="true"] svg{animation:latido 1.6s ease-in-out infinite}
.musica[aria-pressed="false"]::after{content:"";position:absolute;width:26px;height:1.5px;background:var(--tinta);transform:rotate(-45deg)}
@keyframes latido{50%{transform:scale(1.12)}}

/* =========================== Día / noche (solo diseños con D.diaNoche) =========================== */
.esc #a-noche{opacity:0;transition:opacity .9s ease}
.escena[data-modo="noche"] #a-noche{opacity:1}
.portada-txt.marco{transition:color .9s ease}
.escena[data-modo="noche"] .portada-txt.marco{color:var(--noche-txt,#FAF6EF)}
.dianoche{position:absolute;z-index:9;top:calc(16px + env(safe-area-inset-top,0px));left:50%;transform:translateX(-50%);display:none;border:1px solid var(--oro);border-radius:999px;background:rgba(var(--banda),.86);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);overflow:hidden;opacity:0;pointer-events:none;transition:opacity .8s ease .9s}
.escena.con-dn .dianoche{display:flex}
.iniciada .escena.con-dn .dianoche{opacity:1;pointer-events:auto}
.dianoche button{border:0;background:none;cursor:pointer;display:flex;align-items:center;gap:6px;padding:9px 15px;font:500 10.5px/1 var(--f-body);letter-spacing:.24em;text-transform:uppercase;color:var(--tinta)}
.dianoche button[aria-pressed="true"]{background:var(--tinta);color:var(--papel)}
.dianoche button:focus-visible{outline:2px solid var(--oro);outline-offset:-3px}
.dianoche svg{width:14px;height:14px}
@media (prefers-reduced-motion:reduce){.esc #a-noche,.portada-txt.marco,.dianoche{transition:none}}

/* día → noche automático al abrir: transición lenta; las luciérnagas solo de noche */
.escena.dn-lento .esc #a-noche,.escena.dn-lento .portada-txt.marco{transition-duration:3.5s}
.escena.con-dn .luces{opacity:0!important;transition:opacity 2s ease}
.escena.con-dn.abierta[data-modo="noche"] .luces{opacity:1!important}

/* Ordenador: velo de papel detrás del texto cuando la ilustración pasa por debajo */
.velo .portada-txt.marco::before{content:"";position:absolute;inset:-14% -22%;z-index:-1;pointer-events:none;background:radial-gradient(closest-side,rgba(var(--banda),.9),rgba(var(--banda),.72) 45%,rgba(var(--banda),.3) 75%,rgba(var(--banda),0));opacity:0;transition:opacity 1.4s ease .2s}
.velo.iniciada .portada-txt.marco::before,.iniciada .velo .portada-txt.marco::before{opacity:1}
.velo[data-modo="noche"] .portada-txt.marco::before{background:radial-gradient(closest-side,rgba(14,26,58,.75),rgba(14,26,58,.45) 50%,rgba(14,26,58,0))}
.velo .portada-txt.marco.ancho::before{inset:-38% -10%;background:radial-gradient(closest-side,rgba(var(--banda),.92),rgba(var(--banda),.8) 55%,rgba(var(--banda),.35) 82%,rgba(var(--banda),0))}
