:root{--brand-primary: #111827;--brand-primary-hover: #374151;--brand-primary-light: #f3f4f6;--brand-primary-lighter: #f9fafb;--brand-secondary: #374151;--brand-accent: #06b6d4;--success: #6b7280;--success-light: #f3f4f6;--warning: #9ca3af;--warning-light: #f9fafb;--error: #374151;--error-light: #f3f4f6;--danger: #ef4444;--info: #4b5563;--info-light: #f3f4f6;--gray-50: #f9fafb;--gray-100: #f3f4f6;--gray-200: #e5e7eb;--gray-300: #d1d5db;--gray-400: #9ca3af;--gray-500: #6b7280;--gray-600: #4b5563;--gray-700: #374151;--gray-800: #1f2937;--gray-900: #111827;--text-primary: var(--gray-900);--text-regular: var(--gray-700);--text-secondary: var(--gray-500);--text-placeholder: var(--gray-400);--text-disabled: var(--gray-300);--bg-body: #ffffff;--bg-container: #ffffff;--bg-elevated: #ffffff;--bg-hover: var(--gray-50);--bg-active: var(--gray-100);--bg-mask: rgba(0, 0, 0, .45);--border-color: var(--gray-200);--border-color-light: var(--gray-100);--border-radius-sm: 6px;--border-radius-md: 8px;--border-radius-lg: 12px;--border-radius-xl: 16px;--border-radius-full: 9999px;--shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, .03);--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .04);--shadow-md: 0 1px 3px 0 rgba(0, 0, 0, .05), 0 1px 2px -1px rgba(0, 0, 0, .05);--shadow-lg: 0 4px 6px -1px rgba(0, 0, 0, .05), 0 2px 4px -2px rgba(0, 0, 0, .05);--shadow-xl: 0 10px 15px -3px rgba(0, 0, 0, .05), 0 4px 6px -4px rgba(0, 0, 0, .05);--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 16px;--spacing-lg: 24px;--spacing-xl: 32px;--spacing-2xl: 48px;--font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-size-xs: 12px;--font-size-sm: 13px;--font-size-base: 14px;--font-size-lg: 16px;--font-size-xl: 18px;--font-size-2xl: 20px;--font-size-3xl: 24px;--font-size-4xl: 30px;--line-height-tight: 1.25;--line-height-normal: 1.5;--line-height-relaxed: 1.75;--transition-fast: .15s cubic-bezier(.4, 0, .2, 1);--transition-normal: .25s cubic-bezier(.4, 0, .2, 1);--transition-slow: .35s cubic-bezier(.4, 0, .2, 1);--header-height: 60px;--sider-width: 240px;--sider-collapsed-width: 64px}*{margin:0;padding:0;box-sizing:border-box}html,body,#app{height:100%;width:100%}body{font-family:var(--font-family);font-size:var(--font-size-base);line-height:var(--line-height-normal);background:var(--bg-body);color:var(--text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{color:inherit;text-decoration:none}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--gray-300);border-radius:3px;transition:background var(--transition-fast)}::-webkit-scrollbar-thumb:hover{background:var(--gray-400)}.text-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-ellipsis-2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.flex-center{display:flex;align-items:center;justify-content:center}.flex-between{display:flex;align-items:center;justify-content:space-between}.cursor-pointer{cursor:pointer}.card-hover{transition:transform var(--transition-normal),box-shadow var(--transition-normal)}.card-hover:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg)}:deep(.n-data-table .n-data-table-empty){padding:48px 24px}:deep(.n-data-table .n-data-table-empty .n-empty){padding:24px}:deep(.n-empty .n-empty__icon){font-size:48px;opacity:.4}:deep(.n-empty .n-empty__description){font-size:14px;color:var(--gray-400);margin-top:8px}.page-header{flex-wrap:wrap;gap:12px}.page-header-left{min-width:0;flex:1}.page-container{box-sizing:border-box}@media (max-width: 768px){.page-container{padding:16px}.page-title{font-size:18px}.page-desc{font-size:12px}.pagination-wrapper{justify-content:center}}.page-container .n-card{background:#fff;border:1px solid var(--gray-100);box-shadow:none}.n-layout-header{background:#fff!important;border-bottom:1px solid var(--gray-100)}.n-layout-sider{background:#fff!important;border-right:1px solid var(--gray-100)}.n-layout-sider .n-layout-sider-scroll-container{background:#fff}.card-hover{transition:box-shadow var(--transition-normal)}.card-hover:hover{transform:none;box-shadow:var(--shadow-sm)}
