@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@300;400;500&family=DM+Mono:wght@400;500&display=swap');
:root{--bg:#f5f4f0;--bg-card:#ffffff;--bg-input:#eeede9;--border:#e0deda;--text:#1a1918;--text-muted:#8a8880;--accent:#1a1918;--accent-inv:#f5f4f0;--danger:#c0392b;--success:#27ae60;--warning:#e67e22;--radius:12px;--radius-sm:8px;--shadow:0 1px 3px rgba(0,0,0,.07),0 4px 16px rgba(0,0,0,.04);--shadow-md:0 2px 8px rgba(0,0,0,.10),0 8px 32px rgba(0,0,0,.06);--transition:.2s ease;--font:'DM Sans',sans-serif;--font-mono:'DM Mono',monospace;color-scheme:light}
[data-theme="dark"]{--bg:#131211;--bg-card:#1e1d1b;--bg-input:#2a2927;--border:#2e2d2b;--text:#f0efe9;--text-muted:#6e6d69;--accent:#f0efe9;--accent-inv:#131211;--shadow:0 1px 3px rgba(0,0,0,.3),0 4px 16px rgba(0,0,0,.2);--shadow-md:0 2px 8px rgba(0,0,0,.4),0 8px 32px rgba(0,0,0,.3);color-scheme:dark}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{font-size:16px;-webkit-font-smoothing:antialiased}
body{font-family:var(--font);background:var(--bg);color:var(--text);min-height:100vh;transition:background var(--transition),color var(--transition);line-height:1.6}
h1,h2,h3,h4{font-weight:500;letter-spacing:-.02em;line-height:1.2}
h1{font-size:2rem}h2{font-size:1.4rem}h3{font-size:1.1rem}
p{color:var(--text-muted);font-size:.95rem}
a{color:var(--text);text-decoration:none;border-bottom:1px solid var(--border);transition:border-color var(--transition)}
a:hover{border-color:var(--text)}
small{font-size:.8rem;color:var(--text-muted);font-family:var(--font-mono)}
.container{max-width:900px;margin:0 auto;padding:0 24px}
.container--sm{max-width:480px;margin:0 auto;padding:0 24px}
.page{min-height:100vh;padding:40px 0 80px}
.navbar{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;border-bottom:1px solid var(--border);background:var(--bg);position:sticky;top:0;z-index:100;transition:background var(--transition)}
.navbar__logo{font-family:var(--font-mono);font-size:.9rem;font-weight:500;letter-spacing:.04em;color:var(--text);border:none}
.navbar__logo span{color:var(--text-muted);font-size:.75rem;margin-left:4px}
.navbar__actions{display:flex;align-items:center;gap:12px}
.navbar__user{font-size:.85rem;color:var(--text-muted);font-family:var(--font-mono);cursor:pointer;transition:color var(--transition)}
.navbar__user:hover{color:var(--text)}
.navbar__user--guest{cursor:default;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:2px 10px;font-size:.72rem;letter-spacing:.04em}
.navbar__user--guest:hover{color:var(--text)}
.theme-toggle{background:var(--bg-input);border:1px solid var(--border);border-radius:20px;width:48px;height:26px;cursor:pointer;position:relative;transition:background var(--transition);flex-shrink:0}
.theme-toggle::after{content:'';position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:var(--text);transition:transform var(--transition)}
[data-theme="dark"] .theme-toggle::after{transform:translateX(22px)}
.card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:28px;box-shadow:var(--shadow);transition:background var(--transition),border-color var(--transition)}
.card--hover{cursor:pointer}
.card--hover:hover{box-shadow:var(--shadow-md);border-color:var(--text-muted);transform:translateY(-2px);transition:transform var(--transition),box-shadow var(--transition),border-color var(--transition)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font-family:var(--font);font-size:.9rem;font-weight:500;padding:10px 20px;border-radius:var(--radius-sm);border:1px solid transparent;cursor:pointer;transition:all var(--transition);white-space:nowrap;text-decoration:none;border-bottom:none}
.btn--primary{background:var(--accent);color:var(--accent-inv);border-color:var(--accent)}
.btn--primary:hover{opacity:.85}
.btn--outline{background:transparent;color:var(--text);border-color:var(--border)}
.btn--outline:hover{border-color:var(--text-muted);background:var(--bg-input)}
.btn--ghost{background:transparent;color:var(--text-muted);border-color:transparent}
.btn--ghost:hover{color:var(--text);background:var(--bg-input)}
.btn--danger{background:transparent;color:var(--danger);border-color:var(--danger)}
.btn--danger:hover{background:var(--danger);color:#fff}
.btn--sm{font-size:.8rem;padding:6px 14px}
.btn--full{width:100%}
.btn:disabled{opacity:.4;cursor:not-allowed}
.form-group{display:flex;flex-direction:column;gap:6px;margin-bottom:16px}
.form-label{font-size:.82rem;font-weight:500;color:var(--text-muted);font-family:var(--font-mono);letter-spacing:.03em;text-transform:uppercase}
.form-input{font-family:var(--font);font-size:.95rem;color:var(--text);background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 14px;width:100%;outline:none;transition:border-color var(--transition),background var(--transition)}
.form-input:focus{border-color:var(--text-muted);background:var(--bg-card)}
.form-input[type="number"]{font-family:var(--font-mono);font-size:1rem}
.form-hint{font-size:.78rem;color:var(--text-muted)}
.form-error{font-size:.78rem;color:var(--danger);font-family:var(--font-mono)}
.games-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px;margin-top:24px}
.game-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:28px 20px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:12px;transition:all var(--transition);text-align:center}
.game-card:hover{border-color:var(--text-muted);transform:translateY(-2px);box-shadow:var(--shadow-md)}
.game-card__icon{font-size:2rem;line-height:1}
.game-card__name{font-size:.95rem;font-weight:500}
.game-card__stats{font-size:.78rem;color:var(--text-muted);font-family:var(--font-mono)}
.score-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:20px 0}
.score-input-block{background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius-sm);padding:20px;display:flex;flex-direction:column;gap:10px}
.score-input-block__player{font-size:.82rem;font-family:var(--font-mono);color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}
.score-winner{border-color:var(--text)}
.timer-bar{height:3px;background:var(--border);border-radius:2px;overflow:hidden;margin:16px 0}
.timer-bar__fill{height:100%;background:var(--warning);border-radius:2px;transition:width 1s linear,background 1s}
.timer-bar__fill--low{background:var(--danger)}
.history-list{display:flex;flex-direction:column;gap:8px;margin-top:16px}
.history-item{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm);padding:14px 18px;display:flex;align-items:center;justify-content:space-between;gap:16px;transition:background var(--transition)}
.history-item:hover{background:var(--bg-input)}
.history-item__date{font-size:.75rem;color:var(--text-muted);font-family:var(--font-mono);white-space:nowrap}
.history-item--editable{border-color:var(--warning)}
.badge{display:inline-flex;align-items:center;font-size:.72rem;font-family:var(--font-mono);font-weight:500;padding:3px 8px;border-radius:4px;letter-spacing:.03em;text-transform:uppercase}
.badge--win{background:color-mix(in srgb,var(--success) 12%,transparent);color:var(--success)}
.badge--loss{background:color-mix(in srgb,var(--danger) 10%,transparent);color:var(--danger)}
.friends-list{display:flex;flex-direction:column;gap:8px;margin-top:12px}
.friend-item{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm);transition:background var(--transition)}
.friend-item:hover{background:var(--bg-input)}
.friend-item__name{font-size:.9rem;font-weight:500}
.friend-item__record{font-size:.78rem;font-family:var(--font-mono);color:var(--text-muted)}
.avatar{width:32px;height:32px;border-radius:50%;background:var(--bg-input);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;font-size:.78rem;font-family:var(--font-mono);font-weight:500;color:var(--text-muted);flex-shrink:0;text-transform:uppercase}
.divider{height:1px;background:var(--border);margin:24px 0}
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--border);margin-bottom:24px}
.tab{font-family:var(--font);font-size:.88rem;font-weight:500;padding:10px 16px;background:transparent;border:none;border-bottom:2px solid transparent;color:var(--text-muted);cursor:pointer;transition:all var(--transition);margin-bottom:-1px}
.tab:hover{color:var(--text)}
.tab--active{color:var(--text);border-bottom-color:var(--text)}
/* toasts façon bannières iOS : spawn du HAUT, centrées, verre dépoli */
.toast-container{position:fixed;top:calc(12px + env(safe-area-inset-top));left:50%;transform:translateX(-50%);display:flex;flex-direction:column;gap:8px;z-index:9999;width:min(94vw,440px);align-items:center;pointer-events:none}
.toast{pointer-events:auto;width:100%;text-align:center;background:var(--bg-card);border:1px solid var(--border);border-radius:16px;padding:13px 20px;font-size:.88rem;font-weight:500;box-shadow:0 14px 44px rgba(0,0,0,.45);animation:toastDown .45s cubic-bezier(.2,1.1,.3,1)}
@keyframes toastDown{from{opacity:0;transform:translateY(-26px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}
.toast--success{border-color:color-mix(in srgb,var(--success) 45%,transparent);box-shadow:0 14px 44px rgba(0,0,0,.45),0 0 0 1px color-mix(in srgb,var(--success) 25%,transparent) inset}
.toast--error{border-color:color-mix(in srgb,var(--danger) 45%,transparent);box-shadow:0 14px 44px rgba(0,0,0,.45),0 0 0 1px color-mix(in srgb,var(--danger) 25%,transparent) inset}
.toast--info{border-color:var(--border)}
@keyframes slideIn{from{transform:translateX(20px);opacity:0}to{transform:translateX(0);opacity:1}}
.empty-state{text-align:center;padding:48px 24px;color:var(--text-muted)}
.empty-state__icon{font-size:2rem;margin-bottom:12px;opacity:.5}
.empty-state__text{font-size:.9rem;color:var(--text-muted)}
.section-title{font-size:.78rem;font-family:var(--font-mono);color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:12px}
.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}
.gap-8{gap:8px}.gap-12{gap:12px}.gap-16{gap:16px}.gap-24{gap:24px}
.mt-8{margin-top:8px}.mt-16{margin-top:16px}.mt-24{margin-top:24px}.mt-32{margin-top:32px}
.mb-8{margin-bottom:8px}.mb-16{margin-bottom:16px}.mb-24{margin-bottom:24px}
.text-muted{color:var(--text-muted)}.text-mono{font-family:var(--font-mono)}.text-sm{font-size:.85rem}.text-right{text-align:right}.text-center{text-align:center}.w-full{width:100%}
.logout-btn{display:inline-flex;align-items:center;gap:6px}
.logout-btn .logout-text{display:none}
.logout-btn .logout-icon{display:inline;line-height:1}
/* ─── Back Link ── */
.back-link{display:inline-flex;align-items:center;gap:6px;font-size:.85rem;color:var(--text-muted);border:none;cursor:pointer;background:none;font-family:var(--font);padding:0;margin-bottom:28px;transition:color var(--transition)}
.back-link:hover{color:var(--text)}
/* ─── Stats Row / Stat Box ── */
.stats-row{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:16px 0}
.stat-box{background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px 8px;text-align:center}
.stat-box__value{font-size:1.4rem;font-family:var(--font-mono);font-weight:500;line-height:1}
.stat-box__label{font-size:.68rem;color:var(--text-muted);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.04em;margin-top:4px}
/* ─── Score Bar (vs games) ── */
.score-bar{display:grid;grid-template-columns:1fr auto 1fr;gap:8px;align-items:center;margin-bottom:16px}
.score-player{background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px 16px;text-align:center;transition:all var(--transition)}
.score-player.active{border-color:var(--text)}
.score-player__name{font-size:.78rem;font-family:var(--font-mono);color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:4px}
.score-player__symbol{line-height:1;margin-bottom:4px}
.score-player__symbol svg{width:28px;height:28px}
.score-player__score{font-size:1.6rem;font-family:var(--font-mono);font-weight:500;line-height:1}
.score-player__sub{font-size:.72rem;color:var(--text-muted);font-family:var(--font-mono);margin-top:4px}
.score-sep{font-size:.75rem;font-family:var(--font-mono);color:var(--text-muted);text-align:center}
/* ─── Game Status ── */
.game-status{text-align:center;margin-bottom:16px}
.game-status__turn{font-size:1rem;font-weight:500;margin-bottom:4px}
.game-status__sub{font-size:.82rem;color:var(--text-muted);font-family:var(--font-mono)}
/* ─── Result Banner ── */
.result-banner{display:none;text-align:center;padding:20px;background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius-sm);margin-bottom:16px}
.result-banner.visible{display:block}
.result-banner__emoji{font-size:2rem;margin-bottom:8px}
.result-banner__text{font-size:1.1rem;font-weight:500;margin-bottom:4px}
.result-banner__sub{font-size:.82rem;color:var(--text-muted)}
/* ─── Difficulty / Speed Row ── */
.difficulty-row,.speed-row{display:flex;gap:6px;margin-bottom:16px;justify-content:center}
.diff-btn,.speed-btn{font-size:.78rem;font-family:var(--font-mono);padding:5px 14px;border-radius:4px;border:1px solid var(--border);background:var(--bg-input);color:var(--text-muted);cursor:pointer;transition:all var(--transition)}
.diff-btn.active,.speed-btn.active{background:var(--text);color:var(--accent-inv);border-color:var(--text)}
/* ─── Board / Cell ── */
.board-wrap{display:flex;justify-content:center;margin:0 0 20px}
/* ─── Modal Overlay ── */
.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.45);display:flex;align-items:center;justify-content:center;z-index:200;padding:24px;opacity:0;pointer-events:none;transition:opacity var(--transition)}
.modal-overlay.open{opacity:1;pointer-events:all}
.modal{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:28px;width:100%;max-width:420px;box-shadow:var(--shadow-md);transform:translateY(8px);transition:transform var(--transition);max-height:90vh;overflow-y:auto}
.modal-overlay.open .modal{transform:translateY(0)}
.modal__title{font-size:1.1rem;font-weight:500;margin-bottom:4px}
.modal__subtitle{font-size:.85rem;color:var(--text-muted);margin-bottom:20px}
/* ─── Thinking animation ── */
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.4}}
.thinking{animation:pulse .8s ease-in-out infinite;color:var(--text-muted)}
/* ─── Responsive ── */
/* Laptop / petit écran */
@media(max-width:1024px){
  .container{max-width:100%;padding:0 20px}
  .games-grid{grid-template-columns:repeat(3,1fr)}
}
/* Tablette */
@media(max-width:768px){
  .navbar{padding:14px 20px}
  .container,.container--sm{padding:0 18px}
  .games-grid{grid-template-columns:repeat(2,1fr);gap:10px}
  .score-grid{grid-template-columns:repeat(2,1fr)}
  .card{padding:22px}
  h1{font-size:1.6rem}
}
/* Mobile */
@media(max-width:600px){
h1{font-size:1.5rem}.navbar{padding:16px}.container,.container--sm{padding:0 16px}.page{padding:24px 0 60px}.score-grid{grid-template-columns:1fr}.games-grid{grid-template-columns:repeat(2,1fr)}.card{padding:20px}.history-item{flex-wrap:wrap}.toast-container{width:calc(100vw - 24px)}.toast{max-width:100%}}

