:root {
  color-scheme: light;
  --bg:#f5f4f0;--surface:#fff;--surface2:#f9f8f5;--border:#e2e0d8;--border2:#ccc9be;
  --text:#1a1916;--text2:#5a5852;--text3:#8a877e;
  --accent:#1a5c3a;--accent2:#2d8a5a;--accent-bg:#e8f5ee;
  --warn:#8a4a00;--warn-bg:#fef3e2;
  --danger:#8a1a1a;--danger-bg:#fde8e8;
  --info:#1a3a8a;--info-bg:#e8eefe;
  --ret:#6b3fa0;--ret-bg:#f0eafa;
  --partial:#c47a00;
  --row-open-bg:#fff8f5;--row-open-hover:#ffeedc;--row-open-border:#d85a30;
  --saldo-bg:#fffbf0;--saldo-border:#e8d88a;--saldo-lbl-bg:#fff8e0;--saldo-input-border:#c8a800;
  --saldo-hdr-bg:#fff3cd;--key-row-bg:#e8f5e9;
  --neutral:#999;--neutral2:#888;--tribut:#1a5276;--warn-hover:#6a3800;
  --ret-border:#c9a8e8;--chip-border:#c8e6d4;--danger-border:#e8a8a8;
  --font:'Trebuchet MS',Trebuchet,Arial,sans-serif;--mono:'Courier New',monospace;
}
html[data-theme="dark"] {
  color-scheme: dark;
  --bg:#15181c;--surface:#1d2127;--surface2:#262b32;--border:#333a44;--border2:#454c58;
  --text:#e7e5e0;--text2:#a8aeb6;--text3:#737a83;
  --accent:#34b079;--accent2:#46d695;--accent-bg:#163428;
  --warn:#e0a23a;--warn-bg:#3a2c12;
  --danger:#e2655d;--danger-bg:#3a1a18;
  --info:#5fa0f5;--info-bg:#172943;
  --ret:#b78cf2;--ret-bg:#2b2040;
  --partial:#dd9b32;
  --row-open-bg:#2c2220;--row-open-hover:#3a2a23;--row-open-border:#e07050;
  --saldo-bg:#2a2614;--saldo-border:#5c4f22;--saldo-lbl-bg:#332b14;--saldo-input-border:#8a7320;
  --saldo-hdr-bg:#352c12;--key-row-bg:#162a1d;
  --neutral:#5a6168;--neutral2:#4a5158;--tribut:#5aa9d8;--warn-hover:#b9842c;
  --ret-border:#5c3f7d;--chip-border:#2f5a44;--danger-border:#5c3230;
}
*{box-sizing:border-box;margin:0;padding:0;}
body{font-family:var(--font);background:var(--bg);color:var(--text);min-height:100vh;font-size:14px;line-height:1.6;}
header{background:var(--accent);color:white;padding:0 2rem;display:flex;align-items:center;justify-content:space-between;height:56px;border-bottom:3px solid #0f3d27;}
header h1{font-size:15px;font-weight:normal;letter-spacing:.08em;text-transform:uppercase;}
header .ver{font-size:11px;opacity:.6;letter-spacing:.04em;}
.theme-toggle-btn{height:28px;padding:0 12px;border:1px solid rgba(255,255,255,.3);border-radius:14px;background:rgba(255,255,255,.1);color:#fff;font-size:11px;font-family:var(--font);cursor:pointer;white-space:nowrap;transition:background .15s;}
.theme-toggle-btn:hover{background:rgba(255,255,255,.22);}
.sys-sel-bar{background:#0f3d27;border-bottom:2px solid #07261a;padding:7px 2rem;display:flex;align-items:center;gap:10px;flex-shrink:0;}
.sys-sel-bar label{font-size:11px;color:rgba(255,255,255,.6);letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;}
.sys-btn{padding:5px 14px;border:1px solid rgba(255,255,255,.25);border-radius:4px;background:transparent;color:rgba(255,255,255,.6);font-size:11px;font-family:var(--font);cursor:pointer;letter-spacing:.04em;transition:all .15s;white-space:nowrap;}
.sys-btn:hover{border-color:rgba(255,255,255,.5);color:#fff;}
.sys-btn.active{background:rgba(255,255,255,.15);color:#fff;border-color:rgba(255,255,255,.6);font-weight:bold;}
.sys-badge{font-size:10px;padding:2px 8px;border-radius:3px;background:rgba(255,255,255,.1);color:rgba(255,255,255,.5);font-family:var(--mono);margin-left:8px;}

/* ── EMPRESA (multiempresa) ──────────────────────────────────────────── */
.empresa-bar{background:#143d2c;border-bottom:2px solid #07261a;padding:7px 2rem;display:flex;align-items:center;gap:10px;flex-shrink:0;}
.empresa-bar label{font-size:11px;color:rgba(255,255,255,.6);letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;}
.empresa-bar select{width:auto;min-width:220px;max-width:340px;font-size:12px;padding:5px 8px;background:rgba(255,255,255,.08);color:#fff;border:1px solid rgba(255,255,255,.25);}
.empresa-bar select option{color:var(--text);background:var(--surface);}
.empresa-bar select:focus{border-color:rgba(255,255,255,.6);box-shadow:none;}
#empresa-info{margin-left:auto;font-size:11px;color:rgba(255,255,255,.55);white-space:nowrap;}
.empresa-display{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:bold;background:rgba(255,255,255,.12);border-radius:4px;padding:3px 10px;margin-left:12px;letter-spacing:.02em;}
.empresa-display:empty{display:none;}

.periodo-chip{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-family:var(--mono);background:var(--accent-bg);color:var(--accent);border:1px solid var(--chip-border);border-radius:3px;padding:2px 6px 2px 8px;}
.periodo-chip .rm{cursor:pointer;color:var(--danger);font-weight:bold;padding:0 2px;}
.periodo-chip .rm:hover{text-decoration:underline;}

.layout{display:flex;height:calc(100vh - 56px);overflow:hidden;}

.sidebar{width:272px;min-width:272px;background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;overflow-y:auto;}
.ss{padding:.9rem;border-bottom:1px solid var(--border);}
.slbl{font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--text3);margin-bottom:.5rem;}
.upload-zone{border:1.5px dashed var(--border2);border-radius:6px;padding:1.1rem;text-align:center;cursor:pointer;background:var(--surface2);transition:border-color .2s,background .2s;}
.upload-zone:hover,.upload-zone.drag{border-color:var(--accent2);background:var(--accent-bg);}
.upload-zone .icon{font-size:20px;margin-bottom:5px;display:block;}
.upload-zone p{font-size:12px;color:var(--text2);}
.upload-zone strong{color:var(--accent);}
#file-input{display:none;}
select,input[type=text],input[type=date],input[type=number]{width:100%;padding:5px 7px;border:1px solid var(--border2);border-radius:4px;background:var(--surface);color:var(--text);font-family:var(--font);font-size:12px;outline:none;}
select:focus,input:focus{border-color:var(--accent2);box-shadow:0 0 0 2px rgba(45,138,90,.15);}
.btn{display:block;width:100%;padding:7px 12px;background:var(--accent);color:white;border:none;border-radius:4px;font-family:var(--font);font-size:12px;letter-spacing:.05em;cursor:pointer;text-transform:uppercase;transition:background .15s;margin-top:5px;}
.btn:hover{background:#0f3d27;}
.btn-o{background:transparent;border:1px solid var(--accent);color:var(--accent);}
.btn-o:hover{background:var(--accent-bg);}
.acc-list{flex:1;overflow-y:auto;padding:.4rem 0;}
.acc-item{padding:7px .9rem;cursor:pointer;border-left:3px solid transparent;transition:background .1s;font-size:12px;}
.acc-item:hover{background:var(--surface2);}
.acc-item.active{border-left-color:var(--accent);background:var(--accent-bg);}
.acc-code{font-family:var(--mono);font-size:10px;color:var(--text3);display:block;}
.acc-name{color:var(--text);display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.acc-bdg{display:inline-block;font-size:10px;padding:1px 5px;border-radius:3px;margin-top:2px;}
.bdg-open{background:var(--danger-bg);color:var(--danger);}
.bdg-ok{background:var(--accent-bg);color:var(--accent);}

.main{flex:1;display:flex;flex-direction:column;overflow:hidden;}

/* TOP FILTER BAR */
.tfbar{background:var(--surface);border-bottom:2px solid var(--accent);padding:9px 1.4rem;display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap;flex-shrink:0;}
.tfg{display:flex;flex-direction:column;gap:3px;}
.tfg label{font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--text3);}
.tfg select,.tfg input{height:33px;font-size:12px;padding:0 7px;}
.tf-conta{min-width:250px;max-width:320px;}
.tf-tipo{min-width:185px;}
.tf-date{width:132px;}
.tf-filial{width:85px;}

/* CONTA CONTÁBIL — dropdown multi-seleção (checkboxes) */
.tf-conta-wrap{position:relative;}
.tf-conta-btn{min-width:250px;max-width:320px;height:33px;font-size:12px;padding:0 10px;border:1px solid var(--border2);border-radius:4px;background:var(--surface);color:var(--text);font-family:var(--font);cursor:pointer;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.tf-conta-btn:hover{border-color:var(--accent2);}
.tf-conta-dropdown{display:none;position:absolute;top:100%;left:0;z-index:60;background:var(--surface);border:1px solid var(--border2);border-radius:6px;box-shadow:0 8px 24px rgba(0,0,0,.18);padding:8px;width:340px;margin-top:4px;}
.tf-conta-dropdown.open{display:block;}
.tf-conta-busca{width:100%;padding:5px 8px;border:1px solid var(--border2);border-radius:4px;font-size:12px;font-family:var(--font);margin-bottom:6px;box-sizing:border-box;}
.tf-conta-actions{display:flex;gap:6px;margin-bottom:6px;}
.tf-conta-actions button{flex:1;padding:4px 6px;font-size:11px;border:1px solid var(--border2);border-radius:4px;background:var(--surface2);cursor:pointer;font-family:var(--font);}
.tf-conta-actions button:hover{background:var(--border);}
.tf-conta-list{max-height:230px;overflow-y:auto;border-top:1px solid var(--border);padding-top:4px;}
.tf-conta-item{display:flex;align-items:center;gap:6px;padding:3px 4px;cursor:pointer;font-size:11px;border-radius:3px;}
.tf-conta-item:hover{background:var(--surface2);}
.tf-conta-item .cod{font-family:var(--mono);color:var(--text3);font-size:10px;white-space:nowrap;}
.tf-conta-item .desc{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.tf-sep{font-size:12px;color:var(--text3);padding-bottom:7px;}
.tf-btns{display:flex;gap:6px;align-items:flex-end;margin-left:auto;}
.tfbtn{height:33px;padding:0 14px;border:none;border-radius:4px;font-size:12px;font-family:var(--font);cursor:pointer;white-space:nowrap;transition:background .15s;}
.tfbtn.apply{background:var(--accent);color:white;}
.tfbtn.apply:hover{background:#0f3d27;}
.tfbtn.clear{background:var(--surface2);color:var(--text2);border:1px solid var(--border2);}
.tfbtn.clear:hover{background:var(--border);}

/* SALDO ABERTURA */
.saldo-bar{background:var(--saldo-bg);border-bottom:1px solid var(--saldo-border);padding:7px 1.4rem;display:flex;align-items:center;gap:14px;flex-wrap:wrap;flex-shrink:0;}
.saldo-bar label{font-size:11px;color:var(--warn);white-space:nowrap;font-weight:bold;}
.saldo-bar input[type=number]{width:155px;height:29px;font-size:12px;padding:0 8px;border:1px solid var(--saldo-input-border);border-radius:4px;font-family:var(--mono);background:var(--surface);color:var(--text);}
.saldo-bar .sbtn{height:29px;padding:0 12px;background:var(--warn);color:white;border:none;border-radius:4px;font-size:11px;font-family:var(--font);cursor:pointer;}
.saldo-bar .sbtn:hover{background:var(--warn-hover);}
.saldo-badge{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:4px;background:var(--warn-bg);border:1px solid var(--saldo-border);font-size:12px;font-family:var(--mono);color:var(--warn);}
.saldo-badge .rm{cursor:pointer;opacity:.6;margin-left:4px;font-size:13px;}
.saldo-badge .rm:hover{opacity:1;}
.saldo-hint{font-size:11px;color:var(--text3);}

/* TAGS */
.tags-row{display:flex;gap:6px;flex-wrap:wrap;padding:5px 1.4rem;background:var(--accent-bg);border-bottom:1px solid rgba(45,138,90,.2);min-height:32px;align-items:center;}
.tags-row.hidden{display:none;}
.atag{display:inline-flex;align-items:center;gap:5px;padding:2px 8px;border-radius:12px;background:var(--accent-bg);color:var(--accent);font-size:11px;border:1px solid rgba(45,138,90,.3);}
.atag .rm{cursor:pointer;font-size:13px;line-height:1;opacity:.6;}
.atag .rm:hover{opacity:1;}

/* METRICS */
.metrics{display:flex;padding:.65rem 1.4rem;background:var(--surface);border-bottom:1px solid var(--border);flex-shrink:0;gap:0;}
.metric{flex:1;padding:0 .9rem;border-right:1px solid var(--border);}
.metric:first-child{padding-left:0;}
.metric:last-child{border-right:none;}
.mlbl{font-size:10px;color:var(--text3);text-transform:uppercase;letter-spacing:.08em;display:block;}
.mval{font-size:16px;font-family:var(--mono);display:block;margin-top:1px;}
.mval.danger{color:var(--danger);}
.mval.success{color:var(--accent);}
.mval.warn{color:var(--warn);}
.mval.ret{color:var(--ret);}

/* TABS */
.ptabs{display:flex;border-bottom:1px solid var(--border);padding:0 1.4rem;background:var(--surface);flex-shrink:0;}
.ptab{padding:9px 14px;font-size:12px;border:none;border-bottom:2px solid transparent;background:transparent;cursor:pointer;color:var(--text2);font-family:var(--font);transition:color .1s;margin-bottom:-1px;}
.ptab:hover{color:var(--text);}
.ptab.active{border-bottom-color:var(--accent);color:var(--accent);}

/* FILTER CHIPS */
.frow{display:flex;gap:7px;align-items:center;padding:.45rem 1.4rem;background:var(--surface);border-bottom:1px solid var(--border);flex-wrap:wrap;flex-shrink:0;}
.chip{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;border:1px solid var(--border2);border-radius:12px;font-size:11px;color:var(--text2);background:var(--surface);cursor:pointer;transition:all .1s;white-space:nowrap;}
.chip.active{background:var(--accent);color:white;border-color:var(--accent);}
.chip.ret-c.active{background:var(--ret);border-color:var(--ret);}
.chip.match-c.active{background:var(--accent2);border-color:var(--accent2);}
.dot{width:6px;height:6px;border-radius:50%;display:inline-block;margin-right:2px;}
.d-open{background:var(--danger);}
.d-partial{background:var(--partial);}
.d-match{background:var(--accent2);}
.d-ret{background:var(--ret);}
.d-ant{background:var(--info);}
.srch{width:175px;padding:4px 8px;border:1px solid var(--border2);border-radius:4px;font-size:12px;font-family:var(--font);}
.exp{display:flex;gap:5px;margin-left:auto;}
.bsm{padding:4px 9px;font-size:11px;border:1px solid var(--border2);border-radius:4px;background:var(--surface);cursor:pointer;color:var(--text2);font-family:var(--font);transition:background .1s;white-space:nowrap;}
.bsm:hover{background:var(--surface2);}
.bsm.pr{background:var(--accent);color:white;border-color:var(--accent);}
.bsm.pr:hover{background:#0f3d27;}

/* CONTENT */
.ca{flex:1;overflow-y:auto;padding:1rem 1.4rem;}
.tw{overflow-x:auto;}
table{width:100%;border-collapse:collapse;font-size:12px;}
thead th{background:var(--surface2);padding:7px 9px;text-align:left;font-size:10px;font-weight:normal;letter-spacing:.08em;text-transform:uppercase;color:var(--text2);border-bottom:1px solid var(--border);white-space:nowrap;cursor:pointer;user-select:none;}
thead th:hover{background:var(--accent-bg);}
tbody tr{border-bottom:1px solid var(--border);transition:background .1s;}
tbody tr:hover{background:var(--surface2);}
tbody tr.r-open{background:var(--row-open-bg);}
tbody tr.r-open:hover{background:var(--row-open-hover);}
tbody tr.r-open td:first-child{border-left:3px solid var(--row-open-border);}
tbody tr.r-match td:first-child{border-left:3px solid var(--accent2);}
tbody tr.r-ret td:first-child{border-left:3px solid var(--ret);}
tbody tr.r-ant td:first-child{border-left:3px solid var(--info);}
td{padding:6px 9px;vertical-align:middle;}
td.mo{font-family:var(--mono);font-size:11px;}
td.rt{text-align:right;}
td.deb{color:var(--accent);}
td.cred{color:var(--danger);}
.hcell{max-width:210px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:11px;}
.rcell{max-width:130px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:11px;}

/* STATUS BADGES */
.sb{display:inline-block;padding:2px 6px;border-radius:3px;font-size:10px;letter-spacing:.03em;font-family:var(--mono);white-space:nowrap;}
.sb-open{background:var(--danger-bg);color:var(--danger);}
.sb-closed{background:var(--accent-bg);color:var(--accent);}
.sb-partial{background:var(--warn-bg);color:var(--warn);}
.sb-match{background:var(--accent-bg);color:var(--accent);}
.sb-ret{background:var(--ret-bg);color:var(--ret);}
.sb-ant{background:var(--info-bg);color:var(--info);}
.sb-na{background:var(--border);color:var(--text3);}

/* SUMMARY */
.sgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(175px,1fr));gap:11px;margin-bottom:1.4rem;}
.scard{background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:.9rem;}
.scard h3{font-size:10px;text-transform:uppercase;letter-spacing:.1em;color:var(--text3);margin-bottom:7px;}
.scard .v{font-size:18px;font-family:var(--mono);margin-bottom:3px;}
.scard .v.danger{color:var(--danger);}
.scard .v.success{color:var(--accent);}
.scard .v.warn{color:var(--warn);}
.scard .v.ret{color:var(--ret);}
.scard .sv{font-size:11px;color:var(--text3);}

/* RET SECTION */
.ret-box{background:var(--ret-bg);border:1px solid var(--ret-border);border-radius:6px;padding:.9rem;margin-bottom:1.4rem;}
.ret-box h2{font-size:11px;color:var(--ret);text-transform:uppercase;letter-spacing:.08em;margin-bottom:.7rem;}

/* EMPTY/LOADING */
.empty{text-align:center;padding:4rem 2rem;color:var(--text3);}
.empty .big{font-size:3rem;margin-bottom:1rem;display:block;}
.empty h2{font-size:16px;font-weight:normal;color:var(--text2);margin-bottom:.5rem;}
.loading{text-align:center;padding:3rem;color:var(--text2);}
.pbar{width:100%;height:4px;background:var(--border);border-radius:2px;overflow:hidden;margin:12px 0;}
.pfill{height:100%;background:var(--accent2);border-radius:2px;transition:width .3s;}
.tag{display:inline-block;padding:1px 5px;border-radius:3px;font-size:10px;font-family:var(--mono);background:var(--info-bg);color:var(--info);margin-right:3px;}
.tag.r{background:var(--accent-bg);color:var(--accent);}
.tag.p{background:var(--danger-bg);color:var(--danger);}

/* VALIDAÇÃO FINANCEIRO */
.vf-upload-zone{border:1.5px dashed var(--border2);border-radius:6px;padding:1rem;text-align:center;cursor:pointer;background:var(--surface2);transition:border-color .2s,background .2s;margin-bottom:1rem;}
.vf-upload-zone:hover,.vf-upload-zone.drag{border-color:var(--info);background:var(--info-bg);}
.vf-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px;margin-bottom:1rem;}
.vf-card{background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:.8rem;}
.vf-card h3{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--text3);margin-bottom:5px;}
.vf-card .v{font-size:17px;font-family:var(--mono);}
.vf-card .sv{font-size:11px;color:var(--text3);}
.r-concil td:first-child{border-left:3px solid var(--accent2);}
.r-so-razao td:first-child{border-left:3px solid var(--warn);}
.r-so-fin td:first-child{border-left:3px solid var(--info);}
.r-diverg td:first-child{border-left:3px solid var(--danger);}
.sb-concil{background:var(--accent-bg);color:var(--accent);}
.sb-so-razao{background:var(--warn-bg);color:var(--warn);}
.sb-so-fin{background:var(--info-bg);color:var(--info);}
.sb-diverg{background:var(--danger-bg);color:var(--danger);}
