:root{--bg:#f5f7fb;--panel:#fff;--text:#18212f;--muted:#697586;--line:#e5e9f0;--primary:#5b3df5;--primary2:#4730d1;--danger:#c62828;--success:#18794e}
*{box-sizing:border-box}body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",Arial,sans-serif;background:var(--bg);color:var(--text)}
a{color:var(--primary);text-decoration:none}.app{display:flex;min-height:100vh}.sidebar{width:230px;background:#111827;color:#fff;padding:22px 16px;display:flex;flex-direction:column}.brand{display:flex;gap:10px;align-items:center;margin:4px 8px 34px}.brand b{display:block;font-size:18px}.brand small{display:block;color:#aab3c2;font-size:11px;margin-top:2px}.brand-dot{width:30px;height:30px;border-radius:9px;background:#6d55ff;display:inline-block}.sidebar nav{display:grid;gap:5px}.sidebar nav a,.side-bottom a{color:#c7cfdb;padding:12px;border-radius:9px}.sidebar nav a:hover{background:#1d2635;color:#fff}.side-bottom{margin-top:auto;border-top:1px solid #263244;padding-top:15px}.user-mini{padding:8px;color:#fff;font-size:13px}
.main{flex:1;min-width:0}.topbar{height:76px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 34px}.topbar h1{font-size:22px;margin:0}.top-actions{color:var(--muted);font-size:13px}.content{padding:28px 34px;max-width:1500px}.toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px}.filters{display:flex;gap:8px;flex-wrap:wrap}.filters input{min-width:280px}.btn{border:1px solid var(--line);background:#fff;color:var(--text);padding:10px 15px;border-radius:9px;cursor:pointer;font-weight:600}.btn.primary{background:var(--primary);border-color:var(--primary);color:#fff}.btn.primary:hover{background:var(--primary2)}.btn.wide{width:100%}
select,input,textarea{width:100%;border:1px solid #d9dee8;background:#fff;border-radius:8px;padding:10px 11px;font:inherit;color:inherit}select{width:auto}.toolbar select{min-width:90px}.content label{display:grid;gap:6px;font-size:13px;font-weight:600}.content label input,.content label select,.content label textarea{font-weight:400}
.cards{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}.card,.panel{background:var(--panel);border:1px solid var(--line);border-radius:13px;box-shadow:0 1px 2px rgba(16,24,40,.03)}.card{padding:19px}.card span{display:block;color:var(--muted);font-size:13px}.card strong{display:block;font-size:23px;margin-top:9px}.grid2{display:grid;grid-template-columns:1.25fr 1fr;gap:20px;margin-bottom:20px}.panel{padding:20px;margin-bottom:20px}.panel.narrow{max-width:700px}.panel-title{display:flex;justify-content:space-between;align-items:center}.panel h2{font-size:16px;margin:0 0 18px}.bars{height:225px;display:flex;align-items:end;gap:9px;padding:15px 5px}.bar-col{flex:1;display:flex;flex-direction:column;align-items:center;gap:7px}.bar{width:100%;max-width:42px;border-radius:6px 6px 2px 2px;background:var(--primary)}.bar-col small{color:var(--muted)}.rank{display:flex;justify-content:space-between;gap:15px;border-bottom:1px solid var(--line);padding:11px 0;font-size:13px}.rank:last-child{border:0}table{width:100%;border-collapse:collapse;font-size:13px}th{text-align:left;color:var(--muted);font-weight:600;background:#fafbfc}th,td{padding:12px 10px;border-bottom:1px solid var(--line);vertical-align:top}.right{text-align:right}.truncate{max-width:330px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.table-wrap{overflow:auto}.summary-line{margin:0 0 10px;color:var(--muted);font-size:13px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.form-grid .full{grid-column:1/-1}.alert{padding:12px 14px;border-radius:9px;margin-bottom:18px}.alert.success{background:#eaf7f0;color:var(--success)}.alert.danger{background:#fdeeee;color:var(--danger)}.muted{color:var(--muted)}.small{font-size:12px}.pill{padding:6px 10px;border-radius:20px;background:#eef0f5;color:var(--muted);font-size:12px}.big-number{font-size:34px;font-weight:750}.progress{height:10px;background:#edf0f5;border-radius:20px;overflow:hidden;margin:20px 0 8px}.progress i{display:block;height:100%;background:var(--primary)}
.login-page{min-height:100vh;display:grid;place-items:center;background:#f4f2ff}.login-card{width:390px;background:#fff;border:1px solid var(--line);border-radius:16px;padding:30px;box-shadow:0 15px 45px rgba(20,20,40,.08)}.wide-card{width:500px}.center{justify-content:center;margin-bottom:24px}.login-card h2{margin:0 0 20px}.login-card label{display:grid;gap:6px;font-size:13px;font-weight:600;margin-bottom:15px}.login-card input{margin:0}
@media(max-width:900px){.sidebar{width:70px}.sidebar .brand div,.sidebar nav span,.side-bottom{display:none}.sidebar .brand{margin-left:5px}.content{padding:20px}.topbar{padding:0 20px}.cards{grid-template-columns:1fr 1fr}.grid2{grid-template-columns:1fr}}
@media(max-width:600px){.cards{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr}.form-grid .full{grid-column:auto}.topbar h1{font-size:18px}.content{padding:15px}.sidebar{display:none}}

.file-current{display:block;margin-top:7px;font-size:12px;color:var(--muted);font-weight:400}
.form-actions{display:flex;gap:10px;align-items:center}
input[type=file]{padding:8px}

.budget-head{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:20px}
.budget-stat{background:#fff;border:1px solid var(--line);border-radius:13px;padding:17px}
.budget-stat span{display:block;color:var(--muted);font-size:12px}.budget-stat strong{display:block;font-size:20px;margin-top:7px}
.year-switch{display:flex;align-items:center;gap:8px}
.budget-table-panel{padding:18px 12px}.budget-scroll{overflow:auto}
.budget-table{min-width:1280px;font-size:12px}.budget-table th,.budget-table td{padding:10px 8px;white-space:nowrap}
.budget-table thead th{background:#f8f9fc;position:sticky;top:0;z-index:2}.budget-table .sticky-col{position:sticky;left:0;z-index:3;background:#fff}
.budget-table thead .sticky-col{background:#f8f9fc}.budget-table .month-head{text-align:right;min-width:92px}.budget-table .total-head{min-width:110px}
.supplier-cell{font-weight:700;min-width:190px}.service-cell{min-width:230px}.amount-cell{text-align:right}
.month-value{font-weight:650}.month-value:hover{text-decoration:underline}.zero{color:#aab1bd}.total-cell{background:#fbfbfd}
.budget-table tfoot th,.budget-table tfoot td{background:#f1f3f8;font-weight:750;border-top:2px solid var(--line)}
.empty{text-align:center;padding:30px!important;color:var(--muted)}
@media(max-width:900px){.budget-head{grid-template-columns:1fr 1fr}}
@media(max-width:600px){.budget-head{grid-template-columns:1fr}.budget-status{display:none}}

/* V4 budget polish */
.budget-head{display:grid !important;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:0 0 20px}
.budget-stat{background:#fff;border:1px solid var(--line);border-radius:13px;padding:17px 18px;box-shadow:0 1px 2px rgba(16,24,40,.03)}
.budget-stat span{display:block;color:var(--muted);font-size:12px}
.budget-stat strong{display:block;font-size:20px;margin-top:7px}
@media(max-width:900px){.budget-head{grid-template-columns:1fr 1fr !important}}
@media(max-width:600px){.budget-head{grid-template-columns:1fr !important}}
