html{width:100%;height:100%;background:#e8cfc0;height:-webkit-fill-available}html,body,#root{overscroll-behavior:none;touch-action:none;-webkit-tap-highlight-color:transparent;width:100%;margin:0;overflow:hidden}body,#root{height:100dvh;background:#e8cfc0;height:-webkit-fill-available;position:fixed;inset:0}*{box-sizing:border-box}.game-root{background:#fff0e6;width:100%;max-width:480px;height:100%;margin-inline:auto;position:absolute;inset:0}.game-root canvas{display:block}.boot-splash{z-index:9999;padding:max(24px, env(safe-area-inset-top)) 28px max(24px, env(safe-area-inset-bottom));color:#5c3d2e;background:radial-gradient(80% 55% at 50% 18%,#ffe0d0 0%,#0000 70%),linear-gradient(165deg,#fff6ee 0%,#f7dccf 48%,#efc4b4 100%);flex-direction:column;justify-content:center;align-items:center;font-family:Nunito,Trebuchet MS,Segoe UI,sans-serif;transition:opacity .4s,visibility .4s;display:flex;position:fixed;inset:0}.boot-splash--done{opacity:0;visibility:hidden;pointer-events:none}.boot-splash__glow{background:radial-gradient(circle,#e89a9a73,#0000 70%);border-radius:50%;width:220px;height:220px;animation:2.4s ease-in-out infinite boot-pulse;position:absolute;top:22%}.boot-splash__hearts{width:72px;height:64px;margin-bottom:18px;position:relative}.boot-splash__hearts span{background:#e89a9a;width:28px;height:28px;animation:2.8s ease-in-out infinite boot-float;position:absolute;transform:rotate(-45deg)}.boot-splash__hearts span:before,.boot-splash__hearts span:after{content:"";background:#e89a9a;border-radius:50%;width:28px;height:28px;position:absolute}.boot-splash__hearts span:before{top:-14px;left:0}.boot-splash__hearts span:after{top:0;left:14px}.boot-splash__hearts span:first-child{top:10px;left:22px}.boot-splash__hearts span:nth-child(2){opacity:.7;animation-delay:.35s;top:22px;left:0;transform:rotate(-45deg)scale(.7)}.boot-splash__hearts span:nth-child(3){opacity:.7;animation-delay:.7s;top:22px;left:44px;transform:rotate(-45deg)scale(.7)}.boot-splash__eyebrow{letter-spacing:.18em;text-transform:uppercase;color:#8a6a58;margin:0 0 6px;font-size:13px;font-weight:800}.boot-splash__title{text-align:center;margin:0 0 28px;font-size:clamp(22px,6vw,28px);font-weight:800;line-height:1.25}.boot-splash__status{color:#8a6a58;margin:0 0 12px;font-size:14px;font-weight:600}.boot-splash__track{background:#5c3d2e1f;border-radius:999px;width:min(280px,72vw);height:12px;overflow:hidden}.boot-splash__bar{border-radius:inherit;transform-origin:0;background:linear-gradient(90deg,#e89a9a,#d4a017);width:100%;height:100%;transition:transform .15s linear;transform:scaleX(.02)}.boot-splash__pct{margin:10px 0 0;font-size:16px;font-weight:800}@keyframes boot-pulse{0%,to{opacity:.85;transform:scale(1)}50%{opacity:1;transform:scale(1.12)}}@keyframes boot-float{0%,to{translate:0}50%{translate:0 -8px}}.gift-show{z-index:50;touch-action:none;-webkit-user-select:none;user-select:none;background:radial-gradient(circle at 50% 42%,#ffe4ee8c,#3c14288c 75%);font-family:Nunito,Trebuchet MS,Segoe UI,sans-serif;animation:.25s ease-out both gift-show-in;position:absolute;inset:0;overflow:hidden}.gift-show.is-exiting{opacity:0;transition:opacity .3s}.gift-show__halo{aspect-ratio:1;background:radial-gradient(circle,#ffecb4e6 0%,#ff96be73 40%,#0000 70%);border-radius:9999px;width:min(92%,26rem);animation:2.4s ease-in-out infinite alternate gift-show-halo;position:absolute;top:42%;left:50%;translate:-50% -50%}.gift-show__canvas{object-fit:contain;width:min(100%,30rem);height:auto;max-height:100%;position:absolute;top:44%;left:50%;translate:-50% -50%}.gift-show__art{opacity:0;filter:drop-shadow(0 0 16px #fffffff2)drop-shadow(0 0 40px #f296bee6);width:min(52%,13rem);position:absolute;top:40%;left:50%;translate:-50% -50%}.gift-show.is-fallback .gift-show__art{animation:2.6s cubic-bezier(.2,.8,.3,1) both gift-show-pop}.gift-show.is-playing .gift-show__art{display:none}.gift-show__banner{left:50%;bottom:calc(max(1rem, env(safe-area-inset-bottom)) + 9.5rem);width:250px;height:56px;margin-left:-140px;animation:.7s cubic-bezier(.2,.8,.2,1) .15s both gift-show-slide;position:absolute}.gift-show__banner-body{text-shadow:0 1px 2px #5a285a8c;background-color:#e8697d;background-position:50%;background-size:100% 100%;border-radius:56px;align-items:center;display:flex;position:absolute;inset:0;overflow:hidden;box-shadow:0 8px 22px #78285059}.gift-show__banner-text{color:#fff;flex-direction:column;min-width:0;max-width:160px;margin-left:18px;line-height:1.15;display:flex}.gift-show__banner-text em{letter-spacing:.12em;color:#fff5c2;font-size:9px;font-style:normal;font-weight:900}.gift-show__banner-text strong{text-overflow:ellipsis;white-space:nowrap;font-size:16px;font-weight:900;overflow:hidden}.gift-show__banner-text small{font-size:11px;font-weight:700}.gift-show__shine{background:linear-gradient(100deg,#0000 20%,#ffffff73 50%,#0000 80%);width:150px;height:56px;animation:1.5s linear infinite alternate gift-show-shine;position:absolute;top:0}.gift-show__thumb{object-fit:contain;filter:drop-shadow(0 4px 10px #783c7866);width:84px;height:84px;animation:1.2s ease-in-out infinite alternate gift-show-bob;position:absolute;top:-22px;right:-14px}.gift-show__score{left:0;right:0;bottom:calc(max(1rem, env(safe-area-inset-bottom)) + 5.6rem);text-align:center;color:#ffd76a;-webkit-text-stroke:2px #9c6a1c;paint-order:stroke fill;text-shadow:0 4px #6b4410,0 0 22px #ffd678cc;font-size:44px;font-weight:900;animation:.6s cubic-bezier(.2,1.6,.4,1) .45s both gift-show-score;position:absolute}.gift-show__hint{left:0;right:0;bottom:calc(max(1rem, env(safe-area-inset-bottom)) + 2.6rem);text-align:center;color:#ffffffe6;text-shadow:0 1px 3px #00000080;opacity:0;font-size:13px;font-weight:800;transition:opacity .3s;position:absolute}.gift-show.can-skip .gift-show__hint{opacity:1;animation:1.2s ease-in-out infinite gift-show-blink}@keyframes gift-show-in{0%{opacity:0}}@keyframes gift-show-halo{0%{opacity:.8;scale:.92}to{opacity:1;scale:1.08}}@keyframes gift-show-pop{0%{opacity:0;rotate:-20deg;scale:.2}25%{opacity:1;rotate:6deg;scale:1.15}40%{rotate:0deg;scale:1}70%{scale:1.06}to{opacity:1;scale:1}}@keyframes gift-show-slide{0%{opacity:0;translate:-120%}}@keyframes gift-show-shine{0%{left:-150px}to{left:260px}}@keyframes gift-show-bob{to{translate:0 -5px;rotate:6deg}}@keyframes gift-show-score{0%{opacity:0;scale:.3}}@keyframes gift-show-blink{50%{opacity:.55}}@media (prefers-reduced-motion:reduce){.gift-show,.gift-show *{animation-duration:.01ms!important;animation-iteration-count:1!important}}
