.public-score-body {
    min-height: 100dvh;
    overflow: hidden;
    background:
        radial-gradient(circle at 42% -15%, rgba(112, 245, 196, .16), transparent 37%),
        #05101d;
}

.public-topbar {
    height: 68px;
    grid-template-columns: minmax(240px, 1fr) auto auto auto;
}

.court-navigation {
    display: flex;
    align-items: center;
    gap: 8px;
}

.court-navigation a {
    padding: 8px 11px;
    border: 1px solid transparent;
    border-radius: 7px;
    color: #73899c;
    font-size: .62rem;
    font-weight: 800;
    text-decoration: none;
}

.court-navigation a:hover {
    color: #fff;
}

.court-navigation a.active {
    border-color: rgba(112, 245, 196, .24);
    background: rgba(112, 245, 196, .08);
    color: var(--mint);
}

.public-score-main {
    width: 100%;
    max-width: none;
    height: calc(100dvh - 68px);
    padding: 18px;
    overflow: hidden;
}

.public-one-screen {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(360px, 420px);
    gap: 18px;
    height: 100%;
}

.public-scoreboard,
.public-roster-panel {
    min-height: 0;
    border: 1px solid var(--line);
    border-radius: 20px;
    background: linear-gradient(145deg, rgba(13, 39, 66, .96), rgba(5, 20, 35, .98));
    box-shadow: 0 32px 80px rgba(0, 0, 0, .28);
    overflow: hidden;
}

.public-scoreboard {
    display: grid;
    grid-template-rows: auto minmax(145px, .7fr) minmax(265px, 1.3fr) auto;
    position: relative;
}

.public-scoreboard::before {
    position: absolute;
    inset: 0;
    background:
        radial-gradient(circle at 18% 65%, rgba(112, 245, 196, .07), transparent 25%),
        radial-gradient(circle at 82% 65%, rgba(255, 112, 64, .06), transparent 25%);
    content: '';
    pointer-events: none;
}

.scoreboard-topline {
    z-index: 1;
    display: flex;
    align-items: center;
    justify-content: space-between;
    min-height: 58px;
    padding: 14px 20px;
    border-bottom: 1px solid var(--line);
}

.scoreboard-match-label {
    text-align: right;
}

.scoreboard-match-label small,
.scoreboard-match-label b {
    display: block;
}

.scoreboard-match-label small {
    color: #61798e;
    font-size: .48rem;
    font-weight: 900;
    letter-spacing: .14em;
}

.scoreboard-match-label b {
    margin-top: 3px;
    color: #cbd8e1;
    font-size: .64rem;
}

.public-clock-zone {
    z-index: 1;
    display: grid;
    grid-template-columns: 1fr minmax(310px, auto) 1fr;
    grid-template-rows: auto auto;
    grid-template-areas:
        "period clock spacer"
        ". raid .";
    align-items: center;
    row-gap: 12px;
    padding: 16px 28px 4px;
    text-align: center;
}

.public-clock-zone > small {
    grid-area: period;
    justify-self: end;
    margin-right: 24px;
    color: #71899d;
    font-size: .55rem;
    font-weight: 900;
    letter-spacing: .13em;
}

.public-clock-zone > small b {
    color: #fff;
}

.public-clock-zone > strong {
    grid-area: clock;
    min-width: 310px;
    font: 400 clamp(5.4rem, 8vw, 8rem)/.9 var(--display);
    letter-spacing: .02em;
}

.public-raid-clock {
    grid-area: raid;
    justify-self: center;
    display: flex;
    align-items: end;
    gap: 10px;
    margin: 0;
    padding: 11px 21px;
    border: 1px solid rgba(255, 112, 64, .22);
    border-radius: 10px;
    background: rgba(255, 112, 64, .08);
}

.public-raid-clock span,
.public-raid-clock i {
    color: #788ea1;
    font-size: .52rem;
    font-style: normal;
    font-weight: 900;
    letter-spacing: .1em;
}

.public-raid-clock b {
    color: var(--orange);
    font: 400 2.9rem/.78 var(--display);
}

.public-duel-score {
    z-index: 1;
    display: grid;
    grid-template-columns: minmax(0, 1fr) 64px minmax(0, 1fr);
    align-items: stretch;
    padding: 0 22px 18px;
}

.public-team-score {
    min-width: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    position: relative;
    text-align: center;
}

.public-team-score::before {
    position: absolute;
    width: min(74%, 350px);
    aspect-ratio: 1;
    border: 1px solid rgba(112, 245, 196, .08);
    border-radius: 50%;
    content: '';
}

.public-team-score > span,
.public-team-score h1,
.public-team-score > strong,
.public-team-score > small {
    z-index: 1;
    position: relative;
}

.public-team-score > span {
    padding: 5px 9px;
    border: 1px solid rgba(112, 245, 196, .2);
    border-radius: 5px;
    color: var(--mint);
    font-size: .53rem;
    font-weight: 900;
    letter-spacing: .14em;
}

