:root{--sidebar-bg: #0d1b2a;--sidebar-hover: rgba(79, 127, 255, .12);--sidebar-active: rgba(79, 127, 255, .18);--sidebar-text: #8da4c0;--sidebar-text-active: #e8f0ff;--sidebar-accent: #4f7eff;--sidebar-width: 240px;--content-bg: #f0f4f8;--card-bg: #ffffff;--card-shadow: 0 1px 3px rgba(13,27,42,.08), 0 4px 12px rgba(13,27,42,.04);--card-radius: 12px;--primary: #4f7eff;--primary-hover: #3d6be8;--primary-light: #eef2ff;--success: #10b981;--success-light: #d1fae5;--warning: #f59e0b;--warning-light: #fef3c7;--danger: #ef4444;--danger-light: #fee2e2;--info: #06b6d4;--info-light: #cffafe;--text-primary: #0d1b2a;--text-secondary: #5a7a99;--text-muted: #94a3b8;--border: #e2eaf4;--header-bg: #ffffff;--header-h: 60px}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0;height:100%;font-family:Outfit,sans-serif;font-size:14px;color:var(--text-primary);background:var(--content-bg);-webkit-font-smoothing:antialiased}#root{height:100%}a{text-decoration:none;color:inherit}button{font-family:Outfit,sans-serif;cursor:pointer}input,select,textarea{font-family:Outfit,sans-serif}::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:999px}::-webkit-scrollbar-thumb:hover{background:#94a3b8}.mono{font-family:JetBrains Mono,monospace}.text-muted{color:var(--text-muted)}.text-success{color:var(--success)}.text-danger{color:var(--danger)}.text-warning{color:var(--warning)}.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 18px;border-radius:8px;font-size:14px;font-weight:500;border:none;transition:all .18s ease;white-space:nowrap}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-hover);transform:translateY(-1px);box-shadow:0 4px 12px #4f7fff4d}.btn-primary:active{transform:translateY(0)}.btn-ghost{background:transparent;color:var(--text-secondary);border:1px solid var(--border)}.btn-ghost:hover{background:var(--content-bg);color:var(--text-primary)}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover{background:#dc2626}.btn-sm{padding:5px 12px;font-size:13px}.btn-lg{padding:11px 24px;font-size:15px}.form-group{display:flex;flex-direction:column;gap:5px}.form-label{font-size:13px;font-weight:500;color:var(--text-secondary)}.form-input{padding:10px 14px;border-radius:8px;border:1.5px solid var(--border);background:#fafbfd;color:var(--text-primary);font-size:14px;transition:border-color .15s;outline:none}.form-input:focus{border-color:var(--primary);background:#fff}.form-input.error{border-color:var(--danger)}.form-error{font-size:12px;color:var(--danger)}.form-hint{font-size:12px;color:var(--text-muted)}.card{background:var(--card-bg);border-radius:var(--card-radius);box-shadow:var(--card-shadow);padding:20px}.table-wrap{overflow-x:auto;border-radius:10px;border:1px solid var(--border)}table{width:100%;border-collapse:collapse}thead{background:#f8fafd}th{padding:11px 16px;text-align:left;font-size:12px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;border-bottom:1px solid var(--border)}td{padding:13px 16px;font-size:14px;border-bottom:1px solid #f1f5f9;color:var(--text-primary)}tbody tr:last-child td{border-bottom:none}tbody tr:hover td{background:#f8fafd}.badge{display:inline-flex;align-items:center;padding:3px 9px;border-radius:999px;font-size:11px;font-weight:600}.badge-success{background:var(--success-light);color:#065f46}.badge-warning{background:var(--warning-light);color:#92400e}.badge-danger{background:var(--danger-light);color:#991b1b}.badge-info{background:var(--info-light);color:#0e7490}.badge-neutral{background:#f1f5f9;color:#475569}@keyframes spin{to{transform:rotate(360deg)}}.spinner{width:20px;height:20px;border-radius:50%;border:2px solid var(--border);border-top-color:var(--primary);animation:spin .7s linear infinite;display:inline-block}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px}.page-title{font-size:22px;font-weight:700;color:var(--text-primary)}.page-subtitle{font-size:13px;color:var(--text-muted);margin-top:2px}@keyframes fadeUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.fade-up{animation:fadeUp .3s ease forwards}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.fade-in{animation:fadeIn .25s ease forwards}
