:root{--navy:#172554;--blue:#3155d9;--blue2:#eef2ff;--bg:#f5f7fb;--text:#172033;--muted:#6b7280;--line:#e5e7eb;--green:#16805a;--red:#b42318;--amber:#b7791f;--white:#fff}*{box-sizing:border-box}body{margin:0;font-family:Inter,Arial,Helvetica,sans-serif;background:var(--bg);color:var(--text)}a{text-decoration:none;color:inherit}.app{min-height:100vh;display:flex}.sidebar{width:250px;background:linear-gradient(180deg,#18234a,#111b3b);color:#fff;position:fixed;left:0;top:0;bottom:0;padding:22px 14px;overflow:auto}.logo{display:flex;gap:12px;align-items:center;padding:5px 8px 24px}.logo-badge,.brand-mark{width:42px;height:42px;border-radius:12px;background:#fff;color:#233ca4;display:grid;place-items:center;font-weight:900;font-size:22px}.logo small{display:block;color:#aeb9e8;margin-top:2px}.nav-title{font-size:11px;text-transform:uppercase;letter-spacing:.11em;color:#8794c2;padding:18px 12px 8px}.nav a{display:flex;align-items:center;gap:10px;color:#dbe1ff;padding:11px 12px;border-radius:9px;margin:3px 0;font-size:14px}.nav a:hover,.nav a.active{background:rgba(255,255,255,.11);color:#fff}.main{margin-left:250px;min-height:100vh;width:calc(100% - 250px)}.topbar{height:68px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 26px;position:sticky;top:0;z-index:10}.content{padding:26px}.page-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:20px}.page-head h1{font-size:24px;margin:0}.page-head p{margin:5px 0 0;color:var(--muted)}.grid{display:grid;gap:18px}.kpis{grid-template-columns:repeat(4,minmax(0,1fr))}.card{background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:0 4px 16px rgba(17,24,39,.04)}.card-body{padding:20px}.kpi .label{color:var(--muted);font-size:13px}.kpi .value{font-size:28px;font-weight:800;margin-top:9px}.kpi .hint{font-size:12px;color:var(--muted);margin-top:6px}.section-title{font-size:17px;font-weight:800;margin:0 0 14px}.btn{border:0;border-radius:9px;padding:10px 15px;display:inline-block;cursor:pointer;font-weight:700;font-size:13px}.btn.primary{background:var(--blue);color:#fff}.btn.secondary{background:#eef0f5;color:#2d3748}.btn.danger{background:#feeceb;color:var(--red)}.btn.success{background:#e7f7ef;color:var(--green)}.btn.sm{padding:7px 10px;font-size:12px}.full{width:100%;text-align:center}.table-wrap{overflow:auto}.table{width:100%;border-collapse:collapse;font-size:13px}.table th{background:#f8fafc;color:#596174;text-align:left;padding:12px;border-bottom:1px solid var(--line);white-space:nowrap}.table td{padding:12px;border-bottom:1px solid #edf0f3;vertical-align:top}.table tr:last-child td{border-bottom:0}.badge{display:inline-block;padding:5px 8px;border-radius:20px;background:#eef2ff;color:#3147a8;font-size:11px;font-weight:800}.badge.green{background:#e8f7ef;color:#176b4b}.badge.red{background:#feeceb;color:#a33229}.badge.amber{background:#fff5df;color:#8a5c0a}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}.form-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}label{display:block;font-size:12px;font-weight:800;margin:0 0 6px;color:#4b5563}input,select,textarea{width:100%;border:1px solid #d9dee8;border-radius:9px;padding:10px 11px;background:#fff;color:#172033;font:inherit}textarea{min-height:88px;resize:vertical}.span2{grid-column:span 2}.span3{grid-column:span 3}.actions{display:flex;gap:8px;flex-wrap:wrap}.alert{padding:12px 14px;border-radius:9px;margin-bottom:16px;font-size:13px}.alert.success{background:#e8f7ef;color:#176b4b}.alert.danger{background:#feeceb;color:#a33229}.login-body{min-height:100vh;display:grid;place-items:center;background:radial-gradient(circle at top,#e9edff,#f5f7fb 50%)}.login-card{width:min(440px,92vw);background:#fff;padding:30px;border-radius:18px;box-shadow:0 18px 60px rgba(31,42,84,.15)}.login-card .brand-mark{background:#263fa8;color:#fff;margin:0 auto}.login-card h1{text-align:center;margin:13px 0 5px}.login-card .muted{text-align:center}.login-card label{margin-top:15px}.login-card .btn{margin-top:20px}.muted{color:var(--muted)}.setup-note{font-size:12px;color:var(--muted);margin:20px 0 0;text-align:center}.items-table input{min-width:95px}.items-table .desc{min-width:260px}.doc{background:#fff;max-width:900px;margin:0 auto;padding:35px;border:1px solid #ddd}.doc h1{text-align:center}.doc-header{text-align:center;margin-bottom:22px}.doc-meta{display:grid;grid-template-columns:1fr 1fr;gap:15px;margin:20px 0}.doc-table{width:100%;border-collapse:collapse}.doc-table th,.doc-table td{border:1px solid #333;padding:8px;font-size:12px}.doc-total{margin-left:auto;width:46%;margin-top:12px}.doc-total td{padding:7px;border-bottom:1px solid #ddd}.right{text-align:right}.mobile-menu{display:none}.two-col{grid-template-columns:2fr 1fr}@media(max-width:980px){.sidebar{transform:translateX(-100%);z-index:30}.sidebar.open{transform:translateX(0)}.main{margin-left:0;width:100%}.mobile-menu{display:inline-block}.kpis{grid-template-columns:repeat(2,1fr)}.two-col{grid-template-columns:1fr}.form-grid.three{grid-template-columns:1fr 1fr}.span3{grid-column:span 2}}@media(max-width:640px){.content{padding:16px}.topbar{padding:0 14px}.kpis,.form-grid,.form-grid.three{grid-template-columns:1fr}.span2,.span3{grid-column:span 1}.page-head{align-items:flex-start;flex-direction:column}.doc{padding:15px}.doc-meta{grid-template-columns:1fr}}
@media print{.sidebar,.topbar,.no-print{display:none!important}.main{margin:0;width:100%}.content{padding:0}.doc{border:0;box-shadow:none;max-width:none}}
.three-col{grid-template-columns:repeat(3,minmax(0,1fr))}.readbox{border:1px solid #e1e5ec;border-radius:9px;padding:11px;background:#f9fafb;min-height:42px}.totals-view{margin:18px 0 0 auto;max-width:390px;padding:14px;border:1px solid #e2e7ef;border-radius:10px;line-height:1.8;text-align:right}.doc-preview{max-width:760px;margin:0 auto;border:1px solid #222;background:#fff}.doc-title{background:#0878bd;color:#fff;text-align:center;font-weight:800;font-size:22px;padding:16px}.doc-row{display:grid;grid-template-columns:165px 1fr;min-height:48px;border-top:1px solid #222}.doc-row b{padding:14px;border-right:1px solid #222;text-align:right}.doc-row span{padding:14px}.record-print{max-width:1200px;margin:0 auto;background:#fff;padding:24px}.record-print h1{text-align:center}.record-print table{width:100%;border-collapse:collapse;font-size:11px}.record-print th,.record-print td{border:1px solid #555;padding:6px;vertical-align:top}.record-print th{background:#0878bd;color:white}.print-toolbar{max-width:1200px;margin:15px auto;display:flex;gap:8px}@media(max-width:980px){.three-col{grid-template-columns:1fr}}@media print{.record-print{padding:0;max-width:none}.record-print th{background:#ddd!important;color:#000!important}.doc-preview{max-width:none}.print-toolbar{display:none!important}}

/* ERP v3 document-style quotation and tax invoice */
.erp-paper{background:#fff;max-width:900px;margin:0 auto;padding:28px 32px;border:1px solid #d7d7d7;color:#111;font-family:Arial,"Khmer OS Siemreap","Noto Sans Khmer",sans-serif}
.erp-letterhead{display:grid;grid-template-columns:170px 1fr;align-items:center;gap:20px;padding:5px 5px 10px;border-bottom:1px solid #111}
.erp-letterhead-logo{text-align:center}.erp-company-logo{max-width:145px;max-height:105px;object-fit:contain}.erp-logo-placeholder{width:125px;height:90px;margin:auto;border:2px solid #0878bd;display:flex;align-items:center;justify-content:center;text-align:center;font-weight:900;color:#0878bd;border-radius:18px}
.erp-letterhead-company{text-align:center;line-height:1.55}.erp-letterhead-company.align-left{text-align:left}.erp-kh-line{font-size:15px;font-weight:700}.erp-company-name{font-size:15px;font-weight:800;margin:2px 0}.erp-small{font-size:11px}
.erp-doc-title{text-align:center;font-weight:800;border:1px solid #111;border-top:0;padding:6px;font-size:16px;line-height:1.45}.erp-doc-title span{font-size:14px}
.erp-meta-table,.erp-items-table,.erp-totals-table,.erp-invoice-totals{width:100%;border-collapse:collapse;font-size:11px}.erp-meta-table td,.erp-meta-table th,.erp-items-table td,.erp-items-table th,.erp-totals-table td,.erp-invoice-totals td{border:1px solid #111;padding:6px;vertical-align:top}.erp-meta-table th{text-align:left;background:#fff}.erp-meta-table .label{font-weight:700;width:24%}.erp-items-table{margin-top:14px}.erp-items-table th{text-align:center;font-weight:700;background:#fff}.erp-items-table tbody tr{min-height:45px}.erp-items-table tbody td{height:48px}.erp-item-empty td{height:210px;vertical-align:middle}
.erp-bottom-grid{display:grid;grid-template-columns:1fr 42%;gap:0;margin-top:0}.erp-terms{border-left:1px solid #111;border-bottom:1px solid #111;padding:8px;min-height:118px;font-size:11px}.erp-totals-table{margin:0}.erp-totals-table td:first-child{font-weight:700}.erp-invoice-totals{width:50%;margin-left:auto;margin-top:0}.erp-invoice-totals td:first-child{font-weight:700}.erp-signatures{display:grid;grid-template-columns:1fr 1fr;gap:90px;margin-top:75px;font-size:11px;min-height:100px}.erp-signatures>div{padding:0 5px}.invoice-sign{text-align:center;margin-top:85px}.sig-line{border-top:1px solid #111;margin:0 auto 6px;max-width:190px}.center{text-align:center}
.erp-view-wrap{overflow:auto;padding:12px;background:#eef1f5;border-radius:12px}
.logo-preview-box{border:1px dashed #c8cfda;border-radius:10px;padding:12px;display:flex;align-items:center;gap:15px;min-height:100px}.logo-preview-box img{max-width:150px;max-height:90px;object-fit:contain}
@media(max-width:720px){.erp-paper{min-width:760px;padding:20px}.erp-view-wrap{overflow:auto}.erp-letterhead{grid-template-columns:145px 1fr}}
@media print{body{background:#fff}.erp-paper{border:0;max-width:none;padding:8mm 10mm}.erp-item-empty td{height:170px}.erp-view-wrap{padding:0;background:#fff}.erp-signatures{margin-top:55px}}

/* v5 isolated A4 preview frame */
.erp-document-frame-wrap{background:#eef1f5;border:1px solid #dfe4ec;border-radius:12px;padding:0;overflow:hidden;box-shadow:0 4px 18px rgba(17,24,39,.05)}
.erp-document-frame{display:block;width:100%;height:1180px;border:0;background:#eef1f5}
@media(max-width:900px){.erp-document-frame{height:1120px}}
@media(max-width:640px){.erp-document-frame{height:1080px}}
