/* ═══ DESIGN SYSTEM ═══════════════════════════════════════════════ */
:root{
  /* Fond gris très foncé MAT, neutre (violet quasi-effacé du gris — accent violet conservé
     ci-dessous). Surfaces légèrement plus claires que le fond. Ancien set violet-noir
     (#0a0812…#201b33) retiré : re-teinter le neutre = éditer UNIQUEMENT ces 2 lignes. */
  --bg0:#050407;--bg1:#0e0d12;--bg2:#111015;--bg3:#17161d;--bg4:#1e1d25;
  --s1:#0e0d12;--s2:#141319;--s3:#1e1d25;--sh:rgba(30,29,37,.92);
  --ac:#6c5ce7;--ac2:#a29bfe;--acdim:rgba(108,92,231,.12);--acglow:rgba(162,155,254,.25);
  --green:#10b981;--gdim:rgba(16,185,129,.12);
  --red:#ef4444;--rdim:rgba(239,68,68,.12);
  --gold:#f59e0b;--cyan:#06b6d4;
  --t-tin:#6b7280;--t-bro:#b45309;--t-sil:#94a3b8;--t-gol:#f59e0b;--t-pla:#0ea5e9;--t-dia:#8b5cf6;--t-val:#ef4444;
  --clan1:#9c99a1;--clan2:#2563eb;--clan3:#6d28d9; /* tag clan : niv1 gris · niv2 bleu profond · niv3 violet profond */
  --tx1:#ececf1;--tx2:#9c99a1;--tx3:#7f7c85;--tx4:#423f49; /* texte neutre (cast violet retiré), contraste AA sur --bg0 */
  --b1:rgba(255,255,255,.07);--b2:rgba(255,255,255,.11);--b3:rgba(108,92,231,.2);--ba:rgba(108,92,231,.45);
  --fd:'Space Grotesk',system-ui,sans-serif;--fb:'Inter',system-ui,sans-serif;
  --rsm:7px;--rmd:10px;--rlg:12px;--rxl:20px;--rfl:999px;
  --ease:cubic-bezier(.4,0,.2,1);--ease-out:cubic-bezier(.16,1,.3,1);
  --grad-ac:linear-gradient(140deg,var(--ac),color-mix(in srgb,var(--ac) 62%,var(--ac2)));    /* rest : plus plat, reste proche de --ac */
  --grad-ac-h:linear-gradient(140deg,color-mix(in srgb,var(--ac2) 24%,var(--ac)),var(--ac2)); /* hover : plus vif, tire vers --ac2 */
  --shadow-card:0 4px 24px -6px rgba(0,0,0,.5);
  --shadow-deep:0 16px 48px -16px rgba(0,0,0,.65);
  --shadow-glow:0 8px 32px rgba(0,0,0,.4);
  /* Pattern N — discret mais présent : tile 160px, opacity 0.02 */
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{font-family:var(--fb);background:var(--bg0);color:var(--tx1);min-height:100vh;overflow-x:hidden;-webkit-font-smoothing:antialiased}
/* Couche de fond global — 5 LÉGENDES en backdrop DISCRET, alignées en HAUT sous la topbar : fondu
   noir en HAUT ET EN BAS (le perso apparaît au milieu, se fond dans le noir des deux côtés). DÉFILE
   avec la page (position:absolute + height:100vh), derrière tout le contenu (z-index:-1) et AU-DESSUS
   du grain/vignette (z-index:-2), jamais cliquable (pointer-events:none). Chaque légende = un enfant
   .bg-leg (flex:1), image dimensionnée par la HAUTEUR (background-size:auto var(--legh) → --legh
   reste le seul bouton de taille), voisines en CHEVAUCHEMENT léger (--legov, marges négatives),
   fondue haut+bas ET gauche+droite via mask-image (émerge du noir, zones de chevauchement sans
   démarcation). #bg-legends dans <body>. Un seul bouton d'intensité : --legop. */
#bg-legends{position:absolute;top:0;left:0;right:0;height:100vh;z-index:-1;pointer-events:none;
  --legop:.020;  /* ← INTENSITÉ des légendes de fond : AJUSTER ICI */
  --legh:25vw;  /* taille des légendes (hauteur de l'image ; largeur suit, léger crop latéral avalé par le fondu) */
  --legov:3.5vw;  /* chevauchement horizontal entre voisines (~15% d'une cellule) */
  opacity:var(--legop);
  display:flex;align-items:flex-start;padding-top:64px} /* rangée ancrée en HAUT, sous la topbar (~64px) */
#bg-legends .bg-leg{flex:1 1 0;height:var(--legh);
  background-repeat:no-repeat;background-position:center;background-size:auto var(--legh);
  /* fondu noir HAUT/BAS + GAUCHE/DROITE (transparent → solide → transparent sur les 2 axes) → aucun bord carré, chevauchements fondus */
  -webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 20%,#000 80%,transparent 100%),linear-gradient(to right,transparent 0,#000 20%,#000 80%,transparent 100%);
  -webkit-mask-composite:source-in;
          mask-image:linear-gradient(to bottom,transparent 0,#000 20%,#000 80%,transparent 100%),linear-gradient(to right,transparent 0,#000 20%,#000 80%,transparent 100%);
          mask-composite:intersect}
