@import url('https://fonts.googleapis.com/css2?family=Italiana&family=DM+Sans:wght@400;500;600&family=Petit+Formal+Script&display=swap');
/* Vita: invitation-specific art direction, not a landing-page template. */
.cover .keepsake-seal{font-size:16px;white-space:nowrap}.cover .keepsake-letter{visibility:hidden}.cover.unsealing .keepsake-letter{visibility:visible}
html{background:#d8d2c8}body{max-width:560px;--display:'Italiana',Georgia,serif;--script:'Petit Formal Script',cursive;font-family:'DM Sans',sans-serif;box-shadow:0 24px 100px #30282022}
.theme-xv{--paper:#fbf6ec;--ink:#422632;--accent:#835346;--line:#d8c9b3}.theme-wedding{--paper:#112a37;--ink:#f4ebdc;--accent:#d8bd8c;--line:#65757a}.theme-baby{--paper:#fff7eb;--ink:#3f4b3f;--accent:#975e46;--line:#d8c5b0}
.page{isolation:isolate}.masthead{padding:16px 24px;border-bottom:1px solid var(--line);letter-spacing:.09em}.masthead b{font:22px var(--display);letter-spacing:.12em}.masthead a{font-size:10px;letter-spacing:.07em;text-transform:uppercase;gap:6px}.section,.paper-section,.split{padding:64px 32px}.section-label,.overline{font:500 10px/1.6 'DM Sans',sans-serif;letter-spacing:.22em;margin-bottom:18px}.display{font:400 clamp(36px,10vw,48px)/1.1 var(--display);letter-spacing:-.035em}.display br{display:none}.lead,.story-copy>p:not(.section-label):not(.signature){font-size:15px;line-height:1.85;max-width:380px}.signature{font:20px/1.8 var(--script);margin-top:24px}.hero h1{font-family:var(--display);font-weight:400}.hero h1 em{font-family:var(--script);font-weight:400;letter-spacing:-.04em}.paper-section+.paper-section{padding-top:24px}
/* Closed invitation: photographic setting, folded paper, embossed monogram. */
.cover .keepsake-front{background:var(--fold);clip-path:polygon(0 0,50% 53%,100% 0,100% 100%,0 100%)}
.masthead b{font-size:19px;white-space:nowrap}.cover[hidden]{display:none}.cover-copy>.open-button{flex-wrap:nowrap}
.cover{--envelope:#dbc9b0;--fold:#f1e5d2;--seal:#783b4e;max-width:560px;padding:62px 26px 36px;display:flex;min-height:100svh;background:#342832;color:#fff7e8;border-radius:0;overflow:hidden;isolation:isolate}
.cover:before{content:''!important;position:absolute!important;inset:0!important;width:auto!important;height:auto!important;background:linear-gradient(180deg,#18202150,#182021d9 72%,#182021ee)!important;z-index:-1!important;transform:none!important;opacity:1!important;pointer-events:none}
.cover>img{display:block;position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transform:none;border-radius:0;opacity:1;z-index:-2;filter:saturate(.65);object-position:center 30%}
.cover:after{content:'';position:absolute;inset:16px;border:1px solid #ecdcc752;pointer-events:none;z-index:0}.cover .float-brand{top:34px;font:20px var(--display);letter-spacing:.3em;color:#fff7e8}.cover-copy{max-width:390px;z-index:1;display:flex;flex-direction:column;align-items:center;gap:0}.cover-copy>.overline{order:0;color:#f3dfbe;margin:0 0 12px;font-size:10px}.cover-copy>h1{order:1;font:400 clamp(44px,13vw,66px)/1.04 var(--display);letter-spacing:-.035em;margin:0;text-shadow:0 2px 22px #0004}.cover-copy>h1 em{font:24px/1.8 var(--script);display:block;margin-top:5px;letter-spacing:0}.cover-date{order:2;border-block:1px solid #efdec340;padding:10px 22px;margin:20px 0 0;font-size:11px;letter-spacing:.2em}.keepsake{order:3;width:min(84%,310px);margin:48px auto 26px;transform:rotate(-4deg);transition:transform .8s cubic-bezier(.2,.8,.2,1);filter:drop-shadow(4px 18px 20px #060e1755)}
.keepsake-front{background:linear-gradient(32deg,var(--fold) 49.6%,transparent 50%) left/50.1% 100% no-repeat,linear-gradient(-32deg,var(--fold) 49.6%,transparent 50%) right/50.1% 100% no-repeat}.keepsake-back{box-shadow:inset 0 0 0 1px #92734c55}.keepsake-front:after{background:linear-gradient(160deg,var(--fold),var(--envelope));clip-path:polygon(0 100%,50% 45%,100% 100%)}.keepsake-letter{background:#fffaf0;inset:6% 6% 5%;border-radius:3px}.keepsake-letter b{font-family:var(--display)}.keepsake-seal{width:60px;height:60px;font-family:var(--display);border:2px solid #cfb58a;box-shadow:inset 0 0 0 3px #ffffff16,inset 0 0 0 5px #1b091720,0 5px 12px #241a2938}.envelope-hint{order:4;color:#f7ead6;font-size:11px;letter-spacing:.05em;margin:0 0 12px}.cover-copy>.open-button{order:5;background:#f7ead6;color:#302d28;min-width:218px;font-size:12px;border:1px solid #dfc79e}.cover-copy>.open-button:after{content:' · con música';opacity:.65;font-size:10px}.cover .envelope-hit-area{color:transparent!important;background:transparent!important}.cover .envelope-hit-area:focus-visible{outline-color:#fff}.cover-copy>.opening-note{order:6;font-size:10px;margin:14px 0 0;color:#eddfca}.unsealing .keepsake{transform:rotate(0) translateY(12px) scale(1.06)}.unsealing .keepsake-letter{transform:translateY(-67%)}.unsealing .cover-copy>h1,.unsealing .cover-date,.unsealing .overline{opacity:.3;transition:opacity .4s}.cover.opened{transform:scale(1.025);transition:opacity .5s,visibility .5s,transform .6s}.theme-wedding .cover{--envelope:#b6a180;--fold:#eadfc8;--seal:#213e4d;background:#112a37}.theme-wedding .cover>img{filter:grayscale(1)}.theme-baby .cover{--envelope:#d6b69d;--fold:#f4ddc2;--seal:#617563;background:#574c38}.theme-baby .cover:before{background:linear-gradient(180deg,#24261945,#354134cf 75%,#29352bee)!important}.theme-xv .cover:before{background:linear-gradient(180deg,#321f3545,#462635d9 75%,#331c29f5)!important}
/* XV: a floral invitation with a full-bleed editorial portrait. */
.theme-xv .hero{padding:64px 24px 26px;min-height:690px;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;color:#fff8ed;background:#452934;overflow:hidden}.theme-xv .hero:before{inset:0;width:auto;height:auto;background:linear-gradient(180deg,#39233118 20%,#39233100 35%,#392331ed 100%);z-index:1}.theme-xv .hero:after{display:none}.theme-xv .hero .overline{z-index:2;color:#ffe9c9;margin-bottom:12px}.theme-xv .hero h1{font-size:clamp(65px,20vw,100px)!important;z-index:2;margin:0 0 18px;line-height:.95}.theme-xv .hero h1 em{color:#ffebd0;font-size:24px;margin:14px 0 0}.theme-xv .hero-portrait{position:absolute;inset:0;margin:0;width:100%;max-width:none}.theme-xv .hero-portrait img{height:100%;width:100%;border-radius:0;object-position:center 25%;aspect-ratio:auto}.theme-xv .hero-portrait:before,.theme-xv .hero-portrait figcaption{display:none}.theme-xv .date-ribbon{position:relative;z-index:2;width:100%;margin:8px 0 0;border-color:#f6e1bd70;padding:18px 0}.date-ribbon small{margin-top:6px;font-size:10px}.theme-xv #historia{background:url('assets/botanica.png') -95px -20px/230px no-repeat,var(--paper);padding-top:74px}.theme-xv .feature-strip{border:0;grid-template-columns:1fr;gap:0;text-align:left;margin-top:34px}.theme-xv .feature{display:grid;grid-template-columns:40px 1fr;column-gap:16px;padding:21px 0!important;border:0!important;border-top:1px solid var(--line)!important}.theme-xv .feature svg{grid-row:1/3;align-self:center}.theme-xv .feature strong{font-size:26px;margin-bottom:6px}.theme-xv .feature p{font-size:13px}.theme-xv .story-photo{width:82%;padding:8px;border:1px solid #bba982;transform:rotate(-3deg)}.theme-xv .story-photo img{border-radius:140px 140px 3px 3px;box-shadow:none}.theme-xv .story-copy{padding-top:30px}.theme-xv .split{background:#472a37;color:#fcf5e8;position:relative}.theme-xv .split .section-label{color:#e9c99b}.theme-xv .timeline{border-color:#a98e80}.theme-xv .timeline-row:before{background:#e9c99b;outline-color:#472a37}.theme-xv .timeline-row p{color:#e5d5d5}.theme-xv .timeline-row time{color:#f0d5a4}
/* Wedding: travel stationery, large serif names, a real ticket silhouette. */
.theme-wedding .hero{margin:24px 20px 0;padding:42px 22px 28px;outline:1px solid #bda981;outline-offset:-9px;border-radius:8px;background:#f6efdf}.theme-wedding .hero:before{content:'E / S';font:12px 'DM Sans';letter-spacing:.25em;display:block;margin:0 0 22px}.theme-wedding .hero h1{font-family:var(--display);font-size:clamp(44px,13vw,70px)!important;letter-spacing:-.04em;line-height:1.05;margin:18px 0}.theme-wedding .hero h1 em{font:24px var(--script);margin:8px}.theme-wedding .hero .overline{font-size:9px;letter-spacing:.14em}.theme-wedding .hero-portrait img{aspect-ratio:1.15;object-position:center 35%;border-radius:120px 120px 4px 4px}.theme-wedding .hero-portrait figcaption{font:italic 17px var(--display);letter-spacing:0;text-transform:none;margin-top:14px}.theme-wedding .date-ribbon{margin-top:24px}.ticket-wrap{padding:30px 20px 8px}.boarding-pass{border-radius:5px!important;mask:radial-gradient(circle at 8px 0,transparent 5px,#000 5.5px) -8px 0/16px 100%,linear-gradient(#000,#000);mask-composite:intersect}.boarding-main{padding:30px 24px}.boarding-top{font-size:9px;line-height:1.8}.route{margin:28px 0}.route strong{font-size:31px}.route small{font-size:10px}.boarding-side{padding:24px;background:#e4d6bd}.theme-wedding .story-photo{background:#eadecb;padding:8px;transform:rotate(2deg);width:100%}.theme-wedding .story-copy{padding-top:30px}.theme-wedding .calendar{padding:30px 20px;border-radius:16px;position:relative}.theme-wedding .calendar:after{content:'RESERVADO PARA EL AMOR';display:block;font:8px 'DM Sans';letter-spacing:.2em;margin-top:20px;padding-top:18px;border-top:1px dashed #b8a889}.theme-wedding .split{border-block:1px solid #62717a;margin:0 20px;padding:48px 12px}.theme-wedding .feature-strip{grid-template-columns:1fr;border:0;text-align:left}.theme-wedding .feature{border:0!important;border-top:1px solid #637277!important;display:grid;grid-template-columns:40px 1fr;gap:4px 16px;padding:24px 0!important}.theme-wedding .feature svg{grid-row:1/3}.theme-wedding .feature strong{font-size:28px}
/* Baby: a warm illustrated album, soft colour blocks and playful type. */
.theme-baby .hero{padding:42px 28px 32px;background:radial-gradient(circle at 100% 20%,#ead5c1 0 20%,transparent 20.2%),radial-gradient(circle at 0 70%,#dce1c9 0 19%,transparent 19.2%),#fff7eb}.theme-baby .hero h1{font-size:clamp(68px,20vw,100px)!important;letter-spacing:-.04em;margin:22px 0 20px}.theme-baby .hero h1 em{font:23px/1.5 var(--script);margin-top:12px}.theme-baby .hero-portrait{width:86%;padding:10px 10px 18px;box-shadow:7px 12px 22px #615b3920;transform:rotate(-5deg);margin:30px auto 28px}.theme-baby .hero-portrait:after{content:'';position:absolute;top:-12px;left:35%;width:32%;height:28px;background:#b8b29188;transform:rotate(4deg)}.theme-baby .hero-portrait img{aspect-ratio:1.12;object-position:center 32%}.theme-baby .hero-portrait figcaption{font:15px var(--script);margin:18px 0 2px}.theme-baby .date-ribbon{max-width:none}.theme-baby .feature-strip{padding:10px 0;margin-top:28px}.theme-baby .feature{padding:20px 0!important;border-bottom:1px solid var(--line)!important}.theme-baby .story-photo img{border-radius:160px 160px 8px 8px;aspect-ratio:.9}.theme-baby .split{background:#e5e9d8;border-radius:160px 160px 20px 20px;margin:16px 14px;padding:66px 24px 36px;text-align:center}.theme-baby .split .lead{margin-inline:auto!important}.vote-box{padding:0;background:none;border:0;margin-top:28px}.vote-title{display:none}.vote-grid{gap:14px}.vote{border-radius:90px 90px 16px 16px;min-height:156px!important;gap:14px;background:#cadbdb;font-size:15px;transition:transform .3s,background .3s}.vote svg{width:34px;height:34px}.vote:last-child{background:#efd0bd}.vote.selected{transform:translateY(-5px);outline-offset:4px}.result{font-size:13px;line-height:1.7}.theme-baby .details{margin-top:32px}.theme-baby .detail{padding:22px 0}.detail small{font-size:10px}.theme-baby .photo-band{margin:24px;border-radius:160px 160px 12px 12px}
/* Shared typographic rhythm and finished interaction states. */
.photo-band{position:relative;overflow:hidden}.photo-band-copy{padding:65px 28px 28px}.photo-band-copy h2{font:34px/1.1 var(--display)}.photo-band-copy h2 br{display:none}.timeline{padding-left:22px;margin-top:34px}.timeline-row{grid-template-columns:60px 1fr;padding:19px 0;gap:16px}.timeline-row time{font:25px var(--display)}.timeline-row strong{font-size:14px;font-weight:600}.timeline-row p{font-size:13px;line-height:1.7}.calendar{background:color-mix(in srgb,var(--paper) 92%,var(--accent));padding:28px 20px;border-radius:16px}.calendar-head strong{font:32px var(--display)}.week{font-size:10px;margin:22px 0 12px}.dates{row-gap:10px}.dates span{font-size:13px;min-height:30px}.countdown{padding-block:22px;margin-top:30px}.countdown strong{font:42px/1.1 var(--display)}.countdown span{font-size:9px;letter-spacing:.12em}.gift-note{border:0;border-block:1px solid var(--line);border-radius:0;padding:36px 10px}.gift-note h3{font:32px var(--display)}.gift-note>svg{width:30px;height:30px;margin-bottom:18px}.gift-note p{font-size:14px}.dress-card h3{font:28px var(--display)}.palette{gap:18px;margin-top:28px}.swatch{width:32px;height:32px}.rsvp{border-top:1px solid var(--line);padding-block:60px}.rsvp-card{margin-top:30px}.rsvp-card input,.rsvp-card select{min-height:54px;border-radius:8px;padding:12px 14px;background:var(--paper)}.rsvp-card label{font-size:12px;letter-spacing:.02em;margin-bottom:20px}.primary-button{border-radius:30px;min-height:54px;font-size:13px;letter-spacing:.035em}.demo-note{font-size:11px;opacity:.8;line-height:1.6;margin-top:18px}.confirmation{font-size:15px;line-height:1.8;border:1px solid var(--line);border-radius:14px}.footer{padding:28px 20px 90px}.footer .brand{font:26px var(--display)}.footer small{font-size:10px}.sound-control{width:auto;min-width:48px;padding:0 14px;gap:9px;display:flex;font-size:10px;letter-spacing:.08em;text-transform:uppercase;background:#f8f1e4;border-color:#bea77d}.sound-control:after{content:'Música'}.sound-control svg{width:20px}.sound-control.is-paused{background:#e7decd}.page h1:focus{outline:none}.reveal{opacity:1;transform:none}.motion-ready .reveal:not(.in-view){opacity:0;transform:translateY(22px)}.motion-ready .reveal{transition:opacity .7s ease,transform .9s cubic-bezier(.2,.75,.2,1)}.page-opening .hero{animation:invitation-arrival 1s both}@keyframes invitation-arrival{from{opacity:0;transform:translateY(35px)}to{opacity:1;transform:none}}
@media(min-width:700px){body{margin:24px auto}.cover{border-radius:0}.section,.paper-section,.split{padding-inline:48px}.theme-xv .hero{min-height:820px}.cover-copy>h1{font-size:65px}}
@media(max-width:360px){.section,.paper-section,.split{padding-inline:24px}.cover-copy>h1{font-size:43px}.keepsake{margin-top:32px}.cover{padding-inline:22px}.theme-wedding .hero h1{font-size:43px!important}.theme-xv .hero{min-height:630px}.countdown strong{font-size:34px}}
@media(max-height:650px){.cover{padding-top:48px;overflow-y:auto;justify-content:flex-start}.cover .float-brand{top:18px;font-size:14px}.cover-copy>h1{font-size:36px}.cover-copy>h1 em{font-size:18px}.cover-date{margin-top:10px;padding:6px 12px}.keepsake{width:215px;margin-top:26px;margin-bottom:18px}.cover-copy>.overline{margin-bottom:6px;font-size:9px}.cover-copy>.opening-note{display:none}}
@media(prefers-reduced-motion:reduce){.motion-ready .reveal:not(.in-view){opacity:1;transform:none}.cover,.keepsake,.page-opening .hero{animation:none!important;transition:none!important}}
