:root{--bg:#f8fafc;--bg-p:#fff;--bg-s:#fff;--txt:#1e293b;--mut:#64748b;--brd:#e2e8f0;--pri:#4f46e5;--prh:#4338ca;--acc:#ec4899;--ok:#10b981;--warn:#f59e0b;--err:#ef4444;--sh:0 4px 6px -1px rgba(0,0,0,.1);--foc:#f1f5f9;--r:10px;}
[data-theme=dark]{--bg:#0f172a;--bg-p:#1e293b;--bg-s:#1e293b;--txt:#f8fafc;--mut:#94a3b8;--brd:#334155;--pri:#6366f1;--prh:#818cf8;--sh:0 10px 20px rgba(0,0,0,.4);--foc:#0f172a;}
*{box-sizing:border-box;margin:0;padding:0;}
body{font-family:'Inter',sans-serif;background:var(--bg);color:var(--txt);height:100vh;display:flex;flex-direction:column;overflow:hidden;transition:background .3s,color .3s;}

/* HEADER */
#header{height:60px;background:var(--bg-p);border-bottom:1px solid var(--brd);display:flex;align-items:center;padding:0 20px;gap:10px;z-index:100;flex-shrink:0;}
#header .logo{font-size:1.1rem;font-weight:700;margin-right:auto;display:flex;align-items:center;gap:8px;}
#header .logo em{font-style:normal;font-size:.75rem;background:rgba(99,102,241,.15);color:var(--pri);padding:2px 8px;border-radius:20px;font-weight:600;}
#autosave{font-size:.75rem;color:var(--mut);display:flex;align-items:center;gap:5px;}
.save-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;transition:background .3s;}
.save-dot.ok{background:var(--ok);box-shadow:0 0 6px var(--ok);}
.save-dot.warn{background:var(--warn);box-shadow:0 0 6px var(--warn);}

/* LAYOUT */
#shell{display:flex;flex:1;overflow:hidden;}

/* SIDEBAR */
#sidebar{width:240px;background:var(--bg-s);border-right:1px solid var(--brd);display:flex;flex-direction:column;overflow-y:auto;flex-shrink:0;}
.sb-group{padding:10px 0;border-bottom:1px solid var(--brd);}
.sb-group:last-child{border:none;}
.sb-label{font-size:.65rem;text-transform:uppercase;letter-spacing:1.2px;color:var(--mut);padding:0 18px 6px;font-weight:600;}
.nav{display:flex;align-items:center;gap:10px;padding:8px 18px;cursor:pointer;font-size:.875rem;color:var(--txt);border-left:3px solid transparent;transition:all .15s;}
.nav:hover{background:rgba(99,102,241,.05);color:var(--pri);}
.nav.active{background:rgba(99,102,241,.08);color:var(--pri);border-left-color:var(--pri);font-weight:500;}
.nav .ico{font-size:1rem;opacity:.8;}

/* MAIN */
#main{flex:1;overflow:hidden;position:relative;}
.panel{display:none;height:100%;overflow-y:auto;padding:28px;animation:fi .2s ease;}
.panel.active{display:block;}
@keyframes fi{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.ph{margin-bottom:24px;}
.ph h1{font-size:1.6rem;font-weight:700;}
.ph p{color:var(--mut);font-size:.9rem;margin-top:4px;}

/* SECTION TITLES */
.section-title{font-size:1rem;font-weight:600;margin-bottom:16px;color:var(--txt);}

/* EMPTY STATE */
.empty-state{padding:40px;text-align:center;color:var(--mut);font-size:.9rem;border:2px dashed var(--brd);border-radius:var(--r);margin-top:8px;}

/* BUTTONS */
.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:7px;border:1px solid var(--brd);background:transparent;color:var(--txt);font-size:.85rem;font-weight:500;cursor:pointer;transition:all .15s;font-family:inherit;}
.btn:hover{background:var(--foc);}
.btn.pri{background:var(--pri);color:#fff;border:none;}
.btn.pri:hover{background:var(--prh);}
.btn.sml{padding:5px 10px;font-size:.8rem;}
.btn.dan{background:var(--err);color:#fff;border:none;}
.btn.ok{background:var(--ok);color:#fff;border:none;}

/* CARDS */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:18px;}
.card{background:var(--bg-p);border:1px solid var(--brd);border-radius:var(--r);padding:20px;box-shadow:var(--sh);}
.card-hd{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px;}
.card-hd h3{font-size:.95rem;font-weight:600;}
.stat{font-size:2.2rem;font-weight:700;color:var(--pri);}
.sub{font-size:.82rem;color:var(--mut);margin-top:3px;}
.bar-wrap{height:8px;background:var(--brd);border-radius:8px;overflow:hidden;margin-top:14px;}
.bar{height:100%;background:linear-gradient(90deg,var(--pri),var(--acc));border-radius:8px;transition:width .4s ease;}

/* DASHBOARD STAT PILLS */
.pills{display:flex;gap:10px;margin-top:14px;}
.pill{flex:1;text-align:center;padding:10px;border-radius:8px;font-size:.82rem;}
.pill.todo{background:rgba(239,68,68,.1);color:var(--err);}
.pill.wip{background:rgba(245,158,11,.1);color:var(--warn);}
.pill.done{background:rgba(16,185,129,.1);color:var(--ok);}
.pill span{display:block;font-size:1.4rem;font-weight:700;}

/* DASHBOARD RECENT LIST */
.recent-list{margin-top:12px;display:flex;flex-direction:column;gap:6px;}
.recent-item{display:flex;align-items:center;justify-content:space-between;padding:9px 12px;border-radius:8px;background:var(--foc);font-size:.83rem;cursor:pointer;transition:background .15s;}
.recent-item:hover{background:rgba(99,102,241,.08);}
.recent-item .ri-title{font-weight:500;}
.recent-item .ri-meta{font-size:.75rem;color:var(--mut);}

/* EDITOR LAYOUT */
#editor-panel{display:flex;height:100%;gap:0;}
#ed-sidebar{width:210px;border-right:1px solid var(--brd);display:flex;flex-direction:column;background:var(--bg-p);flex-shrink:0;}
#ed-sidebar h4{padding:14px 16px 8px;font-size:.75rem;text-transform:uppercase;letter-spacing:1px;color:var(--mut);}
#ch-list{flex:1;overflow-y:auto;}

/* CHAPTER ITEMS â€” drag-and-drop */
.ch-item{padding:9px 10px 9px 16px;font-size:.85rem;cursor:pointer;border-left:3px solid transparent;transition:all .15s;display:flex;align-items:center;gap:6px;user-select:none;}
.ch-item:hover{background:var(--foc);}
.ch-item.active{border-left-color:var(--pri);color:var(--pri);font-weight:500;}
.ch-item.drag-over-ch{border-top:2px solid var(--pri);}
.ch-item.dragging-ch{opacity:.4;}
.ch-drag{cursor:grab;color:var(--mut);font-size:.75rem;flex-shrink:0;}
.ch-item-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.ch-wc{font-size:.72rem;color:var(--mut);flex-shrink:0;}
.ch-status-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0;}
.ch-status-dot.brouillon{background:var(--mut);}
.ch-status-dot.en_cours{background:var(--warn);}
.ch-status-dot.termine{background:var(--ok);}

/* EDITOR CENTER */
#ed-center{flex:1;display:flex;flex-direction:column;background:var(--bg);}
#ed-toolbar{padding:8px 16px;border-bottom:1px solid var(--brd);display:flex;gap:8px;align-items:center;background:var(--bg-p);}
#ed-wrap{flex:1;position:relative;display:flex;}
#ed-area,#editor-area{flex:1;padding:40px;font-family:'Georgia',serif;font-size:1.05rem;line-height:1.85;border:none;background:var(--bg);color:var(--txt);resize:none;outline:none;}
#ed-wcount{position:absolute;bottom:12px;right:16px;font-size:.75rem;color:var(--mut);}

/* STATUS BUTTON COLORS */
.status-btn-brouillon{color:var(--mut)!important;border-color:var(--mut)!important;}
.status-btn-en_cours{color:var(--warn)!important;border-color:var(--warn)!important;}
.status-btn-termine{color:var(--ok)!important;border-color:var(--ok)!important;}

/* EDITOR SIDEBAR I/O BAR */
.ed-io-bar{border-top:1px solid var(--brd);padding:10px 12px;display:flex;flex-direction:column;gap:4px;}
.ed-io-label{font-size:.62rem;text-transform:uppercase;letter-spacing:1px;color:var(--mut);font-weight:600;margin-bottom:2px;}
.ed-io-btn{width:100%;justify-content:flex-start!important;font-size:.78rem!important;padding:5px 8px!important;}

/* SPLIT PANE */
#split-pane{width:280px;border-left:1px solid var(--brd);background:var(--bg-p);display:flex;flex-direction:column;flex-shrink:0;}
#split-pane.hidden{display:none;}
#split-pane .sp-hd{padding:14px 16px;border-bottom:1px solid var(--brd);display:flex;justify-content:space-between;align-items:center;font-weight:600;font-size:.85rem;}
#split-pane .sp-body{padding:16px;overflow-y:auto;flex:1;font-size:.85rem;color:var(--mut);line-height:1.6;}
#split-pane select{width:100%;padding:7px;border:1px solid var(--brd);border-radius:6px;background:var(--bg);color:var(--txt);font-size:.82rem;margin-bottom:12px;font-family:inherit;}

/* CHARACTERS GRID */
.chr-card{background:var(--bg-p);border:1px solid var(--brd);border-radius:var(--r);padding:18px;cursor:pointer;transition:all .2s;box-shadow:var(--sh);}
.chr-card:hover{transform:translateY(-2px);box-shadow:0 8px 20px rgba(0,0,0,.12);}
.chr-av{width:52px;height:52px;border-radius:50%;background:linear-gradient(135deg,var(--pri),var(--acc));display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;font-size:1.1rem;margin-bottom:12px;}
.chr-name{font-weight:600;font-size:.95rem;}
.badge{display:inline-block;font-size:.7rem;padding:2px 8px;border-radius:10px;font-weight:600;margin-top:5px;}
.badge.pro{background:rgba(99,102,241,.15);color:var(--pri);}
.badge.ant{background:rgba(236,72,153,.15);color:var(--acc);}
.badge.sec{background:rgba(100,116,139,.15);color:var(--mut);}
.chr-chapters{margin-top:8px;display:flex;flex-wrap:wrap;gap:4px;}
.chr-ch-tag{font-size:.68rem;padding:2px 7px;border-radius:10px;background:rgba(99,102,241,.1);color:var(--pri);}

/* ARC TIMELINE */
#panel-arcs{overflow-x:hidden;}
.arc-timeline{width:100%;overflow-x:auto;border:1px solid var(--brd);border-radius:var(--r);background:var(--bg-p);box-shadow:var(--sh);}
.arc-hdr-row,.arc-row{display:flex;align-items:stretch;border-bottom:1px solid var(--brd);}
.arc-row:last-child{border-bottom:none;}
.arc-hdr-row{background:var(--foc);}
.arc-lbl,.arc-hdr-lbl{width:220px;flex-shrink:0;padding:10px 14px;display:flex;align-items:center;gap:8px;border-right:1px solid var(--brd);}
.arc-hdr-lbl{font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.6px;color:var(--mut);}
.arc-name{font-size:.85rem;font-weight:500;flex:1;}
.arc-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0;}
.arc-cells{display:flex;flex:1;}
.arc-cell,.arc-th-cell{width:72px;flex-shrink:0;border-right:1px solid var(--brd);display:flex;align-items:center;justify-content:center;min-height:44px;cursor:pointer;transition:background .12s,transform .1s;font-size:.7rem;}
.arc-th-cell{cursor:default;font-size:.68rem;font-weight:600;color:var(--mut);background:var(--foc);padding:6px 4px;text-align:center;line-height:1.3;min-height:36px;flex-direction:column;gap:2px;}
.arc-cell:hover{filter:brightness(1.2);}
.arc-cell.on{color:#fff;font-weight:700;}
.arc-cell:last-child,.arc-th-cell:last-child{border-right:none;}
.arc-actions{padding:0 6px;display:flex;gap:4px;}

/* COLOR SWATCHES */
.color-swatches{display:flex;gap:8px;flex-wrap:wrap;margin-top:6px;}
.color-swatch{width:26px;height:26px;border-radius:50%;cursor:pointer;transition:transform .15s,box-shadow .15s;border:3px solid transparent;}
.color-swatch:hover{transform:scale(1.2);}
.color-swatch.selected{outline:3px solid var(--txt);outline-offset:2px;}

/* CHAPTERS CHECKBOXES IN ARC MODAL */
.ch-checks{display:flex;flex-direction:column;gap:6px;max-height:180px;overflow-y:auto;padding:4px 0;}
.ch-check-item{display:flex;align-items:center;gap:10px;padding:6px 8px;border-radius:6px;cursor:pointer;transition:background .12s;}
.ch-check-item:hover{background:var(--foc);}
.ch-check-item input[type=checkbox]{accent-color:var(--pri);width:15px;height:15px;}

/* KANBAN */
#kanban-board{display:flex;gap:16px;height:calc(100% - 80px);overflow-x:auto;padding-bottom:16px;}
.k-col{flex:0 0 300px;background:var(--foc);border-radius:var(--r);padding:14px;display:flex;flex-direction:column;gap:12px;}
.k-col-hd{display:flex;justify-content:space-between;align-items:center;font-weight:600;font-size:.9rem;}
.k-col-hd .cnt{background:var(--brd);border-radius:10px;padding:1px 8px;font-size:.75rem;color:var(--mut);}
.k-tickets{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:10px;min-height:60px;}
.ticket{background:var(--bg-p);border:1px solid var(--brd);border-radius:8px;padding:14px;cursor:grab;box-shadow:0 2px 6px rgba(0,0,0,.05);transition:box-shadow .15s;}
.ticket:hover{box-shadow:0 4px 12px rgba(0,0,0,.1);}
.ticket.dragging{opacity:.5;}
.t-cat{font-size:.68rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px;margin-bottom:6px;color:var(--acc);}
.t-title{font-size:.88rem;font-weight:600;}
.t-desc{font-size:.78rem;color:var(--mut);margin-top:4px;line-height:1.5;}
.t-ch{font-size:.72rem;color:var(--mut);margin-top:8px;border-top:1px solid var(--brd);padding-top:6px;}
.k-col.drag-over{background:rgba(99,102,241,.08);border:2px dashed var(--pri);}

/* EXPORT PANEL */
.export-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px;margin-top:16px;}
.export-card{background:var(--bg-p);border:1px solid var(--brd);border-radius:var(--r);padding:24px;box-shadow:var(--sh);display:flex;flex-direction:column;gap:10px;transition:transform .2s,box-shadow .2s;}
.export-card:hover{transform:translateY(-2px);box-shadow:0 10px 28px rgba(0,0,0,.14);}
.ec-icon{font-size:2rem;}
.ec-title{font-weight:700;font-size:.95rem;}
.ec-desc{font-size:.82rem;color:var(--mut);line-height:1.55;flex:1;}
.import-zone{border:2px dashed var(--brd);border-radius:var(--r);padding:28px;text-align:center;cursor:pointer;transition:border-color .15s,background .15s;margin-top:16px;}
.import-zone:hover{border-color:var(--pri);background:rgba(99,102,241,.04);}
.import-zone .iz-icon{font-size:1.8rem;margin-bottom:8px;}
.import-zone .iz-title{font-weight:600;font-size:.9rem;}
.import-zone .iz-sub{font-size:.8rem;color:var(--mut);margin-top:4px;}

/* MODAL */
#modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:200;display:none;align-items:center;justify-content:center;backdrop-filter:blur(4px);}
#modal-overlay.open{display:flex;}
.modal{background:var(--bg-p);border-radius:14px;width:min(640px,95vw);max-height:85vh;display:flex;flex-direction:column;box-shadow:0 25px 60px rgba(0,0,0,.3);}
.modal-hd{padding:20px 24px;border-bottom:1px solid var(--brd);display:flex;justify-content:space-between;align-items:center;}
.modal-hd h2{font-size:1.1rem;font-weight:600;}
.modal-body{padding:24px;overflow-y:auto;flex:1;}
.modal-ft{padding:16px 24px;border-top:1px solid var(--brd);display:flex;justify-content:space-between;}
.modal-tabs{display:flex;gap:4px;margin-bottom:20px;}
.modal-tab{padding:7px 16px;border-radius:6px;font-size:.85rem;cursor:pointer;background:transparent;border:1px solid var(--brd);color:var(--mut);font-family:inherit;}
.modal-tab.active{background:var(--pri);color:#fff;border-color:var(--pri);}
.field{margin-bottom:16px;}
.field label{display:block;font-size:.8rem;font-weight:500;color:var(--mut);margin-bottom:6px;}
.field input,.field select,.field textarea{width:100%;padding:9px 12px;border:1px solid var(--brd);border-radius:7px;background:var(--bg);color:var(--txt);font-size:.9rem;font-family:inherit;outline:none;transition:border .15s;}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--pri);}
.field textarea{resize:vertical;min-height:90px;}
.field-row{display:grid;grid-template-columns:1fr 1fr;gap:12px;}