#bg-legends .bg-leg+.bg-leg{margin-left:calc(-1*var(--legov))} /* superposition légère (flex-basis 0 réabsorbe → la rangée tient toujours dans 100vw) */
#bg-legends .bg-leg:nth-child(1){background-image:url("/assets/legends/kor.png")}
#bg-legends .bg-leg:nth-child(2){background-image:url("/assets/legends/isaiah.png")}
#bg-legends .bg-leg:nth-child(3){background-image:url("/assets/legends/wu-shang.png")}
#bg-legends .bg-leg:nth-child(4){background-image:url("/assets/legends/teros.png")}
#bg-legends .bg-leg:nth-child(5){background-image:url("/assets/legends/mordex.png")}
/* ≤768px : masque mordex → 4 légendes, taille/overlap modérés (pas de surcharge mobile) */
@media(max-width:768px){#bg-legends{--legh:30vw;--legov:3vw}#bg-legends .bg-leg:nth-child(5){display:none}}
/* Lot 3a — Film grain + vignette : couche FIXE, statique, sous #bg-legends (z-index:-2).
   Casse le fond plat --bg0 sans surcoût CPU (composité GPU, aucune animation, pas de
   background-attachment:fixed). Grain = data-URI SVG feTurbulence (CSP img-src data: OK).
   Intensité = opacity de body::before (seul bouton à régler). Atténué en light theme. */
body::before{content:'';position:fixed;inset:0;z-index:-2;pointer-events:none;opacity:.05;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");background-size:140px 140px}
body::after{content:'';position:fixed;inset:0;z-index:-2;pointer-events:none;
  background:radial-gradient(130% 130% at 50% 0%,transparent 58%,rgba(0,0,0,.30) 100%)}
/* Switch UI (.particle-toggle/.pt-sw/.pt-knob) dans le menu réglages — désormais utilisé par
   le seul bouton thème #themeBtn (le toggle particules a été retiré). NE PAS supprimer ces classes. */
.particle-toggle{display:flex;align-items:center;gap:8px;width:100%;padding:8px 4px 2px;margin-top:4px;border-top:1px solid var(--b1);font-size:12px;font-weight:600;color:var(--tx2);text-align:left;line-height:1.3}
.particle-toggle>span:last-child{flex:1;min-width:0;white-space:normal;overflow-wrap:break-word} /* label wraps within the menu, never overflows */
.particle-toggle.on{color:var(--tx1)}
.pt-sw{position:relative;width:32px;height:18px;border-radius:999px;background:var(--b2);flex-shrink:0;transition:background .18s ease}
.pt-knob{position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:50%;background:var(--tx2);transition:transform .18s ease,background .18s ease}
.particle-toggle.on .pt-sw{background:var(--ac)}
.particle-toggle.on .pt-knob{transform:translateX(14px);background:#fff}
input,textarea,select{user-select:text;-webkit-user-select:text}
/* Texte sélectionnable PAR DÉFAUT (tracker de stats : copier pseudo/ID/valeurs est un usage
   central). user-select:none UNIQUEMENT sur le chrome UI non-textuel où la sélection parasite
   le tap/clic (nav, boutons, tabs de tri, pagination, icônes, canvas). JAMAIS sur le contenu
   (noms, IDs, tableaux, stats, badges informatifs, chips d'historique de pseudos). */
.topbar,.nav-item,.btn,.tb,.pg-btn,.copy-link-btn,.name-hist-btn,.theme-btn,.settings-menu,.menu-btn,.my-prof-btn,.fav-x{user-select:none;-webkit-user-select:none}
img{display:block;max-width:100%}a{color:inherit;text-decoration:none}button{cursor:pointer;border:none;background:none;font-family:inherit}
::-webkit-scrollbar{width:5px}::-webkit-scrollbar-track{background:var(--bg1)}::-webkit-scrollbar-thumb{background:var(--bg4);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--ac)}

/* ── NAV ITEMS (topbar) ──────────────────────────────────────── */
.nav-item{display:flex;align-items:center;gap:9px;padding:8px 18px;font-size:13px;font-weight:500;color:var(--tx2);cursor:pointer;border-left:2px solid transparent;transition:all .12s var(--ease)}
.nav-item svg{width:16px;height:16px;flex-shrink:0;opacity:.65;transition:opacity .12s}
.nav-item:hover{color:var(--tx1);background:var(--acdim)}
.nav-item.active{color:var(--ac2);background:color-mix(in srgb,var(--ac) 10%,transparent);border-left-color:var(--ac);font-weight:600;box-shadow:inset 3px 0 12px color-mix(in srgb,var(--ac) 8%,transparent)}
.nav-item.active svg{opacity:1}
a[href*='discord.gg']:hover{opacity:.85}


/* ── MAIN ────────────────────────────────────────────────────── */
.main{flex:1;display:flex;flex-direction:column;min-height:100vh}
.topbar{height:52px;background:color-mix(in srgb,var(--bg0) 92%,transparent);border-bottom:1px solid color-mix(in srgb,var(--ac) 15%,transparent);display:flex;align-items:center;padding:0 22px;gap:12px;position:sticky;top:0;z-index:50;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}
.menu-btn{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:var(--rmd);background:var(--bg3);border:1px solid var(--b2);color:var(--tx2);font-size:17px;cursor:pointer;flex-shrink:0}
.content{flex:1;padding:22px}

/* ── PAGES ───────────────────────────────────────────────────── */
.rpage{display:none;animation:rpIn .18s var(--ease)}
.rpage.active{display:block}
@keyframes rpIn{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}

/* ── DESIGN TOKENS ───────────────────────────────────────────── */
/* Card */
.card{background:var(--s1);border:1px solid var(--b1);border-radius:var(--rlg);overflow:hidden;transition:border-color .2s,box-shadow .2s}
.card-hdr{padding:13px 18px;border-bottom:1px solid var(--b1);display:flex;align-items:center;justify-content:space-between}
.card-title{font-family:var(--fd);font-size:13px;font-weight:600;display:flex;align-items:center;gap:7px}
.card-bar{width:3px;height:14px;border-radius:2px;background:var(--ac);flex-shrink:0}

/* Buttons */
.btn{display:inline-flex;align-items:center;gap:5px;padding:7px 14px;border-radius:var(--rmd);font-size:13px;font-weight:600;transition:all .2s var(--ease);white-space:nowrap}
.btn-p{background:linear-gradient(135deg,var(--ac),var(--ac2));color:#fff;box-shadow:0 2px 12px color-mix(in srgb,var(--ac) 35%,transparent)}.btn-p:hover{background:linear-gradient(135deg,var(--ac2),var(--ac2));transform:translateY(-1px);box-shadow:0 4px 20px color-mix(in srgb,var(--ac2) 45%,transparent)}
.btn-g{background:transparent;color:var(--tx2);border:1px solid var(--b2)}.btn-g:hover{background:var(--s2);color:var(--tx1);border-color:var(--b3)}
.btn-sm{padding:5px 11px;font-size:12px}.btn:disabled{opacity:.4;cursor:not-allowed}

/* Badges */
.badge{display:inline-flex;align-items:center;gap:4px;padding:2px 9px;border-radius:var(--rsm);font-size:11px;font-weight:600;border:1px solid}
.bd-ac{background:var(--acdim);color:var(--ac2);border-color:color-mix(in srgb,var(--ac) 25%,transparent)}
.bd-gn{background:var(--gdim);color:var(--green);border-color:rgba(16,185,129,.25)}
.bd-nt{background:rgba(255,255,255,.04);color:var(--tx2);border-color:var(--b2)}
.bd-or{background:rgba(249,115,22,.1);color:#f97316;border-color:rgba(249,115,22,.25)}
.bd-gd{background:rgba(245,158,11,.12);color:var(--gold);border-color:rgba(245,158,11,.3)}
.potd-crown{font-size:13px;display:inline-flex;align-items:center;color:var(--gold);flex-shrink:0;cursor:default;margin-left:1px}
/* Only the leaderboard cell holding the crown drops its overflow:hidden so the 👑 tooltip
   escapes the row (other cells keep clipping; .lb-pn keeps its own ellipsis; .lb-wrap keeps
   its mobile overflow-x:auto untouched). */
.lb-ri:has(.potd-crown){overflow:visible}
.prof-id{display:inline-flex;align-items:center;font-size:10px;color:var(--tx3);font-weight:600;letter-spacing:.3px;background:rgba(255,255,255,.04);border:1px solid var(--b2);border-radius:var(--rsm);padding:2px 8px}



/* Loading */
.spin{width:18px;height:18px;border:2px solid var(--b2);border-top-color:var(--ac);border-radius:50%;animation:sp .7s linear infinite;flex-shrink:0}
@keyframes sp{to{transform:rotate(360deg)}}
.ld{display:flex;align-items:center;justify-content:center;gap:10px;padding:48px 20px;color:var(--tx3);font-size:13px}
.empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;padding:48px 20px;color:var(--tx3);text-align:center}
.empty-ico{font-size:34px;opacity:.35}.empty-t{font-size:15px;font-weight:600;color:var(--tx2)}.empty-s{font-size:13px}
.err-box{background:var(--rdim);border:1px solid rgba(239,68,68,.2);border-radius:var(--rmd);padding:11px 15px;font-size:13px;color:#fca5a5}

/* Toast */
.toast-wrap{position:fixed;bottom:18px;left:50%;transform:translateX(-50%);z-index:999;display:flex;flex-direction:column;gap:5px;pointer-events:none}
.toast{background:var(--s3);border:1px solid var(--b2);border-radius:var(--rlg);padding:9px 17px;font-size:13px;font-weight:500;box-shadow:0 8px 32px rgba(0,0,0,.6);animation:ti .2s var(--ease);white-space:nowrap}
.toast.ok{border-color:rgba(16,185,129,.3);color:var(--green)}.toast.err{border-color:rgba(239,68,68,.3);color:var(--red)}
@keyframes ti{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

/* ── LEADERBOARD TABLE ───────────────────────────────────────── */
.lb-wrap{overflow-x:auto}
.lb-tbl{width:100%;border-collapse:collapse}
.lb-tbl th{padding:9px 13px;font-size:10px;font-weight:700;letter-spacing:.8px;text-transform:uppercase;color:var(--tx3);text-align:left;border-bottom:1px solid var(--b1);white-space:nowrap;background:var(--s1)}
.lb-tbl td{border-bottom:1px solid var(--b1);vertical-align:middle}
.lb-tbl tbody tr:last-child td{border-bottom:none}
.lb-ri{display:flex;align-items:center;padding:10px 13px;cursor:pointer;transition:background .1s;overflow:hidden}
.lb-tbl tbody tr:hover .lb-ri{background:rgba(255,255,255,.04)}
.lb-tbl tr.r1 .lb-ri,.lb-tbl tr.r2 .lb-ri,.lb-tbl tr.r3 .lb-ri{background:transparent}
.lb-rk{width:48px;font-family:var(--fd);font-size:13px;font-weight:700;color:var(--tx3);flex-shrink:0}
.lb-rk.t1{font-size:17px;color:var(--gold)}.lb-rk.t2{font-size:15px;color:var(--t-sil)}.lb-rk.t3{font-size:15px;color:var(--t-bro)}
.lb-tc{width:40px;flex-shrink:0;display:flex}.lb-rc{width:58px;flex-shrink:0;font-size:11px;font-weight:600;color:var(--tx3)}
.lb-pc{flex:1;display:flex;align-items:center;gap:9px;min-width:0}
.lb-pn{font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lb-gc{width:65px;text-align:right;font-size:12px;color:var(--tx2);flex-shrink:0}
.lb-wlc{width:148px;flex-shrink:0;padding:0 8px}
.wls{display:flex;flex-direction:column;gap:3px}
.wlb{display:flex;height:4px;border-radius:2px;overflow:hidden;gap:1px}
.wlbw{background:var(--green);border-radius:2px;min-width:2px}.wlbl{background:var(--red);border-radius:2px;min-width:0}
.wln{display:flex;justify-content:space-between;font-size:10px;font-weight:600}
.wlnw{color:var(--green)}.wlnl{color:var(--red)}
.lb-wrc{width:72px;text-align:right;font-size:13px;font-weight:700;flex-shrink:0}
.lb-ec{width:142px;text-align:right;flex-shrink:0;padding-right:4px}
.em{font-family:var(--fd);font-size:16px;font-weight:700}.ep{font-size:11px;color:var(--tx3);margin-top:1px}
/* P1 mobile: drop secondary leaderboard columns (Region/Games/W-L) so Rank·Tier·Name·WR·ELO
   read without horizontal scroll below the full-table width (~689px). Desktop untouched. */
@media(max-width:680px){
  .lb-tbl th:nth-child(3),.lb-tbl td:nth-child(3),   /* Region  */
  .lb-tbl th:nth-child(5),.lb-tbl td:nth-child(5),   /* Games   */
  .lb-tbl th:nth-child(6),.lb-tbl td:nth-child(6){display:none}   /* W/L bar */
  .lb-tbl th:nth-child(7),.lb-tbl th:nth-child(8){width:auto!important} /* release fixed WR/ELO widths */
  .lb-ec .ep{display:none}   /* drop "/ X peak" subtext, keep the rating → fits ~320px */
}

/* ── HERO HOME ───────────────────────────────────────────────── */
/* Fond transparent : le hero laisse voir le fond global de la page (--bg0 + grain/vignette
   + couche image #bg-legends (5 légendes backdrop en haut sous le menu), z-index:-1). L'ancien canvas #constellation a été retiré. */
.hero{background:transparent;border:none;border-radius:var(--rxl);padding:40px 32px;margin-bottom:20px;position:relative;text-align:center;overflow:visible;isolation:auto}
/* Halo/glow radial du hero retiré (demande visuelle) — le fond global de la page reste le fond du hero. */
/* Icône d'arme — contain (jamais rognée) + léger padding, PARTOUT (page Weapons, breakdown profil, split légende). */
.wpn-ic{object-fit:contain;padding:2px;box-sizing:border-box}
/* ── Bande d'avatars de légendes (marquee auto-scroll, 2 rangées sens opposés) — compact + hover ── */
/* Clip HORIZONTAL uniquement, sur les rangées (overflow-x:clip — contrairement à `hidden`, `clip`
   N'impose PAS `auto` sur l'autre axe) → le scroll infini reste clippé (aucun débord de page) tandis que
   overflow-y:visible laisse le tooltip du nom + le halo DÉBORDER verticalement au survol → 100% visibles,
   jamais rognés. (Le masque de fondu des bords est retiré : son mask-clip:border-box re-rognait le tooltip.) */
.leg-marquee{display:flex;flex-direction:column;gap:6px;margin:0 0 20px;padding:8px 0}
.leg-mq-row{position:relative;overflow-x:clip;overflow-y:visible}
.leg-mq-track{display:flex;gap:10px;width:max-content;will-change:transform}
.leg-mq-a{animation:legMqRight 64s linear infinite}          /* rangée 1 → droite */
.leg-mq-b{animation:legMqLeft 64s linear infinite}           /* rangée 2 → gauche */
.leg-marquee:hover .leg-mq-track{animation-play-state:paused} /* pause au survol */
@keyframes legMqRight{from{transform:translateX(-50%)}to{transform:translateX(0)}}
@keyframes legMqLeft{from{transform:translateX(0)}to{transform:translateX(-50%)}}
.leg-mq-item{position:relative;flex:0 0 auto;width:32px;height:32px;border-radius:10px;background:var(--s2);transition:transform .2s var(--ease-out),box-shadow .2s var(--ease-out)}
.leg-mq-item img{width:100%;height:100%;object-fit:cover;display:block;border-radius:inherit}
.leg-mq-item:hover{transform:scale(1.22);box-shadow:0 4px 18px var(--acglow),0 0 20px var(--acglow);z-index:3} /* sans cadre : glow/halo accent + scale conservés (le carré/bordure violet retiré) */
.leg-mq-name{position:absolute;bottom:calc(100% + 6px);left:50%;transform:translateX(-50%) translateY(4px);background:var(--s1);border:1px solid var(--b3);color:var(--tx1);font-size:10.5px;font-weight:600;font-family:var(--fb);letter-spacing:.2px;padding:3px 8px;border-radius:7px;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .15s,transform .15s;box-shadow:0 6px 18px rgba(0,0,0,.45);z-index:4}
.leg-mq-item:hover .leg-mq-name{opacity:1;transform:translateX(-50%) translateY(0)}
@media(max-width:560px){.leg-mq-item{width:28px;height:28px;border-radius:9px}.leg-marquee{gap:5px;padding:6px 0}}
@media (prefers-reduced-motion:reduce){.leg-mq-track{animation:none}.leg-mq-item{transition:box-shadow .2s}}
.hero-logo{display:block;margin:0 auto 22px;height:clamp(56px,10vw,78px);width:auto;filter:drop-shadow(0 0 12px var(--acglow));position:relative;z-index:1;cursor:pointer}
.hero-hint{font-size:13px;color:var(--tx3);margin:12px 0 2px;position:relative;z-index:1}
.hero-srch-rel{position:relative;max-width:500px;margin:0 auto 14px;z-index:500}
/* Search bar hero épurée : coins arrondis (--rlg ≈ 12px), bordure fine discrète, fond sombre
   translucide (suit le thème mat), loupe à gauche + placeholder gris. Focus = bordure violette
   subtile + glow violet doux. IDs/handlers inchangés (#heroIn, heroKeyNav, heroSearch, #heroSug). */
.hero-srch{display:flex;align-items:center;gap:10px;background:color-mix(in srgb,var(--bg2) 82%,transparent);border:1px solid var(--b2);border-radius:var(--rlg);padding:3px 16px;transition:border-color .2s ease,box-shadow .2s ease,background .2s ease}
/* Focus DISCRET (pas de rectangle net/saturé) : bordure violette très subtile + glow doux diffus, aucun anneau franc. */
.hero-srch:focus-within{border-color:color-mix(in srgb,var(--ac) 32%,transparent);box-shadow:0 0 16px color-mix(in srgb,var(--ac) 13%,transparent);background:color-mix(in srgb,var(--bg2) 90%,transparent)}
/* #heroIn : aucun outline/box-shadow agressif au focus (l'indicateur discret vit sur .hero-srch:focus-within ci-dessus).
   L'id (spécificité 1,0,1) neutralise la règle globale input:focus-visible{outline...}. Enter → heroSearch inchangé. */
#heroIn:focus,#heroIn:focus-visible{outline:none;box-shadow:none}
.hero-srch-ic{display:flex;align-items:center;color:var(--tx3);flex-shrink:0;transition:color .2s ease}
.hero-srch:focus-within .hero-srch-ic{color:var(--ac2)}
.hero-srch input{flex:1;background:none;border:none;outline:none;font-size:15px;color:var(--tx1);padding:10px 0}.hero-srch input::placeholder{color:var(--tx3)}
.chips{display:flex;gap:5px;flex-wrap:wrap;justify-content:center;position:relative;z-index:1}
.chip{background:var(--bg4);border:1px solid var(--b2);color:var(--tx2);padding:3px 11px;border-radius:var(--rfl);font-size:12px;font-weight:500;cursor:pointer;transition:all .12s}
.chip:hover{border-color:var(--b3);color:var(--tx1);background:var(--s2)}
.chip-act{background:var(--acdim);border-color:var(--ba);color:var(--ac2);font-weight:600}

/* Favourites */
.fav-list{display:flex;gap:7px;flex-wrap:wrap;padding:13px}
.fav-c{display:flex;align-items:center;gap:7px;background:var(--s2);border:1px solid var(--b2);border-radius:var(--rfl);padding:5px 12px 5px 5px;cursor:pointer;transition:all .12s;font-size:13px;font-weight:500;color:var(--tx2)}
.fav-c:hover{border-color:var(--b3);color:var(--tx1)}
.fav-av{width:22px;height:22px;border-radius:50%;overflow:hidden;display:flex;align-items:center;justify-content:center;font-size:8px;font-weight:800;color:var(--tx1);flex-shrink:0}
.fav-x{margin-left:3px;color:var(--tx4);font-size:13px;line-height:1;transition:color .12s}.fav-x:hover{color:var(--red)}

/* Suggest */
.sug-box{position:absolute;top:calc(100% + 3px);left:0;right:0;background:var(--s1);border:1px solid var(--b3);border-radius:var(--rlg);overflow-y:auto;max-height:340px;z-index:200;box-shadow:0 24px 70px rgba(0,0,0,.6),0 0 0 1px color-mix(in srgb,var(--ac) 12%,transparent);padding:8px;animation:cmdkPop .18s var(--ease-out)}
/* Lot 1 : lignes de suggestion alignées sur .cmdk-item (pills arrondies, gap 12, hover accent) */
.sug-item{display:flex;align-items:center;gap:12px;padding:9px 11px;cursor:pointer;border-radius:var(--rmd)}
.sug-item:hover,.sug-item.active,.sug-item:focus{background:var(--acdim);outline:none}
.sug-item:hover .cmdk-enter,.sug-item.active .cmdk-enter{opacity:1}

/* ── PROFILE ─────────────────────────────────────────────────── */
.prof-hdr{background:linear-gradient(135deg,var(--s2),var(--s1));border:1px solid color-mix(in srgb,var(--ac) 18%,transparent);border-radius:var(--rxl);padding:22px;display:flex;flex-direction:column;gap:16px;margin-bottom:16px;position:relative;overflow:visible}
.prof-hdr::before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse 50% 70% at 0% 50%,color-mix(in srgb,var(--ac) 10%,transparent),transparent);opacity:1;pointer-events:none}
.clan-hdr{border-color:rgba(249,115,22,.18)}
.clan-hdr::before{background:radial-gradient(ellipse 60% 80% at 0% 50%,rgba(249,115,22,.06),transparent)}
.ph-top{display:flex;align-items:flex-start;gap:18px;position:relative;z-index:1}
.prof-av{width:74px;height:74px;border-radius:var(--rlg);border:2px solid color-mix(in srgb,var(--ac) 40%,transparent);overflow:hidden;flex-shrink:0;background:var(--bg4);box-shadow:0 0 24px color-mix(in srgb,var(--ac) 30%,transparent)}
.prof-av img{width:100%;height:100%;object-fit:cover}
.ph-info{flex:1;min-width:0;position:relative;z-index:1}
.prof-name{font-family:var(--fd);font-size:22px;font-weight:700;letter-spacing:-.5px;margin-bottom:8px}
.prof-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:8px}
/* Sujet 1 — tag clan <clan_name> près du pseudo. niv : 1 gris / 2 bleu / 3 violet ; n° (niv3) = jaune + glow doux. */
.clan-tag{display:inline-flex;align-items:center;max-width:210px;font-family:var(--fd);font-weight:700;font-size:14px;letter-spacing:-.2px;cursor:pointer;color:var(--clan1);transition:filter .15s ease,color .15s ease}
.clan-tag .ct-nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:150px}
.clan-tag:hover{filter:brightness(1.2)}
.clan-tag.niv2{color:var(--clan2)}
.clan-tag.niv3{color:var(--clan3)}
.clan-tag .ct-rank{margin-left:5px;font-weight:800;color:var(--gold);text-shadow:0 0 8px color-mix(in srgb,var(--gold) 55%,transparent),0 0 2px color-mix(in srgb,var(--gold) 45%,transparent)}
.clan-tag:focus-visible{outline:2px solid var(--ac2);outline-offset:2px;border-radius:4px}
/* Sujet 1 — light theme : tiers assombris pour le contraste sur fond clair */
[data-theme="light"]{--clan1:#5c5878;--clan2:#1d4ed8;--clan3:#5b21b6}
/* Sujet 3 — ligne discrète sous le pseudo : drapeau région + ID */
.prof-sub{display:flex;align-items:center;gap:8px;margin:-2px 0 8px}
.rgn-flag{display:inline-flex;line-height:0}
.rgn-flag svg{width:22px;height:auto;border-radius:3px;display:block;box-shadow:0 0 0 1px rgba(255,255,255,.14)}
.rgn-code{display:inline-flex;align-items:center;font-size:10px;font-weight:700;letter-spacing:.4px;color:var(--tx2);background:rgba(255,255,255,.05);border:1px solid var(--b2);border-radius:var(--rsm);padding:1px 6px}
/* Sujet 1 — sélecteur de régions custom (drapeaux SVG ; un <option> natif ne peut pas contenir de SVG) */
.reg-dd{position:relative;display:inline-block}
.reg-dd-btn{display:inline-flex;align-items:center;gap:8px;background:var(--s1);border:1px solid var(--b2);color:var(--tx2);padding:6px 11px;border-radius:var(--rmd);font-size:13px;font-family:inherit;cursor:pointer;min-width:158px;transition:border-color .15s}
.reg-dd-btn:hover{border-color:var(--b3)}
.reg-dd-cur{display:inline-flex;align-items:center;gap:8px;flex:1;min-width:0}
.reg-dd-cur span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.reg-dd-chev{flex-shrink:0;opacity:.65;transition:transform .18s}
.reg-dd-btn[aria-expanded="true"] .reg-dd-chev{transform:rotate(180deg)}
.reg-dd-menu{position:absolute;top:calc(100% + 5px);left:0;min-width:184px;background:var(--s1);border:1px solid var(--b2);border-radius:var(--rmd);box-shadow:0 14px 36px rgba(0,0,0,.5);padding:5px;z-index:40;display:none;max-height:330px;overflow-y:auto}
.reg-dd-menu.open{display:block}
.reg-dd-item{display:flex;align-items:center;gap:8px;padding:7px 9px;border-radius:var(--rsm);font-size:13px;color:var(--tx2);cursor:pointer;transition:background .12s,color .12s}
.reg-dd-item:hover,.reg-dd-item:focus-visible{background:var(--s2);color:var(--tx1);outline:none}
.reg-dd-item.sel{color:var(--ac2);background:var(--acdim)}
.reg-dd .rgn-flag svg,.reg-dd-cur .rgn-flag svg{width:20px;height:auto;border-radius:3px;display:block}
.reg-globe svg{width:19px;height:16px;display:block;color:var(--tx3)}
.reg-dd .rgn-code{font-size:9px;min-width:20px;justify-content:center}
/* Sujet 2 — recherche joueur dans le roster + pagination 15/page */
.roster-search{background:var(--bg3);border:1px solid var(--b2);border-radius:8px;padding:5px 10px;font-size:12px;color:var(--tx1);outline:none;max-width:150px}
.roster-search:focus{border-color:var(--b3)}
.roster-pager{display:flex;align-items:center;justify-content:center;gap:14px;padding:12px}
.rp-arrow{width:32px;height:32px;border-radius:8px;background:var(--s2);border:1px solid var(--b2);color:var(--tx1);font-size:18px;line-height:1;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:border-color .15s ease,background .15s ease}
.rp-arrow:hover:not([disabled]){border-color:var(--b3);background:var(--s3)}
.rp-arrow[disabled]{opacity:.35;cursor:default}
.rp-ind{font-family:var(--fd);font-weight:700;font-size:13px;color:var(--tx2);font-variant-numeric:tabular-nums;min-width:54px;text-align:center}
.ph-level{flex-shrink:0;text-align:center;padding:8px 16px;background:rgba(255,255,255,.03);border:1px solid var(--b1);border-radius:var(--rmd);position:relative;z-index:1}
.dairLvl{font-family:var(--fd);font-size:1.8rem;font-weight:700;color:var(--ac2);letter-spacing:-1px;line-height:1}
.ph-level-lbl{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.8px;color:var(--tx3);margin-top:2px}
/* Bannière de rang (droite) — élément fort, teintée au tier via --tc (= var(--t-*)). Level = sous-élément discret. */
.ph-rank{flex-shrink:0;width:136px;align-self:stretch;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;text-align:center;padding:16px 14px;border-radius:var(--rlg);position:relative;z-index:1;background:linear-gradient(165deg,color-mix(in srgb,var(--tc) 20%,transparent),color-mix(in srgb,var(--tc) 5%,transparent));border:1px solid color-mix(in srgb,var(--tc) 42%,transparent);box-shadow:0 0 30px color-mix(in srgb,var(--tc) 20%,transparent),inset 0 1px 0 rgba(255,255,255,.06)}
.ph-rank .rank-img{filter:drop-shadow(0 5px 14px color-mix(in srgb,var(--tc) 50%,transparent))}
.ph-rank-name{font-family:var(--fd);font-size:1.12rem;font-weight:700;letter-spacing:-.2px;line-height:1.05;color:var(--tc)}
.ph-rank-lvl{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.7px;color:var(--tx3)}
.ph-rank-lvl b{font-family:var(--fd);color:var(--tx1);font-size:13px;font-weight:800;letter-spacing:0;margin-left:2px}
.ph-rank.unranked{background:rgba(255,255,255,.03);box-shadow:none;border-color:var(--b1)}
.ph-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center;padding-top:14px;border-top:1px solid var(--b1);position:relative;z-index:1}
/* Header profil — boutons d'action unifiés : base ghost, .primary = accent (action principale "Set as My Profile"), .my-prof-set = état validé vert */
.ph-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:5px 11px;border-radius:var(--rmd);font-size:12px;font-weight:600;min-height:34px;background:transparent;color:var(--tx2);border:1px solid var(--b2);cursor:pointer;transition:all .2s;white-space:nowrap}
.ph-btn:hover{background:var(--s2);color:var(--tx1);border-color:var(--b3);transform:translateY(-1px)}
.ph-btn.primary{background:color-mix(in srgb,var(--ac) 12%,transparent);border-color:color-mix(in srgb,var(--ac) 25%,transparent);color:var(--ac2)}
.ph-btn.primary:hover{background:color-mix(in srgb,var(--ac) 22%,transparent);border-color:var(--ba);color:var(--ac2)}
.ph-btn.my-prof-set{background:var(--gdim);border-color:rgba(16,185,129,.4);color:var(--green)}
.ph-btn.my-prof-set:hover{background:var(--gdim);border-color:rgba(16,185,129,.55);color:var(--green)}
.pstats{display:grid;grid-template-columns:repeat(auto-fit,minmax(100px,1fr));gap:1px;background:var(--b1);border-radius:var(--rmd);overflow:visible;margin-bottom:16px}
.psc{background:var(--s1);padding:12px 14px;transition:background .15s}.psc:hover{background:var(--s2)}
.psc:first-child{border-radius:var(--rmd) 0 0 var(--rmd)}.psc:last-child{border-radius:0 var(--rmd) var(--rmd) 0}
.psl{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.8px;color:var(--tx3);margin-bottom:3px}
.psv{font-family:var(--fd);font-size:18px;font-weight:700}.psv.gn{color:var(--green)}.psv.rd{color:var(--red)}.psv.ac{color:var(--ac2)}.psv.gd{color:var(--gold)}

/* Ranked card */
.rc-card{background:var(--s1);border:1px solid var(--b1);border-radius:var(--rxl);overflow:hidden;margin-bottom:16px}
.rc-hdr{padding:18px 22px;display:flex;align-items:center;gap:14px;border-bottom:1px solid var(--b1)}
.rc-tier-name{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.8px;margin-bottom:3px}
.rc-elo{font-family:var(--fd);font-size:2rem;font-weight:700;letter-spacing:-1px;color:var(--ac2);line-height:1}
.rc-pk{font-size:13px;color:var(--tx3);margin-left:6px}
.rc-wl{padding:13px 22px;border-bottom:1px solid var(--b1)}
.rc-wlb{display:flex;height:7px;border-radius:4px;overflow:hidden;gap:2px;margin-bottom:7px}
.rc-wlb .wlbw{border-radius:4px}.rc-wlb .wlbl{border-radius:4px}
.rc-wln{display:flex;justify-content:space-between;font-size:12px;font-weight:600}
.rc-glory{padding:13px 22px;display:flex;gap:18px;flex-wrap:wrap;border-bottom:1px solid var(--b1)}
.gi-l{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.8px;color:var(--tx3);margin-bottom:2px}
.gi-v{font-family:var(--fd);font-size:15px;font-weight:700;color:var(--gold)}.gi-v.nt{color:var(--tx1)}


/* Legends table */
.leg-t{width:100%;border-collapse:collapse}
.leg-t th{padding:9px 12px;font-size:10px;font-weight:700;letter-spacing:.8px;text-transform:uppercase;color:var(--tx3);text-align:left;border-bottom:1px solid var(--b1);white-space:nowrap;cursor:pointer;user-select:none;transition:color .12s}
.leg-t th:hover{color:var(--tx2)}.leg-t th.srt{color:var(--ac2)}
.leg-t td{padding:9px 12px;border-bottom:1px solid var(--b1);vertical-align:middle;font-size:13px}
.leg-t tr:last-child td{border-bottom:none}.leg-t tbody tr:hover td{background:rgba(255,255,255,.02)}
.lc{display:flex;align-items:center;gap:9px}
.lic{width:30px;height:30px;border-radius:8px;overflow:hidden;flex-shrink:0;background:var(--bg4);display:flex;align-items:center;justify-content:center;font-size:13px}
.lic img{width:100%;height:100%;object-fit:cover}
.ln{font-weight:600}.lw{font-size:11px;color:var(--tx3);margin-top:1px}


/* Gadgets */
.gad-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:10px;padding:16px}
.gad-c{background:var(--s2);border:1px solid var(--b1);border-radius:var(--rlg);padding:14px 10px;text-align:center;transition:all .2s}
.gad-i{font-size:26px;margin-bottom:7px;display:block}
.gad-l{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.8px;color:var(--tx3);margin-bottom:5px}
.gad-v{font-family:var(--fd);font-size:18px;font-weight:700}.gad-s{font-size:11px;color:var(--tx3);margin-top:2px}

/* Tabs */
.tabs-bar{display:flex;gap:2px;background:var(--bg3);padding:3px;border-radius:var(--rmd);width:fit-content}
.tb{padding:5px 14px;border-radius:6px;font-size:13px;font-weight:500;color:var(--tx2);cursor:pointer;transition:all .12s;border:1px solid transparent}
.tb:hover{color:var(--tx1)}.tb.active{background:var(--s2);color:var(--tx1);border-color:var(--b2);font-weight:600;box-shadow:0 1px 3px rgba(0,0,0,.4)}

/* Section header */
.sh{display:flex;align-items:center;justify-content:space-between;margin-bottom:13px}
.sh-t{font-family:var(--fd);font-size:14px;font-weight:700;display:flex;align-items:center;gap:8px}
.sh-bar{width:3px;height:16px;border-radius:2px;background:var(--ac);flex-shrink:0}

