: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-25: #fcfcfd;--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;--gray-950: #030712;--success-500: #22c55e;--success-50: #f0fdf4;--warning-500: #f59e0b;--warning-50: #fffbeb;--danger-500: #ef4444;--danger-50: #fef2f2;--info-500: #3b82f6;--surface-bg: #f0f2f5;--surface-card: #ffffff;--surface-sidebar: #0f172a;--surface-sidebar-hover: #1e293b;--surface-sidebar-active: rgba(99, 102, 241, .15);--surface-topbar: #ffffff;--shadow-xs: 0 1px 2px rgba(0, 0, 0, .05);--shadow-sm: 0 1px 3px rgba(0, 0, 0, .1), 0 1px 2px rgba(0, 0, 0, .06);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -2px rgba(0, 0, 0, .1);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -4px rgba(0, 0, 0, .1);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .1), 0 8px 10px -6px rgba(0, 0, 0, .1);--radius-sm: 6px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-2xl: 24px;--radius-full: 9999px;--transition-fast: .15s cubic-bezier(.4, 0, .2, 1);--transition-base: .25s cubic-bezier(.4, 0, .2, 1);--transition-slow: .35s cubic-bezier(.4, 0, .2, 1);--sidebar-width: 260px;--sidebar-collapsed-width: 72px;--topbar-height: 64px;--font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;scroll-behavior:smooth}body{font-family:var(--font-family);background:var(--surface-bg);color:var(--gray-800);line-height:1.6;min-height:100vh;overflow-x:hidden}a{text-decoration:none;color:inherit}ul,ol{list-style:none}img{max-width:100%;display:block}button{font-family:inherit;cursor:pointer;border:none;outline:none}input,textarea,select{font-family:inherit;outline:none}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--gray-300);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--gray-400)}.text-primary{color:var(--primary-600)}.text-success{color:var(--success-500)}.text-warning{color:var(--warning-500)}.text-danger{color:var(--danger-500)}.text-muted{color:var(--gray-500)}.font-medium{font-weight:500}.font-semibold{font-weight:600}.font-bold{font-weight:700}.page-container{display:flex;flex-direction:column;gap:24px;animation:fadeIn .3s ease}.page-header h2{font-size:1.5rem;font-weight:700;color:var(--gray-900, #111827);margin-bottom:4px}.subtitle{color:var(--gray-500, #6b7280);font-size:.875rem}.content-card{background:#fff;border-radius:var(--radius-lg, 12px);box-shadow:var(--shadow-sm, 0 1px 2px 0 rgba(0, 0, 0, .05));border:1px solid var(--gray-200, #e5e7eb);overflow:hidden}.table-container{width:100%;overflow-x:auto}.data-table{width:100%;border-collapse:collapse;text-align:left}.data-table th{padding:12px 24px;background:var(--gray-50, #f9fafb);font-size:.75rem;font-weight:600;color:var(--gray-500, #6b7280);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--gray-200, #e5e7eb)}.data-table td{padding:16px 24px;border-bottom:1px solid var(--gray-100, #f3f4f6);color:var(--gray-700, #374151);font-size:.875rem}.data-table tbody tr:hover{background:var(--gray-50, #f9fafb)}.user-info{display:flex;align-items:center;gap:12px}.user-avatar{width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,var(--primary-400, #60a5fa),var(--primary-600, #2563eb));color:#fff;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:.875rem}.role-badge{padding:4px 10px;background:var(--gray-100, #f3f4f6);color:var(--gray-700, #374151);border-radius:9999px;font-size:.75rem;font-weight:500}.status-badge{padding:4px 10px;background:#fee2e2;color:#991b1b;border-radius:9999px;font-size:.75rem;font-weight:500}.status-badge.active{background:#dcfce3;color:#166534}.empty-state{text-align:center;padding:48px;color:var(--gray-500, #6b7280)}.loading-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:64px;color:var(--gray-500, #6b7280);gap:16px}.spinner{width:32px;height:32px;border:3px solid var(--gray-200, #e5e7eb);border-top-color:var(--primary-500, #3b82f6);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.page-header{display:flex;align-items:center;justify-content:space-between}.btn{display:flex;align-items:center;gap:8px;padding:10px 16px;border-radius:var(--radius-md, 8px);font-weight:500;font-size:.875rem;cursor:pointer;transition:all .2s ease;border:none}.btn-primary{background:var(--primary-600, #2563eb);color:#fff}.btn-primary:hover{background:var(--primary-700, #1d4ed8)}.btn-primary:disabled{opacity:.7;cursor:not-allowed}.btn-outline{background:transparent;border:1px solid var(--gray-300, #d1d5db);color:var(--gray-700, #374151)}.btn-outline:hover{background:var(--gray-50, #f9fafb)}.btn-icon{background:transparent;border:none;color:var(--gray-500, #6b7280);cursor:pointer;padding:8px;border-radius:var(--radius-md, 8px);display:flex;align-items:center;justify-content:center;transition:all .2s ease}.btn-icon:hover{background:var(--primary-50, #eff6ff);color:var(--primary-600, #2563eb)}.modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;animation:modalFadeIn .2s ease}.modal-content{background:#fff;width:100%;max-width:500px;border-radius:var(--radius-lg, 12px);box-shadow:var(--shadow-xl, 0 20px 25px -5px rgba(0, 0, 0, .1), 0 10px 10px -5px rgba(0, 0, 0, .04));overflow:hidden;animation:slideUp .3s ease}.modal-header{padding:20px 24px;border-bottom:1px solid var(--gray-200, #e5e7eb);display:flex;align-items:center;justify-content:space-between}.modal-header h3{margin:0;font-size:1.125rem;font-weight:600;color:var(--gray-900, #111827)}.btn-close{background:transparent;border:none;color:var(--gray-500, #6b7280);cursor:pointer;padding:4px;border-radius:var(--radius-sm, 4px)}.btn-close:hover{background:var(--gray-100, #f3f4f6);color:var(--gray-900, #111827)}.modal-body{padding:24px;max-height:70vh;overflow-y:auto;display:flex;flex-direction:column;gap:16px}.modal-footer{padding:16px 24px;background:var(--gray-50, #f9fafb);border-top:1px solid var(--gray-200, #e5e7eb);display:flex;align-items:center;justify-content:flex-end;gap:12px}.form-group{display:flex;flex-direction:column;gap:6px}.form-group label{font-size:.875rem;font-weight:500;color:var(--gray-700, #374151)}.form-control{padding:10px 12px;border:1px solid var(--gray-300, #d1d5db);border-radius:var(--radius-md, 8px);font-size:.875rem;color:var(--gray-900, #111827);transition:all .2s ease;width:100%;box-sizing:border-box}.form-control:focus{outline:none;border-color:var(--primary-400, #60a5fa);box-shadow:0 0 0 3px var(--primary-100, #dbeafe)}.form-control:disabled{background:var(--gray-100, #f3f4f6);color:var(--gray-500, #6b7280);cursor:not-allowed}.checkbox-group{margin-top:8px}.checkbox-label{display:flex;align-items:center;gap:8px;cursor:pointer}.checkbox-label input{width:16px;height:16px;cursor:pointer;accent-color:var(--primary-600, #2563eb)}.text-sm{font-size:.75rem}.text-gray{color:var(--gray-500, #6b7280)}.spinner-small{width:16px;height:16px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin 1s linear infinite}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes modalFadeIn{0%{opacity:0}to{opacity:1}}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px;width:100%}@media (max-width: 600px){.form-row{grid-template-columns:1fr}}.error-banner{display:flex!important;align-items:center!important;gap:8px!important;background-color:var(--danger-50, #fef2f2)!important;border:1px solid var(--danger-500, #ef4444)!important;color:var(--danger-500, #ef4444)!important;padding:10px 14px!important;border-radius:var(--radius-md, 6px)!important;margin-bottom:20px!important;font-size:.875rem!important;font-weight:500!important;width:100%!important;box-sizing:border-box!important}.error-banner svg{flex-shrink:0!important;color:var(--danger-500, #ef4444)!important}.system-row{opacity:.55;background-color:var(--gray-50, #f9fafb)!important}.system-row td{color:var(--gray-400, #9ca3af)!important}.system-row .status-badge,.system-row .badge,.system-row .btn-icon{opacity:.5}
