:root{--cream:#fff8f4;--blush:#fbdce9;--blush-soft:#fde9f0;--plum:#4a2540;--plum-soft:#7a5468;--rose:#c23b70;--rose-deep:#a32e5c;--badge:#d6487d;--gold:#d79a2c;--white:#fff}*{box-sizing:border-box}body{background:var(--cream);color:var(--plum);margin:0;font-family:Quicksand,sans-serif}a{color:var(--rose)}a:hover{color:var(--rose-deep)}.script{font-family:Caveat,cursive}.heading{font-family:Fredoka,sans-serif}.page{width:100%;position:relative;overflow-x:hidden}.bg-sparkles{z-index:-1;pointer-events:none;position:absolute;inset:0}.sparkle-layer{will-change:transform;position:absolute}.sparkle{opacity:.3;display:block}.sparkle-star{fill:var(--gold)}.sparkle-heart{fill:var(--rose);opacity:.22}@keyframes drift{0%,to{transform:translate(0)rotate(0)}50%{transform:translate(8px,-18px)rotate(12deg)}}@media (prefers-reduced-motion:no-preference){.sparkle{animation:drift var(--dur,8s) ease-in-out infinite var(--delay,0s), twinkle calc(var(--dur,8s) * .55) ease-in-out infinite var(--delay,0s)}}.header{background:var(--blush);padding:calc(44px + env(safe-area-inset-top,0px)) 24px 0;text-align:center;position:relative;overflow:hidden}.deco{opacity:.5;position:absolute}.deco-star-1{width:26px;height:26px;fill:var(--gold);top:28px;left:8%}.deco-heart{width:34px;height:30px;fill:var(--rose);top:70px;right:10%}.deco-star-2{width:18px;height:18px;fill:var(--gold);opacity:.45;top:130px;left:16%}.deco-heart-2{width:16px;height:14px;fill:var(--gold);opacity:.4;top:24px;right:18%}.title{color:var(--plum);margin:6px 0 0;font-size:clamp(32px,7vw,50px);font-weight:700;line-height:1.15;position:relative}.kicker{letter-spacing:3px;text-transform:uppercase;color:var(--rose-deep);margin:18px 0 0;font-size:14px;font-weight:600;position:relative}@keyframes fade-in-up{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}@keyframes float{0%,to{transform:translateY(0)rotate(0)}50%{transform:translateY(-12px)rotate(8deg)}}@keyframes twinkle{0%,to{opacity:.25;transform:scale(.85)}50%{opacity:.8;transform:scale(1.15)}}@keyframes pop-in{0%{opacity:0;transform:scale(.4)}70%{opacity:1;transform:scale(1.12)}to{opacity:1;transform:scale(1)}}@keyframes wiggle{0%,to{transform:rotate(0)scale(1)}25%{transform:rotate(-10deg)scale(1.08)}75%{transform:rotate(10deg)scale(1.08)}}@keyframes breathe{0%,to{box-shadow:0 4px 18px #c23b701f}50%{box-shadow:0 8px 26px #c23b7038}}@media (prefers-reduced-motion:no-preference){.title{animation:.7s both fade-in-up}.kicker{animation:.7s .2s both fade-in-up}.deco-star-1{animation:4.5s ease-in-out infinite float,2.6s ease-in-out infinite twinkle}.deco-heart{animation:5.5s ease-in-out infinite reverse float}.deco-star-2{animation:3.8s ease-in-out .8s infinite float,3.2s ease-in-out .4s infinite twinkle}.deco-heart-2{animation:4.2s ease-in-out 1.1s infinite float}.deco-foot-star{animation:4.3s ease-in-out .3s infinite float,2.8s ease-in-out infinite twinkle}.deco-foot-heart{animation:5.2s ease-in-out .6s infinite reverse float}.plan-card.in-view{animation:3.4s ease-in-out 1.1s infinite breathe}}.wave{width:100%;height:64px;fill:var(--cream);margin-top:34px;display:block}.wave-flip{height:56px;margin:0;position:absolute;top:0;left:0;transform:rotate(180deg)}.progress-bar{z-index:10;background:var(--cream);padding:12px 20px 10px;position:sticky;top:0;box-shadow:0 6px 12px -8px #4a254040}.progress-track{background:var(--blush-soft);border-radius:999px;height:14px;position:relative;box-shadow:inset 0 1px 3px #4a254026}.progress-fill{background:linear-gradient(90deg, var(--badge), var(--rose) 55%, var(--gold));border-radius:999px;width:0%;height:100%;transition:width .6s cubic-bezier(.34,1.56,.64,1);position:relative;box-shadow:0 0 8px #d6487d73}.progress-fill:before{content:"";border-radius:inherit;background:linear-gradient(110deg,#0000 20%,#fff9 50%,#0000 80%) 0 0/200% 100%;position:absolute;inset:0}.progress-fill:after{content:"✨";font-size:13px;line-height:1;position:absolute;top:50%;right:-8px;transform:translateY(-50%)}@media (prefers-reduced-motion:no-preference){.progress-fill:before{animation:2.2s linear infinite shimmer-sweep}.progress-fill.pulse{animation:.6s progress-pulse}}@keyframes shimmer-sweep{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes progress-pulse{0%{box-shadow:0 0 8px #d6487d73}40%{box-shadow:0 0 18px #d6487dcc}to{box-shadow:0 0 8px #d6487d73}}.progress-label{letter-spacing:.2px;color:var(--rose-deep);text-align:center;margin:7px 0 0;font-family:Fredoka,sans-serif;font-size:12.5px;font-weight:600;transition:transform .3s}.progress-label.pulse{animation:.4s label-pop}@keyframes label-pop{0%{transform:scale(1)}40%{transform:scale(1.08)}to{transform:scale(1)}}.main{max-width:620px;margin:0 auto;padding:0 20px 8px}.intro{text-align:center;color:var(--rose-deep);margin:30px 0;font-size:21px;font-weight:600}.timeline{margin:0;padding:0;list-style:none;position:relative}.timeline:before{content:"";border-left:3px dashed var(--blush-soft);width:0;position:absolute;top:6px;bottom:6px;left:27px}.item{opacity:0;gap:16px;margin-bottom:26px;transition:opacity .6s,transform .6s;display:flex;position:relative;transform:translateY(26px)}.item.in-view{opacity:1;transform:translateY(0)}.item:nth-child(2){transition-delay:50ms}.item:nth-child(3){transition-delay:.1s}.item:nth-child(4){transition-delay:.15s}.item:nth-child(5){transition-delay:.2s}.item:nth-child(6){transition-delay:.25s}.item:nth-child(7){transition-delay:.3s}.item:nth-child(8){transition-delay:.35s}.item:nth-child(9){transition-delay:.4s}.item-last{margin-bottom:8px}.check-input{opacity:0;width:1px;height:1px;position:absolute}.badge{background:var(--badge);z-index:1;cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:56px;height:56px;font-size:26px;transition:transform .2s,background .25s,box-shadow .25s;display:flex;position:relative;box-shadow:0 3px 10px #c23b7059}.item.in-view .badge{animation:.5s .15s both pop-in}.item:hover .badge{animation:.5s wiggle}.badge:active{transform:scale(.9)}.check-input:focus-visible+.badge{outline:3px solid var(--gold);outline-offset:3px}.badge-emoji,.badge-check{justify-content:center;align-items:center;transition:opacity .25s,transform .25s;display:flex;position:absolute;inset:0}.badge-check{color:var(--white);opacity:0;font-size:24px;font-weight:700;transform:scale(.4)rotate(-25deg)}.check-input:checked+.badge{background:var(--rose-deep)}.check-input:checked+.badge .badge-emoji{opacity:0;transform:scale(.5)}.check-input:checked+.badge .badge-check{opacity:1;transform:scale(1)rotate(0)}.card{background:var(--white);border-radius:18px;flex:1;min-width:0;padding:16px 20px;transition:transform .25s,box-shadow .25s;box-shadow:0 4px 14px #4a254014}.item:hover .card{transform:translateY(-4px);box-shadow:0 10px 24px #4a254024}.check-input:checked~.card{background:var(--blush-soft)}.check-input:checked~.card .card-title{color:var(--rose-deep);text-decoration:line-through;-webkit-text-decoration-color:var(--rose);text-decoration-color:var(--rose)}.check-input:checked~.card .card-text{opacity:.6}.time{letter-spacing:1px;color:var(--rose);margin:0 0 2px;font-size:13px;font-weight:600}.card-title{color:var(--plum);margin:0 0 6px;font-size:19px;font-weight:600}.card-text{color:var(--plum-soft);margin:0;font-size:15px;line-height:1.5}.plan-flourish{justify-content:center;align-items:center;gap:10px;max-width:180px;margin:0 auto 14px;display:flex}.flourish-line{background:linear-gradient(to var(--flourish-dir,right), transparent, var(--rose) 60%);flex:1;height:1px}.plan-flourish .flourish-line:first-child{--flourish-dir:left;background:linear-gradient(to left, transparent, var(--rose) 60%)}.flourish-heart{width:14px;height:14px;fill:var(--badge);flex-shrink:0}.plan-card{background:var(--white);border:1px solid var(--blush-soft);text-align:center;opacity:0;border-radius:28px;width:calc(100% - 48px);max-width:460px;margin:20px auto 40px;padding:34px 28px 30px;transition:opacity .7s,transform .7s;position:relative;transform:translateY(24px)scale(.96);box-shadow:0 16px 40px -12px #4a254038}.plan-card.in-view{opacity:1;transform:translateY(0)scale(1)}.plan-label{letter-spacing:3px;text-transform:uppercase;color:var(--rose-deep);margin:0 0 12px;font-size:13px;font-weight:600}.plan-text{color:var(--plum);margin:0;font-family:Caveat,cursive;font-size:24px;font-weight:600;line-height:1.5}.footer{background:var(--blush);padding:80px 24px calc(48px + env(safe-area-inset-bottom,0px));text-align:center;position:relative}.deco-foot-star{width:20px;height:20px;fill:var(--gold);top:58px;left:12%}.deco-foot-heart{width:24px;height:22px;fill:var(--rose);top:70px;right:14%}.signoff{opacity:0;transition:opacity .7s,transform .7s;display:inline-block;position:relative;transform:translateY(18px)}.signoff.in-view{opacity:1;transform:translateY(0)}.signoff-title{color:var(--plum);margin:0;font-size:clamp(26px,6vw,34px);font-weight:600;line-height:1.25}.signoff-sub{color:var(--rose-deep);margin:10px 0 0;font-size:22px;font-weight:600}.celebration{z-index:100;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#4a254052;justify-content:center;align-items:center;padding:24px;animation:.35s both celebration-fade-in;display:flex;position:fixed;inset:0}@keyframes celebration-fade-in{0%{opacity:0}to{opacity:1}}.celebration-card{background:var(--white);text-align:center;border-radius:28px;width:100%;max-width:320px;padding:40px 32px 34px;position:relative;box-shadow:0 24px 60px -16px #4a254073}@media (prefers-reduced-motion:no-preference){.celebration-card{animation:.6s cubic-bezier(.34,1.56,.64,1) both celebration-pop}}@keyframes celebration-pop{0%{opacity:0;transform:scale(.5)translateY(30px)}60%{opacity:1;transform:scale(1.05)translateY(-4px)}to{transform:scale(1)translateY(0)}}.celebration-emoji{margin:0 0 10px;font-size:32px}.celebration-title{color:var(--rose-deep);margin:0 0 10px;font-size:30px;font-weight:700}.celebration-text{color:var(--plum-soft);margin:0;font-size:15px;line-height:1.55}.celebration-close{background:var(--blush-soft);width:32px;height:32px;color:var(--rose-deep);cursor:pointer;border:none;border-radius:50%;justify-content:center;align-items:center;font-size:18px;line-height:1;transition:background .2s;display:flex;position:absolute;top:12px;right:14px}.celebration-close:hover{background:var(--blush)}.confetti-wrap{pointer-events:none;position:absolute;inset:0;overflow:hidden}.confetti-piece{opacity:0;animation:confetti-fall var(--fall-duration,3s) ease-in var(--fall-delay,0s) forwards;position:absolute;top:-24px}@keyframes confetti-fall{0%{opacity:0;transform:translate(0)rotate(0)}10%{opacity:1}to{transform:translate(var(--drift,0px), 110vh) rotate(360deg);opacity:.9}}@media (width<=480px){.header{padding:calc(32px + env(safe-area-inset-top,0px)) 18px 0}.kicker{letter-spacing:2px}.wave{height:44px;margin-top:24px}.progress-bar{padding:8px 16px 6px}.main{padding:0 16px 8px}.intro{margin:22px 0 24px;font-size:19px}.item{gap:12px;margin-bottom:20px}.timeline:before{left:23px}.badge{width:48px;height:48px;font-size:22px}.badge-check{font-size:20px}.card{border-radius:16px;padding:14px 16px}.card-title{font-size:17.5px}.card-text{font-size:14px}.plan-card{border-radius:22px;width:calc(100% - 32px);margin:16px auto 32px;padding:26px 20px 24px}.plan-text{font-size:20px}.footer{padding:64px 18px calc(36px + env(safe-area-inset-bottom,0px))}.wave-flip{height:44px}.deco-foot-star{top:48px}.deco-foot-heart{top:58px}.signoff-sub{font-size:19px}.progress-track{height:12px}.progress-fill:after{font-size:11px;right:-7px}.progress-label{font-size:12px}.sparkle-layer:nth-child(2n){display:none}.celebration{padding:16px}.celebration-card{border-radius:24px;padding:32px 22px 26px}.celebration-emoji{font-size:28px}.celebration-title{font-size:25px}.celebration-text{font-size:14px}.celebration-close{width:44px;height:44px;top:6px;right:8px}}
