:root{--night-900:#2a2550;--night-700:#3f3872;--night-500:#6a5fa8;--moon-100:#fff4d6;--moon-300:#ffe3a3;--crust-400:#f4b860;--crust-600:#c98545;--cream:#fff8ec;--blush:#ff9ca8;--jade:#8fdcc8;--lilac:#c9b8ff;--osmanthus:#ffd36b;--ink:#3b3160;--ink-soft:#6e6494;--btn-text:#5a3410;--stamp:#e8705f;--r-sm:12px;--r-md:20px;--r-lg:28px;--r-pill:999px;--shadow-card:0 8px 24px #140e3259;--focus-ring:0 0 0 3px var(--jade), 0 0 12px 2px #8fdcc899;--font-title:"ZCOOL KuaiLe", system-ui, "PingFang SC", "HarmonyOS Sans SC", "MiSans", "Microsoft YaHei", sans-serif;--font-body:system-ui, "PingFang SC", "HarmonyOS Sans SC", "MiSans", "Microsoft YaHei", sans-serif;--ease-bounce:cubic-bezier(.34, 1.8, .64, 1);--ease-soft:cubic-bezier(.22, .61, .36, 1);--ease-float:cubic-bezier(.45, 0, .55, 1);--t-tap:.12s;--t-pop:.3s;--t-fly:.6s;--t-scene:.8s;--stage-max:430px;--dock-h:132px}*,:before,:after{box-sizing:border-box}html,body{height:100%;margin:0}body{font-family:var(--font-body);color:var(--cream);background:var(--night-900);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;overscroll-behavior:none;font-size:15px}button{font:inherit;color:inherit;cursor:pointer;touch-action:manipulation;background:0 0;border:0;padding:0}button:disabled{cursor:default}:focus-visible{box-shadow:var(--focus-ring);outline:none}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;position:absolute;overflow:hidden}.title-font{font-family:var(--font-title);font-weight:400}.btn-candy{border-radius:var(--r-lg);background:linear-gradient(180deg, var(--osmanthus), var(--crust-400));min-height:56px;box-shadow:0 4px 0 var(--crust-600), 0 10px 24px #140e3259;color:var(--btn-text);font-family:var(--font-title);letter-spacing:.04em;transition:transform var(--t-tap) var(--ease-soft), box-shadow var(--t-tap) var(--ease-soft);animation:breathe 1.6s var(--ease-float) infinite alternate;padding:0 32px;font-size:18px}.btn-candy:active{box-shadow:0 0 0 var(--crust-600), 0 6px 16px #140e3259;animation:none;transform:translateY(4px)scale(.96)}.btn-candy:focus-visible{box-shadow:0 4px 0 var(--crust-600), var(--focus-ring)}.btn-ghost{border:2px solid var(--cream);min-height:48px;color:var(--cream);font-family:var(--font-title);transition:transform var(--t-tap) var(--ease-soft);border-radius:24px;padding:0 20px;font-size:16px}.btn-ghost:active{transform:scale(.96)}.btn-skip{border-radius:var(--r-pill);min-width:44px;min-height:44px;color:var(--cream);background:#3f387299;padding:0 16px;font-size:14px}@keyframes breathe{0%{transform:scale(1)}to{transform:scale(1.04)}}@keyframes float{0%{transform:translateY(-6px)}to{transform:translateY(6px)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes pop-in{0%{opacity:0;transform:scale(.6)}to{opacity:1;transform:scale(1)}}@keyframes jelly{0%{transform:scale(1)}30%{transform:scale(1.08,.94)}55%{transform:scale(.97,1.03)}75%{transform:scale(1.02,.99)}to{transform:scale(1)}}@keyframes squash{0%{transform:scale(1)}18%{transform:scale(1.15,.78)}45%{transform:scale(.94,1.08)}70%{transform:scale(1.03,.97)}to{transform:scale(1)}}@keyframes rise-up{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.2s!important;animation-duration:.2s!important;animation-iteration-count:1!important}.cloud-track,.rabbit__ear--pop{animation:none!important}.rabbit__glasses.is-off{transform:none!important}@keyframes breathe{to{opacity:1}}@keyframes float{to{opacity:1}}@keyframes jelly{0%{opacity:.6}}@keyframes squash{0%{opacity:.6}}@keyframes pop-in{0%{opacity:0}}@keyframes rise-up{0%{opacity:0}}}.backdrop{background:radial-gradient(circle at 15% 20%, #ffd36b1f 0 2px, transparent 3px), radial-gradient(circle at 85% 70%, #ffd36b1a 0 2px, transparent 3px), radial-gradient(ellipse at 50% 110%, var(--night-500), transparent 60%), linear-gradient(180deg, #221e44, var(--night-900));justify-content:center;min-height:100dvh;display:flex}.stage{width:100%;max-width:var(--stage-max);background:linear-gradient(180deg, var(--night-900) 0%, var(--night-700) 78%, #4d4488 100%);height:100dvh;padding:env(safe-area-inset-top) 0 env(safe-area-inset-bottom);position:relative;overflow:hidden;box-shadow:0 0 60px #0a061e99}.sky{pointer-events:none;position:absolute;inset:0}.star{background:var(--moon-100);opacity:.7;animation:twinkle 3.2s var(--ease-float) infinite alternate;border-radius:50%;position:absolute}@keyframes twinkle{0%{opacity:.25}to{opacity:.9}}.horizon{background:radial-gradient(at 50% 100%,#6a5fa8cc,#0000 70%);height:180px;position:absolute;bottom:-60px;left:-20%;right:-20%}.moon{background:radial-gradient(circle at 40% 38%, var(--moon-100), var(--moon-300) 70%);opacity:.55;width:220px;height:220px;transition:left var(--t-scene) var(--ease-soft), top var(--t-scene) var(--ease-soft), transform var(--t-scene) var(--ease-soft), opacity var(--t-scene) var(--ease-soft);border-radius:50%;margin-left:-110px;position:absolute;top:calc(35dvh - 140px);left:50%;box-shadow:0 0 60px 20px #ffe3a347,0 0 160px 60px #ffe3a31f}.moon:before,.wish-moon:before{content:"";background:radial-gradient(circle at 30% 58%,#e2b66852 0 8%,#0000 11%),radial-gradient(circle at 63% 30%,#e2b66842 0 5%,#0000 7.5%),radial-gradient(circle at 68% 64%,#e2b6683d 0 11%,#0000 14%),radial-gradient(circle at 45% 82%,#e2b66838 0 4%,#0000 6%),radial-gradient(circle at 22% 34%,#e2b6682e 0 3.5%,#0000 5.5%);border-radius:50%;position:absolute;inset:0;box-shadow:inset -14px -16px 34px #f0b05c61,inset 10px 12px 26px #ffffff73}.stage:where(:not([data-state=INTRO],[data-state=LOADING])) .moon{left:calc(100% - 32px);top:calc(-78px + env(safe-area-inset-top));opacity:.8;transform:scale(.3)}.stage[data-state=MOON_WISH] .moon,.stage[data-state=BLESSING] .moon,.stage[data-state=RESULT] .moon,.stage[data-state=SHARE] .moon{opacity:0}.stage[data-state=MOON_WISH]{background:linear-gradient(180deg, #221e44 0%, var(--night-900) 80%, var(--night-700) 100%)}.cloud-track{width:100%;transform:translateX(var(--x));animation:linear infinite cloud-drift;position:absolute;left:0}@keyframes cloud-drift{0%{transform:translate(-45%)}to{transform:translate(100%)}}.cloud{border-radius:var(--r-pill);opacity:.13;background:#d9d0ff;height:22px;display:block;position:relative}.cloud:before,.cloud:after{content:"";background:inherit;aspect-ratio:1;border-radius:50%;position:absolute;bottom:40%}.cloud:before{width:36%;left:16%}.cloud:after{width:26%;left:44%}.particles{z-index:6;pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.stage[data-state=RESULT] .particles,.stage[data-state=SHARE] .particles{z-index:0}.music-toggle{top:calc(10px + env(safe-area-inset-top));z-index:10;cursor:pointer;width:44px;height:44px;transition:transform var(--t-tap) var(--ease-soft);background:#3f3872b8;border:0;border-radius:50%;place-items:center;padding:0;display:grid;position:absolute;right:10px;box-shadow:0 2px 10px #140e3259}.music-toggle:active{transform:scale(.92)}.music-toggle svg{width:30px;height:30px;overflow:visible}.music-toggle__note{animation:note-bounce 1.2s var(--ease-float) infinite alternate}.music-toggle__note+.music-toggle__note{animation-delay:.6s}@keyframes note-bounce{to{transform:translateY(-3px)}}.music-toggle__zzz{font:700 9px var(--font-body)}.mooncake-canvas{width:min(var(--size), 62vw);aspect-ratio:1;height:auto;display:block}.mooncake-3d{width:min(var(--size), 62vw);aspect-ratio:1;position:relative}.mooncake-3d__canvas{width:100%;height:100%;display:block}.icon{vertical-align:-.15em;flex:none;width:1em;height:1em;display:inline-block}.rabbit{width:100%;height:100%;display:block;overflow:visible}.rabbit__body{transform-origin:50% 100%;animation:rabbit-breathe 2s var(--ease-float) infinite alternate}@keyframes rabbit-breathe{to{transform:scaleY(1.02)}}.rabbit__ear--right{transform-origin:62px 44px;animation:5s ease-in-out infinite ear-twitch}@keyframes ear-twitch{0%,88%,to{transform:rotate(0)}92%{transform:rotate(8deg)}96%{transform:rotate(-4deg)}}.rabbit__mouth-open{opacity:0}.rabbit--talking .rabbit__mouth-open{animation:.24s step-end infinite talk-open}.rabbit--talking .rabbit__mouth-closed{animation:.24s step-end infinite talk-closed}@keyframes talk-open{0%{opacity:1}50%{opacity:0}}@keyframes talk-closed{0%{opacity:0}50%{opacity:1}}.rabbit__glint{opacity:0;animation:1.2s ease-out glint}.rabbit__glasses{transition:transform .35s var(--ease-soft), opacity .35s var(--ease-soft)}.rabbit__glasses.is-off{opacity:0;transform:translateY(10px)}.rabbit__ear--pop{transform-origin:38px 44px;animation:ear-pop .5s var(--ease-bounce)}@keyframes ear-pop{0%{transform:scaleY(.55)rotate(-30deg)}60%{transform:scaleY(1.12)}}@keyframes glint{30%{opacity:1}to{opacity:0}}.rabbit__wave{transform-origin:70px 80px;animation:.5s ease-in-out infinite alternate wave}@keyframes wave{0%{transform:rotate(-14deg)}to{transform:rotate(14deg)}}.rabbit-dock{left:8px;right:12px;bottom:calc(10px + env(safe-area-inset-bottom));z-index:5;pointer-events:none;align-items:flex-end;gap:4px;display:flex;position:absolute}.rabbit-dock__rabbit{width:88px;height:106px;animation:rise-up .4s var(--ease-bounce) both;flex:none}.bubble{border-radius:var(--r-md);background:var(--cream);max-width:100%;min-height:44px;color:var(--ink);box-shadow:var(--shadow-card);pointer-events:auto;cursor:pointer;animation:pop-in var(--t-pop) var(--ease-bounce) .12s both;padding:10px 14px;font-size:16px;font-weight:500;line-height:1.45;position:relative}.bubble:before{content:"";border:8px solid #0000;border-right-color:var(--cream);border-left:0;position:absolute;bottom:14px;left:-7px}.rabbit-dock__bubble{margin-bottom:46px}.progress{justify-content:center;gap:8px;display:flex}.progress__cake{fill:#0000;width:20px;height:20px;stroke:var(--moon-300);stroke-width:2px;transition:fill var(--t-pop) var(--ease-soft)}.progress__cake .progress__ring{stroke-width:1.2px;opacity:.6}.progress__cake.is-filled{fill:var(--crust-400);animation:jelly .4s var(--ease-soft)}.progress__cake.is-filled .progress__ring{fill:var(--osmanthus);stroke:var(--crust-600)}.result-card{border-radius:var(--r-lg);background:var(--cream);color:var(--ink);box-shadow:var(--shadow-card);animation:rise-up .5s var(--ease-soft) both;margin:0 16px;padding:26px 20px 28px;position:relative;-webkit-mask:radial-gradient(circle at 50% 0,#0000 7px,#000 7.5px) top/22px 12px repeat-x,linear-gradient(#000,#000) 0 11px/100% calc(100% - 11px) no-repeat;mask:radial-gradient(circle at 50% 0,#0000 7px,#000 7.5px) top/22px 12px repeat-x,linear-gradient(#000,#000) 0 11px/100% calc(100% - 11px) no-repeat}.result-card__head{text-align:center}.result-card__title{color:var(--ink-soft);margin:0;font-size:16px}.result-card__serial{color:var(--ink-soft);font-variant-numeric:tabular-nums;letter-spacing:.05em;margin:4px 0 0;font-size:12px;font-weight:500}.result-card__hidden{border-radius:var(--r-pill);background:var(--lilac);width:fit-content;margin:14px auto 0;padding:2px 12px;font-size:12px;font-weight:600}.result-card__name-row{justify-content:center;align-items:center;gap:8px;margin-top:12px;display:flex}.result-card__name{text-align:center;margin:0;font-size:clamp(26px,8vw,30px);line-height:1.2}.result-card__sticker{filter:drop-shadow(0 2px #fff)drop-shadow(0 -2px #fff)drop-shadow(2px 0 #fff)drop-shadow(-2px 0 #fff);font-size:30px;rotate:10deg}.result-card__tagline{border-radius:var(--r-md);text-align:center;background:#fff1d6;margin:14px 0 0;padding:12px 16px;font-size:15px;line-height:1.6;position:relative}.result-card__tagline span{display:block}.result-card__tagline:before{content:"「";top:6px;left:10px}.result-card__tagline:after{content:"」";bottom:6px;right:10px}.result-card__tagline:before,.result-card__tagline:after{color:var(--crust-600);font-weight:700;position:absolute}.result-card__section{margin-top:18px}.result-card__label{color:var(--ink-soft);text-align:left;letter-spacing:.08em;margin:0 0 8px;font-size:13px;font-weight:700}.result-card__contains{flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;display:flex}.result-card__contains li{border-radius:var(--r-pill);border:1.5px solid var(--moon-300);background:#fff;align-items:center;gap:4px;padding:4px 10px;font-size:13px;display:flex}.result-card__contains .icon{font-size:22px}.result-card__contains li.is-wish{border-color:var(--lilac)}.nutrition{border-collapse:collapse;border-top:3px solid var(--ink);border-bottom:3px solid var(--ink);width:100%;font-size:14px}.nutrition thead th{border-bottom:1.5px solid var(--ink);text-align:left;padding:6px 0;font-size:12px;font-weight:600}.nutrition thead th:last-child{text-align:right}.nutrition tbody th,.nutrition tfoot th{text-align:left;white-space:nowrap;padding:7px 8px 7px 0;font-weight:500}.nutrition tbody tr+tr{border-top:1px dashed #3b316033}.nutrition__bar-cell{width:100%}.nutrition__bar{border-radius:var(--r-pill);transform-origin:0;min-width:6px;height:10px;animation:bar-grow .7s var(--ease-soft) both;display:block}@keyframes bar-grow{0%{transform:scaleX(0)}}.nutrition__percent{text-align:right;font-variant-numeric:tabular-nums;padding-left:8px;font-weight:700}.nutrition tfoot{border-top:1.5px solid var(--ink)}.nutrition tfoot th{font-weight:700}.result-card__tags{gap:8px;margin:18px 0 0;display:grid}.result-card__tags div{border-radius:var(--r-sm);background:#f6efff;padding:8px 12px}.result-card__tags dt{color:var(--ink-soft);font-size:12px;font-weight:700}.result-card__tags dd{margin:2px 0 0;font-size:14px;line-height:1.5}.stamp{border:2px solid var(--stamp);color:var(--stamp);opacity:.85;animation:stamp-in .42s var(--ease-bounce) .7s both;border-radius:14px;flex-direction:column;align-items:center;gap:2px;padding:6px 8px;font-size:10px;font-weight:700;display:flex;position:absolute;bottom:10px;right:14px;rotate:-12deg}.stamp svg{width:22px;height:22px;fill:var(--stamp)}@keyframes stamp-in{0%{opacity:0;transform:scale(1.4)}60%{opacity:.85;transform:scale(.96)}80%{transform:scale(1.03)translate(1px)}to{opacity:.85;transform:scale(1)}}.result-card__tags div:last-child{margin-right:84px}.poster-overlay{z-index:20;padding:calc(16px + env(safe-area-inset-top)) 16px calc(16px + env(safe-area-inset-bottom));animation:fade-in var(--t-pop) var(--ease-soft);background:#14102ce6;flex-direction:column;justify-content:center;align-items:center;gap:12px;display:flex;position:absolute;inset:0}.poster-overlay__img{border-radius:var(--r-sm);max-width:100%;max-height:calc(100% - 140px);box-shadow:var(--shadow-card);animation:pop-in var(--t-pop) var(--ease-bounce);display:block}.poster-overlay__hint{color:var(--moon-100);margin:0;font-size:14px}.poster-overlay__actions{gap:12px;display:flex}.poster-overlay__save{align-items:center;text-decoration:none;display:inline-flex}.debug-panel,.debug-toggle{z-index:1000;font:12px ui-monospace,Menlo,monospace;position:fixed;top:8px;left:8px}.debug-toggle{background:#0009;border-radius:50%;width:44px;height:44px}.debug-panel{color:#d8f5ec;background:#000000c7;border-radius:10px;width:min(340px,100vw - 16px);padding:8px 10px}.debug-panel p{word-break:break-all;margin:6px 0 0}.debug-panel__row{align-items:center;gap:6px;margin-bottom:6px;display:flex}.debug-panel__row button,.debug-panel__row select{color:#fff;font:inherit;background:#3f3872;border:0;border-radius:6px;padding:4px 8px}.debug-panel__row>span{color:var(--osmanthus);flex:1}.scene{z-index:1;height:100%;animation:fade-in .4s var(--ease-soft) both;flex-direction:column;align-items:center;padding:20px 20px 16px;display:flex;position:relative}.stage.has-dock .scene{padding-bottom:calc(var(--dock-h) + 8px)}.scene__head{text-align:center;flex-direction:column;align-items:center;gap:8px;padding-inline:38px;display:flex}.scene__title{color:var(--moon-100);text-shadow:0 2px 12px #ffe3a359;word-break:keep-all;margin:0;font-size:clamp(22px,6.6vw,26px)}.scene__hint{color:#fff8ecb8;margin:0;font-size:14px}.scene--result,.scene--share{padding:0}.scene__scroll{overscroll-behavior:contain;flex:1;width:100%;min-height:0;padding:20px 0 24px;overflow-y:auto}.scene__footer{background:linear-gradient(#2a255000,#2a2550f5 28%);flex-direction:column;flex:none;align-items:center;gap:10px;width:100%;padding:12px 20px 16px;display:flex}.scene__footer .btn-candy{width:100%;max-width:320px}.scene__footer-row{gap:10px;width:100%;max-width:320px;display:flex}.scene__footer-row .btn-ghost{flex:1;padding:0 8px}.bowl{flex:none;position:relative}.bowl--pulse{animation:jelly .4s var(--ease-soft)}.bowl--glow{filter:drop-shadow(0 0 18px #c9b8ffd9);animation:jelly .4s var(--ease-soft)}.bowl__mark{z-index:1;color:var(--osmanthus);animation:pop-in var(--t-pop) var(--ease-bounce) .12s both;font-size:28px;font-weight:900;position:absolute;top:4%;right:8%}.scene--intro{text-align:center;justify-content:space-between;padding-top:44px;padding-bottom:28px}.intro__title{color:var(--moon-100);text-shadow:0 3px #2a255099,0 0 24px #ffe3a366;margin:0;font-size:clamp(30px,9vw,36px)}.intro__lead{color:var(--cream);margin:10px 0 0;font-size:16px}.intro__cake-2d{animation:float 2.4s var(--ease-float) infinite alternate}.intro__cake-2d.is-squashing{animation:squash .5s var(--ease-soft)}.intro__small{color:#fff8ecc7;margin:0;font-size:14px;line-height:1.75}.intro__cta{flex-direction:column;align-items:center;gap:10px;display:flex}.intro__cta .btn-candy{min-width:240px}.items-stage{flex-direction:column;flex:1;justify-content:center;align-items:center;gap:10px;width:100%;display:flex}.items-arc{grid-template-columns:repeat(4,minmax(0,80px));justify-content:center;gap:8px;width:100%;display:grid}.item{min-height:88px;color:var(--cream);animation:float 2.4s var(--ease-float) infinite alternate;transition:background var(--t-tap) var(--ease-soft), opacity var(--t-pop) var(--ease-soft), scale var(--t-tap) var(--ease-soft);background:#fff8ec1f;border:2px solid #fff8ec40;border-radius:22px;flex-direction:column;justify-content:center;align-items:center;gap:2px;padding:6px 2px;display:flex}.item:active:not(:disabled){scale:.94}.item.is-selected{background:var(--cream);border-color:var(--osmanthus);color:var(--ink);box-shadow:0 0 0 3px var(--osmanthus), 0 0 16px #ffd36b99}.item:disabled:not(.is-selected){opacity:.4}.item__icon{font-size:42px}.item__label{font-size:12px;line-height:1.25}.work-stage{flex-direction:column;flex:1;justify-content:center;align-items:center;gap:14px;width:100%;display:flex;position:relative}.phone{width:210px;box-shadow:0 0 0 3px var(--night-500), var(--shadow-card);background:#1d1a3a;border-radius:28px;padding:10px}.phone.is-buzzing{animation:.12s linear infinite buzz}@keyframes buzz{0%,to{transform:translate(-3px)rotate(-2deg)}50%{transform:translate(3px)rotate(2deg)}}.phone.is-thrown{animation:thrown 1.1s var(--ease-soft) .12s forwards}@keyframes thrown{30%{transform:translate(16px,-30px)rotate(40deg)}to{opacity:0;transform:translate(240px,-360px)rotate(540deg)scale(.3)}}.phone__screen{min-height:116px;color:var(--ink);background:linear-gradient(#f3f0ff,#e2dbff);border-radius:20px;flex-direction:column;gap:8px;padding:12px;font-size:14px;line-height:1.5;display:flex;position:relative}.phone__message{animation:pop-in var(--t-pop) var(--ease-bounce) both;background:#fff;border-radius:14px 14px 14px 4px;margin:0;padding:8px 10px}.phone__sender{font-weight:700}.phone__reply{background:var(--jade);animation:pop-in var(--t-pop) var(--ease-bounce) .3s both;border-radius:14px 14px 4px;align-self:flex-end;padding:6px 12px}.phone__leaf{animation:leaf-fall 1.3s var(--ease-soft) .12s both;font-size:30px;position:absolute;top:8px;left:50%}@keyframes leaf-fall{0%{opacity:0;transform:translate(40px,-40px)rotate(60deg)}40%{opacity:1}to{opacity:1;transform:translate(-16px,30px)rotate(-20deg)}}.phone__coffee{border-radius:var(--r-pill);animation:pop-in var(--t-pop) var(--ease-bounce) .3s both;background:#fff1d6;align-self:center;align-items:center;gap:4px;padding:4px 10px;display:flex}.phone__star{color:var(--osmanthus);animation:pop-in .4s var(--ease-bounce) 1s both;align-items:center;gap:4px;font-size:20px;display:flex;position:absolute;top:6%;right:12%}.action-grid{width:100%;max-width:360px;animation:rise-up .4s var(--ease-soft) both;grid-template-columns:1fr 1fr;gap:10px;display:grid}.action-card{border-radius:var(--r-md);background:var(--cream);min-height:60px;color:var(--ink);transition:transform var(--t-tap) var(--ease-soft), box-shadow var(--t-tap) var(--ease-soft), opacity var(--t-pop) var(--ease-soft);justify-content:center;align-items:center;gap:8px;padding:8px 10px;font-weight:600;display:flex;box-shadow:0 4px #d9ccb4}.action-card:active:not(:disabled){transform:translateY(3px);box-shadow:0 1px #d9ccb4}.action-card.is-chosen{background:var(--osmanthus);box-shadow:0 4px 0 var(--crust-600);animation:jelly .4s var(--ease-soft)}.action-card:disabled:not(.is-chosen){opacity:.4}.action-card__icon{font-size:34px}.scene--wish{justify-content:space-between}.wish-orbit{--orbit:min(320px, 84vw, 42dvh);width:var(--orbit);height:var(--orbit);flex:none;position:relative}.wish-moon{background:radial-gradient(circle at 40% 38%, var(--moon-100), var(--moon-300) 70%);transition:box-shadow var(--t-fly) var(--ease-soft), transform var(--t-fly) var(--ease-soft);animation:moon-rise 1.2s var(--ease-soft) both;border-radius:50%;position:absolute;inset:30%;box-shadow:0 0 40px 12px #ffe3a359}@keyframes moon-rise{0%{opacity:0;translate:0 60%}}.wish-moon.is-lit{transition-delay:.9s;transform:scale(1.08);box-shadow:0 0 60px 24px #ffe3a399}.wish-ring{animation:fade-in .5s var(--ease-soft) both;position:absolute;inset:0}.wish-slot{width:0;height:0;position:absolute;top:50%;left:50%}.wish{left:calc(var(--orbit) * .36);width:84px;min-height:56px;color:var(--moon-100);transition:opacity var(--t-pop) var(--ease-soft);background:#fff4d624;border:1.5px solid #ffe3a38c;border-radius:20px;flex-direction:column;justify-content:center;align-items:center;gap:2px;margin:-28px 0 0 -42px;padding:6px 4px;font-size:13px;line-height:1.2;display:flex;position:absolute;top:0;box-shadow:0 0 14px #ffe3a340}.wish .icon{font-size:32px}.wish:active:not(:disabled){background:#fff4d64d}.wish-orbit.has-chosen .wish:not(.is-chosen){opacity:.25}.wish.is-chosen{background:var(--moon-100);color:var(--ink);animation:wish-fly 1.2s var(--ease-soft) forwards}@keyframes wish-fly{60%{opacity:1;left:0;transform:scale(.6)}to{opacity:0;left:0;transform:scale(.2)}}.making-stage{flex:1;justify-content:center;align-items:center;width:100%;display:flex;position:relative}.making__cake{position:relative}.making-stage.is-ball .making__cake-2d{animation:knead .9s var(--ease-float)}@keyframes knead{0%,to{transform:scale(1)rotate(0)}25%{transform:scale(1.08,.92)rotate(-8deg)}50%{transform:scale(.94,1.06)rotate(6deg)}75%{transform:scale(1.05,.95)rotate(-4deg)}}.making-stage.is-press .making__cake-2d{animation:squash .5s var(--ease-soft) .15s}.making-stage.is-born .making__cake-2d{animation:hop .6s var(--ease-bounce)}@keyframes hop{40%{transform:translateY(-24px)}to{transform:translateY(0)}}.pestle{z-index:2;width:72px;animation:pestle-drop .4s var(--ease-soft) both;flex-direction:column-reverse;align-items:center;margin-left:-36px;display:flex;position:absolute;bottom:calc(50% + 70px);left:50%}.making-stage.is-bake .pestle{animation:pestle-up .4s var(--ease-soft) both}.pestle__head{background:linear-gradient(#fff4d6,#eadcc4);border-radius:18px;width:72px;height:34px;box-shadow:inset 0 -4px #c9854559}.pestle__handle{background:linear-gradient(90deg, var(--crust-400), var(--crust-600));border-radius:9px 9px 0 0;width:18px;height:64px}@keyframes pestle-drop{0%{opacity:0;transform:translateY(-120px)}40%{opacity:1;transform:translateY(36px)}60%{transform:translateY(28px)}to{opacity:1;transform:translateY(30px)}}@keyframes pestle-up{0%{opacity:1;transform:translateY(30px)}to{opacity:0;transform:translateY(-140px)}}.making__dong{z-index:3;color:var(--osmanthus);text-shadow:0 3px 0 var(--crust-600);animation:pop-in var(--t-pop) var(--ease-bounce) .15s both;font-size:38px;position:absolute;top:16%;right:12%;rotate:12deg}.steam{gap:16px;display:flex;position:absolute;bottom:calc(50% + 80px);left:50%;translate:-50%}.steam span{filter:blur(2px);opacity:0;width:8px;height:30px;animation:steam 1.6s var(--ease-soft) infinite;background:#fff8ec8c;border-radius:8px}.steam span:nth-child(2){animation-delay:.3s}.steam span:nth-child(3){animation-delay:.6s}@keyframes steam{0%{opacity:0;transform:translateY(20px)scaleY(.6)}40%{opacity:.8}to{opacity:0;transform:translateY(-30px)scaleY(1.2)}}.scan-stage{flex-direction:column;flex:1;justify-content:center;align-items:center;width:100%;display:flex;position:relative}.scan-stage__cake{border-radius:50%;position:relative;overflow:hidden}.scan-line{background:var(--jade);height:3px;animation:scan 1.4s var(--ease-float) infinite alternate;position:absolute;top:0;left:0;right:0;box-shadow:0 0 12px 4px #8fdcc8b3}@keyframes scan{0%{top:8%}to{top:92%}}.analyzer{background:linear-gradient(180deg, var(--night-500), var(--night-700));width:160px;height:20px;box-shadow:0 0 0 2px var(--jade), 0 0 20px #8fdcc866;border-radius:0 0 50% 50%/0 0 100% 100%;margin-top:-8px}.hud{pointer-events:none;margin:0;padding:0;list-style:none;position:absolute;inset:0}.hud__tag{border:1.5px solid var(--jade);color:#d8f5ec;max-width:46%;animation:pop-in var(--t-pop) var(--ease-bounce) both;background:#2a2550e0;border-radius:12px;padding:6px 10px;font-size:12px;line-height:1.4;position:absolute}.hud__tag.is-left{left:0}.hud__tag.is-right{right:0}.hud__tag:first-child{top:4%}.hud__tag:nth-child(2){top:14%}.hud__tag:nth-child(3){top:72%}.hud__tag:nth-child(4){top:82%}.cut-stage{flex:1;justify-content:center;align-items:center;width:100%;display:flex;position:relative}.cut-stage__cake,.cut-stage__whole{position:relative}.cut-stage.is-hold .cut-stage__whole{animation:jelly .5s var(--ease-soft)}.blade{background:linear-gradient(180deg, transparent, #fff 20%, var(--moon-100) 80%, transparent);transform-origin:top;width:12px;height:120%;animation:blade .32s var(--ease-soft) both;border-radius:50%;margin-left:-6px;position:absolute;top:-10%;left:50%;rotate:12deg;box-shadow:0 0 16px 6px #fff4d6b3}@keyframes blade{0%{opacity:1;transform:scaleY(0)}70%{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(1)}}.cut-stage__sfx{color:var(--moon-100);animation:pop-in var(--t-pop) var(--ease-bounce) both;font-size:34px;position:absolute;top:2%;right:-4%}.cut-stage__half{position:absolute;top:50%;left:50%;translate:-50% -50%}.cut-stage__half.is-left{animation:split-left .45s var(--ease-soft) forwards}.cut-stage__half.is-right{animation:split-right .45s var(--ease-soft) forwards}@keyframes split-left{to{transform:translate(-34px)rotate(-8deg)}}@keyframes split-right{to{transform:translate(34px)rotate(8deg)}}.cut-stage__section{animation:pop-in .42s var(--ease-bounce) both}.cut-stage__name{text-align:center;color:var(--moon-100);text-shadow:0 3px #2a255099,0 0 20px #ffe3a373;animation:rise-up .4s var(--ease-soft) .15s both;margin:0;font-size:32px;position:absolute;bottom:12%;left:0;right:0}.result-hero{flex-direction:column;align-items:center;margin-bottom:12px;padding:0 16px;display:flex}.result-hero__cake{animation:pop-in .5s var(--ease-bounce) both}.result-hero__rabbit{align-items:flex-end;gap:4px;width:100%;margin-top:-20px;display:flex}.result-hero__rabbit .rabbit{flex:none;width:80px;height:96px}.result-hero__bubble{margin-bottom:40px}.share-hero{animation:pop-in .5s var(--ease-bounce) both;justify-content:center;margin-bottom:12px;display:flex}.stage[data-state=BLESSING]{background:linear-gradient(180deg, #221e44 0%, var(--night-900) 60%, var(--night-700) 100%)}.scene--blessing{padding:0;overflow:hidden}.blessing__skip{z-index:5;position:absolute;top:14px;right:64px}.blessing-sky{pointer-events:none;position:absolute;inset:0}.blessing-sky__cake,.blessing-sky__moon{position:absolute;left:50%;translate:-50% -50%}.blessing-sky__cake{animation:rise-to-moon 1.3s var(--ease-soft) .2s forwards;transition:opacity .7s var(--ease-soft);top:32%}@keyframes rise-to-moon{to{transform:translateY(-14dvh)}}.blessing-sky.is-moon .blessing-sky__cake{opacity:0}.blessing-sky__moon{opacity:0;transition:opacity .7s var(--ease-soft);display:grid;top:calc(32% - 14dvh)}.blessing-sky.is-moon .blessing-sky__moon{opacity:1}.blessing-sky__moon .mooncake-canvas{grid-area:1/1}.blessing-sky__moon .mooncake-canvas:first-child{z-index:1;transition:opacity .6s var(--ease-soft)}.blessing-sky__moon .mooncake-canvas.is-hidden{opacity:0}.drifter{left:calc(16% + var(--i) * 20%);opacity:0;animation:drift 3.2s var(--ease-soft) calc(1.6s + var(--i) * .3s) both;font-size:22px;position:absolute;top:62%}@keyframes drift{0%{opacity:0;transform:translateY(0)}20%{opacity:.9}to{opacity:0;transform:translate(12px,-36dvh)rotate(20deg)scale(.5)}}.blessing-text{z-index:1;text-align:center;flex-direction:column;align-items:center;gap:12px;padding:0 24px;display:flex;position:absolute;top:44%;left:0;right:0}.blessing-text p{margin:0}.blessing-text__lines,.blessing-text__formal{font-size:18px;line-height:1.8}.blessing-text__lines span,.blessing-text__formal span{animation:rise-up .6s var(--ease-soft) both;display:block}.blessing-text__title{color:var(--moon-100);text-shadow:0 0 24px #ffe3a399;animation:pop-in .6s var(--ease-bounce) both;font-size:46px}.blessing-text__formal{opacity:.92;font-size:15px}.blessing-text__signature{letter-spacing:.2em;color:var(--osmanthus);animation:fade-in .6s var(--ease-soft) both;font-size:13px}.houses{clip-path:polygon(0 40%,10% 20%,20% 40%,20% 30%,34% 8%,48% 30%,48% 42%,60% 22%,72% 42%,72% 28%,86% 10%,100% 30%,100% 100%,0 100%);background:#1f1b3d;grid-template-columns:repeat(5,1fr);align-content:end;justify-items:center;gap:14px 0;height:110px;padding:0 8% 18px;display:grid;position:absolute;bottom:0;left:0;right:0}.houses__window{width:14px;height:16px;animation:window-on .5s var(--ease-soft) both;background:#3a3466;border-radius:3px}@keyframes window-on{to{background:var(--osmanthus);box-shadow:0 0 10px 2px #ffd36bb3}}.blessing__rabbit{z-index:2;width:80px;height:96px;animation:rise-up .5s var(--ease-bounce) both;position:absolute;bottom:70px;right:8px}
