@import url(https://fonts.googleapis.com/css2?family=Kanit:wght@300;400;500;600;700&display=swap);:root{--primary-50:#eef2ff;--primary-100:#e0e7ff;--primary-200:#c7d2fe;--primary-300:#a5b4fc;--primary-400:#818cf8;--primary-500:#6366f1;--primary-600:#4f46e5;--primary-700:#4338ca;--primary-800:#3730a3;--primary-900:#312e81;--gray-50:#f9fafb;--gray-100:#f3f4f6;--gray-200:#e5e7eb;--gray-300:#d1d5db;--gray-400:#9ca3af;--gray-500:#6b7280;--gray-600:#4b5563;--gray-700:#374151;--gray-800:#1f2937;--gray-900:#111827;--success:#10b981;--success-light:#d1fae5;--success-dark:#065f46;--warning:#f59e0b;--warning-light:#fef3c7;--warning-dark:#92400e;--error:#ef4444;--error-light:#fee2e2;--error-dark:#991b1b;--info:#3b82f6;--info-light:#dbeafe;--info-dark:#1e40af;--font-family:"Kanit",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;--text-xs:0.75rem;--text-sm:0.875rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:1.25rem;--text-2xl:1.5rem;--text-3xl:1.875rem;--text-4xl:2.25rem;--leading-tight:1.25;--leading-normal:1.5;--leading-relaxed:1.75;--space-1:0.25rem;--space-2:0.5rem;--space-3:0.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--space-10:2.5rem;--space-12:3rem;--space-16:4rem;--radius-sm:0.375rem;--radius-md:0.5rem;--radius-lg:0.75rem;--radius-xl:1rem;--radius-2xl:1.5rem;--radius-full:9999px;--shadow-sm:0 1px 2px 0 #0000000d;--shadow-md:0 1px 3px #0000001a,0 1px 2px #0000000f;--shadow-lg:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f;--shadow-xl:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d;--shadow-2xl:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a;--transition-fast:150ms cubic-bezier(0.4,0,0.2,1);--transition-base:200ms cubic-bezier(0.4,0,0.2,1);--transition-slow:300ms cubic-bezier(0.4,0,0.2,1)}*,:after,:before{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#f9fafb;background-color:var(--gray-50);font-family:Kanit,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-family:var(--font-family);font-size:1rem;font-size:var(--text-base);line-height:1.5;line-height:var(--leading-normal);margin:0}body,h1,h2,h3,h4,h5,h6{color:#111827;color:var(--gray-900)}h1,h2,h3,h4,h5,h6{font-weight:600;line-height:1.25;line-height:var(--leading-tight)}h1{font-size:2.25rem;font-size:var(--text-4xl)}h2{font-size:1.875rem;font-size:var(--text-3xl)}h3{font-size:1.5rem;font-size:var(--text-2xl)}h4{font-size:1.25rem;font-size:var(--text-xl)}h5{font-size:1.125rem;font-size:var(--text-lg)}h6{font-size:1rem;font-size:var(--text-base)}p{line-height:1.75;line-height:var(--leading-relaxed)}a{color:#4f46e5;color:var(--primary-600);text-decoration:none;transition:color .2s cubic-bezier(.4,0,.2,1);transition:color var(--transition-base)}a:hover{color:#4338ca;color:var(--primary-700)}.btn,button{border:none;cursor:pointer;font-family:Kanit,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-family:var(--font-family);font-weight:500;transition:all .2s cubic-bezier(.4,0,.2,1);transition:all var(--transition-base)}.btn:disabled,button:disabled{cursor:not-allowed;opacity:.6}.btn-primary{background:linear-gradient(135deg,#4f46e5,#4338ca);background:linear-gradient(135deg,var(--primary-600) 0,var(--primary-700) 100%);border-radius:.75rem;border-radius:var(--radius-lg);box-shadow:0 4px 12px #6366f14d;font-weight:600;padding:.625rem 1.25rem}.btn-primary:hover{box-shadow:0 6px 16px #6366f166;transform:translateY(-1px)}.btn-primary:active{transform:translateY(0)}.btn-secondary{background:#fff;border:1.5px solid #4f46e5;border:1.5px solid var(--primary-600);border-radius:.75rem;border-radius:var(--radius-lg);color:#4f46e5;color:var(--primary-600);padding:.625rem 1.25rem}.btn-secondary:hover{background:#eef2ff;background:var(--primary-50);border-color:#4338ca;border-color:var(--primary-700)}.btn-success{background:#10b981;background:var(--success);border-radius:.75rem;border-radius:var(--radius-lg);box-shadow:0 4px 12px #10b9814d;padding:.625rem 1.25rem}.btn-success:hover{background:#065f46;background:var(--success-dark);transform:translateY(-1px)}.btn-danger{background:#ef4444;background:var(--error);border-radius:.75rem;border-radius:var(--radius-lg);box-shadow:0 4px 12px #ef44444d;padding:.625rem 1.25rem}.btn-danger:hover{background:#991b1b;background:var(--error-dark);transform:translateY(-1px)}input,select,textarea{background:#fff;border:1.5px solid #d1d5db;border:1.5px solid var(--gray-300);border-radius:.5rem;border-radius:var(--radius-md);font-family:Kanit,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-family:var(--font-family);font-size:1rem;font-size:var(--text-base);padding:.625rem .875rem;transition:all .2s cubic-bezier(.4,0,.2,1);transition:all var(--transition-base)}input:focus,select:focus,textarea:focus{border-color:#6366f1;border-color:var(--primary-500);box-shadow:0 0 0 3px #6366f11a;outline:none}.card{border-radius:1rem;border-radius:var(--radius-xl);box-shadow:0 1px 3px #0000001a,0 1px 2px #0000000f;box-shadow:var(--shadow-md);padding:1.5rem;padding:var(--space-6);transition:all .2s cubic-bezier(.4,0,.2,1);transition:all var(--transition-base)}.card:hover{box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f;box-shadow:var(--shadow-lg);transform:translateY(-2px)}.container{margin:0 auto;max-width:1400px;padding:0 1.5rem;padding:0 var(--space-6);width:100%}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInLeft{0%{opacity:0;transform:translateX(-20px)}to{opacity:1;transform:translateX(0)}}.animate-fade-in{animation:fadeIn .4s cubic-bezier(.4,0,.2,1) .2s;animation:fadeIn .4s var(--transition-base)}.animate-slide-in-left{animation:slideInLeft .4s cubic-bezier(.4,0,.2,1) .2s;animation:slideInLeft .4s var(--transition-base)}.animate-slide-in-right{animation:slideInRight .4s cubic-bezier(.4,0,.2,1) .2s;animation:slideInRight .4s var(--transition-base)}.spinner{animation:spin .6s linear infinite;border:3px solid #e5e7eb;border-top-color:#4f46e5;border:3px solid var(--gray-200);border-top-color:var(--primary-600);margin:100px auto}.page-loading{align-items:center;color:#4b5563;color:var(--gray-600);display:flex;flex-direction:column;justify-content:center;min-height:400px}::-webkit-scrollbar{height:8px;width:8px}::-webkit-scrollbar-track{background:#f3f4f6;background:var(--gray-100)}::-webkit-scrollbar-thumb{background:#9ca3af;background:var(--gray-400);border-radius:9999px;border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:#6b7280;background:var(--gray-500)}::selection{background-color:#c7d2fe;background-color:var(--primary-200);color:#312e81;color:var(--primary-900)}:focus-visible{outline:2px solid #4f46e5;outline:2px solid var(--primary-600);outline-offset:2px}@media print{body{background:#fff}.no-print{display:none!important}}.toast-container{display:flex;flex-direction:column;gap:12px;pointer-events:none;position:fixed;right:24px;top:24px;z-index:10000}.toast{align-items:flex-start;animation:slideInRight .3s cubic-bezier(.4,0,.2,1);background:#fff;border-left:4px solid #0000;border-radius:12px;box-shadow:0 4px 12px #00000026;display:flex;gap:12px;max-width:400px;min-width:300px;padding:16px 20px;pointer-events:auto;transition:all .3s ease}.toast-success{border-left-color:#10b981}.toast-success .toast-icon{color:#10b981}.toast-error{border-left-color:#ef4444}.toast-error .toast-icon{color:#ef4444}.toast-info{border-left-color:#3b82f6}.toast-info .toast-icon{color:#3b82f6}.toast-icon{align-items:center;display:flex;font-size:20px;margin-top:2px}.toast-message{color:#374151;flex:1 1;font-size:14px;font-weight:500;line-height:1.5}.toast-close{background:none;border:none;color:#9ca3af;cursor:pointer;font-size:16px;margin-top:2px;padding:0;transition:color .2s ease}.toast-close:hover{color:#1f2937}@keyframes slideInRight{0%{opacity:0;transform:translateX(100%)}to{opacity:1;transform:translateX(0)}}@media (max-width:480px){.toast-container{bottom:24px;left:20px;right:20px;top:auto}.toast{animation:slideInUp .3s cubic-bezier(.4,0,.2,1);min-width:0;min-width:auto;width:100%}@keyframes slideInUp{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}}.layout{background:#f6f8fb;display:flex;min-height:100vh;position:relative}.offline-banner{align-items:center;animation:slideDown .3s ease;background:linear-gradient(135deg,#f59e0b,#dc2626);box-shadow:0 4px 12px #00000026;color:#fff;display:flex;font-size:.9375rem;font-weight:500;gap:.75rem;justify-content:center;left:0;padding:.875rem 1.5rem;position:fixed;right:0;top:0;z-index:9999}@keyframes slideDown{0%{opacity:0;transform:translateY(-100%)}to{opacity:1;transform:translateY(0)}}.offline-banner svg{animation:pulse 2s ease-in-out infinite;font-size:1.25rem}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.sidebar{background:linear-gradient(180deg,#1f2937,#111827);box-shadow:4px 0 24px #0003;color:#f9fafb;display:flex;flex-direction:column;height:100vh;left:0;overflow:hidden;position:fixed;top:0;transition:transform .3s ease;width:280px;z-index:1000}.sidebar-header{align-items:center;border-bottom:1px solid #ffffff1a;display:flex;flex-shrink:0;justify-content:space-between;padding:20px 24px}.sidebar-header h2{color:#fff;font-size:18px;font-weight:700;letter-spacing:.5px;margin:0;white-space:nowrap}.sidebar-close{background:none;border:none;color:#fff;cursor:pointer;display:none;flex-shrink:0;font-size:24px;opacity:.8;padding:0;transition:opacity .2s ease}.sidebar-close:hover{opacity:1}.sidebar-nav{flex:1 1;overflow-x:hidden;overflow-y:auto;padding:12px 0}.nav-item{align-items:center!important;border-left:3px solid #0000;color:#d1d5db;display:flex!important;flex-shrink:0!important;font-size:13px!important;font-weight:500;gap:10px!important;line-height:1.2!important;max-height:40px!important;min-height:40px!important;padding:10px 16px!important;position:relative;text-decoration:none;transition:all .2s ease}.nav-item,.nav-item span{overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important}.nav-item span{display:inline-block!important;flex:1 1!important;min-width:0!important}.nav-item:hover{background:#ffffff14;border-left-color:#6366f180;color:#fff}.nav-item.active{background:linear-gradient(90deg,#6366f126,#0000);border-left-color:#6366f1;color:#fff}.nav-item svg{flex-shrink:0!important;font-size:16px!important;max-width:16px!important;min-width:16px!important}.sidebar-footer{border-top:1px solid #ffffff1a;flex-shrink:0;padding:16px 20px}.user-info{align-items:center;background:#ffffff0d;border:1px solid #ffffff1a;border-radius:10px;display:flex;gap:12px;margin-bottom:12px;padding:12px}.user-info svg{color:#a5b4fc;flex-shrink:0;font-size:24px}.user-info>div{flex:1 1;min-width:0;overflow:hidden}.user-name{color:#fff;font-size:13px;font-weight:600}.user-name,.user-role{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-role{color:#9ca3af;font-size:11px}.logout-btn{align-items:center;background:#ef444426;border:1px solid #ef44444d;border-radius:8px;color:#fca5a5;cursor:pointer;display:flex;font-family:Kanit,sans-serif;font-size:13px;font-weight:600;gap:8px;justify-content:center;padding:10px;transition:all .2s ease;width:100%}.logout-btn:hover{background:#ef444440;border-color:#ef444480;color:#fecaca}.main-content{display:flex;flex:1 1;flex-direction:column;margin-left:280px;min-height:100vh}.topbar{align-items:center;background:#fff;border-bottom:1px solid #e5e7eb;box-shadow:0 1px 3px #0000001a;display:flex;gap:16px;padding:16px 24px;position:-webkit-sticky;position:sticky;top:0;z-index:100}.menu-toggle{background:none;border:none;border-radius:6px;color:#374151;cursor:pointer;display:none;font-size:24px;padding:8px;transition:background .2s ease}.menu-toggle:hover{background:#f3f4f6}.topbar-title{color:#1f2937;font-size:18px;font-weight:600}.content-wrapper{flex:1 1;margin:0 auto;max-width:1600px;padding:24px;width:100%}.sidebar-overlay{display:none}@media (max-width:768px){.sidebar{transform:translateX(-100%)}.sidebar.open{transform:translateX(0)}.sidebar-close{display:block}.main-content{margin-left:0}.menu-toggle{display:block}.sidebar-overlay{background:#00000080;bottom:0;display:block;left:0;position:fixed;right:0;top:0;z-index:999}.content-wrapper{padding:16px}.sidebar-header h2{font-size:16px}.nav-item{font-size:13px;padding:10px 16px}}@media (max-width:1024px){.sidebar{width:260px}.main-content{margin-left:260px}@media (max-width:768px){.main-content{margin-left:0}}}.loading-spinner-container{align-items:center;display:flex;flex-direction:column;justify-content:center;min-height:400px;width:100%}.loading-spinner-container .spinner{animation:spin 1s linear infinite;border:4px solid #667eea1a;border-left-color:#667eea;border-radius:50%;height:50px;width:50px}.loading-spinner-container p{color:#667eea;font-size:16px;font-weight:500;margin-top:16px}.App{min-height:100vh}.btn{align-items:center;border:none;border-radius:8px;cursor:pointer;display:inline-flex;font-family:Kanit,sans-serif;font-size:14px;font-weight:500;gap:8px;padding:10px 20px;transition:all .3s ease}.btn-primary{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.btn-primary:hover{box-shadow:0 4px 12px #667eea66;transform:translateY(-2px)}.btn-secondary{background:#6c757d;color:#fff}.btn-secondary:hover{background:#5a6268}.btn-success{background:#28a745;color:#fff}.btn-success:hover{background:#218838}.btn-danger{background:#dc3545;color:#fff}.btn-danger:hover{background:#c82333}.btn-outline{background:#0000;border:2px solid #667eea;color:#667eea}.btn-outline:hover{background:#667eea;color:#fff}.btn:disabled{cursor:not-allowed;opacity:.6}.card{background:#fff;border-radius:12px;box-shadow:0 2px 8px #0000001a;margin-bottom:20px;padding:24px}.card-header{align-items:center;border-bottom:2px solid #f0f0f0;display:flex;justify-content:space-between;margin-bottom:20px;padding-bottom:16px}.card-title{color:#333;font-size:20px;font-weight:600}.form-group{margin-bottom:20px}.form-label{color:#333;display:block;font-size:14px;font-weight:500;margin-bottom:8px}.form-control{border:2px solid #e0e0e0;border-radius:8px;font-family:Kanit,sans-serif;font-size:14px;padding:12px;transition:border-color .3s ease;width:100%}.form-control:focus{border-color:#667eea;outline:none}textarea.form-control{min-height:120px;resize:vertical}.table-container{background:#fff;border-radius:12px;box-shadow:0 2px 8px #0000001a;overflow-x:auto}.table{border-collapse:collapse;width:100%}.table thead{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.table th{font-weight:600;text-align:left}.table td,.table th{font-size:14px;padding:16px}.table td{border-bottom:1px solid #f0f0f0}.table tbody tr:hover{background:#f8f9fa}.table tbody tr:last-child td{border-bottom:none}.badge{border-radius:20px;display:inline-block;font-size:12px;font-weight:500;padding:4px 12px}.badge-success{background:#d4edda;color:#155724}.badge-warning{background:#fff3cd;color:#856404}.badge-danger{background:#f8d7da;color:#721c24}.badge-info{background:#d1ecf1;color:#0c5460}.badge-primary{background:#cfe2ff;color:#084298}.alert{align-items:center;border-radius:8px;display:flex;gap:12px;margin-bottom:20px;padding:16px}.alert-success{background:#d4edda;border:1px solid #c3e6cb;color:#155724}.alert-error{background:#f8d7da;border:1px solid #f5c6cb;color:#721c24}.alert-info{background:#d1ecf1;border:1px solid #bee5eb;color:#0c5460}.spinner{animation:spin 1s linear infinite;border:3px solid #f3f3f3;border-radius:50%;border-top-color:#667eea;height:40px;margin:20px auto;width:40px}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@media (max-width:768px){.card{padding:16px}.table-container{font-size:12px}.table td,.table th{padding:12px 8px}}