.login-container{background:radial-gradient(120% 120% at 30% 20%,#1c3055 0%,#142440 55%,#0d1623 100%);justify-content:center;align-items:center;min-height:100dvh;padding:20px;display:flex}.login-card{background:var(--color-white);border-radius:16px;width:100%;max-width:420px;padding:40px;box-shadow:0 25px 50px #00000040}.login-header{text-align:center;margin-bottom:32px}.login-logo{color:#fff;background:linear-gradient(135deg,#1c3055,#3b5b92);border-radius:16px;justify-content:center;align-items:center;width:64px;height:64px;margin-bottom:16px;display:inline-flex}.login-header h1{color:var(--color-gray-900);margin:0 0 4px;font-size:24px;font-weight:700}.login-header p{color:var(--color-gray-500);margin:0;font-size:14px}.login-form{flex-direction:column;gap:20px;display:flex}.login-error{background:var(--color-danger-light);border:1px solid var(--color-danger-border);color:var(--color-danger);text-align:left;border-radius:8px;align-items:flex-start;gap:10px;padding:12px 14px;font-size:13px;display:flex}.login-error-icon{flex-shrink:0;margin-top:1px}.login-error strong{margin-bottom:2px;font-size:13px;font-weight:700;display:block}.login-error p{color:var(--color-danger-text);margin:0;font-size:12.5px;line-height:1.4}.login-error-locked{background:var(--color-warning-light);border-color:var(--color-warning-border);color:var(--color-warning-text)}.login-error-locked p{color:var(--color-warning-text)}.login-error-inactive{background:var(--color-gray-100);border-color:var(--color-gray-300);color:var(--color-gray-600)}.login-error-inactive p{color:var(--color-gray-700)}.login-field{flex-direction:column;gap:6px;display:flex}.login-field label{color:var(--color-gray-700);font-size:14px;font-weight:600}.login-field input{border:1px solid var(--color-input-border);color:var(--color-gray-900);background:var(--color-input-bg);border-radius:8px;outline:none;padding:12px 16px;font-size:15px;transition:all .2s}.login-field input:focus{border-color:var(--color-input-focus);box-shadow:0 0 0 3px #3b82f626}.login-field input:disabled{background:var(--color-gray-50);cursor:not-allowed}.login-button{color:#fff;cursor:pointer;background:linear-gradient(135deg,#1c3055,#3b5b92);border:none;border-radius:8px;margin-top:8px;padding:14px;font-size:16px;font-weight:600;transition:all .2s}.login-button:hover:not(:disabled){background:linear-gradient(135deg,#142440,#2f4a78);transform:translateY(-1px);box-shadow:0 4px 12px #14244059}.login-button:disabled{opacity:.6;cursor:not-allowed;transform:none}.login-footer{text-align:center;margin-top:24px}.login-footer p{color:var(--color-gray-400);margin:0;font-size:13px}.toast-container{z-index:99999;pointer-events:none;flex-direction:column;gap:10px;max-width:400px;display:flex;position:fixed;top:24px;right:24px}.toast{background:var(--color-white);border-left:4px solid var(--color-gray-400);pointer-events:auto;border-radius:10px;align-items:flex-start;gap:12px;min-width:280px;padding:14px 16px;animation:.25s ease-out toast-in;display:flex;box-shadow:0 10px 30px #00000026,0 2px 6px #00000014}@keyframes toast-in{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}.toast-success{border-left-color:var(--color-success)}.toast-success .toast-icon{color:var(--color-success)}.toast-error{border-left-color:var(--color-danger)}.toast-error .toast-icon{color:var(--color-danger)}.toast-info{border-left-color:var(--color-accent)}.toast-info .toast-icon{color:var(--color-accent)}.toast-icon{flex-shrink:0;margin-top:1px}.toast-message{color:var(--color-gray-900);flex:1;font-size:14px;font-weight:500;line-height:1.4}.toast-close{color:var(--color-gray-400);cursor:pointer;background:0 0;border:none;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;padding:2px;transition:all .15s;display:flex}.toast-close:hover{background:var(--color-gray-100);color:var(--color-gray-900)}.user-modal-overlay{background:var(--color-overlay);z-index:9999;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.user-modal{background:var(--color-white);width:100%;max-width:480px;max-height:90vh;box-shadow:var(--shadow-lg);border-radius:14px;animation:.2s ease-out slideUp;overflow-y:auto}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.user-modal-header{border-bottom:1px solid var(--color-gray-200);justify-content:space-between;align-items:center;padding:20px 24px;display:flex}.user-modal-header h2{color:var(--color-gray-900);margin:0;font-size:18px;font-weight:700}.user-modal-close{color:var(--color-gray-500);cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;padding:4px;transition:all .2s;display:flex}.user-modal-close:hover{background:var(--color-gray-100);color:var(--color-gray-900)}.user-modal-form{flex-direction:column;gap:16px;padding:24px;display:flex}.user-modal-error{background:var(--color-danger-light);border:1px solid var(--color-danger-border);color:var(--color-danger-text);border-radius:8px;padding:10px 14px;font-size:13px}.user-modal-field{flex-direction:column;gap:6px;display:flex}.user-modal-field label{color:var(--color-gray-700);align-items:center;gap:6px;font-size:13px;font-weight:600;display:flex}.user-modal-field input,.user-modal-field select{border:1px solid var(--color-input-border);color:var(--color-gray-900);background:var(--color-input-bg);border-radius:8px;outline:none;padding:10px 14px;font-size:14px;transition:all .2s}.user-modal-field input:focus,.user-modal-field select:focus{border-color:var(--color-input-focus);box-shadow:0 0 0 3px #3b82f626}.user-modal-field input:disabled,.user-modal-field select:disabled{background:var(--color-gray-50);cursor:not-allowed}.user-modal-hint{color:var(--color-gray-400);margin-top:2px;font-size:11px}.user-modal-actions{border-top:1px solid var(--color-gray-100);justify-content:flex-end;gap:12px;margin-top:8px;padding-top:16px;display:flex}.user-modal-btn-secondary,.user-modal-btn-primary{cursor:pointer;border:1px solid #0000;border-radius:8px;align-items:center;gap:8px;padding:10px 18px;font-size:14px;font-weight:600;transition:all .2s;display:inline-flex}.user-modal-btn-secondary{background:var(--color-white);border-color:var(--color-gray-200);color:var(--color-gray-600)}.user-modal-btn-secondary:hover:not(:disabled){background:var(--color-gray-50);border-color:var(--color-gray-300)}.user-modal-btn-primary{color:#fff;background:linear-gradient(135deg,#1c3055,#3b5b92)}.user-modal-btn-primary:hover:not(:disabled){background:linear-gradient(135deg,#142440,#2f4a78);transform:translateY(-1px);box-shadow:0 4px 12px #1424404d}.user-modal-btn-primary:disabled,.user-modal-btn-secondary:disabled{opacity:.6;cursor:not-allowed}.App{min-height:100vh}.app-loading{background:var(--color-gray-100);min-height:100vh;color:var(--color-gray-500);justify-content:center;align-items:center;font-size:16px;display:flex}.app-topbar{background:var(--color-topbar);color:#fff;z-index:1000;justify-content:space-between;align-items:center;height:56px;padding:0 24px;display:flex;position:sticky;top:0}.app-topbar-left{align-items:center;gap:32px;display:flex}.app-topbar-brand{letter-spacing:-.3px;font-size:16px;font-weight:700}.app-topbar-nav{gap:4px;display:flex}.app-topbar-link{color:#94a3b8;cursor:pointer;background:0 0;border:none;border-radius:6px;padding:8px 16px;font-size:14px;font-weight:500;transition:all .2s}.app-topbar-link:hover{color:#fff;background:var(--color-topbar-hover)}.app-topbar-link.active{color:#fff;background:var(--color-topbar-active)}.app-topbar-right{align-items:center;gap:16px;display:flex}.app-topbar-user{flex-direction:column;align-items:flex-end;line-height:1.2;display:flex}.app-topbar-username{font-size:14px;font-weight:600}.app-topbar-role{color:#94a3b8;text-transform:uppercase;letter-spacing:.5px;font-size:11px}.app-topbar-account{color:#e2e8f0;cursor:pointer;background:#ffffff14;border:1px solid #ffffff1f;border-radius:6px;align-items:center;gap:6px;padding:6px 12px;font-size:13px;transition:all .2s;display:inline-flex}.app-topbar-account:hover{color:#93c5fd;background:#3b82f633;border-color:#3b82f666}.app-topbar-logout{color:#e2e8f0;cursor:pointer;background:#ffffff14;border:1px solid #ffffff1f;border-radius:6px;padding:6px 14px;font-size:13px;transition:all .2s}.app-topbar-logout:hover{color:#fca5a5;background:#ef444433;border-color:#ef444466}.app-content{background:var(--color-gray-50);min-height:calc(100vh - 56px)}.app-topbar-theme{background:var(--color-topbar-hover);color:#e2e8f0;cursor:pointer;border:1px solid #ffffff1f;border-radius:6px;justify-content:center;align-items:center;width:34px;height:34px;transition:all .2s;display:flex}.app-topbar-theme:hover{color:#fde047;background:#facc1533;border-color:#facc1566}:root{--color-primary:#1c3055;--color-primary-hover:#142440;--color-success:#2f8f6b;--color-danger:#c0392f;--color-warning:#c77f0a;--color-white:#fff;--color-gray-50:#f6f7f9;--color-gray-100:#eef1f5;--color-gray-200:#e1e6ed;--color-gray-300:#c8d0db;--color-gray-400:#93a0b3;--color-gray-500:#64748b;--color-gray-600:#475569;--color-gray-700:#2f3d52;--color-gray-800:#1f2a3c;--color-gray-900:#0f1623;--font-family:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-size-xs:12px;--font-size-sm:14px;--font-size-base:16px;--font-size-lg:18px;--font-size-xl:24px;--spacing-xs:4px;--spacing-sm:8px;--spacing-md:16px;--spacing-lg:24px;--spacing-xl:32px;--border-radius-sm:4px;--border-radius-md:8px;--border-radius-lg:12px;--border-radius-full:9999px;--shadow-sm:0 1px 2px #14244014, 0 1px 3px #1424400f;--shadow-md:0 4px 12px #1424401a;--shadow-lg:0 12px 28px #14244024;--color-topbar:#142440;--color-topbar-hover:#ffffff14;--color-topbar-active:#ffffff1f;--color-accent:#3b5b92;--color-accent-hover:#2f4a78;--color-accent-light:#eef1f7;--color-accent-border:#c5d2e8;--color-accent-text:#1c3055;--color-success-light:#eef6f2;--color-success-border:#a8d5c2;--color-success-text:#246d52;--color-danger-light:#fbeeec;--color-danger-border:#e6b1ab;--color-danger-text:#a5322a;--color-warning-light:#fbf2e0;--color-warning-border:#e6c178;--color-warning-text:#8a5a06;--color-overlay:#0000008c;--color-input-bg:#fff;--color-input-border:#c8d0db;--color-input-focus:#3b5b92;--color-surface:var(--color-white);--color-card:var(--color-white);--color-border:var(--color-gray-200);--text-primary:var(--color-gray-800);--text-secondary:var(--color-gray-500);--color-text-secondary:var(--color-gray-500);--bg-card:var(--color-white);--bg-secondary:var(--color-gray-50);--bg-hover:var(--color-gray-100);--border:var(--color-gray-200)}[data-theme=dark]{--color-white:#1a2840;--color-gray-50:#0d1626;--color-gray-100:#16233a;--color-gray-200:#2a3a54;--color-gray-300:#3d4f6b;--color-gray-400:#607089;--color-gray-500:#8f9cb0;--color-gray-600:#c2cbd8;--color-gray-700:#dde3ec;--color-gray-800:#eef1f5;--color-gray-900:#f8fafc;--shadow-sm:0 1px 3px #00000073;--shadow-md:0 4px 12px #00000061;--shadow-lg:0 12px 28px #0000008c;--color-accent:#5b7cb8;--color-accent-hover:#6e8cc4;--color-accent-light:#1c2c47;--color-accent-border:#3b5b92;--color-accent-text:#9db5dd;--color-success-light:#0e2920;--color-success-border:#2f6b52;--color-success-text:#62c69e;--color-danger-light:#2e120f;--color-danger-border:#8a3b33;--color-danger-text:#e88379;--color-warning-light:#2e2206;--color-warning-border:#8a6418;--color-warning-text:#e0a93f;--color-overlay:#000000bf;--color-input-bg:#1e293b;--color-input-border:#475569}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;transition:background-color .25s,color .25s}body{font-family:var(--font-family);font-size:var(--font-size-base);color:var(--color-gray-800);background-color:var(--color-gray-50);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;line-height:1.6}h1,h2,h3,h4{letter-spacing:-.015em;line-height:1.25}.stats,table,.metric,[class*=count],[class*=number]{font-variant-numeric:tabular-nums}a{color:inherit;text-decoration:none}button{cursor:pointer;background:0 0;border:none;outline:none}input,textarea,select{color:inherit;background:0 0;border:none;outline:none}:focus-visible{outline:2px solid var(--color-input-focus,var(--color-accent));outline-offset:2px;border-radius:3px}button:focus-visible,a:focus-visible{outline:2px solid var(--color-input-focus,var(--color-accent));outline-offset:2px}*,:before,:after{transition:background-color .2s,border-color .2s,color .2s,box-shadow .2s}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}.spinning,.spin,[class*=animate]{transition:none!important}ul,ol{list-style:none}img{max-width:100%;height:auto}.flex-center{justify-content:center;align-items:center;display:flex}.flex-between{justify-content:space-between;align-items:center;display:flex}.grid-responsive{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:24px;display:grid}.custom-scrollbar::-webkit-scrollbar{width:6px}.custom-scrollbar::-webkit-scrollbar-track{background:var(--color-gray-100)}.custom-scrollbar::-webkit-scrollbar-thumb{background:var(--color-gray-300);border-radius:var(--border-radius-full)}.custom-scrollbar::-webkit-scrollbar-thumb:hover{background:var(--color-gray-400)}
