ui/pointspopuphud.razor.scss
// The floating "+50". See PointsPopupHud.razor for why this is its own panel.
//
// ⚠️ ANCHORED TO THE SCREEN, NOT TO THE POINTS BLOCK. It is a separate panel now,
// so it cannot be positioned relative to `.points` — these offsets have to match
// where SurvivalHud puts the counter:
//
//     .right   { right: 40px; bottom: 48px; gap: 62px; }
//     .points  { portrait 52px + gap 10px + value min-width 160px }
//
// Right edge of the popups therefore sits at 40 + 160 + 10 = 210px from the
// screen's right, which is the portrait's right edge — so a number starts over
// the icon and slides left off it.
//
// ⚠️ THE VERTICAL IS AN ESTIMATE and the one value most likely to need nudging:
// it depends on the height of the weapon/round row below it, which is content
// driven. `nz_points_pos` moves this live rather than by recompiling.

.point-pops
{
    position: absolute;
    right: 200px;
    bottom: 175px;

    width: 220px;
    height: 56px;

    // Never eat a click — this floats over the HUD's right-hand column.
    pointer-events: none;

    .pop
    {
        position: absolute;
        right: 0px;
        top: 50%;
        margin-top: -20px;

        white-space: nowrap;
        font-size: 32px;
        font-weight: 700;
        text-shadow: 0px 2px 5px rgba( 0, 0, 0, 0.9 );

        // ⚠️ MUST MATCH PointsPopups.Life. C# deletes the element when its age
        // passes Life; if this is longer the number is cut off mid-flight, and
        // if shorter it sits invisible holding a MaxVisible slot.
        animation-duration: 0.45s;
        animation-timing-function: linear;
        animation-fill-mode: forwards;

        // Gold under 100, green at 100+, red for a spend — the colours ARE the
        // information, so a headshot reads differently from a body shot.
        &.gold  { color: rgba( 255, 200,  0, 1 ); }
        &.big   { color: rgba( 100, 255, 70, 1 ); }
        &.spend { color: rgba( 255,   0,  0, 1 ); }

        // Five drift lanes, scattering simultaneous popups so they do not draw
        // on top of each other — what the original's random `diry` was for.
        &.d0 { animation-name: nz-point-pop-a; }
        &.d1 { animation-name: nz-point-pop-b; }
        &.d2 { animation-name: nz-point-pop-c; }
        &.d3 { animation-name: nz-point-pop-d; }
        &.d4 { animation-name: nz-point-pop-e; }
    }
}

// Horizontal travel and fade are identical in all five — only the vertical
// differs, matching the original's random -25..25.
@keyframes nz-point-pop-a
{
    0%   { opacity: 1; transform: translateX( 0px )   translateY( 0px ); }
    100% { opacity: 0; transform: translateX( -55px ) translateY( -25px ); }
}

@keyframes nz-point-pop-b
{
    0%   { opacity: 1; transform: translateX( 0px )   translateY( 0px ); }
    100% { opacity: 0; transform: translateX( -55px ) translateY( -12px ); }
}

@keyframes nz-point-pop-c
{
    0%   { opacity: 1; transform: translateX( 0px )   translateY( 0px ); }
    100% { opacity: 0; transform: translateX( -55px ) translateY( 0px ); }
}

@keyframes nz-point-pop-d
{
    0%   { opacity: 1; transform: translateX( 0px )   translateY( 0px ); }
    100% { opacity: 0; transform: translateX( -55px ) translateY( 12px ); }
}

@keyframes nz-point-pop-e
{
    0%   { opacity: 1; transform: translateX( 0px )   translateY( 0px ); }
    100% { opacity: 0; transform: translateX( -55px ) translateY( 25px ); }
}

// ═══ BASALT (`HudTheme`) — the map's face, Cinzel on the points ═══
//
// *"i want the font for this map to affect … all hud messages that appear on screen"* (2026-09-27). The class is put on from `OnUpdate` (`HudTheme.Wear`), because this
// tree is built once and a class in its razor would keep the theme it was built under.
// ⛔ ON INTER'S LINE BOX, so no row grows taller: 0.898 of Cinzel's own line, which is Inter's 1.211 of the size. See
// `.round` in SurvivalHud.razor.scss for why it is not 1.211. It is wider on mixed-case text, which it sets in small capitals. Cinzel-Bold is the one face shipped,
// so every weight draws bold.
.point-pops.theme-basalt
{
    font-family: Cinzel;
    line-height: 0.898;
}