/* Pagination */
.pagination{display:flex;align-items:center;gap:3px;padding:13px;justify-content:center;flex-wrap:wrap}
.pg-btn{width:33px;height:33px;display:flex;align-items:center;justify-content:center;border-radius:var(--rmd);font-size:13px;font-weight:600;color:var(--tx2);background:var(--s2);border:1px solid var(--b1);cursor:pointer;transition:all .12s}
.pg-btn:hover{border-color:var(--b3);color:var(--tx1)}.pg-btn.active{background:var(--ac);border-color:var(--ac);color:#fff}.pg-btn:disabled{opacity:.3;cursor:not-allowed}
/* Input "aller à la page N" (barres haut/bas) : masque les spinners natifs des
   <input type=number> (webkit via pseudo-éléments, Firefox via appearance:textfield)
   et aligne la hauteur/typo sur .pg-btn — le reste du style (fond/bordure vars thème)
   vient de l'inline dans renderPagNew. */
.pagination input[type="number"]{appearance:textfield;-moz-appearance:textfield;height:33px;text-align:center;font-weight:600}
.pagination input[type="number"]::-webkit-inner-spin-button,
.pagination input[type="number"]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}

/* Legends page */
.leg-stat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(185px,1fr));gap:10px}
.lsg-c{background:var(--s1);border:1px solid var(--b1);border-radius:var(--rlg);padding:13px;transition:all .2s}
.lsg-h{display:flex;align-items:center;gap:8px;margin-bottom:9px}
.lsg-ico{width:36px;height:36px;border-radius:9px;overflow:hidden;flex-shrink:0;background:var(--bg4);display:flex;align-items:center;justify-content:center;font-size:15px}
.lsg-ico img{width:100%;height:100%;object-fit:cover}
.lsg-n{font-weight:700;font-size:13px}.lsg-w{font-size:11px;color:var(--tx3)}
.lsg-r{display:flex;justify-content:space-between;font-size:12px;margin-top:5px}



/* ── COMPARE PAGE ───────────────────────────────────────────────── */
.cmp-search-grid{display:grid;grid-template-columns:1fr auto 1fr;gap:16px;align-items:start;margin-bottom:20px}
.cmp-search-card{background:var(--s1);border:1px solid var(--b1);border-radius:var(--rxl);padding:18px;display:flex;flex-direction:column;gap:12px;transition:border-color .2s}
.cmp-search-card.loaded{border-color:var(--b3)}
.cmp-search-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--tx3)}
.cmp-avatar-preview{width:64px;height:64px;border-radius:var(--rmd);overflow:hidden;background:var(--bg2);border:2px solid var(--b2);margin:0 auto;flex-shrink:0}
.cmp-avatar-preview img{width:100%;height:100%;object-fit:cover}
.cmp-av-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:var(--tx4)}
.cmp-name-preview{text-align:center;font-weight:700;font-size:14px;min-height:20px;color:var(--tx1)}
.cmp-input-wrap{display:flex;align-items:center;gap:8px;background:var(--bg2);border:1px solid var(--b2);border-radius:var(--rmd);padding:8px 12px;transition:border-color .15s}
.cmp-input-wrap:focus-within{border-color:var(--ac)}
.cmp-input-wrap svg{color:var(--tx4);flex-shrink:0}
.cmp-input{flex:1;background:none;border:none;color:var(--tx1);font-size:13px;outline:none}
.cmp-vs{display:flex;align-items:center;justify-content:center;padding-top:80px}
.cmp-vs-badge{font-family:var(--fd);font-size:22px;font-weight:900;color:var(--ac2);background:var(--acdim);border:1px solid var(--b3);border-radius:50%;width:52px;height:52px;display:flex;align-items:center;justify-content:center}

/* Compare results — dual card grid */
.cmp-grid{display:grid;grid-template-columns:1fr 1fr;gap:0;border:1px solid var(--b1);border-radius:var(--rxl);overflow:hidden}
.cmp-player-header{display:flex;align-items:center;gap:12px;padding:16px;background:var(--s2);border-bottom:2px solid var(--b2)}


.cmp-stat-val{font-family:var(--fd);font-size:15px;font-weight:700;transition:color .2s}
.cmp-stat-val.win{color:var(--green)}
.cmp-stat-val.lose{color:var(--red)}
.cmp-stat-val.tie{color:var(--tx2)}


@media(max-width:640px){
  .cmp-search-grid{grid-template-columns:1fr;gap:10px}
  .cmp-vs{padding-top:0;padding-bottom:4px}
  .cmp-vs-badge{width:40px;height:40px;font-size:16px}
  .cmp-grid{grid-template-columns:1fr 1fr}
  .cmp-stat-val{font-size:13px}
}

/* ── NAME HISTORY BUTTON + DROPDOWN ─────────────────────────────── */
.name-hist-btn{background:none;border:1px solid var(--b2);border-radius:var(--rsm);padding:2px 9px;font-size:11px;font-weight:500;color:var(--tx3);cursor:pointer;display:flex;align-items:center;gap:4px;transition:background .15s,color .15s;line-height:1.6}
.name-hist-btn:hover{background:var(--bg3);color:var(--tx2)}
.nh-dropdown{position:absolute;top:calc(100% + 4px);left:0;background:var(--bg2);border:1px solid var(--b2);border-radius:var(--rmd);padding:6px;z-index:200;min-width:150px;display:none;flex-direction:column;gap:3px;box-shadow:0 8px 24px rgba(0,0,0,.4)}
.nh-dropdown.open{display:flex}
.nh-chip{background:var(--bg3);border:1px solid var(--b3);border-radius:var(--rfl);padding:4px 10px;font-size:12px;font-weight:500;color:var(--tx2);white-space:nowrap}
/* ── NEWS CARDS ──────────────────────────────────────────────────── */
.news-card{display:flex;flex-direction:column;border-radius:var(--rmd);border:1px solid var(--b2);background:var(--s1);overflow:hidden;text-decoration:none;color:inherit;transition:border-color .2s,transform .15s}
.news-card:hover{border-color:var(--b3);transform:translateY(-2px)}
.news-img{width:100%;aspect-ratio:16/9;overflow:hidden;background:var(--bg3)}
.news-img img{width:100%;height:100%;object-fit:cover;display:block}
.news-body{padding:10px 12px;display:flex;flex-direction:column;gap:4px;flex:1}
.news-cat{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.8px;color:var(--ac2)}
.news-title{font-size:13px;font-weight:600;color:var(--tx1);line-height:1.35}
.news-date{font-size:11px;color:var(--tx4);margin-top:auto}
/* ── DEV BADGE ───────────────────────────────────────────────────── */
.dev-badge{display:inline-block;width:22px;height:22px;object-fit:contain;margin-left:5px;vertical-align:middle;cursor:default;position:relative;border-radius:4px}

/* ── COOKIE CONSENT BANNER ──────────────────────────────────────── */
.cookie-banner{position:fixed;bottom:0;left:0;right:0;z-index:998;padding:16px;animation:cookieUp .35s var(--ease)}
@keyframes cookieUp{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:none}}
@keyframes cookieDown{from{opacity:1;transform:none}to{opacity:0;transform:translateY(20px)}}
.cookie-inner{max-width:760px;margin:0 auto;background:var(--s2);border:1px solid var(--b2);border-radius:var(--rxl);padding:16px 20px;display:flex;align-items:center;gap:16px;box-shadow:0 -8px 40px rgba(0,0,0,.5);flex-wrap:wrap}
.cookie-icon{font-size:28px;flex-shrink:0}
.cookie-text{flex:1;min-width:220px}
.cookie-title{font-family:var(--fd);font-size:14px;font-weight:700;margin-bottom:3px}
.cookie-desc{font-size:12px;color:var(--tx3);line-height:1.5}
.cookie-actions{display:flex;gap:8px;flex-shrink:0}
@media(max-width:640px){
  .cookie-inner{flex-direction:column;align-items:flex-start;text-align:left}
  .cookie-actions{width:100%}
  .cookie-actions .btn{flex:1;justify-content:center}
}

.scroll-top{position:fixed;bottom:18px;right:18px;width:36px;height:36px;border-radius:50%;background:var(--ac);color:#fff;display:flex;align-items:center;justify-content:center;font-size:16px;cursor:pointer;opacity:0;transform:scale(.7);transition:all .2s var(--ease);box-shadow:0 0 16px var(--acglow);z-index:90}
.scroll-top.vis{opacity:1;transform:scale(1)}.scroll-top:hover{transform:scale(1.1)!important}

/* Mobile */
@media(max-width:768px){
  .content{padding:13px}
  .hero{padding:26px 16px}
  .ph-top{flex-direction:column;align-items:flex-start}
  .ph-rank{width:100%;flex-direction:row;justify-content:flex-start;gap:16px;align-self:auto}
  .cmp-grid{grid-template-columns:1fr}

  .topbar{padding:0 13px}
}

/* Language options (rendered inside the settings popover — see SETTINGS POPOVER) */
.lang-opt{display:flex;align-items:center;gap:9px;padding:8px 11px;cursor:pointer;font-size:13px;color:var(--tx2);transition:background .1s;}
.lang-opt:hover{background:var(--sh);color:var(--tx1);}
.lang-opt.active{color:var(--ac2);background:var(--acdim);}
.lang-opt img{width:18px;height:13px;border-radius:2px;object-fit:cover;flex-shrink:0;}

/* Utils */
.c-gn{color:var(--green)}.c-rd{color:var(--red)}.c-gd{color:var(--gold)}.c-ac{color:var(--ac2)}.c-dim{color:var(--tx3)}.fw7{font-weight:700}.fd{font-family:var(--fd)}

/* RANK BANNER IMAGES */
.rank-img{width:28px;height:38px;object-fit:contain;flex-shrink:0;}
.rank-img.lg{width:52px;height:70px;}
.rank-img.xl{width:64px;height:86px;}
.rank-img.sm{width:15px;height:20px;}
/* ── LIGHT THEME ─────────────────────────────────────────────────── */
[data-theme="light"]{
  /* Backgrounds — warm white/slate palette, no blue-grey cast */
  --bg0:#f4f5f9;--bg1:#ffffff;--bg2:#f8f9fb;--bg3:#eff0f6;--bg4:#e3e5f0;
  /* Surface layers */
  --s1:#ffffff;--s2:#f8f9fb;--s3:#f0f1f8;--s4:#e8eaf4;--sh:rgba(180,185,220,.35);
  /* Accent — violet adapté pour fond clair */
  --ac:#4f46e5;--ac2:#6366f1;--acdim:rgba(79,70,229,.08);--acglow:rgba(99,102,241,.18);
  /* Semantic */
  --green:#059669;--gdim:rgba(5,150,105,.08);
  --red:#dc2626;--rdim:rgba(220,38,38,.08);
  --gold:#b45309;--cyan:#0369a1;
  /* Tier colours — deeper for legibility on white */
  --t-tin:#52525b;--t-bro:#7c2d12;--t-sil:#475569;--t-gol:#92400e;
  --t-pla:#075985;--t-dia:#4c1d95;--t-val:#991b1b;
  /* Text — rich near-black hierarchy */
  --tx1:#111827;--tx2:#374151;--tx3:#6b7280;--tx4:#9ca3af;
  /* Borders */
  --b1:rgba(0,0,0,.07);--b2:rgba(0,0,0,.11);--b3:rgba(79,70,229,.22);--ba:rgba(99,102,241,.45);
}

/* ── Light theme overrides ─────────────────────────────────────── */
[data-theme="light"] body{background:var(--bg0);color:var(--tx1);}
[data-theme="light"] body::before{opacity:.022}                                   /* grain quasi-off sur fond clair */
[data-theme="light"] body::after{background:radial-gradient(130% 130% at 50% 0%,transparent 62%,rgba(20,16,45,.05) 100%)}
[data-theme="light"] ::-webkit-scrollbar-track{background:var(--bg2);}
[data-theme="light"] ::-webkit-scrollbar-thumb{background:var(--bg4);}

[data-theme="light"] .nav-item{color:var(--tx2);}
[data-theme="light"] .nav-item:hover{background:var(--s3);}
[data-theme="light"] .nav-item.active{background:var(--acdim);color:var(--ac);}

/* Topbar */
[data-theme="light"] .topbar{background:var(--bg1);border-bottom:1px solid var(--b1);box-shadow:0 1px 4px rgba(0,0,0,.04);}

/* Hero section */
[data-theme="light"] .hero{background:transparent;}

/* Cards */
[data-theme="light"] .card{background:var(--s1);border-color:var(--b1);box-shadow:0 1px 4px rgba(0,0,0,.04);}
[data-theme="light"] .card-hdr{background:var(--s2);border-color:var(--b1);}

/* Leaderboard */
[data-theme="light"] .lb-tbl th{background:var(--s2);color:var(--tx3);border-bottom:1px solid var(--b2);}
[data-theme="light"] .lb-tbl tbody tr:hover .lb-ri{background:rgba(78,70,229,.04);}
[data-theme="light"] .lb-tbl tbody tr:hover{background:rgba(78,70,229,.02);}

/* Profile */
[data-theme="light"] .prof-hdr{background:linear-gradient(135deg,#eef0fb,#f8f9ff);}
[data-theme="light"] .rc-card{background:linear-gradient(135deg,var(--s2),var(--s1));border-color:var(--b2);}
[data-theme="light"] .pstats-grid>div{background:var(--s2);border-color:var(--b1);}

/* Inputs */
[data-theme="light"] input[type="text"]{background:var(--s1)!important;color:var(--tx1)!important;border-color:var(--b2);}
[data-theme="light"] input[type="text"]:focus{border-color:var(--ba)!important;}
[data-theme="light"] select{background:var(--s1)!important;color:var(--tx2)!important;border-color:var(--b2)!important;}
[data-theme="light"] select option{background:var(--s1);}

/* Dropdowns & suggestions */
[data-theme="light"] .sug-box{background:var(--s1);border-color:var(--b3);box-shadow:0 24px 70px rgba(0,0,0,.6),0 0 0 1px color-mix(in srgb,var(--ac) 12%,transparent);}
[data-theme="light"] .sug-item:hover,[data-theme="light"] .sug-item.active{background:var(--acdim);}
[data-theme="light"] .settings-menu{background:var(--s1);border-color:var(--b2);box-shadow:0 8px 24px rgba(0,0,0,.10);}
[data-theme="light"] .lang-opt:hover{background:var(--s3);}

/* Toasts */
[data-theme="light"] .toast{background:var(--s1);border-color:var(--b2);color:var(--tx1);box-shadow:0 4px 16px rgba(0,0,0,.10);}

/* Chips & badges */
[data-theme="light"] .chip{background:var(--s3);border-color:var(--b2);color:var(--tx2);}
[data-theme="light"] .chip:hover{background:var(--s4);border-color:var(--b3);}
[data-theme="light"] .badge{background:var(--s3);}

/* Favourites & history */
[data-theme="light"] .fav-c{background:var(--s2);border-color:var(--b2);}
[data-theme="light"] .fav-c:hover{background:var(--s3);}

/* Gadgets */
[data-theme="light"] .gad-c{background:var(--s2);border-color:var(--b1);}

/* Legends grid */
[data-theme="light"] .lsg-c{background:var(--s1);border-color:var(--b1);}

/* Buttons */
[data-theme="light"] .btn-g{background:var(--s1);border-color:var(--b2);color:var(--tx2);}
[data-theme="light"] .btn-g:hover{background:var(--s3);border-color:var(--b3);}
[data-theme="light"] .ph-btn:not(.primary):not(.my-prof-set){background:var(--s1);border-color:var(--b2);color:var(--tx2);}
[data-theme="light"] .ph-btn:not(.primary):not(.my-prof-set):hover{background:var(--s3);border-color:var(--b3);color:var(--tx1);}

/* Compare inputs */
[data-theme="light"] .cmp-search-card{background:var(--s1);border-color:var(--b1);}
[data-theme="light"] .cmp-input-wrap{background:var(--s2);border-color:var(--b2);}
[data-theme="light"] .cmp-grid{border-color:var(--b1);}
[data-theme="light"] .cmp-player-header{background:var(--s2);}

/* Cookie banner */
[data-theme="light"] .cookie-inner{background:var(--s1);border-color:var(--b2);box-shadow:0 -4px 24px rgba(0,0,0,.10);}

/* Tabs */
[data-theme="light"] .tabs-bar{background:var(--s3);}
[data-theme="light"] .tb{color:var(--tx3);}
[data-theme="light"] .tb.active{background:var(--s1);color:var(--tx1);box-shadow:0 1px 4px rgba(0,0,0,.08);}

/* Scrollbar */
[data-theme="light"] ::-webkit-scrollbar-thumb{background:var(--bg4);}
[data-theme="light"] ::-webkit-scrollbar-thumb:hover{background:var(--b2);}

/* ── THEME TOGGLE BUTTON ─────────────────────────────────────────── */
.theme-btn{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:var(--rmd);background:var(--bg3);border:1px solid var(--b2);color:var(--tx2);font-size:16px;cursor:pointer;transition:all .2s var(--ease);flex-shrink:0;}
.theme-btn:hover{background:var(--s2);border-color:var(--b3);transform:scale(1.05);}

/* ── SEARCH HISTORY ──────────────────────────────────────────────── */

/* ── COPY LINK BUTTON ────────────────────────────────────────────── */
.copy-link-btn{display:inline-flex;align-items:center;gap:5px;padding:5px 11px;border-radius:var(--rmd);font-size:12px;font-weight:600;background:color-mix(in srgb,var(--ac) 12%,transparent);border:1px solid color-mix(in srgb,var(--ac) 25%,transparent);color:var(--ac2);cursor:pointer;transition:all .2s;white-space:nowrap;}
.copy-link-btn:hover{background:color-mix(in srgb,var(--ac) 22%,transparent);transform:translateY(-1px);}

/* ── SKELETON LOADERS ────────────────────────────────────────────── */
.skel{background:linear-gradient(90deg,var(--bg3) 25%,var(--bg4) 50%,var(--bg3) 75%);background-size:200% 100%;animation:shimmer 1.4s ease infinite;border-radius:4px;flex-shrink:0;}
@keyframes shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}
/* Sujet 2 — loader logo animé (light-sweep gauche→droite) : remplace le skeleton profil/clan */
.logo-loader{display:flex;align-items:center;justify-content:center;padding:72px 20px;min-height:220px}
.logo-loader .lg-wrap{position:relative;width:92px;height:92px}
.logo-loader img{width:100%;height:100%;object-fit:contain;opacity:.26;filter:drop-shadow(0 0 10px var(--acglow))}
.logo-loader .lg-sweep{position:absolute;inset:0;-webkit-mask:url('/assets/logo/logo.png') center/contain no-repeat;mask:url('/assets/logo/logo.png') center/contain no-repeat;background:linear-gradient(105deg,transparent 42%,rgba(255,255,255,.85) 50%,transparent 58%);background-size:220% 100%;animation:logoSweep 1.9s var(--ease) infinite}
@keyframes logoSweep{0%{background-position:135% 0}100%{background-position:-35% 0}}
@media(prefers-reduced-motion:reduce){.logo-loader .lg-sweep{animation:none;background-position:50% 0}}

/* ── TOOLTIPS ────────────────────────────────────────────────────── */
.tip{position:relative;cursor:help}
.tip::after{content:attr(data-tip);position:absolute;bottom:calc(100% + 8px);left:50%;transform:translateX(-50%);background:var(--bg2);border:1px solid color-mix(in srgb,var(--ac) 40%,transparent);color:var(--tx1);padding:6px 11px;border-radius:8px;font-size:11px;font-weight:500;white-space:nowrap;pointer-events:none;opacity:0;z-index:400;transition:opacity .18s;text-transform:none;letter-spacing:normal;line-height:1.5;box-shadow:0 4px 20px rgba(0,0,0,.75)}
.tip:hover::after,.tip:focus::after{opacity:1}
.tip:focus{outline:none}



/* ── LEGEND ROWS + ACCORDION ─────────────────────────────────────── */
.leg-rows{}
.lr-row{display:flex;align-items:center;gap:8px;padding:11px 14px;cursor:pointer;border-bottom:1px solid var(--b1);transition:background .15s;}
.lr-row:hover,.lr-row.open{background:var(--s2);}
.lr-row:last-child{border-bottom:none;}
.lr-acc{display:none;padding:12px 14px 14px;background:var(--bg3);border-bottom:1px solid var(--b2);}
.lr-acc.open{display:block;}
.lrc-img{width:44px;height:44px;flex-shrink:0;}
.lrc-name{flex:1;min-width:0;overflow:hidden;}
.lr-n{font-size:14px;font-weight:700;color:var(--tx1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.lr-rank{color:var(--tx4);font-weight:600;margin-right:5px;}
.lr-rank.top{color:var(--gold);font-weight:800;}
.lr-w{font-size:10px;color:var(--tx4);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.lrc-g,.lrc-wr,.lrc-lvl,.lrc-time,.lrc-ko{font-family:var(--fd);font-size:13px;font-weight:700;color:var(--tx1);font-variant-numeric:tabular-nums;white-space:nowrap;flex-shrink:0;text-align:right;}
.lrc-g{width:60px;}
.lrc-ko{width:60px;}
.lrc-ko-pg{font-family:var(--fb);font-size:9px;color:var(--tx4);font-weight:400;line-height:1.1;margin-top:1px;}
.card.ptab-weapons{overflow:visible}
.lrc-wr{width:54px;}
.lrc-time{width:146px;text-align:left;padding-left:30px;} /* durations left-align on a shared start edge (header label + values). The padding moves the WHOLE column — label stays flush with the values and breathes away from the right-aligned KOs column. Inner 116px fits "1,234h 56m 78s". */
.lrc-lvl{width:36px;}
.lrc-arr{width:16px;flex-shrink:0;text-align:center;font-size:10px;color:var(--tx4);transition:transform .2s;}
.lr-row.open .lrc-arr{transform:rotate(90deg);}
.lac-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:6px;margin-bottom:8px;}
.lac-stat{background:var(--s2);border-radius:6px;padding:7px 9px;}
.lac-lbl{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--tx4);margin-bottom:2px;}
.lac-val{font-family:var(--fd);font-size:14px;font-weight:700;line-height:1.2;}
.lac-sub{font-size:11px;color:var(--tx3);padding:0 2px;}
.lac-radar{margin-top:12px;padding:8px 2px 4px;display:flex;flex-direction:column;align-items:flex-start;}
.lac-ranked{margin-top:10px;padding-top:8px;border-top:1px solid var(--b2);}
/* Column header row above the legends list (same .lrc-* widths as data rows) */
.lr-hd,.lr-hd:hover{cursor:default;background:var(--s1);}
.lr-hd>div{font-family:var(--fb);font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--tx4);}
.lrc-cmpw{width:24px;flex-shrink:0;}
/* Per-row compare toggle (⚖) — lot 3 */
.lr-cmp{width:24px;flex-shrink:0;text-align:center;font-size:12px;color:var(--tx4);border-radius:6px;padding:2px 0;transition:all .15s;}
.lr-cmp:hover{color:var(--ac2);background:var(--acdim);}
.lr-cmp.on{color:var(--ac2);background:var(--acdim);box-shadow:0 0 0 1px var(--b3);}
/* Soft open animation (killed globally by prefers-reduced-motion) */
.lr-acc.open{animation:lacOpen .22s ease;}
@keyframes lacOpen{from{opacity:0;transform:translateY(-4px);}to{opacity:1;transform:none;}}
/* Radar + weapon breakdown side by side in the open accordion */
.lac-viz{display:flex;gap:24px;flex-wrap:wrap;align-items:flex-start;margin-top:12px;}
.lac-viz .lac-radar{margin-top:0;}
.lac-wpn{flex:1;min-width:230px;padding-top:8px;}
.lac-wrow{display:flex;align-items:center;gap:8px;margin-bottom:6px;}
.lac-wname{font-size:12px;font-weight:600;color:var(--tx1);width:92px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.lac-wbar{flex:1;max-width:140px;height:6px;border-radius:3px;background:var(--bg4);overflow:hidden;}
.lac-wfill{height:100%;background:linear-gradient(90deg,var(--ac),var(--ac2));border-radius:3px;}
.lac-wpct{font-family:var(--fd);font-size:11px;font-weight:700;color:var(--ac2);width:34px;text-align:right;font-variant-numeric:tabular-nums;}
.lac-wstat{font-size:11px;color:var(--tx3);white-space:nowrap;}
.lac-wmisc{font-size:11px;color:var(--tx3);margin-top:4px;}
/* Legend-vs-legend compare panel — lot 3 */
.pleg-cmp{padding:12px 14px;border-bottom:1px solid var(--b2);background:var(--bg3);}
.plc-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;}
.plc-close{background:none;border:1px solid var(--b2);border-radius:6px;color:var(--tx3);font-size:11px;padding:3px 9px;cursor:pointer;}
.plc-close:hover{color:var(--tx1);border-color:var(--b3);}
.plc-hds{display:flex;align-items:center;justify-content:center;gap:14px;margin-bottom:8px;}
.plc-hd{display:flex;align-items:center;gap:8px;font-weight:700;font-size:14px;color:var(--tx1);}
.plc-vs{font-size:10px;font-weight:800;color:var(--tx4);letter-spacing:1px;}
.plc-grid{max-width:420px;margin:0 auto;}
.plc-row{display:flex;align-items:center;padding:4px 0;border-bottom:1px solid var(--b1);}
.plc-row:last-child{border-bottom:none;}
.plc-v{flex:1;font-family:var(--fd);font-size:13px;font-weight:700;color:var(--tx1);font-variant-numeric:tabular-nums;}
.plc-v:first-child{text-align:right;padding-right:12px;}
.plc-v:last-of-type{text-align:left;padding-left:12px;}
.plc-l{width:110px;flex-shrink:0;text-align:center;font-size:10px;text-transform:uppercase;letter-spacing:.6px;color:var(--tx4);font-weight:700;}
.plc-best{color:var(--green);}
.plc-radar{display:flex;flex-direction:column;align-items:center;margin-top:10px;}
.plc-radar .lac-radar{align-items:center;}
.plc-leg{display:flex;gap:14px;align-items:center;font-size:11px;color:var(--tx2);margin-top:2px;}
.plc-ka,.plc-kb{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:4px;vertical-align:-1px;}
.plc-ka{background:var(--ac);}
.plc-kb{background:var(--cyan);}
@media(max-width:480px){.lrc-time{display:none;}}
@media(max-width:560px){.lrc-ko{display:none;}.lr-hd .lrc-ko{display:none;}}

/* ── THEME TRANSITION ─────────────────────────────────────────── */
html.theme-transitioning *:not(.spin):not(.skel):not(.wlbw):not(.wlbl){
  transition:background-color .35s ease,color .35s ease,border-color .35s ease,box-shadow .35s ease !important;
}
.theme-ripple{position:fixed;transform:translate(-50%,-50%) scale(0);width:24px;height:24px;border-radius:50%;background:var(--ac);opacity:.35;pointer-events:none;z-index:9999;animation:theme-ripple-anim .55s ease-out forwards;}
@keyframes theme-ripple-anim{to{transform:translate(-50%,-50%) scale(40);opacity:0;}}

/* ═══════════════════════════════════════════════════════════════════
   PREMIUM REFONTE 2026 — couche d'enrichissement (override par cascade)
   Épuré · espace négatif · typo forte hiérarchisée · animations subtiles
   CSS-only · palette violet/noir conservée · light theme préservé (specificité)
   ═══════════════════════════════════════════════════════════════════ */

/* — Primitive d'animation : fade-in + slide-up subtil — */
@keyframes fadeUp{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
.fade-up{animation:fadeUp .4s ease both}

/* — Corps : interlignage aéré — */
body{line-height:1.7}

/* — Scrollbar fine violette — */
::-webkit-scrollbar{width:6px;height:6px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--ac) 40%,transparent);border-radius:var(--rfl);border:none}
::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb,var(--ac) 60%,transparent)}
html{scrollbar-color:color-mix(in srgb,var(--ac) 40%,transparent) transparent;scrollbar-width:thin}

