:root{--rose-deep:#a5124a;--rose:#d93b70;--rose-mid:#ec6a92;--rose-light:#f79bb7;--rose-pale:#fbcbd9;--tulip-coral:#f4645a;--tulip-gold:#f5a623;--tulip-pink:#ec5f9e;--tulip-violet:#9b5de5;--tulip-cream:#fff1f4;--lily-cream:#fff7ec;--lily-blush:#f8c3ce;--lily-shadow:#edb0c0;--lily-gold:#e2952f;--lily-speck:#c4436a;--leaf:#4c8a5b;--leaf-dark:#35664a;--leaf-light:#7cb883;--stem:#58975f;--dawn-1:#fff6f2;--dawn-2:#fde3ec;--dawn-3:#f6d4e6;--meadow-1:#fdf6e8;--meadow-2:#f9e2ee;--dusk-1:#2b2038;--dusk-2:#43284d;--dusk-3:#6b3a5c;--finale-1:#fff8f4;--finale-2:#fbe0ec;--finale-3:#f3d3e8;--ink:#40222f;--ink-soft:#40222fb8;--ink-light:#fff6faeb;--ink-light-soft:#fff6faad;--font-display:"Iowan Old Style", "Palatino Linotype", "Book Antiqua", Palatino, Georgia, "Times New Roman", serif;--font-ui:ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--ease-bloom:cubic-bezier(.22, 1.06, .36, 1);--ease-soft:cubic-bezier(.4, 0, .2, 1)}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-snap-type:y proximity;background:var(--dawn-1);-webkit-text-size-adjust:100%}body{font-family:var(--font-ui);color:var(--ink);background:var(--dawn-1);-webkit-tap-highlight-color:transparent;margin:0;overflow-x:hidden}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none;padding:0}.scene{min-height:100svh;padding:max(3.5rem, env(safe-area-inset-top)) 1.25rem max(3.5rem, env(safe-area-inset-bottom));scroll-snap-align:start;text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:clamp(1.5rem,5vw,2.5rem);display:flex;position:relative;overflow:hidden}.scene__copy{z-index:2;flex-direction:column;gap:.5rem;width:min(30rem,100%);min-height:5.5rem;display:flex;position:relative}.scene__line{font-family:var(--font-display);text-wrap:balance;margin:0;font-size:clamp(1.15rem,4.6vw,1.6rem);font-style:italic;line-height:1.45}.scene__sub{font-family:var(--font-display);color:var(--ink-soft);text-wrap:balance;margin:0;font-size:clamp(.98rem,3.9vw,1.3rem);line-height:1.5}.scene--dark .scene__line{color:var(--ink-light)}.scene--dark .scene__sub{color:var(--ink-light-soft)}.fade-swap{animation:fade-swap .24s var(--ease-soft) both}@keyframes fade-swap{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.rise{opacity:0;transform:translateY(14px)}.rise.is-in{animation:rise .9s var(--ease-bloom) both;animation-delay:var(--rise-delay,0s)}@keyframes rise{to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.001ms!important;transition-delay:0s!important;animation-duration:.001ms!important;animation-iteration-count:1!important;animation-delay:0s!important}}.lang{top:max(.9rem, env(safe-area-inset-top));right:max(.9rem, env(safe-area-inset-right));z-index:20;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);font-family:var(--font-ui);letter-spacing:.06em;transition:background .3s var(--ease-soft);background:#ffffff9e;border-radius:999px;gap:.15rem;padding:.25rem;font-size:.75rem;display:flex;position:fixed;box-shadow:0 2px 14px #702a4a24}.lang__opt{color:var(--ink-soft);transition:background .24s var(--ease-soft), color .24s var(--ease-soft);border-radius:999px;padding:.32rem .62rem}.lang__opt--on{background:var(--rose);color:#fff}@media (hover:hover){.lang:hover{background:#ffffffd9}}.petals{--heart-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 30'%3E%3Cpath d='M16 28C4 20 1 13.5 1 9.2 1 4.7 4.6 1 9 1c3 0 5.5 1.7 7 4.2C17.5 2.7 20 1 23 1c4.4 0 8 3.7 8 8.2 0 4.3-3 10.8-15 18.8Z'/%3E%3C/svg%3E");pointer-events:none;z-index:1;position:absolute;inset:0;overflow:hidden}.petals__petal{opacity:0;will-change:transform, opacity;border-radius:60% 0;animation-name:petal-fall;animation-timing-function:cubic-bezier(.45,.05,.55,.95);animation-iteration-count:infinite;position:absolute;top:-8%}.petals--burst .petals__petal{animation-iteration-count:1;animation-fill-mode:forwards}.petals__petal--heart{-webkit-mask:var(--heart-mask) center / contain no-repeat;-webkit-mask:var(--heart-mask) center / contain no-repeat;mask:var(--heart-mask) center / contain no-repeat;border-radius:0;animation-name:heart-fall}@keyframes heart-fall{0%{transform:translate3d(0, 0, 0) rotate(calc(var(--spin) * .05));opacity:0}10%{opacity:.95}85%{opacity:.9}to{transform:translate3d(var(--drift), 118vh, 0) rotate(calc(var(--spin) * .05 + 34deg));opacity:0}}@keyframes petal-fall{0%{transform:translate3d(0, 0, 0) rotate(var(--spin));opacity:0}8%{opacity:.9}85%{opacity:.85}to{transform:translate3d(var(--drift), 118vh, 0) rotate(calc(var(--spin) + 420deg));opacity:0}}.rose__glow,.rose__ring,.rose__bud,.rose__shell,.tulip__sway,.tulip__stem,.tulip__leaf,.tulip__head,.tulip__tepal,.lily__petal,.lily__center,.lily__stamen,.stem-draw,.bq__wrap,.bq__filler{transform-box:view-box}@keyframes flower-pop{0%{opacity:0;transform:scale(.04)rotate(-10deg)}45%{opacity:1}to{opacity:1;transform:scale(1)rotate(0)}}.rose__glow{opacity:0;transform:scale(.25)}.rose--open .rose__glow{animation:rose-glow 2s var(--ease-soft) forwards}@keyframes rose-glow{to{opacity:1;transform:scale(1)}}.rose__ring{opacity:0;transform:rotate(-52deg)scale(.05)}.rose--open .rose__ring{animation:rose-unfurl 1.5s var(--ease-bloom) forwards}@keyframes rose-unfurl{0%{opacity:0;transform:rotate(-52deg)scale(.05)}22%{opacity:1}to{opacity:1;transform:rotate(0)scale(1)}}.rose__bud{animation:4.4s ease-in-out infinite rose-breathe}@keyframes rose-breathe{0%,to{transform:scale(1)rotate(0)}50%{transform:scale(1.04)rotate(-1.4deg)}}.rose--open .rose__bud{animation:none}.rose--open .rose__shell{animation:rose-shell 1s var(--ease-bloom) forwards}@keyframes rose-shell{to{transform:rotate(var(--sa,0deg)) scale(1.25);opacity:0}}.tulip__sway{animation:sway var(--sway,7s) ease-in-out infinite alternate;animation-delay:var(--sway-delay,0s)}@keyframes sway{0%{transform:rotate(-1.7deg)}to{transform:rotate(2deg)}}.tulip__stem{transform:scaleY(.02)}.is-in .tulip__stem{animation:grow-stem 1.15s var(--ease-bloom) forwards;animation-delay:var(--d,0s)}@keyframes grow-stem{to{transform:scaleY(1)}}.tulip__leaf,.tulip__head{opacity:0;transform:scale(.04)}.is-in .tulip__leaf{animation:flower-pop .9s var(--ease-bloom) forwards;animation-delay:calc(var(--d,0s) + .45s)}.is-in .tulip__head{animation:flower-pop .95s var(--ease-bloom) forwards;animation-delay:calc(var(--d,0s) + .62s)}.tulip__tepal{transform:rotate(var(--closed,0deg))}.is-in .tulip__tepal{animation:tepal-open 1.4s var(--ease-bloom) forwards;animation-delay:calc(var(--d,0s) + 1s)}@keyframes tepal-open{to{transform:rotate(0)}}.lily__petal{opacity:0;transform:rotate(-16deg)scale(.08)}.is-in .lily__petal{animation:lily-open 1.4s var(--ease-bloom) forwards;animation-delay:var(--d,0s)}@keyframes lily-open{0%{opacity:0;transform:rotate(-16deg)scale(.08)}25%{opacity:1}to{opacity:1;transform:rotate(0)scale(1)}}.lily__center,.lily__stamen{opacity:0;transform:scale(.04)}.is-in .lily__center{animation:flower-pop .8s var(--ease-bloom) forwards;animation-delay:calc(var(--d,0s) + .5s)}.is-in .lily__stamen{animation:flower-pop .9s var(--ease-bloom) forwards;animation-delay:calc(var(--d,0s) + .7s)}.stem-draw{stroke-dasharray:1;stroke-dashoffset:1px}.is-in .stem-draw{animation:draw-stem 1.1s var(--ease-soft) forwards;animation-delay:var(--d,0s)}@keyframes draw-stem{to{stroke-dashoffset:0}}.bq__wrap,.bq__filler{opacity:0;transform:scale(.04)}.is-in .bq__wrap{animation:flower-pop .9s var(--ease-bloom) forwards;animation-delay:var(--d,0s)}.is-in .bq__filler{animation:flower-pop .8s var(--ease-bloom) forwards;animation-delay:var(--d,0s)}.scene--finale{background:radial-gradient(120% 70% at 50% 100%, #fff6ef 0%, #fff6ef00 65%), linear-gradient(180deg, var(--finale-3) 0%, var(--finale-2) 30%, var(--finale-1) 100%);gap:clamp(.9rem,3vw,1.6rem);padding-block:2.5rem}.finale__lead{z-index:2;width:min(26rem,100%);min-height:3rem;color:var(--ink-soft);position:relative}.finale__bouquet{z-index:2;width:min(68vw,17.5rem);position:relative}.finale__bouquet svg{filter:drop-shadow(0 14px 30px #7e34562e);width:100%;height:auto;display:block}.card{z-index:2;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);--rise-delay:1.6s;background:#ffffffb8;border-radius:1.25rem;flex-direction:column;gap:.35rem;width:min(22rem,100%);min-height:8.5rem;padding:1.35rem 1.5rem;display:flex;position:relative;box-shadow:0 10px 34px #7e345629}.card__title{font-family:var(--font-display);color:var(--rose-deep);margin:0;font-size:clamp(1.35rem,5.4vw,1.75rem)}.card__line{font-family:var(--font-display);margin:0;font-size:clamp(1.05rem,4.2vw,1.3rem);font-style:italic}.card__sub{color:var(--ink-soft);margin:.15rem 0 0;font-size:clamp(.86rem,3.4vw,.98rem);line-height:1.5}.heart{z-index:2;color:var(--rose);letter-spacing:.2em;text-transform:uppercase;opacity:.85;transition:transform .3s var(--ease-bloom);flex-direction:column;align-items:center;gap:.35rem;font-size:.68rem;display:flex;position:relative}.heart svg{animation:2.6s ease-in-out infinite heartbeat}.heart:active{transform:scale(.92)}.heart:focus-visible{outline:2px solid var(--rose);outline-offset:6px;border-radius:.75rem}@keyframes heartbeat{0%,to{transform:scale(1)}14%{transform:scale(1.16)}28%{transform:scale(1)}42%{transform:scale(1.1)}56%{transform:scale(1)}}.hint{bottom:max(1.2rem, env(safe-area-inset-bottom));z-index:3;color:var(--ink-soft);letter-spacing:.22em;text-transform:uppercase;opacity:0;transition:opacity .8s var(--ease-soft);pointer-events:none;flex-direction:column;align-items:center;gap:.3rem;font-size:.7rem;display:flex;position:absolute;left:50%;translate:-50%}.hint--show{opacity:.75}.hint--dark{color:var(--ink-light-soft)}.hint svg{animation:2.4s ease-in-out infinite hint-bob}@keyframes hint-bob{0%,to{transform:translateY(-2px)}50%{transform:translateY(3px)}}.scene--bud{background:radial-gradient(120% 80% at 50% 0%, #fffaf3 0%, #fffaf300 62%), linear-gradient(170deg, var(--dawn-1) 0%, var(--dawn-2) 58%, var(--dawn-3) 100%)}.bud{z-index:2;width:min(76vw,19rem);transition:transform .5s var(--ease-bloom);border-radius:50%;display:block;position:relative}.bud:not(:disabled):active{transform:scale(.97)}.bud:focus-visible{outline:2px solid var(--rose);outline-offset:8px}.bud:disabled{cursor:default}.bud svg{width:100%;height:auto;display:block;overflow:visible}.bud__hint{animation:fade-swap .24s var(--ease-soft) both, hint-pulse 2.8s ease-in-out .24s infinite;letter-spacing:.04em}@keyframes hint-pulse{0%,to{opacity:.65}50%{opacity:1}}.scene--lilies{background:radial-gradient(90% 60% at 50% 30%, #ffd6e738 0%, #ffd6e700 70%), linear-gradient(180deg, var(--meadow-1) 0%, var(--dusk-3) 22%, var(--dusk-2) 55%, var(--dusk-1) 82%, var(--dusk-3) 95%, var(--finale-3) 100%)}.lilies{z-index:2;filter:drop-shadow(0 10px 26px #140a1e59);width:min(100%,30rem);height:auto;display:block;position:relative}.motes{pointer-events:none;z-index:1;position:absolute;inset:0;overflow:hidden}.motes span{opacity:0;filter:blur(.4px);background:#fff3dc;border-radius:50%;width:5px;height:5px;animation-name:mote-rise;animation-timing-function:ease-in-out;animation-iteration-count:infinite;position:absolute;bottom:-4%}@keyframes mote-rise{0%{opacity:0;transform:translateY(0)scale(.6)}15%{opacity:.7}80%{opacity:.5}to{opacity:0;transform:translateY(-96vh)scale(1.1)}}.scene--tulips{background:radial-gradient(100% 70% at 50% 100%, #fdf3df 0%, #fdf3df00 70%), linear-gradient(180deg, var(--dawn-2) 0%, var(--meadow-2) 45%, var(--meadow-1) 100%)}.tulips{z-index:2;width:min(100%,34rem);height:auto;display:block;position:relative}
