game/2d/ui/floatpopupitem.razor.scss
root {
    position: absolute;
    pointer-events: none;
    width: 0;
    height: 0;
    overflow: visible;
}

.float-popup {
    position: absolute;
    left: -50px;
    white-space: nowrap;
    pointer-events: none;
    font-size: 22px;
    font-weight: 900;
    color: white;
    background-color: transparent;
}

.float-popup.coins          { color: #fbbf24; animation: float-up 1.4s ease-out both; }
.float-popup.challenge      { color: #34d399; font-size: 18px; animation: float-up 1.4s ease-out both; }
.float-popup.sparkle-direct { color: #fbbf24; font-size: 20px; animation: sparkle-burst 0.7s ease-out both; }
.float-popup.sparkle-chain  { color: #c4b5fd; font-size: 16px; animation: sparkle-burst 0.9s ease-out both; }
.float-popup.burst-popup    { color: #f472b6; font-size: 28px; font-weight: 900; animation: burst-float 1.8s ease-out both; }
.float-popup.mult-tag       { color: #fbbf24; font-size: 16px; font-weight: 800; animation: float-up 1.0s ease-out both; }
.float-popup.chain-summary  { color: #c4b5fd; font-size: 24px; font-weight: 900; animation: float-up 1.6s ease-out both; }
.float-popup.popup-mega     { color: #fbbf24; font-size: 32px; font-weight: 900; animation: float-up 1.6s ease-out both; }
.float-popup.popup-chain    { color: #c4b5fd; font-size: 24px; font-weight: 900; animation: float-up 1.4s ease-out both; }
.float-popup.popup-nice     { color: #34d399; font-size: 22px; font-weight: 900; animation: float-up 1.4s ease-out both; }
.float-popup.popup-md       { font-size: 22px; animation: float-up 1.4s ease-out both; }
.float-popup.popup-lg       { font-size: 28px; animation: float-up 1.4s ease-out both; }
.float-popup.popup-xl       { font-size: 36px; animation: float-up 1.4s ease-out both; }

/* ── Multiplier popups ── */
.float-popup.mult-val-popup {
    font-size: 94px;
    font-weight: 900;
    left: -320px;
    animation: corner-pop 1.2s cubic-bezier(0.22,1,0.36,1) both;
}


.float-popup.mult-label-popup {
    font-size: 20px;
    font-weight: 800;
    letter-spacing: 0.06em;
    left: -150px;
    animation: corner-pop 1.2s cubic-bezier(0.22,1,0.36,1) both;
    animation-delay: 0.05s;
}

.float-popup.mult-val-popup.mult-normal   { color: #34d399; }
.float-popup.mult-val-popup.mult-big      { color: #fbbf24; }
.float-popup.mult-val-popup.mult-mega     { color: #c4b5fd; }
.float-popup.mult-label-popup.mult-normal { color: #34d399; }
.float-popup.mult-label-popup.mult-big    { color: #fbbf24; }
.float-popup.mult-label-popup.mult-mega   { color: #c4b5fd; }

.float-popup.mult-cap-warning-popup {
    font-size: 30px;
    font-weight: 800;
    color: rgba(251,191,36,0.85);
    letter-spacing: 0.1em;
    animation: float-up 1.2s ease-out both;
}

@keyframes float-up {
    0%   { opacity: 0;   transform: translateY(0px)   scale(0.8); }
    15%  { opacity: 1;   transform: translateY(-8px)  scale(1.05); }
    70%  { opacity: 1;   transform: translateY(-32px) scale(1.0); }
    100% { opacity: 0;   transform: translateY(-52px) scale(0.95); }
}

@keyframes sparkle-burst {
    0%   { opacity: 0;   transform: translateY(0)     scale(0.5) rotate(0deg);  }
    25%  { opacity: 1;   transform: translateY(-12px) scale(1.2) rotate(30deg); }
    70%  { opacity: 0.7; transform: translateY(-28px) scale(1.0) rotate(60deg); }
    100% { opacity: 0;   transform: translateY(-40px) scale(0.8) rotate(90deg); }
}

@keyframes burst-float {
    0%   { opacity: 0;   transform: translateY(10px)  scale(0.7); }
    20%  { opacity: 1;   transform: translateY(-15px) scale(1.1); }
    75%  { opacity: 1;   transform: translateY(-55px) scale(1.0); }
    100% { opacity: 0;   transform: translateY(-80px) scale(0.9); }
}

@keyframes corner-pop {
    0%   { opacity: 0; transform: scale(0.4) translateY(15px); }
    25%  { opacity: 1; transform: scale(1.12) translateY(0px); }
    55%  { opacity: 1; transform: scale(1.0)  translateY(-15px); }
    100% { opacity: 0; transform: scale(0.9)  translateY(-70px); }
}

/* Explosion Particles */
.float-popup.spark-particle {
    font-size: 12px;
    color: #fbbf24;
    animation: spark-fly 0.6s ease-out both;
}

.float-popup.smoke-particle {
    font-size: 28px;
    opacity: 0.6;
    animation: smoke-rise 0.8s ease-out both;
}

@keyframes spark-fly {
    0%   { opacity: 1; transform: scale(1.0) translateY(0px); }
    100% { opacity: 0; transform: scale(0.3) translateY(-40px) translateX(20px); }
}

@keyframes smoke-rise {
    0%   { opacity: 0.6; transform: scale(0.5) translateY(0px); }
    100% { opacity: 0;   transform: scale(1.8) translateY(-60px); }
}