/* — Focus states accessibles & élégants (clavier uniquement) — */
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,
[tabindex]:focus-visible,.nav-item:focus-visible,.btn:focus-visible,
.sug-item:focus-visible,.chip:focus-visible,.pg-btn:focus-visible,.lr-row:focus-visible{
  outline:2px solid var(--ac2);outline-offset:3px;border-radius:var(--rsm);
}

/* — Typographie : hiérarchie forte H1 > H2 > corps — */
.prof-name{font-size:26px;letter-spacing:-1px;font-weight:800}
.card-title{font-size:14px}
.sh-t{font-size:16px;letter-spacing:-.5px}
/* Labels : uppercase, letter-spacing 1px (détendu lot 5), 11px, couleur tertiaire */
.lb-tbl th,.psl,.gi-l,.cmp-search-label{font-size:11px;letter-spacing:1px;text-transform:uppercase;color:var(--tx3);font-weight:700}
/* Tabular numerals — colonnes/stats numeriques alignees (cf .lrc-* ligne 509) */
.lb-rk,.lb-gc,.lb-wrc,.em,.ep,.wlnw,.wlnl,.leg-t td,.guild-xp-v,.guild-cur b,.dash-kpi-v,.cmp-stat-val,.rising-elo,.rising-delta,.sug-item,#legCont,#wpnCont,#statusCont{font-variant-numeric:tabular-nums}

/* — Espace négatif généreux (cards >= 24px, sections 24px) — */
.content{padding:30px 32px}
.hero{padding:60px 40px;margin-bottom:24px}
.card-hdr{padding:18px 24px}
.prof-hdr{padding:28px;gap:22px;margin-bottom:24px}
.pstats{grid-template-columns:repeat(auto-fit,minmax(120px,1fr));margin-bottom:24px}
.psc{padding:18px}
.psv{font-size:20px}
.rc-hdr{padding:20px 24px}
.rc-wl,.rc-glory{padding:16px 24px}

/* — Search hero épurée : le style (fond translucide, bordure fine, rayon, loupe, focus) vit
   dans la section HERO HOME (base). La couche premium ne garde QUE la hauteur confortable —
   ne PAS re-forcer bg/bordure/rayon ici, sinon on écrase l'épuré. — */
.hero-srch{min-height:50px}

/* — Cards : radius 16, border subtile, hover élévation -2px + ombre douce — */
.card{border-radius:var(--rlg);border:1px solid var(--b1);box-shadow:none;transition:all .25s ease;animation:fadeUp .4s ease both}
.lb-ri{animation:fadeUp .4s ease both}

/* léger stagger sur les grilles principales */
.lsg-c:nth-child(2),.gad-c:nth-child(2),.news-card:nth-child(2){animation-delay:.05s}
.lsg-c:nth-child(3),.gad-c:nth-child(3),.news-card:nth-child(3){animation-delay:.1s}
.lsg-c:nth-child(n+4),.gad-c:nth-child(n+4),.news-card:nth-child(n+4){animation-delay:.15s}
/* fadeUp au premier rendu seulement (lot 5) : navTo/goPlayer posent .rp-seen des la 2e
   activation d'une page (data-seen) -> coupe les animations d'entree (display:none->block
   les re-declenchait a CHAQUE navigation). Ne touche pas .skel (shimmer) ni rpIn. */
.rp-seen .card,.rp-seen .lb-ri,.rp-seen .fade-up,.rp-seen .news-card,.rp-seen .lsg-c,.rp-seen .gad-c,.rp-seen .guild-card,.rp-seen .tour-card,.rp-seen .dash-hdr,.rp-seen .dash-kpi{animation:none}

/* — Nav items (topbar) : items aérés, hover en fondu — */
.nav-item{padding:12px 20px;gap:11px;transition:background .2s ease,color .2s ease}
.nav-item svg{width:17px;height:17px}
.nav-item:hover{background:var(--acdim);color:var(--tx1)}

/* — Boutons : primary gradient + hover brightness, ghost border accent — */
.btn{transition:all .2s ease}
.btn-p{background:var(--grad-ac);border-radius:var(--rmd);padding:10px 22px;box-shadow:0 4px 18px -6px color-mix(in srgb,var(--ac) 55%,transparent)}
.btn-p:hover{background:var(--grad-ac-h);transform:translateY(-1px);box-shadow:0 8px 26px -6px color-mix(in srgb,var(--ac) 60%,transparent)}
.btn-p:active{transform:translateY(0)}
.btn-g{background:transparent;border:1px solid color-mix(in srgb,var(--ac) 30%,transparent);color:var(--tx2)}
.btn-g:hover{background:var(--acdim);border-color:var(--ba);color:var(--tx1)}

/* — Leaderboard : rows 56px, alternance ultra-subtile, TOP 3 = MÉDAILLE SEULE (aucune couleur/bordure) — */
.lb-ri{min-height:56px;padding:0 20px;transition:background .18s ease}
.lb-tbl tbody tr:nth-child(even) .lb-ri{background:rgba(255,255,255,.01)}
.lb-tbl tbody tr.r1 .lb-ri,.lb-tbl tbody tr.r2 .lb-ri,.lb-tbl tbody tr.r3 .lb-ri{background:transparent;box-shadow:none}
.lb-tbl tbody tr:hover .lb-ri{background:var(--acdim)}

/* — Profil : header sobre, avatar net — */
.prof-hdr{border-radius:var(--rlg);box-shadow:var(--shadow-deep)}
.prof-av{width:88px;height:88px;box-shadow:0 0 28px color-mix(in srgb,var(--ac) 35%,transparent)}

/* — Skeleton loaders — */
.skel{background:linear-gradient(90deg,var(--bg2) 25%,var(--bg3) 38%,var(--bg2) 62%);background-size:400% 100%;animation:shimmer 1.6s ease-in-out infinite;border-radius:7px}

/* — Micro-interactions (0.2s) sur les éléments interactifs — */
.chip,.tb,.pg-btn,.fav-c,.gad-c,.lsg-c,.sug-item,.lr-row{transition:all .2s ease}
.chip:hover{transform:translateY(-1px)}

/* — Garde mobile : paddings compacts (override APRÈS la couche) — */
@media(max-width:768px){
  .content{padding:14px}
  .hero{padding:34px 18px;margin-bottom:16px}
  .prof-hdr{padding:18px;gap:14px}
  .lb-ri{min-height:48px;padding:0 12px}
  .copy-link-btn,.name-hist-btn,.ph-btn{min-height:44px}
}

/* ═══════════════════════════════════════════════════════════════════
   TOPBAR LAYOUT 2026 — sidebar gauche → topbar horizontale (réf. ramarrohub)
   Pleine largeur, contenu max-width 1400px centré · footer collé en bas
   ═══════════════════════════════════════════════════════════════════ */

/* Body en colonne → footer poussé en bas quand le contenu est court */
body{display:flex;flex-direction:column;min-height:100vh}

/* Titre de page caché visuellement mais lisible par lecteurs d'écran (piloté par navTo) */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* ── TOPBAR ── */
/* z-index 600: above all page content incl. the hero search (.hero-srch-rel
   z-index:500) so the sticky topbar stays on top while scrolling, but below the
   Ctrl+K palette (.cmdk-overlay z-index:1000). The mobile dropdown (.top-nav) is
   a child of .topbar, so this stacking context lifts the whole header at once. */
.topbar{position:sticky;top:0;z-index:600;width:100%;height:64px;display:flex;align-items:center;
  background:color-mix(in srgb,var(--bg0) 92%,transparent);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);
  border-bottom:1px solid color-mix(in srgb,var(--ac) 15%,transparent);padding:0}
.tb-inner{width:100%;max-width:1400px;margin:0 auto;padding:0 24px;display:flex;align-items:center;gap:18px}
/* Petit logo cliquable (haut-gauche) — restaure l'accès Home retiré avec le brand */
.nav-logo{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;padding:0;background:none;border:none;cursor:pointer;transition:transform .15s ease,filter .15s ease}
.nav-logo-img{height:30px;width:auto;display:block;filter:drop-shadow(0 0 4px var(--acglow))}
.nav-logo:hover{transform:scale(1.06)}
.nav-logo:hover .nav-logo-img{filter:drop-shadow(0 0 9px var(--acglow)) drop-shadow(0 0 3px var(--acglow))}
.nav-logo:focus-visible{outline:2px solid var(--ac2);outline-offset:3px;border-radius:8px}

/* Nav horizontale — underline violet animé (hover 50% → active 100%) */
.top-nav{display:flex;align-items:center;gap:2px;flex:1;height:64px}
.top-nav .nav-item{position:relative;height:64px;display:inline-flex;align-items:center;padding:0 14px;
  border-left:none;border-radius:0;font-size:14px;font-weight:600;color:var(--tx2);background:transparent;
  cursor:pointer;white-space:nowrap;transition:color .2s ease}
.top-nav .nav-item::after{content:'';position:absolute;left:10px;right:10px;bottom:0;height:2px;
  background:var(--grad-ac);border-radius:2px 2px 0 0;transform:scaleX(0);transform-origin:center;
  opacity:0;transition:transform .22s ease,opacity .22s ease}
.top-nav .nav-item:hover{color:var(--tx1);background:transparent}
.top-nav .nav-item:hover::after{transform:scaleX(.5);opacity:.45}
.top-nav .nav-item.active{color:var(--ac2);background:transparent;box-shadow:none}
.top-nav .nav-item.active::after{transform:scaleX(1);opacity:1;box-shadow:0 0 10px var(--acglow)}

/* Actions à droite */
.tb-actions{display:flex;align-items:center;gap:10px;flex-shrink:0;margin-left:auto}
.tb-search{display:flex;align-items:center;gap:8px;background:var(--s2);border:1px solid var(--b2);
  border-radius:var(--rfl);padding:7px 10px 7px 13px;width:210px;cursor:pointer;font-family:inherit;
  transition:border-color .2s ease,background .2s ease}
.tb-search:hover{border-color:var(--ba);background:var(--s3)}
.tb-search svg{color:var(--tx3);flex-shrink:0}
.tb-search-ph{flex:1;text-align:left;color:var(--tx3);font-size:13px;white-space:nowrap;overflow:hidden}
.tb-kbd{display:flex;gap:3px;flex-shrink:0}
.tb-kbd kbd{font-family:var(--fb);font-size:10px;font-weight:600;color:var(--tx2);background:var(--s1);
  border:1px solid var(--b2);border-radius:5px;padding:1px 5px;line-height:1.5}
/* Discord en ghost : même gabarit que les autres actions, la couleur de marque
   n'apparaît qu'au hover (l'ancien fond #5865F2 plein dominait toute la barre) */
.tb-discord{color:var(--tx2)}
.tb-discord:hover{color:#5865F2;border-color:var(--ba);transform:translateY(-1px)}
.tb-burger{display:none} /* icon-button : hérite de .theme-btn (taille/forme/bg/hover identiques aux frères) ; ici on ne pilote QUE l'affichage responsive */

/* ── CONTENU pleine largeur centré (max 1400px) ── */
.main{flex:1;margin-left:0;width:100%;display:block}
.content{max-width:1400px;margin:0 auto;width:100%;padding:28px 24px}

/* ── FOOTER global ── */
.site-foot{border-top:1px solid var(--b1);background:var(--bg1);margin-top:32px}
.foot-inner{max-width:1400px;margin:0 auto;padding:22px 24px;display:flex;align-items:center;gap:18px;flex-wrap:wrap}
.foot-brand{font-family:var(--fd);font-size:16px;font-weight:800;letter-spacing:-.5px;color:var(--tx1);cursor:pointer;display:inline-flex;align-items:center}
.foot-brand span{color:var(--ac2)}
.foot-brand-img{height:22px;width:auto;display:block;flex-shrink:0;margin-right:7px}
.foot-links{display:flex;gap:18px;flex-wrap:wrap;flex:1}
.foot-lnk{font-size:13px;font-weight:500;color:var(--tx2);cursor:pointer;transition:color .2s ease}
.foot-lnk:hover{color:var(--ac2)}
/* Lien don Ko-fi — même gabarit que les autres foot-lnk, seul le cœur porte l'accent */
.foot-kofi{display:inline-flex;align-items:center;gap:5px}
.foot-kofi svg{width:13px;height:13px;flex-shrink:0;color:var(--ac2)}
.foot-note{font-size:11px;color:var(--tx4);line-height:1.6;text-align:right}

/* ── MOBILE/TABLETTE : nav repliée en dropdown via burger ── */
.nav-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:60;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px)}
.nav-overlay.open{display:block}
/* ≤1200px : la nav inline ne tient plus (logo + items + actions) → burger.
   Breakpoint volontairement haut : à 900px l'ancienne barre débordait entre 901 et ~1300px. */
