/* Classement — podium à marches, saison et défi côte à côte, lignes nettes.
   Habillage uniquement : mêmes requêtes, mêmes cartes, mêmes actions.
   Le podium garde sa grille 1fr 1.15fr 1fr (vérifiée par les tests). */

#v-lb{position:relative;isolation:isolate}
#v-lb::before{content:'';position:absolute;z-index:-1;left:0;right:0;top:0;height:420px;background:radial-gradient(60% 50% at 50% 0%,rgba(var(--accent-rgb),.22),transparent 70%),radial-gradient(40% 40% at 90% 30%,rgba(251,191,36,.08),transparent 70%);pointer-events:none}

/* ════════ Filtres ════════ */
#v-lb .lb-filter-toggle{border-radius:16px}
#v-lb #lb-filters{margin:0 0 14px;padding:12px;border-radius:20px;background:rgba(255,255,255,.03);box-shadow:inset 0 0 0 1px rgba(255,255,255,.08)}
#v-lb .lb-period-btn{min-height:40px;padding:0 12px;border:0;border-radius:999px;background:rgba(255,255,255,.05);box-shadow:inset 0 0 0 1px rgba(255,255,255,.1);color:var(--text2);font:700 12.5px/1 'Barlow',sans-serif;transition:background .2s,color .2s}
#v-lb .lb-period-btn.on{background:linear-gradient(135deg,var(--accent2),var(--accent));box-shadow:0 6px 16px rgba(var(--accent-rgb),.4);color:#fff}

/* ════════ Saison + défi ════════ */
#v-lb .lb-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:0 0 6px}
#v-lb .lb-cards>.lb-season,#v-lb .lb-cards>.lb-chal{position:relative;overflow:hidden;display:flex;flex-direction:column;min-width:0;margin:0!important;padding:14px!important;border:1px solid rgba(255,255,255,.08)!important;border-radius:22px!important;box-shadow:0 12px 26px rgba(0,0,0,.35)!important}
#v-lb .lb-cards>.lb-season{background:radial-gradient(90% 80% at 0% 0%,rgba(251,191,36,.22),transparent 65%),linear-gradient(165deg,#1b1a17,#101012)!important}
#v-lb .lb-cards>.lb-chal{background:radial-gradient(90% 80% at 100% 0%,rgba(var(--accent-rgb),.28),transparent 65%),linear-gradient(165deg,#1a1b21,#101115)!important}
#v-lb .lb-cards>.lb-chal:empty{display:none}
#v-lb .lb-cards:has(>.lb-chal:empty){grid-template-columns:1fr}
#v-lb .lb-season-head,#v-lb .lb-chal-head{display:flex;flex-direction:column;align-items:flex-start;gap:6px;margin:0 0 10px}
#v-lb .lb-season-title{color:#fde68a;font:900 17px/1.05 'Barlow Condensed',sans-serif;letter-spacing:.3px;text-transform:uppercase}
#v-lb .lb-season-left,#v-lb .lb-chal-left{padding:4px 8px;border-radius:999px;background:rgba(255,255,255,.07);color:var(--text2);font:700 10.5px/1 'Barlow',sans-serif;letter-spacing:.4px;text-transform:none}
#v-lb .lb-season-bar,#v-lb .lb-chal-bar{height:7px;margin:auto 0 8px;border-radius:7px;background:rgba(255,255,255,.08);overflow:hidden}
#v-lb .lb-season-fill{background:linear-gradient(90deg,#fde68a,#f59e0b);box-shadow:0 0 10px rgba(245,158,11,.6)}
#v-lb .lb-chal-fill{background:linear-gradient(90deg,var(--accent2),var(--accent));box-shadow:0 0 10px rgba(var(--accent-rgb),.6)}
#v-lb .lb-chal-fill.done{background:linear-gradient(90deg,#4ade80,#16a34a)}
#v-lb .lb-season-sub{color:var(--muted);font-size:11px;line-height:1.4}
#v-lb .lb-season-link{display:inline-block;margin-top:6px;padding:0;border:0;background:none;color:#fde68a;font:700 11.5px/1.2 'Barlow',sans-serif;text-decoration:none}
#v-lb .lb-season-link::after{content:' ›'}
#v-lb .lb-chal-tag{color:var(--accent-soft);font:800 10px/1 'Barlow',sans-serif;letter-spacing:1.4px;text-transform:uppercase}
#v-lb .lb-chal-title{color:#fff;font:900 19px/1 'Barlow Condensed',sans-serif;letter-spacing:.3px;text-transform:uppercase}
#v-lb .lb-chal-desc{margin:5px 0 10px;color:var(--muted);font-size:11.5px;line-height:1.35}
#v-lb .lb-chal-prog{color:#fff;font:900 15px/1 'Barlow Condensed',sans-serif}