/* TOAST */
#toast{position:fixed;bottom:24px;right:24px;z-index:500;max-width:360px;pointer-events:none;display:none;}
#toast.show{display:block;pointer-events:auto;background:var(--bg-p);border:1px solid var(--brd);border-radius:8px;padding:12px 18px;font-size:.85rem;box-shadow:0 8px 24px rgba(0,0,0,.2);animation:fi .2s ease;}
#toast.show.err{border-color:var(--err);color:var(--err);}
#toast.show.warn{border-color:var(--warn);color:var(--warn);}

/* FOCUS MODE */
body.focus-mode #header,body.focus-mode #sidebar{display:none;}
body.focus-mode #shell{height:100vh;}
body.focus-mode #ed-sidebar,body.focus-mode #split-pane{display:none!important;}
body.focus-mode #ed-center{max-width:740px;margin:0 auto;width:100%;}
body.focus-mode #ed-toolbar{opacity:0;transition:opacity .3s;}
body.focus-mode #ed-toolbar:hover{opacity:1;}
body.focus-mode #main{overflow:hidden;}
body.focus-mode .panel.active{padding:0;display:flex;flex-direction:column;align-items:center;}
body.focus-mode #editor-panel{width:100%;max-width:740px;}
#focus-exit{display:none;position:fixed;top:16px;right:16px;z-index:300;}
body.focus-mode #focus-exit{display:block;}

