/* Coach Ethan V7 — styles */
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:'Segoe UI',Arial,sans-serif;background:#f0f4ff;color:#1a1a2e;font-size:15px;-webkit-tap-highlight-color:transparent}

/* === LOCKSCREEN === */
#lockscreen{position:fixed;inset:0;background:linear-gradient(135deg,#0d1f6e,#1a3eaa,#2f63e0);display:flex;align-items:center;justify-content:center;z-index:9999;padding:20px}
#lockscreen.hidden{display:none}
.lock-card{background:white;border-radius:20px;padding:32px 28px;width:100%;max-width:340px;text-align:center;box-shadow:0 20px 60px rgba(0,0,0,.35)}
.lock-icon{font-size:40px;margin-bottom:12px}
.lock-title{font-size:20px;font-weight:700;color:#1a1a2e;margin-bottom:4px}
.lock-sub{font-size:13px;color:#888;margin-bottom:24px}
.lock-dots{display:flex;justify-content:center;gap:12px;margin-bottom:24px}
.lock-dot{width:16px;height:16px;border-radius:50%;background:#e0e7ff;border:2px solid #c7d2fe;transition:all .15s}
.lock-dot.filled{background:#2f63e0;border-color:#1a3eaa}
.lock-dot.error{background:#e74c3c;border-color:#c0392b;animation:shake .3s}
.pin-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:14px}
.pin-btn{background:#f0f4ff;border:1px solid #dde4ff;border-radius:12px;padding:16px;font-size:20px;font-weight:600;color:#1a1a2e;cursor:pointer;transition:all .1s;user-select:none}
.pin-btn:active{background:#2f63e0;color:white;transform:scale(.95)}
.pin-btn.del{background:#fdecea;border-color:#fca5a5;color:#e74c3c;font-size:16px}
.pin-btn.del:active{background:#e74c3c;color:white}
.lock-error{font-size:13px;color:#e74c3c;min-height:18px;margin-bottom:4px}
@keyframes shake{0%,100%{transform:translateX(0)}25%{transform:translateX(-6px)}75%{transform:translateX(6px)}}

/* === LAYOUT === */
header{background:linear-gradient(135deg,#1a3eaa,#2f63e0);color:white;padding:18px 20px;text-align:center}
header h1{font-size:22px;margin-bottom:4px}
header p{font-size:13px;opacity:.85}
#syncStatusBar{margin-top:6px;font-size:11px;opacity:.85;min-height:14px}
nav{display:flex;overflow-x:auto;background:#fff;border-bottom:1px solid #dde4ff;padding:0 10px;scrollbar-width:none}
nav::-webkit-scrollbar{display:none}
nav button{flex-shrink:0;padding:12px 16px;border:none;background:none;font-size:13px;cursor:pointer;color:#666;border-bottom:3px solid transparent;font-weight:500}
nav button.active{color:#2f63e0;border-bottom-color:#2f63e0}
main{padding:14px;padding-bottom:env(safe-area-inset-bottom,14px)}

/* === COMPOSANTS COMMUNS === */
.card{background:#fff;border-radius:12px;padding:15px;margin-bottom:12px;box-shadow:0 1px 4px rgba(0,0,0,.06)}
label{display:block;font-size:13px;color:#555;margin-bottom:4px;font-weight:500}
select,input[type=text],input[type=number],input[type=password],textarea{width:100%;padding:8px 10px;border:1px solid #dde4ff;border-radius:8px;font-size:14px;background:#fff;color:#1a1a2e;margin-bottom:10px;font-family:inherit}
textarea{min-height:60px;resize:vertical}
.btn{display:inline-block;padding:10px 18px;border-radius:9px;border:none;cursor:pointer;font-size:14px;font-weight:600}
.btn-blue{background:#2f63e0;color:white;width:100%;text-align:center}
.btn-blue:hover{background:#1a3eaa}
.btn-sm{padding:6px 12px;font-size:12px;border-radius:6px}
.btn-green{background:#22b573;color:white}
.btn-red{background:#e74c3c;color:white}
.btn-gray{background:#eee;color:#333}
.btn-orange{background:#f39c12;color:#fff;border:none}
.badge{display:inline-block;padding:3px 8px;border-radius:5px;font-size:11px;font-weight:600}
.badge-non-vu{background:#ffeee8;color:#c0392b}
.badge-vu{background:#fff3cd;color:#856404}
.badge-acquis{background:#d4edda;color:#155724}
h2{font-size:16px;font-weight:700;margin-bottom:12px;color:#1a1a2e}
h3{font-size:14px;font-weight:600;color:#2f63e0;margin-bottom:8px}

/* === STATS === */
.stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px}
.stat-box{background:#f0f4ff;border-radius:10px;padding:12px;text-align:center}
.stat-box .val{font-size:24px;font-weight:700;color:#2f63e0}
.stat-box .lbl{font-size:11px;color:#666;margin-top:2px}
.prog-stats{display:flex;gap:8px;margin-bottom:12px;flex-wrap:wrap}
.prog-stat{flex:1;min-width:70px;background:#f0f4ff;border-radius:8px;padding:8px;text-align:center}
.prog-stat .v{font-size:18px;font-weight:700;color:#2f63e0}
.prog-stat .l{font-size:10px;color:#666}

/* === PROGRAMME (chapitres + sujets en cours) === */
.sujet-row{display:flex;align-items:center;gap:8px;padding:8px 0;border-bottom:1px solid #f0f4ff}
.sujet-row:last-child{border-bottom:none}
.sujet-nom{flex:1;font-size:13px}
.sujet-custom{background:#fffbf0;border-left:3px solid #f39c12;padding-left:6px}
.sujet-custom .sujet-nom::after{content:'perso';font-size:10px;background:#fff3cd;color:#856404;padding:1px 5px;border-radius:3px;margin-left:6px;vertical-align:middle}
.btn-delete{background:none;border:none;color:#ccc;font-size:16px;cursor:pointer;padding:2px 4px;line-height:1;flex-shrink:0}
.btn-delete:hover{color:#e74c3c}
.add-sujet-form{background:#f8f9ff;border-radius:10px;padding:14px;margin-top:12px;border:1px dashed #b3c6ff}
.add-sujet-form h3{font-size:14px;font-weight:600;color:#1a3eaa;margin-bottom:10px}
.add-sujet-row{display:flex;gap:8px;align-items:flex-end;flex-wrap:wrap}
.add-sujet-row select,.add-sujet-row input{flex:1;min-width:120px;margin-bottom:0}
.add-sujet-row .btn-add,.cours-form .btn-add{background:#2f63e0;color:white;border:none;padding:8px 16px;border-radius:8px;font-size:13px;cursor:pointer;font-weight:600;white-space:nowrap;flex-shrink:0}
.add-sujet-row .btn-add:hover,.cours-form .btn-add:hover{background:#1a3eaa}
.cours-chip{display:inline-flex;align-items:center;gap:5px;background:#e8eeff;color:#1a3eaa;border:1px solid #b3c6ff;border-radius:20px;padding:4px 10px;font-size:12px;font-weight:500;margin:3px;cursor:default}
.cours-chip .del-chip{cursor:pointer;opacity:.6;font-size:14px;line-height:1}
.cours-chip .del-chip:hover{opacity:1;color:#e74c3c}
.cours-chip.cours-actif{background:#fff8e1;color:#7d5a00;border-color:#ffe082}
.cours-form{display:flex;gap:8px;flex-wrap:wrap;align-items:flex-end;margin-top:10px}
.cours-form select,.cours-form input{flex:1;min-width:120px;margin-bottom:0}
.cours-form button{flex-shrink:0}

/* === EXERCICES === */
.exo-card{background:#fff;border-radius:12px;margin-bottom:14px;border-left:4px solid #2f63e0;box-shadow:0 2px 8px rgba(0,0,0,.07);overflow:hidden}
.exo-header{padding:12px 14px;background:#f0f4ff;display:flex;align-items:center;justify-content:space-between;gap:8px}
.exo-header .matiere{font-weight:700;font-size:13px;color:#1a3eaa}
.exo-header .chapitre{font-size:12px;color:#555}
.exo-body{padding:14px}
.exo-consigne{font-size:14px;line-height:1.65;color:#1a1a2e;margin-bottom:10px}
.exo-methode{background:#f8f9ff;border-radius:8px;padding:10px 12px;font-size:12.5px;color:#444;line-height:1.6;margin-bottom:8px}
.exo-methode strong{color:#2f63e0;display:block;margin-bottom:4px}
.exo-criteres{background:#f0fff4;border-radius:8px;padding:10px 12px;font-size:12px;color:#155724;line-height:1.6}
.exo-criteres strong{display:block;margin-bottom:4px}
.exo-bac{background:#fff8e1;border-radius:8px;padding:8px 12px;font-size:12px;color:#7d5a00;margin-bottom:8px}
.exo-bac strong{display:block;margin-bottom:2px}
.exo-valider{border-top:1px solid #f0f4ff;padding:12px 14px;background:#fafbff}
.exo-valider textarea{min-height:52px;margin-bottom:8px}
.exo-valider-btn{display:flex;gap:8px}
.exo-card.done{opacity:.7;border-left-color:#22b573!important}
.exo-card.done .exo-header{background:#f0fff4}

/* === TAGS === */
.tag{display:inline-block;padding:2px 7px;border-radius:4px;font-size:11px;margin-right:4px}
.tag-blue{background:#e8eeff;color:#1a3eaa}
.tag-orange{background:#fff3e0;color:#e65100}
.tag-red{background:#fdecea;color:#c62828}
.tag-green{background:#e8f5e9;color:#2e7d32}
.tag-purple{background:#f3e5f5;color:#6a1b9a}
.tag-bluelight{background:#e3f2fd;color:#1565c0}
.tag-gray{background:#eee;color:#666}

/* === PHOTO === */
.photo-zone{border:2px dashed #b3c6ff;border-radius:10px;padding:16px;text-align:center;cursor:pointer;margin-bottom:8px;background:#f8f9ff;transition:all .2s}
.photo-zone:hover,.photo-zone.drag{border-color:#2f63e0;background:#eef3ff}
.photo-zone input{display:none}
.photo-preview{width:100%;max-height:220px;object-fit:contain;border-radius:8px;margin-bottom:8px;display:block}

/* === HISTORIQUE === */
.hist-exo-item{background:#fff;border-radius:10px;margin-bottom:8px;border-left:3px solid #22b573;box-shadow:0 1px 3px rgba(0,0,0,.05);overflow:hidden}
.hist-exo-item.difficile{border-left-color:#e74c3c}
.hist-exo-item[open]{box-shadow:0 4px 16px rgba(0,0,0,.12)}
.hist-exo-summary{padding:12px 14px;cursor:pointer;list-style:none}
.hist-exo-summary::-webkit-details-marker{display:none}
.hist-exo-header{display:flex;justify-content:space-between;align-items:flex-start;gap:8px;margin-bottom:4px}
.hist-exo-titre{font-size:13px;font-weight:600;color:#1a1a2e}
.hist-exo-date{font-size:11px;color:#999;white-space:nowrap}
.hist-exo-meta{font-size:12px;color:#666;margin-bottom:4px}
.hist-exo-detail{padding:12px 14px;border-top:1px solid #f0f4ff;background:#fafbff;border-radius:0 0 10px 10px}
.hist-stats{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;margin-bottom:14px}
.hist-stat{background:#f0f4ff;border-radius:8px;padding:10px;text-align:center}
.hist-stat .v{font-size:20px;font-weight:700;color:#2f63e0}
.hist-stat .l{font-size:11px;color:#666;margin-top:1px}
.hist-filtres{display:flex;gap:8px;margin-bottom:12px;flex-wrap:wrap}
.hist-filtres select{flex:1;min-width:120px;margin-bottom:0}

/* === CORRECTION IA === */
.corr-ia-inline{background:#fff;border:1px solid #dde4ff;border-radius:10px;padding:14px;margin-top:12px;font-size:13px;line-height:1.7}
.corr-ia-inline .corr-note{font-size:26px;font-weight:700;text-align:center;padding:10px;border-radius:8px;margin-bottom:10px}
.corr-ia-inline .corr-note.green{background:#d4edda;color:#155724}
.corr-ia-inline .corr-note.orange{background:#fff3cd;color:#856404}
.corr-ia-inline .corr-note.red{background:#fdecea;color:#7b1a1a}
.corr-section{margin-bottom:10px}
.corr-section strong{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:#888;margin-bottom:4px}

/* === SYNC BAR === */
.sync-bar{display:flex;align-items:center;gap:8px;padding:8px 12px;border-radius:8px;font-size:12px;margin-bottom:4px}
.sync-bar.ok{background:#d4edda;color:#155724}
.sync-bar.err{background:#fdecea;color:#c62828}
.sync-bar.sync{background:#e8eeff;color:#1a3eaa}
.sync-bar.warn{background:#fff3cd;color:#856404}
.sync-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.sync-dot.green{background:#22b573}
.sync-dot.red{background:#e74c3c}
.sync-dot.blue{background:#2f63e0;animation:pulse 1s infinite}
.sync-dot.gray{background:#aaa}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.3}}

/* === TOAST === */
.toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:#1a1a2e;color:white;padding:12px 20px;border-radius:10px;font-size:14px;box-shadow:0 8px 24px rgba(0,0,0,.3);z-index:1000;max-width:90vw;text-align:center;animation:toastIn .25s ease}
.toast.hidden{display:none}
.toast.error{background:#c62828}
.toast.success{background:#1a9660}
.toast.warn{background:#7d5a00}
@keyframes toastIn{from{opacity:0;transform:translate(-50%,12px)}to{opacity:1;transform:translate(-50%,0)}}

/* === OFFLINE BANNER === */
.offline-banner{position:sticky;top:0;background:#fff3cd;color:#856404;text-align:center;padding:6px 10px;font-size:12px;font-weight:600;border-bottom:1px solid #ffe082;z-index:100}
.offline-banner.hidden{display:none}

/* === MODAL === */
.modal-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.8);z-index:10000;align-items:center;justify-content:center;padding:20px}
.modal-overlay.open{display:flex}
.modal-close{position:fixed;top:16px;right:20px;color:white;font-size:28px;cursor:pointer;z-index:10001;background:rgba(0,0,0,.5);width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center}

/* === BUG REPORT === */
.bug-severity{display:flex;gap:8px;margin-bottom:10px;flex-wrap:wrap}
.bug-sev-btn{flex:1;min-width:90px;padding:10px;border-radius:8px;border:2px solid #dde4ff;background:#f8f9ff;font-size:13px;font-weight:600;cursor:pointer;text-align:center;transition:all .15s}
.bug-sev-btn:hover{border-color:#2f63e0}
.bug-sev-btn.selected.haut{background:#fdecea;border-color:#e74c3c;color:#c62828}
.bug-sev-btn.selected.moyen{background:#fff3cd;border-color:#f39c12;color:#7d5a00}
.bug-sev-btn.selected.bas{background:#d4edda;border-color:#22b573;color:#155724}
.bug-snapshot{background:#f8f9ff;border:1px dashed #b3c6ff;border-radius:8px;padding:10px;font-size:12px;color:#555;margin-bottom:10px;font-family:monospace;max-height:120px;overflow:auto}
.bug-list{margin-top:14px}
.bug-item{background:#fff;border-radius:8px;padding:10px 12px;margin-bottom:8px;border-left:3px solid #f39c12;box-shadow:0 1px 3px rgba(0,0,0,.05)}
.bug-item.corrige{opacity:.6;border-left-color:#22b573}
.bug-item-meta{font-size:11px;color:#888;margin-bottom:4px}
.bug-item-desc{font-size:13px;color:#1a1a2e;line-height:1.5}

/* === DATA PANEL === */
.data-panel{background:#f8f9ff;border:1px solid #dde4ff;border-radius:10px;padding:14px;margin-bottom:10px}
.data-panel h3{font-size:13px;font-weight:600;color:#1a3eaa;margin-bottom:8px}
.data-panel p{font-size:12px;color:#666;margin-bottom:10px;line-height:1.5}
.data-actions{display:flex;gap:8px;flex-wrap:wrap}
.data-actions button{flex:1;min-width:120px;padding:9px 12px;border-radius:8px;border:none;font-size:13px;font-weight:600;cursor:pointer}

/* === EXERCICES — états correction IA (ajouts V7 onglet Exercices) === */
.mode-bac-desc{background:#fff3e0;border:1px solid #ffe082;border-radius:8px;padding:8px 12px;font-size:12px;color:#7d5a00;margin-bottom:10px;line-height:1.5}
.mode-bac-desc strong{color:#7d5a00}
.photo-required{background:#fdecea;color:#c62828;border-radius:6px;padding:8px 10px;font-size:12px;margin-bottom:8px}
.photo-required.hidden{display:none}
.corr-loading{display:flex;align-items:center;gap:8px;padding:10px 12px;background:#f8f9ff;border-radius:8px;font-size:13px;color:#1a3eaa;margin-top:8px}
.spinner{display:inline-block;width:14px;height:14px;border:2px solid #dde4ff;border-top-color:#2f63e0;border-radius:50%;animation:spin .8s linear infinite;vertical-align:middle}
@keyframes spin{to{transform:rotate(360deg)}}
.corr-rejet{background:#fff3e0;border:1px solid #ffcc80;border-radius:10px;padding:12px 14px;margin-top:10px;font-size:13px;line-height:1.6;color:#7d5a00}
.corr-rejet-titre{font-weight:700;color:#e65100;margin-bottom:6px}
.corr-rejet p{margin:0 0 8px}
.corr-qualite{background:#e3f2fd;border:1px solid #90caf9;border-radius:10px;padding:12px 14px;margin-top:10px;font-size:13px;line-height:1.6;color:#1565c0}
.corr-qualite-titre{font-weight:700;color:#0d47a1;margin-bottom:6px}
.corr-qualite p{margin:0 0 8px}
.corr-erreur{background:#fdecea;border:1px solid #ef9a9a;border-radius:10px;padding:12px 14px;margin-top:10px;font-size:13px;line-height:1.6;color:#7b1a1a}
.corr-erreur strong{display:block;margin-bottom:4px}
.exo-correction-zone{padding:0 14px 14px}
.btn-difficile{background:#f39c12;color:#fff;border:none}
.btn-valide{background:#22b573;color:#fff;border:none}
#modalContent{display:flex;align-items:center;justify-content:center;width:100%}
