:root{--paper:#fcf8fc;--paper-2:#f7eff7;--ink:#3b3347;--ink-soft:#6b6178;--lilac-deep:#6a52a3;--rose:#b04f7a;--berry:#9c3f6b;--pink:#f2b5cf;--blush:#f9d3e0;--lilac:#cdb8ee;--mint:#bfe6d3;--butter:#f7e7b0;--sky:#bbd8f2;--accent:#d9568a;--plum-night:#2a2030;--ease:cubic-bezier(.2, .7, .2, 1);--font-ui:var(--font-body,ui-rounded), "Hiragino Maru Gothic ProN", "Quicksand", system-ui, sans-serif;--font-script:var(--font-hand,"Klee One"), "Segoe Print", "Bradley Hand", cursive}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;background:var(--paper)}html.is-loading,html.is-loading body{height:100%;overflow:hidden}body{color:var(--ink);background:var(--paper);font-family:var(--font-ui);-webkit-font-smoothing:antialiased;margin:0;font-size:1.0625rem;line-height:1.65;overflow-x:clip}img,video,canvas,svg{max-width:100%}::selection{background:var(--blush);color:var(--berry)}html.lenis,html.lenis body{height:auto}.lenis.lenis-smooth{scroll-behavior:auto!important}.lenis.lenis-stopped{overflow:hidden}#petals{z-index:30;pointer-events:none;width:100vw;height:100dvh;position:fixed;inset:0}.preloader{z-index:100;background:radial-gradient(circle at 50% 45%, #ffeaf3 0%, var(--paper) 62%);transition:opacity .9s var(--ease), visibility 0s linear .9s;place-items:center;display:grid;position:fixed;inset:0}.preloader.done{opacity:0;visibility:hidden}.preloader .inner{justify-items:center;gap:1.1rem;display:grid}.preloader svg{filter:drop-shadow(0 6px 18px #d9568a47);width:96px;height:96px;overflow:visible}.preloader .fill{fill:var(--accent)}.preloader .rim{fill:none;stroke:var(--berry);stroke-width:1.4px;stroke-linejoin:round}.preloader p{font-family:var(--font-script);color:var(--ink-soft);letter-spacing:.04em;margin:0;font-size:.98rem}.preloader .pct{font-variant-numeric:tabular-nums;text-align:right;min-width:3ch;display:inline-block}.beat{transform-origin:50% 55%;animation:1.5s ease-in-out infinite beat}@keyframes beat{0%,to{transform:scale(1)}14%{transform:scale(1.07)}28%{transform:scale(.98)}42%{transform:scale(1.04)}}html.no-film #cinema{display:none}#cinema{background:var(--plum-night);height:900vh;position:relative}#cinema .stage{background:var(--plum-night);isolation:isolate;height:100svh;position:sticky;top:0;overflow:hidden}.bed{opacity:0;pointer-events:none;background:radial-gradient(circle at 50% 62%, #ffe4ef 0%, #fdeff5 38%, var(--paper) 78%);position:absolute;inset:0}.scene{will-change:opacity;position:absolute;inset:0}.scene .amb{opacity:.8;width:124%;height:124%;display:none;position:absolute;inset:-12%}.scene[data-mode=frame] .amb,.scene[data-mode=band] .amb{display:block}.scene .frame{position:absolute;inset:0;overflow:hidden}.scene .frame canvas{width:100%;height:100%;display:block}.scene[data-mode=band] .frame{aspect-ratio:16/9;height:auto;inset:50% 0 auto;transform:translateY(-50%);box-shadow:0 30px 90px #14081e80}.scene[data-mode=frame] .frame{aspect-ratio:9/16;border-radius:28px;height:min(92svh,1100px);inset:50% auto auto 50%;transform:translate(-50%,-50%);box-shadow:0 40px 120px #14081e8c,0 0 0 1px #ffffff24}.grade{pointer-events:none;background:linear-gradient(#0000 58%,#ff82b929),radial-gradient(at 50% 45%,#0000 55%,#3a14344d);position:absolute;inset:0}.lines{pointer-events:none;place-items:end center;padding:0 1.4rem 15svh;display:grid;position:absolute;inset:0}.line{text-align:center;color:#fff9fc;max-width:17ch;font-family:var(--font-script);letter-spacing:.01em;text-shadow:0 2px 26px #3a1232a6,0 0 2px #3a123266;opacity:0;visibility:hidden;will-change:opacity, transform;grid-area:1/1;margin:0;font-size:clamp(1.7rem,6.2vw,3.3rem);font-weight:600;line-height:1.25}.line.big{max-width:14ch;font-size:clamp(2.2rem,8.4vw,4.6rem)}.wash{opacity:0;pointer-events:none;background:radial-gradient(circle at 50% 62%, #ffe4ef 0%, #fdeff5 38%, var(--paper) 78%);position:absolute;inset:0}.cue{color:#fff4f9;font-family:var(--font-script);letter-spacing:.16em;text-transform:lowercase;text-shadow:0 1px 12px #280a2899;pointer-events:none;justify-items:center;gap:.35rem;font-size:.82rem;display:grid;position:absolute;bottom:3.2vh;left:50%;transform:translate(-50%)}.cue svg{width:18px;height:18px;animation:1.8s ease-in-out infinite bob}@keyframes bob{0%,to{transform:translateY(0)}50%{transform:translateY(6px)}}.rail{pointer-events:none;background:#ffffff2e;border-radius:3px;width:3px;position:absolute;top:18%;bottom:18%;right:14px}.rail .bar{transform-origin:top;background:linear-gradient(#ffd0e3,#ff8fba);border-radius:3px;position:absolute;inset:0;transform:scaleY(0)}.dock{top:max(12px, env(safe-area-inset-top));z-index:60;background:#fff7fbe6;border-radius:999px;gap:8px;padding:6px;display:flex;position:fixed;right:12px;box-shadow:0 6px 24px #501e462e,0 0 0 1px #fff9}.dock button{cursor:pointer;width:38px;height:38px;color:var(--berry);transition:background .2s var(--ease), transform .2s var(--ease), color .2s;background:0 0;border:0;border-radius:50%;place-items:center;display:grid}.dock button:hover{background:var(--blush);transform:translateY(-1px)}.dock button:focus-visible{outline:2px solid var(--lilac-deep);outline-offset:2px}.dock button[aria-pressed=false]{color:#9a8fa8;background:#0000000a}.dock button[aria-pressed=false] svg{opacity:.55}.dock svg{width:20px;height:20px}.hint{left:50%;bottom:max(16px, env(safe-area-inset-bottom));z-index:55;white-space:nowrap;color:var(--berry);font-family:var(--font-script);opacity:0;pointer-events:none;transition:opacity .6s var(--ease), transform .6s var(--ease);background:#fff7fbeb;border-radius:999px;padding:.5rem 1rem;font-size:.9rem;position:fixed;transform:translate(-50%,12px);box-shadow:0 6px 24px #501e4629}.hint.show{opacity:1;transform:translate(-50%)}#scrapbook{background:var(--paper);position:relative;overflow:clip}#scrapbook:before{content:"";background-image:var(--ambient-bg);opacity:.075;pointer-events:none;background-position:50%;background-size:cover;position:absolute;inset:0}#scrapbook:after{content:"";pointer-events:none;background:radial-gradient(40vmax 40vmax at 12% 8%,#f9d3e0b3,#0000 70%),radial-gradient(46vmax 46vmax at 92% 28%,#cdb8ee73,#0000 70%),radial-gradient(44vmax 44vmax at 8% 62%,#bfe6d380,#0000 70%),radial-gradient(50vmax 50vmax at 90% 92%,#f7e7b073,#0000 70%);position:absolute;inset:0}#scrapbook>*{z-index:1;position:relative}.sec{max-width:1180px;margin:0 auto;padding:clamp(4.5rem,12vw,9rem) clamp(1.1rem,5vw,4rem);position:relative}.eyebrow{font-family:var(--font-script);color:var(--rose);letter-spacing:.22em;text-transform:lowercase;margin:0 0 .6rem;font-size:.95rem}h1,h2{font-family:var(--font-script);color:var(--ink);margin:0 0 1rem;font-weight:600;line-height:1.12}h1{font-size:clamp(2.8rem,9vw,6rem)}h2{font-size:clamp(1.9rem,5.4vw,3.4rem)}.hl{background:linear-gradient(transparent 58%, var(--blush) 58% 92%, transparent 92%);color:var(--berry);padding:0 .15em}.hello{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);align-items:center;gap:clamp(1.6rem,5vw,4.5rem);display:grid}.hero-photo{justify-self:center;width:min(100%,420px);margin:0;position:relative;transform:rotate(-3deg)}.hero-photo img{border-radius:50% 50% 46% 54%/55% 52% 48% 45%;width:100%;height:auto;display:block;box-shadow:0 22px 60px #b04f7a47,0 0 0 8px #fff}.hero-photo .spark{width:40px;height:40px;color:var(--accent);filter:drop-shadow(0 0 6px #f0a0c8e6);animation:2.6s ease-in-out infinite twinkle;position:absolute}.hero-photo .s1{top:-8px;left:6%}.hero-photo .s2{color:#e9a93c;width:28px;height:28px;animation-delay:.8s;top:18%;right:-4px}.hero-photo .s3{color:#8a6fd1;width:32px;height:32px;animation-delay:1.5s;bottom:6%;left:-10px}@keyframes twinkle{0%,to{opacity:.25;transform:scale(.7)rotate(0)}50%{opacity:1;transform:scale(1.05)rotate(20deg)}}.msg{justify-self:start;max-width:34rem}.msg p{color:var(--ink);margin:0 0 1rem}.msg .sign{font-family:var(--font-script);color:var(--rose);margin-top:1.4rem;font-size:1.25rem}.board{grid-template-columns:repeat(12,minmax(0,1fr));align-items:start;gap:clamp(1rem,3vw,2rem);display:grid}.pola{transform:rotate(var(--rot,0deg));transition:transform .5s var(--ease), box-shadow .5s var(--ease);cursor:zoom-in;background:#fff;border-radius:6px;margin:0;padding:.7rem .7rem .4rem;position:relative;box-shadow:0 14px 40px #5a285029,0 1px #0000000a}.pola:hover,.pola:focus-visible{z-index:3;outline:none;transform:rotate(0)translateY(-6px)scale(1.02);box-shadow:0 26px 60px #5a28503d}.pola:before{content:"";width:84px;height:24px;transform:translateX(-50%) rotate(var(--tape,-3deg));background:#f9d3e0d1;border-radius:3px;position:absolute;top:-12px;left:50%;box-shadow:0 1px 4px #00000014}.pola img{border-radius:3px;width:100%;height:auto;display:block}.pola figcaption{font-family:var(--font-script);color:var(--ink-soft);text-align:center;padding:.55rem 0 .35rem;font-size:.98rem}.pola.a{--rot:-3deg;grid-column:1/span 5}.pola.b{--rot:2.5deg;--tape:4deg;grid-column:7/span 6;margin-top:3rem}.pola.c{--rot:2deg;--tape:-5deg;grid-column:2/span 5;margin-top:-1rem}.pola.d{--rot:-2deg;grid-column:8/span 4;margin-top:1rem}.vidwrap{text-align:center;justify-items:center;gap:1.4rem;display:grid}.phone{aspect-ratio:478/850;background:linear-gradient(145deg,#fff,#f3e4ee);border-radius:40px;width:min(78vw,300px);padding:10px;position:relative;box-shadow:0 30px 80px #78326452,inset 0 0 0 1px #ffffffe6,0 0 0 1px #783c641f}.phone video{object-fit:cover;background:#000;border-radius:31px;width:100%;height:100%;display:block}.phone .play{cursor:pointer;color:#fff;font-family:var(--font-script);transition:opacity .4s var(--ease);background:linear-gradient(#3c14372e,#3c14376b);border:0;border-radius:31px;align-content:center;place-items:center;gap:.6rem;font-size:1rem;display:grid;position:absolute;inset:10px}.phone .play svg{filter:drop-shadow(0 4px 16px #00000059);width:64px;height:64px}.phone.playing .play{opacity:0;pointer-events:none}.vidnote{color:var(--ink-soft);font-family:var(--font-script);margin:0}.quote{text-align:center}.quote .q1{font-family:var(--font-script);color:var(--rose);letter-spacing:.04em;margin:0;font-size:clamp(1.3rem,3.6vw,2rem)}.quote .q2{font-family:var(--font-script);max-width:16ch;color:var(--ink);margin:.2rem auto 0;font-size:clamp(2.2rem,7.6vw,5rem);font-weight:600;line-height:1.15}.divider{color:var(--accent);justify-content:center;gap:.9rem;margin:2rem 0 0;display:flex}.divider svg{opacity:.85;width:22px;height:22px}.divider svg:nth-child(2){color:#8a6fd1;transform:scale(1.25)}.cakewrap{text-align:center;justify-items:center;gap:1.2rem;display:grid}#cake-stage{aspect-ratio:1;filter:drop-shadow(0 18px 30px #b04f7a4d);cursor:pointer;width:min(78vw,340px)}#cake-stage svg{width:100%;height:100%;overflow:visible}#cake-stage .hc-flame{transition:opacity .5s,transform .5s}#cake-stage .hc-flame.out{opacity:0;animation:none;transform:scale(.2)}.btnrow{flex-wrap:wrap;justify-content:center;gap:.7rem;display:flex}.btn{font:inherit;font-family:var(--font-script);cursor:pointer;color:#fff;transition:transform .2s var(--ease), box-shadow .2s;background:linear-gradient(135deg,#e0568f,#b04f7a);border:0;border-radius:999px;padding:.7rem 1.3rem;font-size:1rem;font-weight:600;box-shadow:0 10px 26px #b04f7a59}.btn:hover{transform:translateY(-2px);box-shadow:0 16px 34px #b04f7a6b}.btn.ghost{color:var(--berry);background:#fff;box-shadow:0 6px 18px #b04f7a2e}.btn:focus-visible{outline:2px solid var(--lilac-deep);outline-offset:3px}.fine{max-width:28rem;color:var(--ink-soft);margin:0;font-size:.9rem}#wish{max-width:26rem;font-family:var(--font-script);color:var(--berry);opacity:0;transition:opacity .9s var(--ease), transform .9s var(--ease);min-height:3.2em;margin:0;font-size:clamp(1.4rem,4vw,2rem);transform:translateY(10px)}#wish.on{opacity:1;transform:none}.cat{z-index:5;width:var(--w,130px);touch-action:none;user-select:none;-webkit-user-drag:none;cursor:grab;transition:opacity .4s var(--ease), visibility 0s, transform .3s var(--ease);position:absolute}.cat img{pointer-events:none;background:#fff;border:5px solid #fff;border-radius:18px;width:100%;height:auto;display:block;box-shadow:0 8px 16px #501e4638}.cat.cut img{box-shadow:none;background:0 0;border:0;border-radius:0}.cat.drag{cursor:grabbing;transition:none}.cat.pop{animation:pop .52s var(--ease)}@keyframes pop{30%{transform:translate(var(--tx,0), var(--ty,0)) rotate(var(--rot,0deg)) scale(1.18)}to{transform:translate(var(--tx,0), var(--ty,0)) rotate(var(--rot,0deg)) scale(1)}}html[data-stickers=off] .cat{opacity:0;visibility:hidden;transition:opacity .4s var(--ease), visibility 0s linear .4s}.foot{text-align:center;color:var(--ink-soft);padding:3rem 1.2rem 5rem;font-size:.85rem}.foot p{max-width:40rem;margin:.3rem auto}dialog.lb{background:0 0;border:0;max-width:94vw;max-height:94vh;padding:0;overflow:visible}dialog.lb::backdrop{backdrop-filter:blur(6px);background:#30162eb8}dialog.lb img{border:8px solid #fff;border-radius:10px;max-width:92vw;max-height:88vh;display:block;box-shadow:0 30px 90px #00000080}dialog.lb button{width:36px;height:36px;color:var(--berry);cursor:pointer;background:#fff;border:0;border-radius:50%;font-size:1.2rem;position:absolute;top:-14px;right:-14px;box-shadow:0 6px 18px #0000004d}.reveal{opacity:0;transition:opacity .9s var(--ease), transform .9s var(--ease);transform:translateY(26px)}.reveal.in{opacity:1;transform:none}@media (width<=760px){.hello{grid-template-columns:1fr}.msg{justify-self:center}.board{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.4rem 1rem}.pola.a,.pola.b,.pola.c,.pola.d{grid-column:auto;margin-top:0}.pola.b,.pola.d{margin-top:1.6rem}.cat{width:var(--wm,96px)}.cat.mhide{display:none}}@media (prefers-reduced-motion:reduce){.beat,.cue svg,.hero-photo .spark{animation:none}.reveal{opacity:1;transition:none;transform:none}.pola,.btn,.dock button,.line{transition:none}}.parade{z-index:2;transition:opacity .4s var(--ease);padding:.6rem 0;position:relative;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,#0000,#000 7% 93%,#0000);mask-image:linear-gradient(90deg,#0000,#000 7% 93%,#0000)}.parade .track{will-change:transform;width:max-content;animation:44s linear infinite march;display:flex}.parade .track.rev{animation-direction:reverse}.parade .group{align-items:flex-end;gap:2.2rem;padding-right:2.2rem;display:flex}.parade img{flex:none;width:auto;height:104px}@keyframes march{to{transform:translate(-50%)}}html[data-stickers=off] .parade{opacity:0;visibility:hidden}@media (width<=760px){.parade img{height:78px}.parade .group{gap:1.4rem;padding-right:1.4rem}}@media (prefers-reduced-motion:reduce){.parade .track{justify-content:center;width:auto;animation:none}.parade .group:nth-child(2){display:none}}#hc-layer{z-index:40;pointer-events:none;position:fixed;inset:0;overflow:hidden}#hc-layer>div{will-change:transform, opacity;position:absolute;transform:translate(-50%,-50%)}#hc-layer svg{width:100%;height:100%;display:block;overflow:visible}.hc-flash{opacity:0;background:radial-gradient(circle,currentColor 0%,#0000 68%);border-radius:50%;animation:.62s cubic-bezier(.16,.8,.24,1) both hc-flash}.hc-glyph{opacity:0;animation:1.5s cubic-bezier(.2,.7,.2,1) both hc-glyph}.hc-glyph svg{filter:drop-shadow(0 0 4px)drop-shadow(0 0 12px #ec78aa73)}.hc-inner svg{filter:drop-shadow(0 0 3px)}.hc-ring{opacity:0;animation:.95s cubic-bezier(.16,.8,.24,1) both hc-ring}.hc-ring svg{filter:drop-shadow(0 0 4px)}.hc-mote{opacity:0;animation:1.3s cubic-bezier(.2,.7,.2,1) both hc-mote}.hc-mote svg{filter:drop-shadow(0 1px 2px #78283a47)}.hc-cake{opacity:0;animation:2.7s cubic-bezier(.2,.7,.2,1) both hc-cake}.hc-cake svg{filter:drop-shadow(0 0 1px #fff7fb)drop-shadow(0 0 8px #f0a0c8e6)drop-shadow(0 0 24px #f7e7b0bf)}.hc-tier{transform-box:fill-box;transform-origin:50% 100%;animation:.52s cubic-bezier(.2,.9,.3,1.2) both hc-rise}.hc-t1{animation-delay:60ms}.hc-t2{animation-delay:.2s}.hc-t3{animation-delay:.34s}.hc-candles{animation:.3s .52s both hc-fadein}.hc-topheart{animation:.3s .7s both hc-fadein}.hc-flame{transform-box:fill-box;transform-origin:50% 100%;animation:.76s ease-in-out infinite alternate hc-flicker}.hc-spin{transform-origin:60px 60px;transform-box:view-box;animation:7s linear infinite hc-rot}.hc-spin-rev{transform-origin:60px 60px;transform-box:view-box;animation:9.5s linear infinite reverse hc-rot}.hc-spin-slow{transform-origin:60px 60px;transform-box:view-box;animation:16s linear infinite hc-rot}@keyframes hc-flash{0%{opacity:.85;transform:translate(-50%,-50%)scale(.2)}to{opacity:0;transform:translate(-50%,-50%)scale(1.15)}}@keyframes hc-glyph{0%{opacity:0;transform:translate(-50%, -50%) scale(.55) rotate(var(--r0,0deg))}18%{opacity:1;transform:translate(-50%, -50%) scale(.92) rotate(calc(var(--r0,0deg) * .5 + var(--r1,40deg) * .2))}62%{opacity:1}to{opacity:0;transform:translate(-50%, -50%) scale(1.12) rotate(var(--r1,40deg))}}@keyframes hc-ring{0%{opacity:.9;transform:translate(-50%,-50%)scale(.18)}to{opacity:0;transform:translate(-50%,-50%)scale(1.25)}}@keyframes hc-mote{0%{opacity:0;transform:translate(-50%,-50%)translate(0)scale(.4)rotate(0)}18%{opacity:1}to{opacity:0;transform:translate(-50%, -50%) translate(var(--dx,0), var(--dy,-80px)) scale(1) rotate(var(--tilt,0deg))}}@keyframes hc-cake{0%{opacity:0;transform:translate(-50%,-50%)scale(.72)}14%{opacity:1;transform:translate(-50%,-50%)scale(1.02)}62%{opacity:1;transform:translate(-50%,-50%)scale(1)}to{opacity:0;transform:translate(-50%,-54%)scale(1.06)}}@keyframes hc-rise{0%{opacity:0;transform:translateY(14px)scaleY(.7)}to{opacity:1;transform:translateY(0)scaleY(1)}}@keyframes hc-fadein{0%{opacity:0}to{opacity:1}}@keyframes hc-flicker{0%{transform:scale(1)skew(-2deg)}to{transform:scale(.94,1.08)skew(2.5deg)}}@keyframes hc-rot{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){#hc-layer{display:none}.hc-flame,.hc-spin,.hc-spin-rev,.hc-spin-slow{animation:none}}
