@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/sarabun-thai-400-normal-C2DaJlKK.woff2)format("woff2"),url(/assets/sarabun-thai-400-normal-CH-UbWgg.woff)format("woff");unicode-range:U+2D7,U+303,U+331,U+E01-E5B,U+200C-200D,U+25CC}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/sarabun-vietnamese-400-normal-igdrzAGY.woff2)format("woff2"),url(/assets/sarabun-vietnamese-400-normal-DPfkSCMy.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/sarabun-latin-ext-400-normal-BbP7GpLL.woff2)format("woff2"),url(/assets/sarabun-latin-ext-400-normal-BsmTn0SS.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/sarabun-latin-400-normal-URPBxl-K.woff2)format("woff2"),url(/assets/sarabun-latin-400-normal-DmguIS-7.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/sarabun-thai-500-normal-BVssjame.woff2)format("woff2"),url(/assets/sarabun-thai-500-normal-C3iDLEzi.woff)format("woff");unicode-range:U+2D7,U+303,U+331,U+E01-E5B,U+200C-200D,U+25CC}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/sarabun-vietnamese-500-normal-Dpe7Br9m.woff2)format("woff2"),url(/assets/sarabun-vietnamese-500-normal-CpRVvGRU.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/sarabun-latin-ext-500-normal-DE1LysqI.woff2)format("woff2"),url(/assets/sarabun-latin-ext-500-normal-Cot16Bd2.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/sarabun-latin-500-normal-BjUTcdxu.woff2)format("woff2"),url(/assets/sarabun-latin-500-normal-CJexTAnl.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/sarabun-thai-600-normal-3dIAQ-_s.woff2)format("woff2"),url(/assets/sarabun-thai-600-normal-DWKeTe6a.woff)format("woff");unicode-range:U+2D7,U+303,U+331,U+E01-E5B,U+200C-200D,U+25CC}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/sarabun-vietnamese-600-normal-DkxrOlLB.woff2)format("woff2"),url(/assets/sarabun-vietnamese-600-normal-BMbOgAW-.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/sarabun-latin-ext-600-normal-BRxjKUQ6.woff2)format("woff2"),url(/assets/sarabun-latin-ext-600-normal-0tXu9x_i.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/sarabun-latin-600-normal-DMD3TROr.woff2)format("woff2"),url(/assets/sarabun-latin-600-normal-9FonlkKx.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/sarabun-thai-700-normal-CbuDipM3.woff2)format("woff2"),url(/assets/sarabun-thai-700-normal-CP2-p8e-.woff)format("woff");unicode-range:U+2D7,U+303,U+331,U+E01-E5B,U+200C-200D,U+25CC}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/sarabun-vietnamese-700-normal-DrMy3BMX.woff2)format("woff2"),url(/assets/sarabun-vietnamese-700-normal-lN6N8XBT.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/sarabun-latin-ext-700-normal-CnQtP196.woff2)format("woff2"),url(/assets/sarabun-latin-ext-700-normal-ykw7DJpk.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/sarabun-latin-700-normal-DQKyWxHq.woff2)format("woff2"),url(/assets/sarabun-latin-700-normal-DUuqj4Ju.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{color:#403536;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;--cream:#fff8f4;--cream-deep:#fff0ea;--soft-pink:#f5d6dc;--dusty-pink:#d99aa8;--deep-rose:#a95c6b;--burgundy:#713e49;--warm-brown:#765951;--ink:#403536;--muted:#876f70;--white:#fffdfb;--line:#a95c6b33;--shadow:0 24px 70px #713e4924;background:#fff8f4;font-family:Sarabun,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}html{background:var(--cream);min-width:320px;min-height:100%}body{background:var(--cream);min-width:320px;min-height:100%;margin:0}button,input,textarea,select{font:inherit}button{-webkit-tap-highlight-color:transparent}button:focus-visible{outline:3px solid var(--deep-rose);outline-offset:3px}button:disabled{cursor:not-allowed;opacity:.62}p,h1,h2,figure{margin:0}.app-shell{isolation:isolate;width:100%;min-height:100dvh;padding:calc(env(safe-area-inset-top) + 14px) calc(env(safe-area-inset-right) + 14px) calc(env(safe-area-inset-bottom) + 14px) calc(env(safe-area-inset-left) + 14px);background:radial-gradient(circle at 15% 12%, #f5d6dcad, transparent 25%), radial-gradient(circle at 88% 82%, #d99aa838, transparent 30%), linear-gradient(145deg, #fffaf7 0%, var(--cream) 52%, #fff1ed 100%);grid-template-rows:auto minmax(0,1fr) auto;display:grid;position:relative;overflow:hidden}.ambient{z-index:-1;filter:blur(2px);opacity:.3;pointer-events:none;border-radius:50%;width:220px;height:220px;position:absolute}.ambient-one{background:var(--soft-pink);top:15%;left:-125px}.ambient-two{background:#e8b9bd;bottom:12%;right:-145px}.floating-doodles{z-index:1;color:var(--deep-rose);pointer-events:none;position:absolute;inset:0;overflow:hidden}.floating-doodles span{opacity:.35;animation:5.5s ease-in-out infinite drift;position:absolute}.floating-doodles span:first-child{font-size:1rem;top:18%;left:9%}.floating-doodles span:nth-child(2){font-size:1.4rem;animation-delay:-2s;top:42%;right:8%}.floating-doodles span:nth-child(3){font-size:1.3rem;animation-delay:-3.5s;bottom:18%;left:14%}.floating-doodles span:nth-child(4){font-size:.9rem;animation-delay:-1s;bottom:28%;right:15%}.topbar,.experience-card,.footer-note{width:min(100%,590px);margin-left:auto;margin-right:auto}.experience-card,.footer-note{z-index:2;position:relative}.topbar{z-index:2;justify-content:space-between;align-items:center;gap:12px;min-height:48px;display:flex;position:relative}.progress-dots{align-items:center;gap:8px;min-height:44px;padding:0 4px;display:flex}.progress-dot{background:#a95c6b33;border-radius:50%;width:7px;height:7px;transition:transform .3s,background-color .3s;display:block}.progress-dot.is-active{background:var(--deep-rose);transform:scale(1.25)}.music-control{justify-content:flex-end;align-items:center;gap:7px;min-width:0;display:flex}.music-button{min-width:44px;min-height:44px;color:var(--burgundy);cursor:pointer;background:#fffdfbcc;border:1px solid #a95c6b3d;border-radius:999px;justify-content:center;align-items:center;gap:6px;padding:7px 12px;transition:transform .18s,background-color .18s;display:inline-flex;box-shadow:0 6px 18px #713e4914}.music-button:hover{background:var(--white);transform:translateY(-1px)}.music-button span:first-child{font-size:1.1rem;line-height:1}.music-button span:last-child{white-space:nowrap;font-size:.78rem}.music-hint{max-width:150px;color:var(--muted);text-align:right;font-size:.72rem;line-height:1.2}.experience-card{overscroll-behavior:contain;min-height:0;max-height:calc(100dvh - 112px);box-shadow:var(--shadow);-webkit-overflow-scrolling:touch;background:#fffdfbcc;border:1px solid #a95c6b1f;border-radius:34px;align-self:center;overflow:auto}.scene-stage{animation:.52s cubic-bezier(.22,.8,.28,1) both scene-in}.scene{text-align:center;flex-direction:column;align-items:center;min-height:510px;padding:clamp(28px,7vw,54px) clamp(20px,7vw,54px) 38px;display:flex}.scene:focus{outline:none}.sticker{object-fit:contain;filter:drop-shadow(0 14px 10px #713e491c);width:clamp(150px,49vw,235px);height:auto;max-height:210px;margin:0 auto 14px;animation:4.5s ease-in-out infinite sticker-bob;display:block}.scene-kicker{color:var(--deep-rose);letter-spacing:.16em;text-transform:uppercase;margin-bottom:8px;font-size:.68rem;font-weight:600}h1{max-width:470px;color:var(--burgundy);font-size:clamp(1.65rem,6vw,2.35rem);font-weight:600;line-height:1.25}.scene-content{flex-direction:column;flex:1;align-items:center;width:100%;max-width:440px;margin-top:18px;display:flex}.lead{max-width:390px;color:var(--warm-brown);font-size:clamp(1rem,3.8vw,1.13rem);line-height:1.7}.paragraph-stack{gap:4px;display:grid}.micro-copy{color:var(--muted);margin-top:13px;font-size:.78rem}.primary-button,.secondary-button,.card-reveal-button{cursor:pointer;border-radius:999px;min-height:48px;padding:11px 24px;font-weight:600;line-height:1.2;transition:transform .18s,box-shadow .18s,background-color .18s}.primary-button{border:1px solid var(--deep-rose);min-width:180px;color:var(--white);background:var(--deep-rose);margin-top:24px;box-shadow:0 10px 22px #a95c6b40}.secondary-button,.card-reveal-button{color:var(--burgundy);background:#fffdfbc2;border:1px solid #a95c6b73}.secondary-button{min-width:160px;margin-top:20px}.primary-button:hover,.secondary-button:hover,.card-reveal-button:hover{transform:translateY(-2px)}.primary-button:active,.secondary-button:active,.card-reveal-button:active{transform:scale(.98)}.choice-row{flex-wrap:wrap;justify-content:center;gap:10px;width:100%;margin-top:8px;display:flex}.choice-row .primary-button,.choice-row .secondary-button{flex:160px;min-width:min(100%,160px);margin-top:20px}.memory-card{background:linear-gradient(135deg,#ffeeb3cc,#fff9e0eb);border:2px dashed #a95c6b80;border-radius:18px 26px 20px 24px;flex-direction:column;justify-content:center;align-items:center;width:100%;min-height:235px;margin-top:18px;padding:18px;display:flex;position:relative;overflow:visible;transform:rotate(-1deg);box-shadow:0 8px #a95c6b1f,0 14px 28px #713e491a}.memory-card:before,.memory-card:after{color:#9b573cb8;letter-spacing:.08em;font-size:.78rem;font-weight:700;position:absolute}.memory-card:before{content:"⚡";top:15px;left:20px;transform:rotate(-14deg)}.memory-card:after{content:"!!!";bottom:16px;right:22px;transform:rotate(10deg)}.memory-card .sticker{width:145px;max-height:120px;margin-bottom:3px;animation-duration:5s}.card-floaters{z-index:2;pointer-events:none;position:absolute;inset:0;overflow:visible}.card-floaters span{color:var(--deep-rose);opacity:0;will-change:transform, opacity;font-size:1.2rem;font-weight:700;animation:4.8s ease-in-out infinite card-float-loop;display:block;position:absolute;bottom:28px;left:50%}.card-floaters span:first-child{--float-x:-70px;--float-y:-104px;animation-delay:-.4s}.card-floaters span:nth-child(2){--float-x:58px;--float-y:-125px;color:var(--dusty-pink);animation-delay:-1.6s}.card-floaters span:nth-child(3){--float-x:102px;--float-y:-70px;animation-delay:-2.8s}.card-floaters span:nth-child(4){--float-x:-108px;--float-y:-55px;color:#b9794b;font-size:1.45rem;animation-delay:-4s}.memory-card.is-revealed{animation:.44s both card-reveal}.memory-card-text{max-width:340px;color:var(--burgundy);font-size:1.18rem;font-weight:700;line-height:1.5;transform:rotate(1deg)}.card-reveal-button{background:#fffdfbe6;border-style:solid;border-width:2px;margin-top:2px;box-shadow:0 4px #a95c6b29}.card-count{color:var(--deep-rose);font-variant-numeric:tabular-nums;margin-top:10px;font-size:.8rem;font-weight:600}.cake-scene .scene-content{margin-top:14px}.cake-instruction{max-width:360px;min-height:54px}.cake-button{width:min(100%,380px);min-height:44px;color:inherit;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;background:0 0;border:0;border-radius:28px;margin-top:2px;padding:0;display:block;position:relative}.cake-button:focus-visible{outline:3px solid var(--deep-rose);outline-offset:5px}.cake-button:active .cake-svg,.cake-button:active .cake-photo{transform:scale(.985)}.cake-art{width:100%;display:block;position:relative}.cake-photo-art{filter:drop-shadow(0 14px 14px #713e4929);max-width:420px;padding-top:clamp(50px,12vw,68px);display:block}.cake-photo{border-radius:28px;width:100%;height:auto;display:block;box-shadow:0 12px 28px #713e492e}.cake-photo-candles{pointer-events:none;height:clamp(50px,12vw,68px);position:absolute;top:0;left:0;right:0}.photo-candle{z-index:1;width:18%;height:100%;position:absolute;top:0}.photo-candle-left{left:25%;transform:rotate(-4deg)}.photo-candle-center{left:50%;transform:translate(-50%)}.photo-candle-right{right:25%;transform:rotate(4deg)}.photo-candle-body{background:repeating-linear-gradient(135deg,#fff7e8 0 7px,#df83a0 7px 10px,#fff7e8 10px 17px);border:1px solid #a85b6b85;border-radius:5px;width:clamp(10px,3vw,15px);height:48%;margin-right:calc(clamp(10px,3vw,15px)/-2);display:block;position:absolute;bottom:5%;right:50%;box-shadow:0 2px 5px #5b22382e}.photo-candle-body:after{content:"";background:#f7d27e;border-radius:50%;height:5px;position:absolute;bottom:-4px;left:-4px;right:-4px;box-shadow:0 1px 3px #5b223840}.photo-candle-flame,.photo-candle-flame-core,.photo-candle-smoke{display:block}.photo-candle-flame{filter:drop-shadow(0 2px 5px #ee963666);background:linear-gradient(145deg,#fff4aa 4%,#ffc342 54%,#ed8a3b 100%);border:0;border-radius:65% 35% 62% 38%/65% 58% 42% 35%;width:clamp(16px,4.7vw,23px);height:clamp(23px,5.8vw,31px);margin-left:calc(clamp(16px,4.7vw,23px)/-2);position:absolute;top:0;left:50%}.photo-candle-flame-core{background:#fff9d2;border:0;border-radius:70% 30% 65% 35%;width:clamp(7px,2vw,10px);height:clamp(10px,3vw,15px);margin-left:calc(clamp(7px,2vw,10px)/-2);position:absolute;top:7px;left:50%}.photo-candle-smoke{border:0;border-left:2px solid #7d5d638f;border-radius:50%;width:8px;height:32px;margin-left:-4px;position:absolute;top:-10%;left:50%}.cake-svg{filter:drop-shadow(0 14px 14px #713e4929);width:100%;height:auto;transition:transform .18s;display:block;overflow:visible}.cake-shadow{fill:#4a1e3029}.cake-platter{fill:url(#cake-gold);opacity:.84}.cake-gold-trim{fill:none;stroke:url(#cake-gold);stroke-linecap:round;stroke-width:3.4px}.cake-gold-trim-upper{stroke-width:2.6px}.cake-lower-icing{fill:#f6cbd2;stroke:#fff0e0d1;stroke-width:1.5px}.cake-upper-icing{fill:#fff1e8;stroke:#ffffffe0;stroke-width:1.5px}.cake-top{fill:#f8dfe0;stroke:#c97b91c2;stroke-width:2px}.cake-top-plate{fill:#fff6e8bd;stroke:#d99c3db3;stroke-width:1.5px}.cake-portrait-frame{fill:url(#cake-gold);stroke:#fff0b3;stroke-width:1.5px}.cake-portrait-bg{fill:url(#cake-portrait-bg);stroke:#63243a38;stroke-width:1px}.cake-portrait-hair{fill:#3c2139}.cake-portrait-dress{fill:#a84c69;stroke:#f4c7c5;stroke-width:1px}.cake-portrait-neck{fill:#f4c3ae}.cake-portrait-face{fill:#f8cdb8}.cake-portrait-front{fill:#4a233e}.cake-portrait-detail{fill:none;stroke:#74364d;stroke-linecap:round;stroke-width:1.8px}.cake-portrait-highlight{fill:none;stroke:#fff5e3cc;stroke-linecap:round;stroke-width:2.4px}.cake-portrait-ring{fill:none;stroke:#fff2bbf2;stroke-width:1.4px}.cake-nameplate{fill:#2f102361;stroke:#ffe097b8;stroke-width:1.1px}.cake-nameplate-line{fill:none;stroke:#ffe49ca3;stroke-linecap:round;stroke-width:1.2px}.cake-jewel{fill:#f4cc6d;stroke:#fff1b1;stroke-width:1.2px}.cake-jewel-soft{fill:#ed9aad;stroke:#ffe1d8}.cake-label{fill:#fff1b1;stroke:#36162652;stroke-width:.7px;paint-order:stroke;letter-spacing:.16em;font-family:Sarabun,system-ui,sans-serif;font-size:20px;font-weight:700}.cake-label-caption{fill:#f9dca0;letter-spacing:.18em;font-family:Sarabun,system-ui,sans-serif;font-size:8px;font-weight:700}.cake-candle{fill:#fff0df;stroke:#d49b42;stroke-width:1.3px}.cake-candle-center{fill:#ffe7dc}.cake-candle-top{fill:#fff9e9;stroke:#e0ad58;stroke-width:1px}.cake-candle-base{fill:url(#cake-gold);stroke:#fff0b3;stroke-width:1px}.cake-candle-stripe{fill:none;stroke:#b24b6fa8;stroke-linecap:round;stroke-width:2.2px}.cake-flame{fill:#ffd66b;stroke:#fff3ae;stroke-width:1.2px;transform-box:fill-box;transform-origin:bottom;animation:1.1s ease-in-out infinite cake-flame}.cake-flame-core{fill:#fff8c7;stroke:#ffffffe6;stroke-width:.8px;transform-box:fill-box;transform-origin:bottom;animation:.9s ease-in-out infinite reverse cake-flame}.cake-flame-center{animation-delay:-.35s}.cake-smoke{fill:none;stroke:#7d5d639e;stroke-linecap:round;stroke-width:2px;opacity:0}.cake-button.is-extinguished .cake-flame,.cake-button.is-extinguished .cake-flame-core{opacity:0;animation:none;transform:scale(.16)translateY(8px)}.cake-button.is-extinguished .cake-smoke{opacity:.72;animation:1.5s ease-out both cake-smoke}.cake-sparkles{color:#c58a36;letter-spacing:.08em;white-space:nowrap;pointer-events:none;font-size:clamp(1.05rem,5vw,1.35rem);font-weight:700;animation:.72s ease-out both cake-sparkle;position:absolute;top:5%;left:50%;transform:translate(-50%)}.cake-continue-button{margin-top:2px}.voucher{border:1px dashed var(--deep-rose);background:linear-gradient(135deg,#fff4f0,#fbe5e7);border-radius:22px;width:100%;min-height:220px;margin-top:16px;padding:22px 18px;position:relative;overflow:hidden}.voucher>:not(.gift-decor){z-index:1;position:relative}.gift-decor{z-index:0;color:var(--deep-rose);pointer-events:none;opacity:.86;position:absolute;inset:0;overflow:hidden}.gift-decor svg{width:100%;height:100%;display:block}.gift-vine{fill:none;stroke:#d4939e;stroke-linecap:round;stroke-width:2.2px;opacity:.52}.gift-vine-bottom{stroke:#c88391;opacity:.36}.gift-petal{fill:#eaa3af;stroke:#fff0e7;stroke-width:1.2px}.gift-petal-alt{fill:#f0b8bb}.gift-petal-soft{fill:#edb8c0;stroke:#fff0e7;stroke-width:1px}.gift-flower-center{fill:#f4cf79;stroke:#fff2b2;stroke-width:1px}.gift-leaf{fill:#a9c19e;stroke:#f3ead1;stroke-width:1px;opacity:.78}.gift-leaf-soft{fill:#b9c99f;opacity:.64}.gift-ribbon{fill:none;stroke:#d58d9b;stroke-linecap:round;stroke-width:14px;opacity:.12}.gift-ribbon-bow{fill:#d98f9d;stroke:#fff0e7;stroke-width:1.5px;opacity:.26}.voucher.is-revealed{animation:.6s cubic-bezier(.18,.89,.32,1.28) both voucher-pop}.voucher-sparkles{color:var(--deep-rose);pointer-events:none;position:absolute;inset:0;overflow:hidden}.voucher-sparkles span{opacity:0;font-size:1.1rem;animation:.9s ease-out both voucher-sparkle;position:absolute;top:50%;left:50%}.voucher-sparkles span:first-child{--sparkle-x:-130px;--sparkle-y:-65px;animation-delay:60ms}.voucher-sparkles span:nth-child(2){--sparkle-x:125px;--sparkle-y:-45px;animation-delay:.12s}.voucher-sparkles span:nth-child(3){--sparkle-x:-140px;--sparkle-y:60px;animation-delay:.18s}.voucher-sparkles span:nth-child(4){--sparkle-x:145px;--sparkle-y:65px;animation-delay:.24s}.voucher-sparkles span:nth-child(5){--sparkle-x:0px;--sparkle-y:-88px;animation-delay:90ms}.celebration-art{justify-content:center;align-items:flex-end;width:100%;min-height:166px;margin:-8px 0 5px;display:flex}.celebration-art .sticker{width:48%;max-width:175px;margin:0}.celebration-art .sticker+.sticker{margin-left:-28px;animation-delay:-.8s}.voucher-stamp{border:2px solid var(--deep-rose);width:70px;height:70px;color:var(--deep-rose);letter-spacing:.08em;border-radius:50%;justify-content:center;align-items:center;margin-bottom:12px;font-size:.61rem;font-weight:700;display:inline-flex;transform:rotate(-12deg)}.voucher-title{color:var(--burgundy);letter-spacing:.12em;font-size:.91rem;font-weight:700}.voucher-details{border-top:1px solid var(--line);text-align:left;gap:8px;margin-top:18px;padding-top:15px;display:grid}.voucher-details p{color:var(--warm-brown);justify-content:space-between;gap:12px;font-size:.96rem;line-height:1.4;display:flex}.voucher-details span{color:var(--muted);font-size:.82rem}.voucher-privilege{color:var(--burgundy);margin-top:15px;font-size:1.03rem;font-weight:600;line-height:1.5}.choice-result{width:100%;color:var(--burgundy);background:#f5d6dc7a;border-radius:20px;margin-top:14px;padding:18px;line-height:1.6}.final-reveal{width:100%;margin-top:10px}.final-copy{color:var(--warm-brown);white-space:pre-line;font-size:clamp(1rem,4vw,1.12rem);line-height:1.95}.ending-scene .sticker{width:clamp(180px,58vw,270px);margin-top:-4px;margin-bottom:14px}.ending-scene h1{color:var(--deep-rose)}.photo-strip{flex-wrap:wrap;justify-content:center;gap:14px;margin-top:20px;display:flex}.polaroid{background:var(--white);width:min(42%,155px);transform:rotate(var(--rotation));padding:8px 8px 12px;box-shadow:0 8px 20px #713e4921}.polaroid img{aspect-ratio:1;object-fit:cover;border-radius:3px;width:100%;display:block}.polaroid figcaption{color:var(--warm-brown);margin-top:6px;font-size:.78rem}.footer-note{color:#765951ad;text-align:center;padding-top:8px;font-size:.76rem}@keyframes scene-in{0%{opacity:0;transform:translateY(12px)scale(.985)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes sticker-bob{0%,to{transform:translateY(0)rotate(-1deg)}50%{transform:translateY(-4px)rotate(1deg)}}@keyframes drift{0%,to{transform:translateY(0)rotate(-4deg)}50%{transform:translateY(-10px)rotate(4deg)}}@keyframes card-reveal{0%{opacity:.7;transform:rotate(-1deg)rotateY(-8deg)scale(.98)}to{opacity:1;transform:rotate(-1deg)rotateY(0)scale(1)}}@keyframes card-float-loop{0%{opacity:0;transform:translate(-50%,10px)scale(.68)rotate(-12deg)}18%{opacity:.9}58%{opacity:.48}to{opacity:0;transform:translate(calc(-50% + var(--float-x)), var(--float-y)) scale(1.12) rotate(18deg)}}@keyframes cake-flame{0%,to{transform:scale(.94)rotate(-3deg)}50%{transform:scale(1.08)rotate(4deg)translateY(-2px)}}@keyframes cake-smoke{0%{opacity:0;transform:translateY(4px)scale(.8)}28%{opacity:.72}to{opacity:0;transform:translateY(-20px)scale(1.12)}}@keyframes cake-sparkle{0%{opacity:0;transform:translate(-50%)translateY(8px)scale(.7)}45%{opacity:1}to{opacity:0;transform:translate(-50%)translateY(-18px)scale(1.08)}}@keyframes voucher-pop{0%{opacity:.2;transform:scale(.92)}70%{transform:scale(1.025)}to{opacity:1;transform:scale(1)}}@keyframes voucher-sparkle{0%{opacity:0;transform:translate(-50%,-50%)scale(.4)}20%{opacity:.9}to{opacity:0;transform:translate(calc(-50% + var(--sparkle-x)), calc(-50% + var(--sparkle-y))) scale(1.2) rotate(35deg)}}@media (width>=640px){.app-shell{padding-right:calc(env(safe-area-inset-right) + 24px);padding-left:calc(env(safe-area-inset-left) + 24px)}.experience-card{max-height:calc(100dvh - 122px)}}@media (height<=640px){.app-shell{padding-top:calc(env(safe-area-inset-top) + 8px);padding-bottom:calc(env(safe-area-inset-bottom) + 8px);grid-template-rows:auto minmax(0,1fr) auto}.topbar{min-height:38px}.progress-dots,.music-button{min-height:36px}.experience-card{max-height:calc(100dvh - 78px)}.scene{min-height:390px;padding-top:20px;padding-bottom:24px}.scene .sticker{width:130px;max-height:116px;margin-bottom:5px}.celebration-art{min-height:105px;margin-top:-5px}.scene-kicker{margin-bottom:4px}.scene-content{margin-top:10px}.cake-scene .scene-content{margin-top:6px}.cake-instruction{min-height:42px;line-height:1.45}.cake-button{width:min(100%,300px)}.primary-button,.secondary-button{margin-top:13px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.floating-doodles span{animation:none!important}.card-floaters span{opacity:.72;transform:translate(calc(-50% + var(--float-x)), var(--float-y)) scale(1) rotate(0deg);animation:none!important}.cake-flame,.cake-flame-core,.cake-sparkles,.cake-smoke{animation:none!important}}body.ios-device .floating-doodles{display:block!important}body.ios-device .floating-doodles span{animation:5.5s ease-in-out infinite drift!important}body.ios-device .card-floaters span{animation:4.8s ease-in-out infinite card-float-loop!important}body.ios-device .scene-stage{animation:.52s cubic-bezier(.22,.8,.28,1) both scene-in!important}body.ios-device .sticker{animation:4.5s ease-in-out infinite sticker-bob!important}body.ios-device .memory-card.is-revealed{animation:.44s both card-reveal!important}body.ios-device .voucher.is-revealed{animation:.6s cubic-bezier(.18,.89,.32,1.28) both voucher-pop!important}body.ios-device .voucher-sparkles span{animation:.9s ease-out both voucher-sparkle!important}body.ios-device .cake-flame{animation:1.1s ease-in-out infinite cake-flame!important}body.ios-device .cake-flame-core{animation:.9s ease-in-out infinite reverse cake-flame!important}body.ios-device .cake-button.is-extinguished .cake-flame,body.ios-device .cake-button.is-extinguished .cake-flame-core{animation:none!important}body.ios-device .cake-sparkles{animation:.72s ease-out both cake-sparkle!important}body.ios-device .cake-smoke{animation:1.5s ease-out both cake-smoke!important}
