:root{--nd-primary: #4F46E5;--nd-primary-rgb: 79, 70, 229;--nd-primary-light: rgba(79, 70, 229, .1);--nd-primary-hover: rgba(79, 70, 229, .04);--nd-primary-dark: #3730a3;--nd-bg: #F7F5F2;--nd-surface: #ffffff;--nd-text: #1F2937;--nd-text-secondary: #4b5563;--nd-muted: #6b7280;--nd-muted-light: #9ca3af;--nd-border: #e5e7eb;--nd-border-light: #f3f4f6;--nd-success: #22c55e;--nd-success-light: #dcfce7;--nd-danger: #dc2626;--nd-danger-light: #fee2e2;--nd-warning: #f59e0b;--nd-warning-light: #fef3c7;--nd-info: #3b82f6;--nd-info-light: #dbeafe;--nd-radius: 8px;--nd-radius-lg: 12px;--nd-radius-full: 9999px;--nd-font: "Inter", sans-serif;--nd-shadow-sm: 0 1px 2px rgba(0, 0, 0, .05);--nd-shadow: 0 1px 3px rgba(0, 0, 0, .1), 0 1px 2px rgba(0, 0, 0, .06);--nd-shadow-lg: 0 4px 12px rgba(0, 0, 0, .1);--nd-sidebar-width: 260px;--nd-sidebar-collapsed: 68px;--nd-transition: .2s ease}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html,body{height:100%;font-family:var(--nd-font);background-color:var(--nd-bg);color:var(--nd-text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:14px;line-height:1.5}a{color:inherit;text-decoration:none}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#d1d5db;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#9ca3af}.material-icons{font-size:20px;width:20px;height:20px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;-webkit-user-select:none;user-select:none;vertical-align:middle}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 16px;font-size:13px;font-weight:500;font-family:var(--nd-font);border:1px solid var(--nd-border);border-radius:var(--nd-radius);background:var(--nd-surface);color:var(--nd-text);cursor:pointer;transition:all var(--nd-transition);white-space:nowrap;line-height:1.4}.btn:hover{background:var(--nd-border-light)}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn .material-icons{font-size:18px;width:18px;height:18px}.btn-primary{background:var(--nd-primary);color:#fff;border-color:var(--nd-primary)}.btn-primary:hover{background:var(--nd-primary-dark);border-color:var(--nd-primary-dark)}.btn-danger{background:var(--nd-danger);color:#fff;border-color:var(--nd-danger)}.btn-danger:hover{background:#b91c1c;border-color:#b91c1c}.btn-outline{background:transparent;border-color:var(--nd-border);color:var(--nd-text)}.btn-outline:hover{background:var(--nd-border-light)}.btn-ghost{background:transparent;border:none;color:var(--nd-muted);padding:6px 10px}.btn-ghost:hover{background:var(--nd-border-light);color:var(--nd-text)}.btn-icon{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:none;border-radius:var(--nd-radius);background:transparent;color:var(--nd-muted);cursor:pointer;transition:all var(--nd-transition)}.btn-icon:hover{background:var(--nd-border-light);color:var(--nd-text)}.btn-icon:disabled{opacity:.5;cursor:not-allowed}.btn-sm{padding:4px 10px;font-size:12px}.btn-lg{padding:10px 24px;font-size:14px}.form-group{display:flex;flex-direction:column;gap:4px}.form-label{font-size:13px;font-weight:500;color:var(--nd-text-secondary)}.form-input,.form-select,.form-textarea{padding:8px 12px;font-size:13px;font-family:var(--nd-font);border:1px solid var(--nd-border);border-radius:var(--nd-radius);background:var(--nd-surface);color:var(--nd-text);transition:border-color var(--nd-transition),box-shadow var(--nd-transition);outline:none;width:100%}.form-input:focus,.form-select:focus,.form-textarea:focus{border-color:var(--nd-primary);box-shadow:0 0 0 3px rgba(var(--nd-primary-rgb),.1)}.form-input::placeholder,.form-select::placeholder,.form-textarea::placeholder{color:var(--nd-muted-light)}.form-input:disabled,.form-select:disabled,.form-textarea:disabled{background:var(--nd-border-light);opacity:.7}.form-select{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='%236b7280' stroke-width='2'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;padding-right:32px}.form-textarea{resize:vertical;min-height:80px}.form-input-icon{position:relative}.form-input-icon .material-icons{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:var(--nd-muted-light);pointer-events:none}.form-input-icon .form-input{padding-left:36px}.card{background:var(--nd-surface);border:1px solid var(--nd-border);border-radius:var(--nd-radius-lg);padding:20px;transition:all var(--nd-transition)}.card-hover:hover{border-color:var(--nd-primary);box-shadow:0 2px 8px rgba(var(--nd-primary-rgb),.1)}.nd-table{width:100%;border-collapse:collapse;background:transparent}.nd-table th{text-align:left;font-size:12px;font-weight:600;color:var(--nd-muted);text-transform:uppercase;letter-spacing:.05em;padding:10px 16px;border-bottom:1px solid var(--nd-border)}.nd-table td{font-size:13px;color:var(--nd-text-secondary);padding:12px 16px;border-bottom:1px solid var(--nd-border-light)}.nd-table tbody tr{cursor:pointer;transition:background var(--nd-transition)}.nd-table tbody tr:hover{background:var(--nd-primary-hover)}.nd-table tbody tr:last-child td{border-bottom:none}.chip{display:inline-flex;align-items:center;gap:4px;padding:2px 10px;font-size:12px;font-weight:500;border-radius:var(--nd-radius-full);background:var(--nd-border-light);color:var(--nd-text-secondary);white-space:nowrap}.chip .material-icons{font-size:14px;width:14px;height:14px}.chip-primary{background:var(--nd-primary-light);color:var(--nd-primary)}.chip-success{background:var(--nd-success-light);color:#15803d}.chip-danger{background:var(--nd-danger-light);color:var(--nd-danger)}.chip-warning{background:var(--nd-warning-light);color:#92400e}.chip-info{background:var(--nd-info-light);color:#1e40af}.badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;font-size:10px;font-weight:700;border-radius:var(--nd-radius-full);background:var(--nd-danger);color:#fff}.tab-group{display:flex;flex-direction:column}.tab-nav{display:flex;gap:0;border-bottom:2px solid var(--nd-border);margin-bottom:20px}.tab{padding:10px 20px;font-size:13px;font-weight:500;color:var(--nd-muted);background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-2px;cursor:pointer;transition:all var(--nd-transition);font-family:var(--nd-font)}.tab:hover{color:var(--nd-text)}.tab.active{color:var(--nd-primary);border-bottom-color:var(--nd-primary)}.tab-panel{animation:fadeIn .15s ease}.toggle-switch{position:relative;display:inline-flex;align-items:center;gap:10px;cursor:pointer;font-size:13px;-webkit-user-select:none;user-select:none}.toggle-switch input[type=checkbox]{display:none}.toggle-switch .toggle-slider{position:relative;width:40px;height:22px;background:var(--nd-border);border-radius:11px;transition:background var(--nd-transition)}.toggle-switch .toggle-slider:after{content:"";position:absolute;top:2px;left:2px;width:18px;height:18px;background:#fff;border-radius:50%;box-shadow:var(--nd-shadow-sm);transition:transform var(--nd-transition)}.toggle-switch input:checked+.toggle-slider{background:var(--nd-primary)}.toggle-switch input:checked+.toggle-slider:after{transform:translate(18px)}.progress-track{width:100%;height:6px;background:var(--nd-border);border-radius:3px;overflow:hidden}.progress-fill{height:100%;border-radius:3px;transition:width .4s ease;background:var(--nd-primary)}.progress-fill.fill-success{background:var(--nd-success)}.progress-fill.fill-warning{background:var(--nd-warning)}.progress-fill.fill-danger{background:var(--nd-danger)}.divider{border:none;border-top:1px solid var(--nd-border-light);margin:8px 0}.dropdown{position:relative;display:inline-block}.dropdown-panel{position:absolute;top:100%;right:0;z-index:1000;min-width:180px;background:var(--nd-surface);border:1px solid var(--nd-border);border-radius:var(--nd-radius);box-shadow:var(--nd-shadow-lg);padding:4px 0;animation:dropIn .12s ease;max-height:400px;overflow-y:auto}.dropdown-item{display:flex;align-items:center;gap:8px;width:100%;padding:8px 14px;font-size:13px;font-family:var(--nd-font);color:var(--nd-text);background:none;border:none;cursor:pointer;transition:background var(--nd-transition);text-align:left}.dropdown-item:hover{background:var(--nd-border-light)}.dropdown-item.danger{color:var(--nd-danger)}.dropdown-item .material-icons{font-size:18px;width:18px;height:18px;color:var(--nd-muted)}.dropdown-item.danger .material-icons{color:var(--nd-danger)}.dialog-backdrop{position:fixed;inset:0;z-index:2000;background:#0006;display:flex;align-items:center;justify-content:center;animation:fadeIn .15s ease}.dialog-panel{background:var(--nd-surface);border-radius:var(--nd-radius-lg);box-shadow:var(--nd-shadow-lg);max-height:90vh;overflow-y:auto;animation:scaleIn .15s ease;width:100%}.dialog-header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px 12px}.dialog-header h2{font-size:18px;font-weight:600;display:flex;align-items:center;gap:8px}.dialog-body{padding:0 24px 20px}.dialog-footer{display:flex;justify-content:flex-end;gap:8px;padding:12px 24px 20px}.toast-container{position:fixed;bottom:24px;left:50%;transform:translate(-50%);z-index:3000;display:flex;flex-direction:column-reverse;gap:8px;pointer-events:none}.toast{display:flex;align-items:center;gap:10px;padding:12px 20px;border-radius:var(--nd-radius);background:var(--nd-text);color:#fff;font-size:13px;font-weight:500;box-shadow:var(--nd-shadow-lg);pointer-events:auto;animation:slideUp .25s ease;min-width:280px}.toast.toast-success{background:#15803d}.toast.toast-error{background:var(--nd-danger)}.toast.toast-info{background:var(--nd-info)}.toast.toast-exit{animation:fadeOut .2s ease forwards}.toast .toast-close{margin-left:auto;background:none;border:none;color:#ffffffb3;cursor:pointer;padding:2px;font-size:18px;line-height:1}.toast .toast-close:hover{color:#fff}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes scaleIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes slideUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes dropIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@keyframes spin{to{transform:rotate(360deg)}}.spinner{width:40px;height:40px;border:3px solid var(--nd-border);border-top-color:var(--nd-primary);border-radius:50%;animation:spin .8s linear infinite}.spinner-sm{width:20px;height:20px;border-width:2px}.flex{display:flex}.flex-col{flex-direction:column}.flex-1{flex:1}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-end{justify-content:flex-end}.gap-1{gap:4px}.gap-2{gap:8px}.gap-3{gap:12px}.gap-4{gap:16px}.gap-6{gap:24px}.w-full{width:100%}.h-full{height:100%}.text-center{text-align:center}.font-medium{font-weight:500}.font-semibold{font-weight:600}.text-sm{font-size:13px}.text-xs{font-size:12px}.text-muted{color:var(--nd-muted)}.text-primary{color:var(--nd-primary)}.text-danger{color:var(--nd-danger)}.text-success{color:var(--nd-success)}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cursor-pointer{cursor:pointer}.rounded{border-radius:var(--nd-radius)}.rounded-lg{border-radius:var(--nd-radius-lg)}.shadow-sm{box-shadow:var(--nd-shadow-sm)}.shadow{box-shadow:var(--nd-shadow)}.hidden{display:none!important}
