#app[data-v-318a4643]{height:100vh;width:100%}.notifications-container[data-v-318a4643]{position:fixed;top:20px;right:20px;z-index:9999;max-width:400px;pointer-events:none}.notification[data-v-318a4643]{background:white;border-radius:8px;padding:16px;margin-bottom:12px;box-shadow:0 10px 15px -3px #0000001a;pointer-events:auto;animation:slideIn-318a4643 .3s ease-out}.notification-header[data-v-318a4643]{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.notification-title[data-v-318a4643]{font-weight:600;font-size:14px}.notification-close[data-v-318a4643]{background:none;border:none;cursor:pointer;color:#999;font-size:16px;padding:0;line-height:1}.notification-close[data-v-318a4643]:hover{color:#333}.notification-message[data-v-318a4643]{font-size:14px;color:#666;line-height:1.4}.notification-success[data-v-318a4643]{border-left:4px solid #10b981}.notification-success .notification-header[data-v-318a4643]{color:#10b981}.notification-error[data-v-318a4643]{border-left:4px solid #ef4444}.notification-error .notification-header[data-v-318a4643]{color:#ef4444}.notification-warning[data-v-318a4643]{border-left:4px solid #f59e0b}.notification-warning .notification-header[data-v-318a4643]{color:#f59e0b}.notification-info[data-v-318a4643]{border-left:4px solid #0ea5e9}.notification-info .notification-header[data-v-318a4643]{color:#0ea5e9}@keyframes slideIn-318a4643{0%{transform:translate(400px);opacity:0}to{transform:translate(0);opacity:1}}@media (max-width: 640px){.notifications-container[data-v-318a4643]{left:10px;right:10px;max-width:none;top:10px}.notification[data-v-318a4643]{margin-bottom:8px}}:root{--color-primary: #1c64f2;--color-primary-dark: #1a56db;--color-primary-light: #3b82f6;--color-success: #10b981;--color-warning: #f59e0b;--color-danger: #ef4444;--color-info: #0ea5e9;--color-bg: #f3f4f6;--color-bg-secondary: #e5e7eb;--color-surface: #ffffff;--color-surface-variant: #f9fafb;--color-text: #1f2937;--color-text-secondary: #6b7280;--color-text-tertiary: #9ca3af;--color-border: #e5e7eb;--color-border-light: #f3f4f6;--color-sidebar-bg: #1f2937;--color-sidebar-text: #d1d5db;--color-sidebar-active: #1c64f2;--color-sidebar-hover: #374151;--sidebar-width: 220px;--header-height: 60px;--radius-sm: 4px;--radius-md: 6px;--radius-lg: 8px;--radius-xl: 12px;--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 12px;--spacing-lg: 16px;--spacing-xl: 20px;--spacing-2xl: 24px;--spacing-3xl: 32px;--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .05);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .1);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .1);--transition-fast: .15s;--transition-normal: .3s;--transition-slow: .5s;--font-family: "Microsoft YaHei UI", "Microsoft YaHei", "PingFang SC", "Noto Sans SC", "Segoe UI", sans-serif;--font-mono: "Cascadia Mono", "Consolas", "Courier New", monospace;--font-size-xs: 13px;--font-size-sm: 14px;--font-size-base: 15px;--font-size-lg: 17px;--font-size-xl: 19px;--font-size-2xl: 24px;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;font-family:var(--font-family);font-size:var(--font-size-base);color:var(--color-text);background:var(--color-bg);line-height:1.6;-webkit-font-smoothing:antialiased}input,select,textarea,button{font-family:var(--font-family)}#app{height:100vh}button{font-family:inherit;cursor:pointer}a{color:var(--color-primary);text-decoration:none;transition:color var(--transition-fast)}a:hover{text-decoration:underline}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-sm);padding:9px 18px;border:1px solid transparent;border-radius:var(--radius-md);font-size:var(--font-size-base);font-weight:var(--font-weight-medium);transition:all var(--transition-fast);background:var(--color-surface);color:var(--color-text);border-color:var(--color-border);cursor:pointer}.btn:hover{background:var(--color-surface-variant)}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.btn-primary:hover{background:var(--color-primary-dark);border-color:var(--color-primary-dark)}.btn-success{background:var(--color-success);color:#fff;border-color:var(--color-success)}.btn-warning{background:var(--color-warning);color:#fff;border-color:var(--color-warning)}.btn-danger{background:var(--color-danger);color:#fff;border-color:var(--color-danger)}.btn-sm{padding:5px 10px;font-size:var(--font-size-sm)}.btn-lg{padding:12px 24px;font-size:var(--font-size-lg)}.btn-block{width:100%}.btn-link{background:transparent;border:none;color:var(--color-primary);padding:0}.form-group{margin-bottom:var(--spacing-lg)}.form-label{display:block;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-secondary);margin-bottom:var(--spacing-sm)}.form-input,.form-select,.form-textarea{width:100%;padding:10px 12px;font-size:var(--font-size-base);border:1px solid var(--color-border);border-radius:var(--radius-md);font-family:inherit;outline:none;transition:border-color var(--transition-fast);background:var(--color-surface);color:var(--color-text)}.form-input:focus,.form-select:focus,.form-textarea:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px #1c64f21a}.form-textarea{min-height:80px;resize:vertical}.form-input:disabled,.form-select:disabled,.form-textarea:disabled{background:var(--color-surface-variant);opacity:.6;cursor:not-allowed}.card{background:var(--color-surface);border-radius:var(--radius-lg);border:1px solid var(--color-border);padding:var(--spacing-lg);box-shadow:var(--shadow-sm)}.card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--spacing-lg);padding-bottom:var(--spacing-lg);border-bottom:1px solid var(--color-border)}.card-title{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text)}.card-body{padding:0}.card-footer{margin-top:var(--spacing-lg);padding-top:var(--spacing-lg);border-top:1px solid var(--color-border)}.table{width:100%;border-collapse:collapse;font-size:var(--font-size-base)}.table thead{background:var(--color-surface-variant);border-bottom:2px solid var(--color-border)}.table th{padding:var(--spacing-md);text-align:left;font-weight:var(--font-weight-semibold);color:var(--color-text-secondary)}.table td{padding:var(--spacing-md);border-bottom:1px solid var(--color-border)}.table tbody tr:hover{background:var(--color-surface-variant)}.alert{padding:var(--spacing-lg);border-radius:var(--radius-lg);margin-bottom:var(--spacing-lg);border:1px solid}.alert-success{background:#d1fae5;border-color:#6ee7b7;color:#065f46}.alert-error{background:#fee2e2;border-color:#fca5a5;color:#7f1d1d}.alert-warning{background:#fef3c7;border-color:#fde68a;color:#78350f}.alert-info{background:#cffafe;border-color:#67e8f9;color:#0c4a6e}.spinner{display:inline-block;width:20px;height:20px;border:3px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.badge{display:inline-block;padding:3px 10px;border-radius:12px;font-size:13px;font-weight:500;white-space:nowrap;line-height:1.4}.badge-success{background:#d1fae5;color:#065f46}.badge-warning{background:#fef3c7;color:#92400e}.badge-danger{background:#fee2e2;color:#991b1b}.badge-secondary{background:#e5e7eb;color:#374151}.badge-info{background:#dbeafe;color:#1e40af}.text-muted{color:var(--color-text-secondary)}.text-mono{font-family:var(--font-mono);font-size:13.5px}.text-right{text-align:right}.text-center{text-align:center}.text-danger{color:var(--color-danger)}.text-success{color:var(--color-success)}.empty-state{text-align:center;padding:40px 20px;color:var(--color-text-secondary);font-size:15px}.flash{padding:12px 16px;border-radius:6px;margin:10px 0;font-size:14px;line-height:1.6;border-left:4px solid #94a3b8;background:#f1f5f9;color:#334155}.flash-success{background:#dcfce7;border-left-color:#22c55e;color:#166534}.flash-error{background:#fee2e2;border-left-color:#ef4444;color:#991b1b}.flash-warn{background:#fef3c7;border-left-color:#f59e0b;color:#92400e}.detail-section{margin-bottom:28px}.detail-section h3{font-size:15px;font-weight:600;color:var(--color-text);margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid var(--color-border);display:flex;align-items:center;gap:8px;flex-wrap:wrap}.detail-section h3 .right{margin-left:auto;font-size:13px;font-weight:400}.detail-section h3 small{font-weight:400;color:#888;font-size:13px}.detail-grid{display:grid;grid-template-columns:200px 1fr;gap:10px 16px;font-size:14px;margin:0;line-height:1.7}.detail-grid dt{color:var(--color-text-secondary)}.detail-grid dd{margin:0;word-break:break-all}.form-grid,.field-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.form-grid .form-group,.field-grid .form-group{margin-bottom:0}.span-2{grid-column:1 / -1}.toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:16px}.toolbar .form-input,.toolbar .form-select{width:auto;min-width:200px}.copy-btn{margin-left:8px;padding:2px 10px;font-size:13px;border:1px solid var(--color-border);border-radius:4px;background:var(--color-surface);cursor:pointer}.copy-btn:hover{background:var(--color-surface-variant)}.kbd{font-family:var(--font-mono);background:#f3f4f6;padding:1px 6px;border-radius:3px;border:1px solid #d1d5db}.hint{font-size:13px;color:var(--color-text-secondary);margin-top:6px;line-height:1.6}.card-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.card-actions .form-select,.card-actions .form-input{width:auto}.card.no-pad{padding:0}.card.no-pad .card-header{padding:16px 20px;margin-bottom:0}.card+.card{margin-top:20px}.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.page-header h1{font-size:24px;font-weight:600}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-bottom:20px}.stat-card{background:var(--color-surface);border-radius:8px;padding:20px;border:1px solid var(--color-border)}.stat-label{font-size:14px;color:var(--color-text-secondary)}.stat-value{font-size:30px;font-weight:700;margin-top:6px}.stat-value.warn{color:var(--color-warning)}.stat-value.danger{color:var(--color-danger)}.stat-value.success{color:var(--color-success)}.table th{font-size:13px}.table.compact th,.table.compact td{padding:9px 12px;font-size:13.5px}.table.compact th{font-size:13px;color:var(--color-text-secondary)}.info-box{padding:14px 16px;border-radius:6px;font-size:14px;line-height:1.7;margin-bottom:16px}.info-box.blue{background:#f0f9ff;border:1px solid #bae6fd}.info-box.green{background:#f0fdf4;border:1px solid #bbf7d0}.info-box.yellow{background:#fffbeb;border:1px solid #fde68a}.info-box.gray{background:#f9fafb;border:1px solid #e5e7eb}.mt-2{margin-top:8px}.mt-3{margin-top:12px}.mt-4{margin-top:16px}.mb-3{margin-bottom:12px}.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.check-card{display:flex;align-items:center;gap:8px;padding:10px 12px;border:1px solid #ddd;border-radius:6px;cursor:pointer;background:#fff;font-size:14px}.check-card.checked{background:#eff6ff;border-color:#bfdbfe}.check-item{display:flex;align-items:center;gap:8px;font-size:14px;cursor:pointer;line-height:1.8}.check-item.required{color:#1c69d4;font-weight:500}input[type=checkbox],input[type=radio]{width:16px;height:16px;accent-color:var(--color-primary);cursor:pointer}.pre-box{background:#f4f4f5;padding:12px;border-radius:4px;font-size:13px;overflow:auto;max-height:400px;font-family:var(--font-mono);white-space:pre-wrap;word-break:break-all;margin:0}.scroll-box{max-height:480px;overflow:auto;border:1px solid #e5e5e5;border-radius:4px}.scroll-box thead{position:sticky;top:0;background:#f5f5f5;z-index:1}code{font-family:var(--font-mono);font-size:13.5px;background:#f3f4f6;padding:1px 5px;border-radius:3px}details summary{cursor:pointer}.card-title small{font-size:13px}@media (max-width: 768px){:root{--font-size-base: 13px;--spacing-lg: 12px;--spacing-md: 8px}.detail-grid,.form-grid,.field-grid{grid-template-columns:1fr}.btn{padding:7px 14px}.card{padding:var(--spacing-md)}}
