@import url("https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap");:root{--clr-primary-50:#eff4ff;--clr-primary-100:#dbe4ff;--clr-primary-200:#bac8ff;--clr-primary-300:#91a7ff;--clr-primary-400:#5c7cfa;--clr-primary-500:#1B5EF7;--clr-primary-600:#1a56db;--clr-primary-700:#1644b0;--clr-primary-800:#133290;--clr-primary-900:#0f2270;--clr-gray-50:#f8fafc;--clr-gray-100:#f1f5f9;--clr-gray-200:#e2e8f0;--clr-gray-300:#cbd5e1;--clr-gray-400:#94a3b8;--clr-gray-500:#64748b;--clr-gray-600:#475569;--clr-gray-700:#334155;--clr-gray-800:#1e293b;--clr-gray-900:#0f172a}[data-theme=dark]{--clr-bg:#0f172a;--clr-bg-subtle:#1e293b;--clr-bg-muted:#334155;--clr-border:#334155;--clr-border-soft:#1e293b;--clr-text:#f8fafc;--clr-text-muted:#94a3b8;--clr-text-faint:#64748b;--clr-gray-50:#0f172a;--clr-gray-100:#1e293b;--clr-gray-200:#334155;--clr-gray-300:#475569;--clr-gray-400:#64748b;--clr-gray-500:#94a3b8;--clr-gray-600:#cbd5e1;--clr-gray-700:#e2e8f0;--clr-gray-800:#f1f5f9;--clr-gray-900:#f8fafc;--clr-success-50:rgba(34,197,94,0.15);--clr-success-600:#4ade80;--clr-warning-50:rgba(245,158,11,0.15);--clr-warning-600:#fbbf24;--clr-danger-50:rgba(239,68,68,0.15);--clr-danger-600:#f87171;--clr-primary-50:rgba(27,94,247,0.15);--clr-primary-600:#60a5fa;--shadow-sm:0 1px 2px 0 rgba(0,0,0,0.5);--shadow-md:0 4px 6px -1px rgba(0,0,0,0.5),0 2px 4px -1px rgba(0,0,0,0.3);--shadow-lg:0 10px 15px -3px rgba(0,0,0,0.5),0 4px 6px -2px rgba(0,0,0,0.25);--shadow-xl:0 20px 25px -5px rgba(0,0,0,0.5),0 10px 10px -5px rgba(0,0,0,0.2)}:root{--clr-success-50:#f0fdf4;--clr-success-500:#22c55e;--clr-success-600:#16a34a;--clr-warning-50:#fffbeb;--clr-warning-500:#f59e0b;--clr-warning-600:#d97706;--clr-danger-50:#fef2f2;--clr-danger-500:#ef4444;--clr-danger-600:#dc2626;--clr-info-50:#eff6ff;--clr-info-500:#3b82f6;--clr-bg:#ffffff;--clr-bg-subtle:#f8fafc;--clr-bg-muted:#f1f5f9;--clr-border:#e2e8f0;--clr-border-soft:#f1f5f9;--clr-text:#1e293b;--clr-text-muted:#64748b;--clr-text-faint:#94a3b8;--clr-sidebar-bg:#0f172a;--clr-sidebar-text:#cbd5e1;--clr-sidebar-text-muted:#64748b;--clr-sidebar-active-bg:rgba(27,94,247,0.15);--clr-sidebar-active:#1B5EF7;--clr-sidebar-hover-bg:rgba(255,255,255,0.05);--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:20px;--sp-6:24px;--sp-8:32px;--sp-10:40px;--sp-12:48px;--sp-16:64px;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--radius-xl:16px;--radius-2xl:24px;--radius-full:9999px;--shadow-xs:0 1px 2px rgba(0,0,0,.05);--shadow-sm:0 1px 3px rgba(0,0,0,.08),0 1px 2px rgba(0,0,0,.04);--shadow-md:0 4px 6px -1px rgba(0,0,0,.08),0 2px 4px -1px rgba(0,0,0,.04);--shadow-lg:0 10px 15px -3px rgba(0,0,0,.08),0 4px 6px -2px rgba(0,0,0,.04);--shadow-xl:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04);--shadow-card:0 0 0 1px var(--clr-border),0 2px 8px rgba(0,0,0,.06);--shadow-focus:0 0 0 3px rgba(27,94,247,.25);--shadow-glow-green:0 0 0 3px rgba(34,197,94,.4),0 0 20px rgba(34,197,94,.3);--font-sans:"Inter",system-ui,-apple-system,sans-serif;--font-mono:"JetBrains Mono","Fira Code",monospace;--z-sidebar:100;--z-header:200;--z-dropdown:300;--z-modal:400;--z-toast:500;--transition-fast:150ms cubic-bezier(.4,0,.2,1);--transition-base:200ms cubic-bezier(.4,0,.2,1);--transition-medium:300ms cubic-bezier(.4,0,.2,1);--transition-slow:400ms cubic-bezier(.4,0,.2,1);--sidebar-width:220px;--sidebar-collapsed:60px;--header-height:60px}*,:after,:before{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body,html{font-size:14px}body{font-family:var(--font-sans);color:var(--clr-text);background:var(--clr-bg-subtle);line-height:1.5;min-height:100vh}a{color:inherit;text-decoration:none}button{cursor:pointer;border:none;background:none}button,input,select,textarea{font-family:inherit}img{max-width:100%;display:block}ol,ul{list-style:none}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes slideUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes slideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}@keyframes slideLeft{0%{opacity:0;transform:translateX(24px)}to{opacity:1;transform:translateX(0)}}@keyframes slideRight{0%{opacity:0;transform:translateX(-24px)}to{opacity:1;transform:translateX(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.94)}to{opacity:1;transform:scale(1)}}@keyframes scaleOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.94)}}@keyframes shimmer{0%{background-position:-400px 0}to{background-position:400px 0}}@keyframes spin{to{transform:rotate(1turn)}}@keyframes shake{0%,to{transform:translateX(0)}15%{transform:translateX(-5px)}30%{transform:translateX(5px)}45%{transform:translateX(-4px)}60%{transform:translateX(4px)}75%{transform:translateX(-2px)}90%{transform:translateX(2px)}}@keyframes pulseRing{0%{box-shadow:0 0 0 0 rgba(34,197,94,.6),0 0 0 0 rgba(34,197,94,.3)}70%{box-shadow:0 0 0 10px rgba(34,197,94,0),0 0 0 20px rgba(34,197,94,0)}to{box-shadow:0 0 0 0 rgba(34,197,94,0),0 0 0 0 rgba(34,197,94,0)}}@keyframes pulseDot{0%,to{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(1.15)}}@keyframes toastIn{0%{opacity:0;transform:translateX(120%)}to{opacity:1;transform:translateX(0)}}@keyframes toastOut{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(120%)}}@keyframes progressBar{0%{width:0}to{width:var(--progress-width,100%)}}@keyframes countUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes drawLine{0%{stroke-dashoffset:var(--dash-length,1000)}to{stroke-dashoffset:0}}@keyframes rowIn{0%{opacity:0;transform:translateX(-12px)}to{opacity:1;transform:translateX(0)}}.animate-fade-in{animation:fadeIn var(--transition-medium) ease both}.animate-slide-up{animation:slideUp var(--transition-medium) ease both}.animate-slide-down{animation:slideDown var(--transition-base) ease both}.animate-slide-left{animation:slideLeft var(--transition-medium) ease both}.animate-scale-in{animation:scaleIn var(--transition-base) ease both}.animate-shake{animation:shake .5s ease both}.stagger-1{animation-delay:50ms}.stagger-2{animation-delay:.1s}.stagger-3{animation-delay:.15s}.stagger-4{animation-delay:.2s}.stagger-5{animation-delay:.25s}.stagger-6{animation-delay:.3s}.stagger-7{animation-delay:.35s}.stagger-8{animation-delay:.4s}.app-main .animate-fade-in,.app-main .animate-scale-in,.app-main .animate-slide-down,.app-main .animate-slide-left,.app-main .animate-slide-up,.app-main [class*=stagger-]{animation:none!important;animation-delay:0s!important}@media (prefers-reduced-motion:reduce){.animate-fade-in,.animate-scale-in,.animate-slide-down,.animate-slide-left,.animate-slide-up{animation:none!important}}.skeleton{background:linear-gradient(90deg,var(--clr-gray-100) 25%,var(--clr-gray-50) 50%,var(--clr-gray-100) 75%);background-size:800px 100%;animation:shimmer 1.4s linear infinite;border-radius:var(--radius-md)}.spinner{width:20px;height:20px;border:2px solid var(--clr-gray-200);border-top-color:var(--clr-primary-500);border-radius:50%;animation:spin .7s linear infinite;display:inline-block}.spinner--sm{width:14px;height:14px}.spinner--lg{width:32px;height:32px;border-width:3px}.card{background:var(--clr-bg);border:1px solid var(--clr-border);border-radius:var(--radius-lg);padding:var(--sp-5);box-shadow:var(--shadow-xs);transition:box-shadow var(--transition-base),transform var(--transition-base)}.card:hover{box-shadow:var(--shadow-md);transform:translateY(-1px)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);padding:0 var(--sp-4);height:36px;font-size:13px;font-weight:500;border-radius:var(--radius-md);transition:background var(--transition-fast),box-shadow var(--transition-fast),transform var(--transition-fast),opacity var(--transition-fast);white-space:nowrap}.btn:hover{transform:translateY(-1px)}.btn:active{transform:translateY(0)}.btn:focus-visible{outline:none;box-shadow:var(--shadow-focus)}.btn-primary{background:var(--clr-primary-500);color:#fff}.btn-primary:hover{background:var(--clr-primary-600);box-shadow:var(--shadow-md)}.btn-secondary{background:var(--clr-bg);color:var(--clr-text);border:1px solid var(--clr-border)}.btn-secondary:hover{background:var(--clr-gray-50);box-shadow:var(--shadow-sm)}.btn-danger{background:var(--clr-danger-500);color:#fff}.btn-danger:hover{background:var(--clr-danger-600)}.btn-success{background:var(--clr-success-500);color:#fff}.btn-success:hover{background:var(--clr-success-600)}.btn-ghost{background:transparent;color:var(--clr-text-muted)}.btn-ghost:hover{background:var(--clr-gray-100);color:var(--clr-text)}.btn-icon{width:36px;height:36px;padding:0;border-radius:var(--radius-md)}.btn--sm{height:30px;padding:0 var(--sp-3);font-size:12px}.btn--lg{height:44px;padding:0 var(--sp-6);font-size:15px}.badge{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:var(--radius-full);font-size:11px;font-weight:600;line-height:1.4}.badge-primary{background:var(--clr-primary-50);color:var(--clr-primary-600)}.badge-success{background:var(--clr-success-50);color:var(--clr-success-600)}.badge-warning{background:var(--clr-warning-50);color:var(--clr-warning-600)}.badge-danger{background:var(--clr-danger-50);color:var(--clr-danger-600)}.badge-gray{background:var(--clr-gray-100);color:var(--clr-gray-600)}.input{width:100%;height:40px;padding:0 var(--sp-3);border:1px solid var(--clr-border);border-radius:var(--radius-md);font-size:14px;color:var(--clr-text);background:var(--clr-bg);outline:none;transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.input:focus{border-color:var(--clr-primary-400);box-shadow:var(--shadow-focus)}.input::placeholder{color:var(--clr-text-faint)}.input-icon-wrap{position:relative}.input-icon-wrap .input{padding-left:36px}.input-icon-wrap .input-icon{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:var(--clr-text-faint);pointer-events:none}.data-table{width:100%;border-collapse:collapse;font-size:13px}.data-table th{text-align:left;font-weight:600;color:var(--clr-text-muted);background:var(--clr-gray-50);border-bottom:1px solid var(--clr-border);white-space:nowrap}.data-table td,.data-table th{padding:var(--sp-3) var(--sp-4)}.data-table td{border-bottom:1px solid var(--clr-border-soft);vertical-align:middle}.data-table tr{transition:background var(--transition-fast)}.data-table tbody tr:hover{background:var(--clr-gray-50)}.data-table tbody tr{animation:rowIn .25s ease both}.pagination{display:flex;align-items:center;gap:var(--sp-1)}.page-btn{width:32px;height:32px;border-radius:var(--radius-sm);font-size:13px;color:var(--clr-text-muted);transition:background var(--transition-fast),color var(--transition-fast)}.page-btn:hover{background:var(--clr-gray-100);color:var(--clr-text)}.page-btn.active{background:var(--clr-primary-500);color:#fff;font-weight:600}.progress-track{height:6px;background:var(--clr-gray-100);overflow:hidden}.progress-fill,.progress-track{border-radius:var(--radius-full)}.progress-fill{height:100%;animation:progressBar .8s var(--transition-medium) both;background:var(--clr-primary-500)}.progress-fill--success{background:var(--clr-success-500)}.progress-fill--warning{background:var(--clr-warning-500)}.progress-fill--danger{background:var(--clr-danger-500)}.avatar{width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;color:#fff;background:var(--clr-primary-500);flex-shrink:0;overflow:hidden}.avatar--sm{width:28px;height:28px;font-size:11px}.avatar--lg{width:48px;height:48px;font-size:18px}.avatar--xl{width:64px;height:64px;font-size:22px}.avatar img{width:100%;height:100%;object-fit:cover}.dropdown-menu{background:var(--clr-bg);border:1px solid var(--clr-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-xl);padding:var(--sp-1);animation:slideDown var(--transition-base) ease both;transform-origin:top}.divider{height:1px;background:var(--clr-border);border:none;margin:var(--sp-3) 0}.select{height:36px;padding:0 var(--sp-8) 0 var(--sp-3);border:1px solid var(--clr-border);border-radius:var(--radius-md);font-size:13px;color:var(--clr-text);background:var(--clr-bg);-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;outline:none;cursor:pointer;transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.select:focus{border-color:var(--clr-primary-400);box-shadow:var(--shadow-focus)}[data-tooltip]{position:relative}[data-tooltip]:after{content:attr(data-tooltip);position:absolute;bottom:calc(100% + 6px);left:50%;transform:translateX(-50%);background:var(--clr-gray-900);color:#fff;font-size:11px;padding:4px 8px;border-radius:var(--radius-sm);white-space:nowrap;pointer-events:none;opacity:0;transition:opacity var(--transition-fast);z-index:var(--z-toast)}[data-tooltip]:hover:after{opacity:1}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--clr-gray-300);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--clr-gray-400)}.flex,.flex-col{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-1{gap:var(--sp-1)}.gap-2{gap:var(--sp-2)}.gap-3{gap:var(--sp-3)}.gap-4{gap:var(--sp-4)}.gap-6{gap:var(--sp-6)}.text-muted{color:var(--clr-text-muted)}.text-faint{color:var(--clr-text-faint)}.text-primary{color:var(--clr-primary-500)}.text-success{color:var(--clr-success-500)}.text-danger{color:var(--clr-danger-500)}.text-warning{color:var(--clr-warning-500)}.font-medium{font-weight:500}.font-semibold{font-weight:600}.font-bold{font-weight:700}.text-xs{font-size:11px}.text-sm{font-size:12px}.text-base{font-size:14px}.text-lg{font-size:16px}.text-xl{font-size:18px}.text-2xl{font-size:22px}.text-3xl{font-size:28px}.truncate{text-overflow:ellipsis}.sr-only,.truncate{overflow:hidden;white-space:nowrap}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;clip:rect(0,0,0,0);border:0}