.player-avatar {
    flex-shrink: 0;
    width: 44px;
    height: 44px;
    display: grid;
    place-items: center;
    overflow: hidden;
    border-radius: 14px;
    background: #e0f2f1;
    color: #0f766e;
    font-weight: 800;
}

.player-avatar.has-image {
    background: #fff;
    border: 1px solid #d7e5e0;
}

.player-avatar-image {
    width: 100%;
    height: 100%;
    display: block;
    object-fit: cover;
}

.player-avatar-initial {
    width: 100%;
    height: 100%;
    display: grid;
    place-items: center;
}

/* Overview court cards must reserve a normal photo ratio instead of the old fixed
   118px strip. A 16:9 viewport gives the saved court photo enough height, while
   contain guarantees that no edge of portrait, square or wide images is cropped. */
.court-image {
    height: auto !important;
    aspect-ratio: 16 / 9;
    min-height: 0;
    background-color: #f8fafc;
}

.court-image img {
    width: 100%;
    height: 100%;
    max-width: 100%;
    max-height: 100%;
    display: block;
    object-fit: contain !important;
    object-position: center center;
    background: #f8fafc;
}

/* Older POS builds injected an extra photo container into every product card through
   pos-product-images.js. POS now renders its image directly in Razor, so hide any stale
   injected node that may still exist in a browser tab/service-worker cache during rollout. */
.tsports-pos-product-photo {
    display: none !important;
}

@media (max-width: 640px) {
    .player-avatar {
        width: 48px;
        height: 48px;
        border-radius: 13px;
    }

    .court-image {
        aspect-ratio: 16 / 9;
    }
}
