*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}:root{--pink-light: #fff0f3;--pink: #ffccd5;--pink-dark: #e8a0bf;--rose: #d63384;--rose-deep: #a91d5a;--cream: #fef9f4;--gold: #c9a96e;--text: #4a2040;--text-light: #7a4068}html{scroll-behavior:smooth}body{font-family:Lora,Georgia,serif;color:var(--text);background:linear-gradient(135deg,var(--pink-light) 0%,var(--cream) 50%,var(--pink-light) 100%);min-height:100vh;overflow-x:hidden;-webkit-font-smoothing:antialiased}h1,h2,h3{font-family:Playfair Display,Georgia,serif}#petals,#hearts{position:fixed;inset:0;pointer-events:none;z-index:1000;overflow:hidden}.petal{position:absolute;top:-30px;left:var(--left);width:var(--size);height:var(--size);background:var(--color);border-radius:50% 0 50% 50%;opacity:.7;animation:petalFall var(--duration) var(--delay) ease-in forwards;transform:rotate(0)}@keyframes petalFall{0%{transform:translateY(0) translate(0) rotate(0);opacity:.7}50%{transform:translateY(50vh) translate(var(--sway)) rotate(180deg);opacity:.5}to{transform:translateY(110vh) translate(calc(var(--sway) * -.5)) rotate(360deg);opacity:0}}.heart{position:absolute;bottom:-30px;left:var(--left);font-size:var(--size);color:var(--rose);opacity:0;animation:heartFloat var(--duration) var(--delay) ease-out forwards}@keyframes heartFloat{0%{transform:translateY(0) translate(0) scale(.5);opacity:0}10%{opacity:.8;transform:translateY(-10vh) translate(0) scale(1)}to{transform:translateY(-110vh) translate(var(--drift)) scale(.3);opacity:0}}.hedgehog{position:absolute;top:-60px;left:var(--left);width:var(--size);height:var(--size);object-fit:contain;opacity:0;animation:hedgehogFloat var(--duration) var(--delay) ease-in-out forwards;pointer-events:none}@keyframes hedgehogFloat{0%{transform:translateY(0) translate(0) rotate(-5deg);opacity:0}10%{opacity:.85}25%{transform:translateY(25vh) translate(var(--drift)) rotate(5deg)}50%{transform:translateY(50vh) translate(calc(var(--drift) * -.5)) rotate(-3deg)}75%{transform:translateY(75vh) translate(var(--drift)) rotate(4deg)}90%{opacity:.6}to{transform:translateY(110vh) translate(0) rotate(0);opacity:0}}#music-btn{position:fixed;top:1rem;right:1rem;z-index:2000;background:#ffffffd9;backdrop-filter:blur(10px);border:2px solid var(--pink-dark);color:var(--rose-deep);font-family:Lora,serif;font-size:.85rem;padding:.5rem 1rem;border-radius:50px;cursor:pointer;transition:all .3s ease;display:flex;align-items:center;gap:.3rem}#music-btn:hover{background:var(--pink);transform:scale(1.05)}#music-btn.playing{animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.08)}}#landing{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;position:relative;z-index:10}#envelope{width:clamp(260px,60vw,360px);height:clamp(180px,40vw,240px);position:relative;cursor:pointer;perspective:800px;transition:opacity .8s ease}.envelope-body{width:100%;height:100%;background:linear-gradient(145deg,#f5e6d3,#eddcc8);border-radius:8px;box-shadow:0 8px 32px #a6647840;position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center}.envelope-body:before{content:"";position:absolute;inset:6px;border:2px dashed var(--pink-dark);border-radius:4px;opacity:.3}.envelope-heart{font-size:3rem;color:var(--rose);animation:heartbeat 1.5s ease-in-out infinite}@keyframes heartbeat{0%,to{transform:scale(1)}15%{transform:scale(1.15)}30%{transform:scale(1)}45%{transform:scale(1.1)}}.envelope-lid{position:absolute;top:0;left:0;width:100%;height:52%;background:linear-gradient(160deg,#eddcc8,#e8d0b8);clip-path:polygon(0 0,50% 100%,100% 0);transform-origin:top center;transition:transform .6s ease-in-out;z-index:2;box-shadow:0 2px 8px #0000001a}#envelope.opened .envelope-lid{transform:rotateX(180deg)}#open-prompt{margin-top:2rem;font-family:Lora,serif;font-style:italic;color:var(--text-light);font-size:clamp(.9rem,2.5vw,1.1rem);animation:fadeInOut 2.5s ease-in-out infinite;cursor:pointer}@keyframes fadeInOut{0%,to{opacity:.4}50%{opacity:1}}#letter{max-width:700px;margin:0 auto;padding:0 1.5rem 6rem;opacity:0;transform:translateY(40px);transition:opacity .8s ease,transform .8s ease;pointer-events:none}#letter.visible{opacity:1;transform:translateY(0);pointer-events:auto}.section{padding:3rem 0;text-align:center}.section.reveal{opacity:0;transform:translateY(30px);transition:opacity .8s ease,transform .8s ease}.section.reveal.in-view{opacity:1;transform:translateY(0)}#greeting h1{font-size:clamp(2.2rem,7vw,3.5rem);color:var(--rose-deep);font-weight:700;margin-bottom:.5rem}#greeting .subtitle{font-style:italic;color:var(--text-light);font-size:clamp(1rem,3vw,1.3rem)}.letter-content{text-align:left;line-height:1.9}.letter-content p{margin-bottom:1.5rem;font-size:clamp(.95rem,2.5vw,1.1rem);color:var(--text);min-height:1.5em}.letter-signature{display:block;width:clamp(120px,30vw,200px);margin-top:1rem;opacity:0;transition:opacity .8s ease}.letter-signature.visible{opacity:1}.word-fade{opacity:0;display:inline;animation:wordFadeIn .5s ease forwards}@keyframes wordFadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}#gallery h2{font-size:clamp(1.6rem,5vw,2.2rem);color:var(--rose-deep);margin-bottom:2rem}.gallery-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem}.gallery-item{border-radius:16px;overflow:hidden;box-shadow:0 4px 20px #a6647833;border:3px solid rgba(255,255,255,.8);transition:transform .4s ease,box-shadow .4s ease;opacity:0;transform:translateY(20px) scale(.95);animation:galleryReveal .6s ease forwards}.gallery-item:hover{transform:translateY(-4px) scale(1.03);box-shadow:0 8px 32px #d6338440}.gallery-item:nth-child(1){animation-delay:.1s}.gallery-item:nth-child(2){animation-delay:.2s}.gallery-item:nth-child(3){animation-delay:.3s}.gallery-item:nth-child(4){animation-delay:.4s}.gallery-item:nth-child(5){animation-delay:.5s}.gallery-item:nth-child(6){animation-delay:.6s}.gallery-item:nth-child(7){animation-delay:.7s}.section.reveal:not(.in-view) .gallery-item{animation:none;opacity:0}@keyframes galleryReveal{to{opacity:1;transform:translateY(0) scale(1)}}.gallery-item img{width:100%;height:100%;object-fit:cover;display:block}.gallery-item:last-child:nth-child(odd){grid-column:1 / -1;max-width:50%;justify-self:center}@media(max-width:480px){.gallery-grid{grid-template-columns:repeat(2,1fr);gap:.75rem}.gallery-item:last-child:nth-child(odd){max-width:60%}}#foods h2{font-size:clamp(1.6rem,5vw,2.2rem);color:var(--rose-deep);margin-bottom:2rem}.food-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem}.food-card{background:#fffc;backdrop-filter:blur(8px);border-radius:16px;padding:1.5rem 1rem;border:1px solid var(--pink);transition:transform .3s ease,box-shadow .3s ease}.food-card:hover{transform:translateY(-4px) scale(1.04);box-shadow:0 6px 24px #d6338426}.food-emoji{font-size:2.2rem;display:block;margin-bottom:.5rem}.food-card h3{font-size:1.05rem;color:var(--rose-deep);margin-bottom:.25rem}.food-card p{color:var(--text-light);font-size:.85rem;font-style:italic;line-height:1.5}#names h2{font-size:clamp(1.6rem,5vw,2.2rem);color:var(--rose-deep);margin-bottom:2rem}.name-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1.2rem}.name-card{background:linear-gradient(145deg,#ffffffe6,#fff0f3e6);border-radius:16px;padding:1.8rem 1.2rem;border:1px solid var(--pink);transition:transform .3s ease}.name-card:hover{transform:translateY(-4px) scale(1.02)}.name-card h3{font-size:1.4rem;color:var(--rose-deep);margin-bottom:.3rem}.name-meaning{font-style:italic;color:var(--gold);font-weight:600;font-size:.95rem;margin-bottom:.6rem}.name-desc{color:var(--text-light);font-size:.9rem;line-height:1.5}#flowers h2{font-size:clamp(1.6rem,5vw,2.2rem);color:var(--rose-deep);margin-bottom:2rem}.flower-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:1rem}.flower-card{background:#fffc;border-radius:16px;padding:1.5rem 1rem;border:1px solid var(--pink);transition:transform .3s ease}.flower-card:hover{transform:scale(1.05)}.flower-bloom{font-size:2.5rem;color:var(--bloom-color);margin-bottom:.5rem;animation:bloom 3s ease-in-out infinite}@keyframes bloom{0%,to{transform:scale(1) rotate(0)}50%{transform:scale(1.15) rotate(10deg)}}.flower-card h3{font-size:1rem;color:var(--rose-deep);margin-bottom:.2rem}.flower-card p{font-size:.85rem;color:var(--text-light);font-style:italic}#closing{padding-top:4rem;padding-bottom:4rem}#closing h2{font-size:clamp(1.8rem,6vw,2.8rem);color:var(--rose-deep);line-height:1.3;margin-bottom:2rem}.closing-text{font-size:clamp(1.1rem,3vw,1.4rem);font-style:italic;color:var(--text-light);margin-bottom:.5rem}.signature{font-family:Playfair Display,serif;font-size:clamp(1.8rem,5vw,2.5rem);font-style:italic;color:var(--rose-deep);margin-bottom:1.5rem}.closing-heart{font-size:3rem;color:var(--rose);animation:heartbeat 1.5s ease-in-out infinite}@media(max-width:480px){#letter{padding:0 1rem 4rem}.section{padding:2rem 0}.name-cards{grid-template-columns:1fr}.flower-cards,.food-cards{grid-template-columns:repeat(2,1fr)}}
