:root{--navy:#062d4d;--blue:#0d73d5;--blue2:#1d8cf2;--bg:#f3f7fb;--text:#17212b;--muted:#72808e;--border:#dbe4ec;--white:#fff;--green:#12a66a;--red:#e5484d;--orange:#ef9b22;--purple:#7856d8}*{box-sizing:border-box}body{margin:0;font-family:Inter,Arial,sans-serif;background:var(--bg);color:var(--text)}a{text-decoration:none;color:inherit}.app{display:flex;min-height:100vh}.sidebar{width:235px;background:linear-gradient(180deg,#062b49,#061d31);color:#d8e6f1;position:fixed;left:0;top:0;bottom:0;z-index:10}.brand{height:68px;padding:12px 16px;display:flex;align-items:center;gap:10px;border-bottom:1px solid #ffffff16}.brand-mark{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;border:2px solid #f59c28;color:#fff;font-weight:800}.brand b{display:block;color:#fff}.brand small{color:#9fb4c5}.nav{padding:12px 8px}.nav a{display:flex;align-items:center;gap:12px;padding:11px 12px;border-radius:7px;font-size:14px;margin:2px 0}.nav a:hover,.nav a.active{background:#0e5d8e;color:#fff}.main{margin-left:235px;width:calc(100% - 235px)}.topbar{height:68px;background:#fff;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 22px;position:sticky;top:0;z-index:5}.search{background:#eef4f8;border-radius:7px;padding:10px 14px;width:300px;border:0}.user{display:flex;align-items:center;gap:10px}.avatar{width:36px;height:36px;border-radius:50%;background:#e7edf2;display:grid;place-items:center}.content{padding:22px}.page-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}.page-title h1{font-size:24px;margin:0}.muted{color:var(--muted);font-size:13px}.btn{border:0;border-radius:6px;padding:10px 16px;display:inline-block;cursor:pointer;font-weight:600}.primary{background:var(--blue);color:#fff}.secondary{background:#edf3f7;color:#254055}.danger{background:#ffe9ea;color:#b62329}.cards{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.card{background:#fff;border:1px solid var(--border);border-radius:9px;padding:18px;box-shadow:0 2px 7px #14324d0a}.stat{display:flex;align-items:center;justify-content:space-between}.stat .icon{width:42px;height:42px;border-radius:9px;display:grid;place-items:center;background:#eaf6ef;color:var(--green);font-weight:800}.stat h2{margin:5px 0;font-size:22px}.grid2{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.panel{background:#fff;border:1px solid var(--border);border-radius:9px;padding:18px;margin-top:16px}.panel h3{margin:0 0 14px}.table-wrap{overflow:auto}.table{width:100%;border-collapse:collapse;font-size:13px}.table th,.table td{padding:11px 10px;border-bottom:1px solid #edf1f4;text-align:left;white-space:nowrap}.table th{background:#f7fafc;color:#596a78}.badge{padding:4px 8px;border-radius:20px;font-size:11px;font-weight:700}.ok{background:#e6f7ee;color:#087a4f}.low{background:#fff1d9;color:#a86300}.out{background:#ffe6e6;color:#b32020}label{font-size:13px;font-weight:600;color:#455562;display:block}input,select,textarea{width:100%;margin-top:6px;border:1px solid #cfd9e2;border-radius:6px;padding:10px 11px;background:#fff;font:inherit}textarea{min-height:100px}.form-actions{margin-top:16px;display:flex;gap:10px}.login-bg,.install-bg{min-height:100vh;background:linear-gradient(120deg,#063454,#0875b8);display:grid;place-items:center}.login-card,.install-card{background:#fff;border-radius:12px;padding:30px;width:min(460px,94vw);box-shadow:0 18px 50px #001e3c55}.login-card .brand{color:#18364b;border:0;padding:0 0 20px}.login-card .brand b{color:#18364b}.error{background:#ffe9ea;color:#a51f25;padding:10px;border-radius:6px;margin:10px 0}.success{background:#e5f7ed;color:#087b50;padding:10px;border-radius:6px;margin:10px 0}.chart{height:260px;display:flex;align-items:end;gap:14px;padding:15px 8px;border-top:1px solid var(--border)}.bar{flex:1;background:#2b8be0;border-radius:4px 4px 0 0;min-width:25px}.bar.p{background:#f07d7d}.legend{display:flex;gap:18px;font-size:12px}.dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:#2b8be0}.dot.p{background:#f07d7d}.install-card h1{margin-top:0}.install-card .grid2{margin-bottom:16px}.print-only{display:none}@media(max-width:1050px){.cards{grid-template-columns:repeat(2,1fr)}.sidebar{width:210px}.main{margin-left:210px;width:calc(100% - 210px)}}@media(max-width:760px){.sidebar{position:fixed;transform:translateX(-100%);transition:.2s}.main{margin-left:0;width:100%}.cards,.grid2,.grid3{grid-template-columns:1fr}.topbar{padding:0 12px}.search{width:160px}.content{padding:12px}.page-title{align-items:flex-start;gap:10px}.hide-mobile{display:none}}@media print{.sidebar,.topbar,.no-print{display:none!important}.main{margin:0;width:100%}.content{padding:0}.print-only{display:block}}
.invoice{max-width:1000px;margin:0 auto;background:#fff;border:1px solid var(--border);padding:28px;box-shadow:0 4px 18px #14324d12}.invoice-head{display:flex;justify-content:space-between;gap:25px;border-bottom:2px solid #0d73d5;padding-bottom:16px;margin-bottom:16px}.invoice-head h2{margin:0 0 5px}.invoice-head p{margin:3px 0;font-size:13px;color:#566775}.doc-title{text-align:right}.doc-title h1{margin:0 0 6px;color:#0d73d5}.billto{padding:12px;background:#f7fafc;margin-bottom:16px}.totals{margin:18px 0 0 auto;max-width:320px;text-align:right;line-height:1.8}.totals .grand{font-size:20px;font-weight:800;border-top:2px solid #dbe4ec;padding-top:6px}.invoice-foot{display:flex;justify-content:space-between;margin-top:35px;padding-top:20px;border-top:1px solid var(--border)}.terms{margin-top:24px;font-size:13px}.paper .table th{background:#eef5fa}@media(max-width:760px){.invoice{padding:14px}.invoice-head{display:block}.doc-title{text-align:left;margin-top:15px}.invoice .table{font-size:11px}.invoice .table th,.invoice .table td{padding:7px 5px}.invoice-foot{display:block}.invoice-foot>div:last-child{margin-top:25px}}@media print{body{background:#fff}.paper{border:0;box-shadow:none;max-width:none;padding:0}.invoice .table th,.invoice .table td{white-space:normal}.content{padding:0!important}.page-title.no-print{display:none!important}}
.live-totals{margin-top:14px;text-align:right;display:grid;gap:6px}.live-totals .grand{font-size:16px;padding-top:6px;border-top:1px solid var(--border)}
@media(max-width:760px){.live-totals{text-align:left}.table .btn{margin-bottom:4px}}
