/* =========================================================
   Leaderboard v0.1 — Zone maximale
   Le score affiché provient exclusivement du serveur.
   ========================================================= */
body.leaderboard-panel-open { overflow:hidden; }

.leaderboardSideButton {
    position:absolute;
    right:-4px;
    top:calc(max(14px, env(safe-area-inset-top)) - 5px);
    z-index:14;
    width:50px;
    max-width:50px;
    height:54px;
    margin:0;
    padding:3px;
    border:1px solid rgba(255,221,117,.76);
    border-radius:8px 0 0 8px;
    background:linear-gradient(180deg,rgba(77,58,24,.97),rgba(34,28,21,.98));
    box-shadow:0 6px 15px rgba(0,0,0,.46),inset 0 1px rgba(255,255,255,.15),0 0 13px rgba(255,197,58,.16);
    cursor:pointer;
    overflow:visible;
}
.leaderboardSideButton img {
    display:block;
    width:auto;
    max-width:44px;
    height:auto;
    max-height:44px;
    margin:auto;
    object-fit:contain;
    filter:drop-shadow(0 3px 4px rgba(0,0,0,.62));
}
.leaderboardSideButton:hover,.leaderboardSideButton:focus-visible {
    outline:0;
    transform:translateX(-2px);
    filter:brightness(1.08);
}
.leaderboardSideButton:active { transform:translateX(-1px) scale(.96); }
.leaderboardSideButton:disabled { opacity:.55; cursor:default; }