/* ════════ Podium à marches ════════ */
#v-lb .lb-podium{align-items:end;gap:6px!important;margin:18px 0 22px!important;padding:26px 0 0!important}
#v-lb .podium-spot{display:flex;flex-direction:column;align-items:center;gap:0;min-width:0;padding:0!important;border:0!important;border-radius:0!important;background:none!important;box-shadow:none!important;overflow:visible!important;cursor:pointer}
#v-lb .podium-spot>*{order:2}
/* Le halo et le reflet de la 1re place viennent de l'ancien podium en cartes :
   sans fond de carte, le halo montait jusqu'aux cartes Saison et Défi et s'y
   coupait net. La marche dorée porte déjà la mise en avant. */
#v-lb .podium-1::before,#v-lb .podium-1::after{content:none}
#v-lb .podium-avatar{order:0;position:relative;margin-bottom:8px}
#v-lb .podium-1 .podium-avatar::before{content:'';position:absolute;z-index:3;left:50%;top:-22px;width:34px;height:24px;margin-left:-17px;background:linear-gradient(180deg,#fff3c4,#fbbf24 55%,#d97706);-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 16'%3E%3Cpath d='M2 14 0 3l6 4 6-7 6 7 6-4-2 11Z'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 16'%3E%3Cpath d='M2 14 0 3l6 4 6-7 6 7 6-4-2 11Z'/%3E%3C/svg%3E") center/contain no-repeat;filter:drop-shadow(0 2px 6px rgba(251,191,36,.8));animation:lbCrown 3s ease-in-out infinite}
#v-lb .podium-name{order:1;max-width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:#fff;font:800 15px/1.1 'Barlow Condensed',sans-serif}
#v-lb .podium-1 .podium-name{font-size:17px}
#v-lb .podium-pts{order:1;margin-top:4px;color:#fff;font:900 20px/1 'Barlow Condensed',sans-serif;font-variant-numeric:tabular-nums}
#v-lb .podium-1 .podium-pts{font-size:24px;color:#fde68a}
#v-lb .podium-ptsl{order:1;margin-bottom:10px;color:var(--muted);font-size:9.5px;letter-spacing:1.4px;text-transform:uppercase}
#v-lb .podium-rname{order:1;margin-top:3px;font-size:9.5px;letter-spacing:1.2px}
#v-lb .podium-verif{order:1;margin-top:5px}
/* Infos secondaires : gardées pour la recherche, masquées dans le podium */
#v-lb .podium-badge,#v-lb .podium-location,#v-lb .podium-title{position:absolute!important;width:1px!important;height:1px!important;overflow:hidden!important;clip-path:inset(50%)!important;margin:0!important;padding:0!important}
/* La marche porte le numéro */
#v-lb .podium-rank{order:3;display:grid!important;place-items:center;width:100%!important;height:var(--step,70px)!important;margin:0!important;border:0!important;border-radius:18px 18px 6px 6px!important;color:#1a1204!important;font:900 34px/1 'Barlow Condensed',sans-serif!important;position:relative!important;inset:auto!important;transform:none!important;box-shadow:inset 0 2px 0 rgba(255,255,255,.55),inset 0 -10px 20px rgba(0,0,0,.25),0 14px 26px rgba(0,0,0,.45)!important}
#v-lb .podium-1 .podium-rank{--step:104px;background:linear-gradient(180deg,#fff3c4,#fbbf24 40%,#b45309)!important;font-size:46px!important}
#v-lb .podium-2 .podium-rank{--step:76px;background:linear-gradient(180deg,#f8fafc,#cbd5e1 40%,#64748b)!important}
#v-lb .podium-3 .podium-rank{--step:58px;background:linear-gradient(180deg,#fed7aa,#d97706 40%,#7c2d12)!important}
#v-lb .podium-spot.me .podium-rank{outline:2px solid var(--accent);outline-offset:3px}
#v-lb .podium-spot.me .podium-name{color:var(--accent-soft)}
#v-lb .podium-spot:active{transform:scale(.97)}