@media(max-width:1200px){
  .tb-burger{display:flex} /* réaffiche le burger ≤1200px ; dimensions = celles de .theme-btn (34×34), plus d'override 44px */
  .top-nav{position:fixed;top:64px;left:0;right:0;height:auto;flex-direction:column;align-items:stretch;gap:4px;
    background:var(--bg1);border-bottom:1px solid var(--b1);padding:10px;z-index:65;
    transform:translateY(-14px);opacity:0;pointer-events:none;transition:transform .22s ease,opacity .22s ease;
    max-height:calc(100vh - 64px);overflow-y:auto;box-shadow:0 16px 40px rgba(0,0,0,.5)}
  .top-nav.open{transform:none;opacity:1;pointer-events:auto}
  .top-nav .nav-item{width:100%;height:auto;padding:12px 16px;border-radius:var(--rmd);font-size:15px}
  .top-nav .nav-item.active{background:var(--acdim)}
  .top-nav .nav-item::after,.top-nav .nav-item:hover::after{display:none}
  .top-nav .nav-item:hover{background:var(--acdim)}
}
@media(max-width:900px){
  .tb-inner{gap:12px;padding:0 16px}
  .tb-search{width:auto;padding:8px}
  .tb-search-ph,.tb-kbd{display:none}
  .content{padding:16px}
  .foot-inner{flex-direction:column;align-items:flex-start;gap:12px;text-align:left}
  .foot-note{text-align:left}
}
@media(max-width:560px){
  .tb-discord{display:none}
}

/* — TOP GUILDS — grille 2 colonnes, cartes à bordure gauche accent (réf. ramarrohub) — */
.guild-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}
.guild-card{position:relative;display:flex;flex-direction:column;gap:12px;background:var(--s1);border:1px solid var(--b1);border-left:3px solid var(--ac);border-radius:var(--rlg);padding:16px 18px;cursor:pointer;animation:fadeUp .4s var(--ease-out) both;transition:transform .15s var(--ease-out),border-color .15s,box-shadow .15s}
.guild-card:hover{transform:translateY(-2px);border-color:var(--b3);border-left-color:var(--ac2);box-shadow:var(--shadow-glow)}
.guild-rank{position:absolute;top:14px;right:16px;font-size:13px;font-weight:800;color:var(--tx3)}
.guild-head{display:flex;align-items:center;gap:12px;padding-right:24px}
.guild-ava{width:44px;height:44px;border-radius:12px;border:1.5px solid;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:800;flex-shrink:0}
.guild-meta{min-width:0;flex:1}
.guild-name{font-family:var(--fd);font-weight:700;font-size:17px;letter-spacing:-.3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.guild-sub{font-size:11px;color:var(--tx3);text-transform:uppercase;letter-spacing:1px;margin-top:2px}
.guild-xp{display:flex;align-items:baseline;justify-content:space-between;gap:10px;background:var(--s2);border:1px solid var(--b1);border-radius:var(--rmd);padding:10px 13px}
.guild-xp-l{font-size:10px;color:var(--tx3);text-transform:uppercase;letter-spacing:1px}
.guild-xp-v{font-family:var(--fd);font-weight:800;font-size:21px;color:var(--ac2);line-height:1}
.guild-cur{font-size:11px;color:var(--tx3);text-transform:uppercase;letter-spacing:1px;margin-top:-4px}
.guild-cur b{color:var(--tx2);font-family:var(--fd);letter-spacing:0}
.guild-btn{align-self:flex-start}
@media(max-width:760px){.guild-grid{grid-template-columns:1fr}}

/* — COMMAND PALETTE (Ctrl/Cmd+K) — Linear/Vercel style — */
/* z-index 1000: must sit above the home hero search (.hero-srch-rel z-index:500)
   and page chrome (cookie 998 / toast 999) so it covers them — otherwise the
   hero input bleeds through into the middle of the palette results. */
.cmdk-overlay{display:none;position:fixed;inset:0;z-index:1000;background:rgba(0,0,0,.62);
  backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);padding:14vh 16px 16px}
.cmdk-overlay.open{display:flex;justify-content:center;align-items:flex-start;animation:cmdkFade .15s ease}
@keyframes cmdkFade{from{opacity:0}to{opacity:1}}
.cmdk{width:100%;max-width:600px;display:flex;flex-direction:column;max-height:72vh;overflow:hidden;
  background:var(--s1);border:1px solid var(--b3);border-radius:var(--rlg);
  box-shadow:0 24px 70px rgba(0,0,0,.6),0 0 0 1px color-mix(in srgb,var(--ac) 12%,transparent);animation:cmdkPop .18s var(--ease-out)}
@keyframes cmdkPop{from{opacity:0;transform:translateY(-8px) scale(.98)}to{opacity:1;transform:none}}
.cmdk-search{display:flex;align-items:center;gap:11px;padding:15px 18px;border-bottom:1px solid var(--b1)}
.cmdk-search svg{color:var(--ac2);flex-shrink:0}
.cmdk-search input{flex:1;background:none;border:none;outline:none;color:var(--tx1);font-size:16px;font-family:var(--fb)}
.cmdk-search input::placeholder{color:var(--tx3)}
.cmdk-esc{font-family:var(--fb);font-size:10px;font-weight:600;color:var(--tx2);background:var(--s2);
  border:1px solid var(--b2);border-radius:5px;padding:2px 7px;flex-shrink:0}