/* ─────────────────────────────────────────────────────────────────
   COSY PASS — micro-interactions + shadows adoucies + easings fluides
   Appliqué globalement sur toute l'app pour un feeling satisfying.
   ───────────────────────────────────────────────────────────────── */
:root{
  --ease-cosy:cubic-bezier(.34,1.56,.64,1);
  --ease-soft:cubic-bezier(.22,1,.36,1);
  --shadow-cosy:0 4px 24px rgba(0,0,0,.06),0 1px 3px rgba(0,0,0,.04);
  --shadow-cosy-md:0 10px 40px rgba(0,0,0,.08),0 2px 8px rgba(0,0,0,.05);
}
[data-theme="dark"]{
  --shadow-cosy:0 4px 24px rgba(0,0,0,.3),0 1px 3px rgba(0,0,0,.2);
  --shadow-cosy-md:0 10px 40px rgba(0,0,0,.4),0 2px 8px rgba(0,0,0,.3);
}
/* Cards & surfaces → shadows douces */
.card,.minigame-card,.resume-card,.history-item,.friend-item,.portal-card,.fav-chip,.changelog-card{
  box-shadow:var(--shadow-cosy);
  transition:transform .22s var(--ease-soft),box-shadow .22s var(--ease-soft),border-color .2s var(--ease-soft),background .2s var(--ease-soft)
}
.card--hover:hover,.minigame-card:hover,.portal-card:hover,.fav-chip:hover,.resume-card:hover{
  box-shadow:var(--shadow-cosy-md);
  transform:translateY(-3px)
}
/* Boutons : bounce au clic + hover plus vivant */
.btn{transition:transform .15s var(--ease-cosy),opacity .18s var(--ease-soft),background .18s var(--ease-soft),border-color .18s var(--ease-soft),box-shadow .22s var(--ease-soft)}
.btn:hover:not(:disabled){transform:translateY(-1px)}
.btn:active:not(:disabled){transform:translateY(0) scale(.96);transition-duration:.08s}
.btn--primary{box-shadow:0 2px 8px rgba(0,0,0,.08),inset 0 1px 0 rgba(255,255,255,.1)}
.btn--primary:hover{box-shadow:0 4px 14px rgba(0,0,0,.12),inset 0 1px 0 rgba(255,255,255,.1);opacity:1}
[data-theme="dark"] .btn--primary:hover{box-shadow:0 4px 18px rgba(240,239,233,.15),inset 0 1px 0 rgba(255,255,255,.08)}