.leaderboardPanel {
    position:fixed;
    inset:0;
    z-index:6600;
    display:none;
    font-family:"Poppins",sans-serif;
}
.leaderboardPanel.is-open { display:block; }
.leaderboardPanelBackdrop {
    position:absolute;
    inset:0;
    margin:0;
    padding:0;
    border:0;
    background:rgba(0,5,14,.78);
    backdrop-filter:blur(5px);
    -webkit-backdrop-filter:blur(5px);
}
.leaderboardPanelDialog {
    position:absolute;
    top:50%;
    left:50%;
    display:flex;
    flex-direction:column;
    width:min(calc(100% - 12px),366px);
    max-height:calc(100dvh - max(12px, env(safe-area-inset-top) + env(safe-area-inset-bottom)));
    overflow:hidden;
    border:1px solid rgba(230,205,139,.58);
    border-radius:16px;
    background:linear-gradient(180deg,#102d49 0%,#071d34 52%,#06182c 100%);
    box-shadow:0 20px 60px rgba(0,0,0,.75),inset 0 1px rgba(255,255,255,.09);
    color:#fff;
    transform:translate(-50%,-50%);
}
.leaderboardPanelHeader {
    display:flex;
    align-items:center;
    justify-content:space-between;
    min-height:48px;
    padding:6px 8px 6px 12px;
    border-bottom:1px solid rgba(229,210,157,.22);
    background:linear-gradient(180deg,rgba(68,54,31,.98),rgba(31,38,48,.97));
}
.leaderboardPanelHeader small {
    display:block;
    color:#ffd86b;
    font-size:9px;
    font-weight:900;
    letter-spacing:1px;
}
.leaderboardPanelHeader strong { display:block; margin-top:1px; color:#fff6d5; font-size:20px; line-height:1; }
.leaderboardPanelClose {
    width:34px;
    height:34px;
    margin:0;
    padding:0;
    border:1px solid rgba(230,237,244,.28);
    border-radius:11px;
    background:rgba(255,255,255,.06);
    color:#fff;
    font-size:20px;
}
.leaderboardPanelBody {
    min-height:0;
    display:flex;
    flex-direction:column;
    padding:7px;
    overflow:hidden;
}
.leaderboardBoardTitle {
    display:flex;
    align-items:center;
    gap:8px;
    margin-bottom:6px;
    padding:7px 9px;
    border:1px solid rgba(255,218,102,.24);
    border-radius:10px;
    background:rgba(91,67,17,.18);
}
.leaderboardBoardTitle img { width:33px; height:31px; object-fit:contain; }
.leaderboardBoardTitle span { display:flex; flex-direction:column; min-width:0; }
.leaderboardBoardTitle strong { color:#fff3c4; font-size:12px; font-weight:900; }
.leaderboardBoardTitle small { margin-top:1px; color:#9fc7dd; font-size:8px; font-weight:700; }
.leaderboardColumnHeader {
    display:grid;
    grid-template-columns:42px 38px minmax(0,1fr) 72px;
    gap:5px;
    padding:0 7px 4px;
    color:#82b7d5;
    font-size:8px;
    font-weight:900;
    text-transform:uppercase;
}
.leaderboardColumnHeader span:last-child { text-align:right; }
.leaderboardEntries {
    min-height:80px;
    overflow-y:auto;
    overscroll-behavior:contain;
    scrollbar-width:thin;
    scrollbar-color:rgba(128,210,239,.78) rgba(10,24,39,.42);
    border-top:1px solid rgba(205,228,246,.10);
    border-bottom:1px solid rgba(205,228,246,.10);
}
.leaderboardEntries::-webkit-scrollbar { width:7px; }
.leaderboardEntries::-webkit-scrollbar-track { border-radius:999px; background:rgba(10,24,39,.42); }
.leaderboardEntries::-webkit-scrollbar-thumb {
    border:1px solid rgba(205,241,255,.16);
    border-radius:999px;
    background:linear-gradient(180deg,rgba(116,213,245,.82),rgba(43,124,181,.90));
}
.leaderboardEntries::-webkit-scrollbar-thumb:hover {
    background:linear-gradient(180deg,rgba(143,224,248,.92),rgba(57,142,196,.96));
}
.leaderboardEntry {
    display:grid;
    grid-template-columns:42px 38px minmax(0,1fr) 72px;
    align-items:center;
    gap:5px;
    min-height:48px;
    padding:4px 7px;
    border-bottom:1px solid rgba(205,228,246,.08);
    background:rgba(255,255,255,.018);
}
.leaderboardEntry:last-child { border-bottom:0; }
.leaderboardEntry.is-me {
    border-color:rgba(102,228,240,.34);
    background:linear-gradient(90deg,rgba(25,116,151,.25),rgba(255,199,64,.08));
}
.leaderboardEntry[data-podium="1"] { background:linear-gradient(90deg,rgba(176,122,21,.30),rgba(255,211,89,.08)); }
.leaderboardEntry[data-podium="2"] { background:linear-gradient(90deg,rgba(139,157,172,.20),rgba(255,255,255,.035)); }
.leaderboardEntry[data-podium="3"] { background:linear-gradient(90deg,rgba(151,83,37,.24),rgba(255,170,93,.04)); }
.leaderboardRank { color:#d7e8f4; font-size:12px; font-weight:900; text-align:center; }
.leaderboardEntry[data-podium="1"] .leaderboardRank { color:#ffd65d; font-size:14px; }
.leaderboardEntry[data-podium="2"] .leaderboardRank { color:#e4edf3; font-size:13px; }
.leaderboardEntry[data-podium="3"] .leaderboardRank { color:#e0a06d; font-size:13px; }
.leaderboardPortrait {
    display:block;
    width:34px;
    height:34px;
    border:1px solid rgba(226,239,249,.38);
    border-radius:8px;
    background-color:rgba(3,20,37,.75);
    background-position:center;
    background-size:contain;
    background-repeat:no-repeat;
}
.leaderboardPortrait.is-empty { background:linear-gradient(135deg,rgba(102,228,240,.13),rgba(247,178,59,.11)); }
.leaderboardIdentity { display:flex; flex-direction:column; min-width:0; }
.leaderboardIdentity strong {
    overflow:hidden;
    color:#f7fbff;
    font-size:10px;
    font-weight:900;
    white-space:nowrap;
    text-overflow:ellipsis;
}
.leaderboardEntry.is-prestiged .leaderboardIdentity strong {
    color:#c77dff;
    text-shadow:0 0 8px rgba(178,89,255,.34);
}
.leaderboardIdentity small { margin-top:1px; color:#789bb0; font-size:6.5px; font-weight:800; letter-spacing:.4px; }
.leaderboardEntry.is-me .leaderboardIdentity small { color:#75deed; }
.leaderboardValue { color:#fff1ae; font-size:14px; font-weight:900; text-align:right; }
.leaderboardMe {
    margin-top:6px;
    padding:5px;
    border:1px solid rgba(102,228,240,.28);
    border-radius:10px;
    background:rgba(4,31,51,.88);
}
.leaderboardMeLabel { display:block; margin:0 3px 3px; color:#72dce9; font-size:7px; font-weight:900; letter-spacing:.8px; }
.leaderboardMe .leaderboardEntry { min-height:45px; padding:3px 4px; border:0; border-radius:7px; }
.leaderboardStatus,.leaderboardEmpty {
    min-height:18px;
    margin:7px 2px 0;
    color:#9bc7dd;
    font-size:9px;
    font-weight:700;
    text-align:center;
}
.leaderboardStatus.is-error { color:#ff9c9c; }

@media (max-width:520px) {
    .leaderboardSideButton {
        top:calc(max(14px, env(safe-area-inset-top)) - 6px);
        right:-2px;
        width:50px;
        max-width:50px;
        height:54px;
        border-radius:8px 0 0 8px;
    }
    .leaderboardPanelDialog { width:336px; border-radius:14px; }
    .leaderboardPanelHeader { min-height:40px; padding:4px 6px 4px 10px; }
    .leaderboardPanelHeader strong { font-size:18px; }
    .leaderboardPanelClose { width:30px; height:30px; font-size:17px; }
    .leaderboardPanelBody { padding:5px; }
    .leaderboardEntry,.leaderboardColumnHeader { grid-template-columns:36px 34px minmax(0,1fr) 62px; gap:4px; }
    .leaderboardEntry { min-height:44px; padding:4px 5px; }
    .leaderboardPortrait { width:30px; height:30px; }
    .leaderboardValue { font-size:12px; }
}

/* Multi-classements */
.leaderboardTabs {
    display:flex;
    flex:0 0 auto;
    gap:4px;
    margin:0 0 6px;
    padding:1px 1px 4px;
    overflow-x:auto;
    overscroll-behavior-x:contain;
    scrollbar-width:none;
    -ms-overflow-style:none;
    scroll-snap-type:x proximity;
    -webkit-overflow-scrolling:touch;
    cursor:grab;
    user-select:none;
    -webkit-user-select:none;
}
.leaderboardTabs::-webkit-scrollbar {
    display:none;
    width:0;
    height:0;
}
.leaderboardTabs.is-dragging {
    cursor:grabbing;
    scroll-snap-type:none;
}
.leaderboardTabs.is-dragging .leaderboardTab[hidden] { display:none !important; }
.leaderboardTabs.is-dragging .leaderboardTab { pointer-events:none; }
.leaderboardTab {
    flex:0 0 auto;
    min-width:76px;
    height:29px;
    margin:0;
    padding:0 9px;
    border:1px solid rgba(153,190,216,.24);
    border-radius:8px;
    background:linear-gradient(180deg,rgba(23,57,84,.92),rgba(8,31,52,.96));
    color:#9fc3d8;
    font:800 8px/1 "Poppins",sans-serif;
    letter-spacing:.15px;
    cursor:pointer;
    scroll-snap-align:start;
    white-space:nowrap;
}
.leaderboardTab:hover,.leaderboardTab:focus-visible {
    outline:0;
    border-color:rgba(255,215,96,.42);
    color:#e7f5ff;
}
.leaderboardTab.is-active {
    border-color:rgba(255,215,96,.64);
    background:linear-gradient(180deg,rgba(124,91,25,.88),rgba(63,49,24,.96));
    box-shadow:inset 0 1px rgba(255,255,255,.12),0 0 9px rgba(255,198,55,.12);
    color:#ffe58d;
}
.leaderboardTab:disabled { cursor:default; }
.leaderboardPanel.is-busy .leaderboardTab:not(.is-active) { opacity:.58; }
.leaderboardPanel .leaderboardBoardTitle,
.leaderboardPanel .leaderboardColumnHeader,
.leaderboardPanel .leaderboardEntries,
.leaderboardPanel .leaderboardMe {
    transition:opacity .12s ease;
}
.leaderboardPanel.is-busy .leaderboardBoardTitle,
.leaderboardPanel.is-busy .leaderboardColumnHeader,
.leaderboardPanel.is-busy .leaderboardEntries,
.leaderboardPanel.is-busy .leaderboardMe {
    opacity:.64;
}

@media (max-width:520px) {
    .leaderboardTabs { gap:3px; margin-bottom:4px; padding-bottom:3px; }
    .leaderboardTab { min-width:69px; height:27px; padding:0 7px; font-size:7.5px; }
    .leaderboardBoardTitle { margin-bottom:5px; padding:6px 8px; }
}

.leaderboardEntry.is-inspectable { cursor:pointer; }
.leaderboardEntry.is-inspectable:hover,.leaderboardEntry.is-inspectable:focus-visible {
    outline:0;
    background:linear-gradient(90deg,rgba(32,98,132,.25),rgba(255,205,73,.11));
    box-shadow:inset 3px 0 rgba(255,213,93,.66);
}

.leaderboardOnlineBadge {
    position:absolute;
    left:-7px;
    bottom:-8px;
    display:flex;
    align-items:center;
    justify-content:center;
    gap:4px;
    min-width:27px;
    height:17px;
    padding:0 6px;
    border:1px solid rgba(122,222,168,.72);
    border-radius:9px;
    background:rgba(7,28,27,.96);
    box-shadow:0 2px 7px rgba(0,0,0,.55);
    color:#d8ffe8;
    font:800 9px/1 "Poppins",sans-serif;
    pointer-events:none;
}
.leaderboardOnlineBadge[hidden] { display:none; }
.leaderboardOnlineBadge > i {
    width:5px;
    height:5px;
    flex:0 0 5px;
    border-radius:50%;
    background:#67ef8b;
    box-shadow:0 0 5px rgba(103,239,139,.8);
}

/* Présence serveur : même fenêtre de heartbeat que le compteur de joueurs actifs. */
.leaderboardPortrait { position:relative; }
.leaderboardPortrait.is-online::after {
    content:"";
    position:absolute;
    right:-2px;
    bottom:-2px;
    width:7px;
    height:7px;
    border:2px solid #102536;
    border-radius:50%;
    background:#45df7d;
    box-shadow:0 0 5px rgba(69,223,125,.55);
    pointer-events:none;
}

/* Progression multi-difficultés : la valeur reste locale 1..1000. */
.leaderboardEntry[data-progress-difficulty="normal"] .leaderboardIdentity small { color:#8dcdf4; }
.leaderboardEntry[data-progress-difficulty="hard"] .leaderboardIdentity small { color:#c77dff; text-shadow:0 0 8px rgba(178,89,255,.34); }
.leaderboardEntry[data-progress-difficulty="nightmare"] .leaderboardIdentity small { color:#ff9fb0; }
.leaderboardEntry[data-progress-difficulty="hard"] { box-shadow:inset 3px 0 0 rgba(199,125,255,.58); }
.leaderboardEntry[data-progress-difficulty="nightmare"] { box-shadow:inset 3px 0 0 rgba(206,64,88,.54); }
.leaderboardEntry[data-progress-difficulty="hard"] .leaderboardValue { color:#c77dff; text-shadow:0 0 8px rgba(178,89,255,.28); }
.leaderboardEntry[data-progress-difficulty="nightmare"] .leaderboardValue { color:#ffc0cc; }
.leaderboardEntry.is-completed[data-progress-difficulty] .leaderboardValue::after {
    content:" ✓";
    color:#a7f4b2;
    font-size:11px;
}
