@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Playfair+Display:ital,wght@0,400;0,500;0,600;1,400&display=swap');
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:28px}body.dc-bouquet{--fl-bg:#fff8f8;--fl-card:#fffdfb;--fl-ink:#4b2739;--fl-muted:#785365;--fl-accent:#944c70;--fl-line:#d9b4c5;--fl-soft:#f3dfe8;--fl-gold:#aa8658;margin:0;background:var(--fl-bg);color:var(--fl-ink);font:14px 'DM Sans',Arial,sans-serif}body[data-theme=rose]{--fl-bg:#12080e;--fl-card:#25121b;--fl-ink:#f9eede;--fl-muted:#dfc4ca;--fl-accent:#e5c791;--fl-line:#775736;--fl-soft:#421827;--fl-gold:#caa15c;background:#12080e;color-scheme:dark}body.locked{overflow:hidden}button,input,select,textarea{font:inherit}button,input,select,textarea,a{-webkit-tap-highlight-color:transparent}button,.primary{border:1px solid var(--fl-accent);background:var(--fl-accent);color:var(--fl-bg);padding:14px 22px;border-radius:2px;font-size:10px;letter-spacing:1px;cursor:pointer;text-decoration:none;transition:transform .2s,box-shadow .2s}button:hover,.primary:hover{transform:translateY(-2px);box-shadow:0 7px 16px #30102214}button:disabled{opacity:.5;cursor:default}.secondary{background:transparent;color:var(--fl-ink);border-color:var(--fl-line)}.text-button{background:none;color:var(--fl-accent);border:0;box-shadow:none;padding:10px;font-size:9px}a{color:var(--fl-accent)}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline:3px solid var(--fl-accent);outline-offset:5px}h1,h2{font-family:'Playfair Display',Georgia,serif;font-weight:400;color:var(--fl-ink);line-height:1.12;letter-spacing:-1px}h1{font-size:clamp(43px,6vw,79px)}h2{font-size:clamp(31px,4.3vw,51px);margin:0 0 20px}h3{color:var(--fl-ink)}em{font-weight:400;color:var(--fl-accent)}p{color:var(--fl-muted);line-height:1.9}.eyebrow{font-size:8px;letter-spacing:2px;line-height:1.9;color:var(--fl-accent);margin:0 0 17px}.hint{font-size:10px;line-height:1.9;color:var(--fl-muted);text-align:center}.brand{font-size:12px;letter-spacing:3px;font-weight:600;color:var(--fl-ink);text-decoration:none}.brand span{display:block;font-size:6px;letter-spacing:2px;color:var(--fl-accent);margin-top:8px}.studio-link{color:var(--fl-accent);font-size:9px;text-decoration:none}.theme-picker{display:flex;gap:6px}.theme-picker button{font-size:7px;background:transparent;color:var(--fl-ink);border-color:var(--fl-line);padding:8px 11px}.theme-picker button[aria-pressed=true]{background:var(--fl-accent);color:var(--fl-bg)}.gate{position:fixed;inset:0;z-index:40;overflow-y:auto;background:radial-gradient(ellipse at center,var(--fl-soft),transparent 75%),var(--fl-bg);display:flex;align-items:center;justify-content:center;padding:24px 15px;isolation:isolate}.gate-content{max-width:365px;width:100%;text-align:center;margin:auto;position:relative;z-index:3}.gate .brand{display:block;margin-bottom:23px}.gate .theme-picker{justify-content:center}.gate-flower{width:60px;aspect-ratio:1;margin:18px auto 12px}.gate h1{font-size:35px;margin:13px 0;line-height:1.09;letter-spacing:.3px}.gate p{font-size:11px;margin:9px 0}.gate .eyebrow{font-size:6px;letter-spacing:1.5px}.dots{display:flex;justify-content:center;gap:17px;margin:20px 0 5px}.dots span{width:12px;height:12px;border:1px solid var(--fl-accent);border-radius:50%}.dots span.filled{background:var(--fl-accent)}#codeMessage{font-size:10px;min-height:31px;margin:12px 0}.keypad{display:grid;grid-template-columns:repeat(3,57px);justify-content:center;gap:10px 24px}.keypad button{width:57px;height:57px;padding:0;border-radius:50%;font-size:24px;letter-spacing:0;color:var(--fl-ink);background:var(--fl-card);border-color:var(--fl-line)}.keypad button:hover{background:var(--fl-soft)}#deleteDigit{border:0;background:none;font-size:20px}#demoHint{font-size:9px;color:var(--fl-accent);margin:18px 0}summary{cursor:pointer}.opening{position:fixed;inset:0;z-index:45;background:var(--fl-bg);display:flex;flex-direction:column;justify-content:center;align-items:center;padding:24px;text-align:center}#wrappedBouquet{width:300px;height:400px}.opening.unwrapping{animation:fadeAway 1s forwards}.opening p{font-size:10px}.floral-cutout{display:block;width:100%;height:100%;line-height:0}.floral-cutout img{display:block;width:100%;height:100%;object-fit:contain;user-select:none;filter:drop-shadow(0 9px 10px #3e1a2812)}#site{position:relative;overflow:hidden;isolation:isolate;background:radial-gradient(ellipse at 20% 2%,#f9e7ee80,transparent 40%)}.lily-rail{display:none;position:absolute;top:120px;width:280px;height:620px;z-index:0;pointer-events:none;overflow:visible}.rail-left{left:-110px}.rail-right{right:-110px}.rail-sprig{position:absolute;width:100%;height:320px;object-fit:contain;filter:drop-shadow(0 7px 12px #43202b0d)}.sprig-0{top:-25px;transform:rotate(-22deg)}.sprig-1{top:135px;transform:rotate(7deg)}.sprig-2{top:290px;transform:rotate(-13deg)}.rail-right .sprig-0{transform:rotate(21deg)}.rail-right .sprig-1{transform:rotate(-16deg)}.rail-right .sprig-2{transform:rotate(11deg)}body[data-theme=lily] .lily-rail{display:block}.gate .lily-rail{position:absolute;top:15%;z-index:0}.gate .rail-left{left:-80px}.gate .rail-right{right:-80px}.palace-backdrop{display:none;position:absolute;inset:0;z-index:0;pointer-events:none;overflow:hidden}body[data-theme=rose] .palace-backdrop{display:block;background:radial-gradient(ellipse at 50% 5%,#6d203a40,transparent 32%),linear-gradient(90deg,#0d060b,#30131f 48%,#1d0b14 70%,#0d060b)}.palace-backdrop i{position:absolute;top:0;bottom:0;left:5%;width:85px;background:linear-gradient(90deg,transparent,#ac835711,#d9b66d22,#39221622,transparent);border-inline:1px solid #b18a5329}.palace-backdrop i:nth-child(2){left:auto;right:5%}.palace-backdrop span{position:absolute;left:38%;width:24%;top:0;bottom:0;background:linear-gradient(90deg,#430b1d18,#76213a22,#430b1d18);border-inline:1px solid #a3773426}header{position:relative;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:24px 6vw;border-bottom:1px solid #b5946622}main{position:relative;z-index:1;width:calc(100% - 140px);max-width:1140px;margin:auto}.cover{min-height:calc(88svh - 90px);display:grid;place-content:center;text-align:center;padding:75px 100px 65px;position:relative}.cover:before,.cover:after{content:'✦';position:absolute;font-size:13px;color:var(--fl-gold);opacity:.8;left:calc(50% - 8px);top:50px}.cover:after{top:auto;bottom:28px}.cover h1{font-size:clamp(46px,6.3vw,82px);line-height:1.11;max-width:620px;margin:20px auto 23px;letter-spacing:-1.6px;text-wrap:balance}.cover .dedication{font:italic 16px/1.85 Georgia;max-width:480px;margin:12px auto 20px}.cover .couple{font-size:9px;letter-spacing:2px;text-transform:uppercase;margin:20px 0 30px}.cover .primary{display:inline-block}.hero-art{display:none}.sample-label{font-size:6px;letter-spacing:1px;margin-top:23px}.cover .eyebrow{max-width:420px;margin:auto;color:var(--fl-accent)}.story-strip{position:relative;z-index:1;display:flex;justify-content:space-around;gap:15px;padding:20px 10px;font-size:7px;letter-spacing:1.5px;border-block:1px solid #a5886525;color:var(--fl-accent)}nav{display:flex;position:relative;z-index:1;gap:20px;justify-content:flex-start;overflow:auto;padding:22px 6px}nav a{font-size:7px;letter-spacing:1px;white-space:nowrap;text-decoration:none;color:var(--fl-muted)}.section{padding:62px 30px;position:relative;border:0;background:none}.section:after{content:'✧';display:block;text-align:center;color:var(--fl-gold);font-size:22px;margin:38px 0 -28px;opacity:.8}.heading{display:flex;justify-content:space-between;align-items:center;gap:35px;margin-bottom:32px}.heading p:last-child{font-size:12px;max-width:550px;margin:0}.heading h2{margin-bottom:17px}.chapter-ornament{font:italic 37px Georgia;color:var(--fl-gold);border:1px solid var(--fl-line);width:73px;height:73px;display:grid;place-items:center;border-radius:50%;flex-shrink:0}.story-timeline{display:grid;grid-template-columns:1fr 1fr;gap:24px 32px}.story-chapter{border-left:1px solid var(--fl-line);padding:6px 0 8px 23px;position:relative}.story-chapter-number{position:absolute;left:-11px;top:0;width:21px;height:21px;border:1px solid var(--fl-line);border-radius:50%;background:var(--fl-bg);font-size:7px;display:grid;place-items:center;color:var(--fl-accent)}.story-chapter small{font-size:7px;letter-spacing:1.5px;color:var(--fl-accent)}.story-chapter h3{font:24px Georgia;margin:14px 0}.story-chapter p{font-size:12px;margin:0;white-space:pre-line;max-width:390px}.garden-counter{border:0;text-align:center;color:var(--fl-accent);padding:10px}.garden-counter b{font:35px Georgia;display:block}.garden-counter span{font-size:6px;letter-spacing:1px;line-height:1.8;display:block;margin-top:7px}.picking-instruction{text-align:center;font:italic 16px/1.7 Georgia;color:var(--fl-accent);margin:5px auto 30px}.album-collection{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:30px;max-width:850px;margin:0 auto}.album-collection:before{content:'';position:absolute;top:0;bottom:0;left:calc(50% - 3px);width:6px;background:linear-gradient(90deg,#e1adbd80,#f8d9e580,#e1adbd80);pointer-events:none}.album-page{position:relative;padding:15px 15px 19px;background:var(--fl-card);border:1px solid #d3b28e73;color:var(--fl-ink);text-align:left;box-shadow:0 10px 28px #4113280b;letter-spacing:0;transform:rotate(-1.3deg);font-weight:400}.album-page:nth-child(2n){transform:rotate(1.2deg)}.album-page:hover{transform:rotate(0) translateY(-4px);box-shadow:0 16px 35px #41132812}.album-photo-mount{display:block;position:relative;padding:8px;border:1px solid #d4b38d80;background:var(--fl-bg);overflow:hidden}.album-photo{width:100%;aspect-ratio:4/3;object-fit:cover;display:block}.album-corner{position:absolute;top:0;left:0;width:37px;height:37px;background:linear-gradient(135deg,#efc0d2,#dba6bd);clip-path:polygon(0 0,100% 0,0 100%)}.corner-right{left:auto;right:0;transform:rotate(90deg)}.album-caption{display:block;padding:14px 6px 0}.album-caption small{font-size:6px;letter-spacing:1.2px;color:var(--fl-accent);display:block}.album-caption strong{display:block;font:25px Georgia;margin:10px 0}.album-excerpt{display:block;font-size:11px;line-height:1.8;color:var(--fl-muted);min-height:40px}.album-open{display:block;font-size:7px;color:var(--fl-accent);letter-spacing:1px;margin-top:12px}.album-page.collected .album-caption:after{content:'♥ TREASURED';font-size:6px;letter-spacing:1px;position:absolute;right:20px;bottom:19px;color:var(--fl-accent)}.album-opening{animation:albumOpen .65s ease both}@keyframes albumOpen{50%{transform:translateY(-10px) rotate(0) scale(1.03)}}body[data-theme=rose] .album-collection{gap:30px}body[data-theme=rose] .album-collection:before{display:none}body[data-theme=rose] .album-page{transform:none;background:linear-gradient(145deg,#321621,#1d0c15);border:2px solid #bd94585e;box-shadow:inset 0 0 0 5px #1a0a13,inset 0 0 0 6px #c5a37140,0 15px 30px #0002;padding:19px}body[data-theme=rose] .album-photo-mount{background:#180b12;border:1px solid #c79b59}body[data-theme=rose] .album-corner{background:linear-gradient(135deg,#dfc38c,#866332)}body[data-theme=rose] .album-page:hover{transform:translateY(-5px)}.couple-cards{display:grid;grid-template-columns:1fr 1fr;gap:25px;max-width:820px;margin:auto}.couple-card{position:relative;text-align:center;background:linear-gradient(145deg,var(--fl-card),var(--fl-soft));padding:25px 28px;border:1px solid var(--fl-line);box-shadow:inset 0 0 0 6px var(--fl-bg),inset 0 0 0 7px #b8936033}.couple-crest{width:60px;margin:0 auto 12px}.couple-portrait{min-height:185px;display:flex;justify-content:center;align-items:center}.couple-portrait .person{width:118px}.couple-card h3{font:31px Georgia;margin:15px 0 7px}.couple-card>p{font-size:11px;margin:5px 0 20px}.couple-traits{display:grid;gap:10px;border-top:1px solid var(--fl-line);padding-top:18px}.couple-traits span{display:flex;justify-content:space-between;align-items:center}.couple-traits small{font-size:9px;color:var(--fl-muted)}.couple-traits b{font:16px Georgia;color:var(--fl-accent)}.relationship-counters{display:flex;justify-content:center;max-width:730px;margin:25px auto 0;border-top:1px solid var(--fl-line);padding-top:23px}.relationship-counters>div{width:33%;text-align:center}.relationship-counters b{font:30px Georgia;color:var(--fl-accent);display:block}.relationship-counters span{display:block;font-size:6px;letter-spacing:1px;color:var(--fl-muted);margin-top:10px}.secret-layout{display:grid;grid-template-columns:.85fr 1.15fr;gap:30px;align-items:center}.bloom-stage{height:280px;position:relative;display:grid;place-content:center;overflow:visible}.bloom-stage>span{position:absolute;bottom:12px;left:0;right:0;text-align:center;color:var(--fl-accent);font-size:6px;letter-spacing:1.2px}.keepsake-box{width:270px;height:180px;position:relative;background:linear-gradient(115deg,#dba2b8,#f8d5e2,#dba2b8);border:1px solid #b57a93;color:#68374b;box-shadow:0 23px 30px #46203117;padding:0;transform:perspective(700px) rotateY(-9deg) rotateX(8deg);border-radius:5px}.keepsake-lid{position:absolute;top:-15px;left:-8px;right:-8px;height:55px;background:linear-gradient(120deg,#fbe5ed,#ddb1c4);border:1px solid #b57a93;box-shadow:0 7px 9px #7b4a6020;transform-origin:top;transition:transform .6s}.gift-jewel{position:absolute;top:8px;left:calc(50% - 14px);font-size:28px;color:#f8f0ce;text-shadow:0 0 5px #906844}.keepsake-ribbon{position:absolute;width:27px;top:38px;bottom:0;left:calc(50% - 13px);background:linear-gradient(90deg,#fff4e5,#e6ccb9,#fff5ed)}.keepsake-label{position:absolute;left:12px;right:12px;top:75px;font-size:7px;letter-spacing:1.5px;line-height:1.8}.keepsake-label em{display:block;font:italic 21px Georgia;letter-spacing:0;color:#6e3d53}.keepsake-box.blooming .keepsake-lid{animation:boxOpen .8s ease both}@keyframes boxOpen{50%{transform:translateY(-25px) rotateX(25deg)}}body[data-theme=rose] .keepsake-box{background:linear-gradient(120deg,#1b0c16,#522038,#1b0c16);border-color:#bc9459;color:#e2c58f}body[data-theme=rose] .keepsake-lid{background:linear-gradient(120deg,#1b0c16,#3f172b);border-color:#bc9459}body[data-theme=rose] .keepsake-ribbon{background:linear-gradient(90deg,#886637,#dbc08b,#886637)}body[data-theme=rose] .keepsake-label em{color:#e5c894}.secret-note{padding:25px 0;border:0;border-bottom:1px solid var(--fl-line)}#secretMessage{font:25px/1.8 Georgia;min-height:110px;color:var(--fl-ink)}.note-bottom{display:flex;align-items:center;justify-content:space-between;gap:10px;border-top:1px solid var(--fl-line);padding-top:15px}.note-bottom p{font-size:7px;letter-spacing:1px}#secretHistory{display:flex;flex-wrap:wrap;gap:7px}.secret-chip{border:1px solid var(--fl-line);background:var(--fl-card);color:var(--fl-accent);font-size:7px;padding:6px 8px}.heading-flower{width:75px;flex-shrink:0}.quiz-box{max-width:860px;margin:auto;padding:27px;border:1px solid var(--fl-line);background:var(--fl-card);box-shadow:inset 0 0 0 6px var(--fl-bg)}.quiz-box h3{font:26px/1.4 Georgia;margin:15px 0 25px}#quizOptions{display:grid;grid-template-columns:1fr 1fr;gap:12px}#quizOptions button{text-align:left;background:var(--fl-bg);color:var(--fl-ink);border-color:var(--fl-line);font-size:11px;letter-spacing:0;line-height:1.7}#quizOptions button.correct{background:var(--fl-soft);border-color:var(--fl-accent)}#quizOptions button.wrong{opacity:.5}#quizFeedback{font-size:11px;min-height:30px}.playlist{max-width:850px;margin:auto;display:flex;flex-direction:column}.track{position:relative;display:grid;grid-template-columns:100px 1fr;gap:5px 24px;padding:25px 0;border-bottom:1px solid var(--fl-line)}.track-flower{width:82px;height:82px;border-radius:50%;display:grid;place-items:center;background:repeating-radial-gradient(circle,#d9a1b9 0 3px,#eac1d2 3px 4px);grid-row:1/6;align-self:center;box-shadow:0 5px 10px #421d3014}.track-flower svg{width:46px;height:46px;border-radius:50%;background:var(--fl-card)}body[data-theme=rose] .track-flower{background:repeating-radial-gradient(circle,#120910 0 3px,#3d1d2b 3px 4px);border:1px solid #b38e5666}.track h3{font:27px Georgia;margin:0}.track p{margin:0;font-size:11px}.track .artist{font-size:8px;color:var(--fl-accent)}.track audio{width:100%;max-width:650px;height:35px;margin-top:11px;grid-column:2}.track a{grid-column:2;font-size:9px;margin-top:8px}#audioStatus{font-size:10px}.bouquet-section{text-align:center}.bouquet-section>p:not(.eyebrow){font-size:12px}.bouquet-stage{width:100%;max-width:900px;height:clamp(450px,70vw,710px);margin:20px auto 0;position:relative}#collectedBouquet{height:100%;width:100%}.crafted-bouquet{width:100%;height:100%;position:relative}.crafted-bouquet img{display:block;width:100%;height:93%;object-fit:contain;filter:drop-shadow(0 15px 25px #38152716);opacity:calc(.32 + var(--bouquet-progress)*.68);transition:opacity .8s,transform .8s}.crafted-bouquet.complete img{animation:bouquetReveal 1.2s ease both}.bouquet-edition{font-size:7px;letter-spacing:2px;color:var(--fl-accent);position:absolute;bottom:4px;left:0;right:0}.bouquet-progress{font-size:11px;color:var(--fl-accent)}@keyframes bouquetReveal{from{opacity:.3;transform:scale(.92)}to{opacity:1;transform:scale(1)}}.reward{max-width:660px;margin:25px auto;padding:26px;background:var(--fl-card);border:1px solid var(--fl-line);animation:arrive .7s}.reward h3{font:24px/1.6 Georgia;margin:15px 0 23px}.reward .primary{display:inline-block}.promise-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.promise-card{display:flex;flex-direction:column;align-items:center;gap:12px;padding:26px 17px;background:var(--fl-card);color:var(--fl-ink);border:1px solid var(--fl-line);font-weight:400;letter-spacing:0;line-height:1.8}.promise-card strong{font:23px Georgia}.promise-card>span:last-child{font-size:11px;color:var(--fl-muted)}.promise-symbol{font:34px Georgia;color:var(--fl-gold)}.promise-card.selected{background:var(--fl-soft);border-color:var(--fl-accent);box-shadow:0 0 0 2px var(--fl-line)}.promise-message{text-align:center;color:var(--fl-accent);font:italic 16px/1.8 Georgia;margin:24px auto 0}.letter-section{text-align:center}.envelope{display:block;position:relative;width:min(400px,94%);height:230px;margin:28px auto;background:var(--fl-card);border:1px solid var(--fl-line);box-shadow:0 20px 35px #3d17220c;color:var(--fl-ink);overflow:hidden}.envelope-flap{position:absolute;left:0;right:0;top:0;height:150px;background:var(--fl-soft);clip-path:polygon(0 0,100% 0,50% 100%);transform-origin:top;transition:transform .6s}.jewel-seal{position:absolute;top:82px;left:calc(50% - 31px);width:62px;height:62px;border:1px solid var(--fl-line);border-radius:50%;background:var(--fl-card);transition:opacity .5s}.envelope-label{position:absolute;left:0;right:0;bottom:29px;font-size:7px;letter-spacing:2px}.envelope.open .envelope-flap{transform:rotateX(180deg)}.envelope.open .jewel-seal{opacity:0}.love-letter{position:relative;max-width:650px;margin:25px auto;padding:40px;text-align:left;border:1px solid var(--fl-line);background:var(--fl-card);box-shadow:0 20px 50px #3813280c;animation:letterEmerges 1.1s ease both}.love-letter h3{font:29px Georgia;margin:20px 0}.love-letter #letterText{white-space:pre-wrap;color:var(--fl-ink);font:17px/2.1 Georgia}#signature{font:italic 22px Georgia;color:var(--fl-accent);margin-top:25px}.end-mark{padding-top:35px}.end-mark>div{width:65px;margin:auto}.end-mark p{font:20px/1.8 Georgia}.end-mark em{font-size:26px}.petal-sky{position:fixed;inset:0;pointer-events:none;z-index:90;overflow:hidden}.falling-petal{position:absolute;left:var(--start-x);top:-40px;width:var(--petal-size);height:calc(var(--petal-size)*1.6);background:linear-gradient(130deg,#fff5f2,#e1aec4 70%,#c486a6);border-radius:80% 15% 80% 15%;opacity:0;animation:petalFall var(--duration) linear both;animation-delay:var(--delay);box-shadow:inset 1px 0 3px #fff4}.falling-petal.rose{background:linear-gradient(130deg,#a62d50,#64162d,#340b1b)}@keyframes petalFall{0%{opacity:0;transform:translate(0,-30px) rotate(0)}8%{opacity:.8}30%{transform:translate(var(--swing),30vh) rotate(60deg)}65%{transform:translate(calc(var(--drift) - var(--swing)),65vh) rotate(170deg);opacity:.8}100%{transform:translate(var(--drift),110vh) rotate(var(--rotate));opacity:0}}.cast{display:flex;justify-content:center;gap:24px}.person{width:100px;transform-origin:50% 95%;flex-shrink:0}.person svg{display:block;width:100%;overflow:visible}.arm-front{transform-origin:30px 48px}.arm-back{transform-origin:64px 48px}.wave .arm-front{animation:wave .7s ease-in-out 2}.offering .arm-front{transform:rotate(-58deg)}@keyframes wave{50%{transform:rotate(95deg)}}.blooming svg{animation:jewelGlint .7s ease}@keyframes jewelGlint{50%{filter:brightness(1.3);transform:scale(1.05)}}@keyframes arrive{from{opacity:0;transform:translateY(30px)}to{opacity:1;transform:none}}@keyframes fadeAway{to{opacity:0;transform:scale(1.08)}}@keyframes letterEmerges{from{opacity:0;transform:translateY(70px) scale(.93)}to{opacity:1;transform:none}}.shake{animation:shake .35s}@keyframes shake{25%{transform:translateX(-6px)}75%{transform:translateX(6px)}}footer{position:relative;z-index:2;display:flex;justify-content:space-between;align-items:center;gap:20px;padding:27px 6vw;border-top:1px solid #a9876526;font-size:7px;letter-spacing:1px}dialog{background:var(--fl-card);color:var(--fl-ink);border:1px solid var(--fl-line);padding:38px 25px;max-width:min(740px,94vw);max-height:90svh;overflow:auto;box-shadow:0 25px 90px #1e071544}dialog::backdrop{background:#190c17b0;backdrop-filter:blur(7px)}.close{position:absolute;top:8px;right:8px;background:none;color:var(--fl-ink);border:0;font-size:25px;padding:2px 11px}#photo{max-width:100%;max-height:51svh;object-fit:contain;display:block}#photoTitle{font:28px Georgia;margin:24px 0 15px}#photoStory{white-space:pre-line;font-size:14px}.photo-nav{display:flex;justify-content:space-between;gap:15px}input,textarea,select{background:var(--fl-card);color:var(--fl-ink);border:1px solid var(--fl-line);border-radius:2px;padding:12px}[hidden]{display:none!important}
@media(max-width:950px){main{width:calc(100% - 100px)}.section{padding:50px 20px}.cover{padding:70px 55px 55px;min-height:75svh}.cover h1{font-size:clamp(45px,7vw,68px)}.lily-rail{width:240px}.rail-left{left:-140px}.rail-right{right:-140px}.album-collection{gap:22px}.album-caption strong{font-size:23px}.album-page{padding:12px}.secret-layout{gap:24px}.keepsake-box{width:235px;height:165px}.promise-cards{gap:14px}.promise-card strong{font-size:20px}.palace-backdrop i{width:50px}}
@media(max-width:620px){header{padding:20px 7vw;gap:13px;flex-wrap:wrap}.brand{font-size:10px;letter-spacing:2px}.theme-picker button{font-size:6px;padding:7px 9px}.studio-link{font-size:8px}main{width:calc(100% - 38px)}.cover{padding:67px 20px 47px;min-height:72svh}.cover:before{top:32px}.cover:after{bottom:17px}.cover h1{font-size:clamp(42px,10vw,59px);letter-spacing:-.8px;margin:21px auto}.cover .dedication{font-size:14px;max-width:290px}.cover .couple{font-size:8px}.cover .eyebrow{font-size:6px;letter-spacing:1.4px}.cover .sample-label{font-size:5px}.lily-rail{width:160px;height:410px;top:100px}.rail-left{left:-126px}.rail-right{right:-126px}.rail-sprig{height:190px}.sprig-0{top:0}.sprig-1{top:92px}.sprig-2{top:184px}.gate .rail-left{left:-94px}.gate .rail-right{right:-94px}.gate .lily-rail{top:8%}.gate-flower{width:48px;margin:15px auto}.gate .brand{margin-bottom:18px}.gate h1{font-size:31px}.story-strip{font-size:5px;letter-spacing:1px;gap:9px}.story-strip span:last-child{display:none}nav{gap:17px;padding:21px 6px}nav a{font-size:6px}.section{padding:42px 13px}.heading{gap:18px;margin-bottom:24px}.heading p:last-child{font-size:11px}.heading h2{font-size:34px}.chapter-ornament{width:49px;height:49px;font-size:26px}.story-timeline{grid-template-columns:1fr;gap:24px}.story-chapter p{font-size:11px}.story-chapter h3{font-size:22px}.album-collection{grid-template-columns:1fr;gap:22px;max-width:360px}.album-collection:before{left:17px;z-index:0}.album-page{padding:13px;transform:rotate(-.8deg);margin-left:17px}.album-page:nth-child(2n){transform:rotate(.8deg);margin-right:17px;margin-left:0}.album-caption strong{font-size:25px}.album-excerpt{min-height:auto}.garden-counter{padding:0}.garden-counter b{font-size:29px}.garden-counter span{font-size:5px}.picking-instruction{font-size:14px;line-height:1.7}.couple-cards{gap:13px}.couple-card{padding:20px 13px}.couple-crest{width:44px;margin-bottom:8px}.couple-portrait{min-height:130px}.couple-portrait .person{width:83px}.couple-card h3{font-size:24px}.couple-card>p{font-size:9px;line-height:1.9}.couple-traits small{font-size:7px}.couple-traits b{font-size:13px}.relationship-counters b{font-size:26px}.relationship-counters span{font-size:5px}.secret-layout{grid-template-columns:1fr;gap:16px}.bloom-stage{height:245px}.keepsake-box{width:250px;height:170px}.secret-note{padding:5px 0 22px}#secretMessage{font-size:22px;min-height:90px}.note-bottom{gap:5px}.note-bottom .text-button{font-size:7px}.heading-flower{width:54px}.quiz-box{padding:22px 19px}.quiz-box h3{font-size:24px}#quizOptions{grid-template-columns:1fr}.track{grid-template-columns:72px 1fr;gap:7px 17px}.track-flower{width:68px;height:68px}.track-flower svg{width:38px;height:38px}.track h3{font-size:23px}.track p{font-size:10px}.track .artist{font-size:7px}.bouquet-stage{height:115vw;min-height:400px;width:114%;margin-left:-7%}.bouquet-progress{font-size:10px}.bouquet-edition{font-size:6px}.promise-cards{grid-template-columns:1fr;gap:15px}.promise-card{padding:23px 20px}.promise-card strong{font-size:23px}.promise-card>span:last-child{font-size:11px}.envelope{height:210px}.love-letter{padding:27px 22px}.love-letter #letterText{font-size:16px}.palace-backdrop i{width:28px;left:1%}.palace-backdrop i:nth-child(2){right:1%}.palace-backdrop span{left:35%;width:30%}footer{flex-direction:column;align-items:flex-start;gap:6px;font-size:6px}.gate-content{max-width:320px}}
@media(max-height:700px){.gate-flower{width:40px;margin:12px auto}.gate h1{font-size:29px}.keypad{grid-template-columns:repeat(3,49px);gap:8px 22px}.keypad button{width:49px;height:49px;font-size:23px}.gate .brand{margin-bottom:13px}.gate .eyebrow{margin-bottom:10px}.dots{margin:15px 0 5px}#demoHint{margin:12px 0}.gate p{font-size:10px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.petal-sky{display:none}}

.jewel-strand{display:flex;justify-content:center;align-items:center;gap:13px;margin:15px auto 22px;max-width:340px;position:relative;z-index:1}.jewel-strand i{width:8px;height:8px;flex-shrink:0;border-radius:50%;background:radial-gradient(at 30% 25%,#fff,#fff7ec 35%,#d8c3c5 85%);box-shadow:1px 2px 3px #58394119}.jewel-strand b{font:25px Georgia;color:var(--fl-gold);font-weight:400}.jewel-strand i:nth-child(3n){width:6px;height:6px}body[data-theme=rose] .jewel-strand i{background:radial-gradient(at 30% 25%,#f3e0b5,#c29a57 55%,#6d512d 95%)}@media(max-width:620px){.jewel-strand{gap:10px;max-width:260px}.jewel-strand i{width:6px;height:6px}}
.blooming .crafted-bouquet img{animation:bouquetReveal 1.2s ease both}
/* Three overlapping blooms belong to the opening page and leave with its scroll. */
#site>.lily-rail{top:105px;height:70svh;max-height:620px}#site>.lily-rail .rail-sprig{height:54%}#site>.lily-rail .sprig-0{top:0}#site>.lily-rail .sprig-1{top:23%}#site>.lily-rail .sprig-2{top:46%}@media(max-width:620px){#site>.lily-rail{top:118px;height:62svh;max-height:460px}}
/* Three overlapping blooms on each side belong to the cover and scroll with it. */
.cover{min-height:max(730px,calc(100svh - 88px));padding:90px 130px 80px}.cover-copy{position:relative;z-index:3;max-width:620px;margin:auto}.cover .lily-rail{top:0;height:100%;width:350px;z-index:0;overflow:hidden;max-height:none}.cover .rail-left{left:-245px}.cover .rail-right{right:-245px}.cover .rail-sprig{height:70%;width:auto;max-width:none;object-fit:contain;filter:drop-shadow(0 7px 9px #43202b0b)}.cover .rail-left .rail-sprig{right:-45px}.cover .rail-right .rail-sprig{left:-45px}.cover .sprig-0{top:-9%;transform:rotate(-18deg)}.cover .sprig-1{top:20%;transform:rotate(12deg)}.cover .sprig-2{top:49%;transform:rotate(-10deg)}.cover .rail-right .sprig-0{transform:rotate(17deg)}.cover .rail-right .sprig-1{transform:rotate(-13deg)}.cover .rail-right .sprig-2{transform:rotate(10deg)}.gate .lily-rail{top:0;height:100%;width:330px;overflow:hidden}.gate .rail-sprig{height:70%;width:auto;max-width:none}.gate .rail-left .rail-sprig{right:-40px}.gate .rail-right .rail-sprig{left:-40px}.gate .sprig-0{top:-8%}.gate .sprig-1{top:21%}.gate .sprig-2{top:50%}.invitation-to{font:italic 16px/1.9 Georgia!important;color:var(--fl-accent)!important;margin:25px 0 20px!important}.cover h1{font-size:clamp(43px,5.4vw,72px);max-width:600px}.cover .couple{display:none}
/* Detached botanical petal artwork replaces the small geometric confetti. */
.falling-petal,.falling-petal.rose{top:-110px;width:var(--petal-size);height:var(--petal-size);background:none!important;border-radius:0;box-shadow:none;perspective:600px;opacity:0;animation:botanical-petal-fall var(--duration) linear both;animation-delay:var(--delay)}.falling-petal img{width:100%;height:100%;object-fit:contain;filter:drop-shadow(1px 4px 3px #34152012);animation:petal-roll 3s ease-in-out infinite alternate}.falling-petal.ivory-petal img{filter:saturate(.08) brightness(1.06) drop-shadow(1px 4px 3px #34152012)}@keyframes botanical-petal-fall{0%{opacity:0;transform:translate(0,-70px) rotate(-30deg)}9%{opacity:.78}30%{transform:translate(var(--swing),28vh) rotate(35deg)}68%{opacity:.75;transform:translate(calc(var(--drift) - var(--swing)),70vh) rotate(130deg)}100%{opacity:0;transform:translate(var(--drift),120vh) rotate(var(--rotate))}}@keyframes petal-roll{from{transform:rotateY(-25deg) rotateX(10deg)}to{transform:rotateY(45deg) rotateX(-18deg)}}
.florist-scene{text-align:center;padding-top:80px;padding-bottom:80px;background:radial-gradient(ellipse at center,var(--fl-soft),transparent 70%)}.florist-stage{position:relative;max-width:680px;margin:40px auto 25px;display:flex;align-items:flex-end;justify-content:center;gap:80px;min-height:260px}.florist-person .person{width:150px}.waiting-wrap{position:absolute;left:50%;bottom:3px;width:130px;height:200px;transform:translateX(-50%)}.satin-wrap{position:absolute;inset:70px 13px 0;background:linear-gradient(110deg,#ead1db,#fff2f4 50%,#d6aabd);clip-path:polygon(0 0,100% 0,80% 85%,50% 100%,20% 85%)}.empty-stem{position:absolute;left:55%;top:10px;width:3px;height:160px;background:#889d76;transform:rotate(12deg)}.empty-stem:before{content:'';position:absolute;width:24px;height:12px;top:45px;left:-21px;border-radius:100% 0 100% 0;background:#9ba784}.waiting-ribbon{position:absolute;left:23%;right:23%;bottom:37px;height:10px;background:#bd91a7;transform:rotate(-5deg)}body[data-theme=rose] .satin-wrap{background:linear-gradient(110deg,#22141e,#48313c 50%,#171015)}body[data-theme=rose] .waiting-ribbon{background:#c7a36c}.florist-introduction{max-width:630px;margin:25px auto;font:21px/1.85 Georgia;color:var(--fl-ink)}.florist-dialogue{font:italic 15px/1.8 Georgia;color:var(--fl-accent);max-width:650px;margin:25px auto}.chosen-flower-note{display:grid;grid-template-columns:100px 1fr;gap:22px;padding:22px 0;border-top:1px solid var(--fl-line);margin-top:22px;align-items:center;text-align:left}.chosen-flower-note img{width:100%;height:100px;object-fit:contain}.chosen-flower-note .eyebrow{margin-bottom:8px}.chosen-flower-note p:not(.eyebrow){font:18px/1.7 Georgia;color:var(--fl-ink);margin:0 0 10px}.chosen-flower-note span{font-size:9px;color:var(--fl-accent)}
.assembled-bouquet{position:relative;width:100%;height:100%;isolation:isolate}.bouquet-wrap{position:absolute;inset:0;width:100%;height:100%;z-index:1}.stem-bloom{position:absolute;left:var(--bx);top:var(--by);width:35%;aspect-ratio:1;transform:translate(-50%,-50%) rotate(var(--ba));z-index:calc(2 + var(--layer));animation:stem-arrive .8s ease both}.stem-bloom img{width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 5px 8px #3c183518);opacity:1!important}.assembled-bouquet.rose .stem-bloom{width:29%}.assembling-label{position:absolute;bottom:0;left:0;right:0;font:italic 14px/1.8 Georgia;color:var(--fl-accent)}@keyframes stem-arrive{from{opacity:0;translate:0 30px}to{opacity:1;translate:0 0}}.bouquet-stage{width:min(100%,1050px);height:min(85vw,820px);min-height:430px;margin:15px auto;position:relative}.bouquet-stage .crafted-bouquet img{height:100%;opacity:1}.giving-scene{max-width:650px;display:flex;justify-content:center;align-items:center;gap:35px;margin:35px auto 0}.giving-scene .person{width:95px}.giving-scene>p{font:italic 17px/1.9 Georgia;max-width:330px;color:var(--fl-accent)}.giving-scene.bouquet-given .arm-front{animation:give-bouquet 1.3s ease both}@keyframes give-bouquet{to{transform:rotate(-35deg)}}.ribbon-tag-input{display:grid;gap:10px;max-width:330px;margin:20px auto 18px;font-size:10px;color:var(--fl-accent)}.ribbon-tag-input input{padding:13px 15px;text-align:center;border:1px solid var(--fl-line);background:var(--fl-card);color:var(--fl-ink);font:italic 20px Georgia}.signed-tag{width:280px;padding:25px 25px 25px 38px;max-width:100%;margin:25px auto;background:var(--fl-card);border:1px solid var(--fl-line);font:italic 19px/1.7 Georgia;box-shadow:0 8px 20px #3010220b;position:relative;transform:rotate(-4deg)}.signed-tag:before{content:'';position:absolute;left:14px;top:calc(50% - 5px);width:9px;height:9px;border-radius:50%;border:1px solid var(--fl-gold);background:var(--fl-bg)}.signed-tag:after{content:'';position:absolute;left:-23px;top:50%;width:44px;height:3px;background:var(--fl-accent);transform:rotate(-22deg)}.ribbon-tied{animation:bouquetReveal 1s ease both}.envelope:after{content:'';position:absolute;left:calc(50% - 9px);top:0;bottom:0;width:18px;background:linear-gradient(90deg,#cfa4bb99,#ead1df,#b286a399);z-index:1;transition:transform 1.1s,opacity 1.1s}.envelope.open:after{transform:translateX(80px) rotate(20deg);opacity:0}.envelope-label,.jewel-seal{z-index:2}.envelope-label{position:relative}.story-chapter p{white-space:pre-line}
@media(max-width:900px){.cover{padding-inline:95px}.cover .lily-rail{width:280px}.cover .rail-left{left:-220px}.cover .rail-right{right:-220px}.florist-stage{gap:70px}.florist-person .person{width:130px}}
@media(max-width:620px){.cover{min-height:max(650px,calc(100svh - 85px));padding:75px 56px 65px}.cover .lily-rail{width:190px;top:0;height:100%}.cover .rail-left{left:-172px}.cover .rail-right{right:-172px}.cover .rail-sprig{height:70%;width:auto}.cover .rail-left .rail-sprig{right:-42px}.cover .rail-right .rail-sprig{left:-42px}.cover h1{font-size:43px}.cover .dedication{font-size:14px}.invitation-to{font-size:14px!important}.cover .primary{font-size:8px;padding:13px 14px}.gate .lily-rail{width:210px;height:100%;top:0}.gate .rail-left{left:-140px}.gate .rail-right{right:-140px}.florist-scene{padding:60px 18px}.florist-stage{gap:50px;min-height:210px;margin-top:28px}.florist-person .person{width:100px}.waiting-wrap{width:90px;height:155px}.florist-introduction{font-size:19px}.florist-dialogue{font-size:14px}.chosen-flower-note{grid-template-columns:75px 1fr;gap:15px}.chosen-flower-note img{height:80px}.chosen-flower-note p:not(.eyebrow){font-size:16px}.giving-scene{gap:15px}.giving-scene .person{width:62px}.giving-scene>p{font-size:14px}.bouquet-stage{height:125vw;min-height:420px;width:calc(100% + 50px);margin-left:-25px}.assembling-label{font-size:12px}.stem-bloom{width:38%}.assembled-bouquet.rose .stem-bloom{width:33%}.falling-petal{width:calc(var(--petal-size)*.85);height:calc(var(--petal-size)*.85)}}
@media(prefers-reduced-motion:reduce){.falling-petal{display:none}.stem-bloom,.giving-scene .arm-front{animation:none!important}}

#floristReceiver .person,#givingReceiver .person{transform:scaleX(-1)}.florist-scene .person svg{filter:drop-shadow(0 8px 10px #37252b0d)}.florist-stage .wave .arm-front{animation:wave .7s ease-in-out 2}
/* Let the cutout petals extend naturally past the former rail rectangle. */
.cover .lily-rail,.gate .lily-rail{overflow:visible;mask-image:linear-gradient(to bottom,#000 0%,#000 76%,transparent 100%);-webkit-mask-image:linear-gradient(to bottom,#000 0%,#000 76%,transparent 100%)}.cover-copy{background:radial-gradient(ellipse at center,var(--fl-bg) 0%,color-mix(in srgb,var(--fl-bg) 80%,transparent) 56%,transparent 78%);padding:35px 15px;isolation:isolate}body[data-theme=lily]{--fl-bg:#fff6f7;--fl-soft:#f2e0eb;background:radial-gradient(ellipse at 20% 15%,#f8e6f0,transparent 35%),radial-gradient(ellipse at 85% 60%,#f2e9f2,transparent 40%),#fff6f7}body[data-theme=lily] .cover:before{content:'';position:absolute;inset:0 -100px;width:auto;height:auto;background:linear-gradient(#fff6f760,#fff6f780),var(--lily-garden);background-size:cover;background-position:center;opacity:.58;z-index:0;mask-image:linear-gradient(transparent,#000 15%,#000 75%,transparent);font-size:0}body[data-theme=lily] .florist-scene{isolation:isolate;background:linear-gradient(#fff8fa80,#fff8fac0),var(--lily-garden);background-size:cover;background-position:center}.florist-introduction{max-width:650px;padding:20px;background:radial-gradient(ellipse,#fff9f5dd,transparent 80%)}body[data-theme=rose] .florist-introduction{background:radial-gradient(ellipse,#35151bdd,transparent 80%)}
/* Each photo is a palace window, or an ornate rose-gallery painting. */
.album-page,.album-page:nth-child(2n){padding:0;background:transparent;border:0;box-shadow:none;transform:none}.album-page:hover{transform:translateY(-4px);box-shadow:none}.album-photo-mount{display:block;position:relative;padding:7%;border:0;background:transparent;overflow:visible}.album-photo{aspect-ratio:3/4;max-height:520px;object-fit:cover;clip-path:polygon(0% 100%,0% 35%,5% 22%,16% 12%,32% 5%,50% 0%,68% 5%,84% 12%,95% 22%,100% 35%,100% 100%);border:0}.album-ornament{position:absolute;inset:0;display:block;pointer-events:none;z-index:2}.album-ornament>svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible;filter:drop-shadow(0 8px 9px #694b2b20)}.album-ornament .carved-frame{display:block}.album-caption{padding:20px 12px 12px;border-bottom:1px solid var(--fl-line);max-width:95%;margin:auto;text-align:center}.album-caption strong{font-size:27px}.album-open{margin-top:17px}.album-corner{display:none}body[data-theme=rose] .album-photo{aspect-ratio:4/3;clip-path:none}body[data-theme=rose] .album-photo-mount{padding:7%;background:linear-gradient(145deg,#aa8144,#e3c993,#7e5b2c)}.memory-photo-salon{position:relative;padding:7%;margin:15px auto 25px;max-width:680px}.memory-photo-salon #photo{width:100%;aspect-ratio:3/4;max-height:58vh;object-fit:cover;clip-path:polygon(0% 100%,0% 35%,5% 22%,16% 12%,32% 5%,50% 0%,68% 5%,84% 12%,95% 22%,100% 35%,100% 100%);border:0;margin:0}body[data-theme=rose] .memory-photo-salon{background:linear-gradient(145deg,#aa8144,#e3c993,#7e5b2c)}body[data-theme=rose] .memory-photo-salon #photo{clip-path:none;aspect-ratio:4/3}
/* Gemstone heart portraits keep the names and qualities outside the artwork. */
.couple-card{border:0;background:none;box-shadow:none;padding:10px 18px 30px}.couple-portrait{height:345px;position:relative;isolation:isolate}.heart-halo{position:absolute;inset:0;width:100%;height:100%;z-index:0;filter:drop-shadow(0 10px 15px #914b7118)}.heart-halo svg{width:100%;height:100%;overflow:visible}.couple-portrait .person{position:relative;z-index:1;width:135px;margin-top:20px}.couple-crest{width:60px;position:absolute;left:calc(50% - 30px);top:-5px;z-index:2}.couple-card h3{font-size:34px;margin-top:5px}.couple-traits{max-width:300px;margin:auto;padding:20px;border-block:1px solid var(--fl-line);background:linear-gradient(145deg,var(--fl-card),transparent)}.couple-card>p{max-width:300px;margin:12px auto 22px}.heart-halo{animation:heart-jewel-glow 4s ease-in-out infinite alternate}@keyframes heart-jewel-glow{to{filter:drop-shadow(0 5px 12px #dcbac98c)}}
/* Scroll moves the whole illustrated rig; sleeves stay with their arms. */
.person svg{transform:translateY(var(--scroll-lift,0px)) rotate(var(--scroll-lean,0deg));transform-origin:50% 95%}.person .arm-front{transform:rotate(var(--scroll-arm,0deg))}.person .arm-back{transform:rotate(calc(var(--scroll-arm,0deg)*-.55))}.person .benjamin-head{transform:rotate(var(--scroll-head,0deg));transform-origin:48px 40px}.wave .arm-front{animation:wave .7s ease-in-out 2}.bouquet-given .arm-front{animation:give-bouquet 1.3s ease both}
/* A satin-and-jewel keepsake box with a full-size burst of words and jewels. */
.bloom-stage{position:relative;overflow:visible}.keepsake-box{width:min(340px,90%);height:225px;border:4px double #bb91a6;border-radius:16px;box-shadow:inset 0 0 0 7px #ffedf140,0 23px 40px #4620311a;background:linear-gradient(125deg,#d79bb2,#f9dce7 45%,#e9bdd0);transform:perspective(900px) rotateY(-7deg) rotateX(5deg)}.keepsake-lid{height:68px;top:-20px;border:4px double #bd93a8;border-radius:12px 12px 5px 5px;background:linear-gradient(125deg,#fff1f6,#e7bfd2);box-shadow:inset 0 0 0 5px #fff3f780,0 9px 12px #7b4a6030}.gift-jewel{font-size:34px;top:8px}.keepsake-label{top:91px;z-index:1}.keepsake-label em{font-size:25px}.keepsake-ribbon{top:47px;width:33px;left:calc(50% - 16px);background:linear-gradient(90deg,#f5e2c4,#fff5df 45%,#d5b28a)}.keepsake-box:after{content:'';position:absolute;inset:12px;border:1px dashed #fff7e680;border-radius:10px;pointer-events:none}.keepsake-box.blooming .keepsake-lid{animation:lavish-box-open 1.5s ease both}.box-decoration{position:absolute;left:calc(50% - 44px);top:calc(50% - 23px);width:88px;height:80px;pointer-events:none;z-index:3;opacity:.75;display:none}.keepsake-box.blooming~.box-decoration{display:block;animation:small-jewel-pop 1.5s ease forwards}body[data-theme=rose] .keepsake-box{background:linear-gradient(125deg,#32121f,#6f2a43,#32121f);border-color:#ad8957;box-shadow:inset 0 0 0 7px #d5b87920,0 23px 40px #08040970}body[data-theme=rose] .keepsake-lid{background:linear-gradient(125deg,#75384d,#3c1929);border-color:#c29d61}body[data-theme=rose] .keepsake-ribbon{background:linear-gradient(90deg,#9b7844,#efd8a0,#9b7844)}body[data-theme=rose] .keepsake-label em{color:#ecd6a5}@keyframes lavish-box-open{0%{transform:translateY(0) rotateX(0)}40%,75%{transform:translateY(-90px) rotateX(40deg) rotate(-6deg)}100%{transform:translateY(-25px) rotateX(15deg)}}@keyframes small-jewel-pop{to{transform:translateY(-120px) scale(1.4);opacity:0}}#giftBurst{position:fixed;inset:0;z-index:95;pointer-events:none;overflow:hidden}.overflow-love-note{position:absolute;top:50%;left:50%;width:min(590px,82vw);background:linear-gradient(140deg,var(--fl-card),var(--fl-soft));border:1px solid var(--fl-line);box-shadow:0 0 0 6px #fff5ec30,0 20px 60px #4b213c20;padding:34px;text-align:center;color:var(--fl-ink);font:italic clamp(21px,3vw,31px)/1.7 Georgia;animation:love-overflow 5s ease both}.overflow-love-note:before{content:'✧';display:block;color:var(--fl-gold);font-size:28px;margin-bottom:8px}.overflow-jewel{position:absolute;top:var(--gy);left:var(--gx);color:var(--fl-gold);font-size:23px;text-shadow:0 0 6px #ffebc5;animation:jewel-overflow 3.1s ease-out both;animation-delay:var(--gd)}@keyframes love-overflow{0%{opacity:0;transform:translate(calc(-50% + var(--origin-x)),calc(-50% + var(--origin-y))) scale(.18) rotate(-8deg)}23%,76%{opacity:1;transform:translate(-50%,-50%) scale(1) rotate(0)}100%{opacity:0;transform:translate(-50%,-65%) scale(1.04)}}@keyframes jewel-overflow{0%{opacity:0;transform:translate(0,0) scale(.3)}15%{opacity:1}70%{opacity:1;transform:translate(var(--dx),var(--dy)) rotate(140deg) scale(1.2)}100%{opacity:0;transform:translate(var(--dx),calc(var(--dy) + 130px)) rotate(210deg) scale(.7)}}
/* A floral private recital and a filigree letter, rather than plain rows and paper. */
.recital-floral-header{position:relative;width:min(100%,720px);height:280px;margin:0 auto 28px;isolation:isolate}.recital-bloom{position:absolute;height:100%;width:46%;object-fit:contain;filter:drop-shadow(0 8px 12px #8c466915)}.recital-bloom.bloom-0{left:1%;top:18px;transform:rotate(-22deg);z-index:2}.recital-bloom.bloom-1{left:27%;top:-13px;z-index:1}.recital-bloom.bloom-2{right:1%;top:18px;transform:rotate(19deg);z-index:2}.recital-floral-header:after{content:'OUR PRIVATE RECITAL';position:absolute;left:15%;right:15%;bottom:-8px;text-align:center;font:9px Arial,sans-serif;letter-spacing:3px;color:var(--fl-accent);padding:16px;background:linear-gradient(90deg,transparent,var(--fl-card),transparent);z-index:3}.track{padding:27px 30px;margin-bottom:25px;border:1px solid var(--fl-line);background:radial-gradient(ellipse at 10% 20%,var(--fl-soft),transparent 50%),var(--fl-card);box-shadow:0 10px 25px #46203108}.track:before,.track:after{content:'✧';position:absolute;top:10px;left:12px;color:var(--fl-gold);font-size:15px}.track:after{left:auto;right:12px;top:auto;bottom:10px}.track-flower{width:78px;height:78px;box-shadow:0 0 0 5px var(--fl-card),0 0 0 6px var(--fl-line),0 10px 20px #452b3b12}.track-flower svg{width:50px;height:50px}.love-letter{padding:70px 68px;background:linear-gradient(135deg,var(--fl-card),var(--fl-soft));border:0;box-shadow:0 20px 60px #38132812;isolation:isolate}.letter-decoration{position:absolute;inset:0;z-index:-1;pointer-events:none}.letter-decoration svg{width:100%;height:100%;overflow:visible;filter:drop-shadow(0 5px 6px #79573815)}.love-letter h3{font-size:34px}.love-letter #letterText{font-size:18px;line-height:2.15}.love-letter:after{content:'✧  ·  ♡  ·  ✧';display:block;text-align:center;color:var(--fl-gold);margin-top:28px;font-size:18px;letter-spacing:12px}.envelope{border:4px double var(--fl-line);box-shadow:inset 0 0 0 10px var(--fl-card),inset 0 0 0 11px #b1916430,0 15px 40px #65304b15;background:linear-gradient(135deg,var(--fl-card),var(--fl-soft))}
/* Light, mist and petals accompany the bouquet's entrance. */
.bouquet-stage:before{content:'';position:absolute;inset:10% -8%;background:radial-gradient(ellipse,#fff3ec90,transparent 65%);filter:blur(25px);pointer-events:none}.crafted-bouquet img{filter:drop-shadow(0 15px 25px #38152716) saturate(.92) contrast(.95);mask-image:radial-gradient(ellipse,#000 60%,#000e 79%,transparent 100%)}.crafted-bouquet.complete img{animation:bouquet-dream-arrival 2.7s cubic-bezier(.18,.7,.25,1) both}.soft-unveil .crafted-bouquet{animation:bouquet-dream-arrival 2.7s cubic-bezier(.18,.7,.25,1) both}.soft-unveil:after{content:'';position:absolute;inset:0;background:radial-gradient(ellipse,#ffe9edc0,transparent 67%);pointer-events:none;animation:bouquet-mist-away 2.5s ease forwards}body[data-theme=rose] .bouquet-stage:before{background:radial-gradient(ellipse,#c0825438,transparent 66%)}body[data-theme=rose] .soft-unveil:after{background:radial-gradient(ellipse,#c58a6738,transparent 67%)}@keyframes bouquet-dream-arrival{0%{opacity:0;transform:translateY(50px) scale(.91);filter:blur(18px)}55%{opacity:.65;filter:blur(4px)}100%{opacity:1;transform:translateY(0) scale(1);filter:blur(0)}}@keyframes bouquet-mist-away{from{opacity:1}to{opacity:0}}
@media(max-width:760px){.couple-portrait{height:280px}.couple-portrait .person{width:108px}.couple-card{padding-inline:5px}.couple-card h3{font-size:30px}.couple-traits{padding:15px 10px}.album-caption strong{font-size:24px}.recital-floral-header{height:230px}.track{padding:24px 20px;gap:6px 20px}.love-letter{padding:60px 42px}.love-letter #letterText{font-size:17px}.keepsake-box{height:215px}.overflow-love-note{padding:26px}}
@media(max-width:620px){.couple-cards{gap:15px}.couple-portrait{height:230px}.couple-portrait .person{width:91px}.couple-crest{width:47px;left:calc(50% - 23px);top:-12px}.couple-card>p{font-size:10px}.couple-traits small{font-size:8px}.couple-traits b{font-size:14px}.recital-floral-header{height:180px}.track{grid-template-columns:65px 1fr;padding:22px 15px;gap:6px 18px}.track-flower{width:56px;height:56px}.track-flower svg{width:39px;height:39px}.track h3{font-size:24px}.love-letter{padding:55px 34px}.love-letter h3{font-size:29px}.love-letter #letterText{font-size:16px}.overflow-love-note{font-size:22px;padding:25px}.memory-photo-salon #photo{max-height:45vh}.album-photo{aspect-ratio:3/4}.cover-copy{padding-inline:0}.florist-introduction{padding:12px}}
@media(prefers-reduced-motion:reduce){.person svg,.person .arm-front,.person .arm-back,.person .benjamin-head{transform:none!important}.heart-halo,.crafted-bouquet.complete img,.soft-unveil .crafted-bouquet,.soft-unveil:after{animation:none!important}.overflow-love-note,.overflow-jewel{display:none}.crafted-bouquet img{filter:none}}
/* A rail mask also clips overflowing petals horizontally, so fade the last bloom itself. */
.cover .lily-rail,.gate .lily-rail{mask-image:none!important;-webkit-mask-image:none!important;overflow:visible!important}.cover .sprig-2{mask-image:linear-gradient(to bottom,#000 58%,transparent 93%);-webkit-mask-image:linear-gradient(to bottom,#000 58%,transparent 93%)}
/* Render the garden as actual images, not only beneath translucent backgrounds. */
.gate-garden-image{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center;z-index:-1;opacity:.78;pointer-events:none}.gate-content{background:#fff7f2e8;border:1px solid #d3b39470;box-shadow:0 18px 70px #845c7330;backdrop-filter:blur(7px);padding:28px 22px;border-radius:180px 180px 8px 8px}body[data-theme=rose] .gate-content{background:#271019e8;border-color:#b4925970;box-shadow:0 18px 70px #0006}body[data-theme=rose] .gate-garden-image{filter:brightness(.52) sepia(.15) saturate(.7);opacity:.75}.cover-garden-image{position:absolute;top:0;bottom:0;left:-70px;width:calc(100% + 140px);height:100%;object-fit:cover;object-position:center;opacity:1;z-index:0;pointer-events:none}.cover .lily-rail{z-index:1}.cover-copy{z-index:3;background:#fff7f2e6;box-shadow:0 10px 70px #a88a8030;padding:35px;border:1px solid #d7c09660;backdrop-filter:blur(5px);border-radius:8px}body[data-theme=lily] .cover:before{display:none}body[data-theme=rose] .cover-garden-image{filter:brightness(.56) sepia(.18) saturate(.72)}body[data-theme=rose] .cover-copy{background:#251019eb;border-color:#b18d5460;box-shadow:0 10px 70px #0005}.castle-garden-scene{position:relative;isolation:isolate;width:calc(100% + 140px);margin:0 0 0 -70px;overflow:hidden;border-block:1px solid #bc9c6733;z-index:2;background:#eee5d7}.castle-garden-scene>img{display:block;width:100%;height:auto;aspect-ratio:3/2;object-fit:cover;opacity:1;filter:none}.castle-garden-caption{position:absolute;left:8%;bottom:6%;color:#fff7e5;text-shadow:0 2px 16px #594625c0;z-index:2}.castle-garden-caption .eyebrow{color:#fff4d7;font-size:9px;margin-bottom:15px}.castle-garden-caption h2{font-size:clamp(40px,6vw,76px);color:#fff9ec;margin:0 0 15px}.castle-garden-caption em{color:#ffe3cd}.castle-garden-caption p:last-child{color:#fff1d4;font:italic 17px Georgia}.castle-garden-scene:after{content:'';position:absolute;inset:55% 0 0;background:linear-gradient(transparent,#36251685);pointer-events:none;z-index:1}body[data-theme=rose] .castle-garden-scene>img{filter:brightness(.76) sepia(.15) saturate(.78)}body[data-theme=rose] .castle-garden-scene:after{background:linear-gradient(transparent,#250911c0)}body[data-theme=rose] .castle-garden-caption em{color:#ebd199}@media(max-width:620px){.gate-content{padding:23px 20px;max-width:330px}.cover-copy{padding:25px 15px;width:calc(100% + 40px);margin-left:-20px}.cover-garden-image{left:-19px;width:calc(100% + 38px)}.castle-garden-scene{width:calc(100% + 38px);margin-left:-19px}.castle-garden-scene>img{aspect-ratio:4/5;object-position:55% center}.castle-garden-caption{left:8%;bottom:5%}.castle-garden-caption h2{font-size:44px}.castle-garden-caption p:last-child{font-size:14px}.castle-garden-caption .eyebrow{font-size:7px}}
/* Local flower rails continue from the recital to the letter, without fixing flowers over text. */
.lower-floral-scene{isolation:isolate}.lower-floral-scene>.lower-flower-rail{position:absolute;top:0;height:100%;width:230px;max-height:none;z-index:-1;pointer-events:none;overflow:visible;mask-image:none}.lower-floral-scene>.rail-left{left:-200px}.lower-floral-scene>.rail-right{right:-200px}.lower-flower-rail .rail-sprig{height:48%;width:auto;max-width:none;object-fit:contain;opacity:.88;filter:drop-shadow(0 8px 12px #9143630b)}.lower-flower-rail.rail-left .rail-sprig{right:-35px}.lower-flower-rail.rail-right .rail-sprig{left:-35px}.lower-flower-rail .sprig-0{top:0;transform:rotate(-18deg)}.lower-flower-rail .sprig-1{top:30%;transform:rotate(13deg)}.lower-flower-rail .sprig-2{top:60%;transform:rotate(-9deg);mask-image:linear-gradient(#000 58%,transparent 98%)}.lower-flower-rail.rail-right .sprig-0{transform:rotate(17deg)}.lower-flower-rail.rail-right .sprig-1{transform:rotate(-12deg)}.lower-flower-rail.rail-right .sprig-2{transform:rotate(10deg)}.lower-floral-scene{padding-inline:50px}.bloom-stage{display:flex;align-items:center;justify-content:center;width:100%;min-width:0;height:320px}.keepsake-box{width:min(340px,calc(100% - 40px));min-width:220px;flex:0 0 auto}.bloom-stage>.box-decoration{position:absolute}@media(max-width:620px){.lower-floral-scene{padding-inline:28px}.lower-floral-scene>.lower-flower-rail{width:140px}.lower-floral-scene>.rail-left{left:-160px}.lower-floral-scene>.rail-right{right:-160px}.lower-flower-rail .rail-sprig{opacity:.8}.keepsake-box{min-width:210px;width:min(300px,calc(100% - 30px))}}
/* A necklace locket replaces the collapsing keepsake box in both themes. */
.bloom-stage{height:445px;display:flex;align-items:center;justify-content:center}.heart-locket{position:relative;display:block;width:300px;max-width:90%;height:400px;padding:0;background:none;border:0;border-radius:0;box-shadow:none!important;color:var(--fl-accent);flex:0 0 auto;perspective:900px}.heart-locket:hover{transform:translateY(-4px);background:none}.locket-chain{position:absolute;top:0;left:0;right:0;height:140px;pointer-events:none}.locket-chain svg{width:100%;height:100%;overflow:visible;filter:drop-shadow(0 3px 2px #7a485d15)}.locket-case{position:absolute;top:120px;left:calc(50% - 135px);width:270px;height:253px;display:block;perspective:800px}.locket-interior,.locket-cover{position:absolute;inset:0;display:block;transform-origin:11% 50%;transform-style:preserve-3d;filter:drop-shadow(0 12px 13px #68364818)}.locket-heart-art{width:100%;height:100%;overflow:visible}.locket-cover{z-index:2;backface-visibility:hidden}.locket-inscription,.locket-monogram{position:absolute;left:20%;right:20%;top:40%;color:#7d5260;pointer-events:none;font:italic 20px/1.6 Georgia;text-align:center;letter-spacing:0}.locket-inscription em{display:block;color:#916c77;font-size:24px}.locket-monogram{font-size:40px;top:45%;color:#fff2e1;text-shadow:0 1px 2px #8f61715c}.locket-action-label{position:absolute;bottom:0;left:0;right:0;font:9px/1.8 Arial,sans-serif;letter-spacing:2px;text-align:center;color:var(--fl-accent)}.heart-locket.blooming .locket-cover{animation:locket-open 3.6s cubic-bezier(.25,.7,.3,1) both}.heart-locket.blooming .locket-action-label{animation:locket-label 3.6s ease both}.heart-locket:focus-visible{outline-offset:8px}body[data-theme=rose] .locket-inscription,body[data-theme=rose] .locket-inscription em{color:#6d463c}@keyframes locket-open{0%{transform:rotateY(0)}25%,78%{transform:rotateY(-112deg) rotate(-4deg)}100%{transform:rotateY(0)}}@keyframes locket-label{25%,80%{opacity:0}100%{opacity:1}}@media(max-width:620px){.bloom-stage{height:400px}.heart-locket{width:270px;height:355px}.locket-chain{height:122px}.locket-case{width:238px;height:224px;top:105px;left:calc(50% - 119px)}.locket-inscription{font-size:18px}.locket-inscription em{font-size:23px}.locket-monogram{font-size:34px}.bloom-stage>span{font-size:6px;bottom:4px}}@media(prefers-reduced-motion:reduce){.heart-locket.blooming .locket-cover{animation:none;transform:rotateY(-112deg)}.heart-locket.blooming .locket-action-label{animation:none}}

/* The rose garden has its own nighttime artwork. */
body[data-theme="rose"] .gate-garden-image,body[data-theme="rose"] .cover-garden-image,body[data-theme="rose"] .castle-garden-image{filter:none}

body[data-theme="rose"] .castle-garden-scene>img{filter:none}

/* Palace doors and the lily memory salon. */
.golden-memory-door,.album-jewels,.memory-salon-flowers{display:none}
body[data-theme=lily] .palace-album{position:relative;isolation:isolate;padding-inline:48px;background:radial-gradient(ellipse at center,#fffcf8 35%,#fae6ed88);border-block:1px solid #d5b98955}
body[data-theme=lily] .album-jewels{display:block;text-align:center;color:#b88c4b;font:26px Georgia;letter-spacing:22px;margin:0 0 26px}
.album-flower-rail{top:0;height:100%;width:240px;z-index:-1;mask-image:linear-gradient(transparent,#000 8%,#000 92%,transparent)}
.album-flower-rail.rail-left{left:-190px}.album-flower-rail.rail-right{right:-190px}.album-flower-rail .rail-sprig{height:46%;width:100%}.album-flower-rail .sprig-0{top:0}.album-flower-rail .sprig-1{top:29%}.album-flower-rail .sprig-2{top:57%}
body[data-theme=lily] .golden-memory-door{display:block;position:absolute;inset:7%;z-index:3;perspective:900px;filter:drop-shadow(0 6px 6px #8c622d40)}
.door-leaf{position:absolute;top:0;bottom:0;width:50%;transition:transform .65s ease;backface-visibility:hidden}.door-leaf svg{width:100%;height:100%;display:block}.door-left{left:0;transform-origin:left}.door-right{right:0;transform-origin:right}.door-right svg{transform:scaleX(-1)}.door-crown{position:absolute;left:0;right:0;top:0;text-align:center;color:#ffedbf;font-size:30px}.door-invitation{position:absolute;bottom:10%;left:0;right:0;text-align:center;color:#382713;font-size:8px;letter-spacing:2px;background:#fbe8bcb8;padding:8px 0;transition:opacity .3s}
body[data-theme=lily] .album-page:not(.album-opening) .album-photo{visibility:hidden}
body[data-theme=lily] .album-page.album-opening .door-left{transform:rotateY(-100deg)}body[data-theme=lily] .album-page.album-opening .door-right{transform:rotateY(100deg)}body[data-theme=lily] .album-page.album-opening .door-invitation{opacity:0}
body[data-theme=lily] #memoryDialog{width:min(860px,94vw);padding:36px clamp(46px,10vw,130px);background:radial-gradient(ellipse at center,#fffdf9 45%,#f6dfe9);overflow-x:hidden;isolation:isolate;border:1px solid #c9a567}
body[data-theme=lily] .memory-salon-flowers{display:block;position:absolute;top:80px;bottom:20px;width:140px;pointer-events:none;z-index:-1}.salon-left{left:-48px}.salon-right{right:-48px}.memory-salon-flowers img{position:absolute;width:150px;height:270px;object-fit:contain;filter:drop-shadow(0 5px 9px #9a607320)}.memory-salon-flowers img:first-child{top:0;transform:rotate(-20deg)}.memory-salon-flowers img:nth-child(2){top:225px;transform:rotate(17deg)}.salon-right img{transform:scaleX(-1) rotate(-18deg)!important}.memory-salon-flowers span{position:absolute;top:530px;left:65px;font:34px Georgia;color:#c8a568}
.memory-revealed #photo{animation:memorySoftReveal .6s ease both}@keyframes memorySoftReveal{from{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}
@media(max-width:620px){body[data-theme=lily] .palace-album{padding-inline:28px}.album-flower-rail{width:150px}.album-flower-rail.rail-left{left:-140px}.album-flower-rail.rail-right{right:-140px}body[data-theme=lily] #memoryDialog{padding:40px 38px 26px}.memory-salon-flowers{opacity:.65}.salon-left{left:-85px}.salon-right{right:-85px}.door-invitation{letter-spacing:1px;font-size:7px}}
@media(prefers-reduced-motion:reduce){.door-leaf{transition:none}.memory-revealed #photo{animation:none}}
