@font-face{font-family:Celebracao;src:url(assets/celebracao.otf)}@font-face{font-family:Leitura;src:url(assets/leitura.otf)}
:root{--ink:#3f515a;--blue:#44677b;--paper:#faf6ee;--gold:#a47c3c;--blush:#eee0d8;--script:Celebracao,cursive;--serif:Leitura,Georgia,serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--serif);font-size:18px;line-height:1.6}body.opening{overflow:hidden}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit}button:focus-visible,a:focus-visible{outline:3px solid var(--gold);outline-offset:5px}[hidden]{display:none!important}.cover{position:fixed;inset:0;z-index:10;background:#e8dfd2;display:grid;place-items:center;transition:opacity .9s ease}.cover.exit{opacity:0;pointer-events:none}.stage{width:min(100vw,56.25svh);height:min(100svh,177.7778vw);position:relative;overflow:hidden;isolation:isolate}.cover-photo,#intro{position:absolute;width:100%;height:100%;inset:0;object-fit:contain}.cover-photo{pointer-events:none;user-select:none}.action{border:1px solid var(--blue);background:var(--blue);color:#fffaf2;display:inline-flex;justify-content:center;align-items:center;gap:1em;text-decoration:none;padding:.95em 1.7em;cursor:pointer;letter-spacing:.04em;font-size:15px;transition:background .2s,color .2s}.action:hover,.action:active,.action.selected{background:var(--paper);color:var(--blue)}.media-resume{position:absolute;top:75%;left:12%;width:76%;z-index:4}.sound{position:fixed;right:3%;top:2%;z-index:20;font-size:12px;padding:.7em 1em;box-shadow:0 2px 15px #273b4620}.section{padding:90px 7%;text-align:center;position:relative}.hero{min-height:94svh;display:flex;flex-direction:column;justify-content:center;align-items:center;overflow:hidden;background:linear-gradient(#faf6eef0,#faf6eed9),url(assets/capa.jpg) center 14%/cover}.eyebrow{font:11px/1.6 Arial,sans-serif;letter-spacing:.27em;display:block;text-transform:uppercase}.monogram{font-family:var(--script);font-size:100px;color:var(--gold);line-height:1.1;margin:45px 0 12px}.monogram span{font-size:.55em;margin:0 -.25em}h1,h2,.signature{font-family:var(--script);font-weight:400}h1{font-size:clamp(60px,8vw,100px);line-height:1.05;margin:0 0 15px;color:var(--blue)}h1 span{font-size:.65em}h2{font-size:clamp(42px,5.5vw,66px);line-height:1.1;margin:22px 0;color:var(--blue)}.ornament{color:var(--gold);font-size:29px;margin:12px}.intro-copy{max-width:480px;font-size:20px}.scroll-link{color:var(--blue);font:10px Arial,sans-serif;letter-spacing:.16em;text-decoration:none;text-transform:uppercase;margin-top:38px}.scroll-link span{display:block;font-size:24px;margin-top:10px}.celebration{background:#f0e7df}.rings{display:block;margin:15px auto;background:transparent;border:0;width:min(58%,240px);cursor:pointer;padding:10px}.rings:hover{filter:brightness(1.08)}.rings svg{display:block;width:100%}.date{font-size:clamp(28px,6vw,46px);color:var(--gold);letter-spacing:.08em;margin:35px 0 0}.date span{padding:0 .1em}.event-time{margin:5px 0 30px}.countdown-wrap{border-top:1px solid #aa8c5940;max-width:520px;margin:35px auto 0;padding-top:30px}.countdown{display:grid;grid-template-columns:repeat(4,1fr);gap:3%;margin:22px auto}.countdown b{display:block;font-weight:400;font-size:clamp(29px,6vw,48px);line-height:1.2;color:var(--blue)}.countdown span{font:10px Arial,sans-serif;letter-spacing:.1em;text-transform:uppercase}.count-caption{font-style:italic}.location{background:#e5edf0}.fine-line{width:12%;height:1px;background:var(--gold);margin:30px auto}.venue{font-size:23px;margin-bottom:0}.location p{max-width:540px;margin-left:auto;margin-right:auto}.actions{display:flex;justify-content:center;gap:16px;flex-wrap:wrap;margin:40px auto 0;max-width:560px}.actions .action{min-width:225px}footer{background:var(--paper)}footer h2{margin-bottom:0}.signature{color:var(--blue);font-size:58px;margin:0 0 20px}.footer-brand{margin-top:60px;color:var(--gold)}#confetti{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:30}.reveal{opacity:1;transform:none}.motion-ready .reveal{opacity:0;transform:translateY(20px);transition:opacity .8s ease,transform .8s ease}.motion-ready .reveal.visible{opacity:1;transform:none}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}@media(min-width:800px){main{max-width:1100px;margin:auto;box-shadow:0 0 100px #75634412}.hero{background-size:100%;min-height:900px}.section{padding-top:100px;padding-bottom:100px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{transition:none!important;animation:none!important}.motion-ready .reveal{opacity:1;transform:none}}

/* Full portrait composition; image remains original, transparent margins included. */
.video-hero{--paper:#e5e1dc;padding:0;margin:0 auto;background:var(--paper);width:100%;max-width:590px;text-align:center;overflow:visible}
.internal-video-shell{position:relative;width:100%;aspect-ratio:590 / 1280;overflow:visible;isolation:isolate;background:var(--paper)}
#internalVideo{display:block;width:100%;height:100%;object-fit:contain;background:var(--paper)}
.video-dissolve{position:absolute;z-index:1;left:0;right:0;bottom:-.1%;height:40%;background:linear-gradient(to bottom,rgba(229,225,220,0) 0%,rgba(229,225,220,.50) 23%,rgba(229,225,220,.88) 50%,var(--paper) 82%);pointer-events:none}
.original-crest{position:absolute;z-index:2;left:12%;bottom:0;width:76%;height:auto;display:block;transform:translateY(50%);object-fit:contain;pointer-events:none}
.crest-space{width:100%;aspect-ratio:100 / 36;pointer-events:none}
.verse-copy{position:relative;padding:0 8% 65px;font-size:20px;line-height:1.7}
.verse-copy p{margin:0 auto 16px;max-width:480px}.verse-reference{font:11px Arial,sans-serif;letter-spacing:.2em;text-transform:uppercase;color:var(--gold)}
.verse-copy .intro-copy{font-size:19px}.internal-resume{position:absolute;left:15%;top:43%;width:70%;z-index:3}

.internal-first-frame{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:contain;pointer-events:none}

/* The flap and seal reuse precisely registered areas of the supplied artwork. */
.stage{perspective:1100px}
.envelope-interior,.envelope-flap,.envelope-seal{position:absolute;inset:0;pointer-events:none;user-select:none}
.envelope-flap img,.envelope-seal img{display:block;width:100%;height:100%;object-fit:contain;pointer-events:none;-webkit-user-drag:none}
.envelope-interior{z-index:1;opacity:0;clip-path:polygon(13.4% 41.1%,84% 38.8%,85% 43.3%,61.2% 55.2%,61.2% 60.6%,44.5% 60.8%,44.5% 55.5%,15.4% 45.3%);background:linear-gradient(165deg,#a4bfce 38%,#dceaf0 58%,#bfd5e2 75%);transition:opacity .16s .35s}
.envelope-flap{z-index:2;clip-path:polygon(13.4% 41%,84% 38.8%,84.4% 41.8%,83.2% 43.5%,57.5% 55.7%,51% 56.7%,15.8% 45.4%,14.2% 43.7%);transform-origin:49% 40%;transform:rotateX(0);transition:transform 1.1s cubic-bezier(.22,.6,.23,1) .38s;backface-visibility:visible;will-change:transform}
.envelope-seal{z-index:3;clip-path:ellipse(8.6% 4.65% at 53% 55.9%);transition:opacity .45s .15s,transform .7s .15s}
.seal-hit{position:absolute;z-index:4;left:43%;top:50.25%;width:20%;height:11.25%;padding:0;border:0;border-radius:50%;background:transparent;cursor:pointer;touch-action:manipulation;color:#f8e0a2}
.seal-hit:focus-visible{outline:2px solid #fff4cb;outline-offset:5px;box-shadow:0 0 25px #edc56a}
.seal-shine{position:absolute;inset:5%;border-radius:50%;opacity:0;pointer-events:none;background:radial-gradient(ellipse at 35% 25%,#fff8dca6,transparent 65%);box-shadow:0 0 22px 7px #ffda82,0 0 50px 18px #edbd5e66}
.envelope-opening .seal-shine{animation:sealGlow .9s ease-out both}
.envelope-opening .envelope-interior{opacity:1}
.envelope-opening .envelope-flap{transform:rotateX(-155deg)}
.envelope-opening .envelope-seal{opacity:0;transform:translateY(-2%)}
.envelope-opening .seal-hit{cursor:default}
@keyframes sealGlow{0%{opacity:0;transform:scale(.9)}25%{opacity:1;transform:scale(1.06)}65%{opacity:.9}100%{opacity:0;transform:scale(1.2)}}
@media(prefers-reduced-motion:reduce){.envelope-opening .envelope-flap{transform:none;opacity:0}.envelope-opening .seal-shine{opacity:.5}.envelope-interior{transition:none}}

.opening-video{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;z-index:5;visibility:hidden;background:#eee3d3;pointer-events:none}
.opening-video.playing{visibility:visible}
.opening-resume{position:absolute;z-index:6;left:12%;top:73%;width:76%}
.seal-activated .seal-shine{animation:sealGlow .9s ease-out both}
/* One continuous sheet of ivory card stock. */
:root{--paper:#f6f0e4;--blue:#937135;--gold:#a47c36;--ink:#655a49}
body{background-color:var(--paper);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.72' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%237b6a50' opacity='.055' filter='url(%23n)' d='M0 0h180v180H0z'/%3E%3C/svg%3E")}
main{max-width:590px!important;margin:auto;box-shadow:none!important;background:transparent}
.video-hero{--paper:#f6f0e4;background:transparent;max-width:590px}
.portrait-shell{position:relative;width:100%;aspect-ratio:941 / 1672;isolation:isolate;overflow:visible}
.hero-portrait{display:block;width:100%;height:100%;object-fit:contain}
.video-dissolve{height:26%;background:linear-gradient(to bottom,rgba(246,240,228,0) 0%,rgba(246,240,228,.18) 36%,rgba(246,240,228,.64) 72%,var(--paper) 100%)}
.celebration,.location,footer,.memories{background:transparent}.section{padding:62px 7%}.verse-copy{padding-bottom:30px}
.countdown-wrap{border:0}.memories{padding-bottom:25px}.memories h2{margin-top:0}.year-buttons{display:flex;gap:4%;justify-content:center;margin:28px 0 0}.year-button{min-width:0;width:28%;padding:.8em .4em;font-size:21px}
.action{background:transparent;color:var(--gold);border-color:var(--gold)}.action:hover,.action:active,.action.selected{background:var(--gold);color:var(--paper)}
.button-symbol{width:27px;height:27px;flex-shrink:0;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.actions{flex-direction:column;align-items:center}.actions .action{width:84%;min-width:0;gap:.85em}
.rings{width:65%;max-width:280px;padding:12px;margin:12px auto 22px}.rings svg{overflow:visible}
.album-open{overflow:hidden}.album-dialog{width:min(90vw,410px);max-height:88svh;margin:auto;padding:0;border:1px solid transparent;background-color:var(--paper);background-image:inherit;color:var(--ink);overflow:auto;border-radius:6px;box-shadow:0 15px 70px #3f30252b}
.album-dialog::backdrop{background:#362b215e;backdrop-filter:blur(5px)}.album-panel{position:relative;padding:28px 10px 16px;text-align:center}.album-panel h2{font-size:43px;margin:5px 0 14px;color:var(--gold)}
.album-close{position:absolute;right:4%;top:3%;padding:0;width:38px;height:38px;font-size:26px;border:0;border-radius:50%}
.album-view{display:grid;grid-template-columns:12% 76% 12%;align-items:center}.album-photo{display:block;width:100%;height:auto;max-height:53svh;object-fit:contain;background:transparent;border:0;-webkit-mask-image:linear-gradient(to right,transparent,#000 4%,#000 96%,transparent),linear-gradient(to bottom,transparent,#000 3%,#000 97%,transparent);mask-image:linear-gradient(to right,transparent,#000 4%,#000 96%,transparent),linear-gradient(to bottom,transparent,#000 3%,#000 97%,transparent);-webkit-mask-composite:source-in;mask-composite:intersect}
.album-arrow{padding:0;min-height:44px;border:0;font:38px/1 Georgia,serif;justify-self:stretch}.album-counter{font:12px/1.6 Arial,sans-serif;color:var(--gold);letter-spacing:.12em;margin:16px 0 0}
@media(max-height:600px){.album-photo{max-height:42svh}.album-panel{padding-top:12px}.album-panel h2{margin:0 0 8px}}

.floral-section{isolation:isolate;overflow:hidden}
.background-flowers{position:absolute!important;z-index:-1!important;width:57%;height:auto;aspect-ratio:420 / 600;left:-16%;top:-10%;pointer-events:none;user-select:none;opacity:.16;filter:saturate(.7);-webkit-mask-image:radial-gradient(ellipse at center,#000 24%,transparent 72%);mask-image:radial-gradient(ellipse at center,#000 24%,transparent 72%)}
.location .background-flowers{left:auto;right:-16%;top:12%;transform:scaleX(-1);opacity:.13}
footer .background-flowers{left:-13%;top:-28%;width:52%;opacity:.12}
.closing-signature{font-family:var(--script);font-size:clamp(34px,7vw,44px);color:var(--gold);line-height:1.25;margin:30px 0 0}

.album-hint{font-size:15px;font-style:italic;letter-spacing:.03em;color:var(--ink);margin:15px 0 0}
.background-flowers{opacity:.26;width:64%;left:-14%;top:-8%}
.location .background-flowers{opacity:.24;right:-13%;top:9%}
footer .background-flowers{opacity:.22;left:-12%;top:-15%;width:59%}
.memories .flowers-secondary{left:auto;right:-17%;top:22%;width:48%;transform:scaleX(-1) rotate(12deg);opacity:.22}
.location .flowers-secondary{right:auto;left:-18%;top:45%;width:51%;transform:rotate(-12deg);opacity:.22}
.celebration .background-flowers{left:auto;right:-17%;top:24%;width:57%;transform:scaleX(-1);opacity:.23}
.verse-copy .background-flowers{left:-19%;top:-2%;width:58%;opacity:.20}
.sound{font-size:11px;padding:.65em .8em;opacity:.78;box-shadow:none;background:var(--paper)}
.sound:hover,.sound:focus-visible{opacity:1}

/* Consistent rounded controls and a gentle motion inside the rings' existing space. */
button,.action{border-radius:999px}
.rings svg{animation:ringsFloat 4.5s ease-in-out infinite;transform-origin:center;will-change:transform}
@keyframes ringsFloat{0%,100%{transform:translateY(1%)}50%{transform:translateY(-5%)}}
@media(prefers-reduced-motion:reduce){.rings svg{animation:none;transform:none;will-change:auto}}