/* Filter pills, speed buttons, mode buttons : bounce cosy */
.filter-pill,.speed-btn,.mode-btn,.diff-btn,.tab{transition:all .18s var(--ease-soft)}
.filter-pill:active,.speed-btn:active,.mode-btn:active,.diff-btn:active{transform:scale(.94);transition-duration:.08s}

/* Inputs : léger glow au focus */
.form-input:focus,input:focus-visible,textarea:focus-visible{border-color:var(--text);box-shadow:0 0 0 3px color-mix(in srgb,var(--text) 10%,transparent);outline:none}

/* Theme toggle : transition du cercle avec bounce */
.theme-toggle::after{transition:transform .35s var(--ease-cosy)}

/* Nav links & back-link : slight translation on hover */
.back-link,.navbar__user{transition:color .15s var(--ease-soft),transform .2s var(--ease-soft)}
.back-link:hover{transform:translateX(-2px)}

/* Friends, lobby players : hover reveal */
.friend-item-sel,.lobby-player{transition:all .2s var(--ease-soft)}
.friend-item-sel:hover{transform:translateX(2px)}

/* Avatars : soft shadow */
.avatar,.friend-row__avatar{box-shadow:0 1px 4px rgba(0,0,0,.08);transition:transform .2s var(--ease-cosy)}
[data-theme="dark"] .avatar{box-shadow:0 1px 4px rgba(0,0,0,.3)}

