:root{--font-sans:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono:"JetBrains Mono", ui-monospace, monospace;--gray-50:#f8f9fb;--gray-100:#eef0f4;--gray-200:#e2e5eb;--gray-300:#cdd2db;--gray-400:#9aa2b1;--gray-500:#6b7383;--gray-600:#4d5566;--gray-700:#363c4a;--gray-800:#22262f;--gray-900:#14161c;--brand-50:#eef4ff;--brand-100:#dbe6ff;--brand-400:#5b7fe8;--brand-500:#3c5fd9;--brand-600:#2d49b8;--brand-700:#253c96;--success-500:#1c9c6b;--success-100:#dcf3e9;--warning-500:#b8791a;--warning-100:#fbecd4;--danger-500:#c0392f;--danger-100:#fae1de;--info-500:#2d7fd9;--info-100:#dfeeff;--bg-app:var(--gray-50);--bg-surface:#fff;--bg-surface-sunken:var(--gray-100);--border-subtle:var(--gray-200);--border-default:var(--gray-300);--text-primary:var(--gray-900);--text-secondary:var(--gray-600);--text-tertiary:var(--gray-500);--text-on-brand:#fff;--radius-sm:6px;--radius-md:10px;--radius-lg:14px;--shadow-sm:0 1px 2px #14161c0f;--shadow-md:0 4px 16px #14161c14;--shadow-lg:0 12px 32px #14161c1f;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body,#root{height:100%}body{font-family:var(--font-sans);background:var(--bg-app);color:var(--text-primary);-webkit-font-smoothing:antialiased;margin:0;font-size:14px;line-height:1.5}h1,h2,h3,h4,p{margin:0}button,input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}a{color:inherit}::selection{background:var(--brand-100)}:focus-visible{outline:2px solid var(--brand-500);outline-offset:2px}.btn{border-radius:var(--radius-sm);cursor:pointer;white-space:nowrap;border:1px solid #0000;justify-content:center;align-items:center;gap:8px;height:38px;padding:0 16px;font-size:13.5px;font-weight:600;transition:background-color .12s,border-color .12s,opacity .12s,transform 80ms;display:inline-flex}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.55;cursor:not-allowed;transform:none}.btn-primary{background:var(--brand-500);color:var(--text-on-brand)}.btn-primary:hover:not(:disabled){background:var(--brand-600)}.btn-secondary{background:var(--bg-surface);border-color:var(--border-default);color:var(--text-primary)}.btn-secondary:hover:not(:disabled){background:var(--gray-100)}.btn-ghost{color:var(--text-secondary);background:0 0}.btn-ghost:hover:not(:disabled){background:var(--gray-100);color:var(--text-primary)}.btn-danger{background:var(--bg-surface);border-color:var(--danger-500);color:var(--danger-500)}.btn-danger:hover:not(:disabled){background:var(--danger-100)}.btn-sm{height:30px;padding:0 12px;font-size:12.5px}.btn-block{width:100%}.field{flex-direction:column;gap:6px;display:flex}.label{color:var(--text-secondary);font-size:12.5px;font-weight:600}.hint{color:var(--text-tertiary);font-size:12px}.input,.select{border-radius:var(--radius-sm);border:1px solid var(--border-default);background:var(--bg-surface);height:38px;color:var(--text-primary);width:100%;padding:0 12px}.input:focus,.select:focus{border-color:var(--brand-500);box-shadow:0 0 0 3px var(--brand-100);outline:none}.input.has-error{border-color:var(--danger-500)}.error-text{color:var(--danger-500);font-size:12px}.card{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);overflow-x:auto}.card-header{border-bottom:1px solid var(--border-subtle);justify-content:space-between;align-items:center;padding:18px 20px;display:flex}.card-title{letter-spacing:-.01em;font-size:15px;font-weight:700}.card-body{padding:20px}.badge{letter-spacing:.02em;text-transform:uppercase;border-radius:999px;align-items:center;gap:5px;padding:3px 9px;font-size:11.5px;font-weight:700;line-height:1.6;display:inline-flex}.badge-dot{background:currentColor;border-radius:50%;width:6px;height:6px}.badge-neutral{background:var(--gray-100);color:var(--gray-600)}.badge-success{background:var(--success-100);color:var(--success-500)}.badge-warning{background:var(--warning-100);color:var(--warning-500)}.badge-danger{background:var(--danger-100);color:var(--danger-500)}.badge-info{background:var(--info-100);color:var(--info-500)}.data-table{border-collapse:collapse;width:100%}.data-table th{text-align:left;text-transform:uppercase;letter-spacing:.03em;color:var(--text-tertiary);border-bottom:1px solid var(--border-subtle);padding:10px 20px;font-size:11.5px;font-weight:700}.data-table td{border-bottom:1px solid var(--border-subtle);padding:14px 20px;font-size:13.5px}.data-table tbody tr:last-child td{border-bottom:none}.data-table tbody tr{transition:background-color .1s}.data-table tbody tr:hover{background:var(--bg-surface-sunken)}.state-block{text-align:center;color:var(--text-secondary);flex-direction:column;justify-content:center;align-items:center;gap:10px;padding:56px 24px;display:flex}.state-icon{background:var(--gray-100);width:44px;height:44px;color:var(--text-tertiary);border-radius:12px;justify-content:center;align-items:center;margin-bottom:4px;display:flex}.state-title{color:var(--text-primary);font-size:14.5px;font-weight:700}.state-desc{max-width:360px;font-size:13px}.spinner{border:2px solid var(--gray-200);border-top-color:var(--brand-500);border-radius:50%;width:18px;height:18px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.app-shell{grid-template-columns:240px 1fr;min-height:100vh;display:grid}.sidebar{background:var(--gray-900);color:var(--gray-300);flex-direction:column;height:100vh;padding:20px 14px;display:flex;position:sticky;top:0}.sidebar-brand{color:#fff;letter-spacing:-.01em;align-items:center;gap:10px;padding:6px 10px 22px;font-size:15px;font-weight:800;display:flex}.sidebar-mark{background:linear-gradient(135deg, var(--brand-400), var(--brand-600));border-radius:8px;flex-shrink:0;width:26px;height:26px}.nav-section-label{text-transform:uppercase;letter-spacing:.06em;color:var(--gray-500);padding:14px 10px 6px;font-size:10.5px;font-weight:700}.nav-link{border-radius:var(--radius-sm);color:var(--gray-300);align-items:center;gap:10px;padding:9px 10px;font-size:13.5px;font-weight:500;text-decoration:none;transition:background-color .1s,color .1s;display:flex}.nav-link:hover{color:#fff;background:#ffffff0f}.nav-link.active{color:#fff;background:#5b7fe82e}.nav-link-icon{opacity:.85;flex-shrink:0;width:16px;height:16px}.sidebar-footer{border-top:1px solid #ffffff14;margin-top:auto;padding-top:14px}.sidebar-user{align-items:center;gap:10px;padding:8px 10px;display:flex}.avatar{background:var(--brand-500);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:30px;height:30px;font-size:12px;font-weight:700;display:flex}.sidebar-user-name{color:#fff;font-size:13px;font-weight:600;line-height:1.3}.sidebar-user-role{color:var(--gray-500);text-transform:capitalize;font-size:11.5px}.content-area{min-width:0;max-width:1180px;padding:28px 32px 48px}.page-header{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:22px;display:flex}.page-title{letter-spacing:-.015em;font-size:21px;font-weight:800}.page-subtitle{color:var(--text-secondary);margin-top:4px;font-size:13px}.toolbar{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:16px;display:flex}.stat-grid{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:14px;margin-bottom:24px;display:grid}.stat-card{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:16px 18px}.stat-link{color:inherit;text-decoration:none;transition:border-color .12s,box-shadow .12s,transform .12s;display:block}.stat-link:hover{border-color:var(--border-strong);box-shadow:var(--shadow-sm,0 1px 3px #00000014)}.stat-link:active{transform:translateY(1px)}.stat-link:focus-visible{outline:2px solid var(--brand-500,#3b5bdb);outline-offset:2px}.stat-label{text-transform:uppercase;letter-spacing:.03em;color:var(--text-tertiary);font-size:11.5px;font-weight:700}.stat-value{letter-spacing:-.02em;font-variant-numeric:tabular-nums;margin-top:6px;font-size:26px;font-weight:800}.auth-page{background:var(--gray-900);background-image:radial-gradient(circle at 20% 20%,#5b7fe838,#0000 45%),radial-gradient(circle at 80% 80%,#2d49b840,#0000 45%);justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.auth-card{background:var(--bg-surface);border-radius:var(--radius-lg);width:100%;max-width:400px;box-shadow:var(--shadow-lg);padding:32px 30px 28px}.auth-brand{align-items:center;gap:10px;margin-bottom:22px;display:flex}.auth-title{letter-spacing:-.01em;font-size:19px;font-weight:800}.auth-subtitle{color:var(--text-secondary);margin-top:4px;margin-bottom:22px;font-size:13px}.auth-form{flex-direction:column;gap:14px;display:flex}.auth-footer{text-align:center;color:var(--text-secondary);margin-top:18px;font-size:13px}.auth-footer a{color:var(--brand-500);font-weight:600;text-decoration:none}.banner-error{background:var(--danger-100);color:var(--danger-500);border-radius:var(--radius-sm);padding:10px 12px;font-size:13px;font-weight:500}.modal-backdrop{z-index:50;background:#14161c80;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.modal{background:var(--bg-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);flex-direction:column;width:100%;max-width:560px;max-height:88vh;display:flex}.modal-header{border-bottom:1px solid var(--border-subtle);justify-content:space-between;align-items:center;padding:18px 22px;display:flex}.modal-body{padding:20px 22px;overflow-y:auto}.modal-footer{border-top:1px solid var(--border-subtle);justify-content:flex-end;gap:10px;padding:16px 22px;display:flex}.mobile-topbar{display:none}.mobile-nav-backdrop{justify-content:flex-start;padding:0}.mobile-nav-drawer{width:260px;height:100vh;animation:.16s ease-out slide-in}@keyframes slide-in{0%{transform:translate(-100%)}to{transform:translate(0)}}@media (width<=860px){.app-shell{grid-template-columns:1fr}.desktop-sidebar{display:none}.mobile-topbar{background:var(--gray-900);color:#fff;z-index:20;align-items:center;gap:12px;padding:12px 16px;display:flex;position:sticky;top:0}.mobile-topbar .btn-ghost{color:#fff}.content-area{padding:20px}}@media (prefers-reduced-motion:reduce){.mobile-nav-drawer{animation:none}}
