:root{--bg:#f4f6f8;--card:#fff;--ink:#18212f;--muted:#6b7280;--line:#e5e7eb;--primary:#18212f;--accent:#0f766e}*{box-sizing:border-box}body{margin:0;font-family:Inter,system-ui,-apple-system,Segoe UI,sans-serif;background:var(--bg);color:var(--ink)}a{color:inherit}.top{height:70px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 28px;gap:32px;position:sticky;top:0;z-index:5}.top>div:first-child{display:flex;flex-direction:column}.top small{color:var(--muted)}nav{display:flex;gap:6px;flex:1}nav a{text-decoration:none;padding:10px 12px;border-radius:8px;color:#4b5563}nav a.active,nav a:hover{background:#f0f2f4;color:#111827}.user{font-size:14px}.wrap{max-width:1240px;margin:28px auto;padding:0 20px}.title-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}.title-row h1{margin:0;font-size:30px}.title-row p{margin:4px 0;color:var(--muted)}.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:20px;margin-bottom:18px;box-shadow:0 2px 8px #00000008}.cards{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.metric span,.metric small{display:block;color:var(--muted)}.metric strong{display:block;font-size:30px;margin:8px 0}.primary,.secondary,button{display:inline-block;text-decoration:none;border:0;border-radius:9px;padding:10px 15px;font-weight:650;cursor:pointer}.primary{background:var(--primary);color:#fff}.secondary{background:#edf0f3;color:#18212f}.wide{width:100%}.form label,.stack label{display:block;font-size:13px;font-weight:650;margin-bottom:12px}.form input,.form select,.form textarea,.stack input,.stack select,.line-form input,.line-form select{width:100%;padding:10px;border:1px solid #d5dae0;border-radius:8px;background:white;font:inherit;margin-top:5px}.form textarea{min-height:90px}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:14px}.check{display:flex!important;align-items:center;gap:8px}.check input{width:auto!important}.invoice-grid{display:grid;grid-template-columns:minmax(0,1fr) 310px;gap:18px}.detail-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.detail-grid small{display:block;color:var(--muted)}.detail-grid strong{display:block;margin-top:4px}.status{display:inline-block;padding:5px 9px;border-radius:999px;font-size:12px;text-transform:capitalize;background:#eef2f7}.status.paid{background:#dcfce7;color:#166534}.status.issued{background:#ffedd5;color:#9a3412}.status.part_paid{background:#fef3c7;color:#92400e}.status.draft{background:#e5e7eb;color:#374151}.status.overdue{background:#fee2e2;color:#991b1b}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:12px 10px;border-bottom:1px solid var(--line);vertical-align:top}th{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.03em}td small{display:block;color:var(--muted);margin-top:3px}.line-form{display:grid;grid-template-columns:110px 135px 110px minmax(180px,1fr) 80px 110px 100px 75px;gap:7px;align-items:end;margin-top:14px}.link{background:none;padding:0}.danger{color:#b91c1c}.totals{margin-left:auto;max-width:360px;margin-top:20px}.totals span{display:flex;justify-content:space-between;padding:7px 0}.totals .grand,.totals .balance{font-size:18px;border-top:1px solid var(--line);margin-top:4px}.payment{display:flex;justify-content:space-between;border-bottom:1px solid var(--line);padding:8px 0}.payment span{font-size:12px;color:var(--muted)}.validation ul{padding-left:20px;color:#4b5563}.login{display:grid;place-items:center;min-height:100vh}.login-card{width:min(420px,92vw);background:white;padding:30px;border-radius:16px;border:1px solid var(--line)}.login-card label{display:block;margin:14px 0;font-weight:650}.login-card input{width:100%;padding:11px;margin-top:5px;border:1px solid #d5dae0;border-radius:8px}.alert{padding:12px;border-radius:9px;background:#eef2ff;margin-bottom:15px}.alert.err{background:#fee2e2;color:#991b1b}.paper{max-width:820px;margin:28px auto;background:#fff;padding:55px;box-shadow:0 4px 25px #0002}.paper-head{display:flex;justify-content:space-between}.paper-head>div:last-child{text-align:right}.paper-table{margin-top:24px}.paper-table td,.paper-table th{padding:12px 6px}.paper-total{width:320px;margin:25px 0 25px auto}.paper-total p{display:flex;justify-content:space-between}.paper-total .big{font-size:19px;border-top:2px solid #111;padding-top:9px}.print-tools{max-width:820px;margin:20px auto;text-align:right}.print-tools button{background:#111827;color:white}.actions{display:flex;gap:8px}@media(max-width:900px){.cards{grid-template-columns:1fr 1fr}.invoice-grid{grid-template-columns:1fr}.line-form{grid-template-columns:1fr 1fr}.top{height:auto;flex-wrap:wrap;padding:12px 18px}nav{order:3;width:100%;overflow:auto}.detail-grid{grid-template-columns:1fr 1fr}}@media print{body{background:white}.top,.wrap>.title-row,.print-tools{display:none!important}.wrap{margin:0;padding:0}.paper{box-shadow:none;margin:0;max-width:none;padding:25px}}
.status.historical{background:#e0e7ff;color:#3730a3}.flag{display:inline-block;background:#fff7ed;color:#9a3412;border:1px solid #fed7aa;border-radius:7px;padding:3px 7px;font-size:12px}.muted{color:var(--muted)}.history-note{white-space:pre-wrap;background:#fff7ed;border:1px solid #fed7aa;padding:12px;border-radius:9px}.toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.toolbar input,.toolbar select{padding:9px 10px;border:1px solid #d5dae0;border-radius:8px;background:#fff}.kpi-note{font-size:12px;color:var(--muted);margin-top:4px}
.status.active{background:#dcfce7;color:#166534}.status.planned{background:#dbeafe;color:#1d4ed8}.status.complete{background:#e5e7eb;color:#374151}.status.cancelled{background:#fee2e2;color:#991b1b}.card h2{margin-top:0}.actions{flex-wrap:wrap}

/* v0.3.1 invoice line editor */
.line-editor{margin-top:18px;padding:16px;border:1px solid var(--line);border-radius:12px;background:#fafbfc}.line-editor h3{margin:0 0 12px}.line-form{display:grid;grid-template-columns:150px 160px 130px minmax(220px,1fr);gap:12px;align-items:end;margin-top:0}.line-form label{display:block;font-size:12px;font-weight:650;color:#4b5563}.line-form input,.line-form select{margin-top:5px}.line-desc{grid-column:4}.line-save{display:flex;align-items:end}.line-save button{width:100%;min-height:42px}.line-editor .muted{margin:12px 0 0;color:var(--muted);font-size:12px}@media(max-width:1100px){.line-form{grid-template-columns:1fr 1fr}.line-desc{grid-column:1/-1}.line-save{grid-column:1/-1}.line-save button{width:auto;min-width:160px}}@media(max-width:620px){.line-form{grid-template-columns:1fr}.line-desc,.line-save{grid-column:auto}.line-save button{width:100%}}

/* v0.3.2 invoice workflow */
.row-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.row-actions form{margin:0}.add-more-bar{display:flex;gap:14px;align-items:center;flex-wrap:wrap;margin:18px 0;padding:14px;border:1px dashed #aab3c2;border-radius:12px;background:#fafbfd}.add-more-bar span{color:#5d6675;font-size:.92rem}.edit-line-editor{border-left:4px solid #5b6b8c}.alert.good{background:#eef8f1;border-color:#b9ddc2;color:#215c31}.line-save{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
/* v0.3.3: make saving a draft line explicit and impossible to miss */
.line-form-clear{grid-template-columns:repeat(3,minmax(150px,1fr));}
.line-form-clear .line-desc{grid-column:1/-1}
.line-calc{grid-column:1/-1;padding:12px 14px;border-radius:9px;background:#eef6ff;border:1px solid #c9ddf6;font-size:18px;font-weight:750;text-align:right}
.line-save-main{grid-column:1/-1;border-top:2px solid #d7dde5;margin-top:4px;padding-top:15px;display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.line-save-main .save-line-big{font-size:16px;padding:14px 22px;min-width:290px;background:#0f766e;color:#fff}
.line-save-main span{color:#4b5563;font-size:13px}
@media(max-width:760px){.line-form-clear{grid-template-columns:1fr 1fr}.line-form-clear .line-desc,.line-calc,.line-save-main{grid-column:1/-1}.line-save-main .save-line-big{width:100%;min-width:0}}
