/* TikPlayz gift overlays — glossy black, gold accents. */
.tpg-icon{display:inline-grid;place-items:center;width:3em;height:3em;flex:none}
.tpg-icon img{width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 4px 8px #000a)}
.tpg-emoji{font-size:2.1em;line-height:1;filter:drop-shadow(0 4px 6px #000a)}
.tpg-icon-lg{width:4.4em;height:4.4em}.tpg-icon-lg .tpg-emoji{font-size:3.1em}
.tpg-icon-xl{width:6.5em;height:6.5em}.tpg-icon-xl .tpg-emoji{font-size:4.6em}
.tpg-coin{width:1em;height:1em}
.tpg-title{margin:0;font-family:'Arial Black',Inter,Arial,sans-serif;font-weight:900;font-size:1.9em;letter-spacing:.02em;text-align:center;color:#fff;-webkit-text-stroke:.08em #000;paint-order:stroke fill;text-shadow:0 .08em 0 #000,0 0 .5em #f4c66f55;line-height:1.05}
.tpg-title-sm{font-size:1.3em}
.tpg-muted{color:#cfc4ae;font:700 .9em Inter,Arial,sans-serif;text-shadow:0 2px 3px #000}
.tpg-name{font-family:'Arial Black',Inter,Arial,sans-serif;font-weight:900;color:#fff;-webkit-text-stroke:.06em #000;paint-order:stroke fill;text-shadow:0 .06em 0 #000;text-align:center;line-height:1.05}
.tpg-pill{display:inline-block;padding:.3em .9em;border-radius:999px;font:900 .8em Inter,Arial,sans-serif;letter-spacing:.08em;color:#1a1410;background:linear-gradient(120deg,#b9873c,#f7d58d 52%,#c79443);box-shadow:0 0 14px #f4c66f66}
.tpg-pill:not(.done){color:#fff;background:#111;border:1px solid #f4c66f88;box-shadow:none}
/* top gift */
.tpg-top{--acc:#f4c66f;display:grid;justify-items:center;gap:.25em;font-family:Inter,Arial,sans-serif;width:max-content;min-width:10em}
.tpg-top .tpg-title{background:linear-gradient(180deg,#fffbe9,var(--acc) 55%,#a8752c);-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-stroke:0;filter:drop-shadow(0 3px 0 #000) drop-shadow(0 0 10px #000a)}
.tpg-top-empty{display:grid;justify-items:center;margin-top:.6em;font-family:'Arial Black',Inter,Arial,sans-serif}
.tpg-top-empty strong{font-size:1.35em;color:#fff;-webkit-text-stroke:.07em #000;paint-order:stroke fill}.tpg-top-empty span{font-size:1.25em;font-weight:900;color:var(--acc);-webkit-text-stroke:.07em #000;paint-order:stroke fill}
.tpg-top-who{display:flex;align-items:center;gap:.4em}.tpg-top-who .tpo-av{width:1.8em;height:1.8em}.tpg-top-who strong{font-weight:900;color:#fff;text-shadow:0 2px 3px #000}
.tpg-top-val{display:flex;align-items:center;gap:.3em;font-family:'Arial Black',Inter,Arial,sans-serif;font-size:1.5em;color:#ffd23f;-webkit-text-stroke:.05em #000;paint-order:stroke fill;text-shadow:0 .06em 0 #000}
/* gallery */
.tpg-gal-rot{display:grid;justify-items:center;gap:.35em;width:max-content;min-width:12em}
.tpg-gal-bar{display:grid;gap:.6em;padding:.8em 1em;border-radius:1.1em;background:linear-gradient(165deg,#221d16ee,#0b0b0dee);border:1px solid #f4c66f66;box-shadow:0 10px 28px #000a,inset 0 1px #fff2;width:min(34em,96vw)}
.tpg-gal-head{display:flex;align-items:center;justify-content:center;gap:.5em}.tpg-count{padding:.2em .6em;border-radius:.6em;background:#000;border:1px solid #f4c66f88;color:#fff;font:900 .95em Inter,Arial,sans-serif}
.tpg-track{overflow:hidden;max-width:100%}.tpg-row{display:flex;gap:1em;width:max-content;align-items:flex-start;margin:0 auto}
.tpg-scroll .tpg-row{animation:tpg-marquee var(--dur,20s) linear infinite;margin:0}
.tpg-scroll{-webkit-mask:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent);mask:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent)}
@keyframes tpg-marquee{to{transform:translateX(-50%)}}
.tpg-gal-item{display:grid;justify-items:center;gap:.25em;width:5.6em}.tpg-gal-item .tpg-name{font-size:.8em}
.tpg-ring{--p:0;position:relative;width:4.6em;height:4.6em;border-radius:50%;display:grid;place-items:center;background:conic-gradient(#f4c66f calc(var(--p)*1%),#ffffff1a 0);padding:.25em;box-sizing:border-box}
.tpg-ring:before{content:'';position:absolute;inset:.28em;border-radius:50%;background:radial-gradient(circle at 40% 30%,#3a3326,#0b0b0d)}
.tpg-icon-ring{position:relative;width:3.3em;height:3.3em}.tpg-icon-ring .tpg-emoji{font-size:2.2em}
.tpg-ring-badge{position:absolute;bottom:-.45em;left:50%;transform:translateX(-50%);white-space:nowrap;padding:.15em .5em;border-radius:999px;font:900 .5em Inter,Arial,sans-serif;letter-spacing:.06em;background:#000;color:#fff;border:1px solid #f4c66f88}
.tpg-ring.done .tpg-ring-badge{color:#1a1410;background:linear-gradient(120deg,#b9873c,#f7d58d 52%,#c79443)}
.tpg-ring.done{box-shadow:0 0 16px #f4c66f88}
/* interactions */
.tpg-gi{--fg:#fff;--st:#000;--sw:.14em;--gsize:1;--tpos:0em;width:min(60em,96vw);font-family:var(--gfont),'Arial Black',Inter,sans-serif}
.tpg-gi-item{display:grid;justify-items:center;width:8.4em;flex:none}
.tpg-gi-label{font-family:'Arial Black',Impact,Inter,sans-serif;font-size:1.05em;line-height:1.05;text-align:center;color:var(--fg);-webkit-text-stroke:.12em var(--st);paint-order:stroke fill;text-shadow:0 .08em 0 var(--st);margin-top:-.6em}
/* campaign */
.tpg-camp{--coin:#ffd23f;--pts:#f4c66f;display:grid;gap:.4em;width:min(46em,96vw);font-family:Inter,Arial,sans-serif}
.tpg-camp-item{display:grid;justify-items:center;gap:.25em;width:6.2em}
.tpg-camp-coins{display:flex;align-items:center;gap:.25em;font:900 1.05em Inter,Arial,sans-serif;color:var(--coin);text-shadow:0 2px 3px #000}
.tpg-camp-pts{font:900 1.05em Inter,Arial,sans-serif;color:var(--pts);text-shadow:0 2px 3px #000}
.tpg-camp-vertical{width:max-content}.tpg-camp-vertical .tpg-row{flex-direction:column}.tpg-camp-vertical.tpg-camp .tpg-scroll .tpg-row{animation-name:tpg-marquee-v}.tpg-camp-vertical .tpg-track{max-height:90vh}
@keyframes tpg-marquee-v{to{transform:translateY(-50%)}}
/* challenges */
.tpg-chal{--acc:#f4c66f;position:relative;display:grid;place-items:center;width:max-content}
.tpg-chal .tpg-icon-xl{width:9em;height:9em}.tpg-chal .tpg-icon-xl .tpg-emoji{font-size:6.6em}
.tpg-chal-text{position:absolute;inset:0;display:grid;place-content:center;justify-items:center;text-align:center;font-family:'Arial Black',Inter,Arial,sans-serif}
.tpg-chal-text strong{font-size:1.15em;color:#fff;-webkit-text-stroke:.09em #000;paint-order:stroke fill;text-shadow:0 .08em 0 #000}
.tpg-chal-text b{font-size:1.4em;color:var(--acc);-webkit-text-stroke:.08em #000;paint-order:stroke fill;text-shadow:0 .08em 0 #000}
.tpg-chal.done .tpg-chal-text b{color:#5dff9a}
.tpg-chal-bar{width:min(46em,96vw);padding:.6em .8em;border-radius:1em;background:linear-gradient(165deg,#221d16ee,#0b0b0dee);border:1px solid #f4c66f66;box-shadow:0 10px 28px #000a,inset 0 1px #fff2}
.tpg-chal-mini{display:flex;align-items:center;gap:.5em;padding-right:1em;font-family:Inter,Arial,sans-serif}.tpg-chal-mini>div{display:grid;line-height:1.1}
.tpg-chal-mini strong{color:#fff;font-weight:900;white-space:nowrap}.tpg-chal-mini b{color:#f4c66f;font-weight:900;font-size:1.15em}.tpg-chal-mini.done b{color:#5dff9a}
/* heart me */
.tpg-heart{display:grid;justify-items:center;gap:.3em;width:max-content;position:relative}
.tpg-heart-title{margin:0;font-weight:900;line-height:1.1;text-shadow:0 .06em .1em #000a;text-align:center}
.tpg-heart-svg{width:7.5em}.tpg-heart-svg svg{width:100%;display:block;filter:drop-shadow(0 6px 14px #000a) drop-shadow(0 0 10px #f4c66f44)}
.tpg-wave{animation:tpg-wave 3s linear infinite}@keyframes tpg-wave{to{transform:translateX(50px)}}
.tpg-heart-badge{display:flex;align-items:center;gap:.35em;margin-top:-.4em;padding:.25em .8em;border-radius:999px;border:1.5px solid #f4c66f;box-shadow:0 6px 16px #000a;font:900 1.2em Inter,Arial,sans-serif;color:#fff}.tpg-heart-badge .tpg-emoji{font-size:1em}
.tpg-anim-pulse .tpg-heart-title{animation:tpo-pulse 1s infinite alternate}.tpg-anim-float .tpg-heart-title{animation:tpg-float 2.4s ease-in-out infinite}
@keyframes tpg-float{50%{transform:translateY(-.15em)}}
.tpg-anim-shine .tpg-heart-title{background:linear-gradient(100deg,currentColor 40%,#fff 50%,currentColor 60%) 0 0/250% 100%;-webkit-background-clip:text;background-clip:text;animation:tpg-shine 2.5s linear infinite}
@keyframes tpg-shine{to{background-position:-150% 0}}
.tpg-spark{position:absolute;left:50%;top:55%;width:.5em;height:.5em;border-radius:50%;background:#f4c66f;box-shadow:0 0 8px #f4c66f;animation:tpg-spark 1.2s ease-out forwards;transform:rotate(var(--a)) translateY(0)}
@keyframes tpg-spark{to{transform:rotate(var(--a)) translateY(-5em);opacity:0}}
/* jar */
.tpg-jar{--acc:#f4c66f;display:grid;justify-items:center;gap:.6em;width:max-content;transform-origin:top center;font-family:Inter,Arial,sans-serif}
.tpg-jar-glass{position:relative;width:11em;height:14.3em;color:#cfe8f0}
.tpg-jar-svg{position:absolute;inset:0;width:100%;height:100%;z-index:2;pointer-events:none}
.tpg-jar-glass.glow-solid .tpg-jar-svg,.tpg-jar-glass.glow-custom .tpg-jar-svg{filter:drop-shadow(0 0 6px var(--glow)) drop-shadow(0 0 14px var(--glow))}
.tpg-jar-glass.glow-rainbow .tpg-jar-svg{filter:drop-shadow(0 0 6px #ff4f8b) drop-shadow(0 0 14px #2fd6ef);animation:tpg-hue 4s linear infinite}
.tpg-jar-glass.glow-custom .tpg-jar-svg{animation:tpg-hue 6s linear infinite}
@keyframes tpg-hue{to{filter:drop-shadow(0 0 6px #ff4f8b) drop-shadow(0 0 14px #2fd6ef) hue-rotate(360deg)}}
.tpg-jar-pile{position:absolute;inset:0;z-index:1;overflow:hidden}.tpg-jar.spill .tpg-jar-pile{overflow:visible}.tpg-ball{transition:opacity .6s}.tpg-ball.gone{opacity:0}
.tpg-ball{position:absolute;left:0;top:0;display:grid;place-items:center;will-change:transform}.tpg-icon-ball{width:100%;height:100%}.tpg-icon-ball .tpg-emoji{font-size:1.5em}
.tpg-jar-pill{display:flex;align-items:center;gap:.4em;padding:.35em 1em;border-radius:999px;border:2px solid var(--acc);box-shadow:0 0 18px color-mix(in srgb,var(--acc) 40%,transparent),0 8px 20px #000a;color:#fff;font-size:1.25em}.tpg-jar-pill strong{font-weight:900}.tpg-jar-pill .tpg-coin{width:1.1em;height:1.1em}
.tpg-jar-alert{display:flex;align-items:center;gap:.45em;padding:.3em .9em .3em .3em;border-radius:999px;background:#000c;border:1px solid var(--acc);color:#fff;font-size:.9em;opacity:0;transform:translateY(6px);transition:.3s;min-height:2.1em}
.tpg-jar-alert.show{opacity:1;transform:none}.tpg-jar-alert .tpo-av{width:1.6em;height:1.6em}.tpg-jar-alert strong{font-weight:900;white-space:nowrap}
@media(prefers-reduced-motion:reduce){.tpg-scroll .tpg-row,.tpg-wave{animation:none}}
.tpg-top .tpg-title{text-shadow:none;paint-order:normal}

.tpg-icon video{width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 4px 8px #000a)}
/* ---- v0.9.6: top gift hero (TikOps-style big gift with text on top) ---- */
.tpg-top{gap:.05em;min-width:13em}.tpg-top .tpg-title{font-size:2.15em;position:relative;z-index:2}
.tpg-hero{position:relative;display:grid;place-items:center;width:12em;height:10.5em}
.tpg-hero:before{content:'';position:absolute;inset:8% 12%;border-radius:50%;background:radial-gradient(circle,color-mix(in srgb,var(--acc) 38%,transparent),transparent 66%);filter:blur(4px);animation:tpg-glow 3.2s ease-in-out infinite}
.tpg-hero-gift{position:relative;display:grid;place-items:center;width:10em;height:10em}
.tpg-icon-hero{width:10em;height:10em}.tpg-icon-hero .tpg-emoji{font-size:7em}
.tpg-hero-gift.alive .tpg-icon-hero:not(:has(video)){animation:tpg-bob 3.4s ease-in-out infinite}
.tpg-hero-gift.alive:not(:has(video)):after{content:'';position:absolute;inset:12%;border-radius:50%;background:linear-gradient(115deg,transparent 40%,#fff6 50%,transparent 60%) 0 0/300% 100%;mix-blend-mode:overlay;animation:tpg-sheen 3.4s ease-in-out infinite;pointer-events:none}
.tpg-hero-text{position:absolute;inset:0;display:grid;place-content:center;justify-items:center;text-align:center;font-family:'Arial Black',Inter,Arial,sans-serif;pointer-events:none;z-index:2}
.tpg-hero-name{font-size:1.75em;line-height:1.02;color:#fff;-webkit-text-stroke:.1em #000;paint-order:stroke fill;text-shadow:0 .08em 0 #000,0 0 .5em #000b;max-width:7.5em;overflow-wrap:anywhere}
.tpg-hero-val{display:flex;align-items:center;gap:.18em;font-size:1.65em;line-height:1.05;color:#ffd23f;-webkit-text-stroke:.09em #000;paint-order:stroke fill;text-shadow:0 .08em 0 #000,0 0 .5em #000b}
.tpg-hero-val .tpg-coin{width:.95em;height:.95em;filter:drop-shadow(0 2px 0 #000)}
.tpg-hero-av{width:8em!important;height:8em!important;font-size:1em;border:.22em solid var(--acc);box-shadow:0 0 1.4em color-mix(in srgb,var(--acc) 55%,transparent),0 .4em 1em #000a}
.tpg-flip{position:relative;width:10em;height:10em;transform-style:preserve-3d;animation:tpg-flip 12s ease-in-out infinite}
.tpg-flip>.tpg-hero-gift{position:absolute;inset:0;backface-visibility:hidden}.tpg-flip-back{transform:rotateY(180deg)}
.tpg-disp-text .tpg-hero{height:auto;min-height:5em}.tpg-disp-text .tpg-hero:before{inset:0}
@keyframes tpg-flip{0%,42%{transform:rotateY(0)}50%,92%{transform:rotateY(180deg)}100%{transform:rotateY(360deg)}}
@keyframes tpg-bob{50%{transform:translateY(-.35em) scale(1.05) rotate(-2deg)}}
@keyframes tpg-glow{50%{opacity:.5;transform:scale(.9)}}
@keyframes tpg-sheen{0%,55%{background-position:120% 0}100%{background-position:-60% 0}}
/* ---- heart me (cartoon heart) ---- */
.tpg-heart-svg{width:9em}.tpg-heart-svg svg{overflow:visible;filter:drop-shadow(0 .4em .7em #000a)}
.tpg-heart-svg svg{animation:tph-bob 3s ease-in-out infinite;transform-origin:50% 90%}
.tph-wave{animation:tph-wave 2.6s linear infinite}.tph-wave-b{animation-duration:4s;animation-direction:reverse}
@keyframes tph-wave{to{transform:translateX(60px)}}
@keyframes tph-bob{50%{transform:translateY(-3%) rotate(-1.5deg)}}
.tph-bubbles circle{animation:tph-rise 3.5s ease-in infinite}.tph-bubbles circle:nth-child(2){animation-delay:1.1s}.tph-bubbles circle:nth-child(3){animation-delay:2s}.tph-bubbles circle:nth-child(4){animation-delay:.6s}
@keyframes tph-rise{0%{transform:translateY(0);opacity:0}20%{opacity:.8}100%{transform:translateY(-70px);opacity:0}}
.tph-star,.tpj-tw{animation:tph-tw 2.2s ease-in-out infinite;transform-box:view-box}
@keyframes tph-tw{0%,100%{transform:scale(.5);opacity:.4}50%{transform:scale(1.15);opacity:1}}
.tph-crown{animation:tph-crown 3s ease-in-out infinite;transform-box:fill-box;transform-origin:50% 100%}
@keyframes tph-crown{50%{translate:0 -2px}}
.tpg-heart-badge{margin-top:-.6em;padding:.2em .85em .2em .25em;gap:.3em;border:2px solid #ff5c8d;box-shadow:0 0 .8em #ff3f8e66,0 .4em 1em #000a;font-size:1.35em}
.tpg-heart-gift{width:1.6em;height:1.6em;border-radius:50%;background:radial-gradient(circle,#ff7aa833,transparent 70%)}.tpg-heart-gift .tpg-emoji{font-size:1.1em}
.tpg-heart.celebrate .tpg-heart-svg svg{animation:tph-pop .7s ease-out 2,tph-bob 3s ease-in-out 1.4s infinite}
@keyframes tph-pop{40%{transform:scale(1.15)}}
.tpg-spark{width:.55em;height:.55em}.tpg-heart .tpg-spark{animation:tph-spark 1.4s ease-out forwards}
@keyframes tph-spark{to{transform:rotate(var(--a)) translateY(calc(var(--d,5em) * -1));opacity:0}}
/* ---- jar themes ---- */
.tpg-jar-back,.tpg-jar-svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}
.tpg-jar-back{z-index:0}.tpg-jar-svg{z-index:2}.tpg-jar-pile{z-index:1}
.tpg-jar-glass{margin-top:1em}
.tpj-neon{filter:drop-shadow(0 0 4px #ff3df2) drop-shadow(0 0 10px #2fd6ef)}
.tpj-bubbles circle{animation:tph-rise 4s ease-in infinite;animation-duration:5s}.tpj-bubbles circle:nth-child(2){animation-delay:1.3s}.tpj-bubbles circle:nth-child(3){animation-delay:2.4s}.tpj-bubbles circle:nth-child(4){animation-delay:3.4s}
.tpj-bubbles circle{--rise:-170px}
.tpj-wave{animation:tph-wave 5s linear infinite}
.tpj-bee{animation:tpj-bee 4s ease-in-out infinite}
@keyframes tpj-bee{0%,100%{transform:translate(160px,64px)}50%{transform:translate(150px,52px) rotate(-8deg)}}
.tpj-snow{animation:tph-tw 3s ease-in-out infinite;transform-box:view-box}
.tpj-thumb{position:relative;display:block;width:100%;aspect-ratio:200/260}.tpj-thumb svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
@media(prefers-reduced-motion:reduce){.tpg-flip,.tpg-hero:before,.tpg-hero-gift.alive *,.tph-wave,.tpg-heart-svg svg,.tph-star,.tpj-tw,.tpj-bubbles circle,.tpj-wave,.tpj-bee,.tph-crown{animation:none!important}}
/* ---- deluxe jar themes ---- */
.tpg-jar-glass.deluxe{margin:4em 5em 3.4em}
.tpj-spin-slow{animation:tpj-spin 24s linear infinite;transform-box:fill-box;transform-origin:center}
@keyframes tpj-spin{to{transform:rotate(360deg)}}
.tpj-gear{animation:tpj-spin 10s linear infinite;transform-box:fill-box;transform-origin:center}.tpj-gear-r{animation-direction:reverse;animation-duration:14s}
.tpj-pulse{animation:tpj-pulse 3s ease-in-out infinite;transform-box:fill-box;transform-origin:center}@keyframes tpj-pulse{50%{opacity:.55;transform:scale(.95)}}
.tpj-wingflap{animation:tpj-wing 2.6s ease-in-out infinite}.tpj-wingflap-l{animation-name:tpj-wing-l}
@keyframes tpj-wing{50%{transform:rotate(-12deg)}}@keyframes tpj-wing-l{50%{transform:rotate(12deg)}}
.tpj-head{animation:tpj-headbob 3s ease-in-out infinite}@keyframes tpj-headbob{50%{transform:translate(-2px,3px)}}
.tpj-blink{animation:tpj-blink 4s infinite;transform-box:fill-box;transform-origin:center}@keyframes tpj-blink{0%,92%,100%{transform:scaleY(1)}95%{transform:scaleY(.1)}}
.tpj-smoke circle{animation:tpj-smoke 2.4s ease-out infinite}.tpj-smoke circle:nth-child(2){animation-delay:.4s}.tpj-smoke circle:nth-child(3){animation-delay:.8s}
@keyframes tpj-smoke{0%{transform:translate(0,0);opacity:0}30%{opacity:.6}100%{transform:translate(10px,-18px);opacity:0}}
.tpj-eye{animation:tpj-eyeblink 6s infinite;transform-box:view-box}@keyframes tpj-eyeblink{0%,94%,100%{transform:scaleY(1)}97%{transform:scaleY(.05)}}
.tpj-look{animation:tpj-look 5s ease-in-out infinite}@keyframes tpj-look{30%{transform:translateX(-14px)}70%{transform:translateX(14px)}}
.tpj-sway{animation:tpj-sway 4s ease-in-out infinite}.tpj-sway-r{animation-name:tpj-sway-r}
@keyframes tpj-sway{50%{transform:rotate(3deg)}}@keyframes tpj-sway-r{50%{transform:rotate(-3deg)}}
.tpj-ghost{animation:tpj-ghost 4s ease-in-out infinite}@keyframes tpj-ghost{50%{transform:translate(-14px,-12px);opacity:.6}}
.tpj-flicker{animation:tpj-flicker 1.6s steps(1) infinite}@keyframes tpj-flicker{0%,100%{opacity:1}40%{opacity:.6}45%{opacity:1}70%{opacity:.8}}
.tpj-spider{animation:tpj-spider 3.4s ease-in-out infinite}@keyframes tpj-spider{50%{transform:translateY(-26px)}}
.tpj-bat{animation:tpj-bat 5s ease-in-out infinite}@keyframes tpj-bat{25%{transform:translate(12px,-10px)}50%{transform:translate(0,-18px)}75%{transform:translate(-12px,-8px)}}
.tpj-wing{animation:tpj-flap .25s ease-in-out infinite alternate;transform-box:fill-box;transform-origin:center}@keyframes tpj-flap{to{transform:scaleY(.4)}}
.tpj-drift{animation:tpj-drift 6s ease-in-out infinite}@keyframes tpj-drift{50%{transform:translateX(8px)}}
.tpj-scan{animation:tpj-scan 3s linear infinite}@keyframes tpj-scan{to{transform:translateY(200px)}}
.tpj-blinkred{animation:tpj-red 1s steps(1) infinite}@keyframes tpj-red{50%{fill:#5a0010}}
.tpj-ring ellipse{animation:tpj-dash 3s linear infinite}.tpj-ring-r ellipse{animation-direction:reverse}@keyframes tpj-dash{to{stroke-dashoffset:-112}}
.tpj-runes text{animation:tpj-rune 2.4s ease-in-out infinite}@keyframes tpj-rune{50%{opacity:.25}}
.tpj-wisp path{stroke-dasharray:6 8;animation:tpj-dash 2s linear infinite}
.tpj-petal{animation:tpj-petal 7s linear infinite;opacity:0}@keyframes tpj-petal{0%{transform:translate(0,0) rotate(0);opacity:0}10%{opacity:1}50%{transform:translate(-20px,150px) rotate(180deg)}90%{opacity:1}100%{transform:translate(10px,300px) rotate(360deg);opacity:0}}
.tpj-lava circle{animation:tpj-lava 8s ease-in-out infinite}@keyframes tpj-lava{0%,100%{transform:translateY(0)}50%{transform:translateY(-170px) scale(.8)}}
.tpj-glowline{animation:tpj-rune 1.8s ease-in-out infinite;filter:drop-shadow(0 0 3px #ff7a1a)}
.tpj-ember{animation:tpj-ember 3s ease-out infinite;opacity:0}@keyframes tpj-ember{0%{transform:translate(0,0);opacity:0}15%{opacity:1}100%{transform:translate(8px,-70px);opacity:0}}
.tpj-chase{animation:tpj-chase 1s steps(1) infinite}@keyframes tpj-chase{50%{opacity:.25}}
.tpj-claw{animation:tpj-claw 4s ease-in-out infinite}@keyframes tpj-claw{50%{transform:translateY(10px)}}
.tpj-steam circle{animation:tpj-smoke 2.6s ease-out infinite}.tpj-steam circle:nth-child(2){animation-delay:.5s}.tpj-steam circle:nth-child(3){animation-delay:1s}
.tpj-needle{animation:tpj-needle 3s ease-in-out infinite}@keyframes tpj-needle{0%,100%{transform:rotate(-50deg)}60%{transform:rotate(55deg)}70%{transform:rotate(40deg)}}
.tpj-mane{animation:tpj-sway 5s ease-in-out infinite;transform-origin:150px 20px}
.tpg-jar-back,.tpg-jar-svg{transform-box:view-box}
@media(prefers-reduced-motion:reduce){[class*="tpj-"]{animation:none!important}}
/* ---- gift interaction bars (v0.9.7) ---- */
.tpg-icon-gi{width:7em;height:7em}.tpg-icon-gi .tpg-emoji{font-size:5em}
.tpg-gi .tpg-gi-label{font-family:inherit;font-size:calc(1.35em * var(--gsize));line-height:1.02;text-align:center;color:var(--fg);-webkit-text-stroke:var(--sw) var(--st);paint-order:stroke fill;text-shadow:0 .07em 0 var(--st);margin-top:calc(-1em + var(--tpos));max-width:8em;overflow-wrap:anywhere;position:relative;z-index:1}
.tpg-gi .tpg-gi-label span{display:inline-block}
.tpg-gi-v{width:max-content}.tpg-gi-v .tpg-row{flex-direction:column;gap:.4em}.tpg-gi-v .tpg-track{max-height:min(90vh,40em)}
.tpg-gi-v .tpg-scroll .tpg-row{animation-name:tpg-marquee-v}.tpg-gi-v .tpg-scroll{-webkit-mask:linear-gradient(180deg,transparent,#000 8%,#000 92%,transparent);mask:linear-gradient(180deg,transparent,#000 8%,#000 92%,transparent)}
.tpg-gi-rot{display:grid;place-items:center;min-height:10em}.tpg-gi-in{animation:tpg-gi-in .55s cubic-bezier(.2,1.4,.4,1)}
@keyframes tpg-gi-in{from{opacity:0;transform:scale(.6) rotateY(80deg)}to{opacity:1;transform:none}}
.tpg-gi-static .tpg-row{flex-wrap:wrap;justify-content:center;width:auto}
.tpg-ta-pulse{animation:tpg-ta-pulse 1.2s ease-in-out infinite}@keyframes tpg-ta-pulse{50%{transform:scale(1.08)}}
.tpg-ta-bounce span{animation:tpg-ta-bounce 1.4s ease-in-out infinite;animation-delay:calc(var(--i)*.12s)}@keyframes tpg-ta-bounce{0%,60%,100%{transform:none}30%{transform:translateY(-.25em)}}
.tpg-ta-glow{animation:tpg-ta-glow 1.8s ease-in-out infinite}@keyframes tpg-ta-glow{50%{text-shadow:0 .07em 0 var(--st),0 0 .45em var(--fg),0 0 .9em var(--fg)}}
.tpg-ta-wave span{animation:tpg-ta-wave 2s ease-in-out infinite;animation-delay:calc(var(--i)*.18s)}@keyframes tpg-ta-wave{25%{transform:translateY(-.15em) rotate(-4deg)}75%{transform:translateY(.1em) rotate(3deg)}}
.tpg-ta-shake{animation:tpg-ta-shake 2.4s ease-in-out infinite}@keyframes tpg-ta-shake{0%,80%,100%{transform:none}84%{transform:translateX(-.08em) rotate(-3deg)}88%{transform:translateX(.08em) rotate(3deg)}92%{transform:translateX(-.05em)}}
@media(prefers-reduced-motion:reduce){.tpg-gi [class*="tpg-ta-"],.tpg-gi [class*="tpg-ta-"] span,.tpg-gi-in{animation:none}}
.tpg-hero-text.below{position:static;margin-top:-.5em;gap:.05em}.tpg-hero-text.below:empty{display:none}

/* Gift WebMs are full-screen portrait clips with the action in the lower half: crop that part into the circle. */
.tpg-icon.tpg-vid,.tpg-icon:has(video){position:relative;border-radius:50%;overflow:hidden;box-shadow:0 0 0 .12em var(--acc,#f4c66f),0 0 1.2em color-mix(in srgb,var(--acc,#f4c66f),transparent 45%);background:radial-gradient(circle,#ffffff14,#0000 70%)}
.tpg-icon.tpg-vid>video,.tpg-icon:has(video) video{position:absolute!important;top:0;left:0;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 88%;filter:none;transform:scale(1.04)}
.tpg-hero-text.below{margin-top:.35em}
.tpg-hero-text.below .tpg-hero-name{white-space:nowrap;max-width:9em;overflow:hidden;text-overflow:ellipsis}

