:root{--ink-900: #0f1b2d;--ink-800: #1b2a40;--ink-700: #33465e;--ink-600: #47597a;--ink-500: #5c6f88;--ink-400: #8598b0;--ink-300: #aebccd;--ink-200: #d3dce6;--ink-100: #e6ecf3;--ink-50: #f4f7fb;--surface: #ffffff;--surface-muted: #f7f9fc;--border: #dfe6ef;--border-strong: #c7d2e0;--brand-900: #0d2b52;--brand-800: #123a70;--brand-700: #16478a;--brand-600: #1c58a8;--brand-500: #2568c0;--brand-100: #dfeafc;--brand-50: #eff5fd;--accent-600: #0b8f7c;--accent-100: #dcf3ee;--status-neutral-bg: #eef1f5;--status-neutral-fg: #55606f;--status-info-bg: #e2eefd;--status-info-fg: #17568f;--status-success-bg: #e3f6ec;--status-success-fg: #167a4e;--status-warning-bg: #fdf1dc;--status-warning-fg: #93630a;--status-danger-bg: #fce9e8;--status-danger-fg: #b3261e;--status-void-bg: #eceef1;--status-void-fg: #7c8493;--danger-600: #c0392b;--danger-100: #fbe9e8;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px;--sp-7: 32px;--sp-8: 40px;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 16px;--radius-pill: 999px;--shadow-sm: 0 1px 2px rgba(15, 27, 45, .06);--shadow-md: 0 6px 20px rgba(15, 27, 45, .08);--shadow-lg: 0 16px 40px rgba(15, 27, 45, .16);--font-sans: "Sarabun", "Noto Sans Thai", "Segoe UI", system-ui, -apple-system, sans-serif}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;font-family:var(--font-sans);background:var(--ink-50);color:var(--ink-800);font-size:14.5px;line-height:1.5;-webkit-font-smoothing:antialiased}h1,h2,h3,h4{font-weight:700;color:var(--ink-900);letter-spacing:-.01em}h2{margin:0;font-size:21px}h3{margin:0 0 var(--sp-1);font-size:16px}h4{margin:var(--sp-2) 0 0;font-size:13.5px;color:var(--ink-700);text-transform:uppercase;letter-spacing:.04em}a{color:var(--brand-600)}code{background:var(--ink-100);padding:1px 6px;border-radius:4px;font-size:.95em}.app-shell{min-height:100vh;display:flex;flex-direction:column}.app-header{position:sticky;top:0;z-index:20;background:linear-gradient(180deg,var(--brand-900),var(--brand-800));box-shadow:var(--shadow-md)}.topbar{display:flex;align-items:center;gap:var(--sp-5);padding:var(--sp-3) var(--sp-6);color:#fff}.brand{font-weight:700;font-size:15.5px;display:flex;align-items:center;gap:var(--sp-3);white-space:nowrap;letter-spacing:-.01em}.brand-mark{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:var(--radius-sm);background:#ffffff24;font-size:14px;font-weight:800;flex:none}.brand-logo{height:34px;max-width:130px;background:#fff;border-radius:6px;padding:3px 8px;object-fit:contain}.company-switcher{padding:7px 12px;border-radius:var(--radius-sm);border:1px solid rgba(255,255,255,.25);background:#ffffff1a;color:#fff;font-size:13.5px;font-family:inherit;max-width:220px}.company-switcher option{color:var(--ink-900)}.topbar-spacer{flex:1}.user-menu{display:flex;align-items:center;gap:var(--sp-3);font-size:13px;white-space:nowrap}.user-menu a{color:#fff;text-decoration:none;font-weight:600}.user-menu a:hover{text-decoration:underline}.role-pill{background:#ffffff29;padding:3px 10px;border-radius:var(--radius-pill);font-size:10.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase}.user-menu button{background:transparent;border:1px solid rgba(255,255,255,.35);color:#fff;border-radius:var(--radius-sm);padding:6px 12px;font-size:12.5px;cursor:pointer}.user-menu button:hover{background:#ffffff1f}.topnav{display:flex;flex-wrap:wrap;gap:2px;padding:0 var(--sp-6) var(--sp-2);border-top:1px solid rgba(255,255,255,.1);padding-top:var(--sp-2)}.topnav a{color:#ffffffb8;text-decoration:none;font-size:13.5px;font-weight:500;padding:6px 12px;border-radius:var(--radius-pill);transition:background .12s ease,color .12s ease}.topnav a:hover{color:#fff;background:#ffffff14}.topnav a.active{color:var(--brand-900);font-weight:700;background:#fff}.content{flex:1;padding:var(--sp-6);max-width:1220px;width:100%;margin:0 auto}.page-header{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:var(--sp-3);margin:var(--sp-2) 0 var(--sp-5)}.page-header h3{margin-top:var(--sp-6)}.page-header:first-child h3{margin-top:0}button{background:var(--brand-600);color:#fff;border:none;border-radius:var(--radius-sm);padding:9px 16px;font-size:13.5px;font-weight:600;font-family:inherit;cursor:pointer;transition:background .12s ease,box-shadow .12s ease,transform .05s ease}button:hover{background:var(--brand-700)}button:active{transform:translateY(1px)}button:disabled{opacity:.55;cursor:not-allowed;transform:none}button[type=button]{background:var(--surface);color:var(--ink-700);border:1px solid var(--border-strong)}button[type=button]:hover{background:var(--surface-muted);border-color:var(--ink-300);color:var(--ink-900)}button.btn-danger,button[type=button].btn-danger{background:var(--surface);color:var(--danger-600);border:1px solid #f0c6c2}button.btn-danger:hover,button[type=button].btn-danger:hover{background:var(--danger-100);border-color:var(--danger-600)}button.link-button{background:none;color:var(--brand-600);border:1px solid transparent;padding:4px 9px;font-size:12.5px;font-weight:600;border-radius:var(--radius-sm)}button.link-button:hover{background:var(--brand-50);color:var(--brand-800)}button.link-button.danger{color:var(--danger-600)}button.link-button.danger:hover{background:var(--danger-100)}.card-form{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--sp-6);margin-bottom:var(--sp-6);display:flex;flex-direction:column;gap:var(--sp-4);max-width:760px;box-shadow:var(--shadow-sm)}.card-form h3{padding-bottom:var(--sp-3);border-bottom:1px solid var(--border)}.card-form label{display:flex;flex-direction:column;gap:var(--sp-1);font-size:12.5px;font-weight:600;color:var(--ink-600)}.card-form input,.card-form select,.card-form textarea,.auth-card input,select,input[type=text],input[type=email],input[type=password],input[type=number],input[type=date],input[type=file],textarea{padding:9px 11px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);font-size:14px;font-family:inherit;color:var(--ink-900);background:var(--surface);transition:border-color .12s ease,box-shadow .12s ease}.card-form input:focus,.card-form select:focus,.card-form textarea:focus,.auth-card input:focus,select:focus,input:focus,textarea:focus{outline:none;border-color:var(--brand-500);box-shadow:0 0 0 3px var(--brand-100)}.card-form .row{display:flex;gap:var(--sp-3);flex-wrap:wrap}.card-form .row label{flex:1;min-width:140px}.status-select{padding:4px 8px;border-radius:var(--radius-pill);border:1px solid var(--border-strong);font-size:12px;font-weight:600;background:var(--surface-muted);color:var(--ink-800)}.data-table{width:100%;border-collapse:separate;border-spacing:0;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-sm);margin-bottom:var(--sp-6)}.data-table th,.data-table td{padding:11px 16px;border-bottom:1px solid var(--ink-100);text-align:left;font-size:13.5px;vertical-align:middle}.data-table thead th{background:var(--surface-muted);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-500);border-bottom:1px solid var(--border);white-space:nowrap}.data-table tbody tr:last-child td{border-bottom:none}.data-table tbody tr:hover{background:var(--brand-50)}.data-table tfoot td{background:var(--surface-muted);font-weight:700;border-top:1px solid var(--border);border-bottom:none}.data-table .num{text-align:right;font-variant-numeric:tabular-nums}.data-table .num-input{width:92px;text-align:right}.row-actions{display:flex;align-items:center;gap:4px}.icon-button{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;padding:0;background:transparent;color:var(--ink-600);border:1px solid transparent;border-radius:var(--radius-sm);flex:none}.icon-button:hover:not(:disabled){background:var(--brand-50);color:var(--brand-700);border-color:var(--brand-100)}.icon-button.danger{color:var(--danger-600)}.icon-button.danger:hover:not(:disabled){background:var(--danger-100);border-color:#f0c6c2}.icon-button:disabled{opacity:.4;cursor:not-allowed}.row-actions-menu{position:fixed;z-index:200;min-width:190px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);padding:6px;display:flex;flex-direction:column;gap:1px}.row-actions-menu-item{display:flex;align-items:center;gap:9px;width:100%;background:none;border:none;color:var(--ink-700);font-size:13px;font-weight:600;padding:8px 10px;border-radius:var(--radius-sm);text-align:left;cursor:pointer}.row-actions-menu-item:hover:not(:disabled){background:var(--surface-muted);color:var(--ink-900)}.row-actions-menu-item.danger{color:var(--danger-600)}.row-actions-menu-item.danger:hover:not(:disabled){background:var(--danger-100)}.row-actions-menu-item:disabled{opacity:.45;cursor:not-allowed}.row-actions-menu-item svg{flex:none;color:inherit}.muted{color:var(--ink-400);font-size:12.5px}.error{color:var(--danger-600);font-size:12.5px}.status-pill{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:var(--radius-pill);font-size:11px;font-weight:700;letter-spacing:.02em;text-transform:capitalize;background:var(--status-neutral-bg);color:var(--status-neutral-fg);white-space:nowrap}.status-paid,.status-accepted{background:var(--status-success-bg);color:var(--status-success-fg)}.status-issued,.status-sent{background:var(--status-info-bg);color:var(--status-info-fg)}.status-partially_paid,.status-expired{background:var(--status-warning-bg);color:var(--status-warning-fg)}.status-overdue,.status-rejected{background:var(--status-danger-bg);color:var(--status-danger-fg)}.status-void,.status-draft{background:var(--status-void-bg);color:var(--status-void-fg)}.status-active{background:var(--status-success-bg);color:var(--status-success-fg)}.status-deactivated{background:var(--status-void-bg);color:var(--status-void-fg)}.stat-cards{display:flex;gap:var(--sp-4);margin-bottom:var(--sp-6);flex-wrap:wrap}.stat-card{background:var(--surface);border:1px solid var(--border);border-left:4px solid var(--brand-500);border-radius:var(--radius-lg);padding:var(--sp-4) var(--sp-5);flex:1;min-width:190px;box-shadow:var(--shadow-sm)}.stat-card .stat-label{font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-500);margin-bottom:var(--sp-2)}.stat-card .stat-value{font-size:26px;font-weight:800;color:var(--ink-900);font-variant-numeric:tabular-nums;letter-spacing:-.01em}.stat-card.warn{border-left-color:var(--status-warning-fg)}.stat-card.warn .stat-value{color:var(--status-warning-fg)}.items-editor .data-table{margin-bottom:var(--sp-2)}.items-editor .catalog-picker{align-items:flex-end;margin-bottom:var(--sp-1)}.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at top,var(--brand-800),var(--brand-900) 60%);padding:var(--sp-5)}.auth-card{background:var(--surface);padding:var(--sp-7) var(--sp-6);border-radius:var(--radius-lg);width:360px;display:flex;flex-direction:column;gap:var(--sp-4);box-shadow:var(--shadow-lg)}.auth-card h1{font-size:19px;margin:0 0 var(--sp-1)}.auth-card label{display:flex;flex-direction:column;gap:var(--sp-1);font-size:12.5px;font-weight:600;color:var(--ink-600)}.auth-switch{font-size:12.5px;color:var(--ink-500);text-align:center}.form-error{color:var(--danger-600);font-size:13px;margin:0;background:var(--danger-100);border-radius:var(--radius-sm);padding:var(--sp-2) var(--sp-3)}.form-success{color:var(--status-success-fg);font-size:13px;margin:0;background:var(--status-success-bg);border-radius:var(--radius-sm);padding:var(--sp-2) var(--sp-3)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0d162680;-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px);display:flex;align-items:center;justify-content:center;padding:var(--sp-5);z-index:100;overflow-y:auto}.modal{margin:auto;width:100%;box-shadow:var(--shadow-lg);max-height:calc(100vh - var(--sp-8));overflow-y:auto}.loading-screen{display:flex;align-items:center;justify-content:center;height:100vh;color:var(--ink-500);font-weight:600}@media (max-width: 720px){.topbar{flex-wrap:wrap;padding:var(--sp-3) var(--sp-4)}.topnav{padding:0 var(--sp-4) var(--sp-2)}.content,.card-form{padding:var(--sp-4)}}
