*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;-webkit-overflow-scrolling:touch}body{color:#5a4a4a;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#fff8f0;font-family:Cormorant Garamond,Georgia,serif;font-size:18px;line-height:1.8;overflow-x:hidden}#root{min-height:100svh}.page{--cream:#fff8f0;--cream-dark:#f5ede3;--rose:#c9929b;--rose-light:#e8c4c8;--rose-muted:#d4a0a0;--gold:#c8a96e;--gold-light:#e0d0a8;--gold-glow:#c8a96e59;--text:#5a4a4a;--text-soft:#8a7a7a;background:radial-gradient(ellipse at 50% 0%, #c8a96e0f 0%, transparent 50%), var(--cream);min-height:100svh;position:relative}.particles{pointer-events:none;z-index:0;position:fixed;inset:0;overflow:hidden}.particle{background:radial-gradient(circle, var(--gold), var(--gold-light));opacity:0;border-radius:50%;animation:linear infinite rise;position:absolute;bottom:-10px}@keyframes rise{0%{opacity:0;transform:translateY(0)translate(0)scale(0)}8%{opacity:var(--peak-opacity,.5);transform:scale(1)}50%{transform:translateY(-50vh)translate(20px)}85%{opacity:calc(var(--peak-opacity,.5) * .25)}to{opacity:0;transform:translateY(-105vh)translate(-15px)scale(.2)}}.hero{z-index:1;text-align:center;flex-direction:column;justify-content:center;align-items:center;height:100svh;padding:0 24px;display:flex;position:relative}.hero-inner>*{opacity:0;transition:opacity .9s,transform .9s;transform:translateY(24px)}.hero.show .hero-sub{opacity:1;transition-delay:0s;transform:none}.hero.show .hero-name{opacity:1;transition-delay:.5s;transform:none}.hero.show .ornament{opacity:1;transition-delay:1s;transform:none}.hero-sub{letter-spacing:5px;text-transform:uppercase;color:var(--rose);margin-bottom:4px;font-family:Playfair Display,Georgia,serif;font-size:18px;font-weight:400}.hero-name{color:var(--gold);text-shadow:0 0 50px var(--gold-glow);margin:0;font-family:Great Vibes,cursive;font-size:clamp(60px,16vw,110px);font-weight:400;line-height:1.15}.ornament{justify-content:center;align-items:center;gap:14px;margin-top:12px;display:flex}.orn-line{background:linear-gradient(90deg, transparent, var(--gold-light), transparent);width:48px;height:1px;display:block}.orn-diamond{color:var(--gold);font-size:7px;line-height:1}.scroll-cue{opacity:0;animation:.6s 2.5s forwards fade-in;position:absolute;bottom:36px;left:50%;transform:translate(-50%)}.scroll-dot{background:var(--rose-muted);border-radius:50%;width:5px;height:5px;animation:2s ease-in-out infinite bob;display:block}@keyframes fade-in{to{opacity:1}}@keyframes bob{0%,to{opacity:.4;transform:translateY(0)}50%{opacity:1;transform:translateY(12px)}}.reveal{opacity:0;transition:opacity .75s,transform .75s;transform:translateY(28px)}.reveal.visible{opacity:1;transform:none}.photo-wrap{z-index:1;justify-content:center;padding:20px 24px 56px;display:flex;position:relative}.photo-frame{border:2px solid var(--gold-light);width:240px;height:320px;box-shadow:0 4px 20px #c8a96e1f, 0 0 0 6px var(--cream), 0 0 0 8px var(--gold-light);background:var(--cream-dark);border-radius:14px;overflow:hidden}.photo{object-fit:cover;width:100%;height:100%;display:block}.photo-placeholder{width:100%;height:100%;color:var(--text-soft);flex-direction:column;justify-content:center;align-items:center;gap:8px;display:flex}.photo-placeholder span{opacity:.6;font-size:36px}.photo-placeholder small{opacity:.7;font-size:13px;font-style:italic}.letter{z-index:1;max-width:520px;margin:0 auto;padding:0 28px 48px;position:relative}.letter-dear{color:var(--rose);text-align:left;margin-bottom:36px;font-family:Great Vibes,cursive;font-size:34px}.letter-p{color:var(--text);text-align:left;text-indent:1.5em;margin-bottom:32px;font-size:17px;line-height:1.9}.closing{text-align:center;border-top:1px solid var(--gold-light);border-bottom:1px solid var(--gold-light);margin:16px 0 8px;padding:36px 0}.closing-star{color:var(--gold);letter-spacing:4px;font-size:10px;display:block}.closing-text{color:var(--rose);margin:0;padding:12px 0;font-family:Playfair Display,Georgia,serif;font-size:19px;font-style:italic;font-weight:400;line-height:1.75}.sign-off{text-align:center;color:var(--gold);text-shadow:0 0 20px var(--gold-glow);margin-top:36px;font-family:Great Vibes,cursive;font-size:28px}.footer{z-index:1;text-align:center;padding:40px 0 56px;position:relative}.footer-hearts{color:var(--rose-light);letter-spacing:6px;font-size:14px}
