@font-face{font-family:CuteBook;src:url(../assets/fonts/book-cute.ttf)format("truetype");font-style:normal;font-weight:400;font-display:swap}:root{color:#4d5142;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;background:#d8d1c2;font-family:CuteBook,Microsoft YaHei,PingFang SC,sans-serif}*{box-sizing:border-box}body{min-width:320px;margin:0}.gift-stage{background-color:#d8d1c2;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='paper'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.72' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' opacity='.065' filter='url(%23paper)'/%3E%3C/svg%3E"),radial-gradient(at 48% 34%,#e4dfd2 0%,#dad3c3 64%,#cfc6b4 100%);background-size:180px 180px,100% 100%;flex-direction:column;justify-content:center;align-items:center;min-height:100dvh;padding:48px;display:flex;overflow:hidden}.book-space{width:min(1120px,100vw - 96px,200dvh - 380px);transition:transform .3s cubic-bezier(.22,.68,.32,1)}@media (hover:hover) and (pointer:fine){.book-space[data-position=front][data-turning=false][data-preparing=false]:has([data-face="0"]:hover){transform:translateY(-3px)rotate(-.16deg)}}.book-position{width:100%;transition:transform var(--flip-duration,.9s) cubic-bezier(.2, .65, .3, 1);-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;outline:none;position:relative;transform:translate(0)}.book-position--front{transform:translate(-25%)}.book-position--back{transform:translate(25%)}.book-position:before{content:"";pointer-events:none;z-index:-1;transition:transform var(--flip-duration,.9s) cubic-bezier(.2,.65,.3,1);background:#f6f1e7;border-radius:2px 3px 4px;position:absolute;inset:2px -1px -7px;transform:translate(0)scaleX(1);box-shadow:0 2px 1px #594b302e,0 8px 10px -6px #594b3030,0 23px 35px -13px #594b302e}.book-position:after{content:"";pointer-events:none;z-index:-1;height:7px;transition:transform var(--flip-duration,.9s) cubic-bezier(.2,.65,.3,1);background:repeating-linear-gradient(#ebe4d4 0 1px,#d9cfba 1px 2px,#f9f4e8 2px 3px);border-radius:0 0 3px 3px;position:absolute;bottom:-7px;left:-1px;right:-1px;transform:translate(0)scaleX(1)}.book-position--front:before,.book-position--front:after{transform:translate(25%)scaleX(.5)}.book-position--back:before,.book-position--back:after{transform:translate(-25%)scaleX(.5)}.book-position:focus-visible .leaf-window{outline-offset:-3px;outline:1px solid #9c8664}.flip-book{isolation:isolate}.flip-book .stf__hardShadow,.flip-book .stf__hardInnerShadow{opacity:.4}.leaf{background:#f6f0e3;overflow:hidden}.leaf--hard{background:#344e43;border-radius:1px 4px 4px 1px}.leaf--hard.--left{border-radius:4px 1px 1px 4px}.leaf-window{position:absolute;inset:0;overflow:hidden;container-type:inline-size}.leaf-window img{width:100%;max-width:none;height:100%;display:block;position:absolute;inset:0}.leaf-window--left img,.leaf-window--right img{width:200%}.leaf-window--right img{left:-100%}.page-click-zone{cursor:pointer;height:33.3333%;position:absolute;left:0;right:0}.page-click-zone--top{top:0}.page-click-zone--middle{top:33.3333%}.page-click-zone--bottom{bottom:0}.leaf--paper:after,.leaf--hard:after{content:"";pointer-events:none;position:absolute;inset:0}.leaf--paper.--left:after{background:linear-gradient(90deg,#0000 94%,#4e432a03 97%,#4e432a18);box-shadow:inset 0 -1px #74674b16}.leaf--paper.--right:after{background:linear-gradient(90deg,#4e432a18,#4e432a03 3%,#0000 6%);box-shadow:inset 0 -1px #74674b16}.leaf--hard:after{box-shadow:inset 1px 1px #ffffe824,inset -1px -2px #172c2552}.asset-fallback{text-align:center;background:#f6f0e3;place-content:center;gap:12px;padding:16px;font-size:12px;line-height:1.8;display:grid;position:absolute;inset:0}.spread-type{pointer-events:none}.load-notice{color:#887861;background:#f7f2e8ed;border:1px solid #e0d7c5;border-radius:3px;align-items:center;gap:18px;max-width:calc(100vw - 32px);padding:6px 14px;font-size:11px;line-height:1.6;display:flex;position:fixed;bottom:12px;left:50%;transform:translate(-50%)}.load-notice button{white-space:nowrap}.reading-caption{text-align:center;color:#817764;min-height:44px;margin-top:36px}.reading-caption p{letter-spacing:.16em;margin:0 0 10px;font-size:11px}.prototype-label{letter-spacing:.12em;color:#867b66;font-variant-numeric:tabular-nums;font:11px/1.5 Georgia,serif}.reading-tools{justify-content:center;align-items:center;gap:16px;display:flex}.quiet-control{color:#7e735f;cursor:pointer;background:0 0;border:0;padding:3px 0;font-family:inherit;font-size:10px;line-height:1.5}.quiet-control[aria-pressed=true]{color:#5e735f;text-underline-offset:4px;text-decoration:underline}.quiet-control:disabled{cursor:default;opacity:.6}.quiet-control:focus-visible,.candle:focus-visible{outline-offset:6px;outline:1px solid #9c8664}.birthday-copy{pointer-events:none;position:absolute;inset:27% 12% auto 17%}.birthday-copy h1{color:#40584b;letter-spacing:.07em;margin:9% 0 13%;font-family:Songti SC,STSong,SimSun,serif;font-size:8.8cqw;font-weight:400;line-height:1.35}.birthday-copy p{color:#7d705d;letter-spacing:.08em;margin:0;font-size:2.8cqw;line-height:2.25}.birthday-copy .birthday-eyebrow{letter-spacing:.12em;font-size:2.15cqw}.birthday-moment{pointer-events:none;flex-direction:column;justify-content:center;align-items:center;display:flex;position:absolute;inset:18% 8% 12%}.candle{cursor:pointer;pointer-events:auto;background:0 0;border:0;border-radius:8px;flex:none;width:34cqw;height:48cqw;padding:0;position:relative}.candle span{pointer-events:none;position:absolute}.candle-wax{background:linear-gradient(90deg,#d5ba91,#ead6b3 32%,#e6cfaa 68%,#d1b58a);border-radius:45% 45% 8% 8%/5% 5% 2% 2%;width:10cqw;height:25cqw;top:15cqw;left:12cqw;box-shadow:inset 0 2px 2px #fff9e9a1}.candle-wick{background:#705039;border-radius:2px;width:.6cqw;height:3cqw;top:12.7cqw;left:16.7cqw}.candle-flame{z-index:1;background:radial-gradient(at 45% 80%,#fff7cc 4%,#f3c870 43%,#cc8a45 95%);border-radius:75% 25% 65% 35%;width:5.2cqw;height:9.2cqw;transition:opacity .24s cubic-bezier(.22,.68,.32,1),transform .24s cubic-bezier(.22,.68,.32,1);top:4.3cqw;left:14.4cqw;transform:rotate(-9deg);box-shadow:0 0 18px #e6bc6533}.candle-dish{background:#ded3be;border-radius:50%;width:24cqw;height:2cqw;top:40cqw;left:5cqw;box-shadow:0 5px 7px -5px #73593666}[data-candle-lit=false] .candle-flame{opacity:0;transform:translateY(-6px)rotate(-9deg)scale(.75)}.candle-hint{color:#8d7b64;letter-spacing:.1em;margin:2cqw 0 0;font-size:2.35cqw}[data-motion=reduced] .book-space{transition:none;transform:none!important}[data-motion=reduced] .candle-flame{transition-duration:0s}.sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.epilogue-copy{color:#5e604e;pointer-events:none;width:82%;font-family:CuteBook,sans-serif;position:absolute;top:12%;left:11%}.epilogue-copy p{letter-spacing:.035em;white-space:nowrap;margin:0 0 5.5%;font-size:3.65cqw;line-height:1.9}.epilogue-copy .epilogue-belief{margin-top:9%;font-size:3.75cqw;line-height:1.8}.epilogue-copy strong{color:#586c59;letter-spacing:.11em;font-size:4.8cqw;font-weight:400}.epilogue-next{color:#fff5df;letter-spacing:.12em;text-shadow:0 1px 4px #6e482b;pointer-events:none;font:2.2cqw/1.4 CuteBook,sans-serif;position:absolute;bottom:4%;right:5%}.epilogue-next span{margin-left:.6em;font-size:1.3em;display:inline-block}.book-position[data-section=birthday][data-turning=false] .leaf[data-section=birthday] .spread-art{transform-origin:50% 65%;animation:5.4s ease-in-out infinite alternate birthday-breath}.leaf[data-section=birthday].--left:after{background:linear-gradient(90deg,#0000 98%,#4e432a05)}.leaf[data-section=birthday].--right:after{background:linear-gradient(90deg,#4e432a05,#0000 2%)}.birthday-scene{z-index:30;pointer-events:none;position:absolute;inset:0;overflow:hidden;container-type:inline-size}.birthday-particles{pointer-events:none;width:100%;height:100%;position:absolute;inset:0;-webkit-mask-image:linear-gradient(#000 0% 33%,#0000 59%);mask-image:linear-gradient(#000 0% 33%,#0000 59%)}.birthday-wish{text-align:center;color:#77613f;opacity:0;text-shadow:0 1px #fff7e6;width:70%;transition:opacity 1.6s,transform 1.6s;position:absolute;top:6%;left:15%;transform:translateY(10px)}.birthday-wish h1{letter-spacing:.025em;margin:.55em 0 .45em;font:400 4.4cqw/1.4 CuteBook,Comic Sans MS,sans-serif}.birthday-wish-line{background:linear-gradient(90deg,#0000,#bf9c60,#0000);width:9%;height:1px;margin:0 auto;display:block}.birthday-scene[data-phase=wish] .birthday-wish{opacity:1;transform:translateY(0)}.birthday-candle{cursor:pointer;pointer-events:auto;background:0 0;border:0;border-radius:45%;width:13%;height:21.5%;padding:0;position:absolute;top:57%;left:43.5%}.birthday-candle span{pointer-events:none;display:block;position:absolute}.birthday-flame-group{width:12%;height:15%;transform:translate(-50%)}.birthday-flame-group--left{top:21.3%;left:26.9%}.birthday-flame-group--middle{top:6.9%;left:48%}.birthday-flame-group--right{top:22.2%;left:66.3%}.birthday-candle-flame{transform-origin:50% 100%;filter:drop-shadow(0 0 5px #e5b86299);background:radial-gradient(at 50% 80%,#fff9d1 15%,#edbf65 52%,#d58c43 95%);border-radius:70% 30% 60% 40%;width:60%;height:80%;animation:1.6s ease-in-out infinite alternate candle-sway;bottom:0;left:20%}.birthday-candle-glow{background:radial-gradient(#f5d59055,#0000 66%);width:190%;height:180%;animation:2.4s ease-in-out infinite alternate glow-breathe;top:-45%;left:-45%}.birthday-flame-group--left .birthday-candle-flame{animation-delay:-.6s}.birthday-flame-group--right .birthday-candle-flame{animation-delay:-1.1s}.birthday-candle:focus-visible{outline-offset:5px;outline:1px dashed #b69b67}.birthday-candle:disabled{cursor:default}.birthday-scene:not([data-phase=idle]):not([data-phase=flicker]) .birthday-candle-flame,.birthday-scene:not([data-phase=idle]):not([data-phase=flicker]) .birthday-candle-glow{opacity:0}.birthday-scene[data-phase=flicker] .birthday-candle-flame{animation:90ms ease-in-out infinite alternate candle-flicker}.birthday-hint{text-align:right;color:#fff4df;letter-spacing:.12em;text-shadow:0 1px 4px #71492d,0 0 9px #71492d;width:33%;margin:0;font:1.18cqw/1.5 CuteBook,sans-serif;position:absolute;bottom:4.6%;right:4.8%}.birthday-light{aspect-ratio:1;opacity:0;background:#fff4c7;border-radius:50%;width:.65%;position:absolute;top:60.8%;left:49.74%;box-shadow:0 0 12px 5px #e7bd6b99}.birthday-scene[data-phase=rise] .birthday-light{animation:1.2s cubic-bezier(.23,.56,.45,1) forwards wish-rise}@keyframes wish-rise{0%{opacity:0;transform:scale(.5)}15%{opacity:1}90%{opacity:1}to{opacity:0;top:23%;left:41%;transform:scale(.5)}}@keyframes candle-sway{0%{transform:rotate(-7deg)scaleY(.94)}to{transform:rotate(8deg)scaleY(1.05)}}@keyframes glow-breathe{0%{opacity:.45}to{opacity:.95}}@keyframes candle-flicker{0%{opacity:.3;transform:scale(.7)}to{opacity:1;transform:scale(1.1)}}@keyframes birthday-breath{0%{transform:scale(1)}to{transform:scale(1.0018)}}[data-motion=reduced] .birthday-scene *,[data-motion=reduced] .leaf[data-section=birthday] .spread-art{transition:none!important;animation:none!important}@media (max-height:600px){.gift-stage{padding:24px}.book-space{width:min(100vw - 48px,200dvh - 260px)}.reading-caption{margin-top:20px}}