/* FULL-SCREEN MODAL */
.modal.full{width:100vw!important;max-width:100vw!important;height:100vh!important;max-height:100vh!important;border-radius:0!important;margin:0;}

/* 8-TABS SCROLLABLE */
.modal-tabs{overflow-x:auto;white-space:nowrap;display:flex;gap:4px;margin-bottom:20px;scrollbar-width:none;-ms-overflow-style:none;padding-bottom:2px;}
.modal-tabs::-webkit-scrollbar{display:none;}
.modal-tab{flex-shrink:0;}

/* CHARACTER EXPORT BAR */
.char-export-bar{display:flex;gap:6px;flex-wrap:wrap;}

/* CHAR FIELD GROUPS */
.field-group-title{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.8px;color:var(--pri);margin:20px 0 12px;padding-bottom:6px;border-bottom:1px solid var(--brd);}

/* SYNOPSIS */
#synopsis-text{width:100%;min-height:400px;padding:20px;font-family:'Georgia',serif;font-size:1rem;line-height:1.85;border:1px solid var(--brd);border-radius:var(--r);background:var(--bg);color:var(--txt);resize:vertical;outline:none;transition:border .15s;}
#synopsis-text:focus{border-color:var(--pri);}

/* LIEUX AVATAR */
.lieu-av{width:52px;height:52px;border-radius:12px;background:linear-gradient(135deg,#06b6d4,#6366f1);display:flex;align-items:center;justify-content:center;font-size:1.4rem;margin-bottom:12px;}

/* PROJECT TITLE IN HEADER */
#project-title{font-size:.9rem;font-weight:600;cursor:pointer;padding:4px 12px;border-radius:6px;background:rgba(99,102,241,.12);color:var(--pri);max-width:200px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:background .15s;}
#project-title:hover{background:rgba(99,102,241,.25);}

/* CHAPTER DELETE BUTTON */
.ch-del{display:none;margin-left:4px;flex-shrink:0;cursor:pointer;color:var(--mut);font-size:.75rem;padding:2px 5px;border-radius:4px;transition:background .1s,color .1s;}
.ch-item:hover .ch-del{display:inline;}
.ch-del:hover{background:rgba(239,68,68,.2);color:#ef4444;}

/* PROJECT CARDS */
.proj-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:20px;margin-top:8px;}
.proj-card{background:var(--card);border:1px solid var(--brd);border-radius:var(--r);padding:20px;cursor:pointer;transition:border-color .15s,transform .15s;position:relative;}
.proj-card:hover{border-color:var(--pri);transform:translateY(-2px);}
.proj-card.proj-active{border-color:var(--pri);box-shadow:0 0 0 2px rgba(99,102,241,.2);}
.proj-card-hd{display:flex;align-items:center;gap:10px;margin-bottom:10px;}
.proj-card-hd h3{margin:0;font-size:1rem;font-weight:600;flex:1;}
.proj-meta{font-size:.75rem;color:var(--mut);margin-bottom:12px;}
.proj-stats{display:flex;gap:16px;font-size:.8rem;color:var(--txt);}
.proj-stats span{background:var(--foc);padding:3px 10px;border-radius:20px;}
.badge.pro{background:rgba(99,102,241,.2);color:var(--pri);font-size:.65rem;padding:2px 8px;border-radius:20px;font-weight:700;text-transform:uppercase;}

/* BACKUP PANEL */
.backup-storage-bar{display:flex;align-items:center;gap:8px;font-size:.8rem;background:var(--foc);border:1px solid var(--brd);border-radius:8px;padding:10px 16px;margin-bottom:10px;}
.backup-storage-label{color:var(--mut);}
.backup-storage-val{font-weight:700;color:var(--pri);}
.backup-storage-limit{color:var(--mut);font-style:italic;}
.backup-count{font-size:.78rem;color:var(--mut);margin-bottom:20px;}
.backup-list{display:flex;flex-direction:column;gap:12px;}
.backup-card{background:var(--bg-p);border:1px solid var(--brd);border-radius:var(--r);padding:18px 20px;box-shadow:var(--sh);transition:transform .15s,box-shadow .15s;}
.backup-card:hover{transform:translateY(-2px);box-shadow:0 8px 22px rgba(0,0,0,.12);}
.backup-card-top{display:flex;align-items:center;justify-content:space-between;gap:16px;}
.backup-info{display:flex;flex-direction:column;gap:5px;flex:1;min-width:0;}
.backup-title{font-weight:600;font-size:.95rem;display:flex;align-items:center;gap:8px;}
.backup-date{font-size:.8rem;color:var(--mut);}
.backup-size{font-size:.78rem;color:var(--mut);}
.bk-icon{font-style:normal;}
.backup-actions{display:flex;gap:8px;flex-shrink:0;flex-wrap:wrap;}

/* DIRECTORY STATUS */
.dir-status{display:flex;align-items:center;gap:10px;padding:12px 16px;border-radius:8px;font-size:.85rem;border:1px solid var(--brd);margin-bottom:4px;flex-wrap:wrap;}
.dir-status.ok{background:rgba(16,185,129,.08);border-color:rgba(16,185,129,.3);color:var(--txt);}
.dir-status.none{background:var(--foc);color:var(--mut);}
.dir-name{font-weight:600;color:var(--ok);font-family:'Courier New',monospace;font-size:.82rem;flex:1;word-break:break-all;}

/* =============================================
   ACCESSIBILITE â€” FOCUS VISIBLE
   ============================================= */
*:focus-visible{outline:2px solid var(--pri)!important;outline-offset:2px;}
button:focus-visible,a:focus-visible,.nav:focus-visible{outline:2px solid var(--pri)!important;}

/* =============================================
   RESPONSIVE â€” TABLET 768px
   ============================================= */
@media(max-width:900px){
  #sidebar{width:52px;overflow:hidden;}
  #sidebar .sb-label{display:none;}
  #sidebar .nav{padding:10px 0;justify-content:center;}
  #sidebar .nav .ico{font-size:1.1rem;margin:0;}
  #sidebar .nav span:not(.ico){display:none;}
  .grid{grid-template-columns:1fr 1fr!important;}
  .proj-grid{grid-template-columns:1fr!important;}
  header{padding:0 12px;}
  #project-title{max-width:120px;}
}

/* =============================================
   RESPONSIVE â€” MOBILE 600px
   ============================================= */
@media(max-width:600px){
  #sidebar{width:44px;}
  .grid{grid-template-columns:1fr!important;}
  .modal{width:98vw!important;max-width:98vw!important;margin:0!important;}
  .char-tabs{overflow-x:auto;flex-wrap:nowrap;-webkit-overflow-scrolling:touch;}
  .char-tabs .tab-btn{flex-shrink:0;white-space:nowrap;font-size:.7rem;padding:6px 8px;}
  #ed-center{min-width:0;}
  #split-pane{display:none!important;}
  .proj-card-hd{flex-wrap:wrap;}
}

/* =============================================
   RESPONSIVE â€” TRES PETIT ECRAN 430px
   ============================================= */
@media(max-width:440px){
  #sidebar{position:fixed;z-index:300;height:100vh;top:44px;left:0;width:42px;background:var(--card);}
  header{height:44px;padding:0 8px;font-size:.8rem;}
  .logo{font-size:.9rem;}
  #main{padding:12px 8px!important;}
}

/* TARGET .nav-label FOR RESPONSIVE SIDEBAR COLLAPSE */
@media(max-width:900px){
  #sidebar .nav-label{display:none;}
  #sidebar .sb-label{display:none;}
  #sidebar .nav{justify-content:center;padding:8px 0;}
}

/* =============================================
   RECHERCHE FULL-TEXT
   ============================================= */
#search-overlay{position:fixed;inset:0;z-index:400;display:none;align-items:flex-start;justify-content:center;padding-top:80px;background:rgba(0,0,0,.6);backdrop-filter:blur(4px);}
#search-overlay.open{display:flex;}
.search-box{width:min(680px,95vw);background:var(--bg-p);border-radius:14px;box-shadow:0 25px 60px rgba(0,0,0,.4);display:flex;flex-direction:column;overflow:hidden;max-height:75vh;}
.search-header{display:flex;align-items:center;gap:10px;padding:16px 20px;border-bottom:1px solid var(--brd);}
.search-icon{font-size:1.1rem;color:var(--mut);}
#search-input{flex:1;border:none;outline:none;font-size:1rem;background:transparent;color:var(--txt);font-family:inherit;}
#search-scope{padding:6px 10px;border:1px solid var(--brd);border-radius:6px;background:var(--bg);color:var(--txt);font-size:.82rem;font-family:inherit;}
#search-results{flex:1;overflow-y:auto;padding:12px;}
.sr-count{font-size:.78rem;color:var(--mut);margin-bottom:10px;padding:4px 0;}
.sr-empty{padding:24px;text-align:center;color:var(--mut);font-size:.9rem;}
.sr-item{padding:12px 14px;border-radius:8px;cursor:pointer;transition:background .15s;margin-bottom:4px;border:1px solid transparent;}
.sr-item:hover{background:rgba(99,102,241,.07);border-color:var(--brd);}
.sr-chapter{font-size:.8rem;font-weight:600;color:var(--pri);margin-bottom:4px;}
.sr-excerpt{font-size:.85rem;color:var(--mut);line-height:1.55;}
.sr-excerpt mark{background:rgba(245,158,11,.3);color:var(--txt);border-radius:2px;padding:0 2px;}

/* =============================================
   STATISTIQUES — GRAPHIQUE
   ============================================= */
.stat-chart{display:flex;align-items:flex-end;gap:10px;height:180px;background:var(--bg-p);border:1px solid var(--brd);border-radius:var(--r);padding:20px 16px 8px;box-shadow:var(--sh);margin-top:12px;}
.stat-bar-wrap{display:flex;flex-direction:column;align-items:center;flex:1;height:100%;justify-content:flex-end;}
.stat-bar-val{font-size:.65rem;color:var(--mut);margin-bottom:4px;min-height:14px;text-align:center;}
.stat-bar-col{flex:1;width:100%;display:flex;align-items:flex-end;min-height:4px;}
.stat-bar{width:100%;background:linear-gradient(180deg,var(--pri),rgba(99,102,241,.4));border-radius:4px 4px 0 0;transition:height .4s ease;min-height:0;}
.stat-bar-lbl{font-size:.72rem;color:var(--mut);margin-top:6px;text-align:center;white-space:nowrap;}

/* SESSIONS HISTORY */
.stat-sessions{display:flex;flex-direction:column;gap:2px;}
.stat-session-row{display:grid;grid-template-columns:1fr auto auto 1fr;gap:12px;align-items:center;padding:8px 12px;border-radius:6px;font-size:.82rem;background:var(--foc);}
.stat-session-row:nth-child(even){background:transparent;}
.stat-session-date{color:var(--mut);}
.stat-session-dur{color:var(--mut);white-space:nowrap;}
.stat-session-delta{font-weight:700;white-space:nowrap;}
.stat-session-delta.pos{color:var(--ok);}
.stat-session-delta.neg{color:var(--err);}
.stat-session-ch{color:var(--txt);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}

/* =============================================
   MODE LECTURE
   ============================================= */
#reading-overlay{position:fixed;inset:0;z-index:350;display:none;flex-direction:column;background:var(--bg);overflow:hidden;}
#reading-overlay.open{display:flex;}
.reading-header{display:flex;align-items:center;justify-content:space-between;padding:14px 32px;border-bottom:1px solid var(--brd);background:var(--bg-p);gap:16px;flex-shrink:0;}
.reading-nav{display:flex;align-items:center;gap:10px;}
.reading-title{font-size:1rem;font-weight:600;flex:1;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.reading-progress-wrap{height:3px;background:var(--brd);flex-shrink:0;}
.reading-progress-bar{height:100%;background:linear-gradient(90deg,var(--pri),var(--acc));transition:width .4s ease;}
.reading-body{flex:1;overflow-y:auto;display:flex;justify-content:center;padding:60px 24px;}
.reading-text{max-width:680px;width:100%;font-family:'Georgia',serif;font-size:1.1rem;line-height:2;color:var(--txt);}
.reading-text p{margin-bottom:1.4em;text-indent:2em;}
.reading-text p:first-child{text-indent:0;}

/* =============================================
   DICTIONNAIRE
   ============================================= */
.dict-search-input{flex:1;min-width:200px;padding:8px 12px;border:1px solid var(--brd);border-radius:7px;background:var(--bg);color:var(--txt);font-size:.9rem;font-family:inherit;outline:none;transition:border .15s;}
.dict-search-input:focus{border-color:var(--pri);}
.dict-card{transition:transform .2s,box-shadow .2s;cursor:pointer;}
.dict-card:hover{transform:translateY(-2px);box-shadow:0 8px 24px rgba(0,0,0,.15);}

/* =============================================
   SAVE-DOT — ÉTATS DYNAMIQUES
   ============================================= */
.save-dot.err{background:var(--err);box-shadow:0 0 6px var(--err);}
.save-dot.saving{background:var(--warn);animation:pulse-dot 1s ease-in-out infinite;}
@keyframes pulse-dot{0%,100%{opacity:1;transform:scale(1);}50%{opacity:.5;transform:scale(.7);}}

/* Phase 2 fixes */
textarea:disabled{opacity:.35;cursor:not-allowed;}
.modal-tabs{overflow-x:auto;white-space:nowrap;scrollbar-width:thin;}
.modal-tab{white-space:nowrap;font-size:.78rem;padding:7px 10px;}

/* =============================================
   PHASE 4 FIXES â€” RESPONSIVE R001/R004
   ============================================= */
/* R001 â€” Header overflow on small screens */
@media(max-width:900px){
  #save-label{display:none;}
  #header-title{max-width:110px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
}
@media(max-width:600px){
  #autosave{display:none;}
  #header-title{max-width:80px;}
}

/* R004 â€” Editor toolbar wrap on small screens */
#ed-toolbar{flex-wrap:wrap;}
@media(max-width:600px){
  #ed-toolbar{gap:4px;padding:6px 8px;}
  #ed-toolbar .btn{font-size:.75rem;padding:4px 7px;}
}

/* R003 â€” Kanban columns horizontal scroll on mobile */
@media(max-width:600px){
  #kanban-board{overflow-x:auto;-webkit-overflow-scrolling:touch;}
  .k-col{min-width:220px;}
}

/* =============================================
   v1.3 â€” MOBILE-FIRST RESPONSIVE
   ============================================= */

/* â”€â”€ Bottom Navigation Bar (mobile < 600px) â”€â”€ */
#bottom-nav {
  display: none;
  position: fixed;
  bottom: 0; left: 0; right: 0;
  height: 62px;
  background: var(--card);
  border-top: 1px solid var(--brd);
  z-index: 200;
  padding: 0;
  gap: 0;
  backdrop-filter: blur(12px);
}
.bottom-nav-btn {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 2px;
  border: none;
  background: none;
  color: var(--mut);
  cursor: pointer;
  padding: 6px 4px;
  transition: color .15s, background .15s;
  min-height: 44px;
  border-radius: 0;
}
.bottom-nav-btn.active { color: var(--pri); }
.bottom-nav-btn:active { background: rgba(99,102,241,.08); }
.bn-ico   { font-size: 1.2rem; line-height: 1; }
.bn-label { font-size: .62rem; font-weight: 500; letter-spacing: .01em; }

/* â”€â”€ Hamburger (tablette 600-900px) â”€â”€ */
#hamburger-btn { display: none; }

/* â”€â”€ Overlay sidebar mobile â”€â”€ */
#sidebar-overlay {
  display: block;
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,.45);
  z-index: 149;
  backdrop-filter: blur(2px);
}

