:root{--primary-50: #eff6ff;--primary-100: #dbeafe;--primary-200: #bfdbfe;--primary-300: #93c5fd;--primary-400: #60a5fa;--primary-500: #3b82f6;--primary-600: #2563eb;--primary-700: #1d4ed8;--primary-800: #1e40af;--primary-900: #1e3a8a;--gray-50: #f8fafc;--gray-100: #f1f5f9;--gray-200: #e2e8f0;--gray-300: #cbd5e1;--gray-400: #94a3b8;--gray-500: #64748b;--gray-600: #475569;--gray-700: #334155;--gray-800: #1e293b;--gray-900: #0f172a;--success-50: #f0fdf4;--success-500: #22c55e;--success-600: #16a34a;--warning-50: #fffbeb;--warning-500: #f59e0b;--warning-600: #d97706;--danger-50: #fef2f2;--danger-500: #ef4444;--danger-600: #dc2626;--info-50: #eff6ff;--info-500: #3b82f6;--info-600: #2563eb;--sidebar-width: 260px;--sidebar-collapsed-width: 72px;--header-height: 64px;--footer-height: 34px;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / .05);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--shadow-xl: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--radius-sm: 6px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--transition-fast: .15s ease;--transition-normal: .25s ease;--transition-slow: .35s ease}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{font-size:14px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background-color:var(--gray-100);color:var(--gray-800);line-height:1.5;overflow:hidden}#root{width:100vw;height:100vh;overflow:hidden}a{text-decoration:none;color:inherit}ul,ol{list-style:none}button{border:none;background:none;cursor:pointer;font-family:inherit}input,textarea,select{font-family:inherit;font-size:inherit}img{max-width:100%;display:block}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background-color:var(--gray-300);border-radius:3px}::-webkit-scrollbar-thumb:hover{background-color:var(--gray-400)}@media(max-width:768px){table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch}}.page-loader{display:flex;align-items:center;justify-content:center;gap:10px;min-height:40vh;color:var(--gray-500, #64748b);font-size:.9rem}.page-loader--full{min-height:100vh}.page-loader-spin{animation:page-loader-rotate .9s linear infinite}@keyframes page-loader-rotate{to{transform:rotate(360deg)}}.sidebar{width:var(--sidebar-width);height:100vh;background:var(--gray-900);display:flex;flex-direction:column;transition:width var(--transition-normal);position:fixed;left:0;top:0;z-index:100;overflow:hidden}.sidebar.collapsed{width:var(--sidebar-collapsed-width)}.sidebar-header{display:flex;align-items:center;justify-content:space-between;padding:16px;min-height:var(--header-height);border-bottom:1px solid rgba(255,255,255,.08)}.logo-area{flex:1;min-width:0}.logo-full{display:flex;align-items:center}.logo-img{height:22px;width:auto;filter:brightness(0) invert(1);object-fit:contain}.logo-mini{width:38px;height:38px;background:linear-gradient(135deg,#003b7a,#002554);border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:1.1rem;color:#fff}.sidebar-toggle{width:28px;height:28px;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;color:var(--gray-400);transition:all var(--transition-fast);flex-shrink:0}.sidebar-toggle:hover{background:#ffffff1a;color:#fff}.sidebar.collapsed .sidebar-header{justify-content:center;padding:16px 8px;flex-direction:column;gap:8px}.sidebar.collapsed .sidebar-toggle{width:32px;height:28px}.sidebar-nav{flex:1;overflow-y:auto;overflow-x:hidden;padding:12px 8px}.menu-list{display:flex;flex-direction:column;gap:2px}.menu-link{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:var(--radius-md);color:var(--gray-400);font-size:.92rem;font-weight:450;transition:all var(--transition-fast);cursor:pointer;width:100%;text-align:left;white-space:nowrap}.menu-link:hover{background:#ffffff0f;color:var(--gray-200)}.menu-link.active{background:#3b82f626;color:var(--primary-400)}.menu-icon{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:20px;height:20px}.menu-label{flex:1;overflow:hidden;text-overflow:ellipsis}.menu-badge{min-width:18px;height:18px;padding:0 5px;border-radius:10px;background:#ef4444;color:#fff;font-size:.65rem;font-weight:700;display:flex;align-items:center;justify-content:center;line-height:1;margin-left:auto}.menu-arrow{display:flex;align-items:center;transition:transform var(--transition-fast)}.menu-arrow.expanded{transform:rotate(0)}.menu-arrow:not(.expanded){transform:rotate(-90deg)}.submenu{padding:4px 0 4px 12px;display:flex;flex-direction:column;gap:1px}.submenu-link{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:var(--radius-sm);color:var(--gray-500);font-size:.84rem;font-weight:400;transition:all var(--transition-fast)}.submenu-link:hover{color:var(--gray-300);background:#ffffff0a}.submenu-link.active{color:var(--primary-400);background:#3b82f61a}.submenu-icon{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:18px;height:18px;opacity:.7}.submenu-link.active .submenu-icon{opacity:1}.submenu-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-footer{border-top:1px solid rgba(255,255,255,.08);padding:8px}.sidebar-footer .menu-list{margin-bottom:8px}.sidebar-user{display:flex;align-items:center;gap:10px;padding:10px;border-radius:var(--radius-md);background:#ffffff0a;margin-top:4px}.user-avatar{width:36px;height:36px;border-radius:var(--radius-md);background:linear-gradient(135deg,var(--primary-500),var(--primary-700));display:flex;align-items:center;justify-content:center;color:#fff;font-size:.8rem;font-weight:600;flex-shrink:0}.user-info{display:flex;flex-direction:column;flex:1;min-width:0;overflow:hidden}.user-name{font-size:.85rem;font-weight:600;color:var(--gray-200);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-role{font-size:.75rem;color:var(--gray-500);white-space:nowrap}.user-logout{color:var(--gray-500);display:flex;align-items:center;justify-content:center;padding:4px;border-radius:var(--radius-sm);transition:all var(--transition-fast);flex-shrink:0}.user-logout:hover{color:var(--danger-500);background:#ef44441a}.sidebar.collapsed .menu-link{justify-content:center;padding:10px}.sidebar.collapsed .sidebar-nav{padding:12px 6px}.sidebar.collapsed .sidebar-footer{padding:8px 6px}.sidebar.collapsed .sidebar-user{justify-content:center;padding:10px 6px}.sidebar-nav::-webkit-scrollbar{width:4px}.sidebar-nav::-webkit-scrollbar-track{background:transparent}.sidebar-nav::-webkit-scrollbar-thumb{background:#ffffff1a;border-radius:2px}@media(max-width:768px){.sidebar{transform:translate(-100%);transition:transform .25s ease,width var(--transition-normal);width:var(--sidebar-width)!important}.sidebar.mobile-open{transform:translate(0)}.sidebar.collapsed{transform:translate(-100%)}.sidebar.collapsed.mobile-open{transform:translate(0);width:var(--sidebar-width)!important}.sidebar.collapsed.mobile-open .menu-label,.sidebar.collapsed.mobile-open .menu-arrow,.sidebar.collapsed.mobile-open .user-info,.sidebar.collapsed.mobile-open .user-logout,.sidebar.collapsed.mobile-open .submenu{display:flex}.sidebar.collapsed.mobile-open .menu-link{justify-content:flex-start;padding:10px 12px}.sidebar.collapsed.mobile-open .sidebar-header{flex-direction:row;justify-content:space-between;padding:16px}.sidebar.collapsed.mobile-open .logo-mini{display:none}.sidebar.collapsed.mobile-open .logo-full{display:flex}.sidebar.collapsed.mobile-open .sidebar-nav{padding:12px 8px}.sidebar.collapsed.mobile-open .sidebar-footer{padding:8px}.sidebar.collapsed.mobile-open .sidebar-user{justify-content:flex-start;padding:10px}.sidebar.collapsed.mobile-open .sidebar-toggle{width:28px;height:28px}}.np-container{position:relative}.np-trigger{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--gray-600);cursor:pointer;transition:all .15s;position:relative}.np-trigger:hover{background:var(--gray-100);color:var(--gray-800)}.np-badge{position:absolute;top:2px;right:2px;min-width:16px;height:16px;border-radius:10px;background:#ef4444;color:#fff;font-size:.65rem;font-weight:700;display:flex;align-items:center;justify-content:center;padding:0 4px;line-height:1}.np-panel{position:absolute;top:calc(100% + 8px);right:0;width:380px;max-height:520px;background:#fff;border:1px solid var(--gray-200);border-radius:var(--radius-lg);box-shadow:0 12px 40px #00000026;z-index:9999;display:flex;flex-direction:column;overflow:hidden}.np-header{display:flex;align-items:center;justify-content:space-between;padding:14px 16px 10px;font-size:.95rem;font-weight:700;color:var(--gray-800)}.np-header-count{font-size:.75rem;font-weight:500;color:#3b82f6;margin-left:4px}.np-toolbar{display:flex;align-items:center;gap:6px;padding:0 16px 10px;border-bottom:1px solid var(--gray-100)}.np-toolbar-btn{display:flex;align-items:center;gap:4px;padding:5px 10px;border-radius:6px;border:1px solid var(--gray-200);background:#fff;font-size:.72rem;font-weight:600;cursor:pointer;transition:all .15s}.np-toolbar-btn.read{color:#3b82f6;border-color:#bfdbfe}.np-toolbar-btn.read:hover{background:#eff6ff;border-color:#93c5fd}.np-toolbar-btn.delete{color:#ef4444;border-color:#fecaca}.np-toolbar-btn.delete:hover{background:#fef2f2;border-color:#fca5a5}.np-list{flex:1;overflow-y:auto}.np-empty{display:flex;align-items:center;justify-content:center;padding:40px;color:var(--gray-400);font-size:.88rem}.np-item{display:flex;align-items:flex-start;gap:10px;padding:12px 16px;cursor:pointer;transition:background .1s;border-bottom:1px solid var(--gray-50)}.np-item:hover{background:var(--gray-50)}.np-item.unread{background:#f0f7ff}.np-item.unread:hover{background:#e0effe}.np-item-icon{flex-shrink:0;width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:currentColor;opacity:.15}.np-item-icon>svg{opacity:1;position:relative;z-index:1}.np-item-content{flex:1;min-width:0}.np-item-title{font-size:.82rem;font-weight:600;color:var(--gray-800)}.np-item-body{font-size:.78rem;color:var(--gray-500);margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.np-item-time{font-size:.72rem;color:var(--gray-400);margin-top:3px}.np-dot{flex-shrink:0;width:8px;height:8px;border-radius:50%;background:var(--primary-500);margin-top:6px}.np-view-all{display:block;width:100%;padding:12px;border:none;border-top:1px solid var(--gray-100);background:var(--gray-50);color:var(--primary-600);font-size:.82rem;font-weight:600;cursor:pointer;text-align:center;transition:background .15s}.np-view-all:hover{background:var(--gray-100)}.np-empty .spin{animation:np-spin .8s linear infinite}@keyframes np-spin{to{transform:rotate(360deg)}}@media(max-width:480px){.np-panel{width:calc(100vw - 20px);right:-10px}}.header{height:var(--header-height);background:#fff;border-bottom:1px solid var(--gray-200);display:flex;align-items:center;justify-content:space-between;padding:0 24px;position:sticky;top:0;z-index:50}.header-left{display:flex;align-items:center;gap:16px}.header-menu-btn{display:none;width:36px;height:36px;border-radius:var(--radius-md);align-items:center;justify-content:center;color:var(--gray-600);transition:all var(--transition-fast)}.header-menu-btn:hover{background:var(--gray-100);color:var(--gray-800)}@media(max-width:768px){.header-menu-btn{display:flex}}.header-search{display:flex;align-items:center;gap:8px;padding:8px 14px;background:var(--gray-50);border:1px solid var(--gray-200);border-radius:var(--radius-lg);min-width:280px;transition:all var(--transition-fast)}.header-search.focused{border-color:var(--primary-400);background:#fff;box-shadow:0 0 0 3px #3b82f61a}.search-icon{color:var(--gray-400);flex-shrink:0}.search-input{border:none;outline:none;background:transparent;color:var(--gray-800);font-size:.9rem;width:100%}.search-input::placeholder{color:var(--gray-400)}.header-right{display:flex;align-items:center;gap:4px}.header-action-btn{width:38px;height:38px;border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;color:var(--gray-500);transition:all var(--transition-fast);position:relative}.header-action-btn:hover{background:var(--gray-100);color:var(--gray-700)}.notification-btn{position:relative}.notification-badge{position:absolute;top:6px;right:6px;width:16px;height:16px;background:var(--danger-500);color:#fff;font-size:.65rem;font-weight:700;border-radius:50%;display:flex;align-items:center;justify-content:center;border:2px solid white}@media(max-width:1024px){.header-search{min-width:180px}}@media(max-width:768px){.header{padding:0 12px}.header-search{display:none}.header-menu-btn{display:flex}}@media(max-width:480px){.header-action-btn{width:32px;height:32px}}.layout{display:flex;height:100vh;width:100vw;overflow:hidden}.layout-main{flex:1;margin-left:var(--sidebar-width);display:flex;flex-direction:column;height:100vh;overflow:hidden;transition:margin-left var(--transition-normal)}.layout.sidebar-collapsed .layout-main{margin-left:var(--sidebar-collapsed-width)}.layout-content{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;padding:24px;background:var(--gray-100)}@media(max-width:1024px){.layout-content{padding:16px}}@media(max-width:768px){.layout-main{margin-left:0!important;width:100%}.layout.sidebar-collapsed .layout-main{margin-left:0!important}.layout-content{padding:12px 8px}}.sidebar-overlay{display:none}@media(max-width:768px){.sidebar-overlay{display:block;position:fixed;inset:0;background:#00000080;z-index:99;opacity:0;pointer-events:none;transition:opacity .25s}.sidebar-overlay.visible{opacity:1;pointer-events:auto}}.app-footer{flex-shrink:0;height:var(--footer-height);display:flex;align-items:center;justify-content:center;gap:3px;padding:0 24px;font-size:.78rem;color:var(--gray-500);background:#fff;border-top:1px solid var(--gray-200);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.app-footer a{color:var(--primary-600);font-weight:600;text-decoration:none}.app-footer a:hover{text-decoration:underline}@media(max-width:768px){.app-footer{padding:0 12px;font-size:.72rem}}.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#0a1628,#1a2744,#0f2035);padding:20px;position:relative;overflow:hidden}.auth-page:before{content:"";position:absolute;top:-50%;right:-30%;width:600px;height:600px;background:radial-gradient(circle,rgba(59,130,246,.08) 0%,transparent 70%);border-radius:50%}.auth-page:after{content:"";position:absolute;bottom:-40%;left:-20%;width:500px;height:500px;background:radial-gradient(circle,rgba(59,130,246,.06) 0%,transparent 70%);border-radius:50%}.auth-card{width:100%;max-width:440px;background:#fff;border-radius:var(--radius-xl);padding:40px 36px 28px;box-shadow:0 25px 50px -12px #0006;position:relative;z-index:1}.auth-header{text-align:center;margin-bottom:32px}.auth-logo{height:32px;width:auto;margin-bottom:12px}.auth-subtitle{font-size:.9rem;color:var(--gray-500)}.auth-form{display:flex;flex-direction:column;gap:18px}.auth-error{padding:12px 16px;background:var(--danger-50);color:var(--danger-600);border-radius:var(--radius-md);font-size:.84rem;font-weight:500;border:1px solid rgba(239,68,68,.15)}.auth-success{padding:12px 16px;background:var(--success-50);color:var(--success-600);border-radius:var(--radius-md);font-size:.84rem;font-weight:500;border:1px solid rgba(34,197,94,.15)}.form-group{display:flex;flex-direction:column;gap:6px}.form-label-row{display:flex;align-items:center;justify-content:space-between}.form-label{font-size:.84rem;font-weight:600;color:var(--gray-700);text-transform:uppercase;letter-spacing:.03em}.form-link{font-size:.8rem;color:var(--primary-600);font-weight:500;text-decoration:none;transition:color var(--transition-fast)}.form-link:hover{color:var(--primary-700);text-decoration:underline}.input-wrapper{position:relative;display:flex;align-items:center}.input-icon{position:absolute;left:14px;color:var(--gray-400);pointer-events:none}.form-input{width:100%;padding:11px 14px 11px 42px;border:1px solid var(--gray-200);border-radius:var(--radius-md);font-size:16px;color:var(--gray-800);background:var(--gray-50);transition:all var(--transition-fast);outline:none}.form-input:focus{border-color:var(--primary-400);background:#fff;box-shadow:0 0 0 3px #3b82f61a}.form-input::placeholder{color:var(--gray-400)}.form-input.no-icon{padding-left:14px}.recaptcha-box{display:flex;align-items:center;gap:12px;padding:12px 16px;border:1px solid var(--gray-200);border-radius:var(--radius-md);background:var(--gray-50);cursor:pointer;transition:all var(--transition-fast);-webkit-user-select:none;user-select:none}.recaptcha-box:hover{border-color:var(--gray-300);background:var(--gray-100)}.recaptcha-box.checked{border-color:var(--success-500);background:var(--success-50)}.recaptcha-checkbox{width:22px;height:22px;border:2px solid var(--gray-300);border-radius:4px;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all var(--transition-fast);color:#fff}.recaptcha-box.checked .recaptcha-checkbox{background:var(--success-500);border-color:var(--success-500)}.recaptcha-text{flex:1;font-size:.88rem;color:var(--gray-700);font-weight:450}.recaptcha-brand{display:flex;flex-direction:column;align-items:center;gap:2px;opacity:.5}.recaptcha-label{display:flex;flex-direction:column;align-items:center}.recaptcha-label span:first-child{font-size:.68rem;font-weight:600;color:var(--gray-500)}.recaptcha-label span:last-child{font-size:.55rem;color:var(--gray-400)}.auth-btn{display:flex;align-items:center;justify-content:center;gap:8px;padding:12px;background:linear-gradient(135deg,#003b7a,#002554);color:#fff;border:none;border-radius:var(--radius-md);font-size:.95rem;font-weight:600;cursor:pointer;transition:all var(--transition-fast);margin-top:2px}.auth-btn:hover:not(:disabled){box-shadow:0 4px 14px #00255466;transform:translateY(-1px)}.auth-btn:disabled{opacity:.7;cursor:not-allowed}.auth-footer{text-align:center;margin-top:24px;padding-top:18px;border-top:1px solid var(--gray-100)}.auth-footer span{font-size:.72rem;color:var(--gray-400)}.otp-container{display:flex;gap:10px;justify-content:center;margin:8px 0}.otp-input{width:48px;height:56px;border:2px solid var(--gray-200);border-radius:var(--radius-md);text-align:center;font-size:1.4rem;font-weight:700;color:var(--gray-800);background:var(--gray-50);outline:none;transition:all var(--transition-fast)}.otp-input:focus{border-color:var(--primary-500);background:#fff;box-shadow:0 0 0 3px #3b82f61a}.otp-input.filled{border-color:var(--primary-400);background:var(--primary-50)}.auth-info{text-align:center;margin-bottom:8px}.auth-info-icon{width:56px;height:56px;background:var(--primary-50);border-radius:50%;display:flex;align-items:center;justify-content:center;color:var(--primary-600);margin:0 auto 14px}.auth-info h2{font-size:1.2rem;font-weight:700;color:var(--gray-800);margin-bottom:6px}.auth-info p{font-size:.85rem;color:var(--gray-500);line-height:1.5}.auth-info .email-highlight{color:var(--primary-600);font-weight:600}.resend-row{display:flex;align-items:center;justify-content:center;gap:4px;margin-top:4px}.resend-row span{font-size:.82rem;color:var(--gray-400)}.resend-btn{font-size:.82rem;color:var(--primary-600);font-weight:600;background:none;border:none;cursor:pointer;padding:0}.resend-btn:hover{text-decoration:underline}.resend-btn:disabled{color:var(--gray-400);cursor:not-allowed;text-decoration:none}.back-link{display:flex;align-items:center;justify-content:center;gap:6px;margin-top:8px;font-size:.84rem;color:var(--gray-500);text-decoration:none;transition:color var(--transition-fast)}.back-link:hover{color:var(--primary-600)}.password-rules{display:grid;grid-template-columns:1fr 1fr;gap:4px 16px;margin-top:6px}.rule{display:flex;align-items:center;gap:6px;font-size:.76rem;color:var(--gray-400)}.rule svg{flex-shrink:0;opacity:.3}.rule.valid{color:var(--success-600)}.rule.valid svg{opacity:1}.input-toggle{position:absolute;right:12px;color:var(--gray-400);display:flex;align-items:center;justify-content:center;padding:2px;border-radius:4px}.input-toggle:hover{color:var(--gray-600)}.field-error{font-size:.76rem;color:var(--danger-500);font-weight:500}@keyframes spin{to{transform:rotate(360deg)}}.spin{animation:spin 1s linear infinite}
