:root{--bg:#f4f6f3;--card:#fff;--text:#20251f;--muted:#6d756b;--primary:#486c3f;--primary2:#35522f;--border:#dfe5dc;--danger:#a13b3b;--radius:14px}*{box-sizing:border-box}body{margin:0;font:15px/1.5 Inter,system-ui,Arial,sans-serif;background:var(--bg);color:var(--text)}a{color:var(--primary);text-decoration:none}.topbar{position:sticky;top:0;z-index:10;background:#1f2d1c;color:#fff;padding:14px 4%;display:flex;align-items:center;justify-content:space-between;gap:20px}.brand{font-size:20px;font-weight:800;color:#fff}.brand span{font-weight:400;color:#c9d8c5}.topbar nav{display:flex;gap:16px;flex-wrap:wrap}.topbar nav a{color:#eef5ec}.container{width:min(1180px,92%);margin:28px auto}.page-head{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:20px}.page-head h1{margin:0;font-size:28px}.page-head p{margin:4px 0;color:var(--muted)}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:22px;margin-bottom:20px;box-shadow:0 8px 25px rgba(31,45,28,.04)}.btn{display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border);background:#fff;color:var(--text);padding:10px 15px;border-radius:10px;cursor:pointer;font-weight:650}.btn.primary{background:var(--primary);border-color:var(--primary);color:#fff}.btn.primary:hover{background:var(--primary2)}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}.stats>div{background:#fff;border:1px solid var(--border);border-radius:var(--radius);padding:22px}.stats strong{display:block;font-size:28px}.stats span{color:var(--muted)}table{width:100%;border-collapse:collapse}th,td{padding:12px 10px;border-bottom:1px solid var(--border);text-align:left}th{font-size:13px;color:var(--muted)}.table-wrap{overflow-x:auto}.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.full{grid-column:1/-1}label{display:block;font-weight:650;margin-bottom:12px}input,select,textarea{width:100%;margin-top:6px;border:1px solid #cfd8cc;border-radius:9px;padding:6px;background:#fff;font:inherit}textarea{min-height:100px;resize:vertical}.check{display:flex;gap:9px;align-items:center}.check input{width:auto;margin:0}.actions{display:flex;gap:10px;flex-wrap:wrap}.section-head{display:flex;justify-content:space-between;align-items:center;gap:12px}.line-row{display:grid;grid-template-columns:minmax(260px,2fr) 1fr auto auto;gap:5px;align-items:center;margin:1px 0}.extra-row{grid-template-columns:minmax(240px,2fr) .8fr .8fr auto auto}.project-row{grid-template-columns:2fr 1fr auto}.row-total{min-width:90px;text-align:right;font-weight:700}.icon-btn{border:0;background:#f3eaea;color:var(--danger);width:36px;height:36px;border-radius:8px;font-size:20px;cursor:pointer}.calc-preview div,.summary div{display:flex;justify-content:space-between;padding:9px 0;border-bottom:1px solid var(--border)}.grand{font-size:20px;font-weight:800}.detail-grid{display:grid;grid-template-columns:2fr 1fr;gap:20px}.badge{display:inline-block;padding:5px 9px;border-radius:999px;background:#eef0ed;font-size:12px}.badge.approved{background:#e2f2df;color:#295c22}.badge.rejected{background:#f6dfdf;color:#7f2929}.badge.review,.badge.changes{background:#fff1cf;color:#795a0f}.comments article{border-left:3px solid var(--border);padding-left:14px;margin:14px 0}.comments time{color:var(--muted);font-size:12px;margin-left:8px}.alert{padding:12px 15px;border-radius:10px;margin-bottom:15px}.alert.success{background:#e4f3e1}.alert.error{background:#f8dddd}.login-card{max-width:420px;margin:8vh auto;background:#fff;border:1px solid var(--border);border-radius:18px;padding:30px}.login-card h1{margin-top:0}.muted{color:var(--muted)}@media(max-width:800px){.topbar{align-items:flex-start;flex-direction:column}.stats,.form-grid,.detail-grid{grid-template-columns:1fr}.line-row,.extra-row,.project-row{grid-template-columns:1fr}.row-total{text-align:left}.page-head{align-items:flex-start;flex-direction:column}}

.row-add-action{display:flex;justify-content:flex-start;margin-top:16px;padding-top:14px;border-top:1px solid var(--border)}
.center {
    display: flex;
    justify-content: center;
    align-items: center;
}