/* A finite celebration, confined to the paused age-stage card. */
.level-card:has(.level-gift:not([hidden])){display:flex;flex-direction:column}.level-card:has(.level-gift:not([hidden])) .level-heading{min-height:0;overflow-y:auto;overscroll-behavior:contain}.level-card:has(.level-gift:not([hidden])) .level-buttons{flex:none}
.shop-view .shop-draftbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:6px 10px;margin:0 0 8px}.shop-draftbar .shop-balance{order:2;margin-left:auto}.shop-draftbar .pending-summary{order:1;margin:0}
.level-gift{position:relative;isolation:isolate;display:grid;justify-items:center;text-align:center;margin:8px 0 14px;padding:4px 12px 12px;border-radius:24px;background:radial-gradient(ellipse at 50% 32%,#fff3cd 0,#f4f6e900 72%)}
.level-gift[hidden]{display:none}.level-gift>strong{font-size:1.12rem;color:#225455}.level-gift>p{font-size:.88rem;line-height:1.4;max-width:34ch;margin:6px 0 0;color:#547571}
.gift-stage{position:relative;display:grid;place-items:center;width:min(100%,280px);height:168px;overflow:hidden;contain:layout paint}
.gift-rays{position:absolute;width:260px;height:260px;opacity:.45;border-radius:50%;background:repeating-conic-gradient(from 12deg,#f0ce7540 0deg 13deg,transparent 13deg 30deg);mask-image:radial-gradient(circle,#000 25%,transparent 69%)}
.gift-stars{position:absolute;inset:22px 10px;color:#cda655;word-spacing:12px;font-size:23px;line-height:2.4;transform:rotate(-9deg);pointer-events:none}.gift-stars i{font-style:normal;color:#86b6aa;font-size:18px}
.gift-package{position:relative;display:block;width:160px;height:150px;border:0;padding:0;background:transparent;touch-action:manipulation;cursor:pointer;color:inherit;overflow:visible;-webkit-tap-highlight-color:transparent}
.gift-package:focus-visible{outline:3px solid #367c72;outline-offset:2px;border-radius:25px}.gift-package:disabled{opacity:1;cursor:default}
.gift-paper{position:absolute;top:65px;width:61px;height:68px;background:linear-gradient(115deg,#f4d79c,#e6bc7a);border-bottom:3px solid #c69e64;box-shadow:0 5px 0 #d7bd8120}.gift-paper-left{left:20px;border-radius:2px 0 0 9px;background-image:radial-gradient(#fff2cc 1.5px,transparent 2px),linear-gradient(115deg,#f4d79c,#e6bc7a);background-size:15px 15px,100% 100%}.gift-paper-right{right:20px;border-radius:0 2px 9px 0;background-image:radial-gradient(#fff2cc 1.5px,transparent 2px),linear-gradient(115deg,#edcc90,#dfb574);background-size:15px 15px,100% 100%}
.gift-lid{position:absolute;left:15px;top:51px;width:130px;height:21px;border-radius:5px;background:#f4d599;box-shadow:0 3px 0 #b88c5640}
.gift-ribbon{position:absolute;left:70px;top:51px;width:20px;height:82px;background:linear-gradient(90deg,#558f84,#81b7a7 50%,#548e83);border-radius:0 0 2px 2px}
.gift-bow{position:absolute;top:25px;width:36px;height:29px;border:9px solid #6ca697;box-sizing:border-box}.gift-bow-left{left:43px;border-radius:80% 90% 0 90%;transform:rotate(15deg)}.gift-bow-right{right:43px;border-radius:90% 80% 90% 0;transform:rotate(-15deg)}.gift-knot{position:absolute;top:43px;left:71px;width:18px;height:16px;border-radius:6px;background:#4f8c7e}
.gift-prize{position:absolute;inset:30px 32px 10px;opacity:0;transform:translateY(35px) scale(.55)}.gift-prize>svg{width:100%;height:100%}
.gift-opening .gift-bow-left{animation:gift-unbow-left .65s ease-in forwards}.gift-opening .gift-bow-right{animation:gift-unbow-right .65s ease-in forwards}.gift-opening .gift-knot,.gift-opening .gift-ribbon{animation:gift-unribbon .7s ease-in forwards}.gift-opening .gift-lid{animation:gift-lift .85s .22s ease-in forwards}.gift-opening .gift-paper-left{animation:gift-paper-left .85s .4s ease-in forwards}.gift-opening .gift-paper-right{animation:gift-paper-right .85s .4s ease-in forwards}.gift-opening .gift-prize{animation:gift-reveal .8s .65s cubic-bezier(.2,.8,.3,1) forwards}.gift-opening .gift-rays{animation:gift-ray-turn 1.5s ease-out forwards}.gift-opening .gift-stars{animation:gift-sparkles 1.5s ease-out forwards}
.gift-opened .gift-bow,.gift-opened .gift-knot,.gift-opened .gift-ribbon,.gift-opened .gift-lid,.gift-opened .gift-paper{visibility:hidden}.gift-opened .gift-prize{opacity:1;transform:none}.gift-opened .gift-rays{opacity:.65}
@keyframes gift-unbow-left{to{transform:translate(-60px,-18px) rotate(-60deg);opacity:0}}@keyframes gift-unbow-right{to{transform:translate(60px,-18px) rotate(60deg);opacity:0}}@keyframes gift-unribbon{to{transform:translateY(40px) rotate(26deg) scaleX(.3);opacity:0}}@keyframes gift-lift{to{transform:translate(42px,-65px) rotate(30deg);opacity:0}}@keyframes gift-paper-left{to{transform:translate(-50px,30px) rotate(-45deg);opacity:0}}@keyframes gift-paper-right{to{transform:translate(50px,30px) rotate(45deg);opacity:0}}@keyframes gift-reveal{to{opacity:1;transform:none}}@keyframes gift-ray-turn{to{transform:rotate(35deg);opacity:.65}}@keyframes gift-sparkles{45%{transform:rotate(3deg) scale(1.18);opacity:1}to{transform:rotate(8deg);opacity:.5}}
@media(max-height:720px){.gift-stage{height:132px}.gift-package{transform:scale(.85)}.level-gift{margin:2px 0 8px;padding-bottom:6px}.level-gift>p{font-size:.8rem}}
@media(prefers-reduced-motion:reduce){.gift-opening *{animation:none!important}.gift-opening .gift-prize{opacity:1;transform:none}.gift-opening .gift-bow,.gift-opening .gift-knot,.gift-opening .gift-ribbon,.gift-opening .gift-lid,.gift-opening .gift-paper{visibility:hidden}}
.level-overlay:has(.gift-opening)::before{content:'';position:fixed;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(ellipse at 50% 45%,#fff0bd80,transparent 65%),repeating-conic-gradient(from -12deg at 50% 45%,#f5d99c18 0deg 8deg,transparent 8deg 24deg);animation:gift-backdrop 1.5s ease-out both}
@keyframes gift-backdrop{0%{opacity:0;transform:scale(.95)}35%{opacity:1}100%{opacity:0;transform:scale(1.06)}}
@media(prefers-reduced-motion:reduce){.level-overlay:has(.gift-opening)::before{animation:none}}
