/* Shared awards list: used by the in-game badges page and public profiles. */

.badges-modal-grid {
    flex: 1;
    min-height: 0;
    min-width: 0;
    display: flex;
    flex-direction: column;
    width: 100%;
    overflow-y: auto;
    overflow-x: hidden;
    background: rgba(0, 0, 0, 0.28);
    border: 0;
    border-radius: 0;
    scrollbar-gutter: stable;
}
.badges-modal-grid::-webkit-scrollbar { width: 6px; }
.badges-modal-grid::-webkit-scrollbar-track { background: transparent; }
.badges-modal-grid::-webkit-scrollbar-thumb {
    background: rgba(255, 255, 255, 0.12);
    border-radius: 3px;
}

.badges-list {
    display: flex;
    flex-direction: column;
    background: rgba(0, 0, 0, 0.28);
    border: 1px solid var(--panel-border, rgba(255, 255, 255, 0.08));
    border-radius: 12px;
    overflow: hidden;
}

:is(.badges-modal-grid, .badges-list) .tier-heading {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0 1.05rem;
    min-height: 2.85rem;
    font-size: 0.88rem;
    font-weight: 800;
    letter-spacing: 0.13em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.45);
    background: rgba(8, 10, 12, 0.78);
    border-top: 1px solid rgba(255, 255, 255, 0.06);
    border-bottom: 1px solid rgba(255, 255, 255, 0.06);
}
:is(.badges-modal-grid, .badges-list) .tier-heading .tier-name { flex: 0 0 auto; }
:is(.badges-modal-grid, .badges-list) .tier-heading .tier-rule {
    flex: 1 1 auto;
    height: 1px;
    background: linear-gradient(
        to right,
        var(--tier-accent, rgba(255, 255, 255, 0.18)),
        transparent
    );
    opacity: 0.6;
}
:is(.badges-modal-grid, .badges-list) .tier-heading .tier-count {
    flex: 0 0 auto;
    font-size: 0.82rem;
    font-weight: 700;
    color: rgba(255, 255, 255, 0.5);
    letter-spacing: 0.14em;
}
:is(.badges-modal-grid, .badges-list) .tier-heading.tier-title    { color: #fff2a0; --tier-accent: rgba(255, 242, 160, 0.5); }
:is(.badges-modal-grid, .badges-list) .tier-heading.tier-bronze   { color: #f1ad6a; --tier-accent: rgba(241, 173, 106, 0.5); }
:is(.badges-modal-grid, .badges-list) .tier-heading.tier-silver   { color: #e3e8f0; --tier-accent: rgba(227, 232, 240, 0.5); }
:is(.badges-modal-grid, .badges-list) .tier-heading.tier-gold     { color: #ffd770; --tier-accent: rgba(255, 215, 112, 0.55); }

.badge-card {
    position: relative;
    display: grid;
    grid-template-columns: 78px minmax(0, 1fr) minmax(5.4rem, auto);
    grid-template-rows: minmax(0, 1fr);
    align-items: center;
    column-gap: 1rem;
    min-height: 5.35rem;
    padding: 0.72rem 0.9rem 0.72rem 1.05rem;
    border-bottom: 1px solid rgba(255, 255, 255, 0.05);
    background: rgba(0, 0, 0, 0.18);
    color: inherit;
    font: inherit;
    text-align: left;
    width: 100%;
    transition: background 0.12s ease, opacity 0.12s ease;
}
.badge-card:last-child { border-bottom: none; }
.badge-card:nth-child(even) { background: rgba(0, 0, 0, 0.12); }
.badge-card:hover { background: rgba(255, 255, 255, 0.055); }
.badge-card.is-locked { opacity: 0.55; }
.badge-card.is-locked:hover { opacity: 0.68; }

.badge-card .badge-card-art {
    grid-column: 1;
    grid-row: 1;
    align-self: center;
    justify-self: center;
    width: 72px;
    height: 72px;
    flex: 0 0 auto;
    line-height: 0;
    filter: drop-shadow(0 0 10px rgba(255, 255, 255, 0.08));
}
.badge-card .badge-card-art svg {
    width: 72px;
    height: 72px;
    display: block;
}
.badge-card.is-locked .badge-card-art {
    filter: grayscale(1) drop-shadow(0 0 8px rgba(255, 255, 255, 0.04));
}
.badge-card .badge-card-text {
    grid-column: 2;
    grid-row: 1;
    align-self: center;
    flex: 1 1 auto;
    min-width: 0;
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 2px;
}
.badge-card .badge-card-name {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: wrap;
    font-size: 1.05rem;
    font-weight: 700;
    line-height: 1.25;
    color: #fff;
    letter-spacing: 0.01em;
}
.badge-card .badge-card-meta {
    display: contents;
}
.badge-card .badge-card-meta .badge-card-earned {
    grid-row: 1;
    align-self: center;
    min-width: 0;
    display: inline-flex;
    align-items: center;
    min-height: 1.35rem;
    background: transparent;
    border: 0;
    border-radius: 0;
    padding: 0;
    font-size: 0.78rem;
    font-weight: 700;
    line-height: 1.25;
    letter-spacing: 0.06em;
    text-transform: none;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.badge-card .badge-card-meta .badge-card-track {
    grid-column: 3;
    justify-self: start;
    width: 100%;
    color: rgba(255, 255, 255, 0.68);
}
.badge-card .badge-card-meta .badge-card-earned {
    grid-column: 3;
    justify-self: end;
    text-align: right;
    color: rgba(255, 255, 255, 0.54);
}
.badge-card .badge-card-meta .badge-card-earned.has-tooltip {
    overflow: visible;
    cursor: help;
}
.badge-card .badge-card-meta .is-empty {
    visibility: hidden;
}
.badge-card .badge-card-earned {
    font-size: 0.66rem;
    font-weight: 700;
    color: rgba(255, 255, 255, 0.72);
    background: rgba(255, 255, 255, 0.06);
    border: 1px solid rgba(255, 255, 255, 0.08);
    border-radius: 999px;
    padding: 0.16rem 0.42rem;
    letter-spacing: 0.02em;
    font-variant-numeric: tabular-nums;
}
.badge-card .badge-card-track {
    font-size: 0.66rem;
    font-weight: 700;
    line-height: 1;
    color: rgba(255, 255, 255, 0.82);
    background: rgba(255, 255, 255, 0.08);
    border: 1px solid rgba(255, 255, 255, 0.12);
    border-radius: 999px;
    padding: 0.18rem 0.42rem;
    letter-spacing: 0.02em;
}
.badge-card .badge-card-desc {
    font-size: 0.9rem;
    font-weight: 500;
    color: rgba(255, 255, 255, 0.72);
    line-height: 1.35;
}
.badge-card.title-card {
    align-items: center;
    background:
        radial-gradient(circle at 10% 18%, rgba(255, 255, 255, 0.09), transparent 24%),
        linear-gradient(90deg, rgba(255, 215, 112, 0.07), rgba(255, 255, 255, 0.02) 42%, transparent),
        rgba(0, 0, 0, 0.18);
}
.badge-card.title-card:nth-child(even) {
    background:
        radial-gradient(circle at 10% 18%, rgba(255, 255, 255, 0.08), transparent 24%),
        linear-gradient(90deg, rgba(103, 232, 249, 0.055), rgba(255, 255, 255, 0.018) 42%, transparent),
        rgba(0, 0, 0, 0.12);
}
.badge-card.title-card:hover {
    background:
        radial-gradient(circle at 10% 18%, rgba(255, 255, 255, 0.13), transparent 24%),
        linear-gradient(90deg, rgba(255, 215, 112, 0.12), rgba(255, 255, 255, 0.055) 42%, rgba(255, 255, 255, 0.028)),
        rgba(255, 255, 255, 0.055);
}
.badge-card.title-card .title-mark {
    flex: 0 0 72px;
    align-self: center;
    justify-self: center;
    width: 72px;
    height: 72px;
    border-radius: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: inherit;
    background: transparent;
    border: 0;
    filter: drop-shadow(0 0 13px rgba(255, 215, 112, 0.18));
}
.badge-card.title-card .title-mark svg {
    width: 72px;
    height: 72px;
    display: block;
    overflow: visible;
}
.badge-card.title-card.is-hardcore-p1 .title-mark,
.badge-card.title-card.is-track-record .title-mark,
.badge-card.title-card.is-grand-slam .title-mark {
    filter: drop-shadow(0 0 16px rgba(255, 206, 85, 0.24));
}
.badge-card.title-card.is-newbie-p1 .title-mark,
.badge-card.title-card.is-newbie-p2 .title-mark,
.badge-card.title-card.is-newbie-p3 .title-mark {
    filter: drop-shadow(0 0 16px rgba(45, 212, 191, 0.22));
}
.badge-card.title-card.is-hardcore-p2 .title-mark,
.badge-card.title-card.is-runner-up .title-mark {
    filter: drop-shadow(0 0 15px rgba(188, 231, 255, 0.2));
}
.badge-card.title-card.is-hardcore-p3 .title-mark,
.badge-card.title-card.is-podium-finisher .title-mark {
    filter: drop-shadow(0 0 15px rgba(251, 146, 60, 0.22));
}
.badge-card.title-card .title-name > span:first-child {
    color: #fff8df;
    text-shadow: 0 0 12px rgba(255, 215, 112, 0.16);
}
.badge-card.title-card .badge-card-text,
.badge-card.title-card .badge-card-meta .badge-card-earned {
    align-self: center;
}
.badge-card.title-card .title-chip {
    text-transform: uppercase;
}

.badges-modal-empty {
    min-height: 12rem;
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    color: rgba(255, 255, 255, 0.55);
    font-size: 0.9rem;
    padding: 1.5rem;
    line-height: 1.5;
    width: 100%;
}

@media (max-width: 760px) {
    :is(.badges-modal-grid, .badges-list) .tier-heading {
        padding: 0.72rem 0.85rem 0.62rem;
        min-height: 2.55rem;
        font-size: 0.72rem;
        letter-spacing: 0.15em;
    }
    :is(.badges-modal-grid, .badges-list) .tier-heading .tier-count {
        font-size: 0.7rem;
    }
    .badge-card {
        grid-template-columns: 68px minmax(0, 1fr);
        grid-template-rows: auto auto;
        min-height: 4.85rem;
        column-gap: 0.75rem;
        row-gap: 0.28rem;
        padding: 0.65rem 0.75rem 0.65rem 0.95rem;
    }
    .badge-card .badge-card-art {
        grid-row: 1 / 3;
        align-self: center;
        width: 66px;
        height: 66px;
    }
    .badge-card .badge-card-art svg {
        width: 66px;
        height: 66px;
    }
    .badge-card .badge-card-name {
        font-size: 0.98rem;
    }
    .badge-card .badge-card-desc {
        font-size: 0.82rem;
    }
    .badge-card.title-card .title-mark {
        width: 66px;
        height: 66px;
        flex-basis: 66px;
    }
    .badge-card.title-card .title-mark svg {
        width: 66px;
        height: 66px;
    }
    .badge-card .badge-card-meta .badge-card-earned {
        grid-row: 2;
        min-height: 1.1rem;
        font-size: 0.64rem;
        letter-spacing: 0.05em;
    }
    .badge-card .badge-card-meta .badge-card-earned {
        grid-column: 2;
        justify-self: end;
        max-width: 5rem;
    }
}
