/* Loto Bonheur IA - Styles globaux */
*{box-sizing:border-box;margin:0;padding:0}
:root{
  --navy:#0a1628;--blue:#1a2f5e;--blue2:#2a4f9e;--gold:#d4af37;
  --gold2:#f5d06f;--red:#e53e3e;--green:#38a169;--gray:#f7f8fa;
  --text:#1a202c;--muted:#718096;--border:#e2e8f0;
  --card:#fff;--radius:12px;--shadow:0 2px 12px rgba(0,0,0,.08);
}
body{background:var(--gray);color:var(--text);font-family:'Segoe UI',system-ui,sans-serif;
     min-height:100vh;font-size:15px}

/* Layout */
.layout{display:flex;min-height:100vh}
.sidebar{width:240px;background:var(--navy);color:#fff;position:fixed;
          top:0;left:0;height:100vh;z-index:100;display:flex;flex-direction:column;
          transition:.3s}
.sidebar-logo{padding:24px 20px 16px;border-bottom:1px solid rgba(255,255,255,.1)}
.sidebar-logo .icon{font-size:28px;margin-bottom:4px}
.sidebar-logo h2{font-size:1.1rem;font-weight:700;color:var(--gold)}
.sidebar-logo p{font-size:.75rem;color:rgba(255,255,255,.5);margin-top:2px}
.sidebar-nav{flex:1;padding:16px 0;overflow-y:auto}
.nav-item{display:flex;align-items:center;gap:12px;padding:12px 20px;
           color:rgba(255,255,255,.7);text-decoration:none;font-size:.9rem;
           transition:.2s;cursor:pointer;border:none;background:none;width:100%;text-align:left}
.nav-item:hover,.nav-item.active{background:rgba(255,255,255,.1);color:#fff}
.nav-item.active{border-left:3px solid var(--gold);padding-left:17px}
.nav-item .icon{font-size:1.1rem;width:22px;text-align:center}
.sidebar-footer{padding:16px 20px;border-top:1px solid rgba(255,255,255,.1);font-size:.8rem}
.user-info{display:flex;align-items:center;gap:10px}
.user-avatar{width:34px;height:34px;background:var(--gold);border-radius:50%;
              display:flex;align-items:center;justify-content:center;
              color:var(--navy);font-weight:700;font-size:.9rem}
.user-name{color:#fff;font-weight:600;font-size:.85rem}
.user-role{color:rgba(255,255,255,.5);font-size:.75rem;text-transform:capitalize}
.btn-logout{margin-top:10px;background:rgba(255,255,255,.1);color:rgba(255,255,255,.7);
             border:none;padding:8px 14px;border-radius:8px;cursor:pointer;
             font-size:.8rem;width:100%;transition:.2s}
.btn-logout:hover{background:rgba(255,255,255,.2);color:#fff}

.main{margin-left:240px;flex:1;padding:28px;min-height:100vh}
.page{display:none}
.page.active{display:block}

/* Header */
.page-header{margin-bottom:24px}
.page-header h1{font-size:1.6rem;font-weight:700;color:var(--navy)}
.page-header p{color:var(--muted);margin-top:4px}

/* Cards */
.card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px}
.card-title{font-size:1rem;font-weight:600;color:var(--navy);margin-bottom:16px;
             display:flex;align-items:center;gap:8px}
.grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:24px}
.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:24px}
.grid-2{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin-bottom:24px}

/* Stat cards */
.stat-card{background:var(--card);border-radius:var(--radius);padding:20px;
            box-shadow:var(--shadow);border-top:4px solid var(--gold)}
.stat-card.blue{border-top-color:var(--blue2)}
.stat-card.green{border-top-color:var(--green)}
.stat-card.red{border-top-color:var(--red)}
.stat-label{font-size:.8rem;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.5px}
.stat-value{font-size:2rem;font-weight:700;color:var(--navy);margin:4px 0}
.stat-sub{font-size:.8rem;color:var(--muted)}

