@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,400;0,500;0,600;1,400;1,500;1,600&family=DM+Sans:wght@400;500;600;700&display=swap');
:root{--paper:#f4f0e7;--ivory:#fbf8f0;--ink:#502f34;--wine:#813b4c;--muted:#8b8076;--line:#d8cdc0;--serif:'Cormorant Garamond',Georgia,serif;--sans:'DM Sans',Arial,sans-serif}*{box-sizing:border-box}html{min-height:100%;background:var(--paper)}body{margin:0;color:var(--ink);font-family:var(--sans);background:radial-gradient(ellipse at 50% 40%,#fffdf5a8 0%,transparent 63%);min-height:100svh;display:flex;flex-direction:column}button,a,input{-webkit-tap-highlight-color:transparent}button{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer}button:focus-visible,a:focus-visible{outline:2px solid var(--wine);outline-offset:7px}button:disabled{cursor:default}button svg,.place svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}.sprite{position:absolute;width:0;height:0;overflow:hidden}.paper-grain{position:fixed;inset:0;pointer-events:none;z-index:9;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='.82' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%23776644' opacity='.25' filter='url(%23n)' d='M0 0h180v180H0z'/%3E%3C/svg%3E")}.masthead{margin:0 6%;height:103px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #bba79555;position:relative}.masthead-note{font-size:9px;font-weight:500;letter-spacing:2.5px;color:#88766e}.monogram{position:absolute;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:9px;color:var(--wine);text-decoration:none;font:italic 26px var(--serif)}.monogram svg{width:9px;height:9px;fill:var(--wine);opacity:.8}.right-note{text-align:right}main{flex:1;display:grid;place-items:center;padding:48px 22px 34px}.screen{width:100%;text-align:center;animation:appear .75s ease both}.screen[hidden]{display:none}.welcome{max-width:720px}.eyebrow{font-size:10px;letter-spacing:3.3px;font-weight:500;margin:0 0 23px;color:#927d72}h1,h2,p{margin-top:0}h1{font:400 clamp(35px,4vw,51px)/1.04 var(--serif);letter-spacing:-.9px;margin-bottom:18px}em{font-weight:400;color:var(--wine)}.recipient{font:400 13px/1.9 var(--sans);color:#8b7e76;letter-spacing:.15px;margin-bottom:24px}.envelope-button{position:relative;display:block;width:385px;height:261px;margin:0 auto;border:0;background:none;perspective:1100px;padding:20px 0 0}.envelope{position:relative;display:block;height:227px;width:365px;margin:auto;filter:drop-shadow(0 17px 19px #6e524125);transition:transform .5s}.envelope-button:hover .envelope{transform:translateY(-7px) rotate(-1deg)}.envelope-button:active .envelope{transform:scale(.98)}.envelope-back{position:absolute;inset:0;background:#e5dcca;border-radius:2px}.envelope-front{position:absolute;inset:0;z-index:4;background:linear-gradient(150deg,transparent 49.65%,#e5dcca 49.9%,#f2eadb 50.4%,#eee5d5 100%) left/50.1% 100% no-repeat,linear-gradient(210deg,transparent 49.65%,#e0d5c3 49.9%,#f1e9da 50.4%,#eee5d5 100%) right/50.1% 100% no-repeat;pointer-events:none;border-radius:2px}.envelope-front:after{content:"";position:absolute;inset:0;background:linear-gradient(32deg,#f0e7d6 49.65%,#dfd2bf 49.9%,transparent 50.2%) left/50.1% 100% no-repeat,linear-gradient(-32deg,#f0e7d6 49.65%,#dfd2bf 49.9%,transparent 50.2%) right/50.1% 100% no-repeat;transform:rotate(180deg)}.envelope-flap{position:absolute;inset:0;z-index:5;clip-path:polygon(0 0,100% 0,50% 59%);background:linear-gradient(173deg,#f5efdf 10%,#ede4d3 70%);filter:drop-shadow(0 1px 1px #b4a18a);transform-origin:top center;transition:transform .8s ease,z-index 0s .4s}.envelope-flap:after{content:"";position:absolute;inset:0;clip-path:polygon(0 0,50% 58.5%,100% 0,100% 1%,50% 59.5%,0 1%);background:#cdbda5}.seal{position:absolute;top:105px;left:calc(50% - 25px);z-index:6;width:50px;height:50px;background:radial-gradient(circle at 35% 25%,#a15a69,#7f3548 60%,#6d293c);border-radius:47% 53% 48% 52%/51% 47% 53% 49%;box-shadow:0 3px 6px #51352e4d,inset 0 0 0 2px #8d4657,inset 0 0 0 4px #6a253a50;display:grid;place-items:center;transform:rotate(-8deg);transition:opacity .3s,transform .5s}.seal svg{width:17px;height:17px;fill:#f8eddf;stroke:none;filter:drop-shadow(0 1px 1px #4a2535)}.letter-peek{position:absolute;left:17px;right:17px;top:12px;height:200px;z-index:2;background:#fffbf2;box-shadow:0 0 5px #5d4d3f12;padding-top:55px;transition:transform .9s ease .25s}.letter-peek span{display:block;font:italic 26px var(--serif)}.letter-peek svg{width:13px;height:13px;fill:var(--wine);stroke:none;margin-top:15px}.envelope-button.opening .envelope{transform:translateY(20px)}.opening .envelope-flap{transform:rotateX(180deg);z-index:1}.opening .seal{opacity:0;transform:translateY(-20px) rotate(-20deg)}.opening .letter-peek{transform:translateY(-90px)}.open-hint{font-size:9px;letter-spacing:2.7px;color:#8b756a;margin:11px 0 23px}.tiny-arrow{display:block;font-size:23px;line-height:1;margin-bottom:13px;color:#a58b77;animation:hint 2.8s ease-in-out infinite}.handwritten{font:italic 21px var(--serif);color:#a38c7e;margin:0}.footer{margin:0 6%;padding:22px 0 25px;display:flex;align-items:center;justify-content:center;gap:22px}.footer p{font-size:8px;letter-spacing:1.8px;color:#a49386;margin:0;line-height:1.8}.footer p span{font-size:14px;vertical-align:-1px;margin-left:6px}.footer-line{width:50px;height:1px;background:#c6b5a055}.letter-screen{max-width:610px}.step-indicator{font-size:9px;letter-spacing:3px;color:#9c8274;display:flex;align-items:center;justify-content:center;gap:18px;margin-bottom:25px}.step-dash{height:1px;width:28px;background:#b4967c77}.letter-paper{background:var(--ivory);border:1px solid #d8caba88;box-shadow:0 15px 60px #66503e0c,5px 5px 0 -1px #eee7d9,5px 5px 0 0 #ded3c388;padding:29px 51px 28px;position:relative}.letter-topline{display:flex;align-items:center;justify-content:space-between;min-height:47px;margin-bottom:8px}.letter-topline>span:first-child{font-size:8px;letter-spacing:2px;color:#a1887a;text-align:left}.postmark{width:64px;height:64px;border:1px solid #9d6c6555;border-radius:50%;padding-top:16px;transform:rotate(11deg);color:#9c6c67;font:500 15px var(--serif);outline:1px solid #9d6c6533;outline-offset:-5px;flex-shrink:0}.postmark small{display:block;font:5px var(--sans);letter-spacing:1px;margin-top:3px}.salutation{font:italic 23px var(--serif);margin:5px 0 8px;color:#93796d}#letter-title{font:400 64px/.9 var(--serif);letter-spacing:-1.6px;margin:0 0 23px}h2:focus{outline:none}.letter-copy{font:12px/1.9 var(--sans);color:#8a7d72;margin-bottom:0}.fair-illustration{display:block;width:240px;height:132px;object-fit:contain;margin:12px auto 11px;opacity:.87}.place{border-top:1px solid #d8cbb977;border-bottom:1px solid #d8cbb977;display:flex;align-items:center;gap:15px;text-align:left;padding:18px 0;margin-bottom:25px}.place>svg{width:22px;height:25px;color:#986a65}.detail-label{display:block;font:8px var(--sans);letter-spacing:2px;color:#9b8173;margin-bottom:6px}.place strong{font:500 24px/.95 var(--serif)}.place-heart{margin-left:auto;color:#ac8a7a;font:29px var(--serif);padding-right:6px}fieldset{padding:0;border:0;margin:0}legend{font:500 27px var(--serif);padding:0;margin:auto}.time-hint{font:11px var(--sans);color:#a18b7d;margin:8px 0 18px}.time-options{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:18px}.time-option{position:relative;cursor:pointer}.time-option input{position:absolute;inset:0;opacity:0;width:100%;height:100%;margin:0;cursor:pointer}.time-option>span{display:flex;align-items:center;justify-content:center;gap:7px;border:1px solid #d6c5b5;padding:16px 5px;font-size:13px;font-weight:500;color:#876f63;transition:background .2s,border-color .2s,color .2s}.time-option svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.4}.time-option input:checked+span{background:#813b4c0c;border-color:var(--wine);color:var(--wine);box-shadow:inset 0 0 0 .5px var(--wine)}.time-option input:focus-visible+span{outline:2px solid var(--wine);outline-offset:3px}.time-option:hover>span{background:#e9dfd144}.primary-button{border:1px solid var(--wine);background:var(--wine);color:#fff6e9;padding:17px 21px;width:100%;display:flex;align-items:center;justify-content:center;gap:27px;font-size:11px;letter-spacing:.4px;transition:background .2s,transform .2s}.primary-button:hover:not(:disabled){background:#6d2b3e;transform:translateY(-1px)}.primary-button:disabled{opacity:.42}.primary-button svg{width:17px;height:17px}.signature{font:12px/1.7 var(--serif);color:#9a8172;margin:24px 0 0}.signature em{font:italic 20px var(--serif);display:block;margin-top:2px}.text-button{border:0;background:transparent;color:#8d776c;font:10px var(--sans);letter-spacing:.6px;padding:12px;margin-top:18px;text-underline-offset:4px}.text-button:hover{text-decoration:underline;color:var(--wine)}.finale{max-width:680px;padding:9px 0 10px}.final-seal{height:67px;width:67px;position:relative;background:radial-gradient(circle at 35% 25%,#a15a69,#7f3548 70%,#6d293c);border-radius:50%;box-shadow:0 4px 10px #6a3a3a25;display:grid;place-items:center;margin:0 auto 30px;transform:rotate(-9deg)}.final-seal svg{width:22px;height:22px;fill:#f7ecd9;z-index:1}.seal-ring{border:1px solid #b5757d66;position:absolute;inset:5px;border-radius:50%;box-shadow:0 0 0 1px #6b263a44}.finale .eyebrow{font-size:9px;letter-spacing:3px;margin-bottom:23px}.final-name{font:italic 27px var(--serif);color:#927666;margin-bottom:12px}#final-title{font:400 clamp(49px,5.3vw,73px)/.93 var(--serif);letter-spacing:-1.9px;margin-bottom:25px}#final-title em{font-size:1.16em}.final-copy{font:12px/1.8 var(--sans);max-width:330px;margin:0 auto 28px;color:#927d70}.date-ticket{position:relative;display:flex;align-items:center;text-align:left;max-width:456px;margin:0 auto;border:1px solid #d7c8b4;background:#faf6eb9c;padding:23px 26px;gap:20px}.ticket-art{font:41px var(--serif);color:#9b6970}.ticket-info{flex:1}.ticket-info strong{display:block;font:500 28px var(--serif);margin-bottom:4px}.ticket-subtitle{font:9px var(--sans);color:#aa9180}.ticket-time{border-left:1px dashed #cdb8a0;padding-left:22px}.ticket-time .detail-label{font-size:6px;letter-spacing:1.5px}.ticket-time strong{font:500 28px var(--serif);color:var(--wine)}.final-signature{margin-top:27px}.final-signature em{font-size:25px}.finale .text-button{margin-top:11px}.finale .text-button span{margin-left:7px}.petals{position:fixed;inset:0;z-index:8;pointer-events:none;overflow:hidden}.petal{position:absolute;top:-40px;left:var(--x);height:var(--size);width:calc(var(--size)*.72);border-radius:80% 10% 70% 15%;background:var(--color);opacity:0;animation:petal-fall var(--duration) var(--delay) ease-in both}@keyframes appear{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes hint{0%,100%{transform:translateY(0);opacity:.65}50%{transform:translateY(-5px);opacity:1}}@keyframes petal-fall{0%{opacity:0;transform:translate3d(0,-30px,0) rotate(0)}10%{opacity:.7}85%{opacity:.5}100%{opacity:0;transform:translate3d(var(--drift),110vh,0) rotate(400deg)}}
@media(min-width:1100px) and (min-height:850px){main{padding-top:64px;padding-bottom:50px}.envelope-button{margin-top:12px}.welcome{padding-bottom:15px}}@media(max-width:650px){.masthead{height:76px;margin:0 7%}.masthead-note{font-size:7px;letter-spacing:1.5px;max-width:100px;line-height:1.6}.monogram{font-size:24px;gap:7px}main{padding:40px 20px 25px}.eyebrow{font-size:8px;letter-spacing:2.6px;margin-bottom:21px}h1{font-size:38px;line-height:1.05;margin-bottom:17px}.recipient{font-size:11px;line-height:1.9;margin-bottom:25px}.envelope-button{width:320px;max-width:100%;height:223px;padding-top:16px}.envelope{width:300px;max-width:100%;height:188px}.seal{top:85px;width:44px;height:44px;left:calc(50% - 22px)}.seal svg{width:15px;height:15px}.letter-peek{height:170px;padding-top:42px}.letter-peek span{font-size:24px}.open-hint{font-size:7px;letter-spacing:2.1px;margin-top:8px}.tiny-arrow{font-size:21px;margin-bottom:12px}.handwritten{font-size:19px}.footer{padding:20px 0 21px;margin:0 7%;gap:13px}.footer p{font-size:6px;letter-spacing:1.15px;text-align:center;max-width:240px;line-height:1.9}.footer-line{width:22px;flex-shrink:0}.footer p span{font-size:12px;margin-left:3px}.letter-screen{max-width:460px}.step-indicator{font-size:8px;margin-bottom:20px;letter-spacing:2.5px}.letter-paper{padding:22px 25px 24px}.letter-topline{margin-bottom:6px}.letter-topline>span:first-child{font-size:6px;letter-spacing:1.3px;max-width:145px}.postmark{width:55px;height:55px;padding-top:13px;font-size:14px}.postmark small{font-size:4px}.salutation{font-size:22px;margin-top:3px}#letter-title{font-size:61px;margin-bottom:22px}.letter-copy{font-size:10px;line-height:1.9}.fair-illustration{width:210px;height:115px;margin-top:10px}.place{padding:16px 0;margin-bottom:22px}.detail-label{font-size:7px}.place strong{font-size:23px}legend{font-size:26px}.time-hint{font-size:10px}.time-options{gap:8px;margin-bottom:15px}.time-option>span{padding:15px 3px;font-size:12px;gap:5px}.time-option svg{width:13px;height:13px}.primary-button{font-size:10px;padding:17px 10px}.signature{margin-top:23px}.finale{padding:0}.final-seal{width:58px;height:58px;margin-bottom:26px}.finale .eyebrow{font-size:7px;letter-spacing:2.3px;margin-bottom:21px}.final-name{font-size:24px}#final-title{font-size:58px;letter-spacing:-1.7px;margin-bottom:24px}.final-copy{font-size:11px;max-width:270px;margin-bottom:27px}.date-ticket{gap:13px;padding:21px 16px;max-width:356px}.ticket-art{font-size:32px}.ticket-info strong{font-size:25px}.ticket-subtitle{font-size:7px}.ticket-time{padding-left:14px}.ticket-time strong{font-size:25px}.ticket-time .detail-label{font-size:5px;letter-spacing:1px}.final-signature em{font-size:23px}.finale .text-button{font-size:9px}}@media(max-width:360px){main{padding-left:15px;padding-right:15px}h1{font-size:34px}.letter-paper{padding:20px}#final-title{font-size:51px}.envelope{width:280px;height:177px}.envelope-button{height:208px}.seal{top:79px}.ticket-art{display:none}.date-ticket{padding:21px 19px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.petals{display:none}}

/* Selection details and readable stationery text. */
.letter-peek{height:auto;bottom:14px}.day-fieldset{margin-bottom:8px}.recipient,.letter-copy,.time-hint,.detail-label,.final-copy,.masthead-note,.open-hint,.handwritten,.signature,.text-button,.ticket-subtitle,.eyebrow,.step-indicator,.letter-topline>span:first-child{color:#75675e}.day-options>label>span{font-size:12px}.footer p{color:#827568}@media(max-width:650px){.day-options>label>span{font-size:10px;gap:4px}.day-options svg{width:12px;height:12px}}

.whatsapp-button{max-width:400px;margin:24px auto 0;text-decoration:none;gap:18px}.whatsapp-button svg{fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}.response-hint{font:10px/1.8 var(--sans);color:#75675e;margin:12px auto 0}.whatsapp-button:hover{background:#6d2b3e;transform:translateY(-1px)}@media(max-width:650px){.whatsapp-button{max-width:356px;padding:17px 12px;gap:13px;font-size:10px}.response-hint{font-size:9px}}

/* A quiet carousel melody, with its control always within reach. */
.music-toggle{position:fixed;right:6%;bottom:max(20px,env(safe-area-inset-bottom));z-index:12;display:flex;align-items:center;gap:9px;min-height:44px;padding:9px 16px;border:1px solid #c9b6a7;border-radius:30px;background:#fbf8f0f5;box-shadow:0 3px 15px #502f3410;color:var(--wine);font:500 10px var(--sans);letter-spacing:.25px}.music-toggle[hidden]{display:none}.music-toggle:hover{border-color:var(--wine);background:var(--ivory)}.music-note{font:24px/1 var(--serif);width:22px}.music-toggle[aria-pressed=false] .music-note{opacity:.5}.has-music-control .footer{padding-bottom:85px}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}@media(max-width:650px){.music-toggle{right:20px;bottom:max(16px,env(safe-area-inset-bottom));font-size:10px;padding:8px 14px}}
