*{box-sizing:border-box} body{margin:0;font:14px/1.45 'Segoe UI',system-ui,sans-serif;background:#f2f5fa;color:#1d2733;display:flex;min-height:100vh}
nav.side{width:230px;background:#12294f;color:#dbe6ff;padding:14px 0;flex-shrink:0;display:flex;flex-direction:column}
nav.side .brand{font-size:18px;font-weight:700;padding:6px 18px 16px;color:#fff}
nav.side a{color:#c8d7f5;text-decoration:none;padding:9px 18px;display:block;border-left:3px solid transparent}
nav.side a:hover{background:#1a3866;color:#fff}
nav.side a.on{background:#1a3866;color:#fff;border-left-color:#f5b301}
nav.side .sep{padding:14px 18px 4px;font-size:10.5px;letter-spacing:1px;color:#7d94c4}
nav.side .foot{margin-top:auto;padding:14px 18px;font-size:11px;color:#7d94c4}
main{flex:1;padding:22px 28px;max-width:1250px}
h1{font-size:21px;margin:0 0 16px} h2{font-size:15px;margin:0 0 10px}
.cards{display:flex;gap:14px;flex-wrap:wrap;margin-bottom:18px}
.card{background:#fff;border-radius:10px;padding:14px 18px;min-width:180px;flex:1;box-shadow:0 1px 3px rgba(20,40,80,.08)}
.card .k{font-size:22px;font-weight:700;color:#12294f}.card .l{color:#5a6b84;font-size:12.5px;margin-top:2px}
.card .s{color:#8494ab;font-size:11.5px;margin-top:4px}
.card.warn{border-left:4px solid #e67e22}
.panel{background:#fff;border-radius:10px;padding:16px 18px;margin-bottom:18px;box-shadow:0 1px 3px rgba(20,40,80,.08)}
.panel.warn{border-left:4px solid #e67e22}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:18px}
table{border-collapse:collapse;width:100%}
th{font-size:11.5px;text-transform:uppercase;letter-spacing:.4px;color:#5a6b84;border-bottom:2px solid #e4eaf3;padding:7px 8px;text-align:left}
td{border-bottom:1px solid #eef2f8;padding:6px 8px}
td.r,th.r{text-align:right;font-variant-numeric:tabular-nums}
tr.tot td{font-weight:700;border-top:2px solid #12294f}
tr.h td{font-weight:700;color:#12294f;padding-top:14px}
tr.st td,tr.res td{font-weight:600;background:#f4f7fc}
tr.net td{font-weight:700;background:#eaf6ee;color:#1a6b3c}
tr.rowbad td{background:#fdf3ef}
.bad{color:#c0392b;font-weight:600}.ok{color:#1a8a4a;font-weight:600}
.flash{background:#eaf6ee;border:1px solid #bfe3cc;color:#1a6b3c;padding:9px 14px;border-radius:8px;margin-bottom:14px}
.bar{display:flex;gap:10px;align-items:center;margin-bottom:14px;flex-wrap:wrap}
.right{margin-left:auto}
form.inline{display:inline-flex;gap:6px;margin-left:12px;font-size:13px}
input,select,button{font:inherit;padding:6px 9px;border:1px solid #c8d3e4;border-radius:7px;background:#fff}
input:focus,select:focus{outline:2px solid #2457C5}
.btn,button.btn{background:#2457C5;border-color:#2457C5;color:#fff;text-decoration:none;padding:7px 14px;border-radius:7px;cursor:pointer;display:inline-block}
.btn.ghost{background:#fff;color:#2457C5}
button{cursor:pointer}
.form label{display:block;margin-bottom:10px}
.form label input,.form label select{margin-left:8px}
.chip{background:#e8eefb;color:#12294f;border-radius:20px;padding:3px 11px;font-size:12px;display:inline-block;margin:2px}
canvas{max-height:320px}
@media(max-width:900px){.grid2{grid-template-columns:1fr}nav.side{width:64px}nav.side a{padding:9px 8px;font-size:11px}nav.side .brand,nav.side .foot,nav.side .sep{display:none}main{padding:14px}}
