
:root{
  --bg:#0c0e14;--bg2:#111520;--bg3:#171c28;--bg4:#1d2335;
  --border:#252b3d;--border2:#2e3650;
  --accent:#e8640a;--accent2:#c45208;--accentl:#e8640a22;
  --blue:#2563eb;--bluel:#2563eb22;
  --green:#10b981;--red:#ef4444;--purple:#8b5cf6;
  --text:#e2e8f0;--text2:#94a3b8;--text3:#4b5675;
  --mono:'IBM Plex Mono',monospace;--sans:'Outfit',sans-serif;
  --th-h:#0f2a5e;--th-a:#e8640a;--th-s:#f0f4ff;
}
*{box-sizing:border-box;margin:0;padding:0;}
body{background:var(--bg);color:var(--text);font-family:var(--sans);min-height:100vh;}
.topbar{background:var(--bg2);border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 20px;height:50px;position:sticky;top:0;z-index:100;gap:14px;}
.tlogo{font-family:var(--mono);font-size:13px;font-weight:700;color:var(--accent);letter-spacing:2px;}
.tsep{width:1px;height:22px;background:var(--border);}
.tinfo{font-size:12px;color:var(--text2);}
.tinfo strong{color:var(--text);}
.tind{background:var(--accent);color:#fff;font-family:var(--mono);font-size:11px;font-weight:700;padding:3px 8px;border-radius:4px;}
.tbrou{background:#f59e0b;color:#000;font-size:10px;font-weight:700;padding:2px 7px;border-radius:4px;letter-spacing:1px;display:none;}
.tright{margin-left:auto;display:flex;gap:8px;align-items:center;}
.nav{background:var(--bg2);border-bottom:1px solid var(--border);display:flex;overflow-x:auto;padding:0 16px;}
.nav::-webkit-scrollbar{display:none;}
.nb{padding:13px 18px;font-size:13px;font-weight:500;color:var(--text3);border:none;background:none;cursor:pointer;border-bottom:2px solid transparent;white-space:nowrap;transition:all .2s;font-family:var(--sans);}
.nb:hover{color:var(--text2);}
.nb.active{color:var(--accent);border-bottom-color:var(--accent);}
.tab{display:none;}.tab.active{display:block;}
.page{padding:24px;max-width:1500px;margin:0 auto;}
.stitle{font-size:11px;font-weight:700;color:var(--text3);text-transform:uppercase;letter-spacing:2px;margin-bottom:12px;}
.card{background:var(--bg2);border:1px solid var(--border);border-radius:10px;padding:18px;margin-bottom:14px;}
.ctitle{font-size:11px;font-weight:700;color:var(--text2);text-transform:uppercase;letter-spacing:1.5px;margin-bottom:14px;}
.btn{padding:8px 15px;border-radius:6px;font-family:var(--sans);font-size:13px;font-weight:600;border:none;cursor:pointer;transition:all .2s;display:inline-flex;align-items:center;gap:6px;}
.btn-p{background:var(--accent);color:#fff;}.btn-p:hover{background:var(--accent2);}
.btn-g{background:transparent;color:var(--text2);border:1px solid var(--border2);}.btn-g:hover{background:var(--bg3);color:var(--text);}
.btn-d{background:transparent;color:var(--red);border:1px solid #ef444430;}.btn-d:hover{background:#ef444415;}
.btn-sm{padding:5px 10px;font-size:12px;}.btn-xs{padding:3px 7px;font-size:11px;}
.inp{background:var(--bg3);border:1px solid var(--border2);border-radius:6px;color:var(--text);padding:7px 11px;font-family:var(--sans);font-size:13px;outline:none;transition:border .2s;width:100%;}
.inp:focus{border-color:var(--accent);}select.inp{cursor:pointer;}
.badge{display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:700;}
.bg2c{background:#10b98120;color:var(--green);}.bo{background:#f59e0b20;color:#f59e0b;}.br{background:#ef444420;color:var(--red);}.bb{background:#2563eb20;color:var(--blue);}
.statgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;margin-bottom:16px;}
.stat{background:var(--bg3);border:1px solid var(--border);border-radius:8px;padding:12px;}
.stat-l{font-size:10px;color:var(--text3);text-transform:uppercase;letter-spacing:1px;margin-bottom:4px;}
.stat-v{font-family:var(--mono);font-size:19px;font-weight:700;}
.stat-u{font-size:10px;color:var(--text2);font-family:var(--sans);}
.stat.sa{border-color:#e8640a40;}.stat.sb{border-color:#2563eb40;}.stat.sc{border-color:#10b98140;}
.dtable{width:100%;border-collapse:collapse;font-size:12px;}
.dtable th{background:var(--bg3);color:var(--text3);font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:1px;padding:9px 10px;text-align:left;border-bottom:1px solid var(--border);white-space:nowrap;}
.dtable td{padding:9px 10px;border-bottom:1px solid var(--border);vertical-align:middle;}
.dtable tr:hover td{background:var(--bg3);}.dtable tr.sel td{background:#e8640a12;}
.fc{display:flex;align-items:center;}.fb{display:flex;justify-content:space-between;align-items:center;}
.g8{gap:8px;}.g12{gap:12px;}.g16{gap:16px;}
.g2{display:grid;grid-template-columns:1fr 1fr;gap:14px;}
.mt4{margin-top:4px;}.mt8{margin-top:8px;}.mt12{margin-top:12px;}.mt16{margin-top:16px;}
.mb4{margin-bottom:4px;}.mb8{margin-bottom:8px;}.mb12{margin-bottom:12px;}
.w100{width:100%;}.tc{text-align:center;}
.txs{font-size:11px;}.tsm{font-size:12px;}.tm{font-family:var(--mono);}
.td2{color:var(--text3);}.ta{color:var(--accent);}.tg{color:var(--green);}
.divider{height:1px;background:var(--border);margin:16px 0;}
.chips{display:flex;flex-wrap:wrap;gap:6px;}
.chip{padding:4px 11px;border-radius:20px;font-size:12px;font-weight:600;border:1px solid var(--border2);background:var(--bg3);color:var(--text3);cursor:pointer;transition:all .2s;}
.chip.on{background:var(--accentl);border-color:var(--accent);color:var(--accent);font-weight:700;}
.chip:not(.on){opacity:.45;}
/* TREE */
.tnode{display:flex;align-items:center;gap:7px;padding:6px 9px;border-radius:6px;cursor:pointer;user-select:none;}
.tnode:hover{background:var(--bg3);}
.nicon{width:20px;height:20px;border-radius:4px;display:flex;align-items:center;justify-content:center;font-size:10px;flex-shrink:0;}
.ntgbt{background:#2563eb30;color:var(--blue);}.ntd{background:#10b98130;color:var(--green);}.ncoff{background:#f59e0b30;color:#f59e0b;}.ntgs{background:#8b5cf630;color:var(--purple);}
.ntog{width:14px;height:14px;display:flex;align-items:center;justify-content:center;color:var(--text3);font-size:9px;flex-shrink:0;}
.nlbl{font-size:13px;font-weight:500;flex:1;}
.nacts{display:none;gap:3px;}.tnode:hover .nacts{display:flex;}
.nab{width:20px;height:20px;border-radius:3px;border:none;background:var(--bg4);color:var(--text3);cursor:pointer;font-size:10px;display:flex;align-items:center;justify-content:center;}
.nab:hover{background:var(--border2);color:var(--text);}
.tchildren{margin-left:22px;border-left:1px solid var(--border);padding-left:6px;}
/* COL TOGGLE DROPDOWN */
.col-toggle-wrap{position:relative;margin-left:auto;flex-shrink:0;}
.col-toggle-btn{padding:5px 11px;border-radius:6px;font-size:12px;font-weight:700;border:2px solid var(--accent);background:var(--accentl);color:var(--accent);cursor:pointer;white-space:nowrap;font-family:var(--sans);letter-spacing:.3px;}
.col-toggle-btn:hover{background:var(--accent);color:#fff;}
.col-dropdown{display:none;position:absolute;right:0;top:calc(100% + 4px);background:var(--bg2);border:1px solid var(--border2);border-radius:8px;padding:8px;z-index:200;min-width:180px;box-shadow:0 8px 24px #00000060;}
.col-dropdown.open{display:block;}
.col-dropdown label{display:flex;align-items:center;gap:8px;padding:5px 7px;border-radius:5px;cursor:pointer;font-size:12px;color:var(--text2);white-space:nowrap;}
.col-dropdown label:hover{background:var(--bg3);color:var(--text);}
.col-dropdown input[type=checkbox]{accent-color:var(--accent);cursor:pointer;}
/* SUBTABS */
.stabs{display:flex;gap:3px;padding:10px 0 0;border-bottom:1px solid var(--border);overflow-x:auto;margin-bottom:16px;}
.stabs::-webkit-scrollbar{display:none;}
.stab{padding:6px 13px;border-radius:6px 6px 0 0;font-size:12px;font-weight:600;border:1px solid var(--border);border-bottom:none;background:var(--bg3);color:var(--text3);cursor:pointer;white-space:nowrap;font-family:var(--sans);display:flex;align-items:center;gap:5px;}
.stab.active{background:var(--bg2);color:var(--accent);border-color:var(--accent);}
.stab .rx{font-size:10px;color:var(--text3);display:none;cursor:pointer;}.stab:hover .rx,.stab.active .rx{display:inline;}
.stabadd{padding:6px 11px;border-radius:6px 6px 0 0;font-size:16px;color:var(--text3);cursor:pointer;background:transparent;border:1px dashed var(--border);border-bottom:none;}
.stabadd:hover{color:var(--accent);border-color:var(--accent);}
.stabcont{display:none;}.stabcont.active{display:block;}
/* FAM BLOCK */
.famblk{margin-bottom:14px;border:1px solid var(--border);border-radius:8px;overflow:hidden;}
.famhdr{display:flex;align-items:center;gap:9px;padding:8px 12px;background:var(--bg3);cursor:pointer;user-select:none;}
.famdot{width:9px;height:9px;border-radius:50%;flex-shrink:0;}
.famnm{font-size:13px;font-weight:700;flex:1;}
.famtot{font-family:var(--mono);font-size:11px;color:var(--text2);}
/* SAISIE ROW */
.srow{display:grid;border-bottom:1px solid var(--border);}
.srow:last-child{border-bottom:none;}.srow:hover{background:var(--bg3);}
.srow.dragging{opacity:.3;}.srow.drag-over{border-top:2px solid var(--accent);}
.src{padding:5px 7px;display:flex;align-items:center;border-right:1px solid var(--border);font-size:12px;}
.src:last-child{border-right:none;}
.src input,.src select{background:transparent;border:none;color:var(--text);font-family:var(--sans);font-size:12px;width:100%;outline:none;}
.src input:focus,.src select:focus{background:var(--bg4);border-radius:3px;padding:1px 3px;}
.src.calc{color:var(--green);font-family:var(--mono);font-size:11px;}
.src.calcx{color:var(--text3);font-family:var(--mono);font-size:11px;}
.shdr{background:var(--bg4);}
.shdr .src{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.8px;color:var(--text3);}
.fam-subtot{display:grid;background:var(--bg4);border-top:1px solid var(--border2);}
.fst-cell{padding:5px 7px;font-size:11px;font-family:var(--mono);color:var(--accent);font-weight:700;border-right:1px solid var(--border);}
.fst-cell:last-child{border-right:none;}
.addrow{padding:7px 12px;font-size:12px;color:var(--text3);cursor:pointer;text-align:center;background:var(--bg4);transition:all .2s;}
.addrow:hover{color:var(--accent);background:var(--bg3);}
/* MODE TABS */
.mtabs{display:flex;gap:4px;margin-bottom:14px;}
.mtab{padding:6px 13px;border-radius:6px;font-size:12px;font-weight:600;border:1px solid var(--border);background:var(--bg3);color:var(--text3);cursor:pointer;transition:all .15s;font-family:var(--sans);}
.mtab.active{background:var(--accent);color:#fff;border-color:var(--accent);}
/* DROPZONE */
.dz{border:2px dashed var(--border2);border-radius:10px;padding:28px;text-align:center;cursor:pointer;transition:all .2s;background:var(--bg3);}
.dz:hover,.dz.over{border-color:var(--accent);background:var(--accentl);}
.dzico{font-size:26px;margin-bottom:8px;}.dztxt{font-size:13px;color:var(--text2);}.dzsub{font-size:11px;color:var(--text3);margin-top:5px;}
/* ALERT */
.alert{padding:9px 13px;border-radius:6px;font-size:13px;display:flex;align-items:center;gap:9px;margin-bottom:10px;}
.aw{background:#f59e0b15;border:1px solid #f59e0b40;color:#f59e0b;}
.ai{background:var(--bluel);border:1px solid #2563eb40;color:var(--blue);}
.aok{background:#10b98115;border:1px solid #10b98140;color:var(--green);}
/* MODAL */
.moverlay{position:fixed;inset:0;background:#00000085;z-index:200;display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .2s;}
.moverlay.open{opacity:1;pointer-events:all;}
.modal{background:var(--bg2);border:1px solid var(--border2);border-radius:12px;padding:26px;width:460px;max-width:95vw;}
.mtit{font-size:16px;font-weight:700;margin-bottom:14px;}
.macts{display:flex;gap:8px;justify-content:flex-end;margin-top:16px;}
/* PARAMS TABLE */
.ptable{width:100%;border-collapse:collapse;font-size:13px;}
.ptable td{padding:8px 11px;border-bottom:1px solid var(--border);vertical-align:middle;}
.ptable td:first-child{color:var(--text2);font-weight:500;width:45%;}
.ptable td:nth-child(2){font-family:var(--mono);color:var(--accent);width:20%;cursor:pointer;}
.ptable td:nth-child(3){color:var(--text3);font-size:11px;}
.pedit{background:var(--bg3);border:1px solid var(--accent);border-radius:4px;color:var(--text);padding:3px 7px;font-family:var(--mono);font-size:13px;outline:none;width:90px;}
/* HIST */
.hrow{display:flex;gap:10px;padding:11px;border-bottom:1px solid var(--border);align-items:flex-start;}
.hind{font-family:var(--mono);font-size:20px;font-weight:700;color:var(--accent);width:28px;flex-shrink:0;}
.hdate{font-size:11px;color:var(--text3);margin-bottom:2px;}.hcmt{font-size:12px;color:var(--text);}
/* THEMES */
.themes{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;}
.thcard{border:2px solid var(--border);border-radius:8px;padding:12px;cursor:pointer;transition:all .2s;text-align:center;}
.thcard:hover{border-color:var(--border2);}.thcard.active{border-color:var(--accent);}
.thswatch{height:26px;border-radius:5px;margin-bottom:7px;display:flex;overflow:hidden;}
.thswatch div{flex:1;}
.thnm{font-size:12px;font-weight:600;}.thdesc{font-size:10px;color:var(--text3);margin-top:2px;}
/* PREVIEW */
.prevwrap{border:1px solid var(--border);border-radius:8px;overflow:hidden;margin-top:14px;}
.prevbody{background:#fff;color:#1e293b;padding:32px;font-size:11px;font-family:'Outfit',sans-serif;}
.prev-hdr{display:flex;justify-content:space-between;align-items:flex-start;padding-bottom:12px;margin-bottom:14px;}
.prev-logo{font-family:'IBM Plex Mono',monospace;font-size:18px;font-weight:700;}
.prev-sub{font-size:11px;color:#64748b;margin-top:2px;}
.prev-results{display:grid;grid-template-columns:repeat(6,1fr);border:1px solid #e2e8f0;border-radius:6px;overflow:hidden;margin-bottom:14px;}
.prc{padding:10px 8px;text-align:center;border-right:1px solid #e2e8f0;}
.prc:last-child{border-right:none;}
.prc-l{font-size:9px;text-transform:uppercase;letter-spacing:1px;color:#64748b;margin-bottom:4px;}
.prc-v{font-family:'IBM Plex Mono',monospace;font-size:14px;font-weight:700;}
.prc.main .prc-l{color:#93c5fd;}.prc.main .prc-v{color:#fff;}
.ptb{width:100%;border-collapse:collapse;font-size:10px;}
.ptb th{padding:5px 7px;text-align:left;font-weight:700;font-size:9px;letter-spacing:.5px;}
.ptb td{padding:4px 7px;border-bottom:1px solid #f1f5f9;}
.ptb tr.fhdr td{font-weight:700;font-size:10px;}
.ptb tr.ftot td{font-weight:700;font-style:italic;}
.ptb tr.tdtot td{font-weight:700;border-top:2px solid;}
.ptb tr:nth-child(even) td{background:var(--th-s,#f0f4ff);}
.prev-foot{margin-top:14px;padding-top:10px;border-top:1px solid #e2e8f0;font-size:9px;color:#94a3b8;display:flex;justify-content:space-between;}
/* INTERP */
.interp-table{width:100%;border-collapse:collapse;font-size:12px;}
.interp-table th{background:var(--bg4);color:var(--text3);font-size:10px;font-weight:700;text-transform:uppercase;padding:7px 9px;border-bottom:1px solid var(--border);white-space:nowrap;}
.interp-table td{padding:6px 9px;border-bottom:1px solid var(--border);}
.interp-table tr:hover td{background:var(--bg3);}
.fam-sel{background:var(--bg3);border:1px solid var(--border2);border-radius:4px;color:var(--text);padding:3px 7px;font-size:11px;outline:none;cursor:pointer;width:100%;}
/* GROUPE SELECT */
.grp-bar{background:var(--bg4);border:1px solid var(--border2);border-radius:8px;padding:10px 14px;margin-bottom:12px;display:none;}
.grp-bar.show{display:flex;align-items:center;gap:12px;flex-wrap:wrap;}
::-webkit-scrollbar{width:5px;height:5px;}
::-webkit-scrollbar-track{background:var(--bg);}
::-webkit-scrollbar-thumb{background:var(--border2);border-radius:3px;}

/* ═══════ SYNC TOAST ANIMATION ═══════ */
@keyframes fadeUp{from{opacity:0;transform:translateY(20px);}to{opacity:1;transform:translateY(0);}}
#sync-toast{animation:fadeUp .3s ease;}