/* Boules */
.boule{display:inline-flex;align-items:center;justify-content:center;
        width:38px;height:38px;border-radius:50%;font-weight:700;font-size:.9rem;
        background:linear-gradient(135deg,var(--gold),var(--gold2));color:var(--navy);
        box-shadow:0 2px 6px rgba(212,175,55,.4);flex-shrink:0}
.boule.sm{width:30px;height:30px;font-size:.8rem}
.boule.lg{width:52px;height:52px;font-size:1.1rem}
.boule.hot{background:linear-gradient(135deg,#e53e3e,#fc8181);color:#fff;box-shadow:0 2px 6px rgba(229,62,62,.4)}
.boule.cold{background:linear-gradient(135deg,#2b6cb0,#63b3ed);color:#fff;box-shadow:0 2px 6px rgba(43,108,176,.4)}
.boule.overdue{background:linear-gradient(135deg,#744210,#d97706);color:#fff;box-shadow:0 2px 6px rgba(116,66,16,.4)}
.boules-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}

/* Tables */
table{width:100%;border-collapse:collapse;font-size:.875rem}
th{background:#f8fafc;padding:10px 12px;text-align:left;font-weight:600;
   color:var(--muted);font-size:.8rem;text-transform:uppercase;letter-spacing:.3px;
   border-bottom:2px solid var(--border)}
td{padding:10px 12px;border-bottom:1px solid var(--border);vertical-align:middle}
tr:hover td{background:#f8fafc}
.table-wrap{overflow-x:auto}

/* Badges */
.badge{display:inline-block;padding:3px 10px;border-radius:20px;font-size:.75rem;font-weight:600}
.badge.matin{background:#fefce8;color:#854d0e}
.badge.midi{background:#fff7ed;color:#9a3412}
.badge.soir{background:#f0f9ff;color:#0c4a6e}
.badge.hot{background:#fef2f2;color:#b91c1c}
.badge.cold{background:#eff6ff;color:#1e40af}
.badge.ok{background:#f0fdf4;color:#166534}
.badge.warn{background:#fefce8;color:#854d0e}
.badge.admin{background:#f5f3ff;color:#5b21b6}
.badge.operateur{background:#ecfdf5;color:#065f46}
.badge.lecteur{background:#f8fafc;color:#475569}

/* Buttons */
.btn{display:inline-flex;align-items:center;gap:8px;padding:10px 20px;
     border-radius:8px;border:none;cursor:pointer;font-size:.875rem;font-weight:600;
     transition:.2s;text-decoration:none}
.btn-primary{background:linear-gradient(135deg,var(--blue),var(--blue2));color:#fff}
.btn-primary:hover{opacity:.9;transform:translateY(-1px)}
.btn-gold{background:linear-gradient(135deg,var(--gold),var(--gold2));color:var(--navy)}
.btn-gold:hover{opacity:.9}
.btn-danger{background:#fef2f2;color:var(--red);border:1px solid #fca5a5}
.btn-danger:hover{background:var(--red);color:#fff}
.btn-sm{padding:6px 12px;font-size:.8rem}
.btn-outline{background:transparent;border:2px solid var(--blue);color:var(--blue)}

/* Tabs */
.tabs{display:flex;gap:4px;background:#f0f4f8;padding:4px;border-radius:10px;
       margin-bottom:20px;width:fit-content}
.tab{padding:8px 20px;border-radius:8px;border:none;background:transparent;
      cursor:pointer;font-weight:600;font-size:.875rem;color:var(--muted);transition:.2s}
.tab.active{background:#fff;color:var(--navy);box-shadow:0 1px 4px rgba(0,0,0,.1)}

/* Prediction */
.grille-suggeree{display:flex;gap:12px;flex-wrap:wrap;padding:20px;
                   background:linear-gradient(135deg,var(--navy),var(--blue));
                   border-radius:var(--radius);margin-bottom:20px}
.fiabilite-bar{height:8px;border-radius:4px;background:#e2e8f0;overflow:hidden;margin-top:6px}
.fiabilite-fill{height:100%;border-radius:4px;transition:width .8s ease;
                 background:linear-gradient(90deg,var(--gold),var(--green))}
.score-bar{height:6px;background:#e2e8f0;border-radius:3px;overflow:hidden;width:100px}
.score-fill{height:100%;background:linear-gradient(90deg,var(--blue2),var(--gold));border-radius:3px}

/* Formulaire saisie */
.boule-grid{display:grid;grid-template-columns:repeat(10,1fr);gap:6px;margin:16px 0}
.boule-btn{aspect-ratio:1;border-radius:50%;border:2px solid var(--border);background:#fff;
            cursor:pointer;font-weight:700;font-size:.875rem;transition:.15s;color:var(--text)}
.boule-btn:hover{border-color:var(--gold);background:#fefce8}
.boule-btn.selected{background:linear-gradient(135deg,var(--gold),var(--gold2));
                     border-color:var(--gold);color:var(--navy);
                     box-shadow:0 2px 8px rgba(212,175,55,.5);transform:scale(1.1)}

/* Heatmap */
.heatmap{display:grid;grid-template-columns:repeat(10,1fr);gap:3px}
.hm-cell{aspect-ratio:1;border-radius:4px;display:flex;align-items:center;
           justify-content:center;font-size:.7rem;font-weight:600;cursor:default;
           transition:.2s;position:relative}
.hm-cell:hover::after{content:attr(data-tip);position:absolute;bottom:110%;left:50%;
                        transform:translateX(-50%);background:#333;color:#fff;
                        padding:4px 8px;border-radius:4px;font-size:.7rem;
                        white-space:nowrap;z-index:10}

/* Alertes */
.alert{padding:12px 16px;border-radius:8px;font-size:.875rem;margin-bottom:16px}
.alert-info{background:#eff6ff;border-left:4px solid var(--blue2);color:#1e40af}
.alert-warn{background:#fefce8;border-left:4px solid var(--gold);color:#854d0e}
.alert-success{background:#f0fdf4;border-left:4px solid var(--green);color:#166534}

/* Modal */
.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:1000;
                display:none;align-items:center;justify-content:center}
.modal-overlay.open{display:flex}
.modal{background:#fff;border-radius:16px;padding:28px;width:100%;max-width:480px;
        box-shadow:0 20px 60px rgba(0,0,0,.3)}
.modal-title{font-size:1.1rem;font-weight:700;color:var(--navy);margin-bottom:20px}
.form-group{margin-bottom:16px}
.form-group label{display:block;font-size:.8rem;font-weight:600;color:var(--muted);
                   text-transform:uppercase;letter-spacing:.5px;margin-bottom:6px}
.form-group input,.form-group select{width:100%;padding:10px 14px;border:2px solid var(--border);
  border-radius:8px;font-size:.9rem;outline:none;transition:.2s}
.form-group input:focus,.form-group select:focus{border-color:var(--blue)}
.modal-actions{display:flex;gap:12px;margin-top:20px;justify-content:flex-end}

/* Responsive */
@media(max-width:900px){
  .sidebar{width:60px;overflow:hidden}
  .sidebar-logo h2,.sidebar-logo p,.nav-item span,
  .sidebar-footer .user-name,.sidebar-footer .user-role,
  .sidebar-footer .btn-logout{display:none}
  .nav-item{padding:14px;justify-content:center}
  .nav-item.active{padding-left:14px;border-left:none;background:rgba(255,255,255,.15)}
  .main{margin-left:60px;padding:16px}
  .grid-4,.grid-3,.grid-2{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:600px){
  .grid-4,.grid-3,.grid-2{grid-template-columns:1fr}
  .boule-grid{grid-template-columns:repeat(9,1fr)}
}
