
@import url('https://fonts.googleapis.com/css2?family=Outfit:wght@400;600;700;800;900&family=Plus+Jakarta+Sans:wght@300;400;500;600;700;800&display=swap');

:root {
  --bg:#0b0e17;--surface:#131722;--surface2:#1c2130;--surface3:#232a3d;
  --accent:#2addf3;--accent2:#f5c518;--accent3:#ff6b6b;--accent4:#a78bfa;
  --text:#f0f4ff;--muted:#7a8499;--border:rgba(42,221,243,0.15);
  --correct:#22c55e;--wrong:#ef4444;--warn:#f97316;--radius:16px;
  --nav-h:65px;}

/* ═══ THÈME CLAIR (activé par html[data-theme="light"]) ═══ */
html[data-theme="light"]{
  --bg:#f4f6fb;--surface:#ffffff;--surface2:#eef1f7;--surface3:#e2e7f0;
  --accent:#0891b2;--accent2:#c79100;--accent3:#e0506b;--accent4:#7c4dff;
  --text:#1a2233;--muted:#5a6478;--border:rgba(8,145,178,0.18);
  --correct:#15803d;--wrong:#dc2626;--warn:#ea580c;
}

/* ═══ COULEURS D'ACCENT (data-accent sur <html>) ═══ */
html[data-accent="bleu"]{   --accent:#3b82f6; --accent4:#60a5fa; --border:rgba(59,130,246,0.18); }
html[data-accent="vert"]{   --accent:#22c55e; --accent4:#4ade80; --border:rgba(34,197,94,0.18); }
html[data-accent="violet"]{ --accent:#a78bfa; --accent4:#c4b5fd; --border:rgba(167,139,250,0.18); }
html[data-accent="orange"]{ --accent:#f97316; --accent4:#fb923c; --border:rgba(249,115,22,0.18); }
html[data-accent="rouge"]{  --accent:#ef4444; --accent4:#f87171; --border:rgba(239,68,68,0.18); }
*{margin:0;padding:0;box-sizing:border-box;}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;text-size-adjust:100%;
  /* html reste le conteneur de défilement vertical racine (anti-écran-figé mobile) */
  height:auto;overflow-y:visible;}
/* overflow-x:hidden UNIQUEMENT sur body : éviter le double conteneur de scroll
   html+body qui fige Safari iOS / WebView Android. Pas de position:relative ici. */
body{width:100%;overflow-x:hidden;overflow-y:visible;-webkit-overflow-scrolling:touch;
  touch-action:pan-y;overscroll-behavior-x:none;}
body{font-family:'Plus Jakarta Sans',sans-serif;background:var(--bg);color:var(--text);min-height:100vh;
  -webkit-tap-highlight-color:transparent;}

/* Stars */
body::before{content:'';position:fixed;inset:0;background-image:
  radial-gradient(1px 1px at 15% 25%,rgba(42,221,243,0.4) 0%,transparent 100%),
  radial-gradient(1px 1px at 75% 8%,rgba(245,197,24,0.35) 0%,transparent 100%),
  radial-gradient(1px 1px at 45% 65%,rgba(42,221,243,0.25) 0%,transparent 100%),
  radial-gradient(1px 1px at 8%  78%,rgba(255,107,107,0.25) 0%,transparent 100%),
  radial-gradient(1px 1px at 88% 55%,rgba(167,139,250,0.25) 0%,transparent 100%),
  radial-gradient(1px 1px at 60% 90%,rgba(42,221,243,0.2) 0%,transparent 100%),
  radial-gradient(1px 1px at 30% 50%,rgba(245,197,24,0.15) 0%,transparent 100%);
  pointer-events:none;z-index:0;}
#app{position:relative;z-index:1;min-height:100vh;}

/* ═══ NAV ═══ */
nav{display:flex;align-items:center;justify-content:space-between;padding:1rem 2rem;
  border-bottom:1px solid var(--border);backdrop-filter:blur(12px);
  height:var(--nav-h);position:sticky;top:0;z-index:100;background:rgba(11,14,23,0.85);}
#wordbar-host{position:sticky;z-index:99;}
.logo{font-family:'Outfit',serif;font-size:1.3rem;font-weight:900;color:var(--accent);letter-spacing:-0.02em;cursor:pointer;}
.logo span{color:var(--accent2);}
.nav-center{display:flex;align-items:center;gap:0.5rem;}
.player-badge{display:flex;align-items:center;gap:0.5rem;padding:0.35rem 0.85rem;
  background:var(--surface);border:1px solid var(--border);border-radius:50px;font-size:0.82rem;}
.player-avatar{width:22px;height:22px;border-radius:50%;background:var(--accent);
  color:var(--bg);display:flex;align-items:center;justify-content:center;font-size:0.65rem;font-weight:700;}
.nav-btns{display:flex;gap:0.6rem;}
.btn{padding:0.45rem 1.1rem;border-radius:50px;border:1px solid var(--border);background:transparent;
  color:var(--text);font-family:'Plus Jakarta Sans',sans-serif;font-size:0.82rem;font-weight:500;cursor:pointer;transition:all 0.2s;}
.btn:hover{background:var(--surface2);border-color:var(--accent);color:var(--accent);}
.btn.primary{background:var(--accent);color:var(--bg);border-color:var(--accent);font-weight:600;}
.btn.primary:hover{opacity:0.85;}
.btn.danger{border-color:var(--wrong);color:var(--wrong);}
.btn.danger:hover{background:rgba(239,68,68,0.1);}
.btn.warn{border-color:var(--warn);color:var(--warn);}

/* ═══ SCREENS ═══ */
.screen{display:none;}
.screen.active{display:block;}

/* ═══ CORRECTIFS SCROLL (v2 — cause racine corrigée plus haut) ═══
   Ici on ne touche PLUS à html/body (déjà réglés) : on garantit seulement
   que le contenu et les overlays restent atteignables. */
#app { min-height: 100vh; min-height: 100dvh; padding-bottom: env(safe-area-inset-bottom, 0); }
.screen.active { padding-bottom: 2.5rem; }          /* respiration en bas de page */

/* Tout overlay/modale plein écran (inline OU classe) doit défiler si son
   contenu dépasse l'écran. On couvre les deux écritures (avec/sans espace). */
[style*="position:fixed"][style*="inset:0"],
[style*="position: fixed"][style*="inset: 0"],
[style*="position:fixed"][style*="top:0"],
[style*="position: fixed"][style*="top: 0"]{
  overflow-y: auto !important;
  -webkit-overflow-scrolling: touch;
}
/* Sur petits écrans, un overlay centré coupe le contenu : on le rend défilable
   depuis le haut au lieu de le centrer rigidement. */
@media (max-height: 760px){
  [style*="position:fixed"][style*="align-items:center"],
  [style*="position: fixed"][style*="align-items: center"]{
    align-items: flex-start !important;
  }
}
/* Conteneur interne de modale : ne jamais dépasser l'écran, défiler dedans. */
.fhaf-modal-body{ max-height: 88vh; max-height: 88dvh; overflow-y: auto; -webkit-overflow-scrolling: touch; }
@keyframes qlivePop{ 0%{transform:scale(0.85);opacity:0;} 60%{transform:scale(1.04);} 100%{transform:scale(1);opacity:1;} }

/* ═══ HOME ═══ */
#home{display:none;flex-direction:column;align-items:center;justify-content:center;
  min-height:calc(100vh - var(--nav-h));padding:2rem;text-align:center;}
#home.active{display:flex;}
.home-title{font-family:'Outfit',serif;font-size:clamp(2.4rem,6vw,4.2rem);
  font-weight:900;line-height:1.05;margin-bottom:0.75rem;letter-spacing:-0.02em;}
.home-title .line1{color:var(--text);display:block;}
.home-title .line2{color:var(--accent);display:block;
  background:linear-gradient(120deg,var(--accent),var(--accent4));
  -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;}
.home-sub{color:var(--muted);font-size:1.02rem;margin-bottom:2rem;max-width:480px;line-height:1.6;}
.home-sub em{color:var(--accent2);font-style:normal;font-weight:600;}
/* Carte de jeu groupée : champ + bouton dans un même bloc cohérent */
.home-play-card{background:var(--surface);border:1px solid var(--border);
  border-radius:20px;padding:1.25rem;margin-bottom:1.5rem;width:100%;max-width:480px;}
.home-name-row{display:flex;flex-direction:column;gap:0.65rem;margin-bottom:2rem;width:100%;max-width:420px;}
.home-name-input{width:100%;padding:0.9rem 1.25rem;background:var(--surface);
  border:1.5px solid var(--border);border-radius:50px;color:var(--text);
  font-family:'Plus Jakarta Sans',sans-serif;font-size:1rem;outline:none;transition:all 0.2s;
  box-sizing:border-box;}
.home-name-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(42,221,243,0.12);}
.home-name-btns{display:flex;gap:0.65rem;width:100%;}
.btn-start{flex:1;padding:0.85rem 1.5rem;background:var(--accent);color:var(--bg);border:none;
  border-radius:50px;font-family:'Plus Jakarta Sans',sans-serif;font-size:1rem;font-weight:700;
  cursor:pointer;transition:all 0.2s;letter-spacing:0.02em;white-space:nowrap;}
.btn-start:hover{transform:translateY(-2px);box-shadow:0 8px 24px rgba(42,221,243,0.35);}
.btn-start:active{transform:translateY(0);}
@media(min-width:520px){
  .home-name-row{flex-direction:row;flex-wrap:wrap;}
  .home-name-input{flex:1;min-width:0;}
  .home-name-btns{flex-direction:row;width:auto;}
  .btn-start{flex:none;}
}
.home-stats{display:flex;gap:0.6rem;flex-wrap:wrap;justify-content:center;}
.stat-pill{display:flex;align-items:center;gap:0.4rem;padding:0.5rem 0.95rem;
  background:var(--surface);border:1px solid var(--border);border-radius:50px;font-size:0.82rem;color:var(--muted);
  transition:border-color 0.2s;}
.stat-pill:hover{border-color:var(--accent);}
.stat-pill strong{color:var(--accent);}
/* Eyebrow de section harmonisé (réutilisable sur toute la home) */
.home-eyebrow{font-size:0.7rem;text-transform:uppercase;letter-spacing:0.1em;
  color:var(--muted);font-weight:700;margin-bottom:0.75rem;}

/* ═══ THEME SELECTION ═══ */
#theme-select{display:none;flex-direction:column;align-items:center;
  min-height:calc(100vh - var(--nav-h));padding:2.5rem 1.5rem;}
#theme-select.active{display:flex;}
.ts-title{font-family:'Outfit',serif;font-size:clamp(1.6rem,4vw,2.4rem);
  font-weight:900;text-align:center;margin-bottom:0.5rem;}
.ts-sub{color:var(--muted);text-align:center;margin-bottom:2.5rem;font-size:0.9rem;}
.themes-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem;max-width:600px;width:100%;}
@media(min-width:640px){.themes-grid{grid-template-columns:repeat(2,1fr);}}
.theme-card{background:var(--surface);border:1.5px solid var(--border);border-radius:20px;
  padding:1.75rem 1.25rem;cursor:pointer;transition:all 0.25s;text-align:center;position:relative;overflow:hidden;}
.theme-card::before{content:'';position:absolute;inset:0;opacity:0;transition:opacity 0.25s;}
.theme-card:hover{transform:translateY(-4px);border-color:var(--accent);}
.theme-card:hover::before{opacity:1;}
.theme-card.mystery{border-color:var(--accent4);animation:mysterPulse 2.5s ease-in-out infinite;}
@keyframes mysterPulse{0%,100%{box-shadow:0 0 0 0 rgba(167,139,250,0);}50%{box-shadow:0 0 20px 4px rgba(167,139,250,0.2);}}
.theme-card.revealed{border-color:var(--accent2);animation:none;}
.theme-icon{font-size:2.5rem;margin-bottom:0.75rem;display:block;line-height:1;}
.theme-name{font-size:1rem;font-weight:600;color:var(--text);margin-bottom:0.3rem;}
.theme-count{font-size:0.75rem;color:var(--muted);}
.theme-card.mystery .theme-name{color:var(--accent4);}

/* Variante compacte : 4 thèmes par ligne dans l'accordéon de sélection */
.theme-card.compact{padding:0.75rem 0.4rem;border-radius:14px;}
.theme-card.compact .theme-icon{font-size:1.5rem;margin-bottom:0.35rem;}
.theme-card.compact .theme-name{font-size:0.7rem;font-weight:600;line-height:1.25;
  margin-bottom:0.15rem;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.theme-card.compact .theme-count{font-size:0.6rem;}
.theme-card.compact:hover{transform:translateY(-2px);}
@media(max-width:380px){
  .theme-grid-4{grid-template-columns:repeat(2,1fr)!important;}
}
.mystery-reveal-anim{animation:revealPop 0.5s cubic-bezier(0.34,1.56,0.64,1) forwards;}
@keyframes revealPop{0%{transform:scale(0.8);opacity:0;}100%{transform:scale(1);opacity:1;}}

/* ═══ QUIZ SCREEN ═══ */
#quiz{display:none;flex-direction:column;align-items:center;
  min-height:calc(100vh - var(--nav-h));padding:1.5rem 1rem 2rem;}
#quiz.active{display:flex;}

.quiz-topbar{width:100%;max-width:780px;display:flex;align-items:center;
  justify-content:space-between;margin-bottom:1rem;gap:1rem;}
.qbar-left{display:flex;flex-direction:column;gap:0.2rem;}
.q-label{font-size:0.75rem;color:var(--muted);text-transform:uppercase;letter-spacing:0.08em;}
.q-counter{font-family:'Outfit',serif;font-size:1.2rem;font-weight:700;color:var(--text);}
.qbar-right{display:flex;align-items:center;gap:0.75rem;}
.score-chip{background:var(--surface);border:1px solid var(--border);border-radius:50px;
  padding:0.4rem 1rem;font-size:0.85rem;color:var(--accent2);font-weight:700;}
.theme-chip{padding:0.3rem 0.85rem;border-radius:50px;font-size:0.72rem;font-weight:600;
  letter-spacing:0.06em;text-transform:uppercase;border:1px solid;}

/* Progress bar */
.progress-row{width:100%;max-width:780px;display:flex;align-items:center;gap:0.75rem;margin-bottom:1rem;}
.progress-track{flex:1;height:5px;background:var(--surface2);border-radius:99px;overflow:hidden;}
.progress-fill{height:100%;background:linear-gradient(90deg,var(--accent),var(--accent4));
  border-radius:99px;transition:width 0.6s ease;}
.progress-dots-row{width:100%;max-width:780px;display:flex;gap:3px;margin-bottom:1rem;flex-wrap:wrap;}
.pdot{width:5px;height:5px;border-radius:50%;background:var(--surface2);transition:background 0.3s,transform 0.2s;}
.pdot.done{background:var(--correct);}.pdot.fail{background:var(--wrong);}
.pdot.cur{background:var(--accent);transform:scale(1.5);}

/* Circular timer */
/* ── TIMER BARRE ── */
.timer-area{width:100%;max-width:780px;margin-bottom:1rem;}
.timer-bar-wrap{display:flex;align-items:center;gap:0.85rem;}
.timer-bar-track{flex:1;height:8px;background:var(--surface2);border-radius:99px;overflow:hidden;}
.timer-bar-fill{height:100%;border-radius:99px;background:var(--accent);width:100%;}
.timer-num{font-family:'Outfit',serif;font-size:1.1rem;font-weight:900;
  color:var(--accent);min-width:32px;text-align:right;flex-shrink:0;}
@keyframes timerBlink{0%,100%{opacity:1;}50%{opacity:0.2;}}
.timer-danger .timer-bar-fill{background:var(--wrong);}
.timer-danger .timer-num{color:var(--wrong);animation:timerBlink 0.4s ease-in-out infinite;}
.timer-warn .timer-bar-fill{background:var(--warn);}
.timer-warn .timer-num{color:var(--warn);}

/* Question card */
.question-card{width:100%;max-width:780px;background:var(--surface);
  border:1px solid var(--border);border-radius:var(--radius);padding:1.6rem 2rem;margin-bottom:1.1rem;
  animation:slideIn 0.35s cubic-bezier(0.16,1,0.3,1);}
@keyframes slideIn{from{opacity:0;transform:translateY(12px);}to{opacity:1;transform:translateY(0);}}
.q-meta{display:flex;align-items:center;gap:0.6rem;margin-bottom:0.85rem;flex-wrap:wrap;}
.category-badge{display:inline-block;padding:0.25rem 0.75rem;border-radius:50px;
  font-size:0.7rem;font-weight:600;letter-spacing:0.07em;text-transform:uppercase;border:1px solid;}
.type-badge{display:inline-flex;align-items:center;gap:0.35rem;padding:0.2rem 0.7rem;
  border-radius:50px;font-size:0.7rem;font-weight:600;letter-spacing:0.05em;text-transform:uppercase;border:1px solid;}
.question-text{font-family:'Outfit',serif;font-size:clamp(1rem,2.2vw,1.35rem);
  font-weight:700;line-height:1.55;color:var(--text);}
.question-img{width:100%;max-height:260px;object-fit:contain;border-radius:10px;
  margin-top:1rem;border:1px solid var(--border);}

/* QCM */
.answers-grid{width:100%;max-width:780px;display:grid;grid-template-columns:1fr 1fr;gap:0.8rem;
  animation:slideIn 0.4s cubic-bezier(0.16,1,0.3,1);}
@media(max-width:560px){.answers-grid{grid-template-columns:1fr;}}
.answer-btn{display:flex;align-items:center;gap:0.8rem;padding:0.9rem 1.1rem;
  background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);
  cursor:pointer;transition:all 0.18s;text-align:left;color:var(--text);
  font-family:'Plus Jakarta Sans',sans-serif;font-size:0.92rem;font-weight:400;}
.answer-btn:hover:not(:disabled){border-color:var(--accent);background:rgba(42,221,243,0.07);transform:translateY(-2px);}
.answer-btn:disabled{cursor:default;}
.answer-letter{flex-shrink:0;width:28px;height:28px;border-radius:50%;background:var(--surface2);
  border:1px solid var(--border);display:flex;align-items:center;justify-content:center;
  font-size:0.72rem;font-weight:700;color:var(--muted);transition:all 0.18s;}
.answer-btn.correct{background:rgba(34,197,94,0.12);border-color:var(--correct);}
.answer-btn.correct .answer-letter{background:var(--correct);color:white;border-color:var(--correct);}
.answer-btn.wrong{background:rgba(239,68,68,0.1);border-color:var(--wrong);}
.answer-btn.wrong .answer-letter{background:var(--wrong);color:white;border-color:var(--wrong);}

/* FREE */
.free-wrap{width:100%;max-width:780px;animation:slideIn 0.4s cubic-bezier(0.16,1,0.3,1);}
.free-input{width:100%;padding:1rem 1.25rem;background:var(--surface);border:2px solid var(--border);
  border-radius:var(--radius);color:var(--text);font-family:'Outfit',serif;
  font-size:1.1rem;outline:none;transition:all 0.2s;}
.free-input:focus{border-color:var(--accent);}
.free-input.correct-inp{border-color:var(--correct);background:rgba(34,197,94,0.07);}
.free-input.wrong-inp{border-color:var(--wrong);background:rgba(239,68,68,0.06);}
.free-submit{margin-top:0.75rem;width:100%;padding:0.8rem;background:var(--accent);
  color:var(--bg);border:none;border-radius:var(--radius);font-family:'Plus Jakarta Sans',sans-serif;
  font-size:0.95rem;font-weight:700;cursor:pointer;transition:all 0.2s;}
.free-submit:hover{opacity:0.85;}.free-submit:disabled{opacity:0.35;cursor:default;}
.free-hint{font-size:0.77rem;color:var(--muted);margin-top:0.4rem;}
.correct-reveal{margin-top:0.65rem;font-size:0.88rem;color:var(--muted);}
.correct-reveal strong{color:var(--correct);}

/* IMAGES */
.img-grid{width:100%;max-width:780px;display:grid;grid-template-columns:1fr 1fr;gap:0.9rem;
  animation:slideIn 0.4s cubic-bezier(0.16,1,0.3,1);}
@media(max-width:560px){.img-grid{grid-template-columns:1fr;}}
.img-btn{background:var(--surface);border:2px solid var(--border);border-radius:var(--radius);
  cursor:pointer;overflow:hidden;transition:all 0.2s;display:flex;flex-direction:column;padding:0;}
.img-btn:hover:not(:disabled){border-color:var(--accent);transform:translateY(-2px);
  box-shadow:0 6px 20px rgba(42,221,243,0.15);}
.img-btn:disabled{cursor:default;}
.img-btn img{width:100%;height:145px;object-fit:cover;display:block;}
.img-label{padding:0.55rem 0.8rem;display:flex;align-items:center;gap:0.45rem;font-size:0.82rem;color:var(--text);}
.img-letter{width:22px;height:22px;border-radius:50%;background:var(--surface2);border:1px solid var(--border);
  display:flex;align-items:center;justify-content:center;font-size:0.68rem;font-weight:700;color:var(--muted);flex-shrink:0;}
.img-btn.correct{border-color:var(--correct);}
.img-btn.correct .img-label{background:rgba(34,197,94,0.12);color:var(--correct);font-weight:600;}
.img-btn.correct .img-letter{background:var(--correct);color:white;border-color:var(--correct);}
.img-btn.wrong{border-color:var(--wrong);}
.img-btn.wrong .img-label{background:rgba(239,68,68,0.08);color:var(--wrong);}
.img-btn.wrong .img-letter{background:var(--wrong);color:white;border-color:var(--wrong);}

/* Explication */
.expl-box{width:100%;max-width:780px;background:var(--surface);border-left:3px solid var(--accent);
  border-radius:0 var(--radius) var(--radius) 0;padding:0.9rem 1.4rem;margin-top:0.85rem;
  font-size:0.88rem;color:var(--muted);line-height:1.65;display:none;}
.expl-box.vis{display:block;animation:fadeUp 0.3s ease;}
@keyframes fadeUp{from{opacity:0;transform:translateY(6px);}to{opacity:1;transform:translateY(0);}}
.expl-box strong{color:var(--accent);}
.timeout-msg{width:100%;max-width:780px;text-align:center;padding:0.75rem;
  background:rgba(239,68,68,0.1);border:1px solid var(--wrong);border-radius:var(--radius);
  color:var(--wrong);font-weight:600;font-size:0.9rem;margin-bottom:0.5rem;animation:fadeUp 0.3s;}
.next-row{width:100%;max-width:780px;display:flex;justify-content:flex-end;margin-top:1rem;}
@keyframes pulse{0%,100%{transform:scale(1);}50%{transform:scale(1.03);}}
@keyframes popIn{0%{transform:scale(0.5);opacity:0;}70%{transform:scale(1.1);}100%{transform:scale(1);opacity:1;}}

/* ═══ IDENTIFICATION ═══ */
#identification{display:none;flex-direction:column;align-items:center;
  min-height:calc(100vh - var(--nav-h));padding:1.5rem 1rem 2rem;}
#identification.active{display:flex;}
.ident-header{width:100%;max-width:780px;display:flex;align-items:center;
  justify-content:space-between;margin-bottom:1.5rem;}
.ident-title-area{display:flex;align-items:center;gap:0.75rem;}
.ident-logo{font-size:1.6rem;}
.ident-title{font-family:'Outfit',serif;font-size:1.3rem;font-weight:900;color:var(--accent4);}
.ident-sub{font-size:0.8rem;color:var(--muted);}

/* Hourglass */
.hourglass-wrap{display:flex;flex-direction:column;align-items:center;margin-bottom:1.5rem;}
.hourglass-svg{filter:drop-shadow(0 0 12px rgba(167,139,250,0.4));}
.sand-top{transition:all 1s linear;}
.sand-bot{transition:all 1s linear;}
.hourglass-time{font-family:'Outfit',serif;font-size:2.8rem;font-weight:900;
  color:var(--accent4);text-align:center;line-height:1;margin-top:0.5rem;}
.hourglass-label{font-size:0.72rem;color:var(--muted);text-align:center;letter-spacing:0.08em;text-transform:uppercase;margin-top:0.2rem;}
@keyframes hgDanger{0%,100%{color:var(--wrong);}50%{color:rgba(239,68,68,0.4);}}
.hg-danger{animation:hgDanger 0.5s infinite;}

/* Indices */
.indices-container{width:100%;max-width:780px;display:flex;flex-direction:column;gap:0.75rem;margin-bottom:1.25rem;}
.indice-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);
  padding:1.1rem 1.4rem;display:flex;align-items:flex-start;gap:1rem;
  opacity:0;transform:translateY(8px);transition:all 0.45s cubic-bezier(0.16,1,0.3,1);}
.indice-card.revealed{opacity:1;transform:translateY(0);}
.indice-num{flex-shrink:0;width:32px;height:32px;border-radius:50%;
  background:rgba(167,139,250,0.15);border:1.5px solid var(--accent4);
  display:flex;align-items:center;justify-content:center;font-size:0.75rem;font-weight:700;color:var(--accent4);}
.indice-text{font-size:0.95rem;line-height:1.55;color:var(--text);font-family:'Outfit',serif;font-style:italic;}
.indice-pts{margin-left:auto;font-size:0.75rem;font-weight:700;color:var(--accent2);flex-shrink:0;
  padding:0.2rem 0.6rem;background:rgba(245,197,24,0.1);border-radius:50px;border:1px solid rgba(245,197,24,0.2);}

/* Identification input */
.ident-input-area{width:100%;max-width:780px;}
.ident-input{width:100%;padding:1rem 1.4rem;background:var(--surface);border:2px solid var(--accent4);
  border-radius:var(--radius);color:var(--text);font-family:'Outfit',serif;
  font-size:1.15rem;outline:none;transition:all 0.2s;}
.ident-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(42,221,243,0.1);}
.ident-input.correct-inp{border-color:var(--correct);}
.ident-input.wrong-inp{border-color:var(--wrong);}
.ident-submit{margin-top:0.75rem;width:100%;padding:0.85rem;background:var(--accent4);
  color:white;border:none;border-radius:var(--radius);font-family:'Plus Jakarta Sans',sans-serif;
  font-size:0.95rem;font-weight:700;cursor:pointer;transition:all 0.2s;}
.ident-submit:hover{opacity:0.85;}.ident-submit:disabled{opacity:0.35;cursor:default;}
.pts-won{display:inline-block;margin-top:0.6rem;font-size:0.9rem;font-weight:700;
  padding:0.35rem 1rem;border-radius:50px;animation:fadeUp 0.3s;}
.pts-won.pos{background:rgba(34,197,94,0.15);color:var(--correct);border:1px solid rgba(34,197,94,0.3);}
.pts-won.neg{background:rgba(239,68,68,0.1);color:var(--wrong);border:1px solid rgba(239,68,68,0.2);}
.ident-answer-reveal{margin-top:0.75rem;font-size:0.9rem;color:var(--muted);}
.ident-answer-reveal strong{color:var(--accent2);}

/* Category badge IDENT */
.ident-cat-badge{display:inline-flex;align-items:center;gap:0.5rem;padding:0.4rem 1rem;
  border-radius:50px;border:1.5px solid var(--accent4);background:rgba(167,139,250,0.08);
  font-size:0.8rem;color:var(--accent4);font-weight:600;margin-bottom:1.25rem;text-transform:uppercase;letter-spacing:0.07em;}

/* ═══ RESULTS ═══ */
#results{display:none;flex-direction:column;align-items:center;
  min-height:calc(100vh - var(--nav-h));padding:2.5rem 1rem;}
#results.active{display:flex;}
.result-podium{background:var(--surface);border:1px solid var(--border);border-radius:20px;
  padding:2.5rem;max-width:600px;width:100%;text-align:center;
  animation:slideIn 0.5s cubic-bezier(0.16,1,0.3,1);}
.result-emoji{font-size:3.5rem;display:block;margin-bottom:0.75rem;animation:bounce 0.6s 0.3s cubic-bezier(0.34,1.56,0.64,1) both;}
@keyframes bounce{from{transform:scale(0);}to{transform:scale(1);}}
.result-player{font-size:0.9rem;color:var(--muted);margin-bottom:0.35rem;}
.result-score{font-family:'Outfit',serif;font-size:4rem;font-weight:900;
  color:var(--accent);line-height:1;}
.result-pts-label{font-size:0.85rem;color:var(--muted);margin-bottom:0.5rem;}
.result-grade{font-size:1rem;font-weight:600;margin-bottom:2rem;}
.result-breakdown{display:grid;grid-template-columns:repeat(3,1fr);gap:0.85rem;margin-bottom:2rem;}
.bd-item{background:var(--surface2);border-radius:12px;padding:0.85rem;}
.bd-num{font-size:1.4rem;font-weight:700;}.bd-lbl{font-size:0.72rem;color:var(--muted);margin-top:0.15rem;}
.bd-c .bd-num{color:var(--correct);}.bd-w .bd-num{color:var(--wrong);}.bd-t .bd-num{color:var(--accent2);}
.result-actions{display:flex;gap:0.75rem;justify-content:center;flex-wrap:wrap;}
.r-detail-item{display:flex;align-items:flex-start;gap:0.65rem;padding:0.65rem 0.85rem;
  border-radius:10px;margin-bottom:5px;font-size:0.8rem;}
.detail-section{width:100%;max-width:600px;margin-top:1.5rem;}
.detail-title{font-size:0.85rem;color:var(--muted);text-transform:uppercase;letter-spacing:0.08em;
  margin-bottom:0.75rem;text-align:left;}
.detail-item{display:flex;align-items:center;gap:0.75rem;padding:0.65rem 1rem;
  background:var(--surface);border-radius:10px;margin-bottom:0.4rem;font-size:0.85rem;}
.detail-icon{font-size:1rem;flex-shrink:0;}
.detail-q{flex:1;color:var(--muted);}
.detail-result{font-weight:600;font-size:0.8rem;}
.detail-result.ok{color:var(--correct);}.detail-result.ko{color:var(--wrong);}

/* ═══ SETTINGS ═══ */
#settings{display:none;flex-direction:column;align-items:center;
  min-height:calc(100vh - var(--nav-h));padding:2rem 1rem;}
#settings.active{display:flex;}
.settings-wrap{width:100%;max-width:700px;}
.settings-title{font-family:'Outfit',serif;font-size:1.8rem;font-weight:700;margin-bottom:0.3rem;}
.settings-sub{color:var(--muted);margin-bottom:2rem;font-size:0.9rem;}
.settings-section{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);
  padding:1.5rem;margin-bottom:1.25rem;}
.settings-section-title{font-size:0.8rem;text-transform:uppercase;letter-spacing:0.1em;
  color:var(--accent);margin-bottom:1.25rem;font-weight:600;}
.setting-row{display:flex;align-items:center;justify-content:space-between;
  padding:0.65rem 0;border-bottom:1px solid var(--border);}
.setting-row:last-child{border-bottom:none;padding-bottom:0;}
.setting-label{font-size:0.88rem;color:var(--text);}
.setting-desc{font-size:0.75rem;color:var(--muted);margin-top:0.15rem;}
.setting-ctrl{display:flex;gap:0.4rem;flex-wrap:wrap;justify-content:flex-end;}
.opt-btn{padding:0.3rem 0.75rem;border-radius:50px;border:1px solid var(--border);
  background:var(--surface2);color:var(--muted);font-family:'Plus Jakarta Sans',sans-serif;
  font-size:0.8rem;cursor:pointer;transition:all 0.15s;}
.opt-btn.active{border-color:var(--accent);color:var(--accent);background:rgba(42,221,243,0.1);}
/* Toggle switch */
.toggle{position:relative;width:40px;height:22px;cursor:pointer;}
.toggle input{opacity:0;width:0;height:0;}
.toggle-slider{position:absolute;inset:0;background:var(--surface2);border-radius:99px;
  border:1px solid var(--border);transition:all 0.2s;}
.toggle-slider::before{content:'';position:absolute;width:16px;height:16px;
  background:var(--muted);border-radius:50%;top:2px;left:2px;transition:all 0.2s;}
.toggle input:checked + .toggle-slider{background:rgba(42,221,243,0.2);border-color:var(--accent);}
.toggle input:checked + .toggle-slider::before{transform:translateX(18px);background:var(--accent);}

/* ═══ ADMIN ═══ */
#admin{display:none;flex-direction:column;align-items:center;
  min-height:calc(100vh - var(--nav-h));padding:2rem 1rem;}
#admin.active{display:flex;}
.admin-container{width:100%;max-width:920px;}
.admin-title{font-family:'Outfit',serif;font-size:1.7rem;font-weight:700;margin-bottom:0.3rem;}
.admin-sub{color:var(--muted);margin-bottom:2rem;font-size:0.88rem;}
/* Onglets Admin — harmonisés sur le style "pilule" du SuperAdmin */
.admin-tabs{display:flex;gap:0;background:var(--surface2);border-radius:12px;
  padding:4px;margin-bottom:1.25rem;overflow-x:auto;flex-wrap:nowrap;}
.admin-tab{padding:0.6rem 1rem;background:transparent;border:none;color:var(--muted);
  font-family:'Plus Jakarta Sans',sans-serif;font-size:0.85rem;cursor:pointer;border-radius:8px;
  transition:all 0.2s;white-space:nowrap;}
.admin-tab.active{background:var(--surface);color:var(--text);font-weight:600;}
.admin-panel{display:none;}.admin-panel.active{display:block;}
/* Cartes Admin — alias du style SuperAdmin pour cohérence visuelle */
.admin-card{background:var(--surface);border:1px solid var(--border);
  border-radius:16px;padding:1.25rem;margin-bottom:1rem;}
.admin-card-title{font-size:0.75rem;text-transform:uppercase;letter-spacing:0.08em;
  color:var(--muted);font-weight:600;margin-bottom:1rem;
  display:flex;align-items:center;justify-content:space-between;}

/* Type selector */
.type-selector{display:flex;gap:0.6rem;margin-bottom:1.25rem;flex-wrap:wrap;}
.type-opt{padding:0.5rem 1.1rem;border-radius:50px;border:1.5px solid var(--border);
  background:var(--surface);color:var(--muted);font-family:'Plus Jakarta Sans',sans-serif;
  font-size:0.82rem;cursor:pointer;transition:all 0.2s;}
.type-opt.active{border-color:var(--accent);color:var(--accent);background:rgba(42,221,243,0.08);}

/* Form */
.form-section{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);
  padding:1.4rem;margin-bottom:1.1rem;}
.form-row{margin-bottom:0.9rem;}.form-row:last-child{margin-bottom:0;}
label{display:block;font-size:0.78rem;color:var(--muted);margin-bottom:0.35rem;font-weight:500;letter-spacing:0.03em;}
input[type="text"],input[type="url"],select,textarea.json-input{
  width:100%;background:var(--surface2);border:1px solid var(--border);border-radius:10px;
  padding:0.6rem 0.9rem;color:var(--text);font-family:'Plus Jakarta Sans',sans-serif;font-size:0.88rem;
  outline:none;transition:border-color 0.2s;}
input[type="text"]:focus,input[type="url"]:focus,select:focus,textarea.json-input:focus{border-color:var(--accent);}
select option{background:var(--surface2);}
.answers-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0.7rem;}
@media(max-width:540px){.answers-form-grid{grid-template-columns:1fr;}}
.correct-radio{display:flex;align-items:center;gap:0.5rem;margin-top:0.3rem;
  font-size:0.78rem;color:var(--muted);cursor:pointer;}
.correct-radio input{cursor:pointer;accent-color:var(--correct);}
textarea.json-input{min-height:180px;resize:vertical;font-family:'Courier New',monospace;font-size:0.78rem;margin-bottom:0.85rem;}

/* IA Generator */
.ia-section{background:var(--surface);border:1px solid rgba(167,139,250,0.3);border-radius:var(--radius);
  padding:1.4rem;margin-bottom:1.1rem;}
.ia-title{font-size:0.82rem;font-weight:600;color:var(--accent4);text-transform:uppercase;
  letter-spacing:0.08em;margin-bottom:0.85rem;display:flex;align-items:center;gap:0.5rem;}
.ia-row{display:flex;gap:0.75rem;align-items:flex-end;flex-wrap:wrap;}
.ia-input{flex:1;min-width:180px;}
.ia-spinner{display:inline-block;width:16px;height:16px;border:2px solid var(--border);
  border-top-color:var(--accent4);border-radius:50%;animation:spin 0.8s linear infinite;margin-right:0.4rem;}
@keyframes spin{to{transform:rotate(360deg);}}
.ia-result{background:var(--surface2);border:1px solid rgba(167,139,250,0.2);border-radius:12px;
  padding:1rem;margin-top:0.85rem;font-size:0.85rem;line-height:1.6;display:none;}
.ia-result.vis{display:block;animation:fadeUp 0.3s;}

/* Img admin */
.img-answer-admin{display:grid;grid-template-columns:1fr 1fr;gap:0.85rem;}
@media(max-width:540px){.img-answer-admin{grid-template-columns:1fr;}}
.img-ans-block{background:var(--surface2);border:1px solid var(--border);border-radius:12px;padding:0.9rem;}
.img-preview{width:100%;height:80px;object-fit:cover;border-radius:7px;
  border:1px solid var(--border);display:none;margin-bottom:0.45rem;}
.img-upload-btn{display:flex;align-items:center;justify-content:center;gap:0.4rem;
  width:100%;padding:0.45rem;background:var(--surface);border:1px dashed var(--border);
  border-radius:7px;color:var(--muted);font-size:0.78rem;cursor:pointer;
  transition:all 0.2s;position:relative;overflow:hidden;}
.img-upload-btn:hover{border-color:var(--accent);color:var(--accent);}
.img-upload-btn input[type="file"]{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%;height:100%;}
.img-or-url{display:flex;align-items:center;gap:0.4rem;margin:0.4rem 0;font-size:0.72rem;color:var(--muted);}
.img-or-url::before,.img-or-url::after{content:'';flex:1;height:1px;background:var(--border);}

/* Import */
.import-area{background:var(--surface);border:2px dashed var(--border);border-radius:var(--radius);
  padding:1.75rem;text-align:center;cursor:pointer;transition:all 0.2s;margin-bottom:1.25rem;position:relative;}
.import-area:hover{border-color:var(--accent);background:rgba(42,221,243,0.03);}
.import-area input[type="file"]{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%;height:100%;}
.template-box{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);
  padding:1.1rem 1.4rem;margin-bottom:1.1rem;}
.template-box h4{font-size:0.85rem;margin-bottom:0.6rem;color:var(--accent2);}
.template-box pre{font-size:0.7rem;color:var(--muted);line-height:1.65;overflow-x:auto;white-space:pre-wrap;}

/* List */
.q-list{display:flex;flex-direction:column;gap:0.65rem;margin-bottom:1.25rem;}
.q-item{background:var(--surface);border:1px solid var(--border);border-radius:12px;
  padding:0.9rem 1.1rem;display:flex;align-items:flex-start;gap:0.85rem;}
.q-item-num{flex-shrink:0;width:28px;height:28px;border-radius:50%;background:var(--accent);
  color:var(--bg);display:flex;align-items:center;justify-content:center;font-size:0.72rem;font-weight:700;}
.q-type-icon{flex-shrink:0;font-size:1rem;}
.q-item-text{flex:1;font-size:0.85rem;line-height:1.45;}
.q-item-cat{font-size:0.7rem;color:var(--accent);font-weight:600;text-transform:uppercase;letter-spacing:0.06em;margin-bottom:0.15rem;}
.q-item-actions{display:flex;gap:0.4rem;flex-shrink:0;}
.icon-btn{width:28px;height:28px;border-radius:7px;border:1px solid var(--border);background:none;
  color:var(--muted);cursor:pointer;display:flex;align-items:center;justify-content:center;
  font-size:0.82rem;transition:all 0.2s;}
.icon-btn:hover{border-color:var(--wrong);color:var(--wrong);background:rgba(239,68,68,0.07);}
.admin-actions-bar{display:flex;gap:0.7rem;flex-wrap:wrap;margin-top:1.25rem;}
.empty-state{text-align:center;padding:2.5rem 1rem;color:var(--muted);}
.empty-state .es-icon{font-size:2.8rem;margin-bottom:0.75rem;}
.empty-state h3{color:var(--text);margin-bottom:0.4rem;}

/* ═══ TOAST ═══ */
.toast{position:fixed;bottom:2rem;left:50%;transform:translateX(-50%) translateY(100px);
  background:var(--surface);border:1px solid var(--accent);border-radius:50px;
  padding:0.65rem 1.4rem;font-size:0.85rem;color:var(--accent);
  transition:transform 0.35s cubic-bezier(0.34,1.56,0.64,1);z-index:9999;white-space:nowrap;
  box-shadow:0 4px 20px rgba(0,0,0,0.3);}
.toast.show{transform:translateX(-50%) translateY(0);}
.toast.err{border-color:var(--wrong);color:var(--wrong);}

/* Confetti */
.confetti-piece{position:fixed;width:8px;height:8px;border-radius:2px;pointer-events:none;
  animation:cfall linear forwards;z-index:9999;}
@keyframes cfall{0%{transform:translateY(-20px) rotate(0);opacity:1;}100%{transform:translateY(100vh) rotate(720deg);opacity:0;}}

/* Responsive */
@media(max-width:640px){
  nav{padding:0.85rem 1rem;}
  .nav-center{display:none;}
  .quiz-topbar,.progress-row,.progress-dots-row,.question-card,.answers-grid,
  .free-wrap,.img-grid,.expl-box,.next-row,.ident-header,.indices-container,.ident-input-area{max-width:100%;}
}

/* ══════════════════════════════════════════════
   PROFIL / STATS / BADGES / CLASSEMENT
══════════════════════════════════════════════ */

/* Nav badge notif */
.notif-dot{position:absolute;top:-2px;right:-2px;width:8px;height:8px;background:var(--accent3);
  border-radius:50%;border:2px solid var(--bg);animation:notifPop 0.4s cubic-bezier(0.34,1.56,0.64,1);}
@keyframes notifPop{from{transform:scale(0);}to{transform:scale(1);}}
.nav-icon-btn{position:relative;padding:0.45rem 0.75rem;}

/* ── PROFIL SCREEN ── */
#profil{display:none;flex-direction:column;align-items:center;
  min-height:calc(100vh - var(--nav-h));padding:2rem 1rem 3rem;}
#profil.active{display:flex;}
.profil-wrap{width:100%;max-width:900px;}

/* Hero profil */
.profil-hero{background:var(--surface);border:1px solid var(--border);border-radius:24px;
  padding:2rem;margin-bottom:1.5rem;display:flex;align-items:center;gap:2rem;
  position:relative;overflow:hidden;}
.profil-hero::before{content:'';position:absolute;top:-40px;right:-40px;
  width:200px;height:200px;border-radius:50%;
  background:radial-gradient(circle,rgba(42,221,243,0.08) 0%,transparent 70%);pointer-events:none;}
.profil-avatar-big{width:72px;height:72px;border-radius:50%;
  background:linear-gradient(135deg,var(--accent),var(--accent4));
  display:flex;align-items:center;justify-content:center;
  font-size:1.8rem;font-weight:900;color:var(--bg);flex-shrink:0;
  border:3px solid rgba(42,221,243,0.3);}
.profil-info{flex:1;}
.profil-name{font-family:'Outfit',serif;font-size:1.6rem;font-weight:900;margin-bottom:0.2rem;}
.profil-rank-badge{display:inline-flex;align-items:center;gap:0.5rem;padding:0.3rem 0.85rem;
  border-radius:50px;font-size:0.78rem;font-weight:700;letter-spacing:0.05em;margin-bottom:0.5rem;}
.profil-xp-row{display:flex;align-items:center;gap:0.75rem;}
.profil-xp-bar-bg{flex:1;height:6px;background:var(--surface2);border-radius:99px;overflow:hidden;}
.profil-xp-bar{height:100%;background:linear-gradient(90deg,var(--accent),var(--accent4));border-radius:99px;transition:width 1s ease;}
.profil-xp-label{font-size:0.72rem;color:var(--muted);white-space:nowrap;}
.profil-pts{text-align:right;flex-shrink:0;}
.profil-pts-num{font-family:'Outfit',serif;font-size:2rem;font-weight:900;color:var(--accent2);line-height:1;}
.profil-pts-lbl{font-size:0.7rem;color:var(--muted);}

/* Section tabs profil */
.profil-tabs{display:flex;gap:0;border-bottom:1px solid var(--border);margin-bottom:1.5rem;flex-wrap:wrap;}
.profil-tab{padding:0.65rem 1.2rem;background:none;border:none;color:var(--muted);
  font-family:'Plus Jakarta Sans',sans-serif;font-size:0.85rem;cursor:pointer;
  border-bottom:2px solid transparent;margin-bottom:-1px;transition:all 0.2s;}
.profil-tab.active{color:var(--accent);border-bottom-color:var(--accent);}
.profil-panel{display:none;}.profil-panel.active{display:block;}

/* Stats grid */
.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:0.85rem;margin-bottom:1.5rem;}
.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:1.1rem;text-align:center;
  transition:transform 0.2s,border-color 0.2s;}
.stat-card:hover{transform:translateY(-2px);border-color:var(--accent);}
.stat-card-icon{font-size:1.6rem;margin-bottom:0.4rem;display:block;}
.stat-card-num{font-family:'Outfit',serif;font-size:1.5rem;font-weight:900;color:var(--accent);line-height:1;}
.stat-card-lbl{font-size:0.72rem;color:var(--muted);margin-top:0.2rem;}
.stat-card.accent2 .stat-card-num{color:var(--accent2);}
.stat-card.accent3 .stat-card-num{color:var(--accent3);}
.stat-card.accent4 .stat-card-num{color:var(--accent4);}
.stat-card.correct .stat-card-num{color:var(--correct);}
.stat-card.wrong .stat-card-num{color:var(--wrong);}

/* Chart bars */
.chart-section{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:1.25rem;margin-bottom:1.25rem;}
.chart-title{font-size:0.8rem;text-transform:uppercase;letter-spacing:0.08em;color:var(--muted);margin-bottom:1rem;font-weight:600;}
.bar-chart{display:flex;align-items:flex-end;gap:4px;height:100px;padding-bottom:1px;}
.bar-wrap{display:flex;flex-direction:column;align-items:center;gap:3px;flex:1;}
.bar{width:100%;border-radius:4px 4px 0 0;min-height:2px;background:var(--accent);
  transition:height 0.8s cubic-bezier(0.16,1,0.3,1);opacity:0.85;}
.bar.today{background:var(--accent2);}
.bar-lbl{font-size:0.6rem;color:var(--muted);white-space:nowrap;}
.bar-val{font-size:0.62rem;color:var(--accent);font-weight:600;}
.heatmap-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;}
.heatmap-cell{aspect-ratio:1;border-radius:3px;background:var(--surface2);cursor:default;
  transition:transform 0.1s;}
.heatmap-cell:hover{transform:scale(1.2);}
.heatmap-cell.lv1{background:rgba(42,221,243,0.2);}
.heatmap-cell.lv2{background:rgba(42,221,243,0.45);}
.heatmap-cell.lv3{background:rgba(42,221,243,0.7);}
.heatmap-cell.lv4{background:var(--accent);}
.heatmap-days{display:flex;justify-content:space-between;margin-bottom:4px;}
.heatmap-day{font-size:0.6rem;color:var(--muted);}
.stat-row-item{display:flex;align-items:center;justify-content:space-between;
  padding:0.6rem 0;border-bottom:1px solid var(--border);}
.stat-row-item:last-child{border-bottom:none;}
.stat-row-lbl{font-size:0.85rem;color:var(--muted);}
.stat-row-val{font-size:0.85rem;font-weight:600;color:var(--text);}
.progress-mini-wrap{display:flex;align-items:center;gap:0.5rem;}
.progress-mini{flex:1;height:4px;background:var(--surface2);border-radius:99px;overflow:hidden;min-width:60px;}
.progress-mini-fill{height:100%;border-radius:99px;background:var(--accent);}

/* Category radar (fake) */
.category-bars{display:flex;flex-direction:column;gap:0.6rem;}
.cat-bar-row{display:flex;align-items:center;gap:0.75rem;}
.cat-bar-name{font-size:0.78rem;color:var(--muted);width:90px;flex-shrink:0;}
.cat-bar-track{flex:1;height:8px;background:var(--surface2);border-radius:99px;overflow:hidden;}
.cat-bar-fill{height:100%;border-radius:99px;transition:width 1s ease;}
.cat-bar-pct{font-size:0.72rem;color:var(--muted);width:30px;text-align:right;}

/* Streak */
.streak-display{display:flex;align-items:center;justify-content:center;flex-direction:column;
  padding:1.5rem;gap:0.5rem;}
.streak-num{font-family:'Outfit',serif;font-size:4rem;font-weight:900;
  color:var(--accent2);line-height:1;position:relative;}
.streak-num::after{content:'🔥';font-size:2.5rem;position:absolute;top:-5px;right:-40px;}
.streak-lbl{font-size:0.85rem;color:var(--muted);}
.streak-best{font-size:0.78rem;color:var(--muted);margin-top:0.25rem;}

/* ── BADGES SCREEN ── */
.badges-section-title{font-size:0.75rem;text-transform:uppercase;letter-spacing:0.1em;
  color:var(--muted);margin-bottom:0.85rem;font-weight:600;}
.badges-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:0.85rem;margin-bottom:1.5rem;}
.badge-card{background:var(--surface);border:1.5px solid var(--border);border-radius:16px;
  padding:1rem;text-align:center;transition:all 0.25s;position:relative;overflow:hidden;}
.badge-card.unlocked{border-color:rgba(42,221,243,0.3);cursor:default;}
.badge-card.locked{opacity:0.45;filter:grayscale(0.7);}
.badge-card.newly-unlocked{animation:badgeUnlock 0.8s cubic-bezier(0.34,1.56,0.64,1);}
@keyframes badgeUnlock{
  0%{transform:scale(0.5);opacity:0;}
  60%{transform:scale(1.1);}
  100%{transform:scale(1);opacity:1;}
}
.badge-icon{font-size:2.2rem;margin-bottom:0.5rem;display:block;}
.badge-name{font-size:0.78rem;font-weight:600;color:var(--text);margin-bottom:0.2rem;line-height:1.3;}
.badge-desc{font-size:0.65rem;color:var(--muted);line-height:1.4;}
.badge-new-tag{position:absolute;top:6px;right:6px;background:var(--accent2);color:var(--bg);
  font-size:0.55rem;font-weight:700;padding:0.15rem 0.4rem;border-radius:50px;letter-spacing:0.05em;}
.badge-progress-wrap{margin-top:0.5rem;}
.badge-progress-bar{width:100%;height:3px;background:var(--surface2);border-radius:99px;overflow:hidden;margin-top:3px;}
.badge-progress-fill{height:100%;background:var(--accent4);border-radius:99px;}
.badge-progress-txt{font-size:0.6rem;color:var(--muted);}
/* Level unlock banner */
.level-unlock-banner{background:linear-gradient(135deg,rgba(167,139,250,0.15),rgba(42,221,243,0.1));
  border:1.5px solid var(--accent4);border-radius:16px;padding:1.25rem 1.5rem;
  margin-bottom:1rem;display:flex;align-items:center;gap:1rem;}
.level-unlock-icon{font-size:2rem;flex-shrink:0;}
.level-unlock-text h4{font-size:0.9rem;font-weight:700;color:var(--accent4);margin-bottom:0.2rem;}
.level-unlock-text p{font-size:0.8rem;color:var(--muted);}

/* ── CLASSEMENT / LEADERBOARD ── */
.leaderboard-wrap{display:flex;flex-direction:column;gap:0.5rem;}
.lb-entry{background:var(--surface);border:1px solid var(--border);border-radius:12px;
  padding:0.85rem 1.1rem;display:flex;align-items:center;gap:0.85rem;
  transition:all 0.2s;}
.lb-entry:hover{border-color:var(--accent);transform:translateX(3px);}
.lb-entry.me{border-color:var(--accent);background:rgba(42,221,243,0.04);}
.lb-rank{width:28px;text-align:center;font-size:0.85rem;font-weight:700;flex-shrink:0;}
.lb-rank.gold{color:var(--accent2);}
.lb-rank.silver{color:#c0c0c0;}
.lb-rank.bronze{color:#cd7f32;}
.lb-avatar{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;
  justify-content:center;font-size:0.8rem;font-weight:700;flex-shrink:0;}
.lb-name{flex:1;font-size:0.88rem;font-weight:500;}
.lb-score{font-size:0.88rem;font-weight:700;color:var(--accent2);}
.lb-badge-row{display:flex;gap:3px;flex-shrink:0;}
.lb-badge-mini{font-size:0.9rem;}
.lb-me-label{font-size:0.65rem;color:var(--accent);background:rgba(42,221,243,0.1);
  padding:0.15rem 0.4rem;border-radius:50px;font-weight:600;margin-left:0.3rem;}
.lb-history-note{font-size:0.75rem;color:var(--muted);text-align:center;margin-top:0.75rem;}

/* Surprise Easter egg overlay */
.surprise-overlay{position:fixed;inset:0;background:rgba(0,0,0,0.92);
  display:flex;align-items:center;justify-content:center;z-index:9000;
  opacity:0;pointer-events:none;transition:opacity 0.4s;}
.surprise-overlay.active{opacity:1;pointer-events:all;}
.surprise-box{background:var(--surface);border:1px solid var(--border);border-radius:24px;
  padding:2.5rem;max-width:440px;width:90%;text-align:center;
  animation:surprisePop 0.5s cubic-bezier(0.34,1.56,0.64,1);}
@keyframes surprisePop{from{transform:scale(0.7) rotate(-5deg);}to{transform:scale(1) rotate(0);}  }
.surprise-emoji{font-size:4rem;display:block;margin-bottom:1rem;}
.surprise-title{font-family:'Outfit',serif;font-size:1.4rem;font-weight:900;margin-bottom:0.5rem;}
.surprise-desc{color:var(--muted);font-size:0.9rem;line-height:1.6;margin-bottom:1.5rem;}

/* Badge unlock toast */
.badge-toast{position:fixed;bottom:5rem;left:50%;transform:translateX(-50%) translateY(100px);
  background:var(--surface);border:1.5px solid var(--accent4);border-radius:16px;
  padding:0.85rem 1.5rem;font-size:0.88rem;color:var(--text);
  transition:transform 0.45s cubic-bezier(0.34,1.56,0.64,1);z-index:9998;
  display:flex;align-items:center;gap:0.75rem;box-shadow:0 8px 30px rgba(0,0,0,0.4);
  white-space:nowrap;}
.badge-toast.show{transform:translateX(-50%) translateY(0);}
.badge-toast-icon{font-size:1.5rem;}

/* Quiz mode locked overlay */
.mode-locked{position:relative;}
.mode-locked-overlay{position:absolute;inset:0;background:rgba(11,14,23,0.8);
  border-radius:20px;display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:0.5rem;z-index:2;backdrop-filter:blur(3px);}
.mode-locked-icon{font-size:2rem;}
.mode-locked-label{font-size:0.8rem;color:var(--muted);}
.mode-locked-req{font-size:0.72rem;color:var(--accent4);font-weight:600;}

/* Responsive */
@media(max-width:640px){
  .profil-hero{flex-direction:column;text-align:center;gap:1rem;}
  .profil-pts{text-align:center;}
  .stats-grid{grid-template-columns:repeat(2,1fr);}
  .badges-grid{grid-template-columns:repeat(2,1fr);}
}


/* ════════════════════════════════════════════
   V4 — TOURNOIS / CHALLENGES / RÉCOMPENSES
════════════════════════════════════════════ */

/* Récompenses Duolingo-style */
.reward-popup{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%) scale(0);
  background:var(--surface);border:2px solid var(--accent2);border-radius:24px;
  padding:2rem;max-width:380px;width:92%;text-align:center;z-index:8500;
  transition:transform 0.45s cubic-bezier(0.34,1.56,0.64,1);}
.reward-popup.show{transform:translate(-50%,-50%) scale(1);}
.reward-overlay-bg{position:fixed;inset:0;background:rgba(0,0,0,0.75);z-index:8400;
  opacity:0;pointer-events:none;transition:opacity 0.3s;}
.reward-overlay-bg.show{opacity:1;pointer-events:all;}
.reward-circle{width:90px;height:90px;border-radius:50%;margin:0 auto 1rem;
  display:flex;align-items:center;justify-content:center;font-size:2.5rem;
  border:3px solid var(--accent2);background:rgba(245,197,24,0.1);
  animation:rewardSpin 0.6s 0.2s cubic-bezier(0.34,1.56,0.64,1) both;}
@keyframes rewardSpin{from{transform:rotate(-180deg) scale(0);}to{transform:rotate(0) scale(1);}}
.reward-title{font-family:'Outfit',serif;font-size:1.3rem;font-weight:900;margin-bottom:0.3rem;}
.reward-sub{font-size:0.85rem;color:var(--muted);margin-bottom:1.25rem;}
.xp-gained-big{font-family:'Outfit',serif;font-size:2rem;font-weight:900;
  color:var(--accent2);margin-bottom:1rem;}
.streak-flame{font-size:3rem;animation:flamePulse 0.8s ease-in-out infinite alternate;}
@keyframes flamePulse{from{transform:scale(1);}to{transform:scale(1.15);}}

/* Ligues */
.league-badge{display:inline-flex;flex-direction:column;align-items:center;gap:0.3rem;
  padding:0.85rem 1.25rem;border-radius:16px;border:2px solid;min-width:90px;cursor:pointer;
  transition:all 0.2s;}
.league-badge:hover{transform:translateY(-3px);}
.league-icon{font-size:1.8rem;}
.league-name{font-size:0.72rem;font-weight:700;letter-spacing:0.05em;}

/* Tournois */
#tournaments{display:none;flex-direction:column;align-items:center;
  min-height:calc(100vh - var(--nav-h));padding:2rem 1rem;}
#tournaments.active{display:flex;}
.tournament-wrap{width:100%;max-width:860px;}
.tournament-title{font-family:'Outfit',serif;font-size:1.9rem;font-weight:900;margin-bottom:0.3rem;}
.tournament-sub{color:var(--muted);margin-bottom:1.75rem;font-size:0.9rem;}

.tourney-card{background:var(--surface);border:1.5px solid var(--border);border-radius:20px;
  padding:1.5rem;margin-bottom:1rem;transition:all 0.2s;position:relative;overflow:hidden;}
.tourney-card::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;
  background:linear-gradient(90deg,var(--accent),var(--accent4));}
.tourney-card:hover{border-color:var(--accent);transform:translateY(-2px);}
.tourney-card.locked{opacity:0.5;cursor:not-allowed;}
.tourney-card.active-tourney{border-color:var(--accent2);animation:tourneyPulse 2s ease-in-out infinite;}
@keyframes tourneyPulse{0%,100%{box-shadow:0 0 0 0 rgba(245,197,24,0);}
  50%{box-shadow:0 0 20px 4px rgba(245,197,24,0.15);}}
.tourney-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:1rem;}
.tourney-info h3{font-size:1rem;font-weight:700;margin-bottom:0.2rem;}
.tourney-info p{font-size:0.8rem;color:var(--muted);}
.tourney-pot{text-align:right;flex-shrink:0;}
.pot-num{font-family:'Outfit',serif;font-size:1.4rem;font-weight:900;color:var(--accent2);line-height:1;}
.pot-lbl{font-size:0.65rem;color:var(--muted);}
.tourney-meta{display:flex;gap:0.75rem;flex-wrap:wrap;margin-bottom:1rem;}
.tourney-tag{padding:0.25rem 0.65rem;border-radius:50px;border:1px solid var(--border);
  font-size:0.72rem;color:var(--muted);}
.tourney-podium{display:flex;gap:0.5rem;margin-bottom:1rem;}
.podium-slot{flex:1;background:var(--surface2);border-radius:10px;padding:0.5rem;text-align:center;font-size:0.75rem;}
.podium-slot .rank{font-size:1rem;margin-bottom:0.2rem;}
.podium-slot .p-name{color:var(--text);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.podium-slot .p-score{color:var(--accent2);font-size:0.7rem;}
.tourney-actions{display:flex;gap:0.75rem;flex-wrap:wrap;}

/* Create tournament form */
.tourney-form{background:var(--surface);border:1px solid var(--accent4);border-radius:20px;
  padding:1.5rem;margin-bottom:1.5rem;}
.tourney-form-title{font-size:0.82rem;text-transform:uppercase;letter-spacing:0.08em;
  color:var(--accent4);font-weight:600;margin-bottom:1rem;}
.tourney-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0.85rem;}
@media(max-width:560px){.tourney-form-grid{grid-template-columns:1fr;}}
.stake-slider{width:100%;accent-color:var(--accent4);}

/* Challenge 1v1 */
.challenge-card{background:var(--surface);border:1.5px solid var(--border);border-radius:16px;
  padding:1.25rem;display:flex;align-items:center;gap:1rem;margin-bottom:0.75rem;transition:all 0.2s;}
.challenge-card:hover{border-color:var(--accent3);}
.challenge-vs{font-family:'Outfit',serif;font-size:1.4rem;font-weight:900;
  color:var(--accent3);flex-shrink:0;}
.challenge-info{flex:1;}
.challenge-info h4{font-size:0.88rem;font-weight:600;margin-bottom:0.2rem;}
.challenge-info p{font-size:0.75rem;color:var(--muted);}
.challenge-stake{font-size:0.85rem;font-weight:700;color:var(--accent2);}
.challenge-status{padding:0.25rem 0.7rem;border-radius:50px;font-size:0.7rem;font-weight:600;}
.status-pending{background:rgba(245,197,24,0.15);color:var(--accent2);border:1px solid rgba(245,197,24,0.3);}
.status-active{background:rgba(42,221,243,0.12);color:var(--accent);border:1px solid rgba(42,221,243,0.3);}
.status-won{background:rgba(34,197,94,0.12);color:var(--correct);border:1px solid rgba(34,197,94,0.3);}
.status-lost{background:rgba(239,68,68,0.1);color:var(--wrong);border:1px solid rgba(239,68,68,0.2);}

/* Classement multi-vue */
.lb-view-tabs{display:flex;gap:0.5rem;margin-bottom:1.25rem;flex-wrap:wrap;}
.lb-view-tab{padding:0.4rem 0.9rem;border-radius:50px;border:1px solid var(--border);
  background:var(--surface2);color:var(--muted);font-size:0.78rem;cursor:pointer;transition:all 0.15s;}
.lb-view-tab.active{border-color:var(--accent);color:var(--accent);background:rgba(42,221,243,0.08);}
.geo-flag{font-size:1.1rem;flex-shrink:0;}

/* Daily quest */
.quest-card{background:var(--surface);border:1.5px solid var(--border);border-radius:16px;
  padding:1rem 1.25rem;display:flex;align-items:center;gap:1rem;margin-bottom:0.65rem;}
.quest-icon{font-size:1.6rem;flex-shrink:0;}
.quest-info{flex:1;}
.quest-title{font-size:0.88rem;font-weight:600;margin-bottom:0.15rem;}
.quest-desc{font-size:0.75rem;color:var(--muted);}
.quest-reward{font-size:0.82rem;font-weight:700;color:var(--accent2);flex-shrink:0;}
.quest-progress-wrap{margin-top:0.4rem;}
.quest-bar{height:4px;background:var(--surface2);border-radius:99px;overflow:hidden;}
.quest-bar-fill{height:100%;background:var(--accent);border-radius:99px;transition:width 0.6s ease;}
.quest-check{width:24px;height:24px;border-radius:50%;display:flex;align-items:center;
  justify-content:center;font-size:0.8rem;flex-shrink:0;}
.quest-check.done{background:rgba(34,197,94,0.15);border:1px solid var(--correct);}
.quest-check.todo{background:var(--surface2);border:1px solid var(--border);}

/* Ligue screen */
.league-map{display:flex;flex-direction:column;align-items:center;gap:0.75rem;margin-bottom:1.5rem;}
.league-row{display:flex;gap:0.75rem;justify-content:center;}
.current-league-banner{background:linear-gradient(135deg,rgba(245,197,24,0.1),rgba(42,221,243,0.05));
  border:2px solid var(--accent2);border-radius:20px;padding:1.25rem 1.5rem;
  display:flex;align-items:center;gap:1.25rem;margin-bottom:1.5rem;}

/* Season pass bar */
.season-pass{background:var(--surface);border:1px solid var(--border);border-radius:16px;
  padding:1.25rem;margin-bottom:1.25rem;}
.season-title{font-size:0.78rem;text-transform:uppercase;letter-spacing:0.08em;color:var(--muted);
  margin-bottom:0.75rem;font-weight:600;}
.season-track{display:flex;align-items:center;gap:0;position:relative;padding:0.5rem 0;}
.season-track::before{content:'';position:absolute;left:0;right:0;top:50%;height:3px;
  background:var(--surface2);z-index:0;}
.season-node{width:36px;height:36px;border-radius:50%;border:2px solid var(--border);
  background:var(--surface2);display:flex;align-items:center;justify-content:center;
  font-size:0.9rem;position:relative;z-index:1;flex-shrink:0;cursor:pointer;transition:all 0.2s;}
.season-node.done{border-color:var(--accent2);background:rgba(245,197,24,0.15);}
.season-node.current{border-color:var(--accent);background:rgba(42,221,243,0.1);
  animation:nodePulse 1.5s ease-in-out infinite;}
@keyframes nodePulse{0%,100%{box-shadow:0 0 0 0 rgba(42,221,243,0);}
  50%{box-shadow:0 0 0 6px rgba(42,221,243,0.2);}}
.season-connector{flex:1;height:3px;background:var(--surface2);position:relative;z-index:0;}
.season-connector.done{background:var(--accent2);}



/* ══════════════════════════════════════════════
   MODE GROUPE — styles complets
══════════════════════════════════════════════ */

/* Screen groupe */
#groupe{display:none;flex-direction:column;align-items:center;
  min-height:calc(100vh - var(--nav-h));padding:2rem 1rem;}
#groupe.active{display:flex;}
.groupe-wrap{width:100%;max-width:700px;}

/* Lobby cards */
.lobby-card{background:var(--surface);border:1.5px solid var(--border);
  border-radius:20px;padding:1.75rem;margin-bottom:1rem;}
.lobby-title{font-family:'Outfit',serif;font-size:2rem;font-weight:900;
  margin-bottom:0.25rem;display:flex;align-items:center;gap:0.75rem;}
.lobby-sub{color:var(--muted);font-size:0.9rem;margin-bottom:1.5rem;}

/* Code salle */
.room-code-display{font-family:'Outfit',serif;font-size:3.5rem;font-weight:900;
  color:var(--accent2);letter-spacing:0.15em;text-align:center;
  background:var(--surface2);border:2px solid rgba(245,197,24,0.3);
  border-radius:16px;padding:1rem 2rem;margin:1rem 0;
  animation:codePulse 2s ease-in-out infinite;}
@keyframes codePulse{0%,100%{box-shadow:0 0 0 0 rgba(245,197,24,0);}
  50%{box-shadow:0 0 20px 6px rgba(245,197,24,0.12);}}
.code-copy-btn{display:flex;align-items:center;justify-content:center;gap:0.5rem;
  width:100%;padding:0.65rem;background:transparent;border:1px solid var(--border);
  border-radius:12px;color:var(--muted);font-family:'Plus Jakarta Sans',sans-serif;
  font-size:0.82rem;cursor:pointer;transition:all 0.2s;margin-bottom:1.5rem;}
.code-copy-btn:hover{border-color:var(--accent2);color:var(--accent2);}

/* Saisie code */
.code-input{width:100%;padding:1rem;text-align:center;font-family:'Outfit',serif;
  font-size:2rem;font-weight:900;letter-spacing:0.2em;color:var(--accent2);
  background:var(--surface2);border:2px solid var(--border);border-radius:16px;
  outline:none;transition:all 0.2s;text-transform:uppercase;}
.code-input:focus{border-color:var(--accent2);}

/* Tabs créer/rejoindre */
.groupe-tabs{display:flex;gap:0;margin-bottom:1.5rem;
  background:var(--surface2);border-radius:12px;padding:4px;}
.groupe-tab{flex:1;padding:0.65rem;background:transparent;border:none;
  color:var(--muted);font-family:'Plus Jakarta Sans',sans-serif;font-size:0.88rem;
  cursor:pointer;border-radius:8px;transition:all 0.2s;font-weight:500;}
.groupe-tab.active{background:var(--surface);color:var(--text);
  box-shadow:0 1px 4px rgba(0,0,0,0.3);}

/* Liste joueurs dans le salon */
.players-lobby{margin-top:1rem;}
.players-lobby-title{font-size:0.75rem;text-transform:uppercase;letter-spacing:0.1em;
  color:var(--muted);font-weight:600;margin-bottom:0.75rem;display:flex;
  align-items:center;justify-content:space-between;}
.players-count-badge{background:rgba(42,221,243,0.1);border:1px solid rgba(42,221,243,0.2);
  border-radius:50px;padding:0.2rem 0.6rem;font-size:0.72rem;color:var(--accent);}
.players-list{display:flex;flex-direction:column;gap:0.5rem;max-height:320px;overflow-y:auto;}
.player-lobby-item{display:flex;align-items:center;gap:0.75rem;padding:0.7rem 1rem;
  background:var(--surface2);border-radius:12px;animation:playerJoin 0.4s cubic-bezier(0.16,1,0.3,1);}
@keyframes playerJoin{from{opacity:0;transform:translateX(-12px);}to{opacity:1;transform:translateX(0);}}
.player-lobby-avatar{width:34px;height:34px;border-radius:50%;display:flex;align-items:center;
  justify-content:center;font-size:0.85rem;font-weight:700;flex-shrink:0;}
.player-lobby-name{flex:1;font-size:0.88rem;font-weight:500;}
.player-lobby-badge{font-size:0.7rem;padding:0.15rem 0.5rem;border-radius:50px;font-weight:600;}
.badge-host{background:rgba(245,197,24,0.15);color:var(--accent2);border:1px solid rgba(245,197,24,0.3);}
.badge-ready{background:rgba(34,197,94,0.12);color:var(--correct);border:1px solid rgba(34,197,94,0.25);}
.badge-waiting{background:var(--surface);color:var(--muted);border:1px solid var(--border);}

/* Barre de settings salon */
.salon-settings{display:grid;grid-template-columns:1fr 1fr;gap:0.75rem;margin-bottom:1.25rem;}
.salon-setting-item{background:var(--surface2);border-radius:12px;padding:0.85rem;}
.salon-setting-label{font-size:0.72rem;color:var(--muted);margin-bottom:0.5rem;font-weight:600;
  text-transform:uppercase;letter-spacing:0.06em;}
.salon-setting-val{font-size:1rem;font-weight:700;color:var(--text);}
.salon-btn-row{display:flex;gap:0.75rem;}
.btn-launch{flex:1;padding:0.85rem;background:var(--accent);color:var(--bg);border:none;
  border-radius:14px;font-family:'Plus Jakarta Sans',sans-serif;font-size:1rem;font-weight:700;
  cursor:pointer;transition:all 0.2s;}
.btn-launch:hover{opacity:0.87;transform:translateY(-2px);}
.btn-launch:disabled{opacity:0.4;cursor:not-allowed;transform:none;}

/* Écran attente joueurs */
.waiting-screen{text-align:center;padding:2rem;}
.waiting-anim{font-size:3rem;animation:waitSpin 2s linear infinite;display:inline-block;}
@keyframes waitSpin{from{transform:rotate(0);}to{transform:rotate(360deg);}}
.waiting-title{font-family:'Outfit',serif;font-size:1.5rem;font-weight:900;
  margin-bottom:0.5rem;margin-top:1rem;}
.waiting-sub{color:var(--muted);font-size:0.88rem;margin-bottom:1.5rem;}

/* Classement groupe en temps réel */
.live-lb-overlay{position:fixed;top:0;left:0;right:0;
  background:linear-gradient(to bottom,rgba(11,14,23,0.95),transparent);
  z-index:50;padding:0.75rem 1rem;display:none;}
.live-lb-overlay.visible{display:block;}
.live-lb-strip{display:flex;gap:0.5rem;overflow-x:auto;justify-content:center;}
.live-lb-item{display:flex;align-items:center;gap:0.4rem;padding:0.35rem 0.7rem;
  background:var(--surface);border:1px solid var(--border);border-radius:50px;
  font-size:0.78rem;white-space:nowrap;flex-shrink:0;}
.live-lb-item.me{border-color:var(--accent);background:rgba(42,221,243,0.08);}
.live-lb-avatar{width:20px;height:20px;border-radius:50%;display:flex;align-items:center;
  justify-content:center;font-size:0.6rem;font-weight:700;flex-shrink:0;}
.live-lb-score{font-weight:700;color:var(--accent2);}

/* Podium final groupe */
#groupe-results{display:none;flex-direction:column;align-items:center;
  min-height:calc(100vh - var(--nav-h));padding:2rem 1rem;}
#groupe-results.active{display:flex;}
.podium-wrap{width:100%;max-width:700px;}
.podium-title{font-family:'Outfit',serif;font-size:2rem;font-weight:900;
  text-align:center;margin-bottom:0.5rem;}
.podium-sub{color:var(--muted);text-align:center;margin-bottom:2rem;font-size:0.9rem;}
.podium-grid{display:flex;align-items:flex-end;justify-content:center;gap:1rem;
  margin-bottom:2rem;}
.podium-col{display:flex;flex-direction:column;align-items:center;gap:0.5rem;}
.podium-avatar-big{border-radius:50%;display:flex;align-items:center;justify-content:center;
  font-weight:900;border:3px solid;}
.podium-bar{border-radius:12px 12px 0 0;width:90px;display:flex;flex-direction:column;
  align-items:center;justify-content:flex-end;padding:0.75rem 0.5rem;}
.podium-name{font-size:0.8rem;font-weight:600;color:var(--text);
  max-width:90px;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.podium-score-val{font-family:'Outfit',serif;font-size:1rem;font-weight:900;color:white;}
.podium-rank-icon{font-size:1.5rem;}
.full-lb-groupe{background:var(--surface);border:1px solid var(--border);border-radius:16px;
  padding:1.25rem;margin-bottom:1.25rem;}
.glb-title{font-size:0.75rem;text-transform:uppercase;letter-spacing:0.08em;
  color:var(--muted);font-weight:600;margin-bottom:0.85rem;}
.glb-entry{display:flex;align-items:center;gap:0.75rem;padding:0.65rem 0;
  border-bottom:1px solid var(--border);}
.glb-entry:last-child{border-bottom:none;}
.glb-entry.me-g{background:rgba(42,221,243,0.04);border-radius:10px;padding:0.65rem 0.75rem;}
.glb-rank{width:28px;font-size:0.82rem;font-weight:700;text-align:center;flex-shrink:0;}
.glb-avatar{width:30px;height:30px;border-radius:50%;display:flex;align-items:center;
  justify-content:center;font-size:0.75rem;font-weight:700;flex-shrink:0;}
.glb-name{flex:1;font-size:0.88rem;}
.glb-correct{font-size:0.75rem;color:var(--muted);flex-shrink:0;}
.glb-score{font-size:0.9rem;font-weight:700;color:var(--accent2);}

/* Firebase status */
.firebase-status{display:flex;align-items:center;gap:0.5rem;font-size:0.75rem;
  color:var(--muted);margin-bottom:1rem;}
.fb-dot{width:7px;height:7px;border-radius:50%;background:var(--muted);flex-shrink:0;}
.fb-dot.connected{background:var(--correct);animation:onlinePulse 2s ease-in-out infinite;}
.fb-dot.error{background:var(--wrong);}

/* Avatar colors */
.av-0{background:rgba(42,221,243,0.2);color:var(--accent);}
.av-1{background:rgba(245,197,24,0.2);color:var(--accent2);}
.av-2{background:rgba(167,139,250,0.2);color:var(--accent4);}
.av-3{background:rgba(255,107,107,0.2);color:var(--accent3);}
.av-4{background:rgba(34,197,94,0.2);color:var(--correct);}
.av-5{background:rgba(251,146,60,0.2);color:#fb923c;}
.av-6{background:rgba(56,189,248,0.2);color:#38bdf8;}
.av-7{background:rgba(244,114,182,0.2);color:#f472b6;}

@media(max-width:640px){
  .salon-settings{grid-template-columns:1fr;}
  .podium-grid{gap:0.5rem;}
  .podium-bar{width:70px;}
  .podium-avatar-big{font-size:1rem;}
}


/* ════════════════════════════════════════════════
   MODE BATTLE — 2 équipes s'affrontent
════════════════════════════════════════════════ */

/* Screen battle */
#battle{display:none;flex-direction:column;align-items:center;
  min-height:calc(100vh - var(--nav-h));padding:2rem 1rem;}
#battle.active{display:flex;}
.battle-wrap{width:100%;max-width:820px;}

/* Mode selector sur l'écran groupe */
.mode-selector{display:flex;gap:0.75rem;margin-bottom:1.5rem;flex-wrap:wrap;}
.mode-card{flex:1;min-width:200px;background:var(--surface);border:2px solid var(--border);
  border-radius:16px;padding:1.25rem;cursor:pointer;transition:all 0.2s;text-align:center;}
.mode-card:hover{transform:translateY(-3px);}
.mode-card.selected{border-color:var(--accent);}
.mode-card.battle-card{border-color:rgba(255,107,107,0.3);}
.mode-card.battle-card:hover,.mode-card.battle-card.selected{border-color:var(--accent3);
  background:rgba(255,107,107,0.05);}
.mode-card-icon{font-size:2rem;margin-bottom:0.5rem;}
.mode-card-title{font-family:'Outfit',serif;font-size:1rem;font-weight:700;margin-bottom:0.25rem;}
.mode-card-sub{font-size:0.75rem;color:var(--muted);}

/* Battle setup */
.battle-setup{background:var(--surface);border:1.5px solid rgba(255,107,107,0.3);
  border-radius:20px;padding:1.5rem;margin-bottom:1rem;position:relative;overflow:hidden;}
.battle-setup::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;
  background:linear-gradient(90deg,#ff6b6b,#f5c518,#ff6b6b);}
.battle-title{font-family:'Outfit',serif;font-size:1.6rem;font-weight:900;
  margin-bottom:0.3rem;display:flex;align-items:center;gap:0.6rem;}
.battle-sub{color:var(--muted);font-size:0.85rem;margin-bottom:1.25rem;}
.battle-teams-row{display:grid;grid-template-columns:1fr auto 1fr;gap:1rem;
  align-items:center;margin-bottom:1.25rem;}
.battle-team-setup{background:var(--surface2);border-radius:14px;padding:1rem;}
.battle-team-label{font-size:0.72rem;text-transform:uppercase;letter-spacing:0.08em;
  font-weight:600;margin-bottom:0.5rem;}
.team-a-label{color:#3b82f6;}
.team-b-label{color:#ef4444;}
.battle-vs{font-family:'Outfit',serif;font-size:1.8rem;font-weight:900;
  color:var(--muted);text-align:center;}
.battle-setting-item{margin-bottom:0.75rem;}
.battle-setting-label{font-size:0.72rem;color:var(--muted);margin-bottom:0.3rem;font-weight:500;}

/* Questions creator mode */
.creator-mode-toggle{display:flex;align-items:center;justify-content:space-between;
  padding:0.85rem 1rem;background:rgba(245,197,24,0.06);border:1px solid rgba(245,197,24,0.25);
  border-radius:12px;margin-bottom:1rem;cursor:pointer;transition:all 0.2s;}
.creator-mode-toggle:hover{background:rgba(245,197,24,0.1);}
.creator-mode-info h4{font-size:0.88rem;font-weight:600;color:var(--accent2);margin-bottom:0.15rem;}
.creator-mode-info p{font-size:0.75rem;color:var(--muted);}
.creator-mode-xp{font-size:0.8rem;font-weight:700;color:var(--accent2);
  background:rgba(245,197,24,0.1);padding:0.3rem 0.75rem;border-radius:50px;flex-shrink:0;}

/* Battle lobby */
#battle-lobby{display:none;}
#battle-lobby.active{display:block;}
.battle-lobby-grid{display:grid;grid-template-columns:1fr 60px 1fr;gap:1rem;margin-bottom:1.25rem;}
.battle-team-lobby{background:var(--surface2);border-radius:14px;padding:1rem;}
.battle-team-header{display:flex;align-items:center;justify-content:space-between;
  margin-bottom:0.75rem;}
.battle-team-name{font-weight:700;font-size:0.9rem;}
.battle-team-count{font-size:0.72rem;color:var(--muted);padding:0.15rem 0.5rem;
  background:var(--surface);border-radius:50px;}
.battle-team-a .battle-team-name{color:#3b82f6;}
.battle-team-b .battle-team-name{color:#ef4444;}
.battle-team-a{border:1.5px solid rgba(59,130,246,0.3);}
.battle-team-b{border:1.5px solid rgba(239,68,68,0.3);}
.battle-team-full{border-color:var(--correct) !important;background:rgba(34,197,94,0.05) !important;}
.battle-vs-center{display:flex;align-items:center;justify-content:center;
  font-family:'Outfit',serif;font-size:1.4rem;font-weight:900;color:var(--muted);}
.battle-player-item{display:flex;align-items:center;gap:0.5rem;padding:0.5rem 0.6rem;
  background:var(--surface);border-radius:8px;margin-bottom:0.4rem;font-size:0.82rem;}
.battle-player-avatar{width:26px;height:26px;border-radius:50%;display:flex;align-items:center;
  justify-content:center;font-size:0.7rem;font-weight:700;flex-shrink:0;}
.team-a-avatar{background:rgba(59,130,246,0.2);color:#3b82f6;}
.team-b-avatar{background:rgba(239,68,68,0.2);color:#ef4444;}
.battle-slot-empty{padding:0.5rem 0.6rem;border:1px dashed var(--border);border-radius:8px;
  font-size:0.75rem;color:var(--muted);text-align:center;margin-bottom:0.4rem;}
.battle-team-join{width:100%;padding:0.55rem;border:none;border-radius:8px;font-family:'Plus Jakarta Sans',sans-serif;
  font-size:0.82rem;font-weight:600;cursor:pointer;transition:all 0.2s;margin-top:0.5rem;}
.join-team-a{background:rgba(59,130,246,0.15);color:#3b82f6;border:1px solid rgba(59,130,246,0.3);}
.join-team-a:hover{background:rgba(59,130,246,0.25);}
.join-team-b{background:rgba(239,68,68,0.1);color:#ef4444;border:1px solid rgba(239,68,68,0.25);}
.join-team-b:hover{background:rgba(239,68,68,0.2);}
.battle-team-join:disabled{opacity:0.4;cursor:not-allowed;}

/* Battle quiz — barre d'équipes en haut */
.battle-score-bar{width:100%;max-width:780px;display:flex;align-items:center;gap:0.75rem;
  margin-bottom:0.75rem;}
.battle-score-team{flex:1;background:var(--surface);border-radius:12px;padding:0.65rem 1rem;
  display:flex;align-items:center;justify-content:space-between;}
.bst-name{font-size:0.82rem;font-weight:600;}
.bst-score{font-family:'Outfit',serif;font-size:1.2rem;font-weight:900;}
.bst-a .bst-name,.bst-a .bst-score{color:#3b82f6;}
.bst-b .bst-name,.bst-b .bst-score{color:#ef4444;}
.battle-score-vs{font-size:0.8rem;font-weight:700;color:var(--muted);flex-shrink:0;}
.battle-progress{height:6px;background:var(--surface2);border-radius:99px;overflow:hidden;
  width:100%;max-width:780px;margin-bottom:0.5rem;display:flex;}
.battle-progress-a{background:#3b82f6;transition:width 0.5s ease;}
.battle-progress-b{background:#ef4444;transition:width 0.5s ease;}

/* Battle results */
#battle-results{display:none;flex-direction:column;align-items:center;
  min-height:calc(100vh - var(--nav-h));padding:2rem 1rem;}
#battle-results.active{display:flex;}
.battle-results-wrap{width:100%;max-width:760px;}
.battle-winner-banner{border-radius:20px;padding:2rem;text-align:center;margin-bottom:1.5rem;
  position:relative;overflow:hidden;}
.battle-winner-banner.team-a-wins{background:linear-gradient(135deg,rgba(59,130,246,0.15),rgba(59,130,246,0.05));
  border:2px solid rgba(59,130,246,0.4);}
.battle-winner-banner.team-b-wins{background:linear-gradient(135deg,rgba(239,68,68,0.15),rgba(239,68,68,0.05));
  border:2px solid rgba(239,68,68,0.4);}
.battle-winner-banner.draw{background:linear-gradient(135deg,rgba(245,197,24,0.1),rgba(42,221,243,0.05));
  border:2px solid rgba(245,197,24,0.3);}
.battle-winner-emoji{font-size:3rem;display:block;margin-bottom:0.75rem;}
.battle-winner-title{font-family:'Outfit',serif;font-size:2rem;font-weight:900;margin-bottom:0.4rem;}
.battle-score-final{display:flex;align-items:center;justify-content:center;gap:2rem;margin-bottom:1rem;}
.bsf-team{text-align:center;}
.bsf-score{font-family:'Outfit',serif;font-size:3rem;font-weight:900;line-height:1;}
.bsf-name{font-size:0.8rem;color:var(--muted);margin-top:0.25rem;}
.bsf-a .bsf-score{color:#3b82f6;}.bsf-b .bsf-score{color:#ef4444;}
.bsf-vs{font-size:1.5rem;color:var(--muted);align-self:center;}

/* Creator XP banner */
.creator-xp-banner{background:rgba(245,197,24,0.08);border:1.5px solid rgba(245,197,24,0.3);
  border-radius:14px;padding:1rem 1.25rem;margin-bottom:1.25rem;display:flex;
  align-items:center;gap:1rem;}
.creator-xp-icon{font-size:1.8rem;flex-shrink:0;}
.creator-xp-title{font-size:0.88rem;font-weight:600;color:var(--accent2);}
.creator-xp-val{font-family:'Outfit',serif;font-size:1.4rem;font-weight:900;color:var(--accent2);}

/* Team detail results */
.battle-teams-results{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-bottom:1.25rem;}
.battle-team-result{background:var(--surface);border-radius:14px;padding:1rem;}
.btr-header{font-weight:700;margin-bottom:0.75rem;font-size:0.88rem;}
.btr-a-header{color:#3b82f6;}.btr-b-header{color:#ef4444;}
.btr-player{display:flex;align-items:center;justify-content:space-between;
  padding:0.45rem 0;border-bottom:1px solid var(--border);font-size:0.8rem;}
.btr-player:last-child{border-bottom:none;}
.btr-player-score{font-weight:700;}

@media(max-width:580px){
  .battle-teams-row,.battle-lobby-grid,.battle-teams-results{grid-template-columns:1fr;}
  .battle-vs,.battle-vs-center{display:none;}
}

/* ════════════════════════════════════════════════
   AUTH — Connexion / Inscription Supabase
════════════════════════════════════════════════ */

/* Overlay auth plein écran */
#auth-overlay{position:fixed;inset:0;z-index:9999;background:var(--bg);
  display:flex;align-items:center;justify-content:center;padding:1rem;
  overflow-y:auto;animation:authFadeIn 0.4s ease;}
#auth-overlay.hidden{display:none;}
@media(max-height:700px){
  #auth-overlay{align-items:flex-start;padding-top:1.5rem;}
}
@keyframes authFadeIn{from{opacity:0;transform:scale(0.96);}to{opacity:1;transform:scale(1);}}

.auth-card{background:var(--surface);border:1.5px solid var(--border);
  border-radius:24px;padding:2rem 2rem 1.75rem;width:100%;max-width:420px;
  box-shadow:0 24px 64px rgba(0,0,0,0.5);position:relative;overflow:hidden;}
.auth-card::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;
  background:linear-gradient(90deg,var(--accent),var(--accent2),var(--accent4));}

.auth-logo{font-family:'Outfit',serif;font-size:1.5rem;font-weight:900;
  color:var(--accent);text-align:center;margin-bottom:0.25rem;}
.auth-logo span{color:var(--accent2);}
.auth-tagline{text-align:center;font-size:0.78rem;color:var(--muted);margin-bottom:1.75rem;}

.auth-tabs{display:flex;background:var(--surface2);border-radius:10px;padding:3px;
  margin-bottom:1.5rem;gap:0;}
.auth-tab{flex:1;padding:0.55rem;background:transparent;border:none;
  color:var(--muted);font-family:'Plus Jakarta Sans',sans-serif;font-size:0.85rem;
  font-weight:500;cursor:pointer;border-radius:7px;transition:all 0.2s;}
.auth-tab.active{background:var(--surface);color:var(--text);
  box-shadow:0 1px 4px rgba(0,0,0,0.3);}

.auth-field{margin-bottom:1rem;}
.auth-field label{display:block;font-size:0.75rem;color:var(--muted);
  font-weight:600;text-transform:uppercase;letter-spacing:0.06em;margin-bottom:0.35rem;}
.auth-input{width:100%;padding:0.75rem 1rem;background:var(--surface2);
  border:1.5px solid var(--border);border-radius:12px;color:var(--text);
  font-family:'Plus Jakarta Sans',sans-serif;font-size:0.92rem;outline:none;transition:all 0.2s;}
.auth-input:focus{border-color:var(--accent);}
.auth-input.error{border-color:var(--wrong);}

.auth-submit{width:100%;padding:0.85rem;background:var(--accent);color:var(--bg);
  border:none;border-radius:12px;font-family:'Plus Jakarta Sans',sans-serif;font-size:0.95rem;
  font-weight:700;cursor:pointer;transition:all 0.2s;margin-top:0.25rem;}
.auth-submit:hover{opacity:0.88;transform:translateY(-1px);}
.auth-submit:disabled{opacity:0.5;cursor:not-allowed;transform:none;}

.auth-divider{display:flex;align-items:center;gap:0.75rem;margin:1rem 0;}
.auth-divider::before,.auth-divider::after{content:'';flex:1;height:1px;background:var(--border);}
.auth-divider span{font-size:0.75rem;color:var(--muted);}

/* OAuth */
.auth-oauth-btn{width:100%;padding:0.7rem;background:var(--surface2);
  border:1px solid var(--border);border-radius:12px;color:var(--text);
  font-family:'Plus Jakarta Sans',sans-serif;font-size:0.88rem;font-weight:500;
  cursor:pointer;transition:all 0.2s;display:flex;align-items:center;
  justify-content:center;gap:0.6rem;margin-bottom:0.6rem;}
.auth-oauth-btn:hover{border-color:var(--accent);background:var(--surface);}

.auth-error{background:rgba(239,68,68,0.1);border:1px solid rgba(239,68,68,0.3);
  border-radius:8px;padding:0.6rem 0.85rem;font-size:0.8rem;color:var(--wrong);
  margin-bottom:1rem;display:none;}
.auth-error.visible{display:block;}

.auth-success{background:rgba(34,197,94,0.1);border:1px solid rgba(34,197,94,0.3);
  border-radius:8px;padding:0.6rem 0.85rem;font-size:0.8rem;color:var(--correct);
  margin-bottom:1rem;display:none;}
.auth-success.visible{display:block;}

.auth-guest-btn{width:100%;padding:0.55rem;background:transparent;border:none;
  color:var(--muted);font-family:'Plus Jakarta Sans',sans-serif;font-size:0.8rem;
  cursor:pointer;margin-top:0.75rem;transition:color 0.2s;}
.auth-guest-btn:hover{color:var(--text);}

/* Indicateur connecté dans la nav */
.auth-user-chip{display:flex;align-items:center;gap:0.5rem;padding:0.3rem 0.75rem;
  background:rgba(34,197,94,0.1);border:1px solid rgba(34,197,94,0.25);
  border-radius:50px;font-size:0.78rem;cursor:pointer;transition:all 0.2s;}
.auth-user-chip:hover{border-color:var(--correct);}
.auth-user-dot{width:7px;height:7px;border-radius:50%;background:var(--correct);flex-shrink:0;}
.auth-user-name{font-weight:600;color:var(--correct);max-width:100px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}

/* Écran historique */
#history-screen{display:none;flex-direction:column;align-items:center;
  min-height:calc(100vh - var(--nav-h));padding:2rem 1rem;}
#history-screen.active{display:flex;}
.history-wrap{width:100%;max-width:720px;}
.history-title{font-family:'Outfit',serif;font-size:1.8rem;font-weight:900;
  margin-bottom:1.5rem;display:flex;align-items:center;gap:0.75rem;}
.history-card{background:var(--surface);border:1px solid var(--border);
  border-radius:14px;padding:1rem 1.25rem;margin-bottom:0.75rem;
  display:flex;align-items:center;gap:1rem;}
.hc-date{font-size:0.72rem;color:var(--muted);flex-shrink:0;min-width:70px;}
.hc-theme{flex:1;font-size:0.88rem;font-weight:500;}
.hc-score{font-family:'Outfit',serif;font-size:1.1rem;font-weight:700;
  color:var(--accent2);flex-shrink:0;}
.hc-correct{font-size:0.75rem;color:var(--muted);flex-shrink:0;}
.hc-badge{padding:0.2rem 0.5rem;border-radius:50px;font-size:0.7rem;font-weight:600;flex-shrink:0;}
.hc-win{background:rgba(34,197,94,0.1);color:var(--correct);border:1px solid rgba(34,197,94,0.2);}
.hc-avg{background:rgba(245,197,24,0.1);color:var(--accent2);border:1px solid rgba(245,197,24,0.2);}
.hc-low{background:rgba(239,68,68,0.08);color:var(--wrong);border:1px solid rgba(239,68,68,0.15);}

.auth-profile-header{background:var(--surface);border:1px solid var(--border);
  border-radius:16px;padding:1.25rem;margin-bottom:1.25rem;
  display:flex;align-items:center;gap:1rem;}
.auth-profile-avatar{width:52px;height:52px;border-radius:50%;background:var(--accent);
  color:var(--bg);display:flex;align-items:center;justify-content:center;
  font-size:1.3rem;font-weight:900;flex-shrink:0;}
.auth-profile-name{font-family:'Outfit',serif;font-size:1.1rem;font-weight:700;}
.auth-profile-email{font-size:0.78rem;color:var(--muted);}
.auth-profile-stats{display:flex;gap:1.25rem;flex-wrap:wrap;margin-top:0.5rem;}
.auth-profile-stat{text-align:center;}
.auth-profile-stat-val{font-size:1rem;font-weight:700;color:var(--accent2);}
.auth-profile-stat-lbl{font-size:0.65rem;color:var(--muted);}


/* ── Base de données questions ── */
.db-loading-bar{position:fixed;top:0;left:0;height:3px;background:var(--accent);
  z-index:9998;width:0%;transition:width 0.4s ease;pointer-events:none;}
.db-loading-bar.active{animation:dbLoad 1.8s ease-in-out infinite;}
@keyframes dbLoad{0%{width:0%;opacity:1;}70%{width:85%;opacity:1;}100%{width:100%;opacity:0;}}

.db-badge{display:inline-flex;align-items:center;gap:0.35rem;padding:0.18rem 0.55rem;
  border-radius:50px;font-size:0.65rem;font-weight:600;letter-spacing:0.04em;}
.db-badge.online{background:rgba(34,197,94,0.12);color:var(--correct);
  border:1px solid rgba(34,197,94,0.25);}
.db-badge.offline{background:rgba(122,132,153,0.1);color:var(--muted);
  border:1px solid rgba(122,132,153,0.2);}
.db-badge.loading{background:rgba(42,221,243,0.1);color:var(--accent);
  border:1px solid rgba(42,221,243,0.2);animation:dbPulse 1s ease-in-out infinite;}
@keyframes dbPulse{0%,100%{opacity:1;}50%{opacity:0.4;}}
.db-dot{width:5px;height:5px;border-radius:50%;background:currentColor;flex-shrink:0;}

/* ════════════════════════════════════════════════
   QUIZ DU MOIS
════════════════════════════════════════════════ */
#quiz-mois{display:none;flex-direction:column;align-items:center;
  min-height:calc(100vh - var(--nav-h));padding:1.5rem 1rem;}
#quiz-mois.active{display:flex;}
.qm-wrap{width:100%;max-width:760px;}

/* Header mensuel */
.qm-header{background:var(--surface);border:1.5px solid rgba(168,85,247,0.3);
  border-radius:20px;padding:1.5rem;margin-bottom:1rem;position:relative;overflow:hidden;}
.qm-header::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;
  background:linear-gradient(90deg,#a855f7,#f5c518,#a855f7);}
.qm-crown{font-size:2.2rem;margin-bottom:0.25rem;}
.qm-title{font-family:'Outfit',serif;font-size:1.6rem;font-weight:900;
  color:var(--accent4);margin-bottom:0.15rem;}
.qm-subtitle{font-size:0.82rem;color:var(--muted);}
.qm-meta{display:flex;gap:0.75rem;flex-wrap:wrap;margin-top:1rem;}
.qm-pill{padding:0.3rem 0.85rem;border-radius:50px;font-size:0.75rem;font-weight:600;
  background:rgba(168,85,247,0.08);border:1px solid rgba(168,85,247,0.2);color:var(--accent4);}
.qm-pill.warn{background:rgba(239,68,68,0.08);border-color:rgba(239,68,68,0.2);color:var(--wrong);}
.qm-pill.ok{background:rgba(34,197,94,0.08);border-color:rgba(34,197,94,0.2);color:var(--correct);}

/* Progression du mois */
.qm-month-progress{background:var(--surface);border:1px solid var(--border);
  border-radius:16px;padding:1.1rem 1.25rem;margin-bottom:1rem;}
.qm-progress-title{font-size:0.72rem;text-transform:uppercase;letter-spacing:0.08em;
  color:var(--muted);font-weight:600;margin-bottom:0.75rem;}
.qm-days-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:0.75rem;}
.qm-day{aspect-ratio:1;border-radius:6px;display:flex;align-items:center;justify-content:center;
  font-size:0.6rem;font-weight:600;cursor:default;}
.qm-day.played{background:rgba(168,85,247,0.25);color:var(--accent4);}
.qm-day.played.perfect{background:rgba(34,197,94,0.25);color:var(--correct);}
.qm-day.played.partial{background:rgba(245,197,24,0.2);color:var(--accent2);}
.qm-day.today{background:rgba(168,85,247,0.5);color:white;font-weight:900;}
.qm-day.future{background:var(--surface2);color:var(--muted);opacity:0.5;}
.qm-day.past-missed{background:rgba(239,68,68,0.1);color:var(--wrong);}
.qm-score-row{display:flex;align-items:center;justify-content:space-between;}
.qm-month-score{font-family:'Outfit',serif;font-size:1.4rem;font-weight:900;
  color:var(--accent4);}
.qm-ipq-badge{padding:0.3rem 0.75rem;border-radius:50px;font-size:0.78rem;font-weight:700;
  background:rgba(245,197,24,0.1);border:1px solid rgba(245,197,24,0.25);color:var(--accent2);}

/* Pénalités */
.qm-penalty-info{background:rgba(239,68,68,0.06);border:1px solid rgba(239,68,68,0.2);
  border-radius:12px;padding:0.85rem 1rem;margin-bottom:1rem;font-size:0.82rem;}
.qm-penalty-title{color:var(--wrong);font-weight:700;margin-bottom:0.3rem;}
.qm-penalty-desc{color:var(--muted);line-height:1.55;}

/* Bouton lancer */
.qm-play-btn{width:100%;padding:1rem;background:linear-gradient(135deg,#a855f7,#7c3aed);
  color:white;border:none;border-radius:16px;font-family:'Outfit',serif;
  font-size:1.1rem;font-weight:700;cursor:pointer;transition:all 0.2s;margin-bottom:1rem;}
.qm-play-btn:hover{opacity:0.88;transform:translateY(-2px);}
.qm-play-btn:disabled{opacity:0.4;cursor:not-allowed;transform:none;background:var(--surface2);}

/* Déjà joué aujourd'hui */
.qm-done-today{background:rgba(34,197,94,0.06);border:1px solid rgba(34,197,94,0.2);
  border-radius:14px;padding:1.1rem 1.25rem;margin-bottom:1rem;text-align:center;}
.qm-done-icon{font-size:2rem;margin-bottom:0.4rem;}
.qm-done-title{font-weight:700;color:var(--correct);margin-bottom:0.2rem;}
.qm-done-sub{font-size:0.82rem;color:var(--muted);}

/* Classement mensuel */
.qm-lb{background:var(--surface);border:1px solid var(--border);border-radius:16px;
  padding:1.1rem 1.25rem;margin-bottom:1rem;}
.qm-lb-title{font-size:0.72rem;text-transform:uppercase;letter-spacing:0.08em;
  color:var(--muted);font-weight:600;margin-bottom:0.85rem;
  display:flex;align-items:center;justify-content:space-between;}
.qm-lb-entry{display:flex;align-items:center;gap:0.75rem;padding:0.6rem 0;
  border-bottom:1px solid var(--border);}
.qm-lb-entry:last-child{border-bottom:none;}
.qm-lb-entry.me{background:rgba(168,85,247,0.04);border-radius:8px;padding:0.6rem 0.5rem;}
.qm-lb-rank{width:28px;font-size:0.85rem;font-weight:700;text-align:center;flex-shrink:0;}
.qm-lb-avatar{width:30px;height:30px;border-radius:50%;display:flex;align-items:center;
  justify-content:center;font-size:0.75rem;font-weight:700;flex-shrink:0;
  background:rgba(168,85,247,0.15);color:var(--accent4);}
.qm-lb-name{flex:1;font-size:0.85rem;font-weight:500;}
.qm-lb-ipq{font-size:0.72rem;color:var(--muted);flex-shrink:0;}
.qm-lb-score{font-family:'Outfit',serif;font-size:1rem;font-weight:700;
  color:var(--accent4);flex-shrink:0;}

/* Podium final du mois */
.qm-podium-banner{border-radius:18px;padding:1.5rem;text-align:center;
  background:linear-gradient(135deg,rgba(168,85,247,0.1),rgba(245,197,24,0.05));
  border:1.5px solid rgba(168,85,247,0.3);margin-bottom:1rem;}
.qm-podium-title{font-family:'Outfit',serif;font-size:1.4rem;font-weight:900;
  color:var(--accent4);margin-bottom:0.25rem;}
.qm-xp-redistrib{display:grid;grid-template-columns:repeat(3,1fr);gap:0.5rem;margin-top:0.75rem;}
.qm-xp-item{background:var(--surface);border-radius:10px;padding:0.6rem;text-align:center;}
.qm-xp-rank{font-size:1.2rem;margin-bottom:0.2rem;}
.qm-xp-val{font-size:0.9rem;font-weight:700;color:var(--accent2);}
.qm-xp-name{font-size:0.65rem;color:var(--muted);}

/* Overlay pénalité (pendant quiz) */
.qm-penalty-flash{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);
  background:rgba(239,68,68,0.95);color:white;border-radius:16px;padding:1.25rem 2rem;
  font-size:1.1rem;font-weight:700;z-index:9999;pointer-events:none;
  animation:penaltyAnim 1.2s ease forwards;}
@keyframes penaltyAnim{
  0%{opacity:0;transform:translate(-50%,-60%) scale(0.8);}
  20%{opacity:1;transform:translate(-50%,-50%) scale(1.05);}
  70%{opacity:1;transform:translate(-50%,-50%) scale(1);}
  100%{opacity:0;transform:translate(-50%,-40%) scale(0.9);}
}

@media(max-width:580px){
  .qm-days-grid{grid-template-columns:repeat(7,1fr);gap:3px;}
  .qm-xp-redistrib{grid-template-columns:1fr 1fr 1fr;}
}

/* ════════════════════════════════════════════════
   SUPERADMIN PANEL
════════════════════════════════════════════════ */
#superadmin{display:none;flex-direction:column;align-items:center;
  min-height:calc(100vh - var(--nav-h));padding:1.5rem 1rem;}
#superadmin.active{display:flex;}
.sa-wrap{width:100%;max-width:1100px;}

/* Badge superadmin dans la nav */
.sa-nav-badge{display:inline-flex;align-items:center;gap:0.4rem;
  padding:0.25rem 0.65rem;border-radius:50px;font-size:0.72rem;font-weight:700;
  background:linear-gradient(135deg,rgba(239,68,68,0.15),rgba(168,85,247,0.15));
  border:1px solid rgba(239,68,68,0.35);color:#ef4444;cursor:pointer;
  letter-spacing:0.03em;}
.sa-nav-badge:hover{border-color:#ef4444;}

/* Header */
.sa-header{background:var(--surface);border:1.5px solid rgba(239,68,68,0.3);
  border-radius:20px;padding:1.5rem;margin-bottom:1.25rem;position:relative;overflow:hidden;}
.sa-header::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;
  background:linear-gradient(90deg,#ef4444,#a855f7,#f5c518);}
.sa-header-row{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;}
.sa-title{font-family:'Outfit',serif;font-size:1.6rem;font-weight:900;
  color:#ef4444;flex:1;}
.sa-stats-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));
  gap:0.75rem;margin-top:1rem;}
.sa-stat{background:var(--surface2);border-radius:12px;padding:0.85rem;text-align:center;}
.sa-stat-val{font-family:'Outfit',serif;font-size:1.5rem;font-weight:900;color:var(--accent2);}
.sa-stat-lbl{font-size:0.7rem;color:var(--muted);text-transform:uppercase;
  letter-spacing:0.06em;margin-top:0.15rem;}

/* Tabs */
/* ── Navigation Super Admin : sidebar moderne ── */
.sa-shell{display:block;}
.sa-content-area{width:100%;min-width:0;}
/* ── Tableau de bord à cartes (centre de contrôle) ── */
.sa-home-search-wrap{margin-bottom:1.2rem;}
.sa-home-search{width:100%;max-width:520px;padding:0.7rem 1rem;background:var(--surface2);
  border:1px solid var(--border);border-radius:11px;color:var(--text);font-size:0.95rem;
  outline:none;box-sizing:border-box;}
.sa-home-search:focus{border-color:var(--accent);}
.sa-home-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem;}
.sa-home-card{background:var(--surface);border:1px solid var(--border);border-radius:14px;
  padding:1rem;transition:border-color 0.15s;}
.sa-home-card:hover{border-color:var(--accent);}
.sa-home-favs{margin-bottom:1rem;border-color:rgba(245,197,24,0.35);}
.sa-home-card-head{display:flex;align-items:center;gap:0.5rem;margin-bottom:0.7rem;
  padding-bottom:0.5rem;border-bottom:1px solid var(--border);}
.sa-home-card-ico{font-size:1.25rem;}
.sa-home-card-title{font-weight:700;font-size:1rem;flex:1;}
.sa-home-items{display:flex;flex-direction:column;gap:0.15rem;}
.sa-home-item{display:flex;align-items:center;gap:0.55rem;padding:0.5rem 0.6rem;
  border-radius:8px;cursor:pointer;color:var(--muted);font-size:0.86rem;transition:all 0.12s;}
.sa-home-item:hover{background:var(--surface2);color:var(--text);}
.sa-home-item-ico{font-size:0.95rem;width:1.3rem;text-align:center;}
.sa-home-item-label{flex:1;}
.sa-home-item.soon{opacity:0.4;cursor:default;}
.sa-home-item.soon:hover{background:transparent;color:var(--muted);}
.sa-home-soon{font-size:0.58rem;text-transform:uppercase;letter-spacing:0.05em;
  color:var(--muted);border:1px solid var(--border);border-radius:99px;padding:0.05rem 0.45rem;}
.sa-home-badge{background:var(--wrong);color:#fff;font-size:0.62rem;font-weight:700;
  padding:0.05rem 0.45rem;border-radius:99px;min-width:1.1rem;text-align:center;}
.sa-back-home{display:inline-flex;align-items:center;}



/* ── Manche Découverte : tuiles ── */
.dec-tile{padding:0.9rem 0.6rem;border-radius:12px;border:1.5px solid var(--border);
  background:var(--surface2);color:var(--text);font-size:0.92rem;font-weight:600;
  cursor:pointer;transition:all 0.15s;text-align:center;}
.dec-tile:hover:not(:disabled){border-color:var(--accent);background:var(--surface);transform:translateY(-1px);}
.dec-tile:active:not(:disabled){transform:scale(0.97);}
.dec-tile.dec-elim{background:var(--surface);color:var(--muted);opacity:0.45;
  text-decoration:line-through;cursor:not-allowed;border-color:transparent;}

/* ── Mode compact (icônes seules) ── */
.sa-sidebar.compact{flex:0 0 64px;}
.sa-sidebar.compact .sa-tab span:nth-child(2){display:none;}  /* libellé masqué */
.sa-sidebar.compact .sa-tab span:last-child{display:none;}    /* étoile masquée */
.sa-sidebar.compact .sa-tab{justify-content:center;padding:0.55rem 0;position:relative;}
.sa-sidebar.compact .sa-nav-group-title{text-align:center;font-size:0.55rem;padding:0.3rem 0;}
.sa-sidebar.compact .sa-sidebar-search{display:none;}
.sa-sidebar.compact .sa-tab-badge{position:absolute;top:2px;right:8px;margin:0;}
.sa-sidebar.compact #sa-nav-orphans{display:none;}
/* tooltip au survol en mode compact */
.sa-sidebar.compact .sa-tab:hover::after{
  content:attr(data-tip);position:absolute;left:100%;top:50%;transform:translateY(-50%);
  margin-left:8px;background:var(--surface);color:var(--text);border:1px solid var(--border);
  padding:0.3rem 0.6rem;border-radius:7px;font-size:0.78rem;white-space:nowrap;z-index:600;
  box-shadow:0 4px 16px rgba(0,0,0,0.3);pointer-events:none;}
.sa-compact-toggle{display:flex;align-items:center;gap:0.4rem;width:100%;justify-content:center;
  background:var(--surface);border:1px solid var(--border);color:var(--muted);
  border-radius:8px;padding:0.4rem;font-size:0.74rem;cursor:pointer;margin-bottom:0.5rem;}
.sa-compact-toggle:hover{color:var(--text);}
.sa-burger{display:none;background:var(--surface2);border:1px solid var(--border);
  color:var(--text);border-radius:9px;padding:0.5rem 0.9rem;font-size:1rem;cursor:pointer;
  margin-bottom:0.8rem;align-items:center;gap:0.5rem;}
@media (max-width: 820px){
  .sa-shell{flex-direction:column;}
  .sa-burger{display:inline-flex;}
  .sa-sidebar{position:fixed;top:0;left:0;bottom:0;z-index:500;flex:none;width:260px;
    max-height:100vh;max-height:100dvh;border-radius:0;transform:translateX(-105%);
    transition:transform 0.25s ease;box-shadow:4px 0 24px rgba(0,0,0,0.4);}
  .sa-sidebar.open{transform:translateX(0);}
  .sa-content-area{width:100%;}
  .sa-sidebar-backdrop{display:none;position:fixed;inset:0;background:rgba(0,0,0,0.5);z-index:499;}
  .sa-sidebar-backdrop.open{display:block;}
}

/* Sections */
.sa-panel{display:none;}
.sa-panel.active{display:block;}
.sa-card{background:var(--surface);border:1px solid var(--border);
  border-radius:16px;padding:1.25rem;margin-bottom:1rem;}
.sa-card-title{font-size:1rem;font-weight:700;color:var(--text);
  letter-spacing:0;text-transform:none;margin-bottom:0.9rem;
  display:flex;align-items:center;justify-content:space-between;gap:0.5rem;flex-wrap:wrap;}

/* Table users */
.sa-table{width:100%;border-collapse:collapse;font-size:0.83rem;}
.sa-table th{padding:0.6rem 0.75rem;text-align:left;color:var(--muted);font-weight:600;
  font-size:0.72rem;text-transform:uppercase;letter-spacing:0.06em;
  border-bottom:1px solid var(--border);}
.sa-table td{padding:0.65rem 0.75rem;border-bottom:1px solid var(--border);vertical-align:middle;}
.sa-table tr:last-child td{border-bottom:none;}
.sa-table tr:hover td{background:rgba(42,221,243,0.02);}

/* Badges rôles */
.sa-role{padding:0.18rem 0.55rem;border-radius:50px;font-size:0.68rem;font-weight:700;}
.sa-role.superadmin{background:rgba(239,68,68,0.12);color:#ef4444;border:1px solid rgba(239,68,68,0.3);}
.sa-role.admin{background:rgba(168,85,247,0.1);color:var(--accent4);border:1px solid rgba(168,85,247,0.25);}
.sa-role.banned{background:rgba(239,68,68,0.06);color:var(--wrong);border:1px solid rgba(239,68,68,0.15);}
.sa-role.user{background:var(--surface2);color:var(--muted);border:1px solid var(--border);}

/* Boutons actions */
.sa-btn{padding:0.3rem 0.7rem;border-radius:8px;font-family:'Plus Jakarta Sans',sans-serif;
  font-size:0.75rem;font-weight:600;cursor:pointer;transition:all 0.18s;border:none;}
.sa-btn.danger{background:rgba(239,68,68,0.1);color:#ef4444;border:1px solid rgba(239,68,68,0.25);}
.sa-btn.danger:hover{background:rgba(239,68,68,0.2);}
.sa-btn.promote{background:rgba(168,85,247,0.1);color:var(--accent4);border:1px solid rgba(168,85,247,0.25);}
.sa-btn.promote:hover{background:rgba(168,85,247,0.2);}
.sa-btn.success{background:rgba(34,197,94,0.1);color:var(--correct);border:1px solid rgba(34,197,94,0.25);}
.sa-btn.success:hover{background:rgba(34,197,94,0.2);}
.sa-btn.neutral{background:var(--surface2);color:var(--muted);border:1px solid var(--border);}

/* ═══════════════════════════════════════════════════════════
   SYSTÈME DE DESIGN SUPERADMIN UNIFIÉ (Étape A — fondations)
   Complète l'existant sans casser : classes cohérentes pour cartes,
   boutons d'action, badges de statut, en-têtes et tableaux.
   Terminologie standard : Créer · Modifier · Dupliquer · Programmer ·
   Archiver · Supprimer · Historique · Statistiques.
   ═══════════════════════════════════════════════════════════ */

/* — Boutons : style de base homogène + variantes d'action standard — */
.sa-btn{display:inline-flex;align-items:center;gap:0.3rem;line-height:1.2;
  background:var(--surface2);color:var(--text);border:1px solid var(--border);}
.sa-btn:hover{filter:brightness(1.12);}
.sa-btn:active{transform:translateY(1px);}
.sa-btn:disabled{opacity:0.5;cursor:not-allowed;}
/* Variantes sémantiques (une couleur = une intention, partout pareil) */
.sa-btn.primary{background:linear-gradient(90deg,var(--accent),var(--accent4));color:var(--bg);border:none;font-weight:700;}
.sa-btn.create{background:rgba(34,197,94,0.12);color:var(--correct);border:1px solid rgba(34,197,94,0.3);}
.sa-btn.edit{background:rgba(56,139,253,0.12);color:#388bfd;border:1px solid rgba(56,139,253,0.3);}
.sa-btn.duplicate{background:rgba(168,85,247,0.1);color:var(--accent4);border:1px solid rgba(168,85,247,0.25);}
.sa-btn.schedule{background:rgba(245,197,24,0.12);color:#c79100;border:1px solid rgba(245,197,24,0.3);}
.sa-btn.archive{background:rgba(100,116,139,0.14);color:#94a3b8;border:1px solid rgba(100,116,139,0.3);}
.sa-btn.history{background:var(--surface3);color:var(--text);border:1px solid var(--border);}
.sa-btn.stats{background:rgba(42,221,243,0.1);color:var(--accent);border:1px solid rgba(42,221,243,0.25);}

/* — Badges de statut unifiés (un seul système pour tous les modules) — */
.sa-badge{display:inline-flex;align-items:center;gap:0.25rem;padding:0.14rem 0.55rem;
  border-radius:99px;font-size:0.7rem;font-weight:700;white-space:nowrap;}
.sa-badge.live{background:rgba(34,197,94,0.18);color:#22c55e;}        /* En cours */
.sa-badge.scheduled{background:rgba(56,139,253,0.18);color:#388bfd;}  /* Programmé */
.sa-badge.upcoming{background:rgba(249,115,22,0.18);color:#f97316;}   /* À venir */
.sa-badge.done{background:rgba(100,116,139,0.22);color:#94a3b8;}      /* Terminé */
.sa-badge.archived{background:rgba(100,116,139,0.12);color:#64748b;}  /* Archivé */
.sa-badge.warn{background:rgba(245,158,11,0.16);color:#f59e0b;}
.sa-badge.danger{background:rgba(239,68,68,0.14);color:#ef4444;}

/* — En-tête de carte : titre + actions alignés, taille de titre homogène — */
.sa-card-head{display:flex;align-items:center;justify-content:space-between;gap:0.6rem;
  flex-wrap:wrap;margin-bottom:0.9rem;}
.sa-card-head .sa-h{font-size:1rem;font-weight:700;color:var(--text);
  text-transform:none;letter-spacing:0;display:flex;align-items:center;gap:0.4rem;}
.sa-card-actions{display:flex;gap:0.35rem;flex-wrap:wrap;}

/* — Barre de filtres/onglets segmentés réutilisable — */
.sa-segment{display:flex;gap:0.35rem;flex-wrap:wrap;align-items:center;}
.sa-segment .seg{padding:0.35rem 0.7rem;border-radius:8px;border:1px solid var(--border);
  cursor:pointer;font-size:0.78rem;background:transparent;color:var(--text);transition:all 0.15s;}
.sa-segment .seg.active{background:var(--accent);color:var(--bg);border-color:var(--accent);font-weight:700;}
.sa-segment .seg .count{opacity:0.7;margin-left:0.2rem;}

/* — Ligne d'élément de liste cohérente (carte compacte) — */
.sa-row{display:flex;justify-content:space-between;align-items:flex-start;gap:0.6rem;
  flex-wrap:wrap;padding:0.8rem;border:1px solid var(--border);border-radius:12px;
  background:var(--surface);margin-bottom:0.55rem;}
.sa-row-main{flex:1;min-width:200px;}
.sa-row-title{font-weight:700;display:flex;align-items:center;gap:0.5rem;flex-wrap:wrap;}
.sa-row-meta{font-size:0.74rem;color:var(--muted);margin-top:0.3rem;line-height:1.5;}
.sa-row-actions{display:flex;gap:0.3rem;flex-wrap:wrap;margin-top:0.5rem;}

/* — Responsive : mêmes règles d'affichage sur ordi / tablette / mobile — */
@media (max-width: 640px){
  .sa-card{padding:1rem;border-radius:14px;}
  .sa-tabs{overflow-x:auto;-webkit-overflow-scrolling:touch;flex-wrap:nowrap;}
  .sa-table{font-size:0.78rem;}
  .sa-table th,.sa-table td{padding:0.5rem 0.5rem;}
  .sa-row{padding:0.7rem;}
  .sa-card-actions,.sa-row-actions{width:100%;}
  .sa-btn{font-size:0.74rem;padding:0.35rem 0.6rem;}
}

/* Logs */
.sa-log-entry{display:flex;align-items:flex-start;gap:0.75rem;padding:0.65rem 0;
  border-bottom:1px solid var(--border);font-size:0.82rem;}
.sa-log-entry:last-child{border-bottom:none;}
.sa-log-icon{font-size:1rem;flex-shrink:0;margin-top:0.1rem;}
.sa-log-main{flex:1;}
.sa-log-action{font-weight:600;color:var(--text);}
.sa-log-target{color:var(--muted);font-size:0.78rem;}
.sa-log-time{font-size:0.72rem;color:var(--muted);flex-shrink:0;}

/* Stats quiz mois (pour admin) */
.sa-month-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:0.75rem;}

/* Danger zone */
.sa-danger-zone{border:1.5px solid rgba(239,68,68,0.3);border-radius:14px;
  padding:1.1rem 1.25rem;background:rgba(239,68,68,0.03);}
.sa-danger-title{color:#ef4444;font-weight:700;margin-bottom:0.5rem;font-size:0.88rem;}

/* Recherche */
.sa-search{width:100%;padding:0.65rem 1rem;background:var(--surface2);
  border:1px solid var(--border);border-radius:10px;color:var(--text);
  font-family:'Plus Jakarta Sans',sans-serif;font-size:0.88rem;outline:none;
  margin-bottom:1rem;}
.sa-search:focus{border-color:var(--accent);}

@media(max-width:600px){
  .sa-table thead{display:none;}
  .sa-table td{display:flex;justify-content:space-between;padding:0.4rem 0.5rem;}
}

/* ════════════════════════════════════════════════
   COMMUNAUTÉS FHAF
════════════════════════════════════════════════ */
#communities{display:none;flex-direction:column;align-items:center;
  min-height:calc(100vh - var(--nav-h));padding:1.5rem 1rem;}
#communities.active{display:flex;}
.cm-wrap{width:100%;max-width:900px;}

/* Header comm */
.cm-hero{border-radius:20px;padding:1.5rem;margin-bottom:1.25rem;
  background:var(--surface);border:1.5px solid rgba(42,221,243,0.2);
  position:relative;overflow:hidden;}
.cm-hero::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;
  background:linear-gradient(90deg,var(--accent),var(--accent2),var(--accent4));}
.cm-hero-title{font-family:'Outfit',serif;font-size:1.6rem;font-weight:900;
  display:flex;align-items:center;gap:0.6rem;margin-bottom:0.2rem;}
.cm-hero-sub{font-size:0.82rem;color:var(--muted);}

/* Tabs comm */
.cm-tabs{display:flex;gap:0;background:var(--surface2);border-radius:12px;
  padding:4px;margin-bottom:1.25rem;overflow-x:auto;}
.cm-tab{padding:0.6rem 1.1rem;background:transparent;border:none;color:var(--muted);
  font-family:'Plus Jakarta Sans',sans-serif;font-size:0.85rem;cursor:pointer;border-radius:8px;
  transition:all 0.2s;white-space:nowrap;font-weight:500;}
.cm-tab.active{background:var(--surface);color:var(--text);font-weight:600;
  box-shadow:0 1px 4px rgba(0,0,0,0.25);}

/* Card communauté */
.comm-card{background:var(--surface);border:1.5px solid var(--border);
  border-radius:18px;padding:1.25rem;margin-bottom:0.85rem;
  transition:all 0.2s;cursor:pointer;position:relative;overflow:hidden;}
.comm-card:hover{transform:translateY(-2px);border-color:var(--accent);}
.comm-card-top{display:flex;align-items:center;gap:1rem;margin-bottom:0.85rem;}
.comm-logo{width:48px;height:48px;border-radius:14px;display:flex;align-items:center;
  justify-content:center;font-size:1.5rem;flex-shrink:0;}
.comm-name{font-family:'Outfit',serif;font-size:1.05rem;font-weight:700;}
.comm-desc{font-size:0.78rem;color:var(--muted);margin-top:0.15rem;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:300px;}
.comm-stats{display:flex;gap:0.75rem;flex-wrap:wrap;margin-left:auto;flex-shrink:0;}
.comm-stat{text-align:center;}
.comm-stat-val{font-size:0.95rem;font-weight:700;color:var(--accent2);}
.comm-stat-lbl{font-size:0.65rem;color:var(--muted);}
.comm-activity-bar{height:4px;border-radius:99px;background:var(--surface2);
  overflow:hidden;margin-top:0.75rem;}
.comm-activity-fill{height:100%;border-radius:99px;transition:width 0.5s ease;}
.comm-badges{display:flex;gap:0.4rem;flex-wrap:wrap;margin-top:0.6rem;}
.comm-badge{padding:0.15rem 0.5rem;border-radius:50px;font-size:0.68rem;font-weight:600;}
.badge-open{background:rgba(34,197,94,0.1);color:var(--correct);border:1px solid rgba(34,197,94,0.2);}
.badge-test{background:rgba(245,197,24,0.1);color:var(--accent2);border:1px solid rgba(245,197,24,0.2);}
.badge-full{background:rgba(239,68,68,0.08);color:var(--wrong);border:1px solid rgba(239,68,68,0.15);}
.badge-mine{background:rgba(42,221,243,0.1);color:var(--accent);border:1px solid rgba(42,221,243,0.2);}
.badge-cup{background:rgba(168,85,247,0.1);color:var(--accent4);border:1px solid rgba(168,85,247,0.2);}

/* Panel ma communauté */
.my-comm-header{border-radius:20px;padding:1.5rem;margin-bottom:1rem;
  position:relative;overflow:hidden;border:1.5px solid;}
.my-comm-header::before{content:'';position:absolute;inset:0;opacity:0.06;}
.my-comm-title{font-family:'Outfit',serif;font-size:1.5rem;font-weight:900;margin-bottom:0.2rem;}
.my-comm-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:0.65rem;margin-top:1rem;}
.my-comm-stat{background:rgba(0,0,0,0.2);border-radius:12px;padding:0.75rem;text-align:center;}
.my-comm-stat-val{font-family:'Outfit',serif;font-size:1.3rem;font-weight:900;}
.my-comm-stat-lbl{font-size:0.65rem;opacity:0.7;text-transform:uppercase;letter-spacing:0.05em;}

/* Membres */
.cm-member{display:flex;align-items:center;gap:0.75rem;padding:0.65rem 0;
  border-bottom:1px solid var(--border);}
.cm-member:last-child{border-bottom:none;}
.cm-member-avatar{width:34px;height:34px;border-radius:50%;display:flex;align-items:center;
  justify-content:center;font-size:0.85rem;font-weight:700;flex-shrink:0;
  background:rgba(42,221,243,0.15);color:var(--accent);}
.cm-member-name{flex:1;font-size:0.88rem;font-weight:500;}
.cm-member-role{font-size:0.68rem;padding:0.12rem 0.45rem;border-radius:50px;
  font-weight:600;flex-shrink:0;}
.role-leader{background:rgba(245,197,24,0.15);color:var(--accent2);}
.role-officer{background:rgba(168,85,247,0.12);color:var(--accent4);}
.role-member{background:var(--surface2);color:var(--muted);}
.cm-member-xp{font-size:0.78rem;color:var(--accent2);font-weight:700;flex-shrink:0;}
.cm-member-actions{display:flex;gap:4px;flex-shrink:0;}

/* Algorithme xp boost */
.cm-boost-display{background:linear-gradient(135deg,rgba(245,197,24,0.08),rgba(42,221,243,0.06));
  border:1px solid rgba(245,197,24,0.2);border-radius:14px;padding:1rem 1.25rem;
  margin-bottom:1rem;}
.cm-boost-title{font-weight:700;color:var(--accent2);margin-bottom:0.5rem;font-size:0.88rem;}
.cm-boost-formula{font-family:monospace;font-size:0.78rem;color:var(--muted);
  background:var(--surface2);padding:0.5rem 0.75rem;border-radius:8px;margin-bottom:0.5rem;}
.cm-boost-val{font-family:'Outfit',serif;font-size:1.4rem;font-weight:900;
  color:var(--accent2);}

/* Notifs communauté */
.cm-notif{display:flex;align-items:flex-start;gap:0.75rem;padding:0.75rem;
  border-radius:12px;margin-bottom:0.5rem;border:1px solid var(--border);}
.cm-notif.warn{background:rgba(239,68,68,0.05);border-color:rgba(239,68,68,0.2);}
.cm-notif.success{background:rgba(34,197,94,0.05);border-color:rgba(34,197,94,0.2);}
.cm-notif.info{background:rgba(42,221,243,0.05);border-color:rgba(42,221,243,0.2);}
.cm-notif-icon{font-size:1.2rem;flex-shrink:0;}
.cm-notif-title{font-size:0.85rem;font-weight:600;margin-bottom:0.15rem;}
.cm-notif-msg{font-size:0.78rem;color:var(--muted);line-height:1.45;}

/* Coupe des Communautés */
.cup-bracket{display:grid;gap:1rem;}
.cup-match{background:var(--surface);border:1px solid var(--border);border-radius:14px;
  padding:1rem;display:flex;align-items:center;gap:0.75rem;}
.cup-match-team{flex:1;text-align:center;}
.cup-match-name{font-weight:700;font-size:0.88rem;margin-bottom:0.25rem;}
.cup-match-score{font-family:'Outfit',serif;font-size:1.4rem;font-weight:900;
  color:var(--accent2);}
.cup-match-vs{color:var(--muted);font-size:0.8rem;font-weight:700;flex-shrink:0;}
.cup-match.winner-a .cup-match-team:first-child .cup-match-name{color:var(--correct);}
.cup-match.winner-b .cup-match-team:last-child .cup-match-name{color:var(--correct);}
.cup-phase-title{font-size:0.72rem;text-transform:uppercase;letter-spacing:0.1em;
  color:var(--muted);font-weight:700;margin-bottom:0.75rem;margin-top:1rem;}

/* Test d'entrée */
.entry-test-card{background:var(--surface);border:1.5px solid rgba(245,197,24,0.3);
  border-radius:16px;padding:1.25rem;margin-bottom:1rem;}
.entry-test-title{font-weight:700;color:var(--accent2);margin-bottom:0.75rem;}
.entry-q{padding:0.65rem 0;border-bottom:1px solid var(--border);font-size:0.85rem;}
.entry-q:last-child{border-bottom:none;}

/* Invitation */
.invite-card{display:flex;align-items:center;gap:0.75rem;padding:0.85rem;
  background:var(--surface2);border-radius:12px;margin-bottom:0.5rem;}
.invite-avatar{width:36px;height:36px;border-radius:50%;background:rgba(168,85,247,0.15);
  color:var(--accent4);display:flex;align-items:center;justify-content:center;
  font-weight:700;flex-shrink:0;}
.invite-name{flex:1;font-size:0.88rem;font-weight:500;}
.invite-status{font-size:0.72rem;padding:0.15rem 0.5rem;border-radius:50px;}
.inv-pending{background:rgba(245,197,24,0.1);color:var(--accent2);}
.inv-accepted{background:rgba(34,197,94,0.1);color:var(--correct);}
.inv-declined{background:rgba(239,68,68,0.08);color:var(--wrong);}

@media(max-width:580px){
  .comm-stats{display:none;}
  .my-comm-stats{grid-template-columns:1fr 1fr;}
}


  /* ── Identification v2 — 2 indices ── */
  .indice-item {
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: 14px;
    padding: 0.85rem 1rem;
    margin-bottom: 0.65rem;
    transition: all 0.3s ease;
  }
  .indice-item[data-hint-num="1"] {
    border-color: rgba(239,68,68,0.4);
    background: rgba(239,68,68,0.04);
  }
  .indice-item[data-hint-num="2"] {
    border-color: rgba(245,197,24,0.4);
    background: rgba(245,197,24,0.04);
  }
  @keyframes fadeUp {
    from { opacity:0; transform:translateY(10px); }
    to   { opacity:1; transform:none; }
  }

  /* ── Politique d'utilisation ── */
  .pol-card {
    display: flex;
    gap: 1rem;
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: 16px;
    padding: 1.25rem 1.5rem;
  }
  .pol-num {
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: var(--accent);
    color: var(--bg);
    font-family: 'Outfit', serif;
    font-size: 0.95rem;
    font-weight: 900;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    margin-top: 2px;
  }
  .pol-body { flex: 1; }
  .pol-title {
    font-family: 'Outfit', serif;
    font-size: 1rem;
    font-weight: 700;
    color: var(--text);
    margin-bottom: 0.5rem;
  }
  .pol-text {
    font-size: 0.84rem;
    color: var(--muted);
    line-height: 1.7;
    margin: 0;
  }
  .pol-list {
    font-size: 0.84rem;
    color: var(--muted);
    line-height: 1.7;
    padding-left: 1.25rem;
    margin: 0.4rem 0 0;
  }
  .pol-list li { margin-bottom: 0.35rem; }
  @media(max-width:520px){
    .pol-card { flex-direction: column; gap: 0.5rem; }
  }

  /* ══════════════════════════════════════════
     NAV ÉPURÉE + MENU DÉROULANT
  ══════════════════════════════════════════ */
  .nav-pill {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    padding: 0.4rem 0.75rem;
    border-radius: 50px;
    border: 1px solid var(--border);
    background: var(--surface);
    font-family: 'Plus Jakarta Sans', sans-serif;
    font-size: 0.78rem;
    font-weight: 600;
    cursor: pointer;
    transition: all 0.15s;
    white-space: nowrap;
  }
  .nav-pill:hover { opacity: 0.8; }
  .nav-pill-label { display: inline; }
  @media(max-width: 420px) { .nav-pill-label { display: none; } }

  .nav-menu-item {
    display: flex;
    align-items: center;
    gap: 0.65rem;
    width: 100%;
    padding: 0.6rem 0.75rem;
    border: none;
    background: none;
    border-radius: 10px;
    font-family: 'Plus Jakarta Sans', sans-serif;
    font-size: 0.88rem;
    color: var(--text);
    cursor: pointer;
    text-align: left;
    transition: background 0.1s;
  }
  .nav-menu-item:hover { background: var(--surface2); }

  /* ══════════════════════════════════════════
     ACCUEIL — GRILLE DE MODES
  ══════════════════════════════════════════ */
  .home-mode-card {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.25rem;
    padding: 1rem 1.1rem;
    border-radius: 16px;
    border: 1.5px solid color-mix(in srgb, var(--mc) 30%, transparent);
    background: var(--mc-bg);
    cursor: pointer;
    text-align: left;
    transition: transform 0.15s, box-shadow 0.15s;
    font-family: 'Plus Jakarta Sans', sans-serif;
  }
  .home-mode-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 16px rgba(0,0,0,0.15);
  }
  .home-mode-icon {
    font-size: 1.5rem;
    margin-bottom: 0.15rem;
  }
  .home-mode-name {
    font-size: 0.9rem;
    font-weight: 700;
    color: var(--mc);
  }
  .home-mode-sub {
    font-size: 0.72rem;
    color: var(--muted);
    line-height: 1.4;
  }

  /* ── Accueil connecté : carte de bienvenue personnalisée ── */
  .home-welcome{
    display:flex;align-items:center;gap:0.9rem;
    padding:1rem 1.2rem;margin-bottom:1.1rem;border-radius:18px;
    background:linear-gradient(135deg, color-mix(in srgb,var(--accent) 14%,var(--surface)), var(--surface));
    border:1px solid color-mix(in srgb,var(--accent) 25%,var(--border));
    animation:home-fade-up 0.5s ease both;
  }
  .home-welcome-avatar{
    width:48px;height:48px;border-radius:50%;flex-shrink:0;
    display:flex;align-items:center;justify-content:center;
    font-size:1.3rem;font-weight:800;color:var(--bg);
    background:linear-gradient(135deg,var(--accent),var(--accent4));
    box-shadow:0 4px 14px color-mix(in srgb,var(--accent) 40%,transparent);
  }
  .home-welcome-info{flex:1;min-width:0;}
  .home-welcome-hi{font-size:0.74rem;color:var(--muted);font-weight:600;}
  .home-welcome-name{font-size:1.15rem;font-weight:800;color:var(--text);
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .home-welcome-meta{display:flex;gap:0.4rem;margin-top:0.25rem;flex-wrap:wrap;}
  .home-chip{font-size:0.68rem;font-weight:700;padding:0.12rem 0.55rem;border-radius:50px;
    background:color-mix(in srgb,var(--accent) 14%,transparent);color:var(--accent);}
  .home-chip.gold{background:rgba(245,197,24,0.14);color:var(--accent2);}
  .home-chip.streak{background:rgba(255,107,107,0.12);color:#ff8787;}

  /* niveau / progression XP */
  .home-xp-bar{height:6px;border-radius:50px;background:var(--surface2);overflow:hidden;margin-top:0.5rem;}
  .home-xp-fill{height:100%;border-radius:50px;background:linear-gradient(90deg,var(--accent),var(--accent4));
    transition:width 0.8s cubic-bezier(.4,0,.2,1);}

  /* animations d'apparition en cascade */
  @keyframes home-fade-up{from{opacity:0;transform:translateY(12px);}to{opacity:1;transform:translateY(0);}}
  .home-anim{animation:home-fade-up 0.5s ease both;}
  .home-anim-1{animation-delay:0.05s;}
  .home-anim-2{animation-delay:0.12s;}
  .home-anim-3{animation-delay:0.19s;}
  .home-anim-4{animation-delay:0.26s;}

  /* carte mode : effet de brillance au survol */
  .home-mode-card{position:relative;overflow:hidden;}
  .home-mode-card::after{content:'';position:absolute;inset:0;border-radius:16px;
    background:radial-gradient(circle at 50% 0%, color-mix(in srgb,var(--mc) 18%,transparent), transparent 70%);
    opacity:0;transition:opacity 0.25s;pointer-events:none;}
  .home-mode-card:hover::after{opacity:1;}
  .home-mode-card:active{transform:translateY(0) scale(0.98);}

  /* bandeau nouveauté */
  .home-new-banner{display:flex;align-items:center;justify-content:space-between;
    width:100%;padding:0.9rem 1.1rem;margin-bottom:1.25rem;border-radius:16px;cursor:pointer;
    text-align:left;font-family:'Plus Jakarta Sans',sans-serif;color:var(--text);
    background:linear-gradient(135deg,rgba(167,139,250,0.12),rgba(42,221,243,0.06));
    border:1px solid rgba(167,139,250,0.3);transition:transform 0.15s;}
  .home-new-banner:hover{transform:translateY(-2px);}
  .home-new-tag{font-size:0.6rem;font-weight:800;text-transform:uppercase;letter-spacing:0.08em;
    color:var(--bg);background:var(--accent4);padding:0.1rem 0.45rem;border-radius:50px;margin-right:0.4rem;}
/* ── Android Chrome Fix (minimal) ── */
/* Sur Android, display:flex avec align-items:center décale le contenu hors viewport */
/* Solution : forcer display:block sur home uniquement sur mobile */
@media (max-width: 1023px) {
  #home {
    display: none; /* masqué par défaut */
  }
  #home.active {
    display: block !important;
    min-height: calc(100vh - var(--nav-h, 60px));
    padding: 0;
    text-align: center;
    overflow-y: auto;
  }
  #home-inner {
    width: 100%;
    padding: 1rem 1rem 5rem;
    box-sizing: border-box;
  }
  #home-col-main {
    display: block !important;
    width: 100%;
  }
  #home-col-side,
  #home-hero-desktop,
  #home-stats-desktop {
    display: none !important;
  }
  /* Éléments masqués par nos sessions précédentes — restaurer */
  .home-play-card, .ph-play {
    display: block !important;
  }
  .home-stats {
    display: flex !important;
    flex-wrap: wrap;
    gap: .4rem;
    justify-content: center;
    margin: .5rem 0 1rem;
  }
  .home-title {
    display: block !important;
  }
  .home-sub {
    display: block !important;
  }
}


/* ════════════════════════════════════════════════════════
   BATTLE — UI v2 : 3 étapes, sans champ Source
   ════════════════════════════════════════════════════════ */
.battle-header { margin-bottom: 1.5rem; }
.battle-header-title {
  font-family: 'Outfit', sans-serif;
  font-size: 2rem; font-weight: 900;
  display: flex; align-items: center; gap: .75rem;
}
.battle-header-sub { color: var(--muted); font-size: .88rem; margin-top: .25rem; }

/* Étapes */
.battle-step-header {
  display: flex; align-items: flex-start; gap: .85rem;
  margin-bottom: 1.25rem;
}
.battle-step-num {
  width: 32px; height: 32px; border-radius: 50%;
  background: linear-gradient(135deg, #3b82f6, #ef4444);
  color: #fff; font-weight: 800; font-size: .9rem;
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.battle-step-title { font-size: 1.05rem; font-weight: 700; color: var(--text); }
.battle-step-sub   { font-size: .78rem; color: var(--muted); margin-top: .15rem; }

/* Inputs */
.battle-input {
  width: 100%;
  padding: .5rem .75rem;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 8px;
  color: var(--text);
  font-family: 'Plus Jakarta Sans', sans-serif;
  font-size: .88rem;
  outline: none;
  box-sizing: border-box;
}
.battle-input:focus { border-color: rgba(59,130,246,.5); }
.battle-select {
  width: 100%;
  padding: .45rem .75rem;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 8px;
  color: var(--text);
  font-family: 'Plus Jakarta Sans', sans-serif;
  outline: none;
}

/* Boutons navigation */
.btn-battle-next {
  width: 100%;
  padding: .85rem;
  background: linear-gradient(135deg, #3b82f6, #ef4444);
  border: none;
  border-radius: 12px;
  color: #fff;
  font-family: 'Plus Jakarta Sans', sans-serif;
  font-size: .95rem;
  font-weight: 700;
  cursor: pointer;
  margin-top: 1rem;
}
.btn-battle-back {
  padding: .85rem 1.25rem;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 12px;
  color: var(--text);
  font-family: 'Plus Jakarta Sans', sans-serif;
  font-size: .88rem;
  font-weight: 600;
  cursor: pointer;
}

/* Tabs ajout question */
.battle-add-tabs {
  display: flex;
  gap: .5rem;
  margin-bottom: 1rem;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: .3rem;
}
.battle-add-tab {
  flex: 1;
  padding: .5rem;
  border: none;
  border-radius: 7px;
  background: none;
  color: var(--muted);
  font-family: 'Plus Jakarta Sans', sans-serif;
  font-size: .82rem;
  font-weight: 600;
  cursor: pointer;
  transition: background .15s, color .15s;
}
.battle-add-tab.active {
  background: var(--accent);
  color: #fff;
}

/* Formulaire question */
.battle-q-form {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 1rem;
}
.battle-q-form-row { margin-bottom: .65rem; }
.battle-form-label {
  display: block;
  font-size: .72rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .06em;
  color: var(--muted);
  margin-bottom: .25rem;
}
.btn-battle-add-q {
  width: 100%;
  margin-top: .5rem;
  padding: .7rem;
  background: rgba(59,130,246,.12);
  border: 1px solid rgba(59,130,246,.3);
  border-radius: 8px;
  color: #3b82f6;
  font-family: 'Plus Jakarta Sans', sans-serif;
  font-size: .88rem;
  font-weight: 700;
  cursor: pointer;
}

/* JSON */
.battle-json-zone {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 1rem;
}
.battle-json-title { font-size: .82rem; font-weight: 700; color: var(--text); margin-bottom: .4rem; }
.battle-json-example {
  background: var(--surface2);
  border-radius: 8px;
  padding: .75rem;
  font-size: .72rem;
  color: var(--muted);
  overflow-x: auto;
  margin-bottom: .75rem;
  white-space: pre;
}
.battle-json-textarea {
  width: 100%;
  min-height: 130px;
  padding: .65rem .75rem;
  background: var(--surface2);
  border: 1px solid var(--border);
  border-radius: 8px;
  color: var(--text);
  font-family: monospace;
  font-size: .78rem;
  resize: vertical;
  outline: none;
  box-sizing: border-box;
  margin-bottom: .65rem;
}
.battle-json-errors {
  background: rgba(239,68,68,.08);
  border: 1px solid rgba(239,68,68,.3);
  border-radius: 8px;
  padding: .65rem .85rem;
  font-size: .78rem;
  color: var(--wrong);
  margin-bottom: .65rem;
}
.btn-battle-import {
  width: 100%;
  padding: .7rem;
  background: rgba(34,197,94,.12);
  border: 1px solid rgba(34,197,94,.35);
  border-radius: 8px;
  color: #22c55e;
  font-family: 'Plus Jakarta Sans', sans-serif;
  font-size: .88rem;
  font-weight: 700;
  cursor: pointer;
}

/* Liste questions */
.battle-q-count-row {
  font-size: .82rem;
  color: var(--muted);
  margin-bottom: .5rem;
  display: flex;
  align-items: center;
  gap: .4rem;
}
.battle-q-count {
  font-size: 1.1rem;
  font-weight: 800;
  color: var(--accent);
}
.battle-q-min { font-size: .72rem; color: var(--muted); }
.battle-q-list { display: flex; flex-direction: column; gap: .35rem; }
.battle-q-item {
  display: flex;
  align-items: center;
  gap: .6rem;
  padding: .6rem .75rem;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 8px;
  font-size: .8rem;
}
.battle-q-item-num { color: var(--accent); font-weight: 700; flex-shrink: 0; min-width: 22px; }
.battle-q-item-text { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--text); }
.battle-q-item-answer { color: var(--correct); font-size: .72rem; flex-shrink: 0; }
.battle-q-item-type { font-size: .65rem; background: var(--surface2); border-radius: 4px; padding: 1px 5px; color: var(--muted); flex-shrink: 0; }
.battle-q-item-del {
  background: none; border: none; color: var(--muted);
  cursor: pointer; font-size: .9rem; flex-shrink: 0; padding: 0 .25rem;
}
.battle-q-item-del:hover { color: var(--wrong); }

/* Prévisualisation */
.battle-preview-config {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: .85rem 1rem;
  margin-bottom: 1rem;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: .5rem .75rem;
  font-size: .82rem;
}
.battle-preview-config-item { display: flex; flex-direction: column; gap: .15rem; }
.battle-preview-config-label { font-size: .65rem; text-transform: uppercase; letter-spacing: .06em; color: var(--muted); }
.battle-preview-config-val { font-weight: 700; color: var(--text); }
.battle-preview-q-header {
  display: flex; align-items: center; justify-content: space-between;
  font-size: .82rem; font-weight: 700; color: var(--text);
  margin-bottom: .5rem;
}
.btn-battle-add-more {
  font-size: .75rem; padding: .25rem .65rem;
  background: rgba(59,130,246,.1); border: 1px solid rgba(59,130,246,.25);
  border-radius: 6px; color: #3b82f6; cursor: pointer; font-weight: 600;
}
.battle-preview-list { display: flex; flex-direction: column; gap: .35rem; max-height: 300px; overflow-y: auto; }
.battle-preview-item {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: .65rem .85rem;
  font-size: .8rem;
}
.battle-preview-item-q { color: var(--text); font-weight: 600; margin-bottom: .2rem; }
.battle-preview-item-a { color: var(--correct); font-size: .75rem; }
.battle-preview-item-meta { color: var(--muted); font-size: .7rem; margin-top: .15rem; }
.battle-preview-item-actions { display: flex; gap: .4rem; margin-top: .4rem; }
.battle-preview-edit { font-size: .7rem; padding: 2px 7px; background: var(--surface2); border: 1px solid var(--border); border-radius: 4px; cursor: pointer; color: var(--muted); }
.battle-preview-del  { font-size: .7rem; padding: 2px 7px; background: rgba(239,68,68,.08); border: 1px solid rgba(239,68,68,.2); border-radius: 4px; cursor: pointer; color: var(--wrong); }


/* ══════════════════════════════════════════════════════════════
   PREMIUM HOME — Mobile UI v3
   Centrage, hiérarchie, espacement régulier, look application
   ══════════════════════════════════════════════════════════════ */

/* ── Wrapper principal ── */
.ph-wrapper {
  width: 100%;
  max-width: 480px;
  margin: 0 auto;
  padding: 0 1.1rem 5rem;
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
  align-items: stretch;
}

/* ── Espacement uniforme entre sections ── */
.ph-section {
  margin-bottom: 1.25rem;
}

/* ── Hero ── */
.ph-hero {
  text-align: center;
  padding: 1.75rem 0 0.25rem;
}
.ph-eyebrow {
  display: inline-block;
  font-size: .65rem;
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--accent);
  background: rgba(124,58,237,.08);
  border: 1px solid rgba(124,58,237,.18);
  border-radius: 50px;
  padding: 3px 12px;
  margin-bottom: 1rem;
}
.ph-title {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: .1rem;
  margin: 0 0 .85rem;
  line-height: 1.05;
  letter-spacing: -.03em;
}
.ph-title-line1 {
  font-family: 'Outfit', sans-serif;
  font-size: clamp(2.1rem, 8vw, 2.7rem);
  font-weight: 900;
  color: var(--text);
}
.ph-title-line2 {
  font-family: 'Outfit', sans-serif;
  font-size: clamp(2.1rem, 8vw, 2.7rem);
  font-weight: 900;
  background: linear-gradient(135deg, #7c3aed, #2addf3);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}
.ph-sub {
  font-size: .875rem;
  color: var(--muted);
  line-height: 1.55;
  max-width: 340px;
  margin: 0 auto;
}

/* ── Bloc Jouer ── */
.ph-play {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 16px;
  padding: 1rem 1.1rem;
}
.ph-play-row {
  display: flex;
  gap: .6rem;
  align-items: center;
  height: 48px;
}
.ph-input {
  flex: 1;
  height: 100%;
  font-size: .95rem;
  padding: 0 .9rem;
  background: var(--surface2);
  border: 1px solid var(--border);
  border-radius: 10px;
  color: var(--text);
  font-family: 'Plus Jakarta Sans', sans-serif;
  outline: none;
  min-width: 0;
  box-sizing: border-box;
}
.ph-input:focus { border-color: rgba(124,58,237,.4); }
.ph-btn-play {
  height: 100%;
  display: inline-flex;
  align-items: center;
  gap: .45rem;
  padding: 0 1.3rem;
  background: linear-gradient(135deg, #7c3aed, #2addf3);
  border: none;
  border-radius: 10px;
  color: #fff;
  font-family: 'Plus Jakarta Sans', sans-serif;
  font-size: .95rem;
  font-weight: 700;
  cursor: pointer;
  white-space: nowrap;
  flex-shrink: 0;
  box-shadow: 0 3px 14px rgba(124,58,237,.3);
  -webkit-tap-highlight-color: transparent;
}
.ph-btn-play:active { opacity: .85; transform: scale(.97); }

/* ── Stats 3 cartes ── */
.ph-stats {
  display: grid !important;
  grid-template-columns: repeat(3, 1fr);
  gap: .65rem;
}
.ph-stat-card {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 14px;
  padding: .85rem .6rem;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: .25rem;
  text-align: center;
}
.ph-stat-icon { font-size: 1.35rem; }
.ph-stat-val {
  font-family: 'Outfit', sans-serif;
  font-size: 1.15rem;
  font-weight: 800;
  color: var(--text);
  line-height: 1.1;
}
.ph-stat-label {
  font-size: .68rem;
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: .05em;
  display: flex;
  align-items: center;
  gap: .3rem;
  flex-wrap: wrap;
  justify-content: center;
}

/* ── Card bouton (éphéméride, nouveau) ── */
.ph-card-btn {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 14px;
  padding: 1rem 1.1rem;
  cursor: pointer;
  text-align: left;
  color: var(--text);
  font-family: 'Plus Jakarta Sans', sans-serif;
  box-sizing: border-box;
  -webkit-tap-highlight-color: transparent;
}
.ph-card-btn:active { opacity: .8; }
.ph-card-new { border-color: rgba(124,58,237,.22); }
.ph-card-btn-left { display: flex; flex-direction: column; gap: .2rem; }
.ph-card-label {
  font-size: .62rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .1em;
  color: var(--accent);
}
.ph-card-title { font-size: .92rem; font-weight: 600; }
.ph-card-sub { font-size: .74rem; color: var(--muted); margin-top: .1rem; }
.ph-card-arrow { font-size: 1.35rem; color: var(--muted); flex-shrink: 0; }
.ph-badge-new {
  font-size: .6rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .08em;
  color: var(--accent4);
  background: rgba(124,58,237,.12);
  border-radius: 4px;
  padding: 1px 6px;
  width: fit-content;
}

/* ── Section label ── */
.ph-section-label {
  font-size: .65rem !important;
  font-weight: 700 !important;
  text-transform: uppercase !important;
  letter-spacing: .1em !important;
  color: var(--muted) !important;
  margin: 0 0 .6rem !important;
  display: block;
}
.ph-section-label-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: .65rem;
}
.ph-badge-premium {
  font-size: .62rem;
  font-weight: 700;
  color: #fff;
  background: linear-gradient(135deg, #7c3aed, #a855f7);
  border-radius: 20px;
  padding: 2px 9px;
}

/* ── Modes populaires (liste verticale) ── */
.ph-modes {
  display: flex;
  flex-direction: column;
  gap: .5rem;
}
.ph-mode-row {
  display: flex;
  align-items: center;
  gap: .85rem;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 14px;
  padding: .85rem 1rem;
  cursor: pointer;
  text-align: left;
  color: var(--text);
  width: 100%;
  font-family: 'Plus Jakarta Sans', sans-serif;
  -webkit-tap-highlight-color: transparent;
}
.ph-mode-row:active { opacity: .8; }
.ph-mode-icon {
  width: 44px;
  height: 44px;
  border-radius: 11px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.35rem;
  flex-shrink: 0;
}
.ph-mode-info { flex: 1; min-width: 0; }
.ph-mode-name { font-size: .9rem; font-weight: 700; }
.ph-mode-sub  { font-size: .74rem; color: var(--muted); margin-top: .15rem; }
.ph-mode-arrow { font-size: 1.35rem; color: var(--muted); flex-shrink: 0; }

/* ── Premium liste ── */
.ph-premium-list {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 14px;
  overflow: hidden;
}
.ph-premium-row {
  display: flex;
  align-items: center;
  gap: .75rem;
  width: 100%;
  padding: .85rem 1rem;
  background: none;
  border: none;
  border-bottom: 1px solid var(--border);
  cursor: pointer;
  color: var(--text);
  text-align: left;
  font-family: 'Plus Jakarta Sans', sans-serif;
  -webkit-tap-highlight-color: transparent;
}
.ph-premium-row:last-child { border-bottom: none; }
.ph-premium-row:active { background: var(--surface2); }
.ph-premium-icon { font-size: 1.2rem; flex-shrink: 0; }
.ph-premium-name { font-size: .88rem; font-weight: 600; }
.ph-premium-sub  { font-size: .72rem; color: var(--muted); margin-top: .1rem; }

/* ── Voir tous les modes ── */
.ph-btn-all {
  width: 100%;
  padding: .9rem;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 12px;
  color: var(--text);
  font-family: 'Plus Jakarta Sans', sans-serif;
  font-size: .88rem;
  font-weight: 600;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}
.ph-btn-all:active { opacity: .8; }

/* ── Footer ── */
.ph-footer {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: .6rem;
  font-size: .72rem;
  color: var(--muted);
  padding-top: .5rem;
  border-top: 1px solid var(--border);
  text-align: center;
}

/* ── Android safe ── */
@media (max-width: 1023px) {
  #home.active { display: block !important; padding: 0 !important; }
  .ph-wrapper  { display: flex !important; }
}

/* ── Desktop : masquer home-mobile-only ── */
@media (min-width: 1024px) {
  .ph-hero, .ph-stats { display: none !important; } /* ph-play reste visible partout */
}


/* ── Battle Confirmation ── */
.bc-hero { text-align:center; padding:1.5rem 0 1rem; }
.bc-check { font-size:2.5rem; margin-bottom:.35rem; }
.bc-title { font-family:'Outfit',sans-serif; font-size:1.5rem; font-weight:900; color:var(--correct); }
.bc-sub { font-size:.82rem; color:var(--muted); margin-top:.25rem; }
.bc-info-card { background:var(--surface); border:1px solid var(--border); border-radius:14px; padding:1rem 1.1rem; margin:.75rem 0; }
.bc-info-row { display:flex; align-items:baseline; gap:.5rem; flex-wrap:wrap; }
.bc-info-label { font-size:.65rem; font-weight:700; text-transform:uppercase; letter-spacing:.08em; color:var(--muted); flex-shrink:0; }
.bc-code { font-family:monospace; font-size:1.8rem; font-weight:900; color:var(--accent4); letter-spacing:.1em; }
.bc-link { font-size:.72rem; color:var(--accent); word-break:break-all; }
.bc-actions { display:grid; grid-template-columns:1fr 1fr; gap:.5rem; margin:.75rem 0; }
.bc-btn { padding:.75rem .5rem; border-radius:10px; border:none; cursor:pointer; font-family:'Plus Jakarta Sans',sans-serif; font-size:.82rem; font-weight:700; }
.bc-btn-primary { background:linear-gradient(135deg,#7c3aed,#2addf3); color:#fff; }
.bc-btn-secondary { background:var(--surface); border:1px solid var(--border); color:var(--text); grid-column:1/-1; }
.bc-btn:active { opacity:.8; }
.bc-social { display:flex; flex-wrap:wrap; gap:.4rem; margin:.5rem 0; }
.bc-social-btn { padding:.4rem .85rem; border-radius:7px; font-size:.75rem; font-weight:700; text-decoration:none; background:var(--surface2); border:1px solid var(--border); color:var(--text); }
.bc-qr-wrap { text-align:center; margin:1rem 0; }
.bc-qr-label { font-size:.65rem; font-weight:700; text-transform:uppercase; letter-spacing:.08em; color:var(--muted); margin-bottom:.5rem; }

/* Récap questions résultats Battle */
.btr-recap-title { font-size:.75rem; font-weight:700; text-transform:uppercase; letter-spacing:.08em; color:var(--muted); margin-bottom:.75rem; }
.btr-q-recap { background:var(--surface); border-radius:10px; border-left:3px solid var(--border); padding:.75rem .9rem; margin-bottom:.5rem; }
.btr-q-recap-num { font-size:.65rem; font-weight:700; color:var(--muted); margin-bottom:.25rem; }
.btr-q-recap-q { font-size:.88rem; font-weight:600; color:var(--text); margin-bottom:.35rem; }
.btr-q-recap-row { display:flex; gap:.4rem; align-items:baseline; font-size:.78rem; margin-bottom:.15rem; }
.btr-q-label { font-size:.65rem; font-weight:700; text-transform:uppercase; color:var(--muted); flex-shrink:0; }
.btr-q-recap-expl { margin-top:.4rem; font-size:.75rem; color:var(--muted); background:rgba(42,221,243,.06); border-radius:6px; padding:.35rem .6rem; }


/* ══ SALON BATTLE (Battle Lobby Style) ══ */
.bls-header {
  display: flex; align-items: flex-start; justify-content: space-between;
  margin-bottom: 1rem; gap: .75rem; flex-wrap: wrap;
}
.bls-title {
  font-family: 'Outfit', sans-serif; font-size: 1.25rem; font-weight: 900;
  color: var(--text); margin-bottom: .25rem;
}
.bls-code-row {
  display: flex; align-items: center; gap: .4rem;
  font-size: .82rem; color: var(--muted);
}
.bls-code {
  font-family: monospace; font-size: 1.1rem; font-weight: 900;
  color: var(--accent4); letter-spacing: .08em;
}
.bls-copy-btn {
  background: none; border: none; cursor: pointer; font-size: .85rem;
  padding: 2px 5px; border-radius: 5px; color: var(--muted);
}
.bls-copy-btn:hover { background: var(--surface2); }
.bls-source-badge {
  font-size: .72rem; padding: .3rem .65rem;
  border-radius: 20px; white-space: nowrap;
}
.bls-org-msg {
  background: rgba(245,197,24,.08); border: 1px solid rgba(245,197,24,.25);
  border-radius: 10px; padding: .6rem .9rem; font-size: .78rem;
  color: var(--accent2); margin-bottom: .75rem;
}
.bls-info-grid {
  display: grid; grid-template-columns: repeat(2,1fr); gap: .5rem;
  margin-bottom: .85rem;
}
.bls-info-item {
  background: var(--surface); border: 1px solid var(--border);
  border-radius: 8px; padding: .5rem .75rem;
  display: flex; flex-direction: column; gap: .1rem;
}
.bls-info-label {
  font-size: .6rem; font-weight: 700; text-transform: uppercase;
  letter-spacing: .07em; color: var(--muted);
}
.bls-status-badge {
  font-size: .78rem; font-weight: 700; color: var(--accent2);
}
.bls-wait-msg {
  font-size: .8rem; color: var(--muted); text-align: center;
  margin-bottom: .85rem; min-height: 1.2rem;
}
.bls-teams-row {
  display: flex; gap: .75rem; align-items: flex-start; margin-bottom: .85rem;
}
.bls-team-col { flex: 1; min-width: 0; }
.bls-team-head {
  padding: .5rem .75rem; border-radius: 8px 8px 0 0;
  display: flex; justify-content: space-between; align-items: center;
  font-size: .82rem; font-weight: 700;
}
.team-a-head { background: rgba(59,130,246,.15); color: #3b82f6; }
.team-b-head { background: rgba(239,68,68,.12); color: #ef4444; }
.bls-team-count { font-size: .72rem; font-weight: 600; }
.bls-players-list {
  background: var(--surface); border: 1px solid var(--border);
  border-top: none; min-height: 80px;
}
.battle-player-item {
  display: flex; align-items: center; gap: .5rem;
  padding: .45rem .7rem; border-bottom: 1px solid var(--border);
  font-size: .82rem; color: var(--text);
}
.battle-player-item:last-child { border-bottom: none; }
.battle-player-avatar {
  width: 26px; height: 26px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: .75rem; font-weight: 800; color: #fff; flex-shrink: 0;
}
.team-a-avatar { background: #3b82f6; }
.team-b-avatar { background: #ef4444; }
.battle-player-status { margin-left: auto; font-size: .65rem; }
.battle-slot-empty {
  padding: .45rem .7rem; font-size: .78rem; color: var(--muted);
  border-bottom: 1px solid var(--border); font-style: italic;
}
.bls-join-zone {
  background: var(--surface); border: 1px solid var(--border);
  border-top: none; border-radius: 0 0 8px 8px; padding: .4rem;
}
.bls-join-btn {
  width: 100%; padding: .45rem; border-radius: 6px; border: none;
  font-size: .8rem; font-weight: 700; cursor: pointer;
  font-family: 'Plus Jakarta Sans', sans-serif;
}
.team-a-btn { background: rgba(59,130,246,.15); color: #3b82f6; }
.team-b-btn { background: rgba(239,68,68,.1); color: #ef4444; }
.bls-join-btn:disabled { opacity: .4; cursor: not-allowed; }
.battle-team-full .bls-join-btn { display: none; }
.bls-vs {
  font-family: 'Outfit', sans-serif; font-size: 1.1rem; font-weight: 900;
  color: var(--muted); align-self: center; flex-shrink: 0;
}
/* Prêt */
.bls-ready-row {
  display: flex; align-items: center; justify-content: space-between;
  background: var(--surface); border: 1px solid var(--border);
  border-radius: 10px; padding: .65rem .9rem; margin-bottom: .75rem;
}
.bls-ready-status { display: flex; align-items: center; gap: .4rem; font-size: .82rem; }
.bls-ready-btn {
  background: rgba(34,197,94,.15); border: 1px solid rgba(34,197,94,.35);
  border-radius: 8px; color: #22c55e; font-weight: 700; font-size: .8rem;
  padding: .4rem .85rem; cursor: pointer; font-family: 'Plus Jakarta Sans', sans-serif;
}
.bls-ready-btn.is-ready {
  background: rgba(34,197,94,.25); border-color: #22c55e;
}
/* Chat */
.bls-chat { margin-bottom: .75rem; }
.bls-chat-title {
  font-size: .72rem; font-weight: 700; color: var(--muted);
  text-transform: uppercase; letter-spacing: .06em;
  margin-bottom: .5rem; display: flex; align-items: center; gap: .35rem;
}
.bls-chat-messages {
  height: 200px; overflow-y: auto; padding: .5rem .4rem;
  background: var(--surface2); border: 1px solid var(--border);
  border-radius: 12px; margin-bottom: .5rem;
  display: flex; flex-direction: column; gap: .5rem;
  scroll-behavior: smooth;
}
.bls-chat-empty {
  color: var(--muted); font-size: .8rem; text-align: center;
  padding: 2rem 1rem; font-style: italic;
}
.bls-chat-msg.system-msg {
  font-size: .74rem; color: var(--muted); font-style: italic;
  text-align: center; padding: .15rem 0;
}
.bls-msg-bubble {
  display: flex; align-items: flex-start; gap: .45rem; max-width: 88%;
}
.bls-msg-bubble.mine { flex-direction: row-reverse; margin-left: auto; }
.bls-msg-avatar {
  width: 28px; height: 28px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: .75rem; font-weight: 800; flex-shrink: 0;
}
.bls-msg-body { min-width: 0; }
.bls-msg-meta {
  display: flex; align-items: baseline; gap: .4rem; margin-bottom: .12rem;
}
.bls-msg-bubble.mine .bls-msg-meta { flex-direction: row-reverse; }
.bls-msg-meta strong { font-size: .72rem; }
.bls-msg-time { font-size: .62rem; color: var(--muted); }
.bls-msg-text {
  font-size: .82rem; color: var(--text); line-height: 1.45;
  background: var(--surface); border: 1px solid var(--border);
  border-radius: 10px; padding: .4rem .6rem; word-break: break-word;
}
.bls-msg-bubble.mine .bls-msg-text {
  background: rgba(42,221,243,.08); border-color: rgba(42,221,243,.2);
}
.bls-chat-input-row { display: flex; gap: .4rem; }
.bls-chat-input {
  flex: 1; padding: .55rem .8rem;
  background: var(--surface2); border: 1.5px solid var(--border);
  border-radius: 10px; color: var(--text);
  font-family: inherit; font-size: .85rem; outline: none;
  transition: border-color .15s;
}
.bls-chat-input:focus { border-color: var(--accent); }
.bls-chat-send {
  padding: 0 .75rem; border-radius: 10px; border: none;
  background: var(--accent); color: #06070d;
  cursor: pointer; transition: opacity .15s;
  display: flex; align-items: center; justify-content: center;
}
.bls-chat-send:hover { opacity: .85; }
.bls-chat-send:disabled { opacity: .45; cursor: default; }
.battle-format-badge {
  display: inline-flex; align-items: center; gap: .3rem;
  font-size: .72rem; font-weight: 700; padding: .2rem .65rem;
  border-radius: 20px; background: rgba(42,221,243,.1);
  color: var(--accent); border: 1px solid rgba(42,221,243,.2);
}
/* Contrôles */
.bls-controls { margin-bottom: .75rem; }
.bls-section-label {
  font-size: .62rem; font-weight: 700; text-transform: uppercase;
  letter-spacing: .07em; color: var(--muted); margin-bottom: .4rem;
}
.bls-ctrl-grid { display: grid; grid-template-columns: 1fr 1fr; gap: .4rem; }
.bls-ctrl-btn {
  padding: .7rem .5rem; border-radius: 9px; border: 1px solid var(--border);
  background: var(--surface); color: var(--text);
  font-family: 'Plus Jakarta Sans', sans-serif; font-size: .8rem;
  font-weight: 600; cursor: pointer; text-align: center;
}
.bls-ctrl-primary {
  background: linear-gradient(135deg,#3b82f6,#ef4444);
  border-color: transparent; color: #fff; grid-column: 1/-1;
}
.bls-ctrl-danger { color: var(--wrong); border-color: rgba(239,68,68,.25); }


/* ══ Duel Asynchrone — feedback visuel & avatars ══ */

/* Animations résultat */
@keyframes adResultIn {
  from { opacity:0; transform:translateY(-6px) scale(.97); }
  to   { opacity:1; transform:translateY(0) scale(1); }
}
@keyframes adWrong {
  0%,100% { transform:translateX(0); }
  20%      { transform:translateX(-6px); }
  40%      { transform:translateX(6px); }
  60%      { transform:translateX(-4px); }
  80%      { transform:translateX(4px); }
}

/* Boutons QCM */
.ad-ans-btn {
  display: flex; align-items: center; gap: .6rem;
  width: 100%; padding: .75rem .9rem;
  background: var(--surface); border: 1px solid var(--border);
  border-radius: 10px; cursor: pointer; font-size: .9rem;
  color: var(--text); font-family: 'Plus Jakarta Sans',sans-serif;
  margin-bottom: .4rem; transition: border-color .15s, background .15s;
  text-align: left;
}
.ad-ans-btn:hover:not(:disabled) {
  border-color: var(--accent); background: rgba(124,58,237,.06);
}
.ad-ans-btn:disabled { cursor: not-allowed; }
.ad-ans-btn.ad-correct {
  background: rgba(34,197,94,.12); border-color: var(--correct);
  color: var(--correct);
}
.ad-ans-btn.ad-wrong {
  background: rgba(239,68,68,.1); border-color: var(--wrong);
  color: var(--wrong);
}
.ad-ans-letter {
  width: 24px; height: 24px; border-radius: 7px;
  background: var(--surface2); border: 1px solid var(--border);
  display: flex; align-items: center; justify-content: center;
  font-size: .72rem; font-weight: 700; flex-shrink: 0;
}

/* Pastilles progression */
.dc-dot { width:10px; height:10px; border-radius:50%; background:var(--surface2); border:1px solid var(--border); }
.dc-dot.ok  { background: var(--correct); border-color: var(--correct); }
.dc-dot.ko  { background: var(--wrong);   border-color: var(--wrong); }
.dc-dot.cur { background: var(--accent);  border-color: var(--accent); box-shadow:0 0 6px var(--accent); }
.dc-progress-dots { display:flex; gap:.4rem; justify-content:center; margin-bottom:.75rem; flex-wrap:wrap; }

/* Écran résultats */
.ad-vs-box {
  display: flex; align-items: stretch; gap: .75rem;
  background: var(--surface); border: 1px solid var(--border);
  border-radius: 14px; padding: 1rem;
}
.ad-player-side {
  flex: 1; text-align: center; display: flex; flex-direction: column; align-items: center;
}
.ad-player-name { font-size:.82rem; font-weight:700; color:var(--text); margin-bottom:.3rem; }
.ad-player-score { font-family:'Outfit',sans-serif; font-size:2rem; font-weight:900; line-height:1.1; }
.ad-vs-badge {
  font-family:'Outfit',sans-serif; font-size:.85rem; font-weight:900;
  color:var(--muted); align-self:center; flex-shrink:0;
}
.ad-result-bar { height:6px; border-radius:3px; transition: width .6s ease; }

/* Avatar générique */
.ad-avatar-fallback {
  width:64px; height:64px; border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  font-size:1.5rem; font-weight:800; color:#fff;
  background:linear-gradient(135deg,#7c3aed,#ef4444);
  margin:0 auto .4rem;
}


/* ══ Marketplace Communautaire ══ */
.cq-toolbar { margin-bottom:.85rem; }
.cq-search-row { display:flex;gap:.4rem;margin-bottom:.4rem; }
.cq-search-input {
  flex:1;padding:.55rem .8rem;background:var(--surface);border:1px solid var(--border);
  border-radius:9px;color:var(--text);font-size:.88rem;outline:none;
  font-family:'Plus Jakarta Sans',sans-serif;
}
.cq-create-btn {
  padding:.55rem .9rem;background:linear-gradient(135deg,#7c3aed,#2addf3);
  color:#fff;border:none;border-radius:9px;font-weight:700;font-size:.82rem;cursor:pointer;
  white-space:nowrap;
}
.cq-filters-row { display:flex;gap:.35rem;flex-wrap:wrap; }
.cq-filter-sel {
  padding:.4rem .6rem;background:var(--surface);border:1px solid var(--border);
  border-radius:7px;color:var(--text);font-size:.78rem;outline:none;
  font-family:'Plus Jakarta Sans',sans-serif;
}
.cq-grid {
  display:grid;grid-template-columns:repeat(2,1fr);gap:.65rem;margin-bottom:1rem;
}
@media(max-width:400px){ .cq-grid { grid-template-columns:1fr; } }
.cq-card {
  background:var(--surface);border:1px solid var(--border);border-radius:14px;
  overflow:hidden;cursor:pointer;transition:border-color .15s;
}
.cq-card:hover { border-color:var(--accent); }
.cq-card-thumb {
  height:90px;display:flex;align-items:center;justify-content:center;
  border-radius:12px 12px 0 0;
}
.cq-card-body { padding:.65rem; }
.cq-badge {
  display:inline-block;font-size:.58rem;font-weight:700;border-radius:20px;
  padding:1px 7px;margin-bottom:.3rem;
}
.cq-badge-official  { background:rgba(34,197,94,.1);color:#22c55e;border:1px solid rgba(34,197,94,.25); }
.cq-badge-community { background:rgba(124,58,237,.1);color:#a78bfa;border:1px solid rgba(124,58,237,.25); }
.cq-card-title { font-size:.82rem;font-weight:700;margin-bottom:.2rem;line-height:1.3; }
.cq-card-meta  { font-size:.7rem;color:var(--muted);margin-bottom:.3rem; }
.cq-card-stats { display:flex;gap:.5rem;font-size:.7rem;color:var(--muted);margin-bottom:.45rem; }
.cq-play-btn {
  width:100%;padding:.45rem;background:linear-gradient(135deg,#7c3aed,#2addf3);
  color:#fff;border:none;border-radius:7px;font-weight:700;font-size:.78rem;cursor:pointer;
}
.cq-play-disabled {
  background:var(--surface2);color:var(--muted);border:1px solid var(--border);cursor:not-allowed;
}
.cq-my-row {
  display:flex;align-items:center;gap:.5rem;padding:.45rem 0;
  border-bottom:1px solid var(--border);cursor:pointer;
}
.cq-my-row:last-child { border-bottom:none; }
.cq-creator { max-width:600px;width:100%; }
.cq-creator-section {
  background:var(--surface);border:1px solid var(--border);border-radius:14px;
  padding:1rem;margin-bottom:.75rem;
}
.cq-section-title {
  font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;
  color:var(--muted);margin-bottom:.65rem;
}
.cq-add-q-form {
  border-top:1px solid var(--border);padding-top:.75rem;margin-top:.65rem;
}


  /* ── Partenaire ── */
  .ph-partner-block {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: .5rem;
    padding: .75rem 0 .25rem;
    border-top: 1px solid var(--border);
  }
  .ph-partner-label {
    font-size: .6rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .12em;
    color: var(--muted);
  }
  .ph-partner-logo {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: .6rem 1.1rem;
    background: #fff;
    border-radius: 12px;
    border: 1px solid rgba(255,255,255,.08);
    transition: transform .15s, box-shadow .15s;
    text-decoration: none;
  }
  .ph-partner-logo:hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 16px rgba(30,85,145,.25);
  }

