/* LIVE Campaigns overlay in TikTok's rank-widget style. No boxes behind the text; outlined italic lettering plus effects. */
.tpk{--a:#f4c66f;position:relative;display:inline-grid;justify-items:start;gap:.12em;padding:.4em .6em;color:#fff;font-family:'Segoe UI Black','Arial Black','Segoe UI',Inter,Arial,sans-serif;font-weight:900;line-height:1.05;background:none;isolation:isolate;
 -webkit-text-stroke:.12em #3a2a10;paint-order:stroke fill;text-shadow:0 .05em .12em #0009}
.tpk>*:not(.tpk-fx){position:relative;z-index:1}
.tpk-top{display:flex;align-items:center;gap:.25em;font-size:1em}
.tpk-ico{-webkit-text-stroke:0;font-size:1em;filter:drop-shadow(0 .04em .08em #000a)}
.tpk-cd{font-variant-numeric:tabular-nums}
.tpk-main{display:flex;align-items:baseline;gap:.2em;font-size:1.45em;text-transform:uppercase;letter-spacing:-.005em}
.tpk-no{font-size:1em}
.tpk-num{color:var(--a);font-size:1.32em;font-weight:900;display:inline-block;margin-left:.02em;text-shadow:0 .09em 0 color-mix(in srgb,var(--a),#6b4200 45%),0 .12em .14em #0008}
.tpk-sub{font-size:1em;letter-spacing:0}
.tpk-ended .tpk-cd{color:#ff6b6b}
.tpk-stack{display:grid;gap:1em;justify-items:start}
.tpk-enter{animation:tpkEnter .6s cubic-bezier(.2,1.4,.4,1) both}
@keyframes tpkEnter{from{opacity:0;transform:translateY(.6em) scale(.9)}to{opacity:1;transform:none}}

/* effects layer */
.tpk-fx{position:absolute;inset:-1.4em -1.6em;pointer-events:none;z-index:0;overflow:visible}
.tpk-star{position:absolute;left:var(--x);top:var(--y);font-style:normal;-webkit-text-stroke:0;text-shadow:0 0 .5em var(--a);color:#fff;font-size:.8em;opacity:0;animation:tpkTwinkle 2.6s ease-in-out var(--d) infinite}
@keyframes tpkTwinkle{0%,100%{opacity:0;transform:scale(.3) rotate(0)}50%{opacity:1;transform:scale(1.1) rotate(45deg)}}
.tpk-calm .tpk-fx{display:none}
.tpk-calm *{animation:none!important}

/* animated: every campaign gets a glowing, gently pulsing rank */
.tpk-anim .tpk-num{animation:tpkGlow 2.4s ease-in-out infinite}
@keyframes tpkGlow{0%,100%{text-shadow:0 .09em 0 color-mix(in srgb,var(--a),#6b4200 45%),0 .12em .14em #0008}50%{text-shadow:0 .09em 0 color-mix(in srgb,var(--a),#6b4200 45%),0 0 .5em var(--a),0 0 1.1em var(--a)}}

/* LIVE Fest: shimmering title, fireworks, confetti, bouncing rank */
.tpk-livefest .tpk-title{position:relative;color:transparent;-webkit-text-stroke:0;text-shadow:none;background:linear-gradient(100deg,#ffd75e 0%,#ff4f9a 25%,#fff 40%,#5ee7ff 55%,#b28cff 75%,#ffd75e 100%);background-size:250% 100%;-webkit-background-clip:text;background-clip:text;animation:tpkShimmer 4s linear infinite;filter:drop-shadow(0 .05em 0 #000) drop-shadow(0 0 .08em #000) drop-shadow(0 0 .3em #ff4f9a88)}
.tpk-calm.tpk-livefest .tpk-title{color:#fff;background:none;-webkit-text-stroke:.12em #3a2a10;filter:none}
@keyframes tpkShimmer{from{background-position:0 0}to{background-position:-250% 0}}
.tpk-anim.tpk-livefest .tpk-num{animation:tpkGlow 2.4s ease-in-out infinite,tpkBounce 2.4s cubic-bezier(.3,1.6,.5,1) infinite}
@keyframes tpkBounce{0%,70%,100%{transform:none}80%{transform:translateY(-.12em) scale(1.12) rotate(-4deg)}90%{transform:scale(.97)}}
.tpk-anim.tpk-livefest .tpk-ico{animation:tpkPop 2.4s ease-in-out infinite}
@keyframes tpkPop{0%,100%{transform:none}50%{transform:scale(1.2) rotate(-10deg)}}
.tpk-burst{position:absolute;left:var(--x);top:var(--y);width:0;height:0}
.tpk-burst i{position:absolute;left:0;top:0;width:.18em;height:.55em;border-radius:1em;background:linear-gradient(var(--h),transparent);box-shadow:0 0 .4em var(--h);transform-origin:50% 0;opacity:0;animation:tpkBurst 3.6s cubic-bezier(.1,.8,.3,1) var(--d) infinite;transform:rotate(var(--r)) translateY(0)}
@keyframes tpkBurst{0%{opacity:0;transform:rotate(var(--r)) translateY(0) scaleY(.3)}6%{opacity:1}30%{opacity:1;transform:rotate(var(--r)) translateY(1.8em) scaleY(1)}45%,100%{opacity:0;transform:rotate(var(--r)) translateY(2.3em) scaleY(.2)}}
.tpk-burst:before{content:'';position:absolute;left:-.25em;top:-.25em;width:.5em;height:.5em;border-radius:50%;background:var(--h);box-shadow:0 0 1em .3em var(--h);opacity:0;animation:tpkFlash 3.6s ease-out var(--d) infinite}
@keyframes tpkFlash{0%{opacity:0;transform:scale(.2)}5%{opacity:1;transform:scale(1.4)}20%,100%{opacity:0;transform:scale(.4)}}
.tpk-conf{position:absolute;left:var(--x);top:-.6em;width:.28em;height:.5em;border-radius:.06em;background:var(--h);opacity:0;animation:tpkConf var(--t) linear var(--d) infinite}
@keyframes tpkConf{0%{opacity:0;transform:translateY(0) rotate(0)}10%{opacity:1}90%{opacity:1}100%{opacity:0;transform:translateY(7em) translateX(1em) rotate(720deg)}}

/* Match Mania: punchy shake */
.tpk-anim.tpk-matchmania .tpk-num{animation:tpkGlow 2s ease-in-out infinite,tpkPunch 2s ease-in-out infinite}
@keyframes tpkPunch{0%,80%,100%{transform:none}84%{transform:translateX(-.06em) rotate(-6deg) scale(1.15)}88%{transform:translateX(.06em) rotate(5deg) scale(1.1)}92%{transform:translateX(-.03em) rotate(-2deg)}}
.tpk-anim.tpk-matchmania .tpk-ico{animation:tpkPunchIco 2s ease-in-out infinite}
@keyframes tpkPunchIco{0%,78%,100%{transform:none}84%{transform:translateX(.25em) scale(1.25)}}
/* Community Fest: wave */
.tpk-anim.tpk-communityfest .tpk-title{animation:tpkWave 3s ease-in-out infinite;display:inline-block}
@keyframes tpkWave{0%,100%{transform:translateY(0) rotate(0)}25%{transform:translateY(-.05em) rotate(-1.5deg)}75%{transform:translateY(.04em) rotate(1.5deg)}}
/* Gift Master: sparkle sweep on the rank */
.tpk-anim.tpk-giftmaster .tpk-num{background:linear-gradient(110deg,var(--a) 35%,#fff 50%,var(--a) 65%);background-size:250% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-stroke:0;filter:drop-shadow(0 .05em 0 #000) drop-shadow(0 0 .25em var(--a));animation:tpkShimmer 2.5s linear infinite}
.tpk-anim.tpk-giftmaster .tpk-ico{animation:tpkPop 2.6s ease-in-out infinite}

/* dashboard preview background */
.tp-camp-preview{display:grid;place-items:center;padding:2em .6em;overflow:hidden;font-size:18px;border-radius:14px;background:repeating-conic-gradient(#16151b 0 25%,#121117 0 50%) 0 0/24px 24px;border:1px solid #2f2a33}
.tp-camp-presets{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}
.tp-camp-presets button{display:grid;justify-items:center;gap:4px;padding:12px 6px;border-radius:12px;border:1px solid #3a3530;background:#141319;color:#f3ece0;font-weight:850;font-size:12.5px;cursor:pointer}
.tp-camp-presets button span{font-size:22px}.tp-camp-presets button.on{border-color:var(--a);box-shadow:0 0 0 1px var(--a),0 0 18px color-mix(in srgb,var(--a),transparent 70%)}
.tp-camp-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.tp-camp-grid label{display:grid;gap:6px;font-size:12px;font-weight:800;color:#d9cfbf}
.tp-camp-grid input,.tp-camp-grid select{height:36px;border-radius:9px;border:1px solid #3d3640;background:#0b0b10;color:#fff;padding:0 10px;font:inherit;font-size:13px}
.tp-camp-grid .wide{grid-column:span 2}.tp-camp-quick{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.tp-camp-checks{display:flex;flex-wrap:wrap;gap:14px;font-size:12.5px;color:#d9cfbf}.tp-camp-checks label{display:flex;gap:6px;align-items:center}
@media(max-width:1000px){.tp-camp-presets{grid-template-columns:repeat(3,1fr)}.tp-camp-grid{grid-template-columns:1fr}.tp-camp-grid .wide{grid-column:auto}}
.tp-camp-warn{padding:16px 18px;color:#e6cf9f;border-color:#6a5034!important;background:#221c15!important;font-size:14px;line-height:1.6}
.tp-camp-auto{display:grid;gap:6px;padding:12px 14px;border-radius:12px;border:1px solid #5a4430;background:#1a1612}.tp-camp-auto small{color:#b8ad9f;font-size:12px;line-height:1.5}
.tp-camp-auto pre{max-height:220px;overflow:auto;white-space:pre-wrap;word-break:break-all;font-size:11px;background:#0b0b10;border:1px solid #2f2a33;border-radius:8px;padding:8px;color:#cfc6b8}
.tpc-stack{display:grid;gap:.6em;justify-items:center}.tpc-card.tpc-in{animation:tpcIn .6s cubic-bezier(.2,1.3,.4,1) both}@keyframes tpcIn{from{opacity:0;transform:translateY(.8em) scale(.96)}to{opacity:1;transform:none}}
.tp-camp-list{display:grid;gap:8px}.tp-camp-item{display:grid;grid-template-columns:44px minmax(0,1fr) auto auto auto;gap:10px;align-items:center;padding:10px 12px;border-radius:12px;border:1px solid #2f2a33;background:#141319;cursor:pointer}
.tp-camp-item.on{border-color:var(--a);box-shadow:0 0 0 1px var(--a),0 0 16px color-mix(in srgb,var(--a),transparent 75%)}.tp-camp-item.hidden-c{opacity:.55}
.tp-camp-item .ic{display:grid;place-items:center;width:40px;height:40px;border-radius:10px;font-size:20px;background:color-mix(in srgb,var(--a),#14121a 72%);border:1px solid color-mix(in srgb,var(--a),transparent 45%)}
.tp-camp-item b{font-size:14px}.tp-camp-item small{display:block;color:#958c99;font-size:11.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tp-camp-src{font-size:10px;font-weight:900;padding:2px 8px;border-radius:20px;border:1px solid #3d3640;color:#b8ad9f;white-space:nowrap}.tp-camp-src.auto{border-color:#2f6b4a;color:#5ee08f;background:#14271d}
.tp-camp-add{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