/* â”€â”€ Sidebar mobile rÃ©tractable â”€â”€ */
@media(max-width:899px) {
  #sidebar {
    position: fixed;
    top: 0; left: 0; bottom: 0;
    z-index: 150;
    transform: translateX(-100%);
    transition: transform .25s cubic-bezier(.4,0,.2,1);
    width: 240px;
    box-shadow: 4px 0 24px rgba(0,0,0,.3);
  }
  #sidebar.sidebar-open { transform: translateX(0); }
  #hamburger-btn { display: flex !important; }
  #shell { grid-template-columns: 1fr; }
}

/* â”€â”€ Body padding pour bottom nav â”€â”€ */
@media(max-width:599px) {
  body.is-mobile #main  { padding-bottom: 70px; }
  body.is-mobile #shell { grid-template-columns: 1fr; }

  /* Header compact */
  #header { padding: 0 10px; gap: 6px; height: 52px; }
  .logo    { font-size: .85rem; }
  #header .btn.sml { padding: 5px 8px; font-size: .78rem; min-height: 36px; }

  /* Ã‰diteur plein Ã©cran */
  #panel-editor { padding: 0 !important; }
  #editor-panel { grid-template-columns: 1fr; }
  #ed-sidebar   { display: none; }
  #split-pane   { display: none !important; }
  #ed-toolbar   { padding: 6px 8px; gap: 4px; flex-wrap: wrap; }
  #ed-toolbar .btn { min-height: 36px; padding: 4px 8px; font-size: .78rem; }
  #ed-wrap      { padding: 12px; }
  #editor-area  { font-size: 1rem; min-height: calc(100vh - 160px); }

  /* Modales full-width */
  .modal {
    width: 100% !important;
    max-width: 100% !important;
    max-height: 90vh !important;
    border-radius: 16px 16px 0 0 !important;
    position: fixed !important;
    bottom: 0 !important;
    left: 0 !important;
    top: auto !important;
    transform: none !important;
    margin: 0 !important;
  }
  #modal-overlay { align-items: flex-end; }

  /* Cards en colonne */
  .dash-grid,
  .stats-grid { grid-template-columns: 1fr !important; }

  /* Tous les boutons tactiles >= 44px */
  .btn, button { min-height: 40px; }

  /* Lecture */
  .reading-body { padding: 20px 16px 80px; }
  .reading-text { font-size: 1rem; }

  /* Recherche */
  .search-box { border-radius: 12px 12px 0 0; width: 100%; max-width: 100%; }
}

