:root{--bg:#f4f6f8;--panel:#fff;--text:#18212f;--muted:#697789;--line:#dce3eb;--blue:#3268d8;--nav:#111827;--good:#16825b;--warn:#9a6200;--bad:#b23846}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--text);font:14px Arial,sans-serif}
button,input,select,textarea{font:inherit}
button,.button,.restore{border:1px solid var(--line);border-radius:10px;background:#fff;padding:9px 13px;cursor:pointer}
.primary{background:var(--blue);color:#fff;border-color:var(--blue)}
aside{position:fixed;inset-block:0;inset-inline-start:0;width:255px;background:var(--nav);color:#fff;padding:16px;display:flex;flex-direction:column;z-index:5}
.brand{display:flex;gap:12px;align-items:center;padding:5px 5px 20px}
.brand>b{display:grid;place-items:center;width:42px;height:42px;border-radius:12px;background:var(--blue);font-size:18px}
.brand strong,.brand small{display:block}
.brand small{color:#aab5c5;margin-top:4px}
nav{flex:1;overflow:auto}
nav button{width:100%;border:0;background:transparent;color:#cfd7e3;text-align:start;margin:2px 0;padding:11px}
nav button.active,nav button:hover{background:#26344a;color:#fff}
.restore,#backup{margin-top:8px;background:#26344a;color:white;border-color:#35455e;text-align:center}
.restore input{display:none}
.danger-action{margin-top:8px;background:transparent;color:#ffb4bd;border-color:#7d3440}
.danger-action:hover{background:#5b2731;color:#fff}
.danger-confirm{background:var(--bad);color:#fff;border-color:var(--bad)}
main{margin-inline-start:255px}
header{height:70px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:10px;padding:0 22px;position:sticky;top:0;z-index:4}
header small{display:block;color:var(--muted);margin-top:4px}
.grow{flex:1}
.page{display:none;padding:24px}
.page.active{display:block}
.heading{display:flex;align-items:flex-start;justify-content:space-between;gap:15px;margin-bottom:18px}
.heading h1{margin:0 0 6px}
.heading p{margin:0;color:var(--muted)}
.filters{display:flex;gap:8px;flex-wrap:wrap}
#dashboard .heading{display:block}
#dashboard .heading .filters{margin-top:14px}
.grid{display:grid;gap:14px}
.g4{grid-template-columns:repeat(4,1fr)}
.g3{grid-template-columns:repeat(3,1fr)}
.g2{grid-template-columns:repeat(2,1fr)}
.card{background:#fff;border:1px solid var(--line);border-radius:15px;padding:17px;box-shadow:0 4px 15px #1d2c4408}
.metric small,.muted{color:var(--muted)}
.metric b{display:block;font-size:27px;margin:8px 0}
.bad{color:var(--bad)}
.good{color:var(--good)}
.stack{display:grid;gap:12px}
.table{overflow:auto;border:1px solid var(--line);border-radius:12px;background:#fff}
table{border-collapse:collapse;width:100%;min-width:850px}
th,td{padding:11px 12px;border-bottom:1px solid var(--line);text-align:start;white-space:nowrap}
th{background:#f7f9fb;color:var(--muted);font-size:12px}
.transactions-table{overflow:visible;border:0;background:transparent}
.transactions-table table{background:#fff;border-radius:12px;box-shadow:0 0 0 1px var(--line)}
.transactions-table td{background:#fff}
.transactions-table thead{position:sticky;top:70px;z-index:3}
.transactions-table th{padding:0;overflow:visible;box-shadow:0 1px 0 var(--line)}
.column-filter{position:relative}
.column-filter summary{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:11px 12px;cursor:pointer;list-style:none;user-select:none}
.column-filter summary::-webkit-details-marker{display:none}
.column-filter summary i{font-style:normal;color:#8c98a8}
.column-filter.active summary{color:var(--blue);background:#edf3ff}
.column-filter.active summary i{color:var(--blue)}
.filter-menu{position:absolute;inset-block-start:calc(100% + 5px);inset-inline-start:4px;z-index:8;width:max-content;min-width:210px;max-width:min(320px,80vw);max-height:330px;overflow:auto;padding:8px;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 12px 30px #18212f2b;color:var(--text);font-size:13px}
.filter-menu-head{position:sticky;top:-8px;display:flex;align-items:center;justify-content:space-between;gap:12px;background:#fff;padding:4px 2px 8px;border-bottom:1px solid var(--line);z-index:1}
.filter-menu-head button{padding:5px 8px;color:var(--blue);border:0}
.filter-menu-head .filter-select-all{padding:5px 4px;color:var(--blue);font-weight:600;white-space:nowrap}
.filter-menu label{display:flex;align-items:center;gap:8px;padding:7px 4px;cursor:pointer;font-weight:normal}
.filter-menu label:hover{background:#f5f7fa}
.filter-menu input{margin:0}
.errors-cell{white-space:normal;min-width:180px}
.error-badges{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.error-badges .badge{display:inline-flex;line-height:1.25;white-space:normal}
.badge{padding:4px 8px;border-radius:20px;font-size:12px;background:#eef2f8}
.badge.good{background:#e7f7f0}
.badge.bad{background:#fdecef}
.badge.warn{background:#fff2d4;color:var(--warn)}
.progress{height:9px;background:#e7ecf2;border-radius:20px;overflow:hidden}
.progress i{display:block;height:100%;background:var(--blue)}
form.grid label{display:grid;gap:5px;color:var(--muted)}
input,select,textarea{border:1px solid var(--line);border-radius:9px;padding:9px;background:white;color:var(--text)}
dialog{border:0;border-radius:16px;box-shadow:0 15px 60px #0004;width:min(720px,94vw);max-height:90vh}
dialog::backdrop{background:#10182788}
.close{float:left;border:0;font-size:22px}
#toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);background:#182235;color:#fff;padding:11px 16px;border-radius:10px;display:none;z-index:20}
.empty{text-align:center;color:var(--muted);padding:28px}
.actions{display:flex;gap:6px}
.drop{border:2px dashed #bdc9d8;text-align:center;padding:35px;border-radius:14px}
.attention{border-inline-start:4px solid var(--warn)}
@media(max-width:950px){.g4,.g3{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:700px){aside{transform:translateX(110%)}
html[dir=ltr] aside{transform:translateX(-110%)}
aside.open{transform:none}
main{margin:0}
.g4,.g3,.g2{grid-template-columns:1fr}
.page{padding:15px}
header{padding:0 12px}
.heading{display:block}
.filters{margin-top:12px}
.transactions-table{overflow:auto;max-height:calc(100vh - 180px);border:1px solid var(--line);background:#fff}
.transactions-table table{box-shadow:none}
.transactions-table thead{top:0}
}
