@font-face{font-family:CapriDisplay;src:url('assets/fraunces.ttf') format('truetype');font-weight:100 900;font-display:swap}
@font-face{font-family:CapriSans;src:url('assets/dm-sans.ttf') format('truetype');font-weight:100 900;font-display:swap}
:root{--paper:#fff9e9;--ink:#19447b;--gold:#fff0a1;font-family:CapriSans,Arial,sans-serif;color:var(--ink);background:#aed5fa;font-synthesis:none;font-variant-numeric:lining-nums}
*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;overscroll-behavior:none}body{-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer;border:0;background:transparent;touch-action:manipulation}button:focus-visible,a:focus-visible{outline:2px solid currentColor;outline-offset:4px}[hidden]{display:none!important}
#invitation{position:fixed;inset:0;height:100svh;height:100dvh;isolation:isolate;overflow:hidden;background:var(--paper)}#film{position:absolute;inset:0;width:100%;height:100%;display:block}#titles{position:absolute;inset:0;pointer-events:none;overflow:hidden}.scene-copy{position:absolute;opacity:0;text-align:center;will-change:opacity,transform}
.small-title{left:18%;top:9%;width:64%;color:#fff9e9;font:500 clamp(20px,2vw,30px)/1.35 CapriSans,Arial,sans-serif;text-shadow:0 1px 4px #16447f55}.small-title strong{display:block;font-family:CapriDisplay,Georgia,serif;font-size:clamp(52px,6.4vw,94px);font-weight:500;font-variation-settings:'SOFT' 65,'WONK' 1;letter-spacing:-.04em;line-height:1.05;margin-bottom:17px;transform:rotate(-3deg)}.small-title span{display:block}
.names{top:17%;left:5%;width:90%;display:flex;justify-content:center;align-items:baseline;gap:.22em;font:500 clamp(43px,4.9vw,74px)/1.08 CapriDisplay,Georgia,serif;font-variation-settings:'SOFT' 65,'WONK' 1;letter-spacing:-.04em;color:var(--ink)}.names span{white-space:nowrap}
.destination{left:10%;top:12%;width:80%;color:var(--ink)}.destination .place{font:500 clamp(40px,4.8vw,70px)/1.1 CapriDisplay,Georgia,serif;letter-spacing:-.035em}.destination .date{font:550 clamp(21px,2.1vw,29px)/1.4 CapriSans,Arial,sans-serif;letter-spacing:.035em;margin-top:10px}
.scene-copy.celebration{top:12%;left:10%;width:80%;color:var(--ink);line-height:1.14}.scene-copy.celebration strong{display:block;font:500 clamp(48px,5.8vw,84px)/1.07 CapriDisplay,Georgia,serif;font-variation-settings:'SOFT' 65,'WONK' 1;letter-spacing:-.04em;transform:rotate(-2deg)}.scene-copy.celebration span{display:block;font:550 clamp(16px,1.8vw,26px)/1.4 CapriSans,Arial,sans-serif;letter-spacing:.12em;margin-top:13px}
.ending{left:16%;top:7%;width:68%;display:flex;flex-direction:column;align-items:center;color:var(--ink)}.ending p{margin:0}.ending h1{display:flex;gap:.22em;align-items:baseline;justify-content:center;margin:0 0 22px;font:500 clamp(46px,5.1vw,76px)/1.05 CapriDisplay,Georgia,serif;font-variation-settings:'SOFT' 65,'WONK' 1,'opsz' 64;letter-spacing:-.04em}.ending h1 span{white-space:nowrap}.ending h1 em{font:inherit;font-size:.80em;letter-spacing:-.04em}.ending .place{font-size:clamp(16px,1.3vw,20px);font-weight:600;line-height:1.4;letter-spacing:.12em}.ending .date{font-size:clamp(19px,1.7vw,25px);font-weight:500;line-height:1.4;letter-spacing:.025em;margin-top:6px}.ending .celebration{font-size:clamp(14px,1.2vw,18px);font-weight:500;line-height:1.4;letter-spacing:.055em;margin-top:18px}.ending .more{order:5;font-size:13px;font-weight:500;line-height:1.4;letter-spacing:.08em;margin-top:16px}.monogram{display:block;width:98px;height:86px;object-fit:contain}.ending .monogram{order:6;margin:18px 0 0;filter:drop-shadow(0 1px 1px #45648977)}
#loading{position:absolute;inset:0;display:grid;place-items:center;background:#aed5fa;z-index:10;pointer-events:none}#loading .monogram{width:88px;height:80px;animation:ink 1.7s ease-in-out infinite}.ready #loading{opacity:0;visibility:hidden;transition:opacity .5s,visibility 0s .5s}@keyframes ink{50%{opacity:.45}}
.controls{position:absolute;z-index:15;inset:0;pointer-events:none;color:#fff9e9;transition:color .6s}.controls button,.controls .languages{pointer-events:auto}.languages{display:flex;position:absolute;top:max(12px,env(safe-area-inset-top));right:max(15px,env(safe-area-inset-right));align-items:center;font-size:13px;font-weight:550;letter-spacing:.05em}.languages button{width:39px;height:44px;padding:0;opacity:.65}.languages button[aria-pressed=true]{opacity:1}.languages span{opacity:.5;font-size:10px}.courtyard .controls,.sunset .controls{color:var(--ink)}.sound{position:absolute;left:max(20px,env(safe-area-inset-left));bottom:max(18px,env(safe-area-inset-bottom));width:44px;height:44px;display:grid;place-items:center}.sound svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.3;stroke-linecap:round;stroke-linejoin:round}.sound .waves{display:none}.sound[aria-pressed=true] .waves{display:block}.sound[aria-pressed=true] .slash{display:none}
.final-actions{position:absolute;bottom:max(19px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:20px;z-index:25;color:var(--ink);white-space:nowrap}.final-actions a{display:flex;align-items:center;justify-content:center;gap:22px;min-height:58px;min-width:252px;padding:12px 25px;border:1px solid #19447b25;border-radius:999px;background:var(--gold);color:var(--ink);font-size:18px;font-weight:650;line-height:1.25;letter-spacing:.02em;text-decoration:none;box-shadow:0 5px 18px #123f7628;transition:transform .2s,background .2s}.final-actions a:hover{background:#ffe67f;transform:translateY(-2px)}.final-actions a:focus-visible{outline:3px solid var(--ink);outline-offset:4px}.final-actions a>span:last-child{font-size:23px;font-weight:400}.replay{height:40px;padding:0 9px;display:flex;gap:8px;align-items:center;justify-content:center;font-size:14px;font-weight:500;color:inherit;text-shadow:0 1px 4px #fff9e9}.replay svg{fill:none;stroke:currentColor;stroke-width:1.7;width:16px;height:16px;stroke-linecap:round;stroke-linejoin:round}.replay:hover{opacity:.7}
.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}.no-script{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;background:#aed5fa;color:var(--ink);text-align:center;padding:30px}.no-script h1{font:500 42px CapriDisplay,Georgia,serif}.load-failed{background:#aed5fa!important}.load-failed #film{display:none}.future-hotels{margin-top:20px;color:inherit;font-size:14px;letter-spacing:.08em;text-underline-offset:5px}
@media(max-aspect-ratio:4/5){
 .small-title{top:10%;left:6%;width:88%;font-size:5.2vw;line-height:1.4}.small-title strong{font-size:14.8vw;margin-bottom:15px}.names{top:17%;left:5%;width:90%;flex-direction:column;align-items:center;gap:.02em;font-size:12.7vw;line-height:1.03}
 .destination{top:13%;left:5%;width:90%}.destination .place{font-size:10.8vw}.destination .date{font-size:5.2vw;letter-spacing:.015em;margin-top:9px}.scene-copy.celebration{top:13%;left:5%;width:90%}.scene-copy.celebration strong{font-size:12.5vw}.scene-copy.celebration span{font-size:4.5vw;letter-spacing:.065em;margin-top:10px}
 .ending{top:8%;left:5%;width:90%}.ending h1{flex-direction:column;align-items:center;font-size:clamp(45px,15.6vw,78px);line-height:1.01;gap:.015em;margin-bottom:19px}.ending h1 em{font-size:.78em}.ending .place{font-size:16px}.ending .date{font-size:20px;margin-top:6px}.ending .celebration{font-size:14px;margin-top:17px}.ending .more{font-size:12px;margin-top:15px}.ending .monogram{width:78px;height:69px;margin-top:17px}
 .languages{top:max(7px,env(safe-area-inset-top));right:max(10px,env(safe-area-inset-right))}.final-actions{flex-direction:column;gap:3px;bottom:max(13px,env(safe-area-inset-bottom))}.final-actions a{min-width:260px;min-height:58px}.final-actions .replay{height:32px}.sound{left:11px;bottom:max(11px,env(safe-area-inset-bottom))}
}
@media(max-height:700px) and (max-aspect-ratio:4/5){.ending{top:7%}.ending h1{font-size:13.5vw;margin-bottom:12px}.ending .place{font-size:14px}.ending .date{font-size:17px;margin-top:4px}.ending .celebration{font-size:12px;margin-top:11px}.ending .more{font-size:12px;margin-top:10px}.ending .monogram{width:58px;height:51px;margin-top:11px}.final-actions a{min-height:54px;min-width:240px;font-size:17px}.final-actions{bottom:max(9px,env(safe-area-inset-bottom))}}
@media(max-height:520px) and (min-aspect-ratio:4/5){.small-title{top:8%;font-size:18px}.small-title strong{font-size:46px;margin-bottom:8px}.names{font-size:38px}.destination .place{font-size:37px}.destination .date{font-size:19px}.scene-copy.celebration strong{font-size:44px}.scene-copy.celebration span{font-size:16px}.ending{top:6%;left:15%;width:70%}.ending h1{font-size:36px;margin-bottom:8px}.ending .place{font-size:14px}.ending .date{font-size:17px;margin-top:3px}.ending .celebration{font-size:12px;margin-top:8px}.ending .more{font-size:12px;margin-top:7px}.ending .monogram{width:55px;height:49px;margin-top:8px}.final-actions{bottom:12px}.final-actions a{min-height:50px;min-width:210px;font-size:16px}}
@media(prefers-reduced-motion:reduce){#loading .monogram{animation:none}.controls,.ready #loading,.final-actions a{transition:none}}

/* Original painted lettering; the approved ampersand has its own fixed face. */
.painted-letter{display:block;object-fit:contain;max-width:100%;height:auto}.small-title strong{width:min(680px,80%);margin:0 auto 15px;transform:rotate(-2deg)}.small-title .painted-letter{width:100%;filter:brightness(0) invert(98%) sepia(15%) saturate(427%) hue-rotate(334deg)}
.names{gap:24px;align-items:center}.names>span,.ending h1>span{display:flex;align-items:center;justify-content:center;gap:18px}.names .name-marcelly{width:clamp(215px,25vw,350px)}.names .name-travis{width:clamp(165px,19vw,270px)}.approved-ampersand{font-family:CapriDisplay,Georgia,serif!important;font-weight:500!important;font-style:normal!important;font-variation-settings:'SOFT' 65,'WONK' 1,'opsz' 64;letter-spacing:-.04em;line-height:1!important}
.scene-copy.celebration strong{width:min(530px,70%);margin:auto;transform:rotate(-2deg)}.scene-copy.celebration>span{width:min(535px,78%);margin:15px auto 0}.scene-copy.celebration img{width:100%}
.ending{top:5.8%}.ending h1{gap:25px;align-items:center;margin-bottom:17px}.ending .name-marcelly{width:clamp(215px,24vw,350px)}.ending .name-travis{width:clamp(170px,18vw,270px)}.ending h1 .approved-ampersand{font-size:48px}.ending .monogram{width:137px;height:120px;margin-top:17px}.ending .more{margin-top:13px}#loading .monogram{width:123px;height:112px}
.final-actions{gap:18px;bottom:max(18px,env(safe-area-inset-bottom))}.final-actions a.future-hotels{min-width:245px;min-height:54px;margin:0;padding:12px 17px;border-color:#19447b45;background:#fff9e9e8;font-size:14px;letter-spacing:.04em;box-shadow:0 3px 10px #123f7617}.final-actions a.future-hotels:hover{background:#fff9e9}
@media(max-aspect-ratio:4/5){
 .small-title strong{width:100%;margin-bottom:12px}.small-title{top:10%;font-size:5.1vw}.names{gap:4px;top:14%}.names>span{gap:10px}.names .name-marcelly{width:62vw}.names .name-travis{width:48vw}.names .approved-ampersand{font-size:10vw}
 .scene-copy.celebration strong{width:78%}.scene-copy.celebration>span{width:90%;margin-top:14px}.scene-copy.celebration{top:12.5%}
 .ending{top:6.8%}.ending h1{gap:0;margin-bottom:12px;line-height:1}.ending h1>span{gap:10px}.ending .name-marcelly{width:66vw}.ending .name-travis{width:49vw}.ending h1 .approved-ampersand{font-size:10vw}.ending .place{font-size:15px}.ending .date{font-size:19px}.ending .celebration{font-size:13px;margin-top:12px}.ending .more{font-size:12px;margin-top:11px}.ending .monogram{width:109px;height:97px;margin-top:13px}
 .final-actions{gap:4px;bottom:max(12px,env(safe-area-inset-bottom))}.final-actions a{min-width:260px;min-height:54px;font-size:17px}.final-actions a.future-hotels{min-width:260px;min-height:43px;padding:8px 15px;font-size:13px}.final-actions .replay{height:30px;font-size:14px}
}
@media(max-height:700px) and (max-aspect-ratio:4/5){
 .ending{top:5%}.ending .name-marcelly{width:55vw}.ending .name-travis{width:41vw}.ending h1{margin-bottom:9px}.ending h1 .approved-ampersand{font-size:8.2vw}.ending .place{font-size:13px}.ending .date{font-size:16px;margin-top:3px}.ending .celebration{font-size:12px;margin-top:9px}.ending .more{font-size:12px;margin-top:8px}.ending .monogram{width:81px;height:72px;margin-top:10px}.final-actions{bottom:max(8px,env(safe-area-inset-bottom));gap:3px}.final-actions a{min-height:48px;min-width:246px;font-size:16px}.final-actions a.future-hotels{min-height:39px;min-width:246px;font-size:12px}.final-actions .replay{height:28px}
}
@media(max-height:520px) and (min-aspect-ratio:4/5){
 .small-title strong{width:min(370px,70%)}.ending{top:5%}.ending .name-marcelly{width:180px}.ending .name-travis{width:140px}.ending h1{gap:13px;margin-bottom:5px}.ending h1>span{gap:10px}.ending h1 .approved-ampersand{font-size:32px}.ending .monogram{width:77px;height:68px;margin-top:8px}.ending .more{margin-top:7px}.final-actions{gap:10px;bottom:9px}.final-actions a{min-height:44px;min-width:180px;font-size:15px}.final-actions a.future-hotels{min-height:44px;min-width:220px;font-size:12px;padding:9px 10px}
}

/* The first visible frame is the exact painted portal, before canvas preparation. */
#loading{background:#fff9e9}#loading picture,#loading picture img{display:block;width:100%;height:100%}#loading picture img{object-fit:cover}.ready #loading{opacity:0;visibility:hidden;transition:opacity .12s,visibility 0s .12s}
/* Original monogram, enlarged without redrawing or changing its proportions. */
.ending .monogram{width:192px;height:168px}
@media(max-aspect-ratio:4/5){.ending .monogram{width:153px;height:136px}}
@media(max-height:700px) and (max-aspect-ratio:4/5){.ending .monogram{width:113px;height:101px}}
@media(max-height:520px) and (min-aspect-ratio:4/5){.ending .monogram{width:108px;height:95px}}

/* Hand-authored cinematic hierarchy; practical controls retain their quiet face. */
.small-title>span{width:min(480px,76%);margin:6px auto 0}.small-title>span:last-child{width:min(240px,40%)}
.destination .place{width:min(470px,65%);margin:0 auto}.destination .date{width:min(365px,57%);margin:12px auto 0}
.scene-copy.celebration>span{width:min(500px,68%);margin-top:8px}
.ending .place{width:230px}.ending .date{width:265px;margin-top:8px}
.ending .celebration{display:flex;align-items:center;justify-content:center;gap:7px;margin-top:17px;width:320px}
.ending .celebration img:first-child{width:35%}.ending .celebration img:last-child{width:63%}
.ending .more{width:205px;margin-top:15px}
@media(max-aspect-ratio:4/5){
 .small-title>span{width:94%;margin-top:8px}.small-title>span:last-child{width:50%}html[lang=pt-BR] .small-title>span{width:65%}html[lang=pt-BR] .small-title>span:last-child{width:99%}
 .destination .place{width:77%}.destination .date{width:84%;margin-top:10px}
 .scene-copy.celebration>span{width:78%;margin-top:8px}
 .ending .place{width:175px}.ending .date{width:230px;margin-top:7px}.ending .celebration{width:270px;margin-top:13px;gap:5px}.ending .more{width:210px;margin-top:13px}
}
@media(max-height:700px) and (max-aspect-ratio:4/5){.ending .place{width:145px}.ending .date{width:205px}.ending .celebration{width:240px;margin-top:9px}.ending .more{width:195px;margin-top:9px}}
@media(max-height:520px) and (min-aspect-ratio:4/5){.ending .place{width:145px}.ending .date{width:185px}.ending .celebration{width:235px;margin-top:8px}.ending .more{width:175px;margin-top:8px}}
/* Later cinematic text does not request its ampersand font before opening. */
#titles .scene-copy{display:none}
@media(max-aspect-ratio:4/5){.names{left:calc(5% + 60px)}}
@media(max-height:600px) and (max-aspect-ratio:4/5){.ending .monogram{width:98px;height:87px;margin-top:0}}
#invitation:not(.actions-ready) #final-actions{display:none!important}
#guest-page{position:fixed;inset:0;z-index:100;width:100%;height:100%;border:0;background:#fff9e9}
.guest-page-open #invitation{visibility:hidden}
#couple-title .painted-letter,#destination-title .painted-letter,#celebration-title .painted-letter{filter:brightness(0) invert(98%) sepia(15%) saturate(427%) hue-rotate(334deg)}
#couple-title .approved-ampersand{color:#fff9e9}
/* MASTER lettering proportions: small painted details, landscape-first ending. */
.small-title strong{width:min(590px,83%)}
html[lang=pt-BR] .small-title>span:last-child{width:min(580px,86%)}
.names{left:5%;top:7%;gap:21px}.names .name-marcelly{width:clamp(200px,23vw,330px)}.names .name-travis{width:clamp(155px,17vw,250px)}
.ending{top:7%;left:13%;width:74%}.ending h1{gap:20px;margin-bottom:23px}.ending .name-marcelly{width:clamp(185px,19vw,275px)}.ending .name-travis{width:clamp(145px,14vw,210px)}.ending h1 .approved-ampersand{font-size:39px}
.ending .place{width:180px}.ending .date{width:230px;margin-top:10px}.ending .celebration{width:275px;margin-top:20px}.ending .more{width:205px;margin-top:21px}.ending .monogram{margin-top:17px}
@media(max-aspect-ratio:4/5){
 .names{left:5%;top:8%;gap:0}.names .name-marcelly{width:59vw}.names .name-travis{width:45vw}
 .ending{top:7.5%;left:6%;width:88%}.ending h1{gap:0;margin-bottom:20px}.ending .name-marcelly{width:54vw}.ending .name-travis{width:40vw}.ending h1 .approved-ampersand{font-size:8vw}
 .ending .place{width:158px}.ending .date{width:215px;margin-top:9px}.ending .celebration{width:258px;margin-top:0}.ending .more{width:205px;margin-top:19px}.ending .monogram{margin-top:13px}
}
@media(max-height:700px) and (max-aspect-ratio:4/5){
 .ending{top:7%}.ending .name-marcelly{width:48vw}.ending .name-travis{width:35vw}.ending h1{margin-bottom:14px}.ending h1 .approved-ampersand{font-size:7vw}
 .ending .place{width:135px}.ending .date{width:191px;margin-top:6px}.ending .celebration{width:235px;margin-top:12px}.ending .more{width:185px;margin-top:13px}.ending .monogram{margin-top:8px}
}
@media(max-height:520px) and (min-aspect-ratio:4/5){
 .ending{top:5%}.ending h1{gap:14px;margin-bottom:9px}.ending .name-marcelly{width:168px}.ending .name-travis{width:125px}.ending h1 .approved-ampersand{font-size:30px}.ending .place{width:145px}.ending .date{width:185px;margin-top:5px}.ending .celebration{width:235px;margin-top:8px}.ending .more{width:175px;margin-top:10px}.ending .monogram{margin-top:7px}
}

/* Precision finishing: preserve the lettering and monogram outlines. */
.paint-filters{position:absolute;pointer-events:none;overflow:hidden}
.approved-ampersand .painted-letter{width:.82em;height:1em;max-width:none;object-fit:contain}
#celebration-title .painted-letter{filter:url(#painted-terracotta)}
.ending .monogram{filter:url(#painted-cobalt)}

/* One explicit gesture starts the existing portal and purchased recording together. */
.start-film{position:absolute;z-index:16;left:50%;bottom:max(9%,calc(env(safe-area-inset-bottom) + 28px));transform:translateX(-50%);min-height:48px;max-width:90%;padding:12px 24px;border:1px solid #f9edbbaa;border-radius:28px;background:#fff4bc;color:#244b8a;font:500 14px/1.35 CapriText,Georgia,serif;white-space:nowrap;cursor:pointer}
.start-film:disabled{opacity:.65;cursor:wait}.awaiting-start .sound{visibility:hidden}

/* Preserve the final master's pigment ratios and edges, with denser paint over the blue daytime sky. */
#opening-title .painted-letter,#couple-title .painted-letter,#destination-title .painted-letter{filter:brightness(.4)}
#opening-title .painted-letter{filter:none}
#opening-title > strong > .painted-letter{transform:scale(1.08);transform-origin:50% 50%}
.start-film{font-family:CapriSans,Arial,sans-serif}

/* The prepared canvas replaces its identical portal poster in a single frame. */
.ready #loading{transition:none}

/* Equal lowercase optical scale, preserving the exact lettering masters. */
#celebration-title strong{width:min(455px,61.88%)}
html[lang=pt-BR] #celebration-title strong{width:min(395px,53.72%)}
@media(max-aspect-ratio:4/5){
 #celebration-title strong{width:70.98%}
 html[lang=pt-BR] #celebration-title strong{width:61.62%}
}
