:root{--navy:#1b3a63;--light:#eef2f7;--border:#c9d2dd;--red:#c0272d}*{box-sizing:border-box}body{margin:0;font-family:-apple-system,Segoe UI,Noto Sans Thai,Roboto,Helvetica,Arial,sans-serif;font-size:14px;color:#1f2937;background:#f6f8fb}a{color:var(--navy);text-decoration:none}a:hover{text-decoration:underline}.topbar{background:var(--navy);color:#fff;padding:10px 24px;display:flex;align-items:center;gap:24px}.topbar .brand{font-weight:700;font-size:16px;letter-spacing:1px}.topbar a{color:#dbe5f0}.topbar a:hover{color:#fff;text-decoration:none}.topbar .spacer{flex:1 1}.topbar button{background:transparent;border:1px solid #ffffff55;color:#dbe5f0;border-radius:6px;padding:4px 12px;cursor:pointer}.nav-badge{display:inline-block;background:#ef4444;color:#fff;border-radius:20px;font-size:11px;font-weight:700;padding:1px 7px;margin-left:6px;vertical-align:1px}textarea{width:100%;padding:7px 10px;border:1px solid var(--border);border-radius:6px;font:inherit}.container{max-width:1000px;margin:24px auto;padding:0 16px}.card{background:#fff;border:1px solid var(--border);border-radius:10px;padding:20px;margin-bottom:16px}h1{font-size:20px;margin:0 0 16px}h1,h2{color:var(--navy)}h2{font-size:15px;margin:0 0 10px}label{display:block;font-weight:600;margin-bottom:4px;font-size:13px}input[type=date],input[type=number],input[type=password],input[type=text],select,textarea{width:100%;padding:7px 10px;border:1px solid var(--border);border-radius:6px;font:inherit;background:#fff}input:focus,select:focus,textarea:focus{outline:2px solid #1b3a6333}.row{display:flex;gap:12px}.row>*{flex:1 1}table.grid{width:100%;border-collapse:collapse}table.grid th{background:var(--navy);color:#fff;text-align:left;padding:8px 10px;font-size:13px}table.grid td{border-bottom:1px solid var(--border);padding:6px 10px}table.grid td.num,table.grid th.num{text-align:right}table.grid input{padding:5px 8px}.btn{display:inline-block;background:var(--navy);color:#fff!important;border:none;border-radius:6px;padding:8px 16px;font:inherit;font-weight:600;cursor:pointer}.btn:hover{opacity:.92;text-decoration:none}.btn.secondary{background:#fff;color:var(--navy)!important;border:1px solid var(--navy)}.btn.danger{background:#fff;color:var(--red)!important;border:1px solid var(--red)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.small{padding:4px 10px;font-weight:500;font-size:13px}.badge{display:inline-block;border-radius:20px;padding:2px 10px;font-size:12px;font-weight:600}.badge.draft{background:#fef3c7;color:#92400e}.badge.invoiced{background:#dbeafe;color:#1e40af}.badge.paid{background:#dcfce7;color:#166534}.popup-overlay{position:fixed;inset:0;background:rgba(15,23,42,.45);display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px}.popup-box{background:#fff;border-radius:14px;padding:24px;width:100%;max-width:340px;text-align:center;box-shadow:0 20px 50px rgba(0,0,0,.25)}.popup-icon{width:52px;height:52px;border-radius:50%;margin:0 auto 12px;display:flex;align-items:center;justify-content:center;font-size:26px;font-weight:700;color:#fff}.popup-icon.ok{background:#16a34a}.popup-icon.err{background:var(--red)}.popup-msg{margin-bottom:18px;font-size:15px;white-space:pre-line}.muted{color:#6b7280}.error,.muted{font-size:13px}.error{color:var(--red);margin-top:8px}.totals{text-align:right;font-size:14px;line-height:1.9}.totals .grand{font-weight:700;font-size:16px;color:var(--navy)}.actions{gap:10px}.actions,.checkline{display:flex;flex-wrap:wrap;align-items:center}.checkline{gap:8px;font-weight:400}.checkline input{width:auto}.card{overflow-x:auto}table.grid{min-width:560px}input,select{max-width:100%}@media (max-width:640px){body{font-size:15px}.topbar{padding:10px 12px;gap:14px;overflow-x:auto;white-space:nowrap}.topbar .brand{font-size:15px}.container{margin:12px auto;padding:0 10px}.card{padding:14px;border-radius:8px}.row{flex-direction:column;gap:10px}.btn{padding:10px 16px}input[type=date],input[type=number],input[type=password],input[type=text],select{padding:10px;font-size:15px}.checkline input[type=number],.checkline input[type=text]{width:100%!important}.actions .btn{flex:1 1 auto;text-align:center}.totals{text-align:left}}