:root{--ink:#1d2433;--mute:#6b7385;--line:#e3e6ec;--bg:#f5f6f9;--card:#fff;--brand:#1f4d3a;--brand2:#2d6a4f;--good:#0a7a3d;--bad:#b3261e;--warn:#a66300}
*{box-sizing:border-box}body{margin:0;font:14px/1.45 -apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;color:var(--ink);background:var(--bg)}
a{color:var(--brand2);text-decoration:none}a:hover{text-decoration:underline}
.shell{display:flex;min-height:100vh}.side{width:224px;background:var(--brand);color:#dfeee6;padding:14px 0;position:sticky;top:0;height:100vh;overflow:auto;flex:none}
.brand{font-weight:700;font-size:15px;padding:4px 18px 12px;color:#fff}.brand small{display:block;font-weight:400;opacity:.7;font-size:12px}
.grp{font-size:11px;text-transform:uppercase;letter-spacing:.08em;opacity:.6;padding:14px 18px 4px}
.side a{display:block;color:#dfeee6;padding:6px 18px}.side a:hover{background:rgba(255,255,255,.08);text-decoration:none}.side a.on{background:rgba(255,255,255,.16);color:#fff;font-weight:600}
.main{flex:1;padding:22px 28px;min-width:0;max-width:1280px}
h1{font-size:22px;margin:0}h1 small{font-weight:400;color:var(--mute);font-size:15px}h3{margin:18px 0 8px;font-size:15px}
.bar{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px;gap:10px;flex-wrap:wrap}
.card{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:16px;margin-bottom:16px}
.btn{display:inline-block;background:#fff;border:1px solid #cfd4dd;border-radius:6px;padding:6px 12px;font:inherit;cursor:pointer;color:var(--ink)}.btn:hover{background:#f0f2f6;text-decoration:none}
.btn.primary{background:var(--brand2);border-color:var(--brand2);color:#fff}.btn.primary:hover{background:var(--brand)}.btn.danger{color:var(--bad);border-color:#e6b8b4}.btn.wide{width:100%;margin-top:10px}
button.link{background:none;border:0;color:var(--brand2);cursor:pointer;padding:0;font:inherit}button.x{border:0;background:none;font-size:18px;color:var(--mute);cursor:pointer}
.actions{display:flex;gap:6px;flex-wrap:wrap}
label{display:block;font-size:12px;color:var(--mute);margin-bottom:10px}label.inl{display:inline-block;margin:0 8px 0 0}
input,select,textarea{display:block;width:100%;font:inherit;padding:6px 8px;border:1px solid #cfd4dd;border-radius:6px;background:#fff;color:var(--ink);margin-top:3px}
label.inl input,label.inl select{display:inline-block;width:auto}input[type=checkbox]{display:inline-block;width:auto}
.cols{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:0 14px}.cols3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.cols2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.lbl{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--mute);margin-top:6px}
table{border-collapse:collapse;width:100%}table.grid{background:#fff;border:1px solid var(--line);border-radius:8px;overflow:hidden}
.grid th{background:#f0f2f6;text-align:left;font-size:12px;color:#444c5e;padding:7px 10px;border-bottom:1px solid var(--line)}.grid td{padding:7px 10px;border-bottom:1px solid #eef0f4;vertical-align:top}
.r{text-align:right;font-variant-numeric:tabular-nums}.mute{color:var(--mute)}.sm{font-size:12px}
tr.tot td,tr.grand td{font-weight:700;background:#f7f8fb;border-top:1px solid var(--line)}tr.sub td{font-weight:600;background:#fafbfc}tr.head td{font-weight:700;background:#eef4f0;color:var(--brand)}
.fin td,.fin th{white-space:nowrap}.fin td:first-child{white-space:normal}
table.lines{background:#fff;border:1px solid var(--line)}.lines th{font-size:12px;color:var(--mute);text-align:left;padding:6px;background:#f7f8fb}.lines td{padding:4px;vertical-align:top}.lines input,.lines select,.lines textarea{margin:0}.lines textarea{resize:vertical;min-height:34px}
.w70{width:70px}.w90{width:90px}.w100{width:100px}.w110{width:110px}.w140{width:140px}.w180{width:190px}.amt{padding-top:12px!important;white-space:nowrap}
.totals{display:flex;gap:26px;justify-content:flex-end;margin:12px 0;flex-wrap:wrap}.totals .big{font-size:17px}.totals b{margin-left:8px;font-variant-numeric:tabular-nums}
.badge{display:inline-block;padding:1px 8px;border-radius:10px;font-size:11px;font-weight:600;background:#e9ecf1;color:#4a5164}.badge.good{background:#dff3e6;color:var(--good)}.badge.bad{background:#fbe3e1;color:var(--bad)}.badge.warn{background:#fdf0d5;color:var(--warn)}
.flash{padding:9px 12px;border-radius:6px;margin-bottom:12px}.flash.ok{background:#dff3e6;color:#0a5a2e}.flash.err{background:#fbe3e1;color:#8a1c14}
.filters{margin-bottom:12px;display:flex;gap:8px;flex-wrap:wrap;align-items:center}.filters input,.filters select{width:auto;margin:0}
.kpis{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px;margin-bottom:16px}.kpi{background:#fff;border:1px solid var(--line);border-radius:8px;padding:12px 14px}.kpi .num{font-size:20px;font-weight:700;margin:2px 0}.neg{color:var(--bad)}
.chart{display:flex;gap:18px;align-items:flex-end;height:170px;padding-top:8px}.chart .col{flex:1;text-align:center;font-size:11px;color:var(--mute);height:100%;display:flex;flex-direction:column}.bars{flex:1;display:flex;gap:4px;align-items:flex-end;justify-content:center}.bars i{display:block;width:44%;min-height:2px;border-radius:3px 3px 0 0}
.b1{background:var(--brand2)}.b2{background:#d9a441}.dot{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:3px}
.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}.tile{background:#fff;border:1px solid var(--line);border-radius:8px;padding:14px;color:var(--ink)}.tile:hover{border-color:var(--brand2);text-decoration:none}.tile b{display:block;color:var(--brand)}.tile span{font-size:12px;color:var(--mute)}
.warnlist{color:var(--warn);margin:4px 0 8px 18px;padding:0}.good-t{color:var(--good)}.bad-t{color:var(--bad)}
.inline{margin:10px 0}.inline select,.inline input{display:inline-block;width:auto}
.loginbg{background:linear-gradient(135deg,#1f4d3a,#2d6a4f);display:flex;align-items:center;justify-content:center;min-height:100vh}.login{width:340px}.login h2{margin:0 0 4px}
.rpt-title{display:none}
@media (max-width:900px){.shell{flex-direction:column}.side{width:auto;height:auto;position:static}.cols3,.cols2{grid-template-columns:1fr}.main{padding:14px}}
@media print{.side,.noprint,.filters{display:none!important}.main{padding:0;max-width:none}body{background:#fff}.card{border:0;padding:0}.rpt-title{display:block;margin-bottom:10px;font-size:15px}}
.chart .col span{margin-top:6px;display:block}
