*{box-sizing:border-box;margin:0;padding:0}

:root{
  --bg:#0a0a12;--surface:#13131f;--card:#1c1c2e;
  --border:rgba(255,255,255,0.08);--text:#f0f0ff;--muted:rgba(240,240,255,0.45);
}

body{background:var(--bg);color:var(--text);font-family:'Montserrat',sans-serif;min-height:100vh;overflow-x:hidden;}

body::before{
  content:'';position:fixed;inset:0;
  background:radial-gradient(ellipse at 20% 20%,rgba(59,157,221,0.06) 0%,transparent 50%),
             radial-gradient(ellipse at 80% 80%,rgba(232,64,64,0.06) 0%,transparent 50%);
  pointer-events:none;z-index:0;
}

.app{position:relative;z-index:1;max-width:1400px;margin:0 auto;padding:24px 20px;}

/* HEADER */
.header{display:flex;align-items:center;justify-content:space-between;padding:0 0 24px;border-bottom:1px solid var(--border);margin-bottom:28px;flex-wrap:wrap;gap:12px;}
.logo{font-family:'Bebas Neue',sans-serif;font-size:2.4rem;letter-spacing:0.06em;background:linear-gradient(90deg,#f5e642,#e84b8a,#3b9ddd);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;}
.header-controls{display:flex;gap:8px;flex-wrap:wrap;align-items:center;}

/* MODE TABS */
.mode-tabs{display:flex;background:var(--card);border:1px solid var(--border);border-radius:10px;overflow:hidden;}
.mode-tab{padding:10px 18px;font-family:'Montserrat',sans-serif;font-weight:700;font-size:0.85rem;letter-spacing:0.04em;cursor:pointer;border:none;background:transparent;color:var(--muted);transition:all 0.2s;}
.mode-tab.active{background:linear-gradient(135deg,#3b9ddd,#7ed957);color:#0a0a12;}
.mode-tab:disabled{opacity:0.4;cursor:not-allowed;}

/* BOUTONS */
.btn{padding:10px 18px;border-radius:10px;font-family:'Montserrat',sans-serif;font-weight:700;font-size:0.85rem;letter-spacing:0.04em;cursor:pointer;border:none;transition:all 0.2s ease;}
.btn-start{background:linear-gradient(135deg,#3b9ddd,#7ed957);color:#0a0a12;}
.btn-start:hover{transform:translateY(-2px);box-shadow:0 8px 24px rgba(59,157,221,0.4);}
.btn-pause{background:linear-gradient(135deg,#e88c3b,#e84040);color:white;}
.btn-pause:hover{transform:translateY(-2px);}
.btn-reset{background:var(--card);border:1px solid var(--border);color:var(--muted);}
.btn-reset:hover{border-color:rgba(255,255,255,0.2);color:var(--text);}
.btn-icon{background:var(--card);border:1px solid var(--border);color:var(--muted);padding:10px 14px;font-size:1rem;}
.btn-icon:hover{border-color:rgba(255,255,255,0.3);color:var(--text);}
.btn-repeat{background:var(--card);border:1px solid rgba(59,157,221,0.4);color:#3b9ddd;padding:10px 16px;}
.btn-repeat:hover{background:rgba(59,157,221,0.1);}
.btn-repeat:disabled{opacity:0.3;cursor:not-allowed;}
.btn:disabled{opacity:0.4;cursor:not-allowed;transform:none !important;}

/* VOIX + SON */
.toggle-group{display:flex;background:var(--card);border:1px solid var(--border);border-radius:10px;overflow:hidden;}
.toggle-item{display:flex;align-items:center;gap:6px;padding:10px 14px;font-weight:600;font-size:0.82rem;cursor:pointer;user-select:none;color:var(--muted);border:none;background:transparent;transition:all 0.2s;}
.toggle-item:not(:last-child){border-right:1px solid var(--border);}
.toggle-item.on{color:var(--text);}
.toggle-item input{width:14px;height:14px;cursor:pointer;accent-color:#3b9ddd;}

/* DÉLAI */
.delay-wrap{display:flex;align-items:center;gap:6px;}
.delay-select{padding:10px 12px;background:var(--card);border:1px solid var(--border);color:var(--text);border-radius:10px;font-family:'Montserrat',sans-serif;font-weight:600;font-size:0.85rem;cursor:pointer;outline:none;}
.delay-select:focus{border-color:rgba(59,157,221,0.5);}

/* MAIN GRID */
.main-grid{display:grid;grid-template-columns:1fr 340px;gap:24px;align-items:start;}

/* BOULE */
.current-section{display:flex;flex-direction:column;align-items:center;gap:16px;}
.ball-stage{display:flex;align-items:center;justify-content:center;position:relative;padding:16px 0;}
.ball-main{width:220px;height:220px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-direction:column;position:relative;transition:background 0.3s ease;background:#444;
  box-shadow:0 0 60px rgba(0,0,0,0.5),inset 0 -12px 30px rgba(0,0,0,0.3),inset 0 8px 20px rgba(255,255,255,0.15);}
.ball-main::before{content:'';position:absolute;top:18px;left:40px;width:60px;height:30px;border-radius:50%;background:rgba(255,255,255,0.2);filter:blur(6px);}
.ball-number{font-family:'Bebas Neue',sans-serif;font-size:7rem;line-height:1;color:rgba(0,0,0,0.85);text-shadow:0 2px 8px rgba(0,0,0,0.3);position:relative;z-index:1;}
.ball-letter{font-family:'Bebas Neue',sans-serif;font-size:2rem;line-height:1;color:rgba(0,0,0,0.7);position:relative;z-index:1;margin-top:-4px;letter-spacing:0.15em;}
.ball-label{font-size:0.7rem;font-weight:700;letter-spacing:0.15em;text-transform:uppercase;color:rgba(0,0,0,0.6);position:relative;z-index:1;margin-top:-6px;}
.ball-placeholder{width:220px;height:220px;border-radius:50%;border:3px dashed rgba(255,255,255,0.1);display:flex;align-items:center;justify-content:center;color:var(--muted);font-family:'Bebas Neue',sans-serif;font-size:1.2rem;letter-spacing:0.1em;}

@keyframes ballIn{0%{transform:scale(0.3) rotate(-20deg);opacity:0;}60%{transform:scale(1.15) rotate(5deg);}80%{transform:scale(0.95);}100%{transform:scale(1) rotate(0deg);opacity:1;}}
.ball-animate{animation:ballIn 0.5s cubic-bezier(0.34,1.56,0.64,1) forwards;}

.ball-actions{display:flex;gap:10px;align-items:center;}

/* TIMER */
.timer-bar-wrap{width:100%;max-width:280px;background:rgba(255,255,255,0.06);border-radius:100px;height:6px;overflow:hidden;}
.timer-bar{height:100%;border-radius:100px;background:linear-gradient(90deg,#3b9ddd,#7ed957);transition:width linear;width:100%;}
.timer-text{font-size:0.8rem;color:var(--muted);letter-spacing:0.08em;font-weight:600;text-align:center;}

/* BOULES RÉCENTES */
.recent-balls{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;max-width:480px;}
.ball-mini{width:50px;height:50px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-family:'Bebas Neue',sans-serif;color:rgba(0,0,0,0.8);box-shadow:0 4px 12px rgba(0,0,0,0.4),inset 0 -4px 8px rgba(0,0,0,0.2),inset 0 3px 6px rgba(255,255,255,0.15);opacity:0.85;transition:transform 0.2s;flex-direction:column;}
.ball-mini:hover{transform:scale(1.12);}
.ball-mini:first-child{opacity:1;transform:scale(1.08);}
.mini-letter{font-size:0.5rem;line-height:1;color:rgba(0,0,0,0.6);}
.mini-num{font-size:1.2rem;line-height:1;}
.recent-label{font-size:0.75rem;font-weight:700;letter-spacing:0.1em;text-transform:uppercase;color:var(--muted);text-align:center;}

/* PANNEAU LATÉRAL */
.side-panel{display:flex;flex-direction:column;gap:16px;}
.stats-card{background:var(--card);border:1px solid var(--border);border-radius:16px;padding:18px;}
.stats-title{font-size:0.72rem;font-weight:700;letter-spacing:0.12em;text-transform:uppercase;color:var(--muted);margin-bottom:12px;}
.stats-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.stat{background:var(--surface);border-radius:10px;padding:12px;text-align:center;}
.stat-val{font-family:'Bebas Neue',sans-serif;font-size:2rem;color:var(--text);}
.stat-lbl{font-size:0.68rem;font-weight:600;letter-spacing:0.08em;text-transform:uppercase;color:var(--muted);}

/* GRILLE LOTO */
.grid-card{background:var(--card);border:1px solid var(--border);border-radius:16px;padding:18px;}
.grid-title{font-size:0.72rem;font-weight:700;letter-spacing:0.12em;text-transform:uppercase;color:var(--muted);margin-bottom:12px;}
.numbers-grid-loto{display:grid;grid-template-columns:repeat(9,1fr);gap:3px;}

/* GRILLE BINGO - compacte pour tenir sur un écran */
.numbers-grid-bingo{display:grid;grid-template-columns:repeat(5,1fr);gap:2px;}
.numbers-grid-bingo .num-cell{font-size:0.55rem;aspect-ratio:auto;height:22px;}
.numbers-grid-bingo .bingo-header{font-size:0.9rem;padding:3px 0;margin-bottom:2px;}

.bingo-header{display:flex;align-items:center;justify-content:center;font-family:'Bebas Neue',sans-serif;font-size:1.1rem;border-radius:6px;padding:5px 0;margin-bottom:3px;color:rgba(0,0,0,0.8);}
.num-cell{aspect-ratio:1;border-radius:5px;display:flex;align-items:center;justify-content:center;font-size:0.68rem;font-weight:700;background:var(--surface);color:rgba(240,240,255,0.22);transition:all 0.3s ease;}
.num-cell.drawn{color:rgba(0,0,0,0.85);font-weight:900;}
.num-cell.current{transform:scale(1.15);box-shadow:0 0 12px var(--cell-color);}

/* LÉGENDE */
.legend{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;margin-top:10px;}
.legend-item{display:flex;align-items:center;gap:4px;font-size:0.62rem;font-weight:600;color:var(--muted);}
.legend-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0;}

/* HISTORIQUE */
.history-card{background:var(--card);border:1px solid var(--border);border-radius:16px;padding:18px;}
.history-title{font-size:0.72rem;font-weight:700;letter-spacing:0.12em;text-transform:uppercase;color:var(--muted);margin-bottom:10px;display:flex;justify-content:space-between;align-items:center;}
.history-list{max-height:160px;overflow-y:auto;display:flex;flex-wrap:wrap;gap:5px;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,0.1) transparent;}
.history-list::-webkit-scrollbar{width:4px;}
.history-list::-webkit-scrollbar-thumb{background:rgba(255,255,255,0.1);border-radius:2px;}
.hist-ball{width:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-family:'Bebas Neue',sans-serif;font-size:0.85rem;color:rgba(0,0,0,0.8);flex-shrink:0;flex-direction:column;}
.hist-letter{font-size:0.38rem;line-height:1;color:rgba(0,0,0,0.6);}
.hist-num{font-size:0.82rem;line-height:1;}
.history-empty{font-size:0.78rem;color:var(--muted);}

/* FIN */
.finished-banner{text-align:center;padding:20px;background:linear-gradient(135deg,rgba(126,217,87,0.1),rgba(59,157,221,0.1));border:1px solid rgba(126,217,87,0.3);border-radius:16px;margin-top:16px;}
.finished-banner h2{font-family:'Bebas Neue',sans-serif;font-size:2.5rem;letter-spacing:0.06em;background:linear-gradient(90deg,#7ed957,#3b9ddd);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;}

/* CONFETTIS */
#confetti-canvas{position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:9999;}

/* PLEIN ÉCRAN */
:fullscreen .app{max-width:100%;padding:20px;}
:fullscreen .header{padding:0 0 16px;margin-bottom:20px;}
:fullscreen .ball-main{width:260px;height:260px;}
:fullscreen .ball-number{font-size:8.5rem;}
:-webkit-full-screen .app{max-width:100%;padding:20px;}
:-webkit-full-screen .ball-main{width:260px;height:260px;}
:-webkit-full-screen .ball-number{font-size:8.5rem;}

/* RESPONSIVE */
@media(max-width:960px){.main-grid{grid-template-columns:1fr;}.ball-main{width:180px;height:180px;}.ball-number{font-size:5.5rem;}.ball-placeholder{width:180px;height:180px;}}
@media(max-width:500px){.header{flex-direction:column;align-items:flex-start;}.ball-main{width:150px;height:150px;}.ball-number{font-size:4.5rem;}.ball-placeholder{width:150px;height:150px;}.num-cell{font-size:0.58rem;}}