/* =============================================
   v1.3 â€” AUTH UI
   ============================================= */

/* Bouton auth dans le header */
#auth-btn {
  display: flex;
  align-items: center;
  gap: 6px;
  white-space: nowrap;
}

/* Avatar initiales */
.auth-avatar {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  border-radius: 50%;
  background: var(--pri);
  color: #fff;
  font-size: .7rem;
  font-weight: 700;
  flex-shrink: 0;
}
.auth-avatar.lg {
  width: 52px;
  height: 52px;
  font-size: 1.2rem;
  margin: 0 auto;
  display: flex;
}

/* Onglets login/register */
.auth-tabs {
  display: flex;
  gap: 4px;
  margin-bottom: 20px;
  background: var(--bg);
  border-radius: 8px;
  padding: 4px;
}
.auth-tab {
  flex: 1;
  padding: 8px;
  border: none;
  border-radius: 6px;
  background: none;
  color: var(--mut);
  cursor: pointer;
  font-size: .88rem;
  font-weight: 500;
  transition: background .15s, color .15s;
}
.auth-tab.active {
  background: var(--card);
  color: var(--txt);
  box-shadow: 0 1px 4px rgba(0,0,0,.15);
}

/* Formulaire auth */
.auth-form label {
  display: block;
  font-size: .82rem;
  color: var(--mut);
  margin-bottom: 4px;
  margin-top: 12px;
}
.auth-form input {
  width: 100%;
  padding: 9px 12px;
  border: 1px solid var(--brd);
  border-radius: 7px;
  background: var(--bg);
  color: var(--txt);
  font-size: .9rem;
  font-family: inherit;
  box-sizing: border-box;
  outline: none;
  transition: border .15s;
}
.auth-form input:focus { border-color: var(--pri); }
.auth-err {
  color: var(--err, #ef4444);
  font-size: .82rem;
  margin: 6px 0 0;
  min-height: 18px;
}

/* Badge stockage dans liste projets */
.badge-local { font-size: .7rem; color: var(--mut); }
.badge-cloud { font-size: .7rem; color: var(--pri); }
