:root{--red:#e11b22;--ink:#1a1a1a;--body:#333;--muted:#7a7a7a;--line:#e7e7e7;--soft:#f7f7f8;--green:#1a8a3a;--amber:#b8860b;--bg:#fbfbfc}*{box-sizing:border-box;margin:0;padding:0}body,html{height:100%}body{font-family:-apple-system,Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--body);background:var(--bg);font-size:14px;line-height:1.5}a{color:inherit;text-decoration:none}.app{display:grid;grid-template-columns:220px 1fr;min-height:100vh}.sidebar{background:var(--ink);color:#fff;padding:20px 14px;position:-webkit-sticky;position:sticky;top:0;height:100vh}.brand{display:flex;align-items:baseline;gap:8px;margin-bottom:24px;padding:0 8px}.brand .mark{background:var(--red);color:#fff;font-weight:800;letter-spacing:2px;padding:5px 9px;border-radius:4px;font-size:15px}.brand .sub{font-size:9px;letter-spacing:2px;color:#bbb}.nav a{display:block;padding:9px 12px;border-radius:7px;color:#cfcfcf;font-weight:500;margin-bottom:2px}.nav a:hover{background:#2a2a2a;color:#fff}.nav a.active{background:var(--red);color:#fff}.sidebar .foot{position:absolute;bottom:16px;left:14px;right:14px;font-size:11px;color:#888}.sidebar .foot a{color:#aaa}.main{padding:28px 34px;max-width:1150px}.page-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:22px}.page-head h1{font-size:22px;color:var(--ink);font-weight:700}.page-head .sub{color:var(--muted);font-size:13px;margin-top:2px}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));grid-gap:14px;gap:14px;margin-bottom:22px}.card{background:#fff;border:1px solid var(--line);border-radius:11px;padding:16px 18px}.card .label{font-size:11px;letter-spacing:.6px;text-transform:uppercase;color:var(--muted)}.card .value{font-size:24px;font-weight:800;color:var(--ink);margin-top:6px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.card .value.red{color:var(--red)}.card .value.green{color:var(--green)}.card .hint{font-size:12px;color:var(--muted);margin-top:3px}.panel{background:#fff;border:1px solid var(--line);border-radius:11px;margin-bottom:20px;overflow:hidden}.panel>h2{font-size:14px;font-weight:700;color:var(--ink);padding:14px 18px;border-bottom:1px solid var(--line)}.panel .body{padding:16px 18px}table{width:100%;border-collapse:collapse}th{text-align:left;font-size:11px;letter-spacing:.5px;text-transform:uppercase;color:var(--muted);padding:10px 18px}td,th{border-bottom:1px solid var(--line)}td{padding:11px 18px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}tr:last-child td{border-bottom:none}td.num,th.num{text-align:right}tbody tr:hover{background:var(--soft)}.badge{display:inline-block;font-size:11px;font-weight:700;padding:2px 9px;border-radius:20px}.badge.paid{background:#e4f5e9;color:var(--green)}.badge.part_paid{background:#fff4d6;color:var(--amber)}.badge.overdue{background:#fde7e7;color:var(--red)}.badge.draft,.badge.invoiced,.badge.pending,.badge.sent{background:var(--soft);color:var(--muted)}.badge.gst{background:#ece9fd;color:#5b3fd6}.badge.nongst{background:var(--soft);color:var(--muted)}.btn{display:inline-block;background:var(--red);color:#fff;border:none;border-radius:8px;padding:9px 16px;font-weight:600;font-size:13px;cursor:pointer}.btn:hover{filter:brightness(.94)}.btn.ghost{background:#fff;color:var(--ink);border:1px solid var(--line)}.btn.sm{padding:6px 11px;font-size:12px}form.stack{display:grid;grid-gap:13px;gap:13px;max-width:460px}.field{display:grid;grid-gap:5px;gap:5px}.field label{font-size:12px;font-weight:600;color:var(--ink)}input,select,textarea{border:1px solid var(--line);border-radius:8px;padding:9px 11px;font-size:14px;font-family:inherit;background:#fff;width:100%}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--red)}.row2{display:grid;grid-template-columns:1fr 1fr;grid-gap:12px;gap:12px}.login-wrap{display:grid;place-items:center;min-height:100vh;background:var(--ink)}.login-card{background:#fff;border-radius:14px;padding:32px;width:340px}.login-card .mark{background:var(--red);color:#fff;font-weight:800;letter-spacing:3px;padding:8px 14px;border-radius:5px;display:inline-block;margin-bottom:4px}.err{color:var(--red);font-size:13px}.muted{color:var(--muted)}.right{text-align:right}.rec{padding:12px 18px;border-bottom:1px solid var(--line)}.rec:last-child{border-bottom:none}.rec .action{font-weight:600;color:var(--ink)}.rec .signal{font-size:12px;color:var(--muted);margin-top:2px}.flex{gap:10px}.flex,.spread{display:flex;align-items:center}.spread{justify-content:space-between}