/* ════════ Lignes ════════ */
#v-lb .lb-item{gap:10px!important;min-height:72px;padding:10px 14px 10px 10px!important;margin-bottom:8px!important;border:1px solid rgba(255,255,255,.07)!important;border-radius:20px!important;background:linear-gradient(165deg,#1a1b21,#111216)!important;box-shadow:0 10px 22px rgba(0,0,0,.3)!important}
#v-lb .lb-pos{flex:0 0 30px;color:var(--text2)!important;font:900 18px/1 'Barlow Condensed',sans-serif!important;text-align:center}
#v-lb .lb-badge{display:none}
#v-lb .lb-location{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
#v-lb .lb-name{font:800 17px/1.1 'Barlow Condensed',sans-serif}
#v-lb .lb-rname{margin-top:3px;font-size:9.5px;letter-spacing:1.2px}
#v-lb .lb-bar-bg{height:4px;margin-top:6px;border-radius:4px;background:rgba(255,255,255,.07)}
#v-lb .lb-pts{color:#fff;font:900 20px/1 'Barlow Condensed',sans-serif;font-variant-numeric:tabular-nums}
#v-lb .lb-ptsl{font-size:9px;letter-spacing:1.3px}
#v-lb .lb-item.me{border-color:rgba(var(--accent-rgb),.6)!important;background:radial-gradient(70% 140% at 0% 50%,rgba(var(--accent-rgb),.25),transparent 65%),linear-gradient(165deg,#1a1b21,#111216)!important;box-shadow:0 0 0 1px rgba(var(--accent-rgb),.25),0 12px 26px rgba(var(--accent-rgb),.18)!important}
#v-lb .lb-item.me .lb-pos{color:var(--accent-soft)!important}
#v-lb .lb-item:active{transform:scale(.985)}

/* ════════ Barre « Toi » ════════ */
.lb-me-bar .lb-me-gap{margin-top:3px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:var(--text2);font:600 11px/1.2 'Barlow',sans-serif}
.lb-me-bar .lb-me-gap b{color:#fde68a;font-weight:800}
.lb-me-bar .lb-me-gap.is-first{color:#fde68a;font-weight:800}

@keyframes lbCrown{0%,100%{transform:translateY(0) rotate(-4deg)}50%{transform:translateY(-3px) rotate(4deg)}}
@media(max-width:370px){
  #v-lb .lb-cards{grid-template-columns:1fr}
  #v-lb .podium-1 .podium-rank{--step:88px;font-size:40px!important}
  #v-lb .podium-2 .podium-rank{--step:66px}
  #v-lb .podium-3 .podium-rank{--step:50px}
  #v-lb .podium-pts{font-size:17px}
  #v-lb .podium-1 .podium-pts{font-size:20px}
}
@media(prefers-reduced-motion:reduce){#v-lb .podium-1 .podium-avatar::before{animation:none}}

/* Bouton d'action dans un état vide du classement (séance à enregistrer,
   amis à trouver) : une porte de sortie, pas un cul-de-sac. */
.lb-empty .lb-empty-action{display:inline-block;margin:16px auto 0;padding:11px 18px;min-height:44px;border:none;border-radius:11px;background:var(--accent);color:#fff;font-family:'Barlow Condensed',sans-serif;font-size:12px;font-weight:800;letter-spacing:1.6px;text-transform:uppercase;cursor:pointer;transition:filter .2s}
.lb-empty .lb-empty-action:hover{filter:brightness(1.1)}
