:root{--green:#244b3c;--gold:#aa8b50;--ink:#293f35;--muted:#647269;--paper:#fffefa}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:80px}body{margin:0;background:#edf0e9;color:var(--ink);font:16px/1.65 Arial,sans-serif}button,input,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit}button{cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible{outline:3px solid var(--gold);outline-offset:5px}[hidden]{display:none!important}.preview{text-align:center;background:var(--green);color:white;font-size:9px;letter-spacing:1.4px;padding:9px 12px;line-height:1.5}.preview span{opacity:.8;letter-spacing:.4px;margin-left:12px}main{max-width:760px;margin:auto;background:var(--paper);box-shadow:0 10px 90px #203c320b}h1,h2,h3,.serif{font-family:Georgia,'Times New Roman',serif;font-weight:400}h1,h2,h3,p{margin-top:0}h1{font-size:clamp(38px,7vw,57px);line-height:1.13;letter-spacing:-1.4px}h2{font-size:36px;line-height:1.2;margin-bottom:20px}h3{font-size:25px;line-height:1.25;margin-bottom:9px}em{font-weight:400}p{margin-bottom:20px}.eyebrow{font-size:10px;letter-spacing:2.5px;font-weight:600;line-height:1.7}.small{font-size:12px}.small-cross{font-size:24px;color:var(--gold)}.cover{min-height:calc(100svh - 33px);text-align:center;padding:28px 22px 25px;overflow:hidden;background:radial-gradient(ellipse at 100% 70%,#e7eee583,transparent 55%),var(--paper);display:flex;flex-direction:column;align-items:center;justify-content:space-between}.topline{display:flex;align-items:center;gap:14px;font-size:9px;letter-spacing:2.8px}.cover-copy{padding:35px 0 15px}.cover-copy h1{font-size:clamp(35px,7vw,51px);margin:17px 0 22px}.cover-copy p:last-child{font-size:14px;line-height:1.8;color:var(--muted)}.envelope{width:min(100%,440px);height:245px;flex-shrink:0;border:1px solid #d5ddcd;background:linear-gradient(150deg,#fbfcf7,#e9eee2);position:relative;color:var(--green);box-shadow:0 15px 35px #25413414;transition:transform .4s}.envelope:hover{transform:translateY(-4px)}.envelope:before,.envelope:after{content:'';position:absolute;inset:0;pointer-events:none}.envelope:before{background:linear-gradient(32deg,transparent 49.7%,#cad4c0 50%,transparent 50.4%),linear-gradient(-32deg,transparent 49.7%,#cad4c0 50%,transparent 50.4%);clip-path:polygon(0 0,100% 0,50% 58%)}.envelope:after{border:1px solid #ffffffb8;inset:9px}.recipient{position:absolute;top:142px;left:12px;right:12px;display:flex;align-items:center;flex-direction:column;gap:1px}.recipient .eyebrow{font-size:8px;letter-spacing:2px}.recipient .guest-name{font:italic 25px Georgia,serif}.recipient .small{font-size:10px;color:var(--muted);margin-top:3px}.seal{display:grid;place-items:center;position:absolute;top:67px;left:calc(50% - 30px);width:60px;height:60px;border-radius:50%;background:linear-gradient(135deg,#b69b66,#e3d1a0,#a78a52);box-shadow:0 2px 6px #5b4e3333,inset 0 0 0 5px #d5bc86,inset 0 0 0 6px #b79a60;font:21px Georgia;color:#655631}.tap{font-size:9px;letter-spacing:2px;margin:24px 0 28px;color:var(--muted)}.tap span{display:block;font-size:21px;margin-top:9px}.cover-footer{font-size:9px;letter-spacing:3px;color:var(--muted)}.cover-footer i{padding:0 13px;color:var(--gold)}header{height:72px;display:flex;justify-content:space-between;align-items:center;padding:0 28px;border-bottom:1px solid #dde3d9;background:#fffefaed;position:sticky;top:0;z-index:10;backdrop-filter:blur(12px)}.monogram{font:26px Georgia;color:var(--gold);text-decoration:none}nav{display:flex;gap:22px;font-size:12px}nav a{text-decoration:none}.close{border:0;background:none;color:var(--green);font-size:26px;width:44px;height:44px}.memory{text-align:center;padding:48px 24px 40px;background:radial-gradient(ellipse at 0% 60%,#eef1e9,transparent 65%)}.portrait-frame{width:min(74%,310px);margin:28px auto 26px;padding:8px;border:1px solid #b6a474;border-radius:160px 160px 3px 3px}.portrait-frame img{display:block;width:100%;height:auto;aspect-ratio:1/1.15;object-fit:cover;object-position:50% 40%;border-radius:150px 150px 0 0}.professor{font-size:10px;letter-spacing:3px;margin-bottom:12px}.memory h1{margin-bottom:25px}.rule{width:44px;height:1px;background:var(--gold);margin:22px auto}.subtitle{font-size:19px;font-style:italic}.scroll-link{display:block;font-size:9px;letter-spacing:2px;text-decoration:none;margin-top:30px}.scroll-link span{display:block;font-size:23px;margin-top:5px}.welcome,.gathering,.rsvp,.pass-section{padding:62px 40px}.welcome{text-align:center;border-top:1px solid #e3e7de}.welcome h2{margin-top:24px;font-size:32px}.welcome p{max-width:440px;margin-left:auto;margin-right:auto;font-size:16px;color:#5b6b60}.welcome .signature{margin-top:30px;font-size:14px}.signature em{font:italic 22px Georgia;display:inline-block;margin-top:8px;color:var(--green)}.leaf-mark{font-size:45px;color:#889c7b;line-height:1}.gathering{background:#edf2eb}.intro{font-size:15px;color:var(--muted)}.schedule{margin:35px 0 25px}.schedule article{display:flex;gap:22px;padding:24px 0;border-top:1px solid #cdd8c9}.schedule article:last-child{border-bottom:1px solid #cdd8c9}.event-no{font:italic 19px Georgia;color:#819477;padding-top:4px}.schedule p{font-size:13px;margin:0;color:var(--muted)}.quiet-note{font-size:12px;line-height:1.65;color:var(--muted);margin:18px 0 0}.rsvp{text-align:center}.rsvp form{text-align:left;margin:30px auto 0;max-width:440px}fieldset{border:0;padding:0;margin:0 0 24px}.choice{display:flex;align-items:center;gap:12px;border:1px solid #d6ded3;padding:16px 14px;margin-bottom:10px;cursor:pointer;font-size:14px}.choice:has(input:checked){background:#eaf0e6;border-color:#5b7755}.choice span:last-child{margin-left:auto;font-size:20px;color:#6e865e}.choice input{width:17px;height:17px;accent-color:var(--green)}.field-label{display:block;font-size:13px;margin-bottom:10px}.field-label span{color:var(--muted)}textarea{resize:vertical;width:100%;border:1px solid #d6ded3;background:white;padding:14px;color:var(--ink);border-radius:0;font-size:16px}.primary,.outline{width:100%;display:flex;align-items:center;justify-content:space-between;text-decoration:none;border:1px solid var(--green);padding:17px 20px;font-size:14px;margin-top:18px;background:var(--green);color:#fff}.outline{background:transparent;color:var(--green);max-width:420px;margin:24px auto 0}.primary span,.outline span{font-size:20px}#response{padding:18px;background:#eaf0ea;margin-top:20px;font-size:14px}.pass-section{background:#f3f5ee;text-align:center}.ticket{max-width:420px;margin:32px auto 0;background:white;box-shadow:0 10px 30px #203c320b;border:1px solid #d8decf;text-align:left}.ticket-top{display:flex;gap:24px;align-items:center;padding:22px 25px;border-bottom:1px solid #dce2d6}.ticket-top>span:last-child{font-size:8px;letter-spacing:1.7px;line-height:1.8}.ticket-main{padding:28px}.ticket-main h3{margin:9px 0 3px}.ticket-main>p{font-size:13px;color:var(--muted)}.ticket-details{display:grid;grid-template-columns:1fr 1fr;gap:15px;border-top:1px solid #e3e7de;border-bottom:1px dashed #cdd6c7;padding:18px 0;margin:23px 0 13px}.ticket-details span{display:block;font-size:8px;letter-spacing:1.8px;color:var(--muted)}.ticket-details strong{font-size:13px;font-weight:400}.qr-wrap{text-align:center}.qr-wrap img{max-width:100%;height:auto}.demo-stamp{font-size:9px;letter-spacing:1.1px;display:block;text-align:center;color:#765e2c}.ticket-main .ticket-instructions{text-align:center;font-size:12px;margin:20px 0 13px}.ticket-main .small{font-size:10px;text-align:center;margin:0}.ticket-bottom{text-align:center;background:#eaf0e6;padding:16px 10px;font-size:8px;letter-spacing:1.8px}footer{text-align:center;padding:60px 24px 40px}footer h2{font-size:30px;font-style:italic;margin:22px 0 16px}footer p{font-size:12px;color:var(--muted)}.text-button{border:0;background:none;text-decoration:underline;color:var(--muted);font-size:12px;padding:15px}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0,0,0,0)}@media(min-width:700px){.cover{padding:40px 50px}.cover-copy{padding-top:50px}.envelope{height:260px}.recipient{top:150px}.seal{top:74px}.welcome,.gathering,.rsvp,.pass-section{padding:70px 95px}}@media(max-width:370px){.preview span{display:block;margin:2px 0 0}.cover{padding:22px 18px}.cover-copy{padding-top:28px}.cover-copy h1{font-size:32px}.welcome,.gathering,.rsvp,.pass-section{padding:50px 24px}nav{gap:15px}header{padding:0 18px}.ticket-main{padding:22px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}


/* Full-screen envelope: seal and flap move as one physical piece. */
body.envelope-closed{overflow:hidden}
.cover{position:fixed;inset:0;z-index:50;width:100%;height:100vh;height:100dvh;min-height:0;padding:0;display:block;overflow:hidden;background:#e2e9dc;isolation:isolate}
.envelope{position:absolute;inset:0;width:100%;max-width:none;height:100%;border:0;margin:0;padding:0;border-radius:0;box-shadow:none;background:transparent;transform:none!important;perspective:1800px;cursor:pointer;overflow:visible;z-index:2}
.envelope:before,.envelope:after{display:none}
.fold{position:absolute;inset:0;pointer-events:none;z-index:2}
.fold-left{clip-path:polygon(0 0,53% 49%,0 100%);background:linear-gradient(95deg,#e3eada,#f4f6ed)}
.fold-right{clip-path:polygon(100% 0,47% 49%,100% 100%);background:linear-gradient(-95deg,#e8eedf,#f6f8f0)}
.fold-bottom{clip-path:polygon(0 100%,0 98%,50% 46%,100% 98%,100% 100%);background:linear-gradient(0deg,#f5f6ee,#dde5d4)}
.envelope-flap{position:absolute;inset:0 0 auto;height:51%;z-index:4;background:none;clip-path:none;transform-origin:50% 0;transform-style:preserve-3d;backface-visibility:hidden;will-change:transform}
.flap-paper{position:absolute;inset:0;background:linear-gradient(175deg,#fffefa 10%,#f4f6ec 70%,#e2e9d9);clip-path:polygon(0 0,100% 0,50% 100%);backface-visibility:hidden}
.flap-copy{position:absolute;top:12%;left:10%;right:10%;display:flex;align-items:center;flex-direction:column;color:var(--green);backface-visibility:hidden}
.flap-title{font:clamp(25px,5.4vw,48px)/1.2 Georgia,serif;letter-spacing:-.7px;margin-top:22px}
.envelope .seal{top:auto;bottom:-25px;left:calc(50% - 34px);width:68px;height:68px;z-index:5;font-size:23px;backface-visibility:hidden;box-shadow:0 3px 12px #5b4e3330,inset 0 0 0 5px #d5bc86,inset 0 0 0 6px #b79a60}
.envelope .recipient{top:64%;left:20px;right:20px;z-index:3;gap:9px}
.envelope .recipient .eyebrow{font-size:9px;letter-spacing:2.3px}
.envelope .recipient .guest-name{font:italic clamp(28px,6vw,39px) Georgia,serif}
.envelope .recipient .small{font-size:14px;margin-top:4px}
.envelope .tap{position:absolute;top:auto;bottom:9%;left:0;right:0;margin:0;z-index:3;font-size:9px;letter-spacing:2.2px}
.envelope .tap span{font-size:19px;margin-top:5px}
.envelope .cover-footer{position:absolute;bottom:max(24px,env(safe-area-inset-bottom));left:0;right:0;z-index:3;font-size:8px;letter-spacing:2.5px}
.cover.opening{animation:envelope-reveal 5s linear both;pointer-events:none}
.cover.opening .envelope-flap{animation:flap-lift 5s linear both}
.cover.opening .tap{animation:tap-away 5s linear both}
.cover.opening .seal{animation:seal-release 5s linear both}
@keyframes flap-lift{
 0%,8%{transform:rotateX(0deg)}
 24%{transform:rotateX(13deg)}
 42%{transform:rotateX(48deg)}
 60%{transform:rotateX(96deg)}
 76%,100%{transform:rotateX(168deg)}
}
@keyframes envelope-reveal{0%,68%{opacity:1}78%{opacity:.94}90%{opacity:.4}100%{opacity:0}}
@keyframes tap-away{0%{opacity:1}12%,100%{opacity:0}}
@keyframes seal-release{0%{filter:brightness(1)}8%{filter:brightness(1.1)}20%,100%{filter:brightness(1)}}
@media(min-width:700px){.flap-copy{top:10%}.flap-title{margin-top:24px}}
@media(max-height:650px){.flap-copy{top:7%}.flap-copy .small-cross{font-size:18px}.flap-title{font-size:26px;margin-top:10px}.envelope .recipient{top:62%;gap:5px}.envelope .tap{bottom:8%}.envelope .cover-footer{bottom:14px}.envelope .seal{width:54px;height:54px;left:calc(50% - 27px);bottom:-20px}}
@media(prefers-reduced-motion:reduce){.cover.opening{animation:envelope-reveal .12s linear both}.cover.opening .envelope-flap,.cover.opening .tap,.cover.opening .seal{animation:none}}

/* Botanical stationery direction, inspired by the supplied Bloom reference. */
.cover{background:#f4f4e9}
.fold-left,.fold-right,.fold-bottom,.flap-paper{background-image:url('botanical-paper.webp');background-size:100vw 100dvh;background-repeat:no-repeat}
.fold-left{filter:brightness(.96)}
.fold-right{filter:brightness(.985)}
.fold-bottom{filter:brightness(.99)}
.flap-paper{background-position:0 0;filter:drop-shadow(0 3px 2px #725f3b)}
.envelope-flap{filter:drop-shadow(0 4px 4px #5a503b55)}
.flap-paper:before,.flap-paper:after{content:'';position:absolute;width:72%;height:6px;bottom:0;background:linear-gradient(#e9d8a8,#a98b4b,#f4e5bd);transform-origin:right center;right:50%;transform:rotate(36deg)}
.flap-paper:after{left:50%;right:auto;transform-origin:left center;transform:rotate(-36deg)}
.envelope .seal{width:116px;height:116px;left:calc(50% - 58px);bottom:-47px;border-radius:44% 51% 45% 49% / 49% 43% 52% 45%;background:radial-gradient(ellipse at 38% 25%,#fff0be 0%,#d5af68 32%,#c09a50 55%,#8d682d 74%,#f0d495 87%,#a47833 100%);box-shadow:0 7px 9px #503c3350,inset 0 0 0 3px #b38c4b,inset 0 0 0 7px #e6c888,inset 0 0 0 10px #b78e48,inset 0 0 0 12px #efd69b;display:flex;justify-content:center;align-items:center;flex-direction:column;color:#795824;text-shadow:0 1px 1px #fff1be,0 -1px 1px #85632c}
.seal-initials{font:italic 36px Georgia,serif;letter-spacing:-3px;padding-right:4px;line-height:1}
.seal-wreath{font:25px Georgia;line-height:.8;margin-bottom:5px;color:#977336}
.seal-wreath.bottom{transform:rotate(180deg);margin-bottom:0;margin-top:5px}
.envelope .recipient{top:69%;gap:4px;text-shadow:0 1px 6px #fffefa;background:radial-gradient(ellipse,#fffefad9,transparent 65%);padding:10px}
.envelope .recipient .small{font:italic 19px Georgia,serif;color:#426047}
.envelope .recipient .guest-name{font:italic clamp(36px,8vw,50px) Georgia,serif;color:#244b3c}
.envelope .tap{bottom:5%;font-size:10px;color:#3e573d;text-shadow:0 1px 5px white}
.memory{background:linear-gradient(#fffefaaa,#fffefadd),url('botanical-paper.webp') center/100% 100%;padding-top:55px}
.portrait-frame{border:1px solid #b79c60;box-shadow:0 0 0 4px #fffefabb,0 0 0 5px #c6b07a60;background:#fffefa}
.memory h1{font-family:Georgia,serif;color:#2f503c}
.welcome{background:linear-gradient(#fffefae8,#fffefae8),url('botanical-paper.webp') center/cover}
.gathering{background:#f0f3e9}
.pass-section{background:#edf1e7}
footer{background:linear-gradient(#fffefaec,#fffefac9),url('botanical-paper.webp') bottom/cover}
@media(min-width:760px){.cover{background:#e8eddf}.envelope{max-width:680px;left:50%;right:auto;transform:translateX(-50%)!important;box-shadow:0 0 70px #32442d14}.fold-left,.fold-right,.fold-bottom,.flap-paper{background-size:680px 100dvh}.envelope .recipient{top:70%}}
@media(max-height:650px){.envelope .seal{width:88px;height:88px;left:calc(50% - 44px);bottom:-35px}.seal-initials{font-size:28px}.seal-wreath{font-size:18px}.envelope .recipient{top:65%;padding:4px}.envelope .recipient .guest-name{font-size:32px}.envelope .tap{bottom:4%}}

.flap-paper:before,.flap-paper:after{display:none}.flap-edge{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible}
.envelope .recipient{top:62%;left:18%;right:18%;border-radius:50%;background:radial-gradient(ellipse,#fffefaf5 25%,#fffefacc 52%,transparent 72%);padding:18px 6px}
.envelope .tap{left:50%;right:auto;bottom:4%;width:max-content;max-width:85%;transform:translateX(-50%);background:#fffefae8;border:1px solid #c5ac7166;border-radius:24px;padding:9px 20px;box-shadow:0 3px 14px #32442d0c;letter-spacing:2px}
.envelope .tap span{display:inline;margin-left:8px;font-size:15px}
@media(max-height:650px){.envelope .recipient{top:60%;padding:8px}.envelope .tap{bottom:3%}}

/* Sculpted paper, raised wax and a softly printed photographic vignette. */
.cover{background:radial-gradient(ellipse at 50% 20%,#f2f4eb,#d0d8c5);perspective:1800px}
.envelope{box-shadow:inset 0 0 0 1px #fffefacc,0 16px 70px #273a2433;transform-style:preserve-3d}
.fold-left{filter:brightness(.94);box-shadow:inset 6px 0 12px #fffefa66}
.fold-right{filter:brightness(.98)}
.fold-bottom{filter:brightness(1.025)}
.envelope-flap{filter:drop-shadow(0 7px 4px #4c402c50) drop-shadow(0 1px 0 #fff5cf)}
.flap-paper{background-image:linear-gradient(145deg,#ffffff19 15%,transparent 48%,#77714619 100%),url('botanical-paper.webp')}
.flap-edge{filter:drop-shadow(0 2px 1px #75623c60)}
.envelope .seal{width:122px;height:122px;left:calc(50% - 61px);bottom:-49px;transform:translateZ(18px) rotate(-7deg);border:1px solid #9d783e;background:radial-gradient(ellipse at 30% 18%,#fff0c0 0%,#edcf8c 15%,#d1a85e 38%,#b68b41 63%,#f4d99e 81%,#977035 100%);box-shadow:0 2px 0 #9b7232,0 4px 0 #ad823c,0 6px 0 #8f682f,1px 11px 10px #37271550,4px 20px 24px #493c2728,inset 0 0 0 4px #c49b50,inset 0 0 0 7px #f5dda3,inset 0 0 0 10px #b78d43,inset 0 0 0 12px #efd69b}
.seal-initials{transform:rotate(7deg);font-size:38px;text-shadow:0 1px 1px #fff1c3,0 -1px 1px #5f421e}
.envelope .recipient{top:62%;left:8%;right:8%;padding:23px 8px;background:radial-gradient(ellipse,#fffefaf7 15%,#fffefad9 46%,transparent 73%)}
.envelope .recipient .small{font:9px/1.6 Arial,sans-serif;letter-spacing:2.3px;color:#5d6b52}
.envelope .recipient .guest-name{font:italic clamp(32px,8.8vw,48px)/1.25 Georgia,serif;letter-spacing:-1px;color:#244b3c;text-shadow:0 1px 0 white;margin:6px 0}
.family-signoff{font:italic 14px/1.6 Georgia,serif;color:#52664b}
.memory{position:relative;background:linear-gradient(#fffefacc,#fffefae6),url('botanical-paper.webp') center/100% 100%;padding-top:52px}
.portrait-frame{position:relative;width:min(100%,370px);padding:0;border:0;border-radius:0;box-shadow:none;background:none;margin:16px auto 2px}
.portrait-frame:after{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at 50% 43%,transparent 30%,#fffefa40 58%,#fffefa00 76%);pointer-events:none}
.portrait-frame img{display:block;width:100%;height:auto;aspect-ratio:1/1.05;object-fit:cover;object-position:50% 40%;border-radius:0;opacity:.91;filter:saturate(.65) contrast(.94);mix-blend-mode:multiply;-webkit-mask-image:radial-gradient(ellipse 49% 46% at 50% 48%,#000 48%,#000e 62%,#0008 79%,transparent 100%);mask-image:radial-gradient(ellipse 49% 46% at 50% 48%,#000 48%,#000e 62%,#0008 79%,transparent 100%)}
.professor{position:relative;margin-top:-14px}
.memory h1{letter-spacing:-1.4px;margin-top:8px}
.welcome .eyebrow{font-size:9px;letter-spacing:2px}
.ticket{box-shadow:0 2px 0 #e0e5d8,0 5px 0 #f8faf4,0 6px 0 #dce1d3,0 16px 30px #203c3210}
@media(max-height:650px){.envelope .seal{width:92px;height:92px;left:calc(50% - 46px);bottom:-36px}.seal-initials{font-size:28px}.envelope .recipient{top:60%;padding:10px 4px}.envelope .recipient .guest-name{font-size:30px}.family-signoff{font-size:12px}}
@media(prefers-reduced-motion:no-preference){.envelope:not(:disabled) .seal{animation:wax-light 6s ease-in-out infinite}.cover.opening .seal{animation:seal-release 5s linear both}}
@keyframes wax-light{0%,100%{filter:brightness(1)}50%{filter:brightness(1.065)}}

/* Forest, pearl and champagne: gently animated botanical stationery. */
:root{--green:#193d30;--gold:#b99a59;--ink:#243f32;--muted:#62715f;--paper:#fffdf7}
.reading-progress{position:fixed;top:0;left:0;width:100%;height:2px;background:linear-gradient(90deg,#8e713a,#e9d7a3);transform:scaleX(0);transform-origin:left;z-index:60}
header{background:#fffdf7eb;border-bottom-color:#c7b57d40}
.memory,footer{isolation:isolate;overflow:hidden}
.memory> :not(.botanical-motion),footer> :not(.botanical-motion){position:relative;z-index:1}
.botanical-motion{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:0}
.bloom-drift{position:absolute;width:100%;height:100%;background:url('botanical-paper.webp') center/100% 100%;opacity:.32;will-change:transform}
.bloom-left{inset:-1% auto auto -2%;mask-image:radial-gradient(ellipse at 0% 0%,black 10%,transparent 53%);-webkit-mask-image:radial-gradient(ellipse at 0% 0%,black 10%,transparent 53%);transform-origin:0 0;animation:floral-sway-left 12s ease-in-out infinite alternate}
.bloom-right{inset:auto -2% -1% auto;mask-image:radial-gradient(ellipse at 100% 100%,black 10%,transparent 55%);-webkit-mask-image:radial-gradient(ellipse at 100% 100%,black 10%,transparent 55%);transform-origin:100% 100%;animation:floral-sway-right 15s ease-in-out infinite alternate}
@keyframes floral-sway-left{from{transform:rotate(-1.5deg) translate(0,0)}to{transform:rotate(2deg) translate(6px,9px)}}
@keyframes floral-sway-right{from{transform:rotate(1.6deg) translate(0,0)}to{transform:rotate(-2deg) translate(-6px,-8px)}}
.petal{position:absolute;top:-35px;left:12%;width:11px;height:19px;border-radius:75% 10% 70% 25%;background:linear-gradient(130deg,#fffefa,#e0d5b3);box-shadow:inset 1px 1px 2px #fff;opacity:0;animation:petal-fall 18s linear infinite}
.p2{left:84%;width:9px;height:16px;animation-delay:-5s;animation-duration:22s}.p3{left:7%;width:8px;height:15px;animation-delay:-9s;animation-duration:25s}.p4{left:93%;animation-delay:-14s;animation-duration:27s}.p5{left:76%;width:6px;height:12px;animation-delay:-17s;animation-duration:23s}
@keyframes petal-fall{0%{transform:translate3d(0,-20px,0) rotate(0deg);opacity:0}12%{opacity:.65}55%{transform:translate3d(-24px,430px,0) rotate(155deg);opacity:.5}90%{opacity:.4}100%{transform:translate3d(17px,900px,0) rotate(290deg);opacity:0}}
.paper-shimmer{position:absolute;inset:0;background:linear-gradient(110deg,transparent 20%,#fffbe326 45%,transparent 70%);background-size:240% 100%;animation:paper-light 14s ease-in-out infinite alternate}
@keyframes paper-light{from{background-position:100% 0}to{background-position:0 0}}
.memory{padding-bottom:62px;background:linear-gradient(#fffdf7d5,#fffdf7ee),url('botanical-paper.webp') center/100% 100%}
.memory .eyebrow{color:#8f7540;letter-spacing:3px}
.memory .subtitle{font-size:20px;line-height:1.65}
.ornamental-rule{width:75px;background:linear-gradient(90deg,transparent,#b79a5c,transparent);position:relative}
.ornamental-rule:after{content:'◆';position:absolute;left:calc(50% - 3px);top:-7px;font-size:7px;color:#b79a5c;background:var(--paper);padding:0 3px}
.welcome{padding-top:76px;padding-bottom:76px}
.welcome h2{font-style:italic;font-size:37px}
.signature{padding-top:12px}
.gathering{position:relative;overflow:hidden;background:radial-gradient(ellipse at 100% 0%,#36523e,#17372b 75%);color:#f8f4e6;border-top:1px solid #a88e5640;border-bottom:1px solid #a88e5640}
.gathering:after{content:'❧';position:absolute;right:-25px;bottom:-70px;font:240px Georgia;color:#c1ad7120;pointer-events:none;transform:rotate(-25deg)}
.gathering .eyebrow{color:#d3bc83}.gathering h2{font-size:40px}.gathering .intro,.gathering .quiet-note,.gathering .schedule p{color:#d4dccb}
.gathering .schedule article{border-color:#c7ba8a40;position:relative;z-index:1}.gathering .event-no{color:#d4bd80;font-size:23px}
.gathering h3{font-size:26px;color:#fffaf0}
.rsvp{background:#fffdf7}
.choice{background:#fffefa;border-color:#d6cfb9;border-radius:2px;transition:background .3s,box-shadow .3s,border-color .3s}
.choice:has(input:checked){background:#edf1e6;border-color:#8e9f78;box-shadow:inset 3px 0 #b49758}
.primary{background:linear-gradient(120deg,#274e3b,#18392d);border-color:#8e7843;box-shadow:0 6px 16px #193d3018}
.pass-section{background:linear-gradient(150deg,#203e30,#132d23);color:#fbf7ec;position:relative}
.pass-section>.eyebrow{color:#d3bc83}.pass-section>.intro,.pass-section>.quiet-note{color:#d4dccb}
.ticket{color:#293f35;background:#fffdf7;border:1px solid #c4ab70;border-radius:3px;box-shadow:0 3px 0 #a99461,0 7px 0 #ede7d5,0 9px 0 #a99461,0 22px 45px #0003}
.ticket-top{border-bottom-color:#c8b98970}.ticket-bottom{background:#e9eddf;color:#486044}
.pass-section .outline{color:#f8efd8;border-color:#c1aa70;background:transparent}
footer{position:relative;background:linear-gradient(#fffdf7e8,#fffdf7c9),url('botanical-paper.webp') bottom/cover;padding-top:80px;padding-bottom:55px}
footer h2{font-size:34px}
.reveal-ready{opacity:0;transform:translateY(24px);transition:opacity 1.2s ease,transform 1.4s cubic-bezier(.2,.7,.2,1);transition-delay:var(--reveal-delay,0ms)}
.reveal-ready.is-visible{opacity:1;transform:translateY(0)}
@media(prefers-reduced-motion:reduce){.bloom-drift,.petal,.paper-shimmer{animation:none!important}.petal{display:none}.reveal-ready{opacity:1;transform:none;transition:none}.reading-progress{display:none}}


/* A living wildflower canopy: separate portrait and landscape compositions. */
html{overflow-x:clip}
body{min-width:280px;background:#e5eade}
main{width:100%;max-width:1200px}
header{gap:10px;padding-inline:clamp(16px,4vw,50px)}
header nav{gap:clamp(12px,3vw,32px)}
header nav a{min-height:44px;display:flex;align-items:center}
header .monogram{flex:none}
header .close{flex:none}
.welcome,.gathering,.rsvp,.pass-section{padding:clamp(50px,7vw,90px) clamp(24px,8vw,160px)}
.welcome p{max-width:52ch}
.gathering .schedule,.gathering>.intro,.gathering>.quiet-note{max-width:740px}
.rsvp form{max-width:520px}
.pass-section .quiet-note{max-width:480px;margin-inline:auto}
.ticket{width:100%;max-width:440px}
.ticket-top{gap:18px}
.ticket-top>span:last-child{line-height:1.9}
.ticket-details{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr)}
.ticket-details strong{overflow-wrap:anywhere}
.primary,.outline{min-height:54px}
.memory.garden-memory{position:relative;isolation:isolate;overflow:hidden;min-height:max(740px,calc(100svh - 72px));padding:86px 28px 88px;background:#e7ead7;display:grid;place-items:center}
.memory.garden-memory>.garden-scene{position:absolute;inset:0;z-index:0;pointer-events:none;overflow:hidden}
.garden-picture{display:block;position:absolute;inset:-2%;width:104%;height:104%;max-width:none;will-change:transform}
.garden-picture img{display:block;width:100%;height:100%;object-fit:cover;object-position:center}
.garden-base{transform:scale(1.005)}
.garden-left{mask-image:linear-gradient(90deg,#000 6%,#000 16%,transparent 39%);-webkit-mask-image:linear-gradient(90deg,#000 6%,#000 16%,transparent 39%);transform-origin:0 70%;animation:garden-left-wind 8.5s ease-in-out infinite alternate}
.garden-right{mask-image:linear-gradient(90deg,transparent 61%,#000 84%,#000 94%);-webkit-mask-image:linear-gradient(90deg,transparent 61%,#000 84%,#000 94%);transform-origin:100% 70%;animation:garden-right-wind 10.5s ease-in-out infinite alternate}
.garden-canopy{mask-image:linear-gradient(#000 0%,#000 8%,transparent 28%);-webkit-mask-image:linear-gradient(#000 0%,#000 8%,transparent 28%);transform-origin:50% 0;animation:garden-top-wind 12s ease-in-out infinite alternate}
@keyframes garden-left-wind{from{transform:rotate(-.6deg) translateX(-2px)}to{transform:rotate(1.3deg) translateX(5px)}}
@keyframes garden-right-wind{from{transform:rotate(.7deg) translateX(2px)}to{transform:rotate(-1.5deg) translateX(-5px)}}
@keyframes garden-top-wind{from{transform:rotate(-.5deg) translateY(-2px)}to{transform:rotate(.6deg) translateY(5px)}}
.garden-haze{position:absolute;inset:0;background:radial-gradient(ellipse 40% 48% at 50% 48%,#fffef052,transparent 90%);pointer-events:none}
.memory.garden-memory>.memorial-content{position:relative;z-index:2;display:flex;flex-direction:column;align-items:center;width:100%;max-width:390px;text-align:center}
.memorial-content .eyebrow{font-size:9px;letter-spacing:2.3px;color:#49552e;margin-bottom:9px;text-shadow:0 1px 8px #ffffe9}
.memory.garden-memory .portrait-frame{width:min(77%,270px);margin:0 auto;flex-shrink:0}
.memory.garden-memory .portrait-frame img{aspect-ratio:1/1;opacity:.93;filter:saturate(.65) contrast(.96);mix-blend-mode:multiply;-webkit-mask-image:radial-gradient(ellipse 49% 46% at 50% 48%,#000 48%,#000e 66%,#0005 84%,transparent 100%);mask-image:radial-gradient(ellipse 49% 46% at 50% 48%,#000 48%,#000e 66%,#0005 84%,transparent 100%)}
.memory.garden-memory .portrait-frame:after{display:none}
.memory.garden-memory .professor{margin:0 0 9px;font-size:9px;letter-spacing:3px;color:#264330;text-shadow:0 1px 7px #ffffea}
.memory.garden-memory h1{font-size:clamp(34px,6vw,52px);line-height:1.1;margin:0;color:#173b2a;letter-spacing:-1px;text-shadow:0 1px 12px #fffde6,0 0 25px #fffde6}
.memory.garden-memory .rule{margin:19px auto 16px}
.memory.garden-memory .ornamental-rule:after{background:#f4f1d8}
.memory.garden-memory .subtitle{font-size:17px;line-height:1.6;max-width:240px;margin:0;color:#28412e;text-shadow:0 1px 8px #ffffea}
.memory.garden-memory .scroll-link{font-size:10px;letter-spacing:1.8px;line-height:1.8;max-width:260px;min-height:44px;margin-top:22px;padding:9px 17px;border:1px solid #fff9;border-radius:28px;background:#fffdefbd;backdrop-filter:blur(5px);text-shadow:0 1px 10px #fffde7}
.garden-petal{position:absolute;top:-30px;left:16%;width:9px;height:16px;border-radius:80% 12% 70% 25%;background:linear-gradient(120deg,#fffdf0,#eee2ac);box-shadow:inset 1px 1px 2px white;opacity:0;animation:garden-petal-drift 17s linear infinite}
.gp2{left:84%;animation-delay:-5s;animation-duration:21s;background:linear-gradient(120deg,#eff1a5,#d4df54)}
.gp3{left:7%;animation-delay:-11s;animation-duration:23s;width:6px;height:11px}
.gp4{left:92%;animation-delay:-16s;animation-duration:26s;width:7px;height:13px}
@keyframes garden-petal-drift{0%{transform:translate(0,-30px) rotate(0deg);opacity:0}10%,75%{opacity:.6}45%{transform:translate(-16px,400px) rotate(130deg)}100%{transform:translate(22px,1050px) rotate(280deg);opacity:0}}
.memory.garden-memory>.motion-toggle{position:absolute;right:max(14px,env(safe-area-inset-right));bottom:16px;z-index:3;display:flex;align-items:center;gap:7px;min-height:44px;border:1px solid #fff9;border-radius:24px;padding:6px 12px;background:#fffdf0d9;backdrop-filter:blur(5px);color:#3c503b;font-size:10px}
.motion-toggle>span:first-child{font-size:15px}
.motion-paused .garden-picture,.motion-paused .garden-petal,.motion-paused .bloom-drift,.motion-paused .petal{animation-play-state:paused!important}
.scene-idle .garden-picture,.scene-idle .garden-petal{animation-play-state:paused}
.envelope{max-width:none;left:0;right:0;transform:none!important}
.fold-left,.fold-right,.fold-bottom{background-size:cover;background-position:center}
.flap-paper{background-size:100vw 100dvh;background-position:top center}
.envelope .recipient{top:62%}
.cover,.envelope{height:100vh;height:100dvh}
.cover{min-height:0}
.preview{padding-inline:16px}
@media(min-width:700px){
 .memory.garden-memory{min-height:max(880px,calc(100svh - 72px));padding:115px 70px 100px}
 .memory.garden-memory .portrait-frame{width:320px}
 .memory.garden-memory h1{font-size:54px}
 .memory.garden-memory .subtitle{font-size:20px;max-width:300px}
 .memorial-content .eyebrow{font-size:10px}
 .memory.garden-memory .scroll-link{font-size:10px}
 .welcome h2{font-size:42px}
}
@media(min-width:1000px){
 .memory.garden-memory{min-height:max(850px,calc(100svh - 72px))}
 .memory.garden-memory>.memorial-content{max-width:430px}
 .gathering{padding-inline:15%}
 .gathering h2{font-size:45px}
 .envelope .recipient{top:65%}
 .flap-paper{background-size:100vw auto}
}
@media(max-width:360px){
 header{padding-inline:12px;gap:8px}header nav{gap:11px;font-size:11px}
 .preview{font-size:8px}.preview span{display:block;margin:1px 0 0}
 .memory.garden-memory{min-height:700px;padding:80px 24px}
 .memory.garden-memory h1{font-size:33px}
 .memory.garden-memory .portrait-frame{width:225px}
 .memory.garden-memory .subtitle{font-size:16px;max-width:220px}
 .ticket-main{padding:22px 18px}.ticket-top{padding:18px;gap:13px}
 .ticket-top>span:last-child{font-size:7px;letter-spacing:1.4px}
 .ticket-details strong{font-size:12px}
 .choice{font-size:13px;padding:14px 12px}
 .envelope .recipient .guest-name{font-size:30px}
}
@media(max-height:540px) and (orientation:landscape){
 .memory.garden-memory{min-height:680px;padding-block:65px}
 .memory.garden-memory .portrait-frame{width:230px}
 .envelope .recipient{top:59%;padding:4px}
 .envelope .recipient .small{font-size:8px}
 .envelope .recipient .guest-name{font-size:28px;margin:2px 0}
 .family-signoff{font-size:11px}.envelope .seal{width:76px;height:76px;left:calc(50% - 38px);bottom:-30px}
 .envelope .seal-initials{font-size:25px}.envelope .seal-wreath{font-size:17px}
 .envelope .tap{font-size:8px;padding:6px 14px;bottom:3%}
}
@media(prefers-reduced-motion:reduce){
 .garden-picture,.garden-petal{animation:none!important}
 .garden-petal,.memory.garden-memory>.motion-toggle{display:none}
}

/* The supplied gold frame holds the memorial text without cropping its edges. */
.memory.garden-memory{height:clamp(740px,100svh,980px);min-height:740px;padding:0;background:#092518;color:#fff5d9}
.memory.garden-memory>.gold-frame-scene{position:absolute;inset:0;margin:auto;width:min(100%,660px);background:url('green-gold-frame.png') center/100% 100% no-repeat;z-index:0}
.memory.garden-memory>.memorial-content{width:44%;max-width:290px;transform:translateY(-1%);gap:0}
.memory.garden-memory .eyebrow{color:#edcf8a;text-shadow:none;font-size:8px;letter-spacing:1.7px;margin-bottom:18px}
.memory.garden-memory .professor{color:#e9cd8e;text-shadow:none;font-size:8px;letter-spacing:2px;margin-bottom:10px}
.memory.garden-memory h1{color:#fff3d7;text-shadow:0 2px 14px #0008;font-size:clamp(27px,4vw,42px);line-height:1.12;letter-spacing:-.6px}
.memory.garden-memory .rule{margin:16px auto;background:#ceab61}
.memory.garden-memory .ornamental-rule:after{background:#183824;color:#e7c77e}
.memory.garden-memory .subtitle{color:#f2e6c9;text-shadow:none;font-size:clamp(13px,1.8vw,17px);line-height:1.5}
.memory.garden-memory .scroll-link{color:#efcf88;background:none;border:0;backdrop-filter:none;text-shadow:none;font-size:8px;letter-spacing:1px;line-height:1.5;padding:0;margin-top:17px;max-width:100%}
.memory.garden-memory .scroll-link span{font-size:20px;margin-top:3px}
@media(min-width:700px){.memory.garden-memory>.memorial-content{width:290px}}

/* Deep-green sculpted stationery, lit from the upper left. */
#memorial-title:focus{outline:none}
.cover{background:radial-gradient(ellipse at 25% 15%,#294b37,#092518 75%)}
.envelope{background:#112d20;box-shadow:inset 0 0 100px #0009;perspective:1600px}
.fold-left,.fold-right,.fold-bottom,.flap-paper{background-image:url('paper-grain.svg'),linear-gradient(135deg,#294a35,#163524 55%,#092518);background-size:180px 180px,100% 100%;background-repeat:repeat,no-repeat;background-position:center;filter:none}
.fold-left{background-image:url('paper-grain.svg'),linear-gradient(105deg,#274631,#102c1e 85%);box-shadow:inset 3px 0 2px #77926540}
.fold-right{background-image:url('paper-grain.svg'),linear-gradient(255deg,#1c3929,#0b2418 85%)}
.fold-bottom{clip-path:polygon(0 100%,0 98%,50% 46%,100% 98%,100% 100%);background-image:url('paper-grain.svg'),linear-gradient(160deg,#36533b 0%,#193b29 40%,#0b281b 100%);filter:drop-shadow(0 -3px 2px #000a)}
.envelope-flap{filter:drop-shadow(0 2px 1px #08170ed9) drop-shadow(0 13px 9px #0009)}
.flap-paper{background-image:url('paper-grain.svg'),radial-gradient(ellipse at 26% 5%,#34533d,#1b3b29 52%,#0b2418);box-shadow:inset 0 2px 1px #9fa87b40}
.flap-edge{opacity:.65;filter:drop-shadow(0 2px 1px #0008)}
.paper-shimmer{opacity:.22}
.envelope .recipient{background:none;text-shadow:0 2px 3px #0008}
.envelope .recipient .small{color:#cfb779;letter-spacing:2.5px}
.envelope .recipient .guest-name{color:#f2dfad;text-shadow:0 1px 0 #fff1,0 3px 5px #0009}
.envelope .family-signoff{color:#d6c8a6}
.envelope .tap{color:#e3ca91;background:#092318a6;border-color:#c7a25b60;text-shadow:0 1px 2px #000;box-shadow:inset 0 1px 0 #fff1,0 4px 12px #0005}
.envelope .seal{box-shadow:0 2px 0 #9b7232,0 4px 0 #ad823c,0 6px 0 #6e4d20,2px 13px 10px #0008,6px 24px 30px #0005,inset 0 0 0 4px #c49b50,inset 0 0 0 7px #f5dda3,inset 0 0 0 10px #b78d43,inset 0 0 0 12px #efd69b}
.cover.opening{animation:envelope-reveal .3s ease-out both}
.cover.opening .envelope-flap{animation:flap-lift .3s ease-out both}
.cover.opening .tap{animation:tap-away .3s ease-out both}
.cover.opening .seal{animation:seal-release .3s ease-out both}
@keyframes flap-lift{from{transform:rotateX(0)}to{transform:rotateX(168deg)}}
@keyframes envelope-reveal{0%,35%{opacity:1}100%{opacity:0}}
@media(prefers-reduced-motion:reduce){.cover.opening .envelope-flap{animation:none}}

/* Reference-inspired sculpted gold seal and a three-second reveal. */
.envelope .seal{width:140px;height:140px;left:calc(50% - 70px);bottom:-57px;border:0;border-radius:0;background:none;box-shadow:none;transform:translateZ(18px) rotate(-7deg);filter:drop-shadow(2px 10px 7px #0008)}
.envelope .seal img{display:block;width:100%;height:100%;object-fit:contain}
.envelope:not(:disabled) .seal{animation:none}
.cover.opening,.cover.opening .envelope-flap,.cover.opening .tap,.cover.opening .seal{animation-duration:3s}
@media(max-height:650px){.envelope .seal{width:110px;height:110px;left:calc(50% - 55px);bottom:-44px}}

/* Sculpted botanical paper follows each physical envelope fold. */
.cover{background:#123526}
.fold-left,.fold-right,.fold-bottom,.flap-paper{background-image:url('embossed-foliage.png');background-repeat:no-repeat;background-position:top center;background-size:100vw 100dvh}
.fold-left{filter:brightness(.85)}
.fold-right{filter:brightness(.92)}
.fold-bottom{filter:brightness(.94);box-shadow:inset 0 -2px 4px #0006}
.flap-paper{filter:brightness(1.04);box-shadow:inset 0 2px 1px #d3d3a640}
.envelope-flap{filter:drop-shadow(0 3px 1px #06150ec9) drop-shadow(0 12px 8px #000a)}
.envelope .recipient{left:15%;right:15%;background:radial-gradient(ellipse,#12352680,transparent 72%);text-shadow:0 2px 6px #000}
.envelope .recipient .guest-name{text-shadow:0 1px 0 #fff2,0 2px 2px #071b10,0 5px 12px #0008}
.envelope .tap{background:#0a2519dc}
@media(max-width:480px){.envelope .recipient .guest-name{font-size:clamp(29px,8vw,38px)}.envelope .recipient .small{font-size:8px;letter-spacing:1.5px}.envelope .family-signoff{font-size:12px}}

/* Cast shadow travels over the paper as the flap rises. */
.flap-shadow{position:absolute;inset:0;z-index:3;pointer-events:none;opacity:0;background:linear-gradient(180deg,#000b,#0007 50%,transparent);clip-path:polygon(0 0,100% 0,50% 60%);transform-origin:50% 0;filter:blur(14px)}
.cover.opening .flap-shadow{animation:flap-cast-shadow 3s ease-out both}
.cover.opening .envelope-flap{animation:flap-lift 3s ease-out both,flap-depth-shadow 3s ease-out both}
@keyframes flap-cast-shadow{0%{opacity:.15;transform:scaleY(.86)}25%{opacity:.7;transform:translateY(3%) scaleY(1.12)}55%{opacity:.45;transform:translateY(-10%) scaleY(.6)}85%,100%{opacity:0;transform:translateY(-30%) scaleY(.12)}}
@keyframes flap-depth-shadow{0%{filter:drop-shadow(0 12px 8px #000a)}30%{filter:drop-shadow(0 32px 22px #000b)}65%{filter:drop-shadow(0 12px 28px #0005)}100%{filter:drop-shadow(0 0 0 transparent)}}
@keyframes envelope-reveal{0%,58%{opacity:1}100%{opacity:0}}
@media(prefers-reduced-motion:reduce){.cover.opening .flap-shadow{animation:none}.cover.opening .envelope-flap{animation:none}}

/* A measured lift, then a continuous reveal with no abrupt handoff. */
.cover.opening{animation:envelope-reveal 5s cubic-bezier(.4,0,.2,1) both}
.cover.opening .envelope-flap{animation:flap-lift 5s cubic-bezier(.45,0,.2,1) both,flap-depth-shadow 5s ease-in-out both}
.cover.opening .flap-shadow{animation:flap-cast-shadow 5s ease-in-out both}
.cover.opening .seal{animation:seal-release 5s ease-in-out both}
.cover.opening .tap{animation:tap-away 1s ease-out both}
@keyframes flap-lift{0%{transform:rotateX(0deg)}15%{transform:rotateX(8deg)}40%{transform:rotateX(50deg)}70%{transform:rotateX(125deg)}100%{transform:rotateX(168deg)}}
@keyframes envelope-reveal{0%,35%{opacity:1}55%{opacity:.94}75%{opacity:.6}100%{opacity:0}}
.envelope-return{text-align:center;padding:36px 24px 48px;background:#132d23}
#close-envelope{min-height:48px;padding:14px 28px;color:#f2e6ca;border:1px solid #c1aa7070;border-radius:3px;background:transparent;font-size:13px;letter-spacing:.6px;box-shadow:0 5px 16px #0002}
#close-envelope span{margin-left:12px}
#close-envelope:hover{background:#ffffff0b}
@media(prefers-reduced-motion:reduce){.cover.opening{animation-duration:.2s}.cover.opening .envelope-flap,.cover.opening .flap-shadow{animation:none}}

.location-section{text-align:center;padding:65px 24px;background:#f5f1e6;color:#244b3c}.location-section p{max-width:440px;margin-inline:auto}.location-section .outline{max-width:440px;gap:15px}.location-section .eyebrow{color:#89713f}

/* Explicit first-screen instruction, also a touch-friendly jump link. */
.memory.garden-memory #scroll-cue{position:fixed;z-index:20;left:50%;bottom:max(22px,env(safe-area-inset-bottom));transform:translateX(-50%);width:max-content;max-width:calc(100vw - 40px);margin:0;padding:12px 22px 8px;background:#102d21f2;border:1px solid #d4bc7866;border-radius:28px;color:#fff0ce;font:12px/1.5 Arial,sans-serif;letter-spacing:.4px;text-align:center;box-shadow:0 5px 24px #0004;transition:opacity .35s ease,visibility .35s ease}
.memory.garden-memory #scroll-cue span{display:block;font-size:23px;line-height:1;margin:5px 0 3px;animation:scroll-invitation-arrow 2.2s ease-in-out infinite}
.envelope-closed #scroll-cue{visibility:hidden}
body.has-scrolled #scroll-cue span{animation:none}
body.past-scroll-cue #scroll-cue{opacity:0;visibility:hidden;pointer-events:none}
@keyframes scroll-invitation-arrow{0%,100%{transform:translateY(0)}50%{transform:translateY(6px)}}
@media(prefers-reduced-motion:reduce){.memory.garden-memory #scroll-cue span{animation:none}}

/* Quiet music control remains available throughout the opening animation. */
.music-toggle{position:fixed;z-index:70;top:max(18px,env(safe-area-inset-top));right:max(18px,env(safe-area-inset-right));display:flex;align-items:center;gap:8px;padding:11px 16px;border:1px solid rgba(242,235,211,.35);border-radius:999px;background:rgba(17,43,33,.94);color:#f2ebd3;box-shadow:0 4px 18px rgba(0,0,0,.2);font:500 12px/1.4 Arial,sans-serif;cursor:pointer;}
.music-toggle[hidden]{display:none}
.music-toggle:focus-visible{outline:2px solid #f2ebd3;outline-offset:4px}
.music-toggle span[aria-hidden]{font-size:18px}

.scripture{padding:48px 24px;text-align:center;background:#f3efe4;color:#153e32}.scripture blockquote{max-width:720px;margin:20px auto 28px;font:italic clamp(18px,2.3vw,23px)/1.6 Georgia,serif}.scripture>p{font:10px/1.5 Arial,sans-serif;letter-spacing:3px;color:#9e7538}.candle{display:block;width:12px;height:42px;margin:0 auto 35px;background:#fffdf5;border:1px solid #e2dcca;border-radius:3px;font-size:0;position:relative}.candle:before{content:"";position:absolute;width:10px;height:18px;left:-1px;top:-25px;border:3px solid #e7b759;border-radius:70% 20% 65% 40%;transform:rotate(-20deg)}.event-date{font-size:13px;letter-spacing:.5px;color:#89703e}.pass-actions{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;margin-top:25px}.rsvp input:not([type=radio]),.rsvp select{width:100%;padding:14px;border:1px solid #b5c3b6;background:#fffdf6;color:#244b3c;font:inherit;border-radius:6px}.pass-section[hidden],.rsvp[hidden]{display:none}.ticket-main h3{overflow-wrap:anywhere}

#tribute-fields[hidden],#signature-field[hidden]{display:none}
.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}

.memory.garden-memory>.memorial-portrait{position:absolute;inset:9% 0 0;width:100%;height:91%;background:url("daddy-landing.jpeg") center top/cover no-repeat;opacity:.18;filter:grayscale(1) brightness(.55);mask-image:linear-gradient(180deg,transparent 0%,#000 14%,#000 76%,transparent 100%);pointer-events:none;z-index:1}.memory.garden-memory>.memorial-content{position:relative;z-index:2}#save-response[hidden]{display:none}

.rsvp{padding:36px clamp(24px,6vw,95px);font-size:14px}.rsvp h2{font-size:28px;margin-bottom:14px}.rsvp .eyebrow{font-size:9px;margin-bottom:10px}.rsvp .choice{font-size:13px;padding:11px 12px;margin-bottom:8px}.rsvp .field-label{font-size:12px;margin:12px 0 7px}.rsvp textarea{font-size:14px;padding:12px;min-height:100px}.rsvp .primary{font-size:13px;padding:12px 16px;margin-top:12px}.rsvp input:not([type=radio]){padding:11px;font-size:14px}.rsvp #guest-status{font-size:12px;margin:10px 0 0}#share-pass{font-size:11px;letter-spacing:.4px;justify-content:center;text-align:center}

.rsvp textarea,.rsvp input:not([type=radio]),.rsvp select{font-size:16px;max-width:100%;min-width:0}.rsvp textarea{resize:vertical;width:100%;box-sizing:border-box;overflow-wrap:anywhere}.rsvp form,.rsvp fieldset{min-width:0;max-width:100%}.ticket-main img{max-width:100%;height:auto}.chief-mourner{margin:30px auto 0;font:17px/1.6 Georgia,serif}.chief-mourner span{display:block;font:11px/1.6 Arial,sans-serif;letter-spacing:1.5px;margin-top:5px}#guest-status{overflow-wrap:anywhere}

.closing-footer{padding:0;background:linear-gradient(150deg,#203e30,#132d23);color:#fbf7ec}.closing-footer .farewell-verse{padding-bottom:22px;background:transparent;color:inherit}.closing-footer .farewell-verse>p{color:#d3bc83}.closing-footer .envelope-return{background:transparent;padding-top:12px}.invalid-invitation{min-height:100svh;display:grid;align-content:center;padding:40px;text-align:center;background:#092518;color:#f3efe4}.invalid-invitation h1{font-size:30px}
