ui/playertagshud.razor.scss
// THE PLAYER TAGS — `PlayerTagsHud`. A teammate's name and distance over their head, through walls; at the screen's edge,
// with a pointer, when they are off it.
//
// ⚠️ POSITION IS WRITTEN FROM CODE EVERY FRAME (the anchor is a world point); this sheet carries appearance only.

.player-tags
{
    position: absolute;
    width: 100%;
    height: 100%;
    pointer-events: none;
}

.tag
{
    position: absolute;

    // ⚠️ ON SCREEN THE TAG STANDS ON ITS POINT: centred across it and lifted clear, as `ReviveHud`'s marker is
    transform: translateX(-50%) translateY(-100%);

    flex-direction: column;
    align-items: center;
    pointer-events: none;
}

// At an edge it is centred ON its spot, so it stays inside the margin on every side
.tag.edge
{
    transform: translateX(-50%) translateY(-50%);
}

.tag .name
{
    font-family: Inter;
    font-weight: bold;
    font-size: 17px;
    white-space: nowrap;
    color: rgba(150, 215, 255, 0.97);

    // Hard shadow, not an outline: drawn over snow, blood and muzzle flash, thin type disappears into all three
    text-shadow: 2px 2px 0px rgba(0, 0, 0, 0.9);
}

.tag .dist
{
    margin-top: 1px;
    font-family: Inter;
    font-weight: bold;
    font-size: 12px;
    color: rgba(230, 236, 242, 0.78);
    text-shadow: 1px 1px 0px rgba(0, 0, 0, 0.9);
}

// ⚠️ A DIAMOND, NOT A GLYPH — a square turned 45°, shown only at an edge, on the side facing the teammate
.tag .pointer
{
    position: absolute;
    width: 10px;
    height: 10px;
    background-color: rgba(150, 215, 255, 0.97);
    border: 1px solid rgba(0, 0, 0, 0.8);
    transform: rotate(45deg);
    opacity: 0;
}

.tag.edge .pointer { opacity: 1; }
.tag.edge-left .pointer   { left: -16px; top: 12px; }
.tag.edge-right .pointer  { right: -16px; top: 12px; }
.tag.edge-top .pointer    { top: -16px; left: 45%; }
.tag.edge-bottom .pointer { bottom: -16px; left: 45%; }

// A downed teammate: red, the one colour that means "go to them" (the revive badge's own red)
.tag.down .name { color: rgba(255, 112, 100, 0.98); }
.tag.down .pointer { background-color: rgba(255, 112, 100, 0.98); }

// ═══ BASALT (`HudTheme`) — the map's face: Cinzel, bone for the name, ember for the pointer ════════════════════════════
//
// ⛔ ON INTER'S LINE BOX, so no row grows taller: 0.898 of Cinzel's own line (see `.round` in SurvivalHud.razor.scss)
.player-tags.theme-basalt .tag .name,
.player-tags.theme-basalt .tag .dist
{
    font-family: Cinzel;
    line-height: 0.898;
}

.player-tags.theme-basalt .tag .name { color: rgba(236, 226, 206, 0.98); }
.player-tags.theme-basalt .tag .pointer { background-color: rgba(248, 150, 72, 1); }
.player-tags.theme-basalt .tag.down .name { color: rgba(255, 112, 100, 0.98); }
.player-tags.theme-basalt .tag.down .pointer { background-color: rgba(255, 112, 100, 0.98); }