@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,400;0,500;0,600;1,400;1,500&family=Manrope:wght@400;500;600&display=swap');
:root{--paper:#f7f3e9;--ink:#304039;--gold:#a58a50;--sans:Manrope,Arial,sans-serif;--serif:'Cormorant Garamond',Georgia,serif}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden}body{color:var(--ink);font-family:var(--sans);background:radial-gradient(ellipse at 50% 30%,#f7f4ed 0%,#e3ddd1 70%,#d8d1c3 100%);background-attachment:fixed}body::before{content:'';position:fixed;inset:0;pointer-events:none;opacity:.12;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.7' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%23796d5a' filter='url(%23n)' opacity='.25' d='M0 0h180v180H0z'/%3E%3C/svg%3E")}button,a{-webkit-tap-highlight-color:transparent;touch-action:manipulation}button{cursor:pointer;font:inherit;color:inherit}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible{outline:2px solid #ad8a48;outline-offset:4px}button:disabled{opacity:.28;cursor:default}[hidden]{display:none!important}.topbar{height:66px;display:flex;align-items:center;justify-content:space-between;padding:0 32px;position:relative;z-index:2}.brand{font-family:var(--serif);font-size:28px;letter-spacing:2px;border:0;background:none;padding:0}.brand span{font-style:italic;font-size:19px;color:#8c774f}.topbar>p{font-size:9px;letter-spacing:3px;margin:0;color:#6d7369}.music{border:1px solid #a7a59377;background:transparent;border-radius:25px;font-size:11px;padding:8px 13px;min-width:85px}.studio{height:calc(100svh - 66px);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:8px 16px 12px;position:relative}.album-stage{position:relative;perspective:1800px}.book{position:relative;width:min(90vw,calc((100svh - 174px)*.66),470px);aspect-ratio:.66;container-type:size;isolation:isolate;filter:drop-shadow(12px 20px 18px #493e2d28)}.book::before{content:'';position:absolute;inset:5px -5px -6px -3px;border-radius:2px 6px 6px 2px;background:#31443a;box-shadow:0 1px 2px #0005;z-index:-3}.page-edges{position:absolute;inset:3px -3px -3px 3px;background:repeating-linear-gradient(0deg,#cfc7b6 0px,#f3edde 1px,#f3edde 3px,#e4ddce 4px);border-radius:0 4px 5px 0;z-index:-2}.page-holder{position:absolute;inset:0}.leaf{position:absolute;inset:0;padding:5.8cqw 6.5cqw 7cqw;background:linear-gradient(90deg,#d6ceba 0%,#f1ecdf 1.8%,var(--paper) 6%,#faf7ef 60%,#f0ebde 100%);border-radius:1px 3px 4px 1px;overflow:hidden;font-size:3.35cqw;line-height:1.7;display:flex;flex-direction:column;align-items:center;text-align:center;box-shadow:inset -1px 0 1px #fff9,inset 1px 0 2px #534e3d33}.leaf::after{content:'';position:absolute;inset:0;pointer-events:none;opacity:.14;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='p'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.6' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%23a99775' filter='url(%23p)' opacity='.2' d='M0 0h200v200H0z'/%3E%3C/svg%3E")}.page-top{width:100%;display:flex;justify-content:space-between;gap:10px;font-size:1.65cqw;letter-spacing:.23cqw;color:#8e8c7c;line-height:1.5;margin-bottom:4cqw}.overline{font-size:2cqw;letter-spacing:.42cqw;line-height:1.7;margin:3cqw 0;color:#8f7b51;font-weight:500}h1,h2,h3,h4,p,figure,blockquote{margin:0}h2{font-family:var(--serif);font-size:8cqw;line-height:1.05;font-weight:400;letter-spacing:-.15cqw}h2 em{font-weight:400;color:var(--gold)}.body-copy{font-size:3.25cqw;line-height:1.85;color:#5a6359}.folio{position:absolute;left:6.5cqw;right:6.5cqw;bottom:3.1cqw;display:flex;justify-content:space-between;align-items:center;font-size:1.6cqw;letter-spacing:.21cqw;color:#989181;border-top:1px solid #bcb19a55;padding-top:1.8cqw}.folio b{font-family:var(--serif);font-size:2.6cqw;font-weight:400}.mounted-photo{position:relative;width:100%;border:1cqw solid #fffdf7;box-shadow:0 .7cqw 1.5cqw #463b2720}.mounted-photo img{display:block;width:100%;height:100%;object-fit:cover}.photo-page .tall{height:61%;flex-shrink:0}.beach .tall img{object-position:50% 70%}.roses .tall img{object-position:52% center}.photo-caption{margin-top:auto;margin-bottom:4cqw}.photo-caption h2{font-size:7.3cqw}.photo-caption>p:last-child{font-size:3.15cqw;line-height:1.75;margin-top:2.5cqw;color:#62685c}.cover{background-color:#2c4035;background-image:linear-gradient(90deg,#172b22 0,#3c5041 2%,#263c30 4%,#374b3d 6%,transparent 12%),repeating-linear-gradient(90deg,#ffffff05 0px,#ffffff05 1px,transparent 1px,transparent 3px),repeating-linear-gradient(0deg,#0000000b 0px,#0000000b 1px,transparent 1px,transparent 3px);padding:5cqw;color:#ead8ab;box-shadow:inset 0 1px 1px #ffffff3b,inset -2px 0 3px #0005;border-radius:2px 5px 5px 2px}.cover::after{opacity:.35}.cover-border{position:relative;border:1px solid #c8b07a6b;outline:1px solid #a28d5c35;outline-offset:-1.3cqw;width:100%;height:100%;padding:5cqw 5cqw 4cqw;display:flex;flex-direction:column;align-items:center}.cover .overline{color:#d6c59b;font-size:1.85cqw;letter-spacing:.45cqw;margin:1cqw 0 3cqw}.cover h1{font-family:var(--serif);font-size:10.2cqw;line-height:1.05;font-weight:400;text-shadow:0 1px 0 #0009;letter-spacing:-.2cqw;white-space:nowrap}.cover h1 i{font-size:7.4cqw;color:#bc9d60}.cover-photo{height:57%;width:83%;padding:1.1cqw;background:#d2bf8c;box-shadow:0 .5cqw 2cqw #0005;margin:5cqw 0 4cqw}.cover-photo img{width:100%;height:100%;object-fit:cover;object-position:center 29%;display:block;filter:saturate(.85)}.cover-title{font-family:var(--serif);font-size:6.8cqw;letter-spacing:.1cqw;line-height:1.1}.cover-date{font-size:2cqw;letter-spacing:.5cqw;margin-top:3cqw}.open-album{position:relative;z-index:2;font-size:2.7cqw;letter-spacing:.1cqw;background:none;border:0;border-bottom:1px solid #dac48a66;color:#eddbb2;padding:2cqw 0;margin-top:auto;min-height:38px}.open-album span{margin-left:4cqw}.spine{position:absolute;left:3.4cqw;top:0;bottom:0;width:1px;background:#0003;box-shadow:2px 0 3px #ffffff13;pointer-events:none}.memory-page .chapter-no{margin-top:3cqw}.memory-page h2{font-size:8.5cqw;margin:1cqw 0 5cqw}.paper-photo{background:#fffcf3;padding:2.3cqw 2.3cqw 0;box-shadow:0 1cqw 3cqw #564a2d24;transform:rotate(-2deg);width:100%}.paper-photo img{display:block;width:100%;object-fit:cover}.paper-photo figcaption{font-family:var(--serif);font-style:italic;font-size:4cqw;padding:2cqw 0 2.8cqw;color:#807c68}.memory-page .body-copy{margin-top:6cqw;text-align:left}.date-note{margin-top:auto;margin-bottom:4cqw;width:100%;text-align:center}.date-note>span{font-size:2.25cqw;letter-spacing:.3cqw;color:#93835d}.date-note>p{font-family:var(--serif);font-size:5.4cqw;margin-top:1cqw}.engagement-layout{display:grid;grid-template-columns:.8fr 1.2fr;gap:3cqw;align-items:center;margin:8cqw 0;width:100%;flex:1;max-height:74%}.engagement-copy{text-align:left}.engagement-copy h2{font-size:9cqw;margin:3cqw 0 4cqw}.engagement-copy>p:last-child{font-size:3cqw;line-height:1.9}.engagement-page .paper-photo{transform:rotate(3deg);padding:1.7cqw 1.7cqw 0}.engagement-page .paper-photo img{aspect-ratio:.58;object-position:47% center}.engagement-page .paper-photo figcaption{font-size:3.2cqw}.church{height:55%;flex-shrink:0}.church img{object-position:center 35%}.promise-page>.overline{margin:5cqw 0 3cqw}.promise-page blockquote{font-family:var(--serif);font-size:8cqw;line-height:1.1}.promise-page cite{display:block;font:2.2cqw var(--sans);letter-spacing:.2cqw;margin-top:3cqw;color:#9b8b6c}.promise-page .body-copy{margin-top:4cqw;font-size:3cqw}.invitation-page .gold-cross{font-size:8cqw;color:var(--gold);line-height:1;margin:2cqw 0 4cqw}.invite-intro{font-size:2.7cqw;color:#7d806f}.invitation-page h2{font-size:7.6cqw;margin:4cqw 0;line-height:1.05}.invitation-page h2 em{display:block;font-size:6cqw;margin:1.2cqw 0}.invitation-page h3{font-family:var(--serif);font-weight:400;font-style:italic;font-size:7.6cqw;margin:1.6cqw 0 4cqw}.invitation-date{width:82%;display:flex;justify-content:center;align-items:center;gap:5cqw;border-top:1px solid #b4a37a77;border-bottom:1px solid #b4a37a77;padding:1cqw 0}.invitation-date>span{font-size:2.25cqw;letter-spacing:.3cqw;line-height:1.8}.invitation-date>strong{font-family:var(--serif);font-weight:400;font-size:17cqw;line-height:1.1}.hour{font-size:2.3cqw;letter-spacing:.4cqw;margin:2.7cqw 0 3cqw}h4{font-family:var(--serif);font-weight:500;font-size:6.3cqw;line-height:1.1}.address{font-size:2.9cqw;line-height:1.8;margin:2.5cqw 0 4cqw}.action{display:flex;justify-content:center;align-items:center;gap:5cqw;min-height:43px;padding:2.5cqw 4cqw;background:#334b3e;color:#f4ead3;border:1px solid #253c2e;font-size:2.8cqw;letter-spacing:.12cqw;border-radius:2px;position:relative;z-index:1;box-shadow:inset 0 1px 0 #ffffff17}.invitation-page .action{margin-top:auto;margin-bottom:6cqw}.reception-photo{height:40%;margin-bottom:3cqw;flex-shrink:0}.reception-photo img{object-position:70% center}.reception-page h2{font-size:8.6cqw;margin:1cqw 0 3cqw}.reception-page .body-copy{font-size:3cqw}.reception-page h4{margin-top:5cqw}.reception-page h4 span{font-size:5.6cqw;color:#988052}.reception-page .action{margin-top:auto;margin-bottom:6cqw}.final-photo{height:44%;flex-shrink:0}.final-photo img{object-position:center 28%}.final-page>.overline{margin:4cqw 0 2cqw}.final-page h2{font-size:8.4cqw}.final-page .body-copy{font-size:3cqw;margin:3cqw 0 4cqw}.final-page .action{width:100%}.text-link{font-size:2.8cqw;margin-top:2.4cqw;border-bottom:1px solid #a38b5f77;padding-bottom:1cqw;position:relative;z-index:1;min-height:28px;display:flex;align-items:center}.signature{font-family:var(--serif);font-style:italic;font-size:4.5cqw;margin:auto 0 4cqw}.book-controls{width:min(88vw,440px);display:flex;align-items:center;justify-content:space-between;gap:20px;margin-top:20px}.book-controls button{border:1px solid #b7ae9d;background:#f6f2e577;border-radius:50%;height:44px;width:44px;font-size:20px;flex-shrink:0;transition:background .2s}.book-controls button:not(:disabled):hover{background:#fff8e9}.book-controls>div{text-align:center;min-width:130px}.book-controls p{font-family:var(--serif);font-size:22px;line-height:1.1}.book-controls span{display:block;font-size:8px;letter-spacing:2px;margin-top:6px;color:#8a8b7b}.gesture-hint{font-size:9px;letter-spacing:.5px;color:#999580;text-align:center;margin-top:12px;line-height:1.5}.turn-sheet{position:absolute;inset:0;z-index:10;transform-style:preserve-3d;transform-origin:left center;pointer-events:none}.turn-front,.turn-back{position:absolute;inset:0;backface-visibility:hidden;-webkit-backface-visibility:hidden}.turn-front .leaf{display:flex!important}.turn-front::after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,#0000,#0005);opacity:0;animation:sheet-shadow .68s ease-in-out}.turn-back{transform:rotateY(180deg);background:linear-gradient(90deg,#f2ecdc,#faf7ee 65%,#d2c9b1);display:flex;align-items:center;justify-content:center;font-family:var(--serif);font-style:italic;color:#ad9b7640;font-size:11cqw;box-shadow:inset 0 0 25px #9e906320}.turn-sheet.forward{animation:page-forward .68s cubic-bezier(.4,.05,.25,1) both}.turn-sheet.backward{animation:page-backward .68s cubic-bezier(.4,.05,.25,1) both}@keyframes page-forward{0%{transform:rotateY(0)}100%{transform:rotateY(-178deg)}}@keyframes page-backward{0%{transform:rotateY(-178deg)}100%{transform:rotateY(0)}}@keyframes sheet-shadow{0%,100%{opacity:0}50%{opacity:1}}
dialog{border:1px solid #cfc5af;background:var(--paper);color:var(--ink);width:min(500px,92vw);max-height:90svh;padding:35px;border-radius:4px;box-shadow:0 20px 80px #0004;font:13px/1.7 var(--sans);overflow:auto}dialog::backdrop{background:#19291fd1;backdrop-filter:blur(6px)}dialog h2{font-size:48px;margin:15px 0}dialog .overline,dialog .eyebrow{font-size:10px;letter-spacing:2px;color:var(--gold)}.close-dialog{position:absolute;right:14px;top:8px;border:0;background:none;font-size:28px;min-width:44px;min-height:44px}label{display:block;font-size:12px;margin:16px 0}input,textarea,select{display:block;width:100%;font:inherit;font-size:16px;padding:11px;margin-top:6px;border:1px solid #b9bfb5;background:#fffdf8;color:var(--ink);border-radius:2px}dialog form .pill{width:100%;min-height:44px;border:0;background:#334b3e;color:white;font:13px var(--sans);padding:12px}.privacy,dialog>a{font-size:10px}.honeypot{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}#resultado{margin:12px 0}#resultado[data-error=true]{color:#a13b29}
@media(max-width:600px){.topbar{height:52px;padding:0 18px}.brand{font-size:26px}.topbar>p{font-size:7px;letter-spacing:1.7px}.music{font-size:10px;padding:7px 10px;min-width:75px}.studio{height:calc(100svh - 52px);padding:3px 14px max(9px,env(safe-area-inset-bottom))}.book{width:min(89vw,calc((100svh - 155px)*.66),470px)}.book-controls{margin-top:16px}.book-controls p{font-size:20px}.gesture-hint{margin-top:9px;font-size:8px}.open-album{min-height:32px}.action{min-height:42px}}
@media(max-height:660px){.topbar{height:44px}.studio{height:calc(100svh - 44px)}.book{width:min(89vw,calc((100svh - 137px)*.66),470px)}.book-controls{margin-top:12px}.gesture-hint{margin-top:5px}.book-controls button{width:40px;height:40px}.book-controls p{font-size:18px}.action{min-height:35px}.open-album{min-height:28px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}
/* Keep every memory inside the printed page, including compact phones. */
.memory-page .chapter-no{margin:1.5cqw 0 2cqw}.memory-page h2{font-size:8cqw;margin:0 0 4cqw}.memory-page .paper-photo{height:36%;flex-shrink:0}.memory-page .paper-photo img{height:calc(100% - 10cqw);object-fit:cover}.memory-page .body-copy{margin-top:4cqw;font-size:3.5cqw;line-height:1.75}.memory-page .date-note{margin-bottom:4cqw}.photo-caption>p:last-child{font-size:3.4cqw}.engagement-copy>p:last-child{font-size:3.4cqw}.promise-page .body-copy{font-size:3.4cqw}.address{font-size:3.3cqw}.final-page .body-copy{font-size:3.4cqw}.reception-page .body-copy{font-size:3.4cqw}
.book{perspective:1600px}.invitation-page{padding-top:4cqw}.invitation-page .page-top{margin-bottom:2cqw}.invitation-page .gold-cross{margin:0 0 2cqw}.invitation-page h2{margin:3cqw 0}.invitation-page h3{margin:1.4cqw 0 2.5cqw}.invitation-page .hour{margin:2cqw 0}.invitation-page .address{margin:2cqw 0 2.5cqw}.invitation-page .action{margin-bottom:6.5cqw}
.final-photo{height:39%}.final-page .signature{font-size:4.2cqw;margin:auto 0 6.5cqw}
/* Portraits stay intact; the invitation celebrates the couple. */
.church{width:64%;height:55%;background:#fffdf7}.church img{object-fit:contain;object-position:center}.final-photo img{object-position:center top}
.invitation-page{background:linear-gradient(100deg,#e3dac8 0%,#faf4e9 5%,#fff8ee 55%,#f4e8d9 100%);padding:4cqw 6.5cqw 8cqw}.invitation-page .page-top{margin-bottom:3cqw}.invite-photo{width:100%;height:25%;flex-shrink:0;border:1cqw solid #fffdf7;box-shadow:0 .5cqw 1.8cqw #62492620;margin-bottom:3cqw}.invite-photo img{display:block;width:100%;height:100%;object-fit:cover;object-position:50% 10%}.invitation-page .invite-intro{font-size:2.8cqw;color:#7d755e}.invitation-page h2{font-size:7cqw;line-height:1.02;margin:3cqw 0 2.5cqw;color:#395341}.clear-amp{display:block;font-family:Arial,sans-serif;font-size:4.8cqw;font-style:normal;font-weight:400;line-height:1.1;color:#a57d4b;margin:1.4cqw 0}.invitation-page h3{font-size:7cqw;font-style:normal;line-height:1.1;color:#a66d54;margin:1.5cqw 0 3cqw}.joy-date{width:100%;background:#e6ecdf;border-top:1px solid #b3c3a6;border-bottom:1px solid #b3c3a6;padding:2.5cqw 0;margin:0 0 3.5cqw}.joy-date strong{display:block;font-family:var(--serif);font-size:7.8cqw;line-height:1.1;font-weight:500;color:#354e3c}.joy-date span{display:block;font-size:2.3cqw;letter-spacing:.25cqw;margin-top:1.5cqw;color:#5b6d56}.invitation-page h4{font-size:5.9cqw}.invitation-page .address{font-size:3.2cqw;margin:2cqw 0}.invitation-page .action{margin-top:auto;margin-bottom:5cqw;min-height:38px;padding:2.2cqw 4cqw}
.invite-photo{height:21%;margin-bottom:2cqw}.invite-photo img{object-position:center top}.invitation-page h2{margin:2cqw 0}.joy-date{padding:2cqw 0;margin-bottom:2.5cqw}
