@import"https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@400;600&display=swap";@import"https://fonts.googleapis.com/css2?family=Ma+Shan+Zheng&family=VT323&display=swap";*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.visible{visibility:visible}.hidden{display:none}.resize{resize:both}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline{outline-style:solid}.ring{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.invert{--tw-invert: invert(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.\!transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important;transition-duration:.15s!important}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}:root{color:#473743;background:#f3e2e6;font-family:"Noto Serif SC",serif}*{box-sizing:border-box}html,body,#root{width:100%;min-height:100%}body{margin:0;overflow:hidden;background:#f3e2e6}button{font:inherit}.page{min-height:100svh;position:relative;overflow:hidden;padding:24px}.next-ride{position:absolute;z-index:20;right:28px;bottom:26px;border:1px solid #b98b98;background:#fff9fcd1;color:#755464;border-radius:99px;padding:9px 15px;cursor:pointer;box-shadow:0 4px 16px #68465c2e}@media (max-width: 620px){.page{padding:16px}.next-ride{right:14px;bottom:96px;font-size:12px}}.page{--viewport-h: var(--app-vh, 100svh);--portrait-w: min(100vw, calc(var(--viewport-h) * .562637));--portrait-h: min(var(--viewport-h), 177.7344vw);background:#f2e2e6;min-height:var(--viewport-h);height:var(--viewport-h)}.page>:not(.pink-background-frame){z-index:1}.pink-background-frame{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;overflow:hidden;pointer-events:none;background:#f2e2e6;min-height:var(--viewport-h);height:var(--viewport-h)}.portrait-background-canvas{position:absolute;left:50%;top:50%;width:var(--portrait-w);height:var(--portrait-h);transform:translate(-50%,-50%)}.portrait-background-canvas img{display:block;width:100%;height:100%;-o-object-fit:contain;object-fit:contain}.cover-image-page{padding:0}.cover-candle-hotspot{position:absolute;z-index:5;width:max(52px,min(7svh,12.44vw));height:max(52px,min(7svh,12.44vw));transform:translate(-50%,-50%);border:0;border-radius:50%;background:transparent;cursor:pointer;touch-action:manipulation}.cover-candle-hotspot:focus-visible{outline:2px solid #af7384;outline-offset:4px}.cover-candle-flame{position:absolute;left:50%;bottom:50%;width:0;height:0;opacity:0;transform:translate(-50%) scale(.4);transform-origin:50% 100%;transition:opacity .18s ease,transform .24s ease}.cover-candle-hotspot.is-lit .cover-candle-flame{opacity:1;transform:translate(-50%) scale(1);animation:candle-sway .72s ease-in-out infinite alternate}.cover-candle-flame:before{content:"";position:absolute;left:-11px;bottom:0;width:22px;height:30px;border-radius:65% 35%;transform:rotate(45deg);transform-origin:50% 100%;background:radial-gradient(circle at 35% 32%,#fffce8 0,#fffce8 15%,#ffd35c 35%,#ff9e70 64%,#ff848800 72%);filter:drop-shadow(0 0 9px rgba(255,178,100,.9))}.cover-candle-flame i{position:absolute;left:-4px;bottom:5px;width:9px;height:16px;border-radius:70% 30%;transform:rotate(45deg);background:#fff7b6;box-shadow:0 0 12px #fff2af}@keyframes candle-sway{0%{margin-left:-1px;transform:translate(-50%) rotate(-3deg) scale(.96)}to{margin-left:2px;transform:translate(-50%) rotate(4deg) scale(1.04)}}.memories-lamp{padding:0}.carousel-safe-area{position:absolute;z-index:2;left:50%;top:calc(50% - var(--portrait-h) * .5 + var(--portrait-h) * .17);width:min(84vw,calc(var(--portrait-h) * .84));height:calc(var(--portrait-h) * .62);transform:translate(-50%)}.carousel-safe-area .lamp-shell{position:absolute;top:0;right:0;bottom:0;left:0}.memories-lamp .next-ride{z-index:22;right:calc(50% - var(--portrait-w) * .5 + 12px);bottom:calc(50% - var(--portrait-h) * .5 + var(--portrait-h) * .095)}.original-cake-page{padding:0}.cake-stage{position:absolute;z-index:2;left:50%;top:calc(50% - var(--portrait-h) * .5 + var(--portrait-h) * .115);width:min(calc(var(--portrait-w) * .86),560px);height:calc(var(--portrait-h) * .535);transform:translate(-50%);display:grid;grid-template-rows:minmax(0,1fr) auto;align-items:stretch;gap:clamp(16px,2.2svh,24px);min-width:0;min-height:0}.original-cake-wrap{position:relative;z-index:1;width:100%;min-width:0;min-height:0;align-self:stretch}.cake-action-zone{position:relative;z-index:4;width:100%;min-height:44px;display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center}.cake-action-zone p{margin:0;color:#6a5261;text-shadow:0 1px 2px rgba(255,255,255,.85)}.cake-action-zone .soft-button{min-height:44px;margin:0;background:#fff9fa;border:1px solid #bc8c9b;color:#765161;border-radius:99px;padding:10px 20px;box-shadow:0 3px 14px #65455833;cursor:pointer}.mic-debug{color:#765161;background:#ffffffa8;border-radius:12px;padding:4px 8px}.fireworks,.letter-image-page{padding:0}.letter-card-trigger{position:absolute;z-index:3;left:50%;top:calc(50% - var(--portrait-h) * .5 + var(--portrait-h) * .39);width:min(72vw,calc(var(--portrait-h) * .72));height:calc(var(--portrait-h) * .45);transform:translate(-50%,-50%);display:grid;place-items:center;padding:0;border:0;background:transparent;cursor:zoom-in}.letter-card-image{display:block;max-width:100%;max-height:100%;width:auto;height:auto;-o-object-fit:contain;object-fit:contain;filter:drop-shadow(0 8px 18px rgba(143,92,110,.16))}.letter-card-trigger:focus-visible{outline:2px solid #af7384;outline-offset:5px}.letter-card-lightbox{position:fixed;z-index:50;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:max(18px,env(safe-area-inset-top)) 18px max(18px,env(safe-area-inset-bottom));background:#523b4675;touch-action:pinch-zoom;overflow:auto}.letter-card-lightbox-content{max-width:min(96vw,920px);max-height:calc(100svh - 36px);touch-action:pinch-zoom}.letter-card-lightbox-content img{display:block;max-width:100%;max-height:calc(100svh - 36px);width:auto;height:auto;-o-object-fit:contain;object-fit:contain}.letter-card-close{position:fixed;top:max(14px,env(safe-area-inset-top));right:max(14px,env(safe-area-inset-right));border:1px solid rgba(255,255,255,.8);background:#775464d6;color:#fff;border-radius:99px;padding:8px 13px;cursor:pointer}.original-cake canvas,.lamp-canvas canvas{background:transparent!important}@media (max-width: 640px){.cover-candle-hotspot{width:52px;height:52px}.carousel-safe-area{width:min(94vw,calc(var(--portrait-h) * .94))}.original-cake-page>p{font-size:14px}.letter-card-trigger{width:min(76vw,calc(var(--portrait-h) * .76));height:calc(var(--portrait-h) * .42)}}@media (prefers-reduced-motion: reduce){.cover-candle-hotspot.is-lit .cover-candle-flame{animation:none}}.memory-photo-lightbox{position:fixed;z-index:60;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:max(18px,env(safe-area-inset-top)) 18px max(18px,env(safe-area-inset-bottom));background:#523b4685;overflow:auto;touch-action:pinch-zoom}.memory-photo-lightbox-content{max-width:min(94vw,1000px);max-height:calc(var(--app-vh, 100svh) - 36px);touch-action:pinch-zoom}.memory-photo-lightbox-content img{display:block;max-width:100%;max-height:calc(var(--app-vh, 100svh) - 36px);width:auto;height:auto;-o-object-fit:contain;object-fit:contain;border-radius:8px;box-shadow:0 12px 36px #38232e4d}.memory-photo-close{position:fixed;z-index:1;top:max(14px,env(safe-area-inset-top));right:max(14px,env(safe-area-inset-right));border:1px solid rgba(255,255,255,.8);background:#775464e0;color:#fff;border-radius:99px;padding:8px 13px;cursor:pointer}@media (max-width: 640px){.carousel-safe-area{height:calc(var(--portrait-h) * .6)}}.welcome-page{padding:0;display:grid;place-items:center;background:#f2e2e6;overflow:auto}.welcome-stage{width:min(88vw,520px);min-height:min(var(--app-vh, 100svh),860px);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:clamp(14px,2.2svh,24px);padding:max(28px,env(safe-area-inset-top)) 0 max(28px,env(safe-area-inset-bottom));text-align:center}.welcome-pig{width:min(42vw,190px);height:auto;-o-object-fit:contain;object-fit:contain;filter:drop-shadow(0 9px 10px rgba(153,102,111,.13))}.welcome-stage h1{max-width:100%;margin:0;color:#8b586e;font:400 clamp(30px,7vw,54px)/.98 "VT323",ui-monospace,monospace;letter-spacing:.025em;text-shadow:1px 2px 0 #fff7f8}.welcome-stage h1 span{color:#d98098;font-family:Ma Shan Zheng,STKaiti,cursive;font-size:.87em;white-space:nowrap}.welcome-note{box-sizing:border-box;width:min(84vw,440px);padding:clamp(17px,3.5vw,25px) clamp(20px,5vw,34px);border:3px double rgba(205,127,149,.62);border-radius:8px;background:#fff9f9b3;box-shadow:5px 6px #d08e9f29,inset 0 0 0 4px #ffffff6b;color:#725260;font:400 clamp(16px,3.8vw,22px)/1.55 "Ma Shan Zheng","STKaiti",cursive}.welcome-note p{margin:0}.welcome-note p:last-child{margin-top:5px;color:#ca6d87;font-weight:600}.welcome-start{min-width:104px;min-height:44px;padding:8px 18px 7px;border:2px solid #9d586f;border-radius:5px;background:linear-gradient(#f5a5b8,#df7893);color:#fff7f8;box-shadow:0 4px #a85269,0 7px 14px #93546938;cursor:pointer;font:400 clamp(21px,5vw,29px)/1 "VT323",ui-monospace,monospace;letter-spacing:.11em;transition:transform .12s ease,box-shadow .12s ease}.welcome-start:active{transform:translateY(4px);box-shadow:0 0 #a85269,0 4px 9px #9354692e}.welcome-start:focus-visible{outline:3px solid #fff;outline-offset:3px}.letter-cover-trigger{position:absolute;z-index:3;left:50%;top:calc(50% - var(--portrait-h) * .5 + var(--portrait-h) * .39);width:min(72vw,calc(var(--portrait-h) * .72));aspect-ratio:.74;transform:translate(-50%,-50%);display:grid;grid-template-rows:1fr auto;padding:0;border:0;border-radius:18px;overflow:hidden;background:repeating-linear-gradient(90deg,#f7dce2 0,#f7dce2 10px,#fbe8ec 10px,#fbe8ec 19px);box-shadow:0 9px 24px #8f5c6e26;cursor:pointer;transition:transform .45s ease,opacity .45s ease}.letter-cover-trigger:before{content:"";position:absolute;top:0;right:0;bottom:46%;left:0;background:radial-gradient(circle at 14px 14px,rgba(226,139,164,.34) 0 2px,transparent 2.5px) 0 0 / 24px 24px,#f8dfe5}.letter-cover{position:relative;z-index:1;display:grid;place-items:center;min-height:0;padding:7% 6% 1%}.letter-cover img{width:100%;max-height:100%;-o-object-fit:contain;object-fit:contain;filter:drop-shadow(0 5px 6px rgba(112,77,84,.12))}.letter-cover-hint{position:relative;z-index:2;align-self:end;margin:0 0 17px;color:#9e5f75;font:400 clamp(16px,4vw,23px)/1 "Ma Shan Zheng","STKaiti",cursive;text-shadow:0 1px #fff}.letter-cover-trigger:active{transform:translate(-50%,-50%) scale(.97)}.letter-cover-trigger:focus-visible{outline:3px solid #cc7a91;outline-offset:4px}.letter-card-trigger{animation:card-reveal .55s cubic-bezier(.2,.8,.2,1) both}@keyframes card-reveal{0%{opacity:0;transform:translate(-50%,-47%) rotateX(-13deg) scale(.93)}to{opacity:1;transform:translate(-50%,-50%) rotateX(0) scale(1)}}@media (max-width: 640px){.welcome-stage{width:min(90vw,440px);gap:16px}.welcome-pig{width:min(48vw,190px)}.letter-cover-trigger{width:min(76vw,calc(var(--portrait-h) * .76))}}@media (prefers-reduced-motion: reduce){.letter-card-trigger{animation:none}}:root{--pig-guide-ink: #fff;--pig-guide-stroke: rgba(151, 99, 116, .62)}.pig-guide{position:absolute;z-index:28;left:calc(50% - var(--portrait-w) * .5 + var(--portrait-w) * var(--guide-x));top:calc(50% - var(--portrait-h) * .5 + var(--portrait-h) * var(--guide-y));width:min(48vw,calc(var(--portrait-w) * .42));display:flex;align-items:flex-start;gap:8px;pointer-events:none;transform:translate(-50%,-50%)}.pig-guide-badge{flex:0 0 clamp(44px,calc(var(--portrait-w) * .115),64px);width:clamp(44px,calc(var(--portrait-w) * .115),64px);height:clamp(44px,calc(var(--portrait-w) * .115),64px);display:grid;place-items:center;overflow:hidden;border:2px solid #ed9caf;border-radius:50%;background:#fff3ed;box-shadow:0 3px 12px #c2778f42}.pig-guide-badge img{width:122%;height:122%;max-width:none;-o-object-fit:contain;object-fit:contain;transform:translateY(7%)}.pig-guide p{box-sizing:border-box;min-height:3.1em;min-width:12em;max-width:min(41vw,330px);margin:4px 0 0;color:var(--pig-guide-ink);font:600 clamp(14px,calc(var(--portrait-w) * .039),21px)/1.46 "Ma Shan Zheng","STKaiti",cursive;letter-spacing:.045em;-webkit-text-stroke:.55px var(--pig-guide-stroke);text-shadow:0 1px 2px rgba(133,89,104,.72),0 0 7px rgba(255,255,255,.84)}.pig-guide-cursor{display:inline-block;margin-left:1px;animation:guide-cursor .65s steps(2) infinite}@keyframes guide-cursor{50%{opacity:0}}.pig-guide--cover,.pig-guide--memories,.pig-guide--cake{transform:translate(-50%,-50%)}.pig-guide--fireworks{transform:translate(-50%,-50%);width:min(57vw,calc(var(--portrait-w) * .57))}.falling-cakes{position:absolute;z-index:0;top:0;right:0;bottom:0;left:0;overflow:hidden;pointer-events:none}.falling-cake{position:absolute;z-index:0;left:var(--cake-left);top:var(--cake-top);width:var(--cake-size);height:auto;opacity:0;filter:drop-shadow(0 3px 3px rgba(155,99,110,.1));animation:cake-fall var(--cake-duration) cubic-bezier(.31,.04,.43,1) var(--cake-delay) infinite;will-change:transform,opacity}@keyframes cake-fall{0%{opacity:0;transform:translate3d(0,-17vh,0) rotate(-7deg)}11%{opacity:.74}84%{opacity:.74}94%,to{opacity:0;transform:translate3d(var(--cake-drift),102vh,0) rotate(8deg)}}.welcome-stage{position:relative;z-index:2}.letter-cover-trigger{display:block}.letter-cover{position:absolute;z-index:1;top:6%;right:6%;width:29%;height:auto;min-height:0;padding:0;display:block}.letter-cover img{display:block;width:100%;height:auto;max-height:none;-o-object-fit:contain;object-fit:contain}.letter-cover-title{position:absolute;z-index:2;left:50%;top:45%;width:82%;transform:translate(-50%,-50%);color:#e895aa;text-align:center;font:400 clamp(31px,8vw,58px)/1 "Parisienne",cursive;letter-spacing:.02em;text-shadow:0 1px 0 rgba(255,255,255,.9),0 2px 8px rgba(201,117,144,.18)}.letter-cover-hint{position:absolute;z-index:2;left:50%;bottom:8%;transform:translate(-50%);width:90%;margin:0}@media (max-width: 640px){.pig-guide{width:min(67vw,calc(var(--portrait-w) * .66));gap:6px}.pig-guide p{min-width:0;max-width:min(52vw,260px);font-size:clamp(13px,calc(var(--portrait-w) * .043),18px)}.pig-guide--cover{--guide-x: .74 !important;--guide-y: .28 !important}.pig-guide--memories{--guide-x: .37 !important;--guide-y: .145 !important}.pig-guide--cake{--guide-x: .68 !important;--guide-y: .69 !important}.pig-guide--fireworks{--guide-x: .34 !important;--guide-y: .71 !important;width:min(72vw,calc(var(--portrait-w) * .72))}.pig-guide--fireworks p{max-width:min(60vw,300px)}.falling-cake{animation-name:cake-fall-mobile}.letter-cover{width:30%;right:5%;top:7%}.letter-cover-title{top:46%;font-size:clamp(29px,9.2vw,42px)}}@keyframes cake-fall-mobile{0%{opacity:0;transform:translate3d(0,-17vh,0) rotate(-7deg)}12%{opacity:.74}47%{opacity:.74}59%,to{opacity:0;transform:translate3d(var(--cake-drift),102vh,0) rotate(8deg)}}@media (prefers-reduced-motion: reduce){.falling-cake,.pig-guide-cursor{animation:none}.falling-cake{opacity:.55;transform:none}.letter-card-trigger{animation:none}}.pig-guide{--guide-avatar-size: clamp(44px, calc(var(--portrait-w) * .115), 64px);width:0;height:0;display:block;transform:none}.pig-guide-badge{position:absolute;left:0;top:0;width:var(--guide-avatar-size);height:var(--guide-avatar-size);flex:none;transform:translate(-50%,-50%)}.pig-guide p{position:absolute;left:calc(var(--guide-avatar-size) / 2 + 8px);top:0;transform:translateY(-50%);width:min(41vw,330px);min-width:0;margin:0}.pig-guide--cover,.pig-guide--memories,.pig-guide--cake,.pig-guide--fireworks{transform:none}.pig-guide--cake{margin-top:-12px}.pig-guide--cake .pig-guide-badge{transform:translate(-50%,-100%)}.pig-guide--cake p{top:auto;bottom:12px;transform:none;width:min(49vw,340px)}.falling-cake{filter:saturate(1.24) drop-shadow(0 0 1px rgba(255,255,255,.95)) drop-shadow(0 3px 6px rgba(211,132,151,.25))}.letter-cover-trigger{display:grid;place-items:center;grid-template-rows:1fr auto;width:min(74vw,calc(var(--portrait-h) * .74));aspect-ratio:.77;padding:0 0 12px;overflow:visible;border-radius:0;background:transparent;box-shadow:none}.letter-cover-trigger:before{display:none}.embroidered-card-cover{display:block;width:100%;height:100%;min-height:0;-o-object-fit:contain;object-fit:contain;filter:drop-shadow(0 7px 15px rgba(125,79,94,.16))}.letter-cover-title,.letter-cover{display:none}.letter-cover-hint{position:static;width:auto;align-self:end;transform:none;margin:0;color:#a56179;font:400 clamp(15px,3.6vw,21px)/1 "Ma Shan Zheng","STKaiti",cursive;text-shadow:0 1px #fff}.letter-video-stage{position:absolute;z-index:3;left:50%;top:calc(50% - var(--portrait-h) * .5 + var(--portrait-h) * .39);width:min(76vw,calc(var(--portrait-h) * .76));height:calc(var(--portrait-h) * .46);transform:translate(-50%,-50%);display:grid;place-items:center}.letter-video-stage video{display:block;max-width:100%;max-height:100%;width:auto;height:auto;-o-object-fit:contain;object-fit:contain;filter:drop-shadow(0 7px 16px rgba(125,79,94,.15))}.letter-video-status{position:absolute;left:50%;bottom:-26px;transform:translate(-50%);width:-moz-max-content;width:max-content;max-width:88vw;margin:0;padding:5px 10px;border-radius:99px;color:#8c5d6d;background:#fff9fad1;font:400 14px/1.2 Ma Shan Zheng,STKaiti,cursive}.letter-video-status.is-error{color:#9a485d}@media (max-width: 640px){.pig-guide{--guide-avatar-size: 48px}.pig-guide p{left:calc(var(--guide-avatar-size) / 2 + 7px);width:min(52vw,260px)}.pig-guide--cake{--guide-x: .12 !important;--guide-y: .765 !important;margin-top:-10px}.pig-guide--cake p{bottom:10px;width:min(57vw,270px)}.letter-cover-trigger{width:min(80vw,calc(var(--portrait-h) * .8))}.letter-video-stage{width:min(82vw,calc(var(--portrait-h) * .82));height:calc(var(--portrait-h) * .43)}}.letter-video-stage{width:min(74vw,calc(var(--portrait-h) * .33));height:auto;aspect-ratio:1120 / 1600;max-height:calc(var(--portrait-h) * .46);overflow:visible;cursor:zoom-in}.letter-video-stage video{width:100%;height:100%;max-width:100%;max-height:100%;-o-object-fit:contain;object-fit:contain}.letter-video-stage.is-expanded{position:fixed;z-index:70;top:0;right:0;bottom:0;left:0;width:auto;height:auto;max-height:none;aspect-ratio:auto;transform:none;padding:max(18px,env(safe-area-inset-top)) 18px max(18px,env(safe-area-inset-bottom));background:#523b467a;cursor:default}.letter-video-stage.is-expanded video{width:auto;height:auto;max-width:min(94vw,calc((var(--app-vh, 100svh) - 36px) * .7));max-height:calc(var(--app-vh, 100svh) - 36px)}.letter-video-close{position:fixed;z-index:1;top:max(14px,env(safe-area-inset-top));right:max(14px,env(safe-area-inset-right));border:1px solid rgba(255,255,255,.8);border-radius:999px;padding:8px 13px;background:#775464e0;color:#fff;cursor:pointer}.pig-guide--cover,.pig-guide--memories,.pig-guide--fireworks{width:min(48vw,calc(var(--portrait-w) * .42));height:auto;display:flex;align-items:flex-start;gap:8px;margin-top:0;transform:translate(-50%,-50%)}.pig-guide--cover .pig-guide-badge,.pig-guide--memories .pig-guide-badge,.pig-guide--fireworks .pig-guide-badge{position:static;flex:0 0 var(--guide-avatar-size);width:var(--guide-avatar-size);height:var(--guide-avatar-size);transform:none}.pig-guide--cover p,.pig-guide--memories p,.pig-guide--fireworks p{position:static;width:auto;min-width:12em;max-width:min(41vw,330px);margin:4px 0 0;transform:none}.pig-guide--fireworks{width:min(57vw,calc(var(--portrait-w) * .57))}.pig-guide--fireworks p{max-width:min(47vw,360px)}.falling-cake{filter:brightness(1.18) saturate(1.24) drop-shadow(0 0 1px rgba(255,255,255,.95)) drop-shadow(0 3px 6px rgba(211,132,151,.25))}@media (max-width: 640px){.pig-guide--cover,.pig-guide--memories,.pig-guide--fireworks{width:min(67vw,calc(var(--portrait-w) * .66));gap:6px}.pig-guide--cover p,.pig-guide--memories p,.pig-guide--fireworks p{min-width:0;max-width:min(52vw,260px)}.pig-guide--cover{--guide-x: .74 !important;--guide-y: .28 !important}.pig-guide--memories{--guide-x: .37 !important;--guide-y: .145 !important}.pig-guide--fireworks{--guide-x: .34 !important;--guide-y: .71 !important;width:min(72vw,calc(var(--portrait-w) * .72))}.pig-guide--fireworks p{max-width:min(60vw,300px)}.letter-video-stage{width:min(78vw,calc(var(--portrait-h) * .33))}}
