.badge{display:inline-block;padding:2px 8px;border-radius:4px;font-size:12px;font-weight:500;line-height:1.6}.sample-status{padding:2px 10px;border-radius:999px;font-size:12px;font-weight:500}.sample-status.completed{background:var(--color-success, #10b981);color:#fff}.sample-status.running{background:var(--color-primary, #2563eb);color:#fff}.sample-status.queued{background:var(--clr-gray-300, #cbd5e1);color:#1e293b}.sample-status.failed{background:var(--color-danger, #ef4444);color:#fff}.sample-status.stale{background:var(--clr-gray-400, #94a3b8);color:#fff}.sample-status.not_started{background:var(--clr-gray-200, #e2e8f0);color:#475569}.sample-status.partial{background:var(--color-warning, #f59e0b);color:#fff}.review-status{padding:2px 10px;border-radius:4px;font-size:12px;font-weight:500}.review-status.approved{background:var(--clr-success-light, #f0fdf4);color:var(--color-success, #10b981);border:1px solid var(--clr-success-border, #bbf7d0)}.review-status.pending{background:var(--clr-warning-light, #fffbeb);color:var(--color-warning, #f59e0b);border:1px solid var(--clr-warning-border, #fde68a)}.review-status.rejected{background:var(--clr-danger-light, #fef2f2);color:var(--color-danger, #ef4444);border:1px solid var(--clr-danger-border, #fecaca)}.review-status.not_required{background:var(--clr-gray-100, #f1f5f9);color:var(--color-text-muted, #64748b);border:1px solid var(--color-border, #e2e8f0)}.publish-status{padding:2px 10px;border-radius:4px;font-size:12px;font-weight:500}.publish-status.draft{background:var(--clr-gray-100, #f1f5f9);color:var(--color-text-muted, #64748b);border:1px solid var(--color-border, #e2e8f0)}.publish-status.validate{background:var(--clr-warning-light, #fffbeb);color:var(--color-warning, #f59e0b);border:1px solid var(--clr-warning-border, #fde68a)}.publish-status.preview{background:var(--clr-primary-light, #eff6ff);color:var(--color-primary, #2563eb);border:1px solid var(--clr-primary-mid, #bfdbfe)}.publish-status.published{background:var(--clr-success-light, #f0fdf4);color:var(--color-success, #10b981);border:1px solid var(--clr-success-border, #bbf7d0)}.publish-status.rollback{background:var(--clr-danger-light, #fef2f2);color:var(--color-danger, #ef4444);border:1px solid var(--clr-danger-border, #fecaca)}.publish-status.generated{background:var(--clr-accent-light, #ede9fe);color:var(--clr-accent, #7c3aed);border:1px solid #ddd6fe}.publish-status.review_pending{background:var(--clr-warning-light, #fffbeb);color:var(--color-warning, #f59e0b);border:1px solid var(--clr-warning-border, #fde68a)}.publish-status.expired{background:var(--clr-gray-100, #f1f5f9);color:var(--clr-gray-500, #64748b);border:1px solid var(--color-border, #e2e8f0)}.biz-priority{padding:2px 10px;border-radius:999px;font-size:12px;font-weight:600}.biz-priority.a{background:#fff7ed;color:var(--color-warning, #f59e0b);border:1px solid #fdba74}.biz-priority.b{background:var(--clr-primary-light, #eff6ff);color:var(--color-primary, #2563eb);border:1px solid var(--clr-primary-mid, #bfdbfe)}.biz-priority.c{background:var(--clr-gray-100, #f1f5f9);color:var(--color-text-muted, #64748b);border:1px solid var(--color-border, #e2e8f0)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 16px;border-radius:8px;font-size:13px;font-weight:500;line-height:1;cursor:pointer;font-family:inherit;border:1px solid transparent;transition:all .14s ease;white-space:nowrap}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-sm{padding:5px 12px;font-size:12px}.btn-lg{padding:10px 20px;font-size:14px}.btn-primary{background:var(--color-primary, #2563eb);color:#fff}.btn-primary:hover:not(:disabled){background:var(--color-primary-dark, #1d4ed8)}.btn-secondary{background:#fff;color:var(--clr-gray-700, #374151);border-color:var(--color-border, #e2e8f0)}.btn-secondary:hover:not(:disabled){background:var(--clr-gray-50, #f8fafc);border-color:var(--clr-gray-300, #cbd5e1)}.btn-danger{background:var(--color-danger, #ef4444);color:#fff}.btn-success{background:var(--color-success, #10b981);color:#fff}.btn-warn{background:var(--color-warning, #f59e0b);color:#fff}.btn-outline{background:transparent;color:var(--color-primary, #2563eb);border-color:var(--color-primary, #2563eb)}.txt-primary{color:var(--color-primary, #2563eb)}.txt-success{color:var(--color-success, #10b981)}.txt-warning{color:var(--color-warning, #f59e0b)}.txt-danger{color:var(--color-danger, #ef4444)}.txt-muted{color:var(--color-text-muted, #64748b)}.badge-green{background:var(--clr-success-light, #f0fdf4);color:var(--color-success, #10b981);border:1px solid var(--clr-success-border, #bbf7d0)}.badge-blue{background:var(--clr-primary-light, #eff6ff);color:var(--color-primary, #2563eb);border:1px solid var(--clr-primary-mid, #bfdbfe)}.badge-yellow{background:var(--clr-warning-light, #fffbeb);color:var(--color-warning, #f59e0b);border:1px solid var(--clr-warning-border, #fde68a)}.badge-gray{background:var(--clr-gray-100, #f1f5f9);color:var(--color-text-muted, #64748b);border:1px solid var(--color-border, #e2e8f0)}.badge-red{background:var(--clr-danger-light, #fef2f2);color:var(--color-danger, #ef4444);border:1px solid var(--clr-danger-border, #fecaca)}.badge-orange{background:#fff7ed;color:var(--color-warning, #f59e0b);border:1px solid #fed7aa}.data-table{width:100%;border-collapse:collapse;font-size:13px;background:#fff;border-radius:8px;overflow:hidden}.data-table thead th{padding:10px 12px;text-align:left;background:var(--clr-gray-50, #f8fafc);font-weight:600;color:var(--color-text-muted, #64748b);border-bottom:1px solid var(--color-border, #e2e8f0);font-size:12px}.data-table tbody td{padding:12px;border-bottom:1px solid var(--clr-gray-100, #f1f5f9);color:var(--color-text-primary, #1e293b)}.data-table tbody tr:hover{background:var(--clr-gray-50, #f8fafc)}.data-table tbody tr:last-child td{border-bottom:none}.tab-bar{display:flex;gap:4px;border-bottom:1px solid var(--color-border, #e2e8f0);margin-bottom:20px;background:#fff;padding:0 20px;border-radius:8px 8px 0 0}.tab-item{padding:12px 16px;font-size:13px;color:var(--color-text-muted, #64748b);cursor:pointer;border-bottom:2px solid transparent;font-weight:500;transition:all .14s}.tab-item:hover{color:var(--color-primary, #2563eb)}.tab-item.active{color:var(--color-primary, #2563eb);border-bottom-color:var(--color-primary, #2563eb);font-weight:600}.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin-bottom:20px}.kpi-card{background:#fff;border-radius:10px;padding:16px 18px;box-shadow:0 1px 3px #0000000d;border:1px solid var(--color-border, #e2e8f0)}.kpi-label{font-size:12px;color:var(--color-text-muted, #64748b);margin-bottom:6px}.kpi-value{font-size:24px;font-weight:700;color:var(--color-text-primary, #1e293b);line-height:1.2}.kpi-value .kpi-unit{font-size:12px;color:var(--color-text-muted, #64748b);font-weight:500;margin-left:4px}.kpi-accent{color:var(--color-primary, #2563eb)}.kpi-success{color:var(--color-success, #10b981)}.kpi-warning{color:var(--color-warning, #f59e0b)}.kpi-danger{color:var(--color-danger, #ef4444)}.kpi-sub{margin-top:8px;font-size:11px;color:var(--color-text-muted, #64748b)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 16px;border-radius:6px;font-size:14px;font-weight:500;line-height:1.4;border:1px solid transparent;cursor:pointer;font-family:inherit;transition:background-color .15s,border-color .15s,color .15s,box-shadow .15s;-webkit-user-select:none;user-select:none;white-space:nowrap}.btn:focus-visible{outline:2px solid var(--clr-primary, #2563eb);outline-offset:1px}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-sm{padding:6px 10px;font-size:12px;border-radius:4px}.btn-lg{padding:10px 20px;font-size:15px;border-radius:8px}.btn-block{display:flex;width:100%}.btn-primary{background:var(--clr-primary, #2563eb);color:#fff}.btn-primary:hover:not(:disabled){background:var(--clr-primary-dark, #1d4ed8)}.btn-primary:active:not(:disabled){background:#1e40af}.btn-secondary{background:var(--clr-gray-100, #f1f5f9);color:var(--clr-gray-700, #374151);border-color:var(--clr-gray-200, #e2e8f0)}.btn-secondary:hover:not(:disabled){background:var(--clr-gray-200, #e2e8f0)}.btn-secondary:active:not(:disabled){background:var(--clr-gray-300, #cbd5e1)}.btn-success{background:var(--clr-success, #10b981);color:#fff}.btn-success:hover:not(:disabled){background:#059669}.btn-success:active:not(:disabled){background:#047857}.btn-warn{background:var(--clr-warning, #f59e0b);color:#fff}.btn-warn:hover:not(:disabled){background:#d97706}.btn-warn:active:not(:disabled){background:#b45309}.btn-danger{background:var(--clr-danger, #ef4444);color:#fff}.btn-danger:hover:not(:disabled){background:#dc2626}.btn-danger:active:not(:disabled){background:#b91c1c}.btn-outline{background:transparent;color:var(--clr-primary, #2563eb);border-color:var(--clr-primary, #2563eb)}.btn-outline:hover:not(:disabled){background:var(--clr-primary-light, #eff6ff)}.btn-outline:active:not(:disabled){background:var(--clr-primary-mid, #bfdbfe)}:root{--clr-primary: #2563eb;--clr-primary-dark: #1d4ed8;--clr-primary-light: #eff6ff;--clr-primary-mid: #bfdbfe;--clr-accent: #7c3aed;--clr-accent-light: #ede9fe;--clr-success: #10b981;--clr-success-light: #f0fdf4;--clr-success-border: #bbf7d0;--clr-warning: #f59e0b;--clr-warning-light: #fffbeb;--clr-warning-border: #fde68a;--clr-danger: #ef4444;--clr-danger-light: #fef2f2;--clr-danger-border: #fecaca;--clr-info: #0891b2;--clr-info-light: #ecfeff;--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: #374151;--clr-gray-800: #1e293b;--clr-gray-900: #0f172a;--clr-sidebar-bg: #1e293b;--clr-sidebar-border: #334155;--clr-sidebar-text: #cbd5e1;--clr-sidebar-muted: #64748b;--clr-sidebar-active: #2563eb;--clr-page-bg: #f1f5f9;--clr-card-bg: #ffffff;--font-sans: "PingFang SC","Microsoft YaHei",system-ui,sans-serif;--font-mono: "JetBrains Mono","Fira Code",monospace;--radius-sm: 6px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 14px;--radius-full: 999px;--shadow-sm: 0 1px 3px rgba(0,0,0,.05);--shadow-md: 0 4px 12px rgba(0,0,0,.08);--shadow-lg: 0 8px 24px rgba(0,0,0,.12);--trans-fast: all .14s ease;--trans-mid: all .22s ease;--trans-slow: all .35s ease;--z-nav: 100;--z-topbar: 99;--z-overlay: 150;--z-drawer: 151;--z-modal: 200;--z-toast: 999;--chart-blue: #2563eb;--chart-green: #10b981;--chart-orange: #f59e0b;--chart-red: #ef4444;--chart-purple: #7c3aed;--chart-cyan: #0891b2;--color-bg-page: #f8fafc;--color-primary: #2563eb;--color-primary-dark: #1d4ed8;--color-text-primary: #1e293b;--color-text-muted: #64748b;--color-success: #10b981;--color-warning: #f59e0b;--color-danger: #ef4444;--color-border: #e2e8f0}.h5-theme{--h5-bg: #f8f9fb;--h5-hero-from: #1a56db;--h5-hero-to: #4f46e5;--h5-chip-sel-bg: #2563eb;--h5-chip-sel-txt: #ffffff}
