@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,400;0,500;0,600;1,400;1,500&family=DM+Sans:wght@400;500;600&display=swap');
:root{--paper:#fbf7f1;--ink:#55443f;--rose:#a96074;--muted:#907e74;--line:#e9ded3;--serif:"Cormorant Garamond",Georgia,serif}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:25px}body{margin:0;background:var(--paper);color:var(--ink);font:14px "DM Sans",Arial,sans-serif}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer}button:focus-visible,a:focus-visible{outline:2px solid var(--rose);outline-offset:6px}a{color:inherit;text-decoration:none}.grain{position:fixed;inset:0;z-index:10;pointer-events:none;opacity:.045;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%23877967' filter='url(%23n)' opacity='.7' d='M0 0h180v180H0z'/%3E%3C/svg%3E")}.header{max-width:1360px;margin:auto;padding:27px 6%;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.wordmark{font:italic 29px var(--serif);letter-spacing:-1px}.wordmark span{color:var(--rose);font:20px var(--serif);margin-left:6px}.header-note{font-size:9px;letter-spacing:2px;color:var(--muted)}.music{display:flex;align-items:center;gap:10px;border:1px solid #d9c8bd;border-radius:30px;background:transparent;padding:10px 16px;font-size:11px}.music-bars{display:flex;gap:3px;height:13px;align-items:center}.music-bars i{width:2px;height:6px;background:var(--rose);border-radius:2px}.music-bars i:nth-child(2){height:12px;animation-delay:.2s!important}.music-bars i:nth-child(3){height:9px;animation-delay:.4s!important}.music[aria-pressed=true] i{animation:equalizer .8s infinite alternate}.hero{max-width:1360px;min-height:730px;padding:45px 6% 85px;margin:auto;display:grid;grid-template-columns:1.05fr 1fr;align-items:center;position:relative}.eyebrow{font-size:9px;font-weight:500;letter-spacing:2.3px;color:var(--rose);display:flex;align-items:center;gap:10px}.eyebrow>span{width:23px;height:1px;background:var(--rose)}h1{font-family:var(--serif);font-size:clamp(46px,4.9vw,73px);line-height:1.09;font-weight:400;letter-spacing:-2px;margin:28px 0 23px}h1 em{color:var(--rose);font-weight:400}.title-star{font-size:32px;color:#cba77d;margin-left:14px;vertical-align:top}.intro{font-size:14px;line-height:1.9;color:#7e6a61;margin:0 0 17px}.small-wish{font-size:12px;line-height:1.9;color:#9b877c;margin:0 0 29px}.primary{border:0;border-radius:4px;background:var(--rose);color:#fff7f4;padding:17px 22px;font-size:12px;box-shadow:0 7px 20px #a9607415;transition:transform .25s,background .25s}.primary:hover{background:#925568;transform:translateY(-3px)}.primary span{margin-left:28px;font-size:18px}.hand-note{font:italic 17px var(--serif);color:#ab9181;margin:15px 0 0 20px}.hand-note span{display:inline-block;margin-left:20px;font-size:29px;transform:rotate(-20deg)}.bouquet-scene{position:relative;min-width:0;text-align:center;align-self:center}.halo{position:absolute;inset:6% 1% 10%;border-radius:50%;background:radial-gradient(ellipse,#f3d8d6 0,#f4e1db77 45%,#f6e8de00 72%);filter:blur(10px)}#bouquet{width:112%;margin-left:-6%;height:auto;position:relative;overflow:visible;animation:sway 7s ease-in-out infinite;transform-origin:50% 85%}.flower-label{position:absolute;right:-5px;top:65px;z-index:1;text-align:left;transform:rotate(8deg);font:italic 17px/1.4 var(--serif);color:#ad8c7e}.flower-label em{font-size:13px}.bouquet-touch{position:absolute;inset:16% 11% 19%;border:0;background:transparent;border-radius:50%;touch-action:manipulation}.bouquet-touch:hover~.bouquet-caption{color:var(--rose)}.bouquet-caption{font-size:10px;color:#a28a7e;letter-spacing:.3px;margin-top:-20px;position:relative;pointer-events:none}.bouquet-caption span{font-size:17px;margin-right:7px}.floating-star{position:absolute;color:#c4a276}.star-one{left:30px;top:120px;font-size:35px}.star-two{right:30px;bottom:140px;font-size:19px;animation:twinkle 3s infinite}.flower-message{position:absolute;left:10%;right:10%;bottom:60px;background:#fffcf4ed;border:1px solid #e5c6ce;box-shadow:0 8px 30px #a9607415;padding:15px 20px;border-radius:8px;font:italic 21px var(--serif);opacity:0;transform:translateY(10px);transition:.4s;pointer-events:none}.flower-message.show{opacity:1;transform:translateY(0)}.scroll-hint{position:absolute;bottom:27px;left:0;right:0;display:flex;flex-direction:column;align-items:center;gap:12px;color:#a38e81;font-size:8px;letter-spacing:2px}.scroll-hint>span:last-child{font-size:20px}.little-things{max-width:1180px;margin:0 auto;padding:45px 30px 70px;border-top:1px solid var(--line);text-align:center}.section-top{display:flex;justify-content:space-between;align-items:center}.section-top .eyebrow{font-size:8px}.tiny-flower{font-size:25px;color:#c39b98}.edition{font:italic 16px var(--serif);color:#a48f7e}h2{font:400 42px/1.15 var(--serif);letter-spacing:-.6px;margin:28px 0 12px}h2 em{color:var(--rose);font-weight:400}.section-desc{font-size:11px;color:var(--muted);line-height:1.8;margin-bottom:32px}.gift-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.gift{border:1px solid #e9dcd1;background:#f7f0e6;padding:27px 27px 22px;text-align:left;border-radius:4px;position:relative;transition:transform .3s,box-shadow .3s}.gift:hover{transform:translateY(-7px);box-shadow:0 15px 35px #906f5e12}.gift-two{background:#f8eae8}.gift-three{background:#f0f0e6}.gift-number{font-size:8px;letter-spacing:1.6px;color:#9c8674}.gift-art{height:105px;display:flex;align-items:center;justify-content:center;font-family:var(--serif);font-size:65px;color:#b59b63;font-weight:400}.hearts{color:#bf8794;font-size:78px;transform:rotate(-12deg)}.hearts small{font-size:45px;transform:rotate(30deg);margin:25px 0 0 -10px}.envelope{font-size:66px;color:#9b9e7d;transform:rotate(-9deg)}.gift h3{font:400 26px var(--serif);margin:10px 0}.gift p{font-size:10px;line-height:1.8;color:#927e73;margin:0 0 25px}.gift-link{display:flex;justify-content:space-between;border-top:1px solid #d6c7ba80;padding-top:15px;font-size:10px;color:#8c7067}.gift-link b{font-weight:400;font-size:17px}.closing{text-align:center;padding:35px 20px 65px;background:radial-gradient(ellipse at bottom,#f4e1df99,transparent 65%)}.closing>span:first-child{font-size:32px;color:#c0a17c}.closing p{font:400 32px/1.4 var(--serif)}.closing em{color:var(--rose)}.closing-note{font-size:8px;letter-spacing:2px;color:#a78a7b}.date{font:32px var(--serif);margin-top:17px;letter-spacing:5px}.date i{font-size:20px;color:var(--rose);font-style:normal}footer{margin:0 6%;border-top:1px solid var(--line);padding:25px 0;display:flex;align-items:center;justify-content:space-between;gap:20px}footer>span,footer button{font-size:9px;color:#9a8376}footer button{background:transparent;border:0;padding:10px}#petals{position:fixed;inset:0;pointer-events:none;overflow:hidden;z-index:15}.petal{position:absolute;top:-40px;width:10px;height:16px;background:linear-gradient(140deg,#f3c2ca,#e7aab8);border-radius:80% 10% 70% 20%;opacity:.55;animation:fall linear forwards}.burst{position:fixed;pointer-events:none;z-index:100;color:#ca859a;font-family:var(--serif);animation:burst 1.6s ease-out forwards}
dialog{width:min(540px,calc(100% - 32px));max-height:85dvh;overflow-y:auto;border:1px solid #e7d1bf;background:#fffaf2;color:var(--ink);padding:40px 42px 25px;border-radius:8px;box-shadow:0 25px 100px #5f3a3e26}dialog::backdrop{background:#69504c66;backdrop-filter:blur(7px)}dialog[open]{animation:letter-in .4s ease-out}.close{position:absolute;top:12px;right:14px;width:38px;height:38px;border:0;background:transparent;font-size:27px;color:#ab8b7e}.letter-decoration{font:36px var(--serif);color:var(--rose);text-align:center;margin-bottom:15px}dialog .eyebrow{justify-content:center;font-size:8px}dialog h2{font-size:34px;margin-top:24px}.letter-body{font:16px/1.9 var(--serif);min-height:160px;white-space:pre-line}.signature{font:italic 19px var(--serif);text-align:right;color:var(--rose);margin-top:25px}.signature span{display:block;font-size:28px;margin-top:8px}.skip{border:0;border-bottom:1px solid #d6b3b8;padding:5px 0;background:transparent;color:#ab7886;font-size:10px;margin-top:10px}
@keyframes sway{0%,100%{transform:rotate(-1.2deg)}50%{transform:rotate(1.2deg)}}@keyframes twinkle{50%{opacity:.3;transform:scale(.85)}}@keyframes equalizer{to{height:3px}}@keyframes fall{to{transform:translate(var(--drift),110vh) rotate(450deg)}}@keyframes burst{to{transform:translate(var(--x),var(--y)) rotate(var(--r));opacity:0}}@keyframes letter-in{from{opacity:0;transform:translateY(20px) scale(.97)}to{opacity:1;transform:none}}
@media(min-width:1500px){.hero{min-height:800px}}
@media(max-width:800px){.header{padding:20px 6%}.header-note{display:none}.hero{padding:45px 7% 80px;grid-template-columns:1fr;min-height:0}.hero-copy{text-align:center}.hero-copy .eyebrow{justify-content:center;font-size:8px;letter-spacing:1.6px}h1{font-size:57px;margin-top:23px}.intro{font-size:13px}.small-wish{font-size:11px;margin-bottom:23px}.hand-note{margin-left:0}.bouquet-scene{width:min(460px,100%);margin:-5px auto 20px}.flower-label{right:0;top:45px;font-size:15px}.bouquet-caption{font-size:9px;margin-top:-14px}.star-one{top:75px;left:15px}.scroll-hint{bottom:23px}.little-things{margin:0 6%;padding:30px 0 45px}.section-top .eyebrow{font-size:7px;letter-spacing:1px}.edition{font-size:13px}.tiny-flower{font-size:20px}h2{font-size:34px}.section-desc{font-size:11px;padding:0 15px}.gift-grid{grid-template-columns:1fr;gap:15px}.gift{padding:23px 25px}.gift-art{position:absolute;right:25px;top:25px;width:65px;height:65px;font-size:50px}.hearts{font-size:60px}.hearts small{font-size:32px}.gift h3{margin-top:24px;font-size:28px;padding-right:50px}.gift p{padding-right:50px;font-size:11px}.gift-link{font-size:11px}.closing{padding:20px 20px 45px}.closing p{font-size:29px}footer{flex-wrap:wrap;justify-content:center;gap:12px;padding:23px 0}footer .wordmark{width:100%;text-align:center}footer>span{font-size:9px}footer button{min-height:44px}.music{min-height:40px}}
@media(max-width:380px){h1{font-size:47px}.hero-copy .eyebrow{font-size:7px}.gift h3{font-size:25px}dialog{padding:35px 24px 22px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}.petal,.burst{display:none}}