.public-team-score h1 {
    min-height: 2.3em;
    display: flex;
    align-items: center;
    justify-content: center;
    margin: 10px 0 0;
    font-size: clamp(.95rem, 1.6vw, 1.45rem);
    letter-spacing: -.035em;
}

.public-team-score > strong {
    font: 400 clamp(8rem, 14vw, 13rem)/.75 var(--display);
    letter-spacing: -.04em;
}

.away-score > strong {
    color: var(--mint);
}

.public-team-score > small {
    display: flex;
    align-items: center;
    gap: 6px;
    margin-top: 16px;
    color: #7c92a5;
    font-size: .57rem;
    letter-spacing: .08em;
    text-transform: uppercase;
}

.public-team-score > small i {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: var(--mint);
}

.public-team-score > small b {
    color: #fff;
}

.public-versus {
    display: grid;
    place-content: center;
    gap: 12px;
    color: #627a90;
    font: 400 1rem var(--display);
    text-align: center;
}

.public-versus i {
    display: block;
    width: 1px;
    height: 80px;
    margin: auto;
    background: linear-gradient(transparent, rgba(112, 245, 196, .35), transparent);
}

.scoreboard-footer {
    z-index: 1;
    min-height: 52px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    padding: 12px 20px;
    border-top: 1px solid var(--line);
}

.raid-turn-label {
    color: #71889b;
    font-size: .53rem;
    letter-spacing: .08em;
}

.raid-turn-label b {
    color: var(--orange);
}

.raid-turn-label strong {
    color: #dbe5ec;
}

.read-only-badge,
.resolution-badge {
    padding: 7px 10px;
    border: 1px solid rgba(112, 245, 196, .14);
    border-radius: 99px;
    color: #71889b;
    font-size: .46rem;
    font-weight: 900;
    letter-spacing: .11em;
}

.resolution-badge {
    color: var(--mint);
}

.public-roster-panel {
    display: grid;
    grid-template-rows: auto minmax(0, 1fr) auto;
    background: rgba(7, 24, 41, .96);
}

.public-roster-panel > header {
    min-height: 68px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    padding: 14px 18px;
    border-bottom: 1px solid var(--line);
}

.public-roster-panel > header small {
    color: var(--mint);
    font-size: .48rem;
    font-weight: 900;
    letter-spacing: .14em;
}

.public-roster-panel > header h2 {
    margin: 4px 0 0;
    font-size: 1rem;
    letter-spacing: -.025em;
}

.public-roster-panel > header > span {
    color: #6c8396;
    font-size: .52rem;
}

.public-roster-groups {
    min-height: 0;
    display: grid;
    grid-template-rows: repeat(2, minmax(0, 1fr));
}

.public-roster-team {
    min-height: 0;
    display: grid;
    grid-template-rows: auto minmax(0, 1fr);
    padding: 13px 15px 10px;
}

.public-roster-team + .public-roster-team {
    border-top: 1px solid var(--line);
}

.roster-team-heading {
    display: flex;
    align-items: center;
    gap: 9px;
    padding-bottom: 9px;
}

.roster-team-heading span {
    padding: 5px 7px;
    border: 1px solid rgba(112, 245, 196, .24);
    border-radius: 5px;
    color: var(--mint);
    font-size: .46rem;
    font-weight: 900;
    letter-spacing: .12em;
}

