@import url('https://fonts.googleapis.com/css2?family=Caveat:wght@500;600;700&family=Nunito:wght@400;500;600;700;800;900&display=swap');

:root{--paper:#fffaf5;--green:#52775d;--ink:#405443;--pink:#f7cbd8;--rose:#b95f80;--muted:#7f8577;--line:#e7e6d8}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:35px}body{margin:0;color:var(--ink);font:14px/1.6 'Nunito',sans-serif;background-color:var(--paper);background-image:radial-gradient(#c9d3bb70 .85px,transparent .85px);background-size:20px 20px}button,input,textarea,select{font:inherit}button,a,input,textarea,select{outline-offset:5px}button{cursor:pointer}a{color:inherit;text-decoration:none}button,a{ -webkit-tap-highlight-color:transparent}button{transition:transform .2s,background .2s,box-shadow .2s}button:active{transform:translateY(2px)!important}button:disabled{opacity:.55;cursor:wait}a:focus-visible,button:focus-visible{outline:3px solid #bd7194}header{max-width:1130px;margin:22px auto 0;min-height:76px;display:flex;align-items:center;justify-content:space-between;padding:15px 30px;border:1px solid #ece9dd;border-radius:24px;background:#fffdf9e8;box-shadow:0 5px 0 #e8eadf80;gap:20px}.brand{font:800 22px 'Nunito',sans-serif;letter-spacing:-.8px;white-space:nowrap}.brand span{display:inline-block;color:var(--rose);margin:0 6px;font-family:'Caveat',cursive;font-size:30px;vertical-align:-2px}nav{display:flex;gap:28px;font-size:12px;font-weight:800}nav a{transition:color .2s}nav a:hover{color:var(--rose)}.pill{background:#edf2e6;border-radius:30px;padding:9px 14px;font-size:9px;letter-spacing:1px;white-space:nowrap;font-weight:800}.pill i{display:inline-block;width:6px;height:6px;border-radius:50%;background:#86a174;margin-right:7px}.hero{position:relative;max-width:1130px;margin:auto;padding:65px 40px 65px;display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:32px}.eyebrow{font-size:10px;letter-spacing:2px;color:var(--green);font-weight:900}.hero .eyebrow{display:inline-block;background:#fbe4eb;padding:7px 15px;border:1px solid #f2cbd8;border-radius:20px;transform:rotate(-3deg);font-size:9px;letter-spacing:1.3px}.hero h1{font:900 clamp(40px,4.5vw,63px)/1.15 'Nunito',sans-serif;letter-spacing:-2.8px;margin:26px 0 20px}.hero h1 em{position:relative;display:inline-block;color:var(--rose);font:700 1.22em/.95 'Caveat',cursive;letter-spacing:-2px;padding:0 5px 8px;isolation:isolate}.hero h1 em:after{content:'';position:absolute;z-index:-1;bottom:2px;left:0;width:100%;height:14px;background:#f9dce4;border-radius:50%;transform:rotate(-2deg)}.hero-copy>p{max-width:330px;color:#7c8274;font-size:14px;line-height:1.9}.primary{background:var(--green);color:#fffdf7;border:2px solid var(--green);border-radius:17px;padding:13px 22px;font-size:12px;font-weight:800;display:inline-flex;align-items:center;gap:23px;box-shadow:0 4px 0 #35563b}.primary:hover{background:#648869;box-shadow:0 6px 0 #35563b;transform:translateY(-2px)}.hero .primary{margin-top:16px}.primary span{font-size:20px;line-height:1}.tiny{font:600 21px 'Caveat',cursive;color:#8b997c;margin-top:23px;transform:rotate(-2deg)}.collage{position:relative;min-width:0;height:420px;display:grid;place-items:center}.scrapbook{position:relative;width:350px;max-width:90%;padding:17px 17px 8px;background:#fffdfb;border:1px solid #eaded9;border-radius:9px;transform:rotate(4deg);box-shadow:8px 11px 0 #eedbdc70,0 15px 35px #805e6b0b}.scrapbook:before{content:'';position:absolute;z-index:-1;inset:-20px 18px 12px -18px;border:1px solid #c9d7be;background:repeating-linear-gradient(0deg,transparent 0 24px,#bed0b34a 24px 25px),#e5eddc;border-radius:7px;transform:rotate(-10deg)}.couple-art{display:block;width:100%;height:auto;background:#fbe9ee;border-radius:5px}.scrapbook-caption{font:600 28px 'Caveat',cursive;text-align:center;color:var(--green);padding:10px 0 6px;margin:0}.tape{position:absolute;z-index:2;top:-15px;left:calc(50% - 46px);width:92px;height:30px;background:repeating-linear-gradient(90deg,#eed99eb5 0 9px,#f5e6b6c4 9px 18px);clip-path:polygon(3% 0,100% 5%,96% 23%,100% 45%,96% 64%,100% 85%,97% 100%,0 94%,4% 72%,0 50%,4% 24%);transform:rotate(-7deg)}.sticker{position:absolute;z-index:3;user-select:none;pointer-events:none}.sticker-heart{top:1px;right:10px;color:#d4809f;font-size:59px;transform:rotate(15deg);text-shadow:2px 3px #fff}.sticker-flower{width:67px;height:67px;bottom:26px;left:-5px;transform:rotate(-12deg);filter:drop-shadow(0 3px 0 #d7dfc4)}.sticker-spark{color:#96a77f;font-size:35px;left:2px;top:42px}.sticker-note{right:-6px;bottom:6px;background:#f8e6ab;border-radius:4px;padding:9px 15px;box-shadow:2px 3px 0 #e4cd8d6b;transform:rotate(-9deg);font:600 22px 'Caveat',cursive;color:#8c7951}.ribbon{max-width:1050px;margin:0 auto;position:relative;background:#e9efdf;border:1px dashed #a8bb98;border-radius:20px;display:flex;justify-content:center;gap:32px;align-items:center;padding:19px 25px;box-shadow:0 5px 0 #e7ebdd77}.ribbon:before,.ribbon:after{content:'✿';font-size:20px;color:#bd7990}.ribbon span{font-size:12px;font-weight:800}.ribbon b{font-size:16px;color:#bb7991}.date-edit{background:none;border:0;color:var(--rose);font-size:12px;font-weight:800;text-decoration:underline;text-underline-offset:4px}.section{max-width:1130px;margin:auto;padding:60px 40px}.section-head{display:flex;justify-content:space-between;align-items:center;gap:20px}.section h2{font:900 32px/1.2 'Nunito',sans-serif;letter-spacing:-1px;margin:10px 0}.section-head h2:after{content:' ♡';color:#d294a6;font-family:'Caveat',cursive}.section-head p{color:var(--muted);font-size:12px;margin-bottom:0}.outline{background:#fff7fa;border:1px solid #e6b7c7;border-radius:14px;padding:12px 18px;color:#a85e7c;font-size:11px;font-weight:800;box-shadow:0 3px 0 #f1d6df}.outline:hover{background:#fbe6ed;transform:translateY(-2px)}.filters{display:flex;gap:9px;margin:26px 0}.filter{background:#fffdf8;border:1px solid #e0e4d6;border-radius:12px;padding:8px 17px;color:#7b8374;font-size:11px;font-weight:800}.filter.active{background:#e1ebd6;border-color:#abc09b;color:#4f704b;box-shadow:0 2px 0 #c7d6b8}.filter:hover{transform:translateY(-2px)}.memories{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:25px}.empty{grid-column:1/-1;position:relative;overflow:hidden;background:#fff1f5;border:2px dashed #ebbacb;padding:34px 25px 35px;text-align:center;border-radius:24px}.empty:before,.empty:after{position:absolute;color:#efc4d2;font-size:60px;line-height:1;pointer-events:none}.empty:before{content:'♡';left:8%;top:30px;transform:rotate(-20deg)}.empty:after{content:'✧';right:8%;bottom:30px;transform:rotate(15deg)}.empty .flower{display:grid;place-items:center;width:58px;height:58px;margin:0 auto;background:#fffaf6;border:1px solid #f4d5df;border-radius:20px;font-size:34px;color:#c7849d;transform:rotate(-7deg)}.empty h3{font:900 21px 'Nunito',sans-serif;margin:15px 0 9px;letter-spacing:-.5px}.empty p{color:#9a7f8b;font-size:12px;line-height:1.9;max-width:365px;margin:0 auto 18px}.empty .outline{background:#fffdf9}.memory{min-width:0;background:#fffdfb;padding:11px 11px 18px;border-radius:16px;box-shadow:0 6px 0 #e7e8d980;border:1px solid #e9e3dc;position:relative;transition:transform .2s;overflow-wrap:anywhere}.memory:nth-child(3n+1){transform:rotate(-1deg)}.memory:nth-child(3n+2){transform:rotate(1deg)}.memory:hover{transform:translateY(-5px) rotate(0)}.memory img{width:100%;height:220px;object-fit:cover;border-radius:9px}.memory .no-photo{height:170px;display:grid;place-items:center;background:radial-gradient(circle at 30% 35%,#fce5ee,transparent 60%),#e7efdc;border-radius:9px;font:65px 'Caveat',cursive;color:#bc7f95}.memory time{font-size:9px;letter-spacing:1px;color:#97a287;display:block;margin:17px 9px 9px;font-weight:900}.memory h3{font:900 20px 'Nunito';letter-spacing:-.5px;margin:0 9px 9px}.memory p{font-size:12px;line-height:1.8;color:var(--muted);white-space:pre-wrap;margin:0 9px 16px}.memory .tag{font-size:10px;color:#ab6b84;background:#fce8ef;padding:5px 10px;border-radius:10px;margin-left:9px;font-weight:800}.remove{float:right;border:0;background:transparent;color:#989588;font-size:10px;margin-right:8px}.bottom-grid{display:grid;grid-template-columns:1fr 1fr;gap:28px;padding-top:0}.letter,.wishes{position:relative;padding:32px;border-radius:22px;border:1px solid #e9c6d3;box-shadow:0 5px 0 #efdce480;min-width:0}.letter{background:repeating-linear-gradient(0deg,transparent 0 29px,#d996b51a 29px 30px),#fce9f0;transform:rotate(-1deg)}.letter:before{content:'♡';position:absolute;right:24px;top:12px;color:#dc9fb6;font:45px 'Caveat';transform:rotate(15deg)}.letter .eyebrow{color:#a66e89}.letter h2,.wishes h2{font-size:26px;letter-spacing:-1px}.letter p{font:600 25px/1.4 'Caveat',cursive;color:#a36f87;max-width:350px;overflow-wrap:anywhere;white-space:pre-wrap;min-height:108px}.letter .signature{font:600 26px 'Caveat',cursive;text-align:right;color:#b67392}.wishes{background:#ecf2e3;border-color:#ccd9bd;box-shadow:0 5px 0 #dce5d280;transform:rotate(1deg)}.wishes:before{content:'✧';position:absolute;right:25px;top:15px;font-size:34px;color:#98af80}.wish-row{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px dashed #c8d5b7;font-size:12px}.wish-row input{accent-color:var(--green);width:17px;height:17px;flex-shrink:0}.wish-row.completed span{text-decoration:line-through;opacity:.6}.wish-row span{flex:1;overflow-wrap:anywhere}.wish-row button{border:0;background:none;color:#8c9c7d;font-size:18px}.wish-form{display:flex;margin-top:20px;gap:8px}.wish-form input{min-width:0;flex:1;background:#fffdf9c9;border:1px solid #d2ddc5;padding:11px 13px;border-radius:12px;font-size:11px;color:var(--green)}.wish-form button{border:1px solid #5d7a51;background:#6e8c60;color:white;border-radius:12px;min-width:39px;font-size:20px;box-shadow:0 2px 0 #49613f}.small-muted{font-size:10px;color:var(--muted);line-height:1.7}.tools{display:flex;gap:15px;align-items:center;flex-wrap:wrap;padding:15px 20px;background:#f5f3eabf;border:1px solid #eee9dc;border-radius:15px}.tools button{border:0;background:none;color:var(--green);padding:0;font-size:10px;font-weight:800;text-decoration:underline;text-underline-offset:3px}footer{max-width:1050px;margin:0 auto;padding:26px 0 32px;border-top:1px dashed #d8dfcc;display:flex;align-items:center;justify-content:space-between;color:#949982;font-size:11px}footer .love{color:#c985a1}.footer-note{font:600 20px 'Caveat',cursive}dialog{width:480px;max-width:calc(100% - 28px);max-height:90dvh;overflow-y:auto;border:1px solid #e5bfce;background:var(--paper);border-radius:26px;padding:30px;color:var(--ink);box-shadow:0 15px 70px #3c493326}dialog::backdrop{background:#53604555;backdrop-filter:blur(6px)}dialog h2{font:900 25px 'Nunito';letter-spacing:-.7px;margin:0 0 20px}.form-head{display:flex;justify-content:space-between;gap:10px}.close{border:0;background:#f9e4ec;border-radius:50%;width:30px;height:30px;font-size:22px;color:var(--rose);align-self:start;line-height:1}.field{display:block;margin:15px 0;font-size:11px;font-weight:800}.field input,.field textarea,.field select{display:block;margin-top:7px;width:100%;min-width:0;border:1px solid #dbe0d0;border-radius:12px;padding:11px;background:#fffefa;color:var(--ink);font:13px 'Nunito'}.field input:focus,.field textarea:focus,.field select:focus{outline:2px solid #b6c9a3;border-color:transparent}textarea{resize:vertical;min-height:95px}.error{color:#a24d70;font-size:12px;line-height:1.6}#toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);padding:13px 22px;background:var(--green);color:white;border:2px solid #d4e1c7;border-radius:18px;box-shadow:0 5px 20px #3a4d3526;z-index:10;max-width:90%;width:max-content;font-size:12px}.hidden{display:none!important}.heart-pop{position:fixed;z-index:20;pointer-events:none;color:#cd83a1;font:28px 'Nunito';animation:heart-rise 1.3s ease-out forwards}@keyframes heart-rise{from{opacity:1;transform:translate(-50%,0) scale(.7) rotate(-15deg)}to{opacity:0;transform:translate(-50%,-90px) scale(1.3) rotate(15deg)}}@media(prefers-reduced-motion:no-preference){.sticker-heart{animation:little-sway 4s ease-in-out infinite}.sticker-flower{animation:flower-sway 6s ease-in-out infinite}@keyframes little-sway{50%{transform:translateY(-7px) rotate(6deg)}}@keyframes flower-sway{50%{transform:rotate(6deg)}}} @media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.heart-pop{display:none}}
@media(min-width:1450px){.hero{padding-top:85px;padding-bottom:85px}}
@media(max-width:1150px){header{margin:18px 25px 0}.ribbon{margin:0 40px}footer{margin:0 40px}}
@media(max-width:850px){header{padding:13px 22px}.pill{display:none}.hero{padding:48px 35px;gap:15px}.hero h1{font-size:46px}.collage{height:365px}.scrapbook{width:300px}.sticker-note{right:0;bottom:0}.sticker-heart{right:-5px}.ribbon{gap:18px;margin:0 30px}.ribbon:after{display:none}.section{padding:45px 30px}.bottom-grid{padding-top:0;gap:20px}.letter,.wishes{padding:27px}.letter h2,.wishes h2{font-size:23px}.memories{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:650px){header{margin:14px 16px 0;min-height:68px;padding:12px 18px;border-radius:20px;gap:10px}.brand{font-size:18px}.brand span{font-size:25px;margin:0 3px}nav{gap:14px;font-size:10px}nav a:nth-child(2){display:none}.hero{grid-template-columns:1fr;padding:42px 25px 35px;gap:14px}.hero-copy{text-align:center}.hero .eyebrow{font-size:8px}.hero h1{font-size:clamp(38px,9.5vw,54px);letter-spacing:-2px;margin:23px 0 20px}.hero-copy>p{margin:0 auto;max-width:300px;font-size:13px}.hero .primary{margin-top:22px}.tiny{font-size:20px;margin-top:20px}.collage{width:350px;max-width:100%;height:365px;margin:0 auto}.scrapbook{width:286px}.scrapbook-caption{font-size:25px}.sticker-heart{font-size:50px;right:3px;top:20px}.sticker-spark{left:0;top:38px}.sticker-flower{bottom:28px;left:0;width:58px;height:58px}.sticker-note{right:0;bottom:12px;font-size:21px}.ribbon{gap:9px 15px;padding:17px 15px;margin:0 20px;flex-wrap:wrap;border-radius:18px}.ribbon span{font-size:11px}.ribbon>span:first-child{display:none}.ribbon b{display:none}.ribbon:before{font-size:18px}.ribbon .date-edit{font-size:10px}.section{padding:38px 22px}.section h2{font-size:28px}.eyebrow{font-size:8px;letter-spacing:1.5px}.section-head{gap:10px}.section-head p{font-size:11px}.section-head .outline{padding:10px 12px;white-space:nowrap;font-size:10px;border-radius:12px}.filters{gap:7px;flex-wrap:wrap;margin:22px 0}.filter{padding:8px 12px;font-size:10px}.empty{padding:27px 18px}.empty h3{font-size:20px}.empty:before{left:3%;font-size:40px}.empty:after{right:3%;font-size:40px}.empty p{font-size:11px;max-width:260px}.memories{gap:17px}.memory img{height:155px}.memory h3{font-size:17px}.memory p{font-size:11px}.bottom-grid{grid-template-columns:1fr;padding-top:0;gap:25px}.letter,.wishes{padding:28px}.letter h2,.wishes h2{font-size:25px}.letter p{min-height:80px}.tools{gap:12px;padding:14px}footer{margin:0 22px;padding:20px 0 27px;gap:15px}.footer-note{font-size:17px;max-width:160px;text-align:right}dialog{padding:25px}dialog h2{font-size:22px}}
@media(max-width:380px){.memories{grid-template-columns:1fr}.memory img{height:240px}.hero{padding-left:19px;padding-right:19px}.collage{height:340px}.scrapbook{width:260px}.section-head{align-items:flex-start}.section-head .outline{margin-top:23px;font-size:9px;padding:9px}.brand{font-size:16px}nav{gap:11px}}
@media(max-width:650px){.section-head h2:after{display:none}}

/* Sakura garden: mint paper, soft pink blossoms, and a quiet spring scene. */
:root{--paper:#eff5e7;--green:#5d7e59;--ink:#40583d;--pink:#f4cbdc;--rose:#b7688c;--muted:#78856e;--line:#d6e1cb}
body{background-color:var(--paper);background-image:radial-gradient(ellipse at 85% 12%,#dcebc880,transparent 48%),radial-gradient(ellipse at 8% 40%,#f9e6ee55,transparent 38%),radial-gradient(#9ab08445 .7px,transparent .7px);background-size:auto,auto,23px 23px}
header{background:#f8fbedde;border-color:#dce6d0;box-shadow:0 5px 0 #dce7cf66}
.pill{background:#e3edda;color:#67815a}.pill i{background:#95b180}
.hero{gap:18px;padding-top:48px;padding-bottom:48px;grid-template-columns:1fr 1.08fr}
.hero .eyebrow{background:#f9e8ee;border-color:#edc9d7;color:#936b7d}
.hero h1 em:after{background:#efccdd99}
.hero-copy>p{color:#7b896f}.tiny{color:#829773}
.sakura-scene{position:relative;min-width:0;min-height:450px;display:flex;flex-direction:column;align-items:center;justify-content:center;isolation:isolate}
.sakura-tree{display:block;width:calc(100% + 30px);max-width:510px;height:auto;filter:drop-shadow(0 9px 14px #79956008)}
.garden-label{font-size:10px;letter-spacing:2px;color:#8f9d80;position:absolute;top:12px;right:42px;transform:rotate(4deg)}
.garden-caption{font:600 24px 'Caveat',cursive;color:#a77b90;transform:rotate(-3deg);margin-top:-12px}
.petals{position:absolute;inset:45px 8% 55px;pointer-events:none;overflow:hidden;z-index:1}
.petals i{position:absolute;left:var(--x);top:-20px;width:11px;height:8px;border-radius:90% 0 80% 20%;background:#edb6cdbb;transform:rotate(-25deg);opacity:.75}
.petals i:nth-child(2n){background:#f8d3e0;width:8px;height:6px}
.ribbon{background:#e0ebd3;border-color:#a6bd92;box-shadow:0 5px 0 #dce6cf66}
.ribbon:before,.ribbon:after{content:'❀';color:#bd88a2;font-size:24px}
.section-head h2:after{content:' ❀';font-family:'Nunito',sans-serif;font-size:24px;color:#c88ca7}
.filter{background:#f6faef;border-color:#d5dfc9}.filter.active{background:#d6e5c6;border-color:#a8be95;color:#506f46;box-shadow:0 2px 0 #bfd1ac}
.empty{background:radial-gradient(ellipse at 50% 0,#f8e8ee99,transparent 65%),#f5f9ee;border-color:#bfd0ac}
.empty:before{content:'❀';color:#e4b3c9}.empty:after{content:'❀';color:#d7e2c8;font-size:75px}
.empty .flower{background:#fcecf2;border-color:#f1d2df;color:#bd87a0}
.empty p{color:#879377}.memory{background:#fbfdf6;border-color:#dce6cf;box-shadow:0 6px 0 #d8e3cb80}
.memory .no-photo{background:radial-gradient(circle at 30% 35%,#fae2ec,transparent 65%),#e1ecd5}
.letter{background:repeating-linear-gradient(0deg,transparent 0 29px,#c58ba815 29px 30px),#f7ebef;border-color:#e5cad5}
.letter:before{content:'❀';font-family:'Nunito',sans-serif;font-size:35px}
.wishes{background:#e4edda;border-color:#c5d5b5;box-shadow:0 5px 0 #d4e0c880}
.wishes:before{content:'❀';font-size:31px;color:#9cb18a}
.tools{background:#e8efdfaa;border-color:#dbe5cf}.small-muted{color:#7e8b71}footer{border-color:#bdcfad;color:#8c9d7c}
dialog{background:#f6faef;border-color:#c9d9b8}.field input,.field textarea,.field select{background:#fcfdf8;border-color:#d3dfc6}
@media(prefers-reduced-motion:no-preference){.petals i{animation:sakura-drift var(--duration) linear infinite;animation-delay:var(--delay)}@keyframes sakura-drift{0%{opacity:0;transform:translate(0,-10px) rotate(0)}12%{opacity:.7}50%{transform:translate(-22px,160px) rotate(125deg)}85%{opacity:.55}100%{opacity:0;transform:translate(15px,345px) rotate(250deg)}}}
@media(max-width:850px){.hero{gap:0;padding-top:40px;padding-bottom:40px}.sakura-scene{min-height:365px}.garden-label{right:15px;top:3px;font-size:8px;letter-spacing:1.5px}.garden-caption{font-size:22px}}
@media(max-width:650px){.hero{grid-template-columns:1fr;padding-top:38px;padding-bottom:30px;gap:23px}.sakura-scene{width:100%;max-width:390px;min-height:340px;margin:0 auto}.sakura-tree{width:calc(100% + 14px)}.garden-label{top:-1px;right:25px}.garden-caption{font-size:23px;margin-top:-5px}.petals{inset:30px 4% 40px}.section-head h2:after{display:inline;font-size:21px}}
@media(max-width:380px){.sakura-scene{min-height:310px}.garden-caption{font-size:21px}.section-head h2:after{display:none}}

.music-section{max-width:1130px;margin:25px auto 0;padding:0 40px}
.music-player{background:#f8fbf1;border:1px solid #d4e0c7;border-radius:20px;padding:17px}
.music-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0 4px 13px}.music-heading .eyebrow{font-size:9px;letter-spacing:1.5px}
.music-note{font:600 21px 'Caveat',cursive;color:#aa7b91}
.spotify-embed{display:block;width:100%;height:152px;border:0;border-radius:12px;background:#26312d;color-scheme:normal}
@media(max-width:650px){.music-section{padding:0 22px;margin-top:22px}.music-player{padding:12px}.music-heading{align-items:flex-start;flex-direction:column;gap:3px;margin-bottom:11px}.music-note{font-size:19px}}
