.celebrate{position:fixed;inset:0;z-index:1100;display:grid;place-items:center;padding:24px 16px calc(24px + var(--safe-b, 0px));pointer-events:none}.celebrate-card{--c:var(--celebrate-c,var(--tint));pointer-events:auto;cursor:pointer;position:relative;overflow:hidden;isolation:isolate;width:100%;max-width:320px;padding:24px 22px 22px;border-radius:var(--r-xl);display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center;background:var(--bg-elevated);color:var(--label);box-shadow:var(--e3),0 28px 70px rgba(22,12,34,.22);animation:celebrateIn .56s var(--ease-spring) both}.celebrate-card:before{content:"";position:absolute;inset:-40% -20% auto;height:180px;z-index:-1;background:radial-gradient(closest-side,color-mix(in srgb,var(--c) 22%,transparent),transparent)}.celebrate-mark{width:56px;height:56px;border-radius:18px;display:grid;place-items:center;margin-bottom:6px;color:#fff;background:var(--c);box-shadow:0 8px 20px color-mix(in srgb,var(--c) 40%,transparent);transform:rotate(-6deg);animation:celebrateMark .7s .12s var(--ease-spring) both}.celebrate[data-kind=badge] .celebrate-mark,.celebrate[data-kind=egg] .celebrate-mark,.celebrate[data-kind=festival-planned] .celebrate-mark{color:#3A2400}.celebrate-title{font-family:var(--voice);font-style:italic;font-weight:400;font-size:36px;line-height:40px;letter-spacing:-.01em;color:var(--label);text-wrap:balance}.celebrate-line{margin:0;font-size:16px;line-height:22px;color:var(--label-2);text-wrap:balance}.celebrate.out .celebrate-card{animation:celebrateOut .24s var(--ease-accel) both}html.celebrating .confetti-piece{z-index:1101}@keyframes celebrateIn{0%{opacity:0;transform:scale(.55) rotate(-7deg)}55%{opacity:1;transform:scale(1.05) rotate(2deg)}80%{transform:scale(.98) rotate(-.6deg)}to{transform:scale(1) rotate(0)}}@keyframes celebrateMark{0%{transform:scale(.4) rotate(-30deg)}to{transform:scale(1) rotate(-6deg)}}@keyframes celebrateOut{to{opacity:0;transform:scale(.94) translateY(10px)}}@keyframes celebrateFade{0%{opacity:0}}@keyframes celebrateFadeOut{to{opacity:0}}.celebrate.calm .celebrate-card,.celebrate.calm .celebrate-mark{animation:celebrateFade .3s linear both}.celebrate.calm .celebrate-mark{transform:none}.celebrate.calm.out .celebrate-card{animation:celebrateFadeOut .24s linear both}@media (prefers-reduced-motion:reduce){.celebrate-card,.celebrate-mark{animation:celebrateFade .3s linear both}.celebrate-mark{transform:none}.celebrate.out .celebrate-card{animation:celebrateFadeOut .24s linear both}}