/* Modal-overlay → fade-in plus doux */
.modal-overlay{transition:opacity .25s var(--ease-soft)}
.modal{animation:modalPopIn .35s var(--ease-cosy)}
@keyframes modalPopIn{0%{opacity:0;transform:translateY(12px) scale(.96)}100%{opacity:1;transform:translateY(0) scale(1)}}

/* Toasts : slide doux + léger bounce */
@keyframes slideIn{0%{opacity:0;transform:translateY(12px) scale(.92)}60%{opacity:1;transform:translateY(-2px) scale(1.02)}100%{transform:translateY(0) scale(1)}}

/* Selection text color harmonisée */
::selection{background:color-mix(in srgb,var(--text) 18%,transparent);color:var(--text)}

/* ═══════════════════════════════════════════════════════════
   LIQUID GLASS — design "dark only" iOS 26 (partagé, toutes pages)
   Le mode clair est retiré (les pages forcent data-theme=dark).
   ═══════════════════════════════════════════════════════════ */
.theme-toggle{display:none!important}                 /* plus de mode clair */
[data-theme="dark"] body{background:#0a0a0f}
/* fond DarkVeil (injecté par assets/glass-bg.js) + voile de lisibilité */
.veil-bg{position:fixed;inset:0;width:100%;height:100%;z-index:-2;display:none}
.veil-overlay{position:fixed;inset:0;z-index:-1;display:none;pointer-events:none;
  background:radial-gradient(120% 80% at 50% -5%, transparent 35%, rgba(6,6,11,.6) 100%), rgba(6,6,11,.3)}
[data-theme="dark"] .veil-bg,[data-theme="dark"] .veil-overlay{display:block}

/* barres de nav en verre */
[data-theme="dark"] .navbar,
[data-theme="dark"] .top-nav{
  background:rgba(14,14,20,.5);
  -webkit-backdrop-filter:blur(20px) saturate(1.5);backdrop-filter:blur(20px) saturate(1.5);
  border-bottom:1px solid rgba(255,255,255,.10);
}
/* panneaux / cartes en verre dépoli */
[data-theme="dark"] .card,
[data-theme="dark"] .feature,
[data-theme="dark"] .catalog-card,
[data-theme="dark"] .minigame-card,
[data-theme="dark"] .resume-card,
[data-theme="dark"] .game-card,
[data-theme="dark"] .history-item,
[data-theme="dark"] .friend-item,
[data-theme="dark"] .section-card,
[data-theme="dark"] .stat-box,
[data-theme="dark"] .stat-card,
[data-theme="dark"] .score-player,
[data-theme="dark"] .score-input-block,
[data-theme="dark"] .toast{
  background:rgba(255,255,255,.055);
  -webkit-backdrop-filter:blur(20px) saturate(1.6);backdrop-filter:blur(20px) saturate(1.6);
  border:1px solid rgba(255,255,255,.12);
  box-shadow:0 8px 28px rgba(0,0,0,.4), inset 0 1px 0 rgba(255,255,255,.14);
}
[data-theme="dark"] .card,[data-theme="dark"] .feature,
[data-theme="dark"] .minigame-card,[data-theme="dark"] .section-card{border-radius:18px}
/* champs / pilules / boutons secondaires : verre léger */
[data-theme="dark"] .form-input,
[data-theme="dark"] .filter-pill,
[data-theme="dark"] .mode-btn{
  background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.14);
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
}
[data-theme="dark"] .btn--outline,[data-theme="dark"] .btn--ghost{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}
[data-theme="dark"] .form-input:focus{border-color:rgba(255,255,255,.3);background:rgba(255,255,255,.09)}
/* ── « TOUT en glass » (10 juin) : les fonds de TOUS les composants passent
   en translucide via les variables — chaque pilule/bouton/carte qui utilise
   var(--bg-card)/var(--bg-input) laisse voir le veil. Le backdrop-filter
   (flou) reste réservé aux grandes surfaces (cartes, modales, navbar) pour
   épargner le GPU mobile. ── */
[data-theme="dark"]{
  --bg-card: rgba(255,255,255,.055);
  --bg-input: rgba(255,255,255,.085);
  --border: rgba(255,255,255,.13);
}

/* ── pop-up / modales en verre dépoli (juin 2026) ── */
[data-theme="dark"] .modal-overlay{background:rgba(5,5,10,.45);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
/* boîtes de dialogue : verre OPAQUE (~82%) pour rester lisibles par-dessus tout
   (retour Boumi 10 juin : « pour les pop-up mets-les à 80% pour bien voir »).
   !important car certaines sont stylées en inline (guestWarnModal, popups injectés). */
[data-theme="dark"] :is(.modal, .modal-box, .quit-modal, .resume-modal, .rules-modal, .admin-modal, #guestWarnModal > div){
  background:rgba(16,16,24,.84) !important;
  -webkit-backdrop-filter:blur(24px) saturate(1.5);backdrop-filter:blur(24px) saturate(1.5);
  border:1px solid rgba(255,255,255,.16) !important;
  box-shadow:0 24px 70px rgba(0,0,0,.65), inset 0 1px 0 rgba(255,255,255,.12) !important;
}
/* popups injectés en styles inline par supabase.js → !important nécessaire */
[data-theme="dark"] #sidePanel{background:rgba(16,16,24,.86)!important;-webkit-backdrop-filter:blur(26px) saturate(1.6)!important;backdrop-filter:blur(26px) saturate(1.6)!important;border-right:1px solid rgba(255,255,255,.12)!important}
[data-theme="dark"] #sidePanelOverlay{background:rgba(5,5,10,.45)!important;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}
[data-theme="dark"] #invitePopup,
[data-theme="dark"] #resumeGameModal>div{background:rgba(16,16,24,.84)!important;-webkit-backdrop-filter:blur(24px) saturate(1.6);backdrop-filter:blur(24px) saturate(1.6);border:1px solid rgba(255,255,255,.14)!important;box-shadow:0 24px 70px rgba(0,0,0,.6)!important}
[data-theme="dark"] #resumeGameModal{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}

/* ── badges niveau (navbar + listes Social) ── */
.nav-lvl{display:inline-block;margin-left:8px;font-size:.62rem;font-family:var(--font-mono);font-weight:600;letter-spacing:.04em;padding:2px 8px;border-radius:999px;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.16);color:var(--text);vertical-align:middle;white-space:nowrap}
.lvl-chip{display:inline-block;margin-left:7px;font-size:.6rem;font-family:var(--font-mono);font-weight:600;padding:1px 7px;border-radius:999px;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.14);color:var(--text-muted);vertical-align:middle;white-space:nowrap}

/* ── pastille Bêta (features en test) ── */
.beta-pill{display:inline-block;margin-left:8px;font-size:.6rem;font-family:var(--font-mono);font-weight:600;letter-spacing:.05em;padding:2px 8px;border-radius:999px;background:rgba(245,177,76,.13);border:1px solid rgba(245,177,76,.35);color:#f5b14c;vertical-align:middle;text-transform:uppercase}
