:root{--bg:#fbf6ee;--bg-soft:#f4ecde;--ink:#2a211c;--ink-soft:#6b5b52;--rose:#c98b8b;--rose-soft:#e3bfbf;--sunflower:#e5b645;--sage:#8fa67e;--lily:#e8d7bd;--line:#e1d5c2;--font-display:"Cormorant Garamond", "Cormorant", Georgia, serif;--font-body:"Nunito", "Avenir Next", "Helvetica Neue", system-ui, sans-serif}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;padding:0;font-weight:400}button{color:inherit;cursor:pointer;background:0 0;border:none;padding:0;font-family:inherit}.page{z-index:1;max-width:760px;min-height:100vh;margin:0 auto;padding:96px 32px 80px;position:relative}.sprinkle{pointer-events:none;z-index:0;position:fixed;inset:0;overflow:hidden}.sprinkle-item{animation:12s ease-in-out infinite alternate drift;display:inline-flex;position:absolute}@keyframes drift{0%{transform:translate(0)rotate(0)}to{transform:translate(8px,-10px)rotate(20deg)}}.hero{text-align:center;margin-bottom:72px}.hero-flower-row{opacity:.85;justify-content:center;gap:12px;margin-bottom:20px;display:flex}.hero-title{font-family:var(--font-display);letter-spacing:-.01em;margin:0 0 16px;font-size:clamp(48px,8vw,84px);font-style:italic;font-weight:400;line-height:1.05}.hero-title .for{font-style:normal;font-family:var(--font-body);letter-spacing:.3em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:8px;font-size:.4em;font-weight:300;display:block}.hero-sub{font-family:var(--font-body);color:var(--ink-soft);margin:0;font-size:16px;font-style:italic}.section{text-align:center;margin-bottom:72px}.section-eyebrow{letter-spacing:.32em;text-transform:uppercase;color:var(--ink-soft);border:1px solid var(--line);background:#fff6;border-radius:999px;align-items:center;gap:8px;margin-bottom:28px;padding:6px 14px;font-size:11px;display:inline-flex}.countdown{text-align:center;border:1px solid var(--line);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#fff6;border-radius:24px;padding:36px 20px}.countdown-eyebrow{font-family:var(--font-display);color:var(--ink-soft);margin-bottom:20px;font-size:22px;font-style:italic}.countdown-row{justify-content:center;align-items:baseline;gap:6px;display:flex}.cell{flex-direction:column;align-items:center;min-width:56px;display:flex}.cell-n{font-family:var(--font-display);color:var(--ink);font-variant-numeric:tabular-nums;font-size:56px;font-weight:500;line-height:1}.cell-l{letter-spacing:.3em;text-transform:uppercase;color:var(--ink-soft);margin-top:6px;font-size:10px}.countdown-sep{font-family:var(--font-display);color:var(--rose-soft);align-self:center;margin:0 4px;font-size:40px;transform:translateY(-8px)}.countdown-date{letter-spacing:.15em;text-transform:lowercase;color:var(--ink-soft);margin-top:18px;font-size:13px}.countdown-done{font-family:var(--font-display);color:var(--rose);align-items:center;gap:12px;font-size:48px;font-style:italic;display:inline-flex}.btn.surprise{background:var(--ink);color:var(--bg);border-radius:999px;flex-direction:column;align-items:center;padding:18px 36px;transition:transform .2s,box-shadow .2s;display:inline-flex;box-shadow:0 6px 18px #2a211c26}.btn.surprise:hover{transform:translateY(-2px);box-shadow:0 10px 24px #2a211c38}.btn.surprise:active{transform:translateY(0)}.surprise-label{font-family:var(--font-display);font-size:24px;font-style:italic}.surprise-sub{letter-spacing:.25em;text-transform:uppercase;opacity:.65;margin-top:4px;font-size:10px}.photo-viewer{margin-top:28px}.photo-stack{aspect-ratio:1;background:var(--bg-soft);border:1px solid var(--line);border-radius:18px;width:100%;max-width:460px;margin:0 auto;position:relative;overflow:hidden}.photo-cell{background:#fff;padding:10px 10px 36px;animation:.55s cubic-bezier(.2,.8,.2,1) pop;position:absolute;inset:16px;box-shadow:0 8px 24px #2a211c2e,0 2px 6px #2a211c14}.photo-cell img{object-fit:contain;background:#f5ede0;width:100%;height:100%;display:block}@keyframes pop{0%{opacity:0;transform:scale(.82)rotate(-6deg)}60%{opacity:1;transform:scale(1.02)rotate(1deg)}to{opacity:1}}.photo-tape{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#e5b64559;border:1px solid #e5b64540;width:56px;height:18px;position:absolute}.photo-tape-tl{top:-8px;left:-12px;transform:rotate(-18deg)}.photo-tape-br{background:#c98b8b52;border-color:#c98b8b38;bottom:18px;right:-12px;transform:rotate(12deg)}.photo-counter{letter-spacing:.3em;text-transform:uppercase;color:var(--ink-soft);align-items:center;gap:10px;margin-top:18px;font-size:10px;display:inline-flex}.photo-empty{color:var(--ink-soft);font-family:var(--font-display);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:6px;padding:20px;font-size:22px;font-style:italic;display:flex;position:absolute;inset:0}.photo-empty-sub{font-family:var(--font-body);letter-spacing:.25em;text-transform:uppercase;font-size:11px;font-style:normal}.manage-link{letter-spacing:.25em;text-transform:uppercase;color:var(--ink-soft);text-underline-offset:4px;margin:16px auto 0;font-size:11px;text-decoration:underline;display:block}.manage-link:hover{color:var(--ink)}.setup-grid{grid-template-columns:repeat(3,1fr);gap:12px;margin-top:18px;display:grid}.setup-cell{flex-direction:column;align-items:center;gap:6px;display:flex}.setup-cell image-slot{aspect-ratio:1;width:100%}.setup-label{letter-spacing:.2em;text-transform:uppercase;color:var(--ink-soft);font-size:10px}.heart-wrap{flex-direction:column;align-items:center;gap:14px;display:flex}.heart-btn{perspective:1000px;width:220px;height:220px}.heart-shape{width:100%;height:100%;transform-style:preserve-3d;transition:transform .6s cubic-bezier(.25,.8,.25,1);display:block;position:relative}.heart-btn.is-flipped .heart-shape{transform:rotateY(180deg)}.heart-face{backface-visibility:hidden;clip-path:path("M110 200 C 30 150, 0 100, 0 60 C 0 20, 30 0, 55 0 C 80 0, 100 18, 110 40 C 120 18, 140 0, 165 0 C 190 0, 220 20, 220 60 C 220 100, 190 150, 110 200 Z");-webkit-clip-path:path("M110 200 C 30 150, 0 100, 0 60 C 0 20, 30 0, 55 0 C 80 0, 100 18, 110 40 C 120 18, 140 0, 165 0 C 190 0, 220 20, 220 60 C 220 100, 190 150, 110 200 Z");justify-content:center;align-items:center;transition:filter .3s;display:flex;position:absolute;inset:0}.heart-front{background:var(--rose);color:var(--bg)}.heart-front:hover{filter:brightness(1.05)}.heart-back{background:var(--bg-soft);border:1px solid var(--line);transform:rotateY(180deg)}.heart-text{font-family:var(--font-display);letter-spacing:.01em;padding-bottom:28px;font-size:36px;font-style:italic;font-weight:500}.frog{margin-top:-16px}.frog-pupil{transform-origin:50%;animation:4s ease-in-out infinite blink}@keyframes blink{0%,92%,to{transform:scaleY(1)}96%{transform:scaleY(.1)}}.frog-eye-bump{transform-origin:60px 30px;animation:3.2s ease-in-out infinite peek}@keyframes peek{0%,to{transform:translateY(0)}50%{transform:translateY(-3px)}}.heart-btn.is-flipped .frog{animation:1.4s cubic-bezier(.4,0,.2,1) .1s hop}@keyframes hop{0%{transform:translateY(0)}20%{transform:translateY(-14px)}40%{transform:translateY(0)}60%{transform:translateY(-8px)}80%{transform:translateY(0)}to{transform:translateY(0)}}.hint{letter-spacing:.3em;text-transform:uppercase;color:var(--ink-soft);font-size:10px}.boba-wrap{flex-direction:column;align-items:center;gap:0;display:flex;position:relative}.voucher{background:var(--bg);border:1.5px dashed var(--ink);border-radius:14px;padding:28px 56px;transition:transform .15s,background .2s;display:block;position:relative}.voucher:hover{background:#fff;transform:translateY(-2px)}.voucher:active{transform:translateY(0)}.voucher-perf{background:var(--bg);border:1.5px dashed var(--ink);border-radius:50%;width:24px;height:24px;position:absolute;top:50%;transform:translate(-50%,-50%)}.voucher-perf-left{left:0}.voucher-perf-right{left:100%}.voucher-inner{text-align:center}.voucher-eyebrow{letter-spacing:.35em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:8px;font-size:9px}.voucher-title{font-family:var(--font-display);margin-bottom:12px;font-size:38px;font-style:italic;font-weight:500;line-height:1}.voucher-code{letter-spacing:.25em;text-transform:uppercase;color:var(--ink-soft);justify-content:center;align-items:center;gap:8px;font-size:10px;display:flex}.voucher-dashes{color:var(--rose-soft);letter-spacing:0}.boba-stage{pointer-events:none;width:100%;height:200px;margin-top:12px;position:relative}.boba-anim{flex-direction:column;align-items:center;gap:4px;animation:3s cubic-bezier(.2,.7,.2,1) forwards boba-rise;display:flex;position:absolute;bottom:0;left:50%;transform:translate(-50%)translateY(20px)}@keyframes boba-rise{0%{opacity:0;transform:translate(-50%)translateY(40px)scale(.6)}20%{opacity:1;transform:translate(-50%)translateY(0)scale(1)}75%{opacity:1;transform:translate(-50%)translateY(-6px)scale(1)}to{opacity:0;transform:translate(-50%)translateY(-30px)scale(.9)}}.boba-straw{transform-origin:50%;animation:.6s ease-in-out infinite alternate straw-tilt}@keyframes straw-tilt{0%{transform:rotate(-3deg)}to{transform:rotate(3deg)}}.boba-tea{animation:2.2s ease-in-out infinite tea-wobble}@keyframes tea-wobble{0%,to{transform:translateY(0)}50%{transform:translateY(-2px)}}.boba-bubble{opacity:.95;animation:2.4s ease-in infinite bubble-rise}.boba-bubble-0{animation-delay:0s}.boba-bubble-1{animation-delay:.3s}.boba-bubble-2{animation-delay:.6s}.boba-bubble-3{animation-delay:.9s}.boba-bubble-4{animation-delay:1.2s}.boba-bubble-5{animation-delay:1.5s}.boba-bubble-6{animation-delay:1.8s}@keyframes bubble-rise{0%{opacity:0;transform:translateY(0)}20%{opacity:1}80%{opacity:1}to{opacity:0;transform:translateY(-90px)}}.boba-puff{font-family:var(--font-display);color:var(--ink-soft);letter-spacing:.1em;font-size:14px;font-style:italic;animation:3s ease-out forwards puff}@keyframes puff{0%{opacity:0;transform:translateY(6px)}30%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-6px)}}.footer{text-align:center;border-top:1px solid var(--line);margin-top:80px;padding-top:32px}.footer-flowers{opacity:.7;justify-content:center;gap:8px;margin-bottom:12px;display:flex}.footer-text{font-family:var(--font-display);color:var(--ink-soft);font-size:16px;font-style:italic}.momo-wrap{flex-direction:column;align-items:center;gap:16px;display:flex}.momo-tag{background:var(--bg);border:1px solid var(--ink);box-shadow:2px 2px 0 var(--rose-soft), 4px 4px 0 #2a211c0f;border-radius:4px;flex-direction:column;align-items:center;gap:4px;padding:16px 32px;transition:transform .15s,background .2s;display:flex;position:relative}.momo-tag:hover{background:#fff;transform:translate(-1px,-1px)}.momo-tag:active{transform:translate(0)}.momo-tag-eyebrow{letter-spacing:.35em;text-transform:uppercase;color:var(--ink-soft);font-size:9px}.momo-tag-title{font-family:var(--font-display);font-size:32px;font-style:italic;font-weight:500;line-height:1}.momo-tag-hint{letter-spacing:.3em;text-transform:uppercase;color:var(--ink-soft);margin-top:4px;font-size:9px}.momo-stage{width:320px;height:220px;position:relative}.momo-svg{width:100%;height:100%;overflow:visible}.momo-lid{transform-origin:50%;transition:transform .6s cubic-bezier(.2,.8,.2,1)}.momo-lid.is-up{transform:translateY(-46px)rotate(-4deg)}.momo-steam{opacity:0;transition:opacity .4s .3s}.momo-stage.is-open .momo-steam{opacity:1;animation:3s ease-in-out infinite steam-float}@keyframes steam-float{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}.momo{opacity:0;transform-origin:50%;transition:opacity .4s,transform .4s cubic-bezier(.2,.8,.2,1)}.momo-stage.is-open .momo{opacity:1;animation:.5s cubic-bezier(.2,.8,.2,1) backwards momo-in}.momo-stage.is-open .momo:first-child{animation-delay:.35s}.momo-stage.is-open .momo:nth-child(2){animation-delay:.45s}.momo-stage.is-open .momo:nth-child(3){animation-delay:.55s}.momo-stage.is-open .momo:nth-child(4){animation-delay:.65s}.momo-stage.is-open .momo:nth-child(5){animation-delay:.75s}.momo-stage.is-open .momo:nth-child(6){animation-delay:.85s}@keyframes momo-in{0%{opacity:0;transform:translateY(8px)scale(.6)}to{opacity:1;transform:translateY(0)scale(1)}}.momo:hover:not(.is-eaten){transform:scale(1.08)}.momo.is-eaten{opacity:0;pointer-events:none;transform:scale(.4)}.yum-layer{pointer-events:none;position:absolute;inset:0}.yum{font-family:var(--font-display);color:var(--rose);font-size:22px;font-style:italic;animation:1.4s ease-out forwards yum-rise;position:absolute;transform:translate(-50%,-50%)}@keyframes yum-rise{0%{opacity:0;transform:translate(-50%,-50%)scale(.6)}20%{opacity:1;transform:translate(-50%,-80%)scale(1)}to{opacity:0;transform:translate(-50%,-160%)scale(1)}}.momo-refill{font-family:var(--font-display);color:var(--ink-soft);text-underline-offset:4px;margin:8px auto 0;font-size:16px;font-style:italic;text-decoration:underline;animation:.4s both refill-in;display:block}.momo-refill:hover{color:var(--ink)}@keyframes refill-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.nap-wrap{border-radius:24px;flex-direction:column;align-items:center;gap:18px;padding:24px;transition:background .8s;display:flex}.nap-wrap.is-napping{background:linear-gradient(#2a2438 0%,#3a3050 100%)}.nap-moon{background:var(--bg);border:1px solid var(--ink);border-radius:999px;align-items:center;gap:12px;padding:12px 24px 12px 14px;transition:transform .2s,background .4s,color .4s,border-color .4s;display:inline-flex}.nap-moon:hover{transform:translateY(-2px)}.nap-moon:active{transform:translateY(0)}.nap-moon-label{font-family:var(--font-display);font-size:24px;font-style:italic;font-weight:500}.moon-svg{width:36px;height:36px;transition:transform .6s}.nap-moon.is-on{background:#fbf6ee;border-color:#fbf6ee}.nap-moon.is-on .moon-svg{transform:rotate(-20deg)}.nap-scene{width:100%;max-width:340px;transition:filter .6s;position:relative}.nap-svg{width:100%;height:auto;display:block}.nap-face{aspect-ratio:1;background:#f3d6b8;border-radius:50%;width:22%;position:absolute;overflow:hidden;transform:translate(-50%,-50%);box-shadow:0 2px 6px #2a211c40,0 0 0 2px #fbf6ee}.nap-face image-slot{width:100%;height:100%;display:block}.nap-face-sleep{object-fit:cover;opacity:0;pointer-events:none;border-radius:50%;width:100%;height:100%;transition:opacity .6s;position:absolute;inset:0}.nap-wrap.is-napping .nap-face-sleep{opacity:1}.nap-face-her{top:43.75%;left:40.3846%}.nap-face-me{top:43.75%;left:59.6154%}.nap-hint{letter-spacing:.25em;text-transform:uppercase;color:var(--ink-soft);text-align:center;opacity:.7;margin-top:14px;font-size:10px}.nap-wrap.is-napping .nap-hint{color:#fbf6ee;opacity:.5}.nap-wrap:not(.is-napping) .nap-scene{filter:saturate(.8)}.blanket{transform-origin:bottom;transition:transform .7s cubic-bezier(.2,.8,.2,1);transform:translateY(28px)}.nap-wrap.is-napping .blanket{transform:translateY(-6px)}.head{transform-origin:50%;transition:transform .5s}.nap-wrap.is-napping .nap-face-her{animation:3.6s ease-in-out infinite face-breathe}.nap-wrap.is-napping .nap-face-me{animation:3.6s ease-in-out .6s infinite face-breathe}.nap-heart{opacity:0;transform-origin:130px 62px;transition:opacity .4s,transform .5s cubic-bezier(.2,.8,.2,1);transform:translateY(4px)scale(.6)}.nap-wrap.is-napping .nap-heart{opacity:1;animation:1.8s ease-in-out 1s infinite heartbeat;transform:translateY(0)scale(1)}@keyframes heartbeat{0%,to{transform:scale(1)}20%{transform:scale(1.15)}40%{transform:scale(.95)}60%{transform:scale(1.08)}}.zzz-layer{pointer-events:none;position:absolute;inset:0;overflow:hidden}.zzz{font-family:var(--font-display);color:#fbf6ee;opacity:0;font-style:italic;font-weight:500;position:absolute}.nap-wrap.is-napping .zzz{animation:4.5s ease-out infinite zzz-float}.zzz-1{font-size:18px;top:30%;left:32%;animation-delay:.2s!important}.zzz-2{font-size:22px;top:28%;left:36%;animation-delay:1s!important}.zzz-3{font-size:18px;top:30%;left:64%;animation-delay:1.8s!important}.zzz-4{font-size:24px;top:28%;left:68%;animation-delay:2.6s!important}.zzz-5{font-size:16px;top:24%;left:50%;animation-delay:3.4s!important}@keyframes zzz-float{0%{opacity:0;transform:translateY(10px)rotate(-8deg)}20%{opacity:.95}to{opacity:0;transform:translate(20px,-60px)rotate(12deg)}}@media (width<=520px){.page{padding:64px 20px 48px}.section{margin-bottom:56px}.cell-n{font-size:40px}.cell{min-width:44px}.countdown-sep{font-size:28px}.heart-btn{width:180px;height:180px}.heart-text{padding-bottom:22px;font-size:28px}.voucher-title{font-size:32px}.voucher{padding:24px 40px}}
