:root{--paper:#fff8ed;--ink:#3b2b20;--gold:#b18a54;--rose:#8f4d3f;--soft:#ead8bd}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:Montserrat,system-ui,sans-serif}h1,h2{font-family:'Cormorant Garamond',serif;font-weight:600}h1{font-size:clamp(4rem,12vw,8.5rem);line-height:.82;margin:0}h2{font-size:clamp(2.2rem,5vw,4rem);line-height:1;margin:.2em 0}.intro{min-height:100vh;display:grid;place-items:center;overflow:hidden;position:relative;background:radial-gradient(circle at center,#3c2b1e 0%,#1f1b18 48%,#0d0d0d 100%)}.intro-bg{position:absolute;inset:0;background:url('assets/9e1f3fa6-98af-48a2-bdae-5fb45ea3104a.webp') center/cover;opacity:.07;filter:sepia(.7) brightness(.42)}.envelope-wrap{border:0;background:transparent;cursor:pointer;position:relative;z-index:2;color:#f4eadb;font:inherit;text-shadow:0 2px 12px #000}.envelope{width:min(78vw,520px);height:330px;position:relative;filter:drop-shadow(0 34px 42px #000b);perspective:1100px}.envelope:before{content:'';position:absolute;inset:34px 0 0;border-radius:6px;background:radial-gradient(circle at 35% 26%,#fff1d2 0 2px,transparent 3px),radial-gradient(circle at 70% 68%,#8b5b2a1c 0 1px,transparent 3px),linear-gradient(135deg,#b88952 0%,#e3c08c 24%,#f5dfb7 50%,#d1a56e 78%,#a8733d 100%);border:2px solid #b48757;box-shadow:inset 0 0 45px #5d371c55,inset 0 -22px 36px #6f421e40}.pocket{position:absolute;inset:34px 0 0;border-radius:6px;background:linear-gradient(145deg,#c99a61 0%,#f5ddb2 45%,#c49258 100%);clip-path:polygon(0 0,50% 58%,100% 0,100% 100%,0 100%);border:2px solid #b48757;box-shadow:inset 0 0 38px #7a4e2540, inset 0 -18px 24px #7a4e251c;z-index:3}.pocket:before,.pocket:after{content:'';position:absolute;bottom:0;width:51%;height:100%;background:linear-gradient(150deg,#c0935f,#fff0ce 55%,#a96f3d);opacity:.72}.pocket:before{left:0;clip-path:polygon(0 0,100% 58%,0 100%)}.pocket:after{right:0;clip-path:polygon(100% 0,0 58%,100% 100%)}.flap{position:absolute;left:0;right:0;top:34px;height:185px;background:linear-gradient(160deg,#a9733d,#efd2a1 54%,#b27a42);clip-path:polygon(0 0,100% 0,50% 100%);transform-origin:top;transition:.9s;border:2px solid #b48757;box-shadow:inset 0 0 34px #6d421f55,0 10px 18px #4c2b1530;z-index:5}.letter-preview{position:absolute;left:10%;right:10%;top:70px;height:170px;background:#fffbf4;border:1px solid #d4b487;display:grid;place-items:center;text-align:center;font-family:'Cormorant Garamond',serif;font-size:2.3rem;color:#16110d;text-shadow:none;opacity:0;transform:translateY(42px);transition:.65s;z-index:1}.letter-preview small{font-family:Montserrat;font-size:.9rem;letter-spacing:.2em}.seal{position:absolute;width:156px;height:156px;object-fit:contain;border-radius:50%;left:50%;top:132px;transform:translateX(-50%);border:3px solid #b58b45;box-shadow:0 8px 18px #0008;z-index:7}.envelope-wrap.open .flap{transform:rotateX(180deg)}.envelope-wrap.open .letter-preview{opacity:1;transform:translateY(-34px);z-index:4}
.hidden{display:none}.invitation{animation:fade .9s ease both}.topbar{position:sticky;top:0;z-index:5;display:flex;justify-content:space-between;padding:18px 6vw;background:#fff8edf2;backdrop-filter:blur(10px);border-bottom:1px solid #ead8bd}.topbar span{font-family:'Cormorant Garamond';font-size:1.6rem}.topbar a{color:var(--ink);text-decoration:none;border-bottom:1px solid var(--gold)}.hero{min-height:92vh;display:grid;grid-template-columns:1fr 1fr;gap:4vw;align-items:center;padding:7vw}.eyebrow{text-transform:uppercase;letter-spacing:.25em;font-size:.78rem;color:var(--rose);font-weight:600}.date{font-size:1.2rem;letter-spacing:.08em}.subtitle{font-family:'Cormorant Garamond';font-size:2rem}.hero-photo img{width:100%;height:min(72vh,760px);object-fit:cover;border-radius:260px 260px 20px 20px;box-shadow:0 28px 70px #4d34254a}.countdown-card{margin:0 auto 70px;width:min(880px,88vw);text-align:center;border:1px solid #d9bd91;padding:34px;border-radius:28px;background:#fffdf8}.countdown{display:flex;justify-content:center;gap:16px;flex-wrap:wrap;font-family:'Cormorant Garamond';font-size:2.7rem}.countdown b{display:block}.countdown small{display:block;font-family:Montserrat;font-size:.75rem;text-transform:uppercase;letter-spacing:.18em}.section{padding:80px 7vw}.ceremony{display:grid;grid-template-columns:1.1fr .9fr;gap:48px;align-items:center}.basilica-card{border:1px solid #d5b37d;border-radius:28px;overflow:hidden;box-shadow:0 18px 50px #6b4c2a2b}.source-note{font-size:.85rem;opacity:.7}.two-cols{display:grid;grid-template-columns:1fr 1fr;gap:26px}.card,.form{background:#fffdf8;border:1px solid #e4cba3;border-radius:28px;padding:32px}.gallery{padding:30px 7vw;display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.gallery img{width:100%;height:430px;object-fit:cover;border-radius:22px}.rsvp{display:grid;grid-template-columns:.8fr 1.2fr;gap:42px}.form{display:grid;gap:16px}label{display:grid;gap:8px;font-weight:500}input,select,textarea{width:100%;border:1px solid #d8bd90;border-radius:14px;background:#fffaf2;padding:14px;font:inherit;color:var(--ink)}textarea{min-height:96px}button{border:0;border-radius:999px;padding:15px 22px;background:var(--ink);color:#fff;font-weight:600;cursor:pointer}.secondary{background:#ead8bd;color:var(--ink)}.status{min-height:1.2em}.gift{text-align:center;padding:90px 7vw;background:#3b2b20;color:#fff8ed}.gift p{max-width:760px;margin:18px auto;line-height:1.7}.gift strong{display:inline-block;border:1px solid #c9a66e;border-radius:999px;padding:15px 22px;letter-spacing:.05em}.closing{font-family:'Cormorant Garamond';font-size:1.8rem}@keyframes fade{from{opacity:0;transform:translateY(20px)}}@media(max-width:820px){.hero,.ceremony,.two-cols,.rsvp{grid-template-columns:1fr}.hero{padding-top:90px}.gallery{grid-template-columns:1fr}.gallery img{height:360px}.envelope{height:250px}.seal{width:118px;height:118px;top:104px}.intro{padding:24px}.envelope-wrap{z-index:3}.envelope:before{inset:28px 0 0}.pocket{inset:28px 0 0}.flap{top:28px;height:142px}.letter-preview{top:58px;height:130px;font-size:1.7rem}}
.venue-sketch{display:block;width:100%;height:100%;object-fit:cover}.card-sketch{height:220px;border-radius:20px;margin:-8px 0 22px;box-shadow:inset 0 0 0 1px #e4cba3}


/* Márgenes ornamentales finos integrados en el papel de la invitación */
.letter-preview{color:#17110d;text-shadow:none}
.letter-preview small{color:#17110d}
.invitation{position:relative;overflow:hidden;background:var(--paper)}
.invitation::before,.invitation::after{
  content:'';
  position:fixed;
  top:54px;
  bottom:0;
  width:clamp(42px,4.4vw,66px);
  z-index:1;
  pointer-events:none;
  opacity:.58;
  background-repeat:no-repeat;
  background-size:100% 100%;
  background-position:center top;
  mix-blend-mode:multiply;
  filter:sepia(.85) grayscale(.18) contrast(.95) brightness(1.05);
}
.invitation::before{left:clamp(10px,1.7vw,24px);background-image:url('assets/margen_pax.png')}
.invitation::after{right:clamp(10px,1.7vw,24px);background-image:url('assets/margen_mediavilla.png')}
.invitation>.topbar,.invitation>.hero,.invitation>.countdown-card,.invitation>.section,.invitation>.gallery,.invitation>.gift{position:relative;z-index:2}
@media(min-width:1181px){.invitation>.hero,.invitation>.section,.invitation>.gallery{padding-left:max(7vw,112px);padding-right:max(7vw,112px)}}
@media(max-width:1180px){.invitation::before,.invitation::after{width:38px;opacity:.28}.invitation>.hero,.invitation>.section,.invitation>.gallery{padding-left:8vw;padding-right:8vw}}
@media(max-width:820px){.invitation::before,.invitation::after{display:none}.letter-preview{color:#16110d;text-shadow:none}}


/* Formulario: campos condicionales y estado de envío */
.conditional-field[hidden]{display:none!important}
.form button[type="submit"]:disabled{opacity:.65;cursor:wait}
.status{line-height:1.5;font-size:.92rem}


/* Revisión final: teclado, accesibilidad y preferencias de movimiento */
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid var(--gold);outline-offset:3px}
button:disabled{cursor:not-allowed}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