.cmdk-results{flex:1;overflow-y:auto;padding:8px}
.cmdk-item{display:flex;align-items:center;gap:12px;padding:9px 11px;border-radius:var(--rmd);cursor:pointer}
.cmdk-item.active{background:var(--acdim)}
.cmdk-ic{width:32px;height:32px;border-radius:8px;background:var(--s2);display:flex;align-items:center;justify-content:center;font-size:16px;flex-shrink:0}
.cmdk-av{width:32px;height:32px;border-radius:50%;overflow:hidden;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:800;color:var(--tx1);flex-shrink:0}
.cmdk-meta{flex:1;min-width:0}
.cmdk-label{font-size:14px;font-weight:600;color:var(--tx1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cmdk-sub{font-size:11px;color:var(--tx3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:1px}
.cmdk-enter{font-size:13px;color:var(--ac2);opacity:0;flex-shrink:0}
.cmdk-item.active .cmdk-enter{opacity:1}
.cmdk-empty{padding:30px;text-align:center;color:var(--tx3);font-size:13px}
.cmdk-foot{display:flex;gap:16px;padding:9px 16px;border-top:1px solid var(--b1);background:var(--s2)}
.cmdk-foot>span{display:flex;align-items:center;gap:5px;font-size:11px;color:var(--tx3)}
.cmdk-foot kbd{font-family:var(--fb);font-size:10px;font-weight:600;color:var(--tx2);background:var(--s1);
  border:1px solid var(--b2);border-radius:5px;padding:1px 5px;line-height:1.5}
@media(max-width:560px){.cmdk-overlay{padding-top:8vh}.cmdk-foot{display:none}}

/* — RISING PLAYERS (home) — biggest ELO gains this week — */
.rising-sub{font-size:12px;color:var(--tx3);padding:0 14px 6px;margin-top:6px}
.rising-list{display:flex;flex-direction:column;padding:4px 8px 10px}
.rising-row{display:flex;align-items:center;gap:11px;padding:8px 10px;border-radius:var(--rmd);cursor:pointer;transition:background .12s}
.rising-row:hover{background:var(--s2)}
.rising-rank{width:18px;text-align:center;font-size:12px;font-weight:700;color:var(--tx3);flex-shrink:0}
.rising-av{width:30px;height:30px;border-radius:50%;overflow:hidden;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:800;color:var(--tx1);flex-shrink:0}
.rising-name{flex:1;min-width:0;font-size:14px;font-weight:600;color:var(--tx1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rising-delta{font-size:12px;font-weight:800;color:var(--green);background:var(--gdim);border:1px solid rgba(16,185,129,.28);border-radius:var(--rsm);padding:3px 10px;flex-shrink:0}
.rising-elo{font-family:var(--fd);font-size:13px;font-weight:700;color:var(--ac2);width:52px;text-align:right;flex-shrink:0}

/* — SETTINGS POPOVER (accent + particules + thème + langue, trigger ⚙ SVG) — */
.settings-picker{position:relative;display:flex}
.settings-menu{position:absolute;top:calc(100% + 8px);right:0;display:none;flex-direction:column;gap:4px;padding:12px;width:252px;max-height:calc(100vh - 80px);overflow-y:auto;background:var(--s2);border:1px solid var(--b2);border-radius:var(--rmd);box-shadow:0 8px 24px rgba(0,0,0,.5);z-index:200}
.settings-menu.open{display:flex}
.set-lbl{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:1.5px;color:var(--tx3);padding:2px 2px 3px}
.set-lbl.set-sep{margin-top:8px;padding-top:10px;border-top:1px solid var(--b1)}
.set-langs{display:grid;grid-template-columns:1fr 1fr;gap:2px}
.settings-menu .lang-opt{border-radius:var(--rsm);padding:7px 9px;font-size:12px}

/* — HOME DATA-FIRST (lot 4) — */
/* Grille Trending + top-5 leaderboard : 2 colonnes, une colonne vide (widget masqué)
   se replie via :empty et l'autre prend toute la largeur ; 1 colonne en étroit. */
.home-2col{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:16px;margin-bottom:20px;align-items:stretch}
.home-2col>div:empty{display:none}
/* Colonnes Trending / Top 10 de MÊME hauteur : chaque colonne remplit sa cellule grid (align stretch),
   sa carte étirée à 100% → bords bas alignés même si Trending porte un sous-titre + la ligne prevTop.
   En mobile (auto-fit → 1 colonne), chaque rangée n'a qu'un item : hauteur = contenu naturel (pas de vide). */
.home-2col>div{display:flex;flex-direction:column}
.home-2col>div>.card{flex:1}
/* Favoris + récents fusionnés en rangée de chips (remplace les deux cards) */
.quick-sec{display:flex;align-items:flex-start;gap:12px;margin-bottom:20px;flex-wrap:wrap}
.quick-lbl{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:1.5px;color:var(--tx3);padding:7px 0;flex-shrink:0}
.quick-row{display:flex;gap:7px;flex-wrap:wrap;flex:1;min-width:0}
.fav-star{font-size:10px;line-height:1;display:inline-flex;color:var(--gold)} /* marqueur étoile (SVG_STAR) des favoris dans la rangée fusionnée */
.quick-clear{font-size:11px;font-weight:600;color:var(--tx3);padding:5px 10px;border:1px solid var(--b1);border-radius:var(--rfl);transition:all .15s ease}
.quick-clear:hover{color:var(--tx1);border-color:var(--b3)}
/* Grille news responsive (sortie du style inline JS — repeat(3,1fr) figé) */
.news-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;padding-top:2px}
@media(max-width:900px){.news-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.news-grid{grid-template-columns:1fr}}


/* — TOURNAMENTS — */
.tour-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}
@media(max-width:760px){.tour-grid{grid-template-columns:1fr}}
.tour-card{display:flex;flex-direction:column;gap:10px;background:var(--s1);border:1px solid var(--b1);border-left:3px solid var(--b2);border-radius:var(--rlg);padding:16px 18px;transition:transform .15s var(--ease-out),border-color .15s,box-shadow .15s;animation:fadeUp .4s var(--ease-out) both}
.tour-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-glow)}
.tour-card.tour-up{border-left-color:var(--ac)}
.tour-card.tour-up:hover{border-color:var(--b3)}
.tour-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.tour-name{font-family:var(--fd);font-weight:700;font-size:16px;line-height:1.3;color:var(--tx1)}
.tour-badge{flex-shrink:0;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:1px;color:var(--ac2);background:var(--acdim);border:1px solid var(--b3);border-radius:var(--rsm);padding:3px 9px}
.tour-meta{display:flex;flex-wrap:wrap;gap:8px 14px;font-size:12px;color:var(--tx2)}
.tour-meta .tour-prize{color:var(--gold);font-weight:700}
.tour-by{font-size:11px;color:var(--tx3)}
.tour-btn{align-self:flex-start;text-decoration:none;margin-top:2px}

/* — MY PROFILE / DASHBOARD — */
.my-prof-btn{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:var(--rmd);background:var(--bg3);border:1px solid var(--b2);cursor:pointer;transition:all .2s var(--ease);flex-shrink:0;padding:0;overflow:hidden}
.my-prof-btn:hover{border-color:var(--b3);transform:scale(1.05)}
.my-prof-btn .mpb-av{width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:800;color:var(--tx1)}
.my-prof-btn .mpb-ico{display:inline-flex;align-items:center;justify-content:center;font-size:18px;color:var(--ac2)}

.dash-hdr{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;background:linear-gradient(135deg,var(--s1),var(--bg2));border:1px solid var(--b1);border-radius:var(--rlg);padding:18px 20px;margin-bottom:16px;animation:fadeUp .4s var(--ease-out) both}
.dash-hdr-main{display:flex;align-items:center;gap:14px;flex:1;min-width:240px}
.dash-av{width:64px;height:64px;border-radius:14px;display:flex;align-items:center;justify-content:center;font-family:var(--fd);font-size:22px;font-weight:800;color:var(--tx1);flex-shrink:0;box-shadow:0 4px 16px rgba(0,0,0,.3)}
.dash-name{font-family:var(--fd);font-size:1.5rem;font-weight:800;letter-spacing:-.5px;line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dash-meta{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.dash-hdr-actions{display:flex;flex-direction:column;gap:6px;align-items:stretch}
@media(max-width:640px){.dash-hdr-actions{flex-direction:row;flex-wrap:wrap;width:100%}}

.dash-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:16px}
@media(max-width:640px){.dash-kpis{grid-template-columns:repeat(2,1fr)}}
.dash-kpi{background:var(--s1);border:1px solid var(--b1);border-radius:var(--rlg);padding:14px 16px;animation:fadeUp .4s var(--ease-out) both}
.dash-kpi-l{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--tx3);margin-bottom:6px}
.dash-kpi-v{font-family:var(--fd);font-size:1.5rem;font-weight:800;letter-spacing:-1px}

.dash-rising{display:flex;align-items:center;gap:14px;background:linear-gradient(135deg,var(--gdim),var(--s1) 60%);border:1px solid rgba(16,185,129,.4);border-radius:var(--rlg);padding:14px 18px;margin-bottom:16px}
.dash-rising-ico{font-size:26px;flex-shrink:0}
.dash-rising-t{font-weight:700;font-size:15px;color:var(--green)}
.dash-rising-s{font-size:12px;color:var(--tx2);margin-top:2px}

.dash-setup{max-width:480px;margin:40px auto;text-align:center;padding:24px}
.dash-setup-ico{font-size:48px;margin-bottom:14px}
.dash-setup-t{font-family:var(--fd);font-size:22px;font-weight:800;margin-bottom:8px}
.dash-setup-d{font-size:14px;color:var(--tx3);margin-bottom:22px;line-height:1.6}
.dash-setup-search{position:relative;text-align:left}
.dash-setup-input{width:100%;background:var(--s2);border:1px solid var(--b2);border-radius:var(--rmd);padding:13px 16px;color:var(--tx1);font-size:14px;outline:none;transition:border-color .15s}
.dash-setup-input:focus{border-color:var(--ac)}

/* — Dashboard 2026 (Sujet C) : header cockpit + système .dash-card unifié.
   .dash-hdr : liseré gauche teinté tier (--dash-tier posé inline par renderDashboard) + portrait
   fantôme de la main ranked legend masqué en dégradé (l'élément signature — tout le reste
   reste discipliné). Piège overflow:hidden (cf. .pstats/.prof-hdr) : les tooltips .tip du
   header (badge percentile #dashRankPct) et des .dash-card seraient clippés → .dash-hdr et
   .dash-card restent overflow VISIBLE ; le fantôme est clippé par un calque interne dédié
   .dash-hdr-bg (inset:0, radius hérité). Les fonds respectent le border-radius d'eux-mêmes. */
.dash-hdr{position:relative;border-left:3px solid var(--dash-tier,var(--ac))}
.dash-hdr-bg{position:absolute;inset:0;overflow:hidden;border-radius:inherit;pointer-events:none}
.dash-hdr-leg{position:absolute;right:-14px;top:50%;transform:translateY(-50%);height:160%;aspect-ratio:1/1;object-fit:cover;object-position:center top;opacity:.15;filter:saturate(.85);-webkit-mask-image:linear-gradient(to left,#000 25%,transparent 92%);mask-image:linear-gradient(to left,#000 25%,transparent 92%)}
.dash-hdr-main,.dash-hdr-actions{position:relative;z-index:1}
/* Header épuré style carte joueur : ligne nom+tag clan, puis .prof-sub réutilisé (drapeau/ID)
   étendu en wrap pour accueillir rang + percentile + tier mini + level (plus de gros pavé). */
.dash-hdr-name-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:3px}
.dash-hdr .prof-sub{flex-wrap:wrap;row-gap:4px;margin:0}
.dash-tier-mini{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:700}
.dash-tier-mini .rank-img{width:16px;height:16px;object-fit:contain}
.dash-lvl-mini{font-size:11px;color:var(--tx3);font-weight:600}
.dash-lvl-mini b{color:var(--tx1);font-weight:700}
.dash-card{background:var(--s1);border:1px solid var(--b1);border-radius:var(--rlg);overflow:visible;margin-bottom:16px;animation:fadeUp .4s var(--ease-out) both}
.rp-seen .dash-card{animation:none}
.dash-card-h{display:flex;align-items:center;gap:7px;padding:13px 16px 0;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--tx3)}
.dash-card-b{padding:12px 16px 14px}
.dash-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:16px;margin-bottom:16px;align-items:start}
.dash-grid .dash-card{margin-bottom:0}
.dash-mainleg{display:flex;align-items:center;gap:18px;padding:16px 20px;background:linear-gradient(135deg,color-mix(in srgb,var(--mlc,var(--ac)) 9%,transparent),var(--s1) 55%)}
.dash-mainleg-img{width:72px;height:72px;border-radius:10px;object-fit:cover;flex-shrink:0;filter:drop-shadow(0 4px 14px color-mix(in srgb,var(--mlc,var(--ac)) 33%,transparent))}
.dash-mainleg-main{flex:1;min-width:0}
.dash-ml-eyebrow{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--tx3);margin-bottom:2px}
.dash-mainleg-name{font-family:var(--fd);font-size:1.4rem;font-weight:700;letter-spacing:-.4px;line-height:1.1;margin-bottom:4px}
.dash-mainleg-wpns{font-size:12px;color:var(--tx3);margin-bottom:12px}
.dash-mainleg-stats{display:flex;gap:18px;flex-wrap:wrap}
.dash-ml-l{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.7px;color:var(--tx3)}
.dash-ml-v{font-family:var(--fd);font-size:.95rem;font-weight:700}
.dash-elo-top{display:flex;justify-content:space-between;align-items:baseline;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.dash-elo-meta{display:flex;gap:12px;flex-wrap:wrap;font-size:11px;color:var(--tx3)}
.dash-elo-wk b{font-weight:700}
.dash-elo-delta{font-family:var(--fd);font-size:16px;font-weight:700}
.dash-elo-wrap{position:relative}
.dash-elo-svg{width:100%;height:96px;display:block}
.dash-elo-dot{position:absolute;width:7px;height:7px;margin:-3.5px 0 0 -3.5px;border-radius:50%;background:var(--ac2)}
.dash-elo-dot::after{content:'';position:absolute;inset:0;border-radius:50%;border:1.5px solid var(--ac2);animation:dashPulse 2.2s var(--ease-out) infinite}
@keyframes dashPulse{0%{transform:scale(1);opacity:.8}70%,100%{transform:scale(3.2);opacity:0}}
.dash-elo-mm{display:flex;justify-content:space-between;font-size:11px;color:var(--tx3);margin-top:6px}
.dash-leg-row{display:flex;align-items:center;gap:12px;padding:8px 0}
.dash-leg-row+.dash-leg-row{border-top:1px solid var(--b1)}
.dash-leg-img{width:40px;height:40px;border-radius:9px;object-fit:cover;flex-shrink:0}
.dash-wpn-img{width:34px;height:34px;border-radius:8px;object-fit:contain;flex-shrink:0}
.dash-leg-main{flex:1;min-width:0}
.dash-leg-top{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:5px}
.dash-leg-name{font-weight:600;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dash-leg-lvl{font-size:10px;font-weight:700;color:var(--ac2);flex-shrink:0}
.dash-wpn-time{font-size:10px;color:var(--tx3);flex-shrink:0;white-space:nowrap}
.dash-leg-bar{height:4px;border-radius:2px;background:var(--s3);overflow:hidden}
.dash-leg-bar i{display:block;height:100%;border-radius:2px;background:var(--ac)}
.dash-leg-stats{display:flex;flex-direction:column;align-items:flex-end;gap:2px;flex-shrink:0}
.dash-leg-g{font-family:var(--fd);font-size:13px;font-weight:700}
.dash-leg-wr{font-size:11px;font-weight:600}
.dash-wpn-dmg{font-size:11px;color:var(--tx2)}
.dash-vs-row{display:flex;align-items:center;gap:10px;padding:9px 0}
.dash-vs-row+.dash-vs-row{border-top:1px solid var(--b1)}
.dash-vs-l{flex:1;font-size:12px;color:var(--tx2)}
.dash-vs-you{font-family:var(--fd);font-size:15px;font-weight:700}
.dash-vs-cmp{font-size:10px;line-height:1}
.dash-vs-avg{font-size:11px;color:var(--tx3);white-space:nowrap}
.dash-fav-empty{text-align:center;padding:18px 10px 12px}
.dash-fav-empty-ico{font-size:26px;color:var(--gold);margin-bottom:8px}
.dash-fav-empty-t{font-family:var(--fd);font-size:15px;font-weight:700;margin-bottom:4px}
.dash-fav-empty-d{font-size:12.5px;color:var(--tx3);margin-bottom:14px}

/* — DISCORD BOT PAGE (refonte) — vocabulaire Discord : hero ASYMÉTRIQUE (identité gauche / CTA droite),
   PASTILLE DE PRÉSENCE incrustée dans l'avatar (encoche via anneau couleur-du-fond), panneau commandes
   façon POPUP D'AUTOCOMPLÉTION SLASH (lignes serrées). Violet = accent site ; blurple #5865F2 réservé
   au chip BOT + bouton d'invitation. Avatar = logo NexHalla. #botStatus porte l'état (layout via #id). */
.bot-hero{display:flex;align-items:center;justify-content:space-between;gap:22px;flex-wrap:wrap;background:var(--s1);border:1px solid var(--b1);border-left:3px solid var(--ac);border-radius:var(--rlg);padding:22px 26px;margin-bottom:20px;animation:fadeUp .4s var(--ease-out) both}
.rp-seen .bot-hero{animation:none}
#botStatus{display:flex;align-items:center;gap:18px;min-width:0;flex:1}
.bot-avatar{position:relative;flex-shrink:0}
.bot-avatar-img{width:64px;height:64px;border-radius:50%;object-fit:contain;background:var(--s2);border:1px solid var(--b2);display:block;box-sizing:border-box;padding:12px}
.bot-presence{position:absolute;right:-2px;bottom:-2px;width:20px;height:20px;border-radius:50%;box-shadow:0 0 0 4px var(--s1);background:var(--s2)}
.bot-presence::after{content:'';position:absolute;inset:0;border-radius:50%}
#botStatus.online .bot-presence{background:#23A55A;box-shadow:0 0 0 4px var(--s1),0 0 9px 1px rgba(35,165,90,.55)}
#botStatus.offline .bot-presence{background:var(--s1);border:3.5px solid #80848E}
#botStatus.unknown .bot-presence{background:var(--s1);border:3.5px solid color-mix(in srgb,#80848E 50%,transparent)}
#botStatus.checking .bot-presence{background:var(--ac2)}
#botStatus.checking .bot-presence::after{background:var(--ac2);animation:dashPulse 1.8s var(--ease-out) infinite}
.bot-id-txt{min-width:0}
.bot-name-row{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-bottom:5px}
.bot-name{font-family:var(--fd);font-size:clamp(22px,3vw,30px);font-weight:800;letter-spacing:-.6px;line-height:1;margin:0}
.bot-tag{font-size:10px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;color:#fff;background:#5865F2;border-radius:4px;padding:2px 6px;line-height:1.5}
.bot-presence-label{font-size:12px;font-weight:600;color:var(--tx3);text-transform:uppercase;letter-spacing:.6px;margin-bottom:9px}
#botStatus.online .bot-presence-label{color:#23A55A}
.bot-tagline{font-size:13.5px;color:var(--tx2);line-height:1.55;max-width:520px;margin:0}
.bot-cta{display:inline-flex;align-items:center;gap:9px;flex-shrink:0;font-size:15px;font-weight:700;color:#fff;background:#5865F2;border-radius:var(--rmd);padding:13px 22px;transition:background .15s,transform .15s}
.bot-cta:hover{background:#4752C4;transform:translateY(-1px)}
.bot-cta svg{width:18px;height:18px}
/* Panneau commandes = popup d'autocomplétion slash */
.slash-panel{background:var(--bg1);border:1px solid var(--b2);border-radius:var(--rlg);overflow:hidden;margin-bottom:18px;box-shadow:var(--shadow-card)}
.slash-head{display:flex;align-items:center;gap:8px;padding:12px 16px;border-bottom:1px solid var(--b1);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--tx3)}
.slash-head-sig{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:4px;background:color-mix(in srgb,var(--ac) 22%,transparent);color:var(--ac2);font-weight:800}
.slash-cat{padding:12px 16px 5px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--tx4)}
.slash-row{display:flex;align-items:baseline;gap:8px;padding:9px 16px;border-top:1px solid color-mix(in srgb,var(--b1) 55%,transparent);cursor:default;transition:background .12s}
.slash-cat+.slash-row{border-top:none}
.slash-row:hover{background:var(--acdim)}
.slash-sig,.slash-name,.slash-args{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;flex-shrink:0}
.slash-sig{color:var(--tx4);font-weight:700}
.slash-name{font-size:13px;font-weight:600;color:var(--tx1)}
.slash-args{font-size:12.5px;color:var(--tx4)}
.slash-desc{margin-left:auto;text-align:right;font-size:12px;color:var(--tx3);line-height:1.4;padding-left:16px}
.slash-note{padding:8px 16px 12px;font-size:11px;color:var(--tx4);font-style:italic}
/* Features en ligne compacte (plus de grosses cartes) */
.bot-feats{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:2px}
.bot-feats-lbl{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--tx4)}
.bot-feat{display:inline-flex;align-items:center;gap:7px;font-size:12.5px;color:var(--tx2)}
.bot-feat-dot{width:6px;height:6px;border-radius:50%;background:var(--ac);flex-shrink:0}
@media(max-width:640px){.bot-hero{flex-direction:column;align-items:flex-start}.bot-cta{width:100%;justify-content:center}.slash-row{flex-wrap:wrap}.slash-desc{margin-left:26px;text-align:left;padding-left:0;flex-basis:100%}}

/* — MINI GAMES : liste de jeux + "Guess the Legend" (grille type Wordle). Vert #23A55A = match ;
   rouge atténué + flèche = trop haut/bas. Thème sombre/violet du site pour le reste. */
.mg-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px}
.mg-card{display:flex;flex-direction:column;gap:16px;background:var(--s1);border:1px solid var(--b1);border-left:3px solid var(--ac);border-radius:var(--rlg);padding:20px;animation:fadeUp .4s var(--ease-out) both}
.rp-seen .mg-card{animation:none}
.mg-card-t{font-family:var(--fd);font-size:18px;font-weight:800;letter-spacing:-.4px;margin-bottom:6px}
.mg-card-d{font-size:13px;color:var(--tx2);line-height:1.55}
.mg-card .btn{align-self:flex-start}
.mg-game{max-width:760px;margin:0 auto}
.mg-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:14px}
.mg-bar-l,.mg-bar-r{display:flex;align-items:center;gap:8px}
.mg-game-t{font-family:var(--fd);font-size:18px;font-weight:800;letter-spacing:-.4px}
.mg-ic-btn{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:var(--rmd);background:var(--s2);border:1px solid var(--b2);color:var(--tx2);font-size:15px;font-weight:700;cursor:pointer;transition:all .15s}
.mg-ic-btn:hover{color:var(--tx1);border-color:var(--b3)}
.mg-new{white-space:nowrap}
.mg-timer{font-family:var(--fd);font-size:16px;font-weight:800;color:var(--tx2);min-width:46px;text-align:center;font-variant-numeric:tabular-nums}
.mg-timer-low{color:var(--red);animation:mgPulse 1s steps(2) infinite}
@keyframes mgPulse{50%{opacity:.35}}
.mg-streak{display:inline-flex;gap:10px}
.mg-streak-i{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--tx3)}
.mg-streak-i b{color:var(--ac2);font-family:var(--fd)}
.mg-input-wrap{position:relative;margin-bottom:14px}
.mg-input{width:100%;background:var(--s2);border:1px solid var(--b2);border-radius:var(--rmd);padding:12px 16px;color:var(--tx1);font-size:14px;outline:none;transition:border-color .15s}
.mg-input:focus{border-color:var(--ac)}
.mg-input:disabled{opacity:.5}
.mg-sug-av{width:22px;height:22px;border-radius:50%;object-fit:cover;flex-shrink:0}
.mg-signin{font-size:12px;color:var(--tx3);background:color-mix(in srgb,var(--ac) 8%,transparent);border:1px solid var(--b3);border-radius:var(--rmd);padding:8px 12px;margin-bottom:14px}
.mg-table{overflow-x:auto}
.mg-row{display:grid;grid-template-columns:minmax(120px,1.4fr) repeat(4,minmax(46px,1fr)) minmax(74px,1.1fr);gap:6px;min-width:520px;margin-bottom:6px}
.mg-head{margin-bottom:8px}
.mg-col-h{display:flex;align-items:center;justify-content:center;font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--tx3);text-align:center;line-height:1.1}
.mg-leg{display:flex;align-items:center;gap:8px;min-width:0}
.mg-leg-av{width:34px;height:34px;border-radius:8px;object-fit:cover;flex-shrink:0;background:var(--s2)}
.mg-leg-n{font-size:12.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mg-cell{display:flex;align-items:center;justify-content:center;gap:3px;min-height:44px;border-radius:var(--rsm);font-family:var(--fd);font-size:15px;font-weight:700}
.mg-eq{background:#23A55A;color:#fff}                                            /* exact / 2 armes = vert */
.mg-mid{background:#d9822b;color:#fff}                                           /* ±1 / 1 arme = orange (ambre) */
.mg-neq{background:color-mix(in srgb,var(--red) 20%,var(--s2));color:var(--tx1)} /* ≥2 / 0 arme = rouge atténué */
.mg-ar{font-size:13px;opacity:.9}
.mg-neq .mg-ar{color:var(--red)}
.mg-wcell{gap:5px}
.mg-wpn{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:6px;background:rgba(0,0,0,.25);padding:3px} /* chip sombre → lisible sur cellule verte/orange/rouge */
.mg-wpn-img{width:100%;height:100%;object-fit:contain;display:block}
.mg-result{display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center;padding:16px;margin-bottom:14px;border-radius:var(--rlg);border:1px solid var(--b2)}
.mg-res-win{background:color-mix(in srgb,#23A55A 12%,var(--s1));border-color:color-mix(in srgb,#23A55A 40%,transparent)}
.mg-res-loss{background:color-mix(in srgb,var(--red) 10%,var(--s1));border-color:color-mix(in srgb,var(--red) 35%,transparent)}
.mg-result-h{font-family:var(--fd);font-size:20px;font-weight:800}
.mg-result-ans{display:inline-flex;align-items:center;gap:8px;font-size:13px;color:var(--tx2)}
.mg-res-av{width:30px;height:30px;border-radius:7px;object-fit:cover}
.mg-modal-ov{display:none;position:fixed;inset:0;z-index:1000;background:rgba(0,0,0,.6);align-items:center;justify-content:center;padding:20px}
.mg-modal{width:100%;max-width:420px;max-height:80vh;overflow-y:auto;background:var(--s1);border:1px solid var(--b2);border-radius:var(--rlg);box-shadow:var(--shadow-deep)}
.mg-modal-h{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:16px 18px;border-bottom:1px solid var(--b1);font-family:var(--fd);font-size:16px;font-weight:800}
.mg-modal-b{padding:16px 18px}
.mg-rules{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:9px}
.mg-rules li{font-size:13px;color:var(--tx2);line-height:1.5}
.mg-lb-head,.mg-lb-row{display:grid;grid-template-columns:32px 1fr auto;align-items:center;gap:10px}
.mg-lb-head{font-size:10px;text-transform:uppercase;letter-spacing:.6px;color:var(--tx4);padding:0 4px 8px}
.mg-lb-row{padding:8px 4px;border-top:1px solid var(--b1)}
.mg-lb-rank{font-family:var(--fd);font-weight:800;color:var(--ac2);text-align:center}
.mg-lb-name{font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mg-lb-best{font-family:var(--fd);font-weight:800;color:var(--tx1)}
.mg-lb-empty{font-size:13px;color:var(--tx3);text-align:center;padding:16px 0}

/* — MINI GAMES — refonte page (en-tête éditorial + tuiles à identité) + jeu ELO Duel.
   Cohérent avec la DA home : typo Space Grotesk affirmée, aligné gauche, accents violets FLAT,
   portraits de légendes fondus (mask) plutôt que vignettes-boîtes. (.mg-grid/.mg-card d'origine
   deviennent morts — loadMiniGames ne les rend plus.) */
.mg-hero{margin:0 0 22px}
.mg-hero-eyebrow{display:inline-flex;align-items:center;gap:8px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:1.5px;color:var(--ac2);margin-bottom:12px}
.mg-blade{width:11px;height:11px;flex-shrink:0;background:var(--ac);clip-path:polygon(0 0,100% 50%,0 100%)}
.mg-hero-title{font-family:var(--fd);font-weight:800;font-size:clamp(28px,5vw,46px);line-height:1.02;letter-spacing:-.02em;color:var(--tx1);margin:0 0 10px;max-width:16ch}
.mg-hero-sub{font-size:14px;color:var(--tx2);line-height:1.55;max-width:440px;margin:0}
.mg-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px}
.mg-tile{position:relative;overflow:hidden;min-height:184px;display:flex;align-items:flex-end;background:var(--s1);border:1px solid var(--b1);border-left:3px solid var(--ac);border-radius:var(--rlg);padding:20px;cursor:pointer;transition:transform .15s var(--ease-out),border-color .15s,box-shadow .15s;animation:fadeUp .4s var(--ease-out) both}
.rp-seen .mg-tile{animation:none}
.mg-tile:hover{transform:translateY(-3px);border-left-color:var(--ac2);box-shadow:0 12px 30px rgba(0,0,0,.35)}
.mg-tile:focus-visible{outline:2px solid var(--ac2);outline-offset:2px}
.mg-tile-art{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.mg-tile-art img{position:absolute;right:-6%;bottom:-12%;height:150%;width:auto;opacity:.16;filter:saturate(.9);-webkit-mask-image:linear-gradient(to left,#000 30%,transparent 88%);mask-image:linear-gradient(to left,#000 30%,transparent 88%)}
.mg-tile-art-duel img:first-of-type{right:24%;height:132%;opacity:.13}
.mg-tile-vs{position:absolute;top:14px;right:16px;font-family:var(--fd);font-weight:800;font-size:13px;color:color-mix(in srgb,var(--ac2) 55%,transparent);letter-spacing:1px}
.mg-tile-body{position:relative;z-index:1;max-width:80%}
.mg-tile-t{font-family:var(--fd);font-size:18px;font-weight:800;letter-spacing:-.3px;margin-bottom:5px}
.mg-tile-d{font-size:12.5px;color:var(--tx2);line-height:1.5;margin-bottom:12px}
.mg-tile-foot{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.mg-tile-cta{font-size:13px;font-weight:700;color:var(--ac2)}
.mg-tile-best{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--tx3)}
/* Board ELO Duel */
.mg-duel-q{text-align:center;font-family:var(--fd);font-size:clamp(16px,2.2vw,20px);font-weight:700;color:var(--tx1);margin:6px 0 16px}
.mg-duel-board{display:grid;grid-template-columns:1fr auto 1fr;align-items:stretch;gap:12px}
.duel-vs{align-self:center;font-family:var(--fd);font-weight:800;font-size:15px;color:var(--tx3);letter-spacing:1px}
.duel-card{display:flex;flex-direction:column;gap:12px;background:var(--s1);border:1px solid var(--b2);border-radius:var(--rlg);padding:16px;cursor:pointer;transition:border-color .15s,transform .15s,box-shadow .15s;min-width:0}
.duel-card:hover{border-color:var(--ac);transform:translateY(-2px);box-shadow:0 8px 22px rgba(0,0,0,.3)}
.duel-card:focus-visible{outline:2px solid var(--ac2);outline-offset:2px}
.duel-card.locked{pointer-events:none}
.duel-card.revealed{cursor:default}
.duel-top{display:flex;align-items:center;gap:12px}
.duel-leg{width:52px;height:52px;border-radius:12px;object-fit:cover;background:var(--s2);flex-shrink:0}
.duel-rating{font-family:var(--fd);font-size:26px;font-weight:800;letter-spacing:-1px;color:var(--ac2)}
.duel-rating.duel-hidden{color:var(--tx3)}
.duel-stats{display:flex;flex-direction:column;gap:7px}
.duel-stat{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:12.5px;color:var(--tx3)}
.duel-stat b{font-family:var(--fd);font-weight:700;color:var(--tx1)}
.duel-rgn{display:inline-flex;align-items:center}
.duel-rgn .rgn-flag svg{width:20px}
.duel-pick{text-align:center;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--ac2);border-top:1px solid var(--b1);padding-top:10px}
.duel-card.duel-hi{border-color:#23A55A;background:color-mix(in srgb,#23A55A 8%,var(--s1))}
.duel-card.duel-hi .duel-rating{color:#23A55A}
.duel-card.duel-right{box-shadow:0 0 0 2px #23A55A inset}
.duel-card.duel-wrong{box-shadow:0 0 0 2px var(--red) inset}
.duel-final{font-size:13px;color:var(--tx2);margin:2px 0 4px}
.duel-final b{color:var(--ac2);font-family:var(--fd)}
.mg-duel-unavail{text-align:center;font-size:13px;color:var(--tx3);padding:30px 16px}
@media(max-width:560px){.mg-duel-board{grid-template-columns:1fr}.duel-vs{justify-self:center}.duel-leg{width:44px;height:44px}.duel-rating{font-size:22px}}

/* ── COMPARE MULTI (2→4 joueurs) — cartes JS dans #cmpSearchGrid ── */
.cmp-search-card{position:relative}
.cmp-search-grid.multi{grid-template-columns:repeat(var(--cmp-n,4),1fr)}
.cmp-card-x{position:absolute;top:8px;right:8px;width:22px;height:22px;border-radius:50%;border:1px solid var(--b2);background:var(--bg2);color:var(--tx3);font-size:14px;line-height:1;padding:0;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:color .15s,border-color .15s}
.cmp-card-x:hover{color:var(--red);border-color:var(--red)}
.cmp-add-row{display:flex;justify-content:center;margin:-6px 0 20px}
.cmp-add-btn{background:none;border:1px dashed var(--b3);color:var(--ac2);border-radius:var(--rmd);padding:8px 18px;font-size:13px;font-weight:600;font-family:inherit;cursor:pointer;transition:background .15s,border-color .15s}
.cmp-add-btn:hover{background:var(--acdim);border-color:var(--ac)}
@media(max-width:768px){.cmp-search-grid.multi{grid-template-columns:1fr}}

/* ── LEGEND BASE STATS (str/dex/def/spd, barres /10 + icônes stances) ──
   Rendu par legStatBars() (app.js) : accordéon profil (.lac-viz) + cartes page Légendes (.sm).
   Réutilise .lac-wbar/.lac-wfill pour la barre elle-même. */
.leg-sbars{min-width:190px;padding-top:8px;}
.leg-sbrow{display:flex;align-items:center;gap:8px;margin-bottom:6px;}
.leg-sbico{width:18px;height:18px;object-fit:contain;flex:none;}
.leg-sbname{font-size:12px;font-weight:600;color:var(--tx1);width:88px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.leg-sbval{font-family:var(--fd);font-size:11px;font-weight:700;color:var(--ac2);width:18px;text-align:right;font-variant-numeric:tabular-nums;}
.leg-sbars.sm{min-width:0;margin-top:8px;padding-top:8px;border-top:1px solid var(--b1);}
.leg-sbars.sm .leg-sbrow{gap:6px;margin-bottom:4px;}
.leg-sbars.sm .leg-sbrow:last-child{margin-bottom:0;}
.leg-sbars.sm .leg-sbico{width:14px;height:14px;}
.leg-sbars.sm .lac-wbar{max-width:none;height:5px;}

/* — Respect du réglage système (accessibilité) — en dernier — */
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
}

/* ── ACCOUNT / AUTH (Lot 3) — modale miroir de .cmdk-overlay, popover miroir de .settings-menu ── */
.auth-overlay{display:none;position:fixed;inset:0;z-index:1000;background:rgba(0,0,0,.66);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);padding:11vh 16px 16px}
.auth-overlay.open{display:flex;justify-content:center;align-items:flex-start;animation:cmdkFade .16s ease}
.auth-modal{position:relative;width:100%;max-width:416px;background:var(--s1);border:1px solid var(--b3);border-radius:16px;box-shadow:0 30px 80px rgba(0,0,0,.62),0 0 0 1px color-mix(in srgb,var(--ac) 14%,transparent);animation:cmdkPop .2s var(--ease-out);overflow:hidden}
.auth-modal::before{content:'';position:absolute;top:0;left:0;right:0;height:130px;background:radial-gradient(120% 100% at 50% 0,color-mix(in srgb,var(--ac) 20%,transparent),transparent 70%);pointer-events:none}
.auth-close{position:absolute;top:12px;right:12px;z-index:3;width:30px;height:30px;display:flex;align-items:center;justify-content:center;background:none;border:none;border-radius:8px;color:var(--tx3);cursor:pointer;transition:color .15s,background .15s}
.auth-close:hover{color:var(--tx1);background:var(--s2)}
.auth-close:focus-visible{outline:2px solid var(--ac2);outline-offset:1px}
.auth-form{position:relative;display:flex;flex-direction:column;padding:26px}
.auth-seg{position:relative;display:flex;background:var(--s3);border:1px solid var(--b1);border-radius:11px;padding:4px;margin-bottom:22px}
.auth-seg::before{content:'';position:absolute;top:4px;bottom:4px;left:4px;width:calc(50% - 4px);background:var(--s1);border:1px solid var(--b2);border-radius:8px;box-shadow:0 2px 8px rgba(0,0,0,.28);transition:transform .28s var(--ease-out)}
.auth-seg.sg::before{transform:translateX(100%)}
.auth-seg-btn{flex:1;position:relative;z-index:1;background:none;border:none;padding:9px;font-family:var(--fb);font-size:13.5px;font-weight:600;color:var(--tx3);cursor:pointer;border-radius:8px;transition:color .2s}
.auth-seg-btn.active{color:var(--tx1)}
.auth-head{text-align:center;margin-bottom:20px}
.auth-title{font-family:var(--fd);font-size:22px;font-weight:700;color:var(--tx1);letter-spacing:-.3px}
.auth-sub{font-size:13px;color:var(--tx2);line-height:1.5;margin-top:6px}
.auth-l{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.7px;color:var(--tx3);margin:14px 0 6px}
.auth-in{background:var(--s2);border:1px solid var(--b2);border-radius:10px;padding:12px 14px;font-size:14px;color:var(--tx1);font-family:var(--fb);outline:none;transition:border-color .16s,box-shadow .16s,background .16s;width:100%;box-sizing:border-box}
.auth-in::placeholder{color:var(--tx3)}
/* Focus discret (comme .hero-srch:focus-within) : bordure violette + glow doux, PAS d'anneau franc.
   :focus-visible + outline:none neutralise la règle globale input:focus-visible{outline...} (sinon
   anneau accent-2 saturé qui se cumulait au box-shadow). Classe commune → login/signup/forgot/reset alignés. */
.auth-in:focus,.auth-in:focus-visible{border-color:var(--ac);background:color-mix(in srgb,var(--s2) 82%,var(--ac) 7%);box-shadow:0 0 16px color-mix(in srgb,var(--ac) 13%,transparent);outline:none}
.auth-pw-meter{display:flex;gap:5px;margin-top:9px}
.auth-pw-seg{flex:1;height:5px;border-radius:999px;background:var(--s3);transition:background .25s ease}
.auth-pw-txt{font-size:11px;font-weight:700;margin-top:6px;letter-spacing:.2px}
.auth-submit{position:relative;margin-top:22px;background:var(--grad-ac,linear-gradient(135deg,var(--ac),var(--ac2)));color:#fff;border:none;border-radius:10px;padding:13px;font-size:14px;font-weight:700;font-family:var(--fb);letter-spacing:.2px;cursor:pointer;box-shadow:0 6px 20px color-mix(in srgb,var(--ac) 30%,transparent);transition:transform .15s var(--ease-out),filter .15s,box-shadow .15s,opacity .15s}
.auth-submit:hover{filter:brightness(1.08);transform:translateY(-1px);box-shadow:0 10px 26px color-mix(in srgb,var(--ac) 40%,transparent)}
.auth-submit:active{transform:translateY(0)}
.auth-submit:disabled{opacity:.6;cursor:not-allowed;filter:none;transform:none;box-shadow:none}
.auth-err{background:color-mix(in srgb,var(--red) 12%,transparent);border:1px solid color-mix(in srgb,var(--red) 32%,transparent);color:var(--red);font-size:12.5px;line-height:1.5;padding:10px 13px;border-radius:10px;margin-bottom:2px}
.auth-in-wrap{position:relative;display:block}
.auth-in.has-eye{padding-right:46px}
.auth-eye{position:absolute;top:50%;right:7px;transform:translateY(-50%);width:34px;height:34px;display:flex;align-items:center;justify-content:center;background:none;border:none;padding:0;color:var(--tx2);cursor:pointer;border-radius:8px;transition:color .15s,background .15s}
.auth-eye:hover{color:var(--ac2);background:color-mix(in srgb,var(--ac) 14%,transparent)}
.auth-in-wrap:focus-within .auth-eye{color:var(--tx1)}
.auth-eye:focus-visible{outline:2px solid var(--ac2);outline-offset:1px}
.auth-pw-hint{font-size:11px;color:var(--tx3);margin-top:6px}
.auth-submit .auth-submit-lbl{transition:opacity .12s}
.auth-submit.loading{transform:none}
.auth-submit.loading .auth-submit-lbl{opacity:0}
.auth-submit.loading::after{content:'';position:absolute;top:50%;left:50%;width:16px;height:16px;margin:-8px 0 0 -8px;border:2px solid rgba(255,255,255,.45);border-top-color:#fff;border-radius:50%;animation:authSpin .6s linear infinite}
@keyframes authSpin{to{transform:rotate(360deg)}}
.auth-swap{animation:authSwap .22s var(--ease-out,ease)}
@keyframes authSwap{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.auth-done{display:flex;flex-direction:column;align-items:center;text-align:center;padding:30px 26px 26px}
.auth-done-ico{width:56px;height:56px;display:flex;align-items:center;justify-content:center;border-radius:50%;background:color-mix(in srgb,var(--ac) 15%,transparent);color:var(--ac2);margin-bottom:8px}
.auth-done-title{font-family:var(--fd);font-size:19px;font-weight:700;color:var(--tx1)}
.auth-done-lead{font-size:13px;color:var(--tx2);margin-top:4px}
.auth-done-email{font-size:14px;font-weight:700;color:var(--tx1);background:var(--s2);border:1px solid var(--b2);border-radius:var(--rmd);padding:8px 14px;margin:10px 0 4px;max-width:100%;overflow-wrap:anywhere}
.auth-done-hint{font-size:12px;line-height:1.6;color:var(--tx3);margin:8px 0 4px}
.auth-done .auth-submit{width:100%;margin-top:10px}
.auth-done-open{font-size:12.5px;font-weight:600;color:var(--ac2);text-decoration:none;margin-top:14px}
.auth-done-open:hover{text-decoration:underline}
.auth-done-back{margin-top:14px;background:none;border:none;color:var(--tx3);font-size:12.5px;font-family:var(--fb);cursor:pointer}
.auth-done-back:hover{color:var(--tx1)}
/* Écran "Mot de passe oublié" (#authForgot) — sibling de .auth-form → sans ça pas de padding ni de
   colonne flex : contenu collé aux bords + bouton pas pleine largeur. MÊME DA que sign in (padding 26,
   head centré, submit pleine largeur). #authForgotOk = confirmation centrée (comme .auth-done). */
.auth-forgot{display:flex;flex-direction:column;padding:26px}
#authForgotForm{display:flex;flex-direction:column}
#authForgotOk{display:flex;flex-direction:column;align-items:center;text-align:center}
.verify-banner strong{color:var(--tx1)}
.verify-banner .vb-ghost{background:none;border:1px solid color-mix(in srgb,var(--gold) 45%,transparent);color:var(--tx1)}
.verify-banner .vb-x{background:none;border:none;color:var(--tx2);padding:2px 6px;cursor:pointer;display:inline-flex;align-items:center}
.verify-banner .vb-x:hover{color:var(--tx1)}
.account-menu{min-width:220px}
.acct-hdr{display:flex;align-items:center;gap:10px;padding:4px 6px 12px;border-bottom:1px solid var(--b1);margin-bottom:6px}
.acct-av{width:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:800;color:#fff;flex-shrink:0}
.acct-email{font-size:12px;color:var(--tx2);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.acct-item{display:block;width:100%;background:none;border:none;padding:9px 8px;border-radius:var(--rmd);font-size:13px;font-weight:600;color:var(--tx2);cursor:pointer;text-align:left;transition:background .12s,color .12s}
.acct-item:hover{background:var(--s2);color:var(--tx1)}
.acct-signout{color:var(--red)}
#accountBtn{padding:0}
#signInBtn{background:color-mix(in srgb,var(--ac) 12%,transparent);border:1px solid color-mix(in srgb,var(--ac) 25%,transparent);color:var(--ac2);border-radius:var(--rmd);height:36px;padding:0 14px;font-size:13px;font-weight:600;font-family:var(--fb);cursor:pointer;white-space:nowrap;transition:all .2s}
#signInBtn:hover{background:color-mix(in srgb,var(--ac) 22%,transparent);color:var(--tx1)}
.verify-banner{display:flex;align-items:center;justify-content:center;gap:12px;flex-wrap:wrap;background:color-mix(in srgb,var(--gold) 12%,transparent);border-bottom:1px solid color-mix(in srgb,var(--gold) 32%,transparent);color:var(--tx1);font-size:12.5px;padding:8px 16px}
.verify-banner button{background:var(--gold);color:#1a1526;border:none;border-radius:var(--rsm);padding:4px 13px;font-size:12px;font-weight:700;font-family:var(--fb);cursor:pointer}
.acct-danger{color:var(--red)}
.auth-consent{display:flex;align-items:flex-start;gap:9px;margin-top:16px;font-size:12.5px;line-height:1.5;color:var(--tx2)}
.auth-consent input{margin-top:2px;width:15px;height:15px;flex-shrink:0;accent-color:var(--ac);cursor:pointer}
.auth-consent label{cursor:pointer}
.auth-consent a{color:var(--ac2);font-weight:600;text-decoration:none}
.auth-consent a:hover{text-decoration:underline}
.del-warn{background:color-mix(in srgb,var(--red) 10%,transparent);border:1px solid color-mix(in srgb,var(--red) 30%,transparent);color:var(--tx2);font-size:12.5px;line-height:1.6;padding:11px 13px;border-radius:var(--rmd);margin-bottom:8px}
.del-warn strong{color:var(--red)}
.auth-submit.danger{background:var(--red)}
.auth-submit.danger:hover{filter:brightness(1.08)}
@media(max-width:560px){.auth-overlay{padding-top:8vh}.auth-form{padding:22px 20px}.auth-title{font-size:20px}}
/* ── ACCOUNT PAGE (page dédiée) ─────────────────────────────────── */
#rp-account{max-width:760px;margin:0 auto}
#rp-account .card{margin-bottom:16px}
.acct-hero{display:flex;align-items:center;gap:18px;padding:22px 20px}
.acct-hero-av{width:60px;height:60px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:24px;font-weight:800;color:#fff;flex-shrink:0;font-family:var(--fd)}
.acct-hero-info{flex:1;min-width:0}
.acct-hero-email{font-family:var(--fd);font-size:20px;font-weight:700;color:var(--tx1);letter-spacing:-.3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.acct-hero-badges{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:9px}
.acct-mini-btn{background:none;border:none;color:var(--ac2);font-size:12px;font-weight:600;font-family:var(--fb);cursor:pointer;padding:0;text-decoration:underline}
.acct-mini-btn:hover{color:var(--tx1)}
.acct-linked{display:flex;align-items:center;gap:14px}
.acct-linked-av{width:44px;height:44px;border-radius:10px;background:var(--s2);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:14px;color:var(--tx1);flex-shrink:0}
.acct-linked-name{font-weight:700;font-size:15px;color:var(--tx1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.acct-linked-id{font-size:12px;color:var(--tx3);margin-top:2px}
.acct-linked-actions{display:flex;gap:8px;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end}
.acct-dev-gen{display:flex;gap:10px;flex-wrap:wrap}
.acct-dev-input{flex:1;min-width:180px;background:var(--s2);border:1px solid var(--b2);border-radius:10px;padding:10px 13px;font-size:13px;color:var(--tx1);font-family:var(--fb);outline:none;transition:border-color .15s,box-shadow .15s}
.acct-dev-input:focus{border-color:var(--ac);box-shadow:0 0 0 3px color-mix(in srgb,var(--ac) 20%,transparent)}
.acct-dev-list{display:flex;flex-direction:column;gap:8px;margin-top:14px}
.acct-dev{display:flex;align-items:center;gap:12px;background:var(--s2);border:1px solid var(--b1);border-radius:10px;padding:11px 14px}
.acct-dev-ico{width:34px;height:34px;border-radius:8px;background:var(--acdim);color:var(--ac2);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.acct-dev-label{font-weight:600;font-size:13.5px;color:var(--tx1)}
.acct-dev-sub{font-size:11.5px;color:var(--tx3);margin-top:2px}
.acct-revoke{flex-shrink:0}
.acct-revoke:hover{color:var(--red);border-color:color-mix(in srgb,var(--red) 40%,transparent)}
.acct-token-reveal{background:color-mix(in srgb,var(--ac) 8%,transparent);border:1px solid var(--b3);border-radius:12px;padding:14px;margin-bottom:14px}
.acct-token-warn{font-size:12px;font-weight:600;color:var(--gold);margin-bottom:9px;line-height:1.4}
.acct-token-val{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;color:var(--tx1);background:var(--bg0);border:1px solid var(--b1);border-radius:8px;padding:10px 12px;word-break:break-all;user-select:all;margin-bottom:10px}
.acct-token-actions{display:flex;gap:8px}
/* Features compte — F1 pseudo (hero) · F2 avatar (hero/navbar img + galerie) · F4 forgot link */
.acct-hero-nick{font-family:var(--fd);font-size:15px;font-weight:700;color:var(--ac2);margin-bottom:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.acct-av-img{overflow:hidden;background:var(--s3)}
.acct-av-img img{width:100%;height:100%;object-fit:cover;display:block}
.acct-av-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(52px,1fr));gap:8px;max-height:288px;overflow-y:auto;padding:2px}
.acct-av-opt{padding:0;border:2px solid transparent;border-radius:10px;background:var(--s2);cursor:pointer;overflow:hidden;aspect-ratio:1;transition:border-color .15s,transform .1s}
.acct-av-opt img{width:100%;height:100%;object-fit:cover;display:block}
.acct-av-opt:hover{border-color:var(--b3);transform:translateY(-1px)}
.acct-av-opt.sel{border-color:var(--ac);box-shadow:0 0 0 3px color-mix(in srgb,var(--ac) 20%,transparent)}
.auth-forgot-link{display:block;width:100%;background:none;border:none;color:var(--ac2);font-size:12.5px;font-family:var(--fb);cursor:pointer;margin-top:12px;padding:2px;text-align:center}
.auth-forgot-link:hover{color:var(--tx1);text-decoration:underline}
.acct-row{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:14px 16px}
.acct-row-desc{flex:1;min-width:200px;font-size:13px;color:var(--tx3);line-height:1.5}
.acct-btn-danger{background:var(--red);color:#fff;border:none;border-radius:var(--rmd);padding:9px 16px;font-size:13px;font-weight:700;font-family:var(--fb);cursor:pointer;transition:filter .15s;flex-shrink:0}
.acct-btn-danger:hover{filter:brightness(1.08)}
.acct-signout-row{display:flex;justify-content:center;margin-top:8px}
@media(max-width:560px){.acct-hero{flex-direction:column;text-align:center}.acct-hero-badges{justify-content:center}.acct-linked{flex-direction:column;align-items:flex-start}.acct-linked-actions{width:100%;justify-content:flex-start}}

/* ══ HOME — REFONTE VISUELLE (PILOTE, home uniquement) ════════════════════════════════════════
   Le look "safe/centré" faisait générique. Cure = décisions assumées, pas d'effets empilés :
   • composition ÉDITORIALE asymétrique (type à gauche, panneau artwork à droite) ;
   • titre Space Grotesk affirmé, "Valhalla" en violet FLAT (aucun dégradé texte) = signature ;
   • motif SVG angulaire "arène/lames" + crochets d'angle = identité gaming, sans glow empilé ;
   • entrée orchestrée subtile (1re visite, coupée par le prefers-reduced-motion global l.1256).
   Bloc auto-contenu en fin de fichier → gagne la cascade sur les règles .hero d'origine (retirable). */
.hero{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,clamp(230px,30%,360px));gap:clamp(22px,4vw,44px);align-items:center;text-align:left;padding:clamp(26px,4.5vw,48px) clamp(20px,3vw,32px);margin-bottom:22px;overflow:visible}
.hero-main{min-width:0;max-width:600px}
.hero-logo{display:block;margin:0 0 20px;height:clamp(30px,3.4vw,38px);width:auto;filter:none}
.hero-eyebrow{display:inline-flex;align-items:center;gap:9px;font-family:var(--fb);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:1.5px;color:var(--ac2);margin-bottom:16px}
.hero-eyebrow-mk{width:11px;height:11px;flex-shrink:0;background:var(--ac);clip-path:polygon(0 0,100% 50%,0 100%)}   /* petite lame violette */
.hero-head{font-family:var(--fd);font-weight:800;font-size:clamp(34px,6vw,58px);line-height:1;letter-spacing:-.025em;color:var(--tx1);margin:0 0 16px}
.hero-head span{display:block}
.hero-head em{font-style:normal;display:block;color:var(--ac2)}   /* "Valhalla" — violet FLAT sur sa ligne = présence */
.hero-sub{font-size:clamp(14px,1.5vw,15.5px);color:var(--tx2);line-height:1.55;max-width:430px;margin:0 0 26px}
.hero-srch-rel{position:relative;max-width:440px;margin:0 0 12px;z-index:500}   /* left-align + z-index conservé (>#heroSug) */
.hero-hint{margin:10px 0 16px;text-align:left}
.chips{justify-content:flex-start}
/* Légende LIBÉRÉE (artwork immersif) : PNG transparent en <img>, plus grand, qui DÉBORDE à droite
   (clippé par body{overflow-x:hidden} → aucun scroll horizontal) et en bas, SANS cadre/bordure/fond/
   crochets. Masque de fondu GAUCHE + BAS → la légende émerge du fond sombre sans bord franc (surtout
   à gauche, pour ne pas couper net près du texte). Halo violet TRÈS subtil derrière pour l'ancrer.
   RETIRÉS (étaient la "boîte") : background-image, border, border-radius, background-color, et les
   crochets d'angle ::before/::after. */
.hero-art{position:relative;align-self:stretch;min-height:clamp(210px,26vw,310px);overflow:visible;background:radial-gradient(58% 54% at 64% 44%,color-mix(in srgb,var(--ac) 8%,transparent),transparent 72%)}
.hero-art-img{position:absolute;right:-6%;bottom:-10%;height:clamp(250px,36vw,420px);width:auto;max-width:none;object-fit:contain;pointer-events:none;-webkit-mask-image:linear-gradient(to right,transparent,#000 26%),linear-gradient(to top,transparent,#000 18%);-webkit-mask-composite:source-in;mask-image:linear-gradient(to right,transparent,#000 26%),linear-gradient(to top,transparent,#000 18%);mask-composite:intersect}
.home-band{width:100%;min-height:clamp(90px,12vw,150px);border-radius:var(--rlg);border:1px solid var(--b2);background:var(--bg1);margin-bottom:20px}
/* ➜ FUTUR VISUEL (bande) : retirer display:none (markup) + .home-band{background-image:url("/assets/…");background-size:cover;background-position:center} */
.leg-mq-item{width:clamp(38px,4.4vw,46px);height:clamp(38px,4.4vw,46px);border-radius:12px}
.leg-mq-item:hover{transform:scale(1.16);box-shadow:0 6px 20px rgba(0,0,0,.42);z-index:3}   /* un seul shadow de profondeur (plus de double glow accent) */
.leg-marquee{gap:8px}
/* Entrée orchestrée en 2 GROUPES (bloc texte + panneau art) — pas de stagger 6-pas "landing IA". */
@keyframes heroRise{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
#rp-home:not(.rp-seen) .hero-main{animation:heroRise .5s var(--ease-out) both}
#rp-home:not(.rp-seen) .hero-art{animation:heroRise .55s .1s var(--ease-out) both}
@media(max-width:860px){.hero{grid-template-columns:1fr;gap:20px}.hero-art{min-height:clamp(150px,40vw,210px)}.hero-art-img{height:clamp(190px,46vw,300px);right:-4%;bottom:-6%}}
@media(max-width:560px){.hero-art{display:none}.leg-mq-item{width:34px;height:34px;border-radius:10px}}

/* ── SPLASH (révélation logo, 1×/session) ─────────────────────────────────────
   Couche indépendante par-dessus le site (z-index max). Caché par défaut (#splash) ;
   affiché + animé seulement quand <html> porte .splash-on (posé inline au boot, cf. index.html).
   Le master fait le fondu de sortie (fill-mode:forwards → auto-masqué même sans JS).
   Animation logo = ZOOM DOUX (fondu + léger agrandissement .93→1) + glow violet. */
#splash{display:none}
.splash-on #splash{position:fixed;inset:0;z-index:100000;display:flex;align-items:center;justify-content:center;background:var(--bg0);animation:splash-master 1.85s cubic-bezier(.4,0,.2,1) forwards}
.sp-stage{position:relative;width:clamp(180px,42vw,340px);line-height:0}
.sp-logo{display:block;width:100%;height:auto;animation:splash-zoom 1.5s cubic-bezier(.2,.7,.15,1) both}
/* Glow : calque violet masqué à la forme du logo (le PNG est RGBA), flou léger + léger scale, blend screen, monte à opacity .28. */
.sp-glow{position:absolute;inset:0;background:var(--ac);-webkit-mask:url(/assets/logo/logo.png) center/contain no-repeat;mask:url(/assets/logo/logo.png) center/contain no-repeat;filter:blur(8px);transform:scale(1.06);mix-blend-mode:screen;opacity:0;pointer-events:none;animation:splash-glow 1.5s ease-out both}
@keyframes splash-master{0%,81%{opacity:1;visibility:visible}100%{opacity:0;visibility:hidden}}
@keyframes splash-zoom{0%{opacity:0;transform:scale(.93)}100%{opacity:1;transform:scale(1)}}
@keyframes splash-glow{0%{opacity:0}100%{opacity:.28}}
@keyframes splash-fade{0%,55%{opacity:1;visibility:visible}100%{opacity:0;visibility:hidden}}
/* Reduced-motion : pas d'animation — logo à opacité finale, glow statique à .28, retrait quasi immédiat. */
@media (prefers-reduced-motion:reduce){
  .splash-on #splash{animation:splash-fade .7s ease .35s forwards}
  .sp-logo{animation:none;opacity:1;transform:none}
  .sp-glow{animation:none;opacity:.28}
}

/* ── CREDITS (colophon éditorial — DA home : Space Grotesk fort, aligné gauche, accents violets FLAT,
   liseré + pastille "blade", hover qui répond ; pas de glassmorphism ni symétrie molle). Contenu EN en dur. */
.cr-wrap{max-width:920px;margin:0 auto}
.cr-hero{margin:2px 0 30px}
.cr-eyebrow{display:inline-flex;align-items:center;gap:8px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:1.5px;color:var(--ac2);margin-bottom:14px}
.cr-blade{width:11px;height:11px;flex-shrink:0;background:var(--ac);clip-path:polygon(0 0,100% 50%,0 100%)}
.cr-title{font-family:var(--fd);font-weight:800;font-size:clamp(40px,7.5vw,68px);line-height:.98;letter-spacing:-.03em;color:var(--tx1);margin:0}
.cr-tagline{font-size:15px;color:var(--tx2);line-height:1.6;max-width:440px;margin:14px 0 0}
.cr-legal{font-size:11.5px;color:var(--tx4);margin:16px 0 0;letter-spacing:.2px}
/* Équipe : 2 cartes à identité + décalage vertical de la 2e → rythme (pas d'alignement plat) */
.cr-team{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin-bottom:16px}
.cr-person{display:flex;gap:16px;background:var(--s1);border:1px solid var(--b1);border-left:3px solid var(--ac);border-radius:var(--rlg);padding:22px;transition:transform .15s var(--ease-out),border-color .15s,box-shadow .15s}
.cr-team .cr-person:nth-child(2){margin-top:22px}
.cr-person:hover{transform:translateY(-3px);border-left-color:var(--ac2);box-shadow:0 14px 34px rgba(0,0,0,.34)}
.cr-av{width:56px;height:56px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-family:var(--fd);font-size:22px;font-weight:800}
.cr-av-solid{background:linear-gradient(135deg,var(--ac),var(--ac2));color:#fff;box-shadow:0 6px 20px var(--acglow)}
.cr-av-outline{background:color-mix(in srgb,var(--ac) 14%,transparent);border:2px solid color-mix(in srgb,var(--ac) 40%,transparent);color:var(--ac2)}
.cr-cat{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--ac2);margin-bottom:5px}
.cr-name{font-family:var(--fd);font-size:19px;font-weight:800;letter-spacing:-.3px;color:var(--tx1);line-height:1.1}
.cr-role{font-size:12px;color:var(--tx3);margin-top:2px}
.cr-desc{font-size:12.5px;color:var(--tx2);line-height:1.6;margin:10px 0 0}
/* Data Sources : bande pleine largeur, liste à pastilles "blade" */
.cr-sources{background:var(--s1);border:1px solid var(--b1);border-radius:var(--rlg);padding:22px}
.cr-sources .cr-eyebrow{margin-bottom:16px}
.cr-src-list{display:flex;flex-direction:column;gap:16px}
.cr-src{display:flex;align-items:flex-start;gap:14px}
.cr-src-ic{position:relative;width:38px;height:38px;flex-shrink:0;border-radius:11px;background:color-mix(in srgb,var(--ac) 12%,transparent);border:1px solid var(--b3)}
.cr-src-ic::before{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:11px;height:11px;background:var(--ac);clip-path:polygon(0 0,100% 50%,0 100%)}
.cr-src-name{font-family:var(--fd);font-size:14px;font-weight:700;color:var(--tx1)}
.cr-src-desc{font-size:12px;color:var(--tx3);line-height:1.55;margin:3px 0 0}
@media(max-width:640px){.cr-team{grid-template-columns:1fr}.cr-team .cr-person:nth-child(2){margin-top:0}.cr-person{padding:18px;gap:13px}.cr-sources{padding:18px}}

/* ===== XP / LEVEL — MONTAGE INCONDITIONNEL =========================================
   La carte "Level & XP" (#xpCard) et les puces Level (.ph-rank-lvl / .dash-lvl-mini)
   sont TOUJOURS montées dans le DOM, puis masquées par ces classes tant qu'aucune
   valeur n'est connue. Raison : l'API BH omet parfois xp/level du payload top-level ;
   le patch dair différé (applyDairToProfile / applyDairToDashboard) ne sait que
   REMPLIR un nœud existant — sans montage préalable, la donnée était jetée.
   Sélecteurs à 2 classes (0,2,0) + placés en fin de fichier : ils gagnent la cascade
   sur `.card`, et switchProfTab (qui écrit style.display='') ne les neutralise pas
   puisqu'il efface l'inline sans toucher aux classes. Ne pas affaiblir en 1 classe. */
.card.xpc-off,.ph-rank-lvl.phl-off,.dash-lvl-mini.phl-off{display:none}
/* Même règle pour la section « Teams 2v2 » (onglet + carte) : montées masquées, révélées par
   patch2v2 quand dair répond. ⚠️ La carte porte `ptab-ranked2v2` → switchProfTab lui écrit
   style.display='' : masquer en INLINE serait effacé au 1er changement d'onglet, d'où la CLASSE.
   Sélecteurs 2 classes (0,2,0) + fin de fichier → gagnent la cascade sur `.card`/`.tb`. */
.card.t2v2-off,.tb.t2v2-off{display:none}
/* Bandeau « Total Game Time » du profil — MÊME PIÈGE, sens inverse : il porte `ptab-overview`,
   donc switchProfTab lui écrit style.display='' au retour sur Overview. Un `display:flex` posé
   en INLINE est donc EFFACÉ au premier aller-retour d'onglet → le bandeau retombe en `block` et
   s'empile verticalement (temps, AVG GAME, DPS les uns sous les autres). Le `display` doit vivre
   ICI, en classe, pour survivre à l'effacement de l'inline ; le masquage hors Overview reste
   inline (`display:none`), qui l'emporte sur cette règle. NE PAS réintroduire display:flex en
   inline sur ce bloc. Les deux autres blocs du même lot (carte Stats, Unarmed & Throws) ne sont
   PAS concernés : ce sont des `.card` sans display inline, ils retombent sur `.card`. */
.gt-banner{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
/* Retour en direct de disponibilité du pseudo (réutilise .auth-pw-hint pour la taille/espacement) */
.auth-pw-hint.nick-ok{color:var(--green)}
.auth-pw-hint.nick-ko{color:var(--red)}

/* ===== LORE QUEST (3e mini-jeu) ====================================================
   Parti pris : l'extrait EST le jeu, donc il est traité comme une page de codex, pas
   comme un bloc d'UI de plus. Une seule audace, tenue : le SERIF (pile système, aucun
   webfont → zéro requête externe, CSP-safe) n'apparaît QUE sur ce texte dans tout le
   produit — c'est de la prose d'archive, pas de l'interface. Signature : la barre de
   CAVIARDAGE de l'en-tête, le nom littéralement noirci, qui se lève à la révélation.
   Tout le reste réutilise le système .mg-* des 2 autres jeux (aucune règle dupliquée). */
.mg-tile-art-lore img{right:-4%;bottom:-10%;height:145%;opacity:.13}
.mg-tile-lines{position:absolute;left:22px;top:26px;right:45%;height:52px;opacity:.5;
  background:repeating-linear-gradient(to bottom,color-mix(in srgb,var(--ac2) 34%,transparent) 0 2px,transparent 2px 11px);
  -webkit-mask-image:linear-gradient(to right,#000,transparent);mask-image:linear-gradient(to right,#000,transparent)}
.mg-tile-lore:hover .mg-tile-lines{opacity:.75}
.lore-slab{position:relative;background:var(--s1);border:1px solid var(--b1);border-left:3px solid var(--ac);
  border-radius:var(--rlg);padding:22px 26px 24px;margin:0 0 16px}
.lore-eyebrow{display:flex;align-items:center;gap:10px;font-size:10px;font-weight:700;text-transform:uppercase;
  letter-spacing:1.6px;color:var(--tx3);margin-bottom:14px}
.lore-redact{display:inline-block;width:86px;height:11px;border-radius:2px;background:var(--tx4);
  transition:width .45s var(--ease-out),opacity .45s var(--ease-out)}
.lore-redact.revealed{width:0;opacity:0}
.lore-text{font-family:"Iowan Old Style","Palatino Linotype",Palatino,Georgia,serif;font-size:19px;line-height:1.75;
  color:var(--tx1);margin:0;max-width:62ch;font-style:italic;quotes:none}
.lore-text::before{content:"“";font-size:44px;line-height:0;vertical-align:-14px;color:var(--ac2);margin-right:4px}
.lore-skel{display:block;height:13px;border-radius:3px;background:var(--s3);margin:0 0 12px;animation:shimmer 1.4s infinite}
.lore-skel.short{width:52%}
.lore-tries{display:flex;align-items:center;gap:7px;margin:0 0 12px}
.lore-tries-l{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--tx3);margin-right:3px}
.lore-dot{width:9px;height:9px;border-radius:50%;background:var(--ac2);box-shadow:0 0 8px color-mix(in srgb,var(--ac2) 45%,transparent)}
.lore-dot.spent{background:var(--s3);box-shadow:none}
.lore-miss{font-size:13px;color:var(--tx2);padding:9px 13px;background:var(--s2);border-left:2px solid var(--red);
  border-radius:var(--rmd);margin:0 0 12px}
@media(max-width:640px){.lore-slab{padding:18px 18px 20px}.lore-text{font-size:17px;line-height:1.7}}
@media (prefers-reduced-motion:reduce){.lore-redact{transition:none}.lore-skel{animation:none}}
/* Invitation non bloquante : compte existant encore sans pseudo (page compte) */
.acct-nick-prompt{display:flex;flex-direction:column;gap:3px;padding:10px 13px;margin:0 0 12px;border-left:2px solid var(--ac);
  background:color-mix(in srgb,var(--ac) 8%,transparent);border-radius:var(--rmd);font-size:12px;color:var(--tx2)}
.acct-nick-prompt b{font-size:13px;color:var(--tx1)}

/* ===== LFT — board « cherche coéquipier » ==========================================
   Parti pris : une petite annonce n'est pas une carte produit. Traitement REGISTRE —
   bandes horizontales denses alignées sur une grille, pas des cartes flottantes
   symétriques dans le vide (le réflexe « généré »). Signature : le LISERÉ GAUCHE
   coloré par le tier (--lft-tier, posé inline depuis tCol()) → au défilement le board
   se lit comme un dégradé de niveau, l'info la plus utile est perçue sans lire.
   Une seule audace, tenue ; tout le reste réutilise les tokens et .auth-in existants. */
.lft-hero{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;flex-wrap:wrap;margin:0 0 20px}
.lft-eyebrow{display:inline-flex;align-items:center;gap:8px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:1.5px;color:var(--ac2)}
.lft-blade{width:9px;height:9px;background:var(--ac);clip-path:polygon(0 0,100% 50%,0 100%)}
.lft-title{font-family:var(--fd);font-weight:800;font-size:clamp(24px,4vw,38px);line-height:1.05;letter-spacing:-.02em;color:var(--tx1);margin:8px 0 6px}
.lft-sub{font-size:13px;color:var(--tx2);line-height:1.55;max-width:52ch;margin:0}
.lft-cta{flex-shrink:0}
.lft-filters{display:flex;align-items:center;gap:9px;flex-wrap:wrap;padding:0 0 14px;border-bottom:1px solid var(--b1);margin-bottom:2px}
.lft-f-lbl{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--tx3)}
.lft-sel{background:var(--s2);color:var(--tx1);border:1px solid var(--b1);border-radius:var(--rmd);padding:6px 10px;font-size:12px;font-family:inherit;cursor:pointer}
.lft-sel:focus-visible{outline:2px solid var(--ac2);outline-offset:1px}
.lft-board{display:flex;flex-direction:column}
.lft-row{display:grid;grid-template-columns:minmax(190px,230px) minmax(0,1fr) minmax(130px,170px);gap:18px;align-items:center;
  padding:14px 18px;border-bottom:1px solid var(--b1);border-left:3px solid var(--lft-tier,var(--tx4));background:var(--s1);transition:background .15s var(--ease-out)}
.lft-row:hover{background:var(--s2)}
.lft-id{display:flex;align-items:center;gap:11px;min-width:0}
.lft-av{width:42px;height:42px;border-radius:50%;overflow:hidden;flex-shrink:0;background:var(--s3);display:flex;align-items:center;justify-content:center}
.lft-av img{width:100%;height:100%;object-fit:cover}
.lft-av-fb{font-size:13px;font-weight:800;color:var(--tx2)}
.lft-id-t{min-width:0}
.lft-name{font-weight:700;font-size:14px;color:var(--tx1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lft-meta{display:flex;align-items:center;gap:6px;margin-top:3px;font-size:11px;color:var(--tx3)}
.lft-meta img{width:16px;height:16px;object-fit:contain}
.lft-tier{font-weight:600}
.lft-unranked{font-style:italic}
.lft-elo{font-family:var(--fd);font-weight:700;color:var(--tx2)}
.lft-body{min-width:0}
.lft-descr{margin:0;font-size:13.5px;line-height:1.6;color:var(--tx1);max-width:62ch;overflow-wrap:anywhere}
.lft-note{margin:5px 0 0;font-size:12px;line-height:1.5;color:var(--tx3);max-width:62ch;overflow-wrap:anywhere}
.lft-side{display:flex;flex-direction:column;align-items:flex-end;gap:5px;text-align:right}
.lft-dc{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:600;color:var(--tx2);background:var(--s3);
  padding:4px 9px;border-radius:var(--rmd);max-width:100%;overflow:hidden}
.lft-dc span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lft-age{font-size:11px;color:var(--tx4)}
.lft-empty{padding:44px 20px;text-align:center;font-size:13px;color:var(--tx3);border-bottom:1px solid var(--b1)}
.lft-form{background:var(--s1);border:1px solid var(--b1);border-left:3px solid var(--ac);border-radius:var(--rlg);padding:16px 18px;margin:14px 0 18px}
.lft-form-note{font-size:11px;color:var(--ac2);margin-bottom:12px;font-weight:600}
.lft-ta{resize:vertical;min-height:70px;font-family:inherit;line-height:1.55}
.lft-opt{color:var(--tx4);font-weight:400;text-transform:none;letter-spacing:0}
.lft-form-act{display:flex;gap:9px;margin-top:14px;flex-wrap:wrap}
.lft-del{background:var(--s3);color:var(--tx2);border:1px solid var(--b1)}
.lft-del:hover{color:var(--red);border-color:var(--red)}
@media(max-width:820px){
  .lft-row{grid-template-columns:1fr;gap:11px;padding:14px}
  .lft-side{align-items:flex-start;text-align:left;flex-direction:row;gap:10px}
}
