ui/poweruptimerhud.razor.scss
// POWERUP TIMERS
//
// A centred row above the bottom edge, under the pickup banner.

.pw-timers
{
    position: absolute;
    width: 100%;
    height: 100%;
    pointer-events: none;

    // ⚠️ CENTRED BY THE ROOT, the way DownedHud does it — its `.bleed` is absolutely
    // positioned with only a `bottom` and centres because the root sets these. That
    // is the pattern in this project that is known to work; the powerup banner cost
    // two attempts by trying to centre the child itself.
    flex-direction: column;
    align-items: center;
    justify-content: center;

    font-family: Inter;
}

.row
{
    position: absolute;

    // ⚠️ BELOW the pickup banner (15%), so a powerup collected while another is
    // running does not print its name over the timers.
    bottom: 6%;

    flex-direction: row;
    align-items: center;
    gap: 22px;
}

.slot
{
    flex-direction: column;
    align-items: center;
    gap: 2px;

    .icon
    {
        width: 46px;
        height: 46px;

        // ⚠️ The BO1 icons are white-on-transparent, so they need no tint — but they
        // DO need dimming, because at full white they outshine the health bar.
        opacity: 0.9;
    }

    .time
    {
        font-size: 22px;
        font-weight: 700;
        color: rgba( 255, 255, 255, 0.9 );
        text-shadow: 0px 2px 5px rgba( 0, 0, 0, 0.9 );

        // ⚠️ Tabular so the row does not jitter as digits change width — a countdown
        // going 10 → 9 shifts every icon beside it otherwise.
        font-variant-numeric: tabular-nums;
    }

    // ⛔ THE LAST FIVE SECONDS GO RED AND PULSE. The whole point of a countdown is
    // knowing when to push and when to back off; a number quietly reaching zero
    // gives you no moment to react to.
    &.ending
    {
        .icon, .time
        {
            color: rgba( 255, 90, 70, 1 );
        }

        animation: pw-ending 0.5s infinite;
        animation-timing-function: ease-in-out;
    }
}

@keyframes pw-ending
{
    0%   { opacity: 1; }
    50%  { opacity: 0.4; }
    100% { opacity: 1; }
}

// ═══ BASALT (`HudTheme`) — the map's face, Cinzel on the powerup timers ═══
//
// *"i want the font for this map to affect … all hud messages that appear on screen"* (2026-09-27). The root wears the theme's class; the rules name it and each box
// here that sets Inter itself.
// ⛔ 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.
.pw-timers.theme-basalt
{
    font-family: Cinzel;
    line-height: 0.898;
}