:root{--ink-plum: #221420;--mauve-deep: #35223A;--mauve-card: #432B47;--blush: #F2B9C4;--gold: #E7B76A;--paper: #FBF3E6;--rose-soft: #E6A8BC;--text-dim: #C9B3C7;--font-display: "Cormorant Garamond", serif;--font-hand: "Caveat", cursive;--font-body: "Work Sans", sans-serif}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--ink-plum);color:var(--paper);font-family:var(--font-body);overscroll-behavior-y:none}#root{min-height:100dvh}button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.001ms!important;transition-duration:.001ms!important}}.stage-root{position:relative;min-height:100dvh;width:100%;overflow:hidden;background:radial-gradient(circle at 20% 10%,rgba(231,183,106,.12),transparent 45%),radial-gradient(circle at 85% 85%,rgba(242,185,196,.1),transparent 50%),linear-gradient(180deg,var(--ink-plum) 0%,var(--mauve-deep) 100%)}.phone-frame{position:relative;max-width:460px;margin:0 auto;min-height:100dvh;display:flex;flex-direction:column;padding:28px 22px 40px;z-index:2}.petal-layer{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:1;overflow:hidden}.petal{position:absolute;top:-8%;border-radius:60% 40% 55% 45%/55% 45% 60% 40%;opacity:.55;animation-name:drift;animation-timing-function:linear;animation-iteration-count:infinite}@keyframes drift{0%{transform:translateY(-10vh) translate(0) rotate(0);opacity:0}10%{opacity:.6}90%{opacity:.5}to{transform:translateY(112vh) translate(var(--drift-x, 40px)) rotate(300deg);opacity:0}}.petal-emoji{background:none;border-radius:0;width:auto;height:auto;display:flex;align-items:center;justify-content:center;line-height:1;opacity:.85}.progress-dots{display:flex;gap:8px;justify-content:center;margin-top:auto;padding-top:24px}.progress-dots span{width:6px;height:6px;border-radius:50%;background:#fbf3e640;transition:all .3s ease}.progress-dots span.active{background:var(--gold);width:20px;border-radius:3px}.envelope-stage{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:28px}.eyebrow{font-size:13px;letter-spacing:.22em;text-transform:uppercase;color:var(--gold);font-weight:500}.envelope-wrap{position:relative;width:220px;height:150px;cursor:pointer;transform-origin:center bottom;animation:bob 3.2s ease-in-out infinite}@keyframes bob{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}.envelope-svg{width:100%;height:100%;display:block;filter:drop-shadow(0 18px 30px rgba(0,0,0,.35))}.envelope-wrap.opening{animation:none}.envelope-flap{transform-origin:110px 38px;transition:transform .7s cubic-bezier(.62,-.02,.3,1.35)}.envelope-wrap.opening .envelope-flap{transform:rotateX(180deg)}.tap-hint{font-family:var(--font-hand);font-size:20px;color:var(--blush);animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{opacity:.55}50%{opacity:1}}.to-name{font-family:var(--font-display);font-size:34px;font-weight:600;color:var(--paper)}.to-name em{font-style:italic;color:var(--rose-soft)}.letter-stage{flex:1;display:flex;flex-direction:column;justify-content:center;animation:fadeUp .7s ease both}@keyframes fadeUp{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}.letter-card{background:linear-gradient(180deg,var(--paper),#F3E7D4);color:#3b2740;border-radius:14px;padding:30px 26px 26px;box-shadow:0 24px 50px #0006;position:relative}.letter-card:before{content:"";position:absolute;top:0;left:0;right:0;height:6px;background:linear-gradient(90deg,var(--gold),var(--blush));border-radius:14px 14px 0 0}.letter-greeting{font-family:var(--font-hand);font-size:30px;color:#6b3b54;margin:6px 0 14px}.letter-body{font-family:var(--font-display);font-size:19px;line-height:1.65;font-style:italic;color:#47303e}.letter-body p{margin:0 0 14px}.continue-btn{align-self:center;margin-top:26px;padding:13px 30px;border-radius:999px;background:var(--gold);color:#2a1b23;font-weight:600;font-size:15px;letter-spacing:.02em;box-shadow:0 10px 24px #e7b76a59;transition:transform .2s ease}.continue-btn:active{transform:scale(.96)}.reasons-stage{flex:1;display:flex;flex-direction:column;justify-content:center;gap:18px}.reasons-title{font-family:var(--font-display);font-size:26px;font-weight:600;text-align:center;margin-bottom:4px;color:var(--paper)}.reasons-sub{text-align:center;color:var(--text-dim);font-size:14px;margin-bottom:10px}.reason-card{background:var(--mauve-card);border:1px solid rgba(242,185,196,.15);border-radius:12px;padding:16px 18px;font-size:15.5px;line-height:1.5;color:var(--paper);opacity:0;transform:translateY(14px);animation:cardIn .55s ease forwards}@keyframes cardIn{to{opacity:1;transform:translateY(0)}}.reason-card .mark{color:var(--gold);font-family:var(--font-display);font-size:22px;margin-right:6px}.forgive-stage{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:30px}.forgive-title{font-family:var(--font-display);font-size:30px;font-weight:600;line-height:1.3}.forgive-title span{color:var(--blush);font-style:italic}.forgive-btns{position:relative;display:flex;gap:16px;align-items:center;justify-content:center;min-height:60px;width:100%}.yes-btn{padding:15px 34px;border-radius:999px;background:linear-gradient(135deg,var(--blush),var(--gold));color:#2a1b23;font-weight:600;font-size:16px;box-shadow:0 12px 26px #f2b9c44d;transition:transform .2s ease}.yes-btn:active{transform:scale(.95)}.no-btn{position:relative;padding:15px 28px;border-radius:999px;background:#fbf3e614;border:1px solid rgba(251,243,230,.25);color:var(--text-dim);font-size:15px;transition:transform .18s ease}.dodge-note{font-size:13px;color:var(--text-dim);font-family:var(--font-hand);font-size:18px;min-height:20px}.done-stage{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:16px}.done-emoji{font-size:44px;animation:popIn .5s cubic-bezier(.34,1.56,.64,1) both}@keyframes popIn{0%{transform:scale(0);opacity:0}to{transform:scale(1);opacity:1}}.done-title{font-family:var(--font-display);font-size:28px;font-weight:600}.done-body{font-family:var(--font-hand);font-size:22px;color:var(--rose-soft);max-width:320px;line-height:1.4}.signature{margin-top:14px;font-family:var(--font-hand);font-size:24px;color:var(--gold)}.burst-heart{position:fixed;bottom:-5%;font-size:20px;pointer-events:none;z-index:5;animation:rise 2.4s ease-out forwards}@keyframes rise{0%{transform:translateY(0) scale(.6) rotate(0);opacity:0}15%{opacity:1}to{transform:translateY(-100vh) scale(1.1) rotate(20deg);opacity:0}}