.roster-team-heading b {
    min-width: 0;
    overflow: hidden;
    font-size: .65rem;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.public-roster-list {
    min-height: 0;
    display: grid;
    grid-auto-rows: 34px;
    align-content: start;
    gap: 4px;
    padding-right: 5px;
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior: contain;
    scrollbar-color: rgba(112, 245, 196, .55) rgba(255, 255, 255, .04);
    scrollbar-gutter: stable;
    scrollbar-width: thin;
    -webkit-overflow-scrolling: touch;
}

.public-roster-list::-webkit-scrollbar {
    width: 5px;
}

.public-roster-list::-webkit-scrollbar-track {
    border-radius: 99px;
    background: rgba(255, 255, 255, .04);
}

.public-roster-list::-webkit-scrollbar-thumb {
    border-radius: 99px;
    background: rgba(112, 245, 196, .55);
}

.public-roster-list::-webkit-scrollbar-thumb:hover {
    background: var(--mint);
}

.public-roster-list:focus-visible {
    outline: 1px solid rgba(112, 245, 196, .55);
    outline-offset: 3px;
}

.public-player-row {
    min-height: 0;
    display: grid;
    grid-template-columns: 28px minmax(0, 1fr) auto;
    align-items: center;
    gap: 8px;
    padding: 3px 7px;
    border-radius: 6px;
    background: rgba(255, 255, 255, .027);
}

.public-player-row > span {
    display: grid;
    place-items: center;
    width: 25px;
    height: 21px;
    border: 1px solid var(--line);
    border-radius: 5px;
    color: #a7b7c4;
    font: 400 .54rem var(--display);
}

.public-player-row b {
    min-width: 0;
    overflow: hidden;
    font-size: .58rem;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.public-player-row i {
    color: var(--mint);
    font-size: .39rem;
    font-style: normal;
    font-weight: 900;
    letter-spacing: .08em;
}

.public-player-row.status-out {
    background: rgba(255, 112, 64, .07);
    opacity: .74;
}

.public-player-row.status-out i {
    color: var(--orange);
}

.public-player-row.status-bench {
    opacity: .48;
}

.public-player-row.status-bench i {
    color: #8294a3;
}

.detail-loading,
.detail-empty {
    margin: 0;
    display: grid;
    place-items: center;
    color: #687f92;
    font-size: .6rem;
    text-align: center;
}

.public-roster-panel > footer {
    min-height: 42px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 10px 16px;
    border-top: 1px solid var(--line);
    color: #60778a;
    font-size: .48rem;
}

.public-roster-panel > footer span {
    display: flex;
    align-items: center;
    gap: 7px;
}

.public-roster-panel > footer i {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: var(--mint);
    box-shadow: 0 0 10px rgba(112, 245, 196, .7);
}

.public-connection.is-offline .connection-dot {
    background: var(--orange);
    box-shadow: 0 0 0 5px rgba(255, 112, 64, .1), 0 0 15px rgba(255, 112, 64, .8);
}

.public-connection.is-offline b {
    color: var(--orange);
}

.public-empty-panel {
    min-height: 100%;
    display: grid;
    place-content: center;
    text-align: center;
    border: 1px solid var(--line);
    border-radius: 18px;
    background: linear-gradient(145deg, rgba(13, 39, 66, .94), rgba(6, 22, 39, .96));
}

.public-empty-panel span {
    color: var(--mint);
    font-size: .58rem;
    font-weight: 900;
    letter-spacing: .16em;
}

.public-empty-panel h1 {
    margin: 12px 0;
    font-size: 2.4rem;
}

.public-empty-panel p {
    margin: 0;
    color: #7b91a4;
}

@media (max-width: 1120px) {
    .public-one-screen {
        grid-template-columns: minmax(0, 1fr) 350px;
    }

    .public-clock-zone > strong {
        min-width: 250px;
    }

    .public-clock-zone > small {
        margin-right: 12px;
    }

}

@media (max-width: 900px) {
    .public-score-body {
        overflow: auto;
    }

    .public-topbar {
        grid-template-columns: 1fr auto auto;
    }

    .public-topbar .match-identity {
        display: none;
    }

    .public-score-main {
        height: auto;
        min-height: calc(100dvh - 68px);
        overflow: visible;
    }

    .public-one-screen {
        grid-template-columns: 1fr;
        height: auto;
    }

    .public-scoreboard {
        min-height: 650px;
    }

    .public-roster-panel {
        min-height: 540px;
    }

    .public-roster-groups {
        grid-template-columns: 1fr 1fr;
        grid-template-rows: 1fr;
    }

    .public-roster-team + .public-roster-team {
        border-top: 0;
        border-left: 1px solid var(--line);
    }
}

@media (max-width: 620px) {
    .public-topbar {
        grid-template-columns: 1fr auto;
        padding-inline: 14px;
    }

    .court-navigation {
        display: none;
    }

    .public-score-main {
        padding: 10px;
    }

    .public-scoreboard {
        min-height: 600px;
        grid-template-rows: auto 140px minmax(280px, 1fr) auto;
    }

    .public-clock-zone {
        grid-template-columns: 1fr;
        grid-template-areas:
            "clock"
            "raid";
        row-gap: 12px;
        padding-inline: 14px;
    }

    .public-clock-zone > small {
        display: none;
    }

    .public-clock-zone > strong {
        min-width: 0;
        font-size: 4.4rem;
    }

    .public-raid-clock {
        margin: 0;
    }

    .public-duel-score {
        grid-template-columns: 1fr 35px 1fr;
        padding-inline: 8px;
    }

    .public-team-score h1 {
        font-size: .78rem;
    }

    .public-team-score > strong {
        font-size: 6.6rem;
    }

    .public-team-score > small {
        font-size: .45rem;
    }

    .public-versus i,
    .raid-turn-label,
    .read-only-badge {
        display: none;
    }

    .scoreboard-footer {
        justify-content: center;
    }

    .public-roster-groups {
        grid-template-columns: 1fr;
        grid-template-rows: repeat(2, minmax(0, 1fr));
    }

    .public-roster-team + .public-roster-team {
        border-top: 1px solid var(--line);
        border-left: 0;
    }

    .public-roster-panel {
        min-height: 760px;
    }
}
