:root,[data-theme=light]{--color-primary: #00539b;--color-primary-light: #0077cc;--color-primary-dark: #003d73;--color-primary-bg: #e8f4fd;--color-primary-soft: #d0e8ff;--color-accent: #f0a030;--color-success: #22c55e;--color-error: #ef4444;--color-warning: #f59e0b;--color-info: #3b82f6;--color-bg: #f5f7fa;--color-bg-alt: #edf0f4;--color-surface: #ffffff;--color-surface-hover: #f8f9fb;--color-surface-secondary: #f0f2f5;--color-border: #e1e4e8;--color-border-light: #eef0f2;--color-text-primary: #1a1a2e;--color-text-secondary: #4a5568;--color-text-muted: #9ca3af;--color-text-inverse: #ffffff;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .06);--shadow-md: 0 2px 12px rgba(0, 0, 0, .08);--shadow-lg: 0 4px 24px rgba(0, 0, 0, .12);--shadow-xl: 0 8px 32px rgba(0, 0, 0, .14);--shadow-card: 0 1px 4px rgba(0, 0, 0, .04), 0 4px 16px rgba(0, 0, 0, .06);--shadow-bubble-user: 0 2px 8px rgba(0, 83, 155, .22);--shadow-bubble-assistant: 0 1px 4px rgba(0, 0, 0, .04);--focus-ring: 0 0 0 3px rgba(0, 83, 155, .12);--input-glow: 0 0 0 3px rgba(0, 83, 155, .08), 0 0 20px rgba(0, 83, 155, .06)}[data-theme=dark]{--color-primary: #4da3e0;--color-primary-light: #6db8eb;--color-primary-dark: #2e7fc4;--color-primary-bg: #1a2d40;--color-primary-soft: #1e3448;--color-accent: #f0a030;--color-success: #34d399;--color-error: #f87171;--color-warning: #fbbf24;--color-info: #60a5fa;--color-bg: #14181c;--color-bg-alt: #1a1f24;--color-surface: #1c2127;--color-surface-hover: #22272e;--color-surface-secondary: #252a31;--color-border: #2d333b;--color-border-light: #262b32;--color-text-primary: #e6edf3;--color-text-secondary: #8b949e;--color-text-muted: #636c76;--color-text-inverse: #14181c;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .2);--shadow-md: 0 2px 12px rgba(0, 0, 0, .3);--shadow-lg: 0 4px 24px rgba(0, 0, 0, .4);--shadow-xl: 0 8px 32px rgba(0, 0, 0, .45);--shadow-card: 0 1px 4px rgba(0, 0, 0, .15), 0 4px 16px rgba(0, 0, 0, .2);--shadow-bubble-user: 0 2px 8px rgba(77, 163, 224, .25);--shadow-bubble-assistant: 0 1px 3px rgba(0, 0, 0, .15);--focus-ring: 0 0 0 3px rgba(77, 163, 224, .2);--input-glow: 0 0 0 3px rgba(77, 163, 224, .12), 0 0 20px rgba(77, 163, 224, .08)}:root{--font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 22px;--radius-full: 9999px;--sidebar-width: 280px;--sidebar-collapsed-width: 64px;--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)}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-family);background:var(--color-bg);color:var(--color-text-primary);line-height:1.6;min-height:100vh;overflow:hidden;transition:background var(--transition-normal),color var(--transition-normal)}#app{width:100%;height:100vh;overflow:hidden}a{color:var(--color-primary);text-decoration:none}a:hover{color:var(--color-primary-light)}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#c1c9d2;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#a0aab4}[data-theme=dark] ::-webkit-scrollbar-thumb{background:#3a4048}[data-theme=dark] ::-webkit-scrollbar-thumb:hover{background:#4d545d}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes slideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInLeft{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}@keyframes messageSlideUp{0%{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes float{0%,to{transform:translateY(0) rotate(0)}25%{transform:translateY(-12px) rotate(2deg)}75%{transform:translateY(8px) rotate(-2deg)}}@keyframes floatReverse{0%,to{transform:translateY(0) rotate(0)}25%{transform:translateY(10px) rotate(-2deg)}75%{transform:translateY(-8px) rotate(2deg)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}@keyframes glowPulse{0%,to{box-shadow:0 0 #00539b00}50%{box-shadow:0 0 0 4px #00539b14}}.animate-fade-in{animation:fadeIn .35s ease}.animate-slide-up{animation:slideUp .4s cubic-bezier(.4,0,.2,1)}.animate-scale-in{animation:scaleIn .35s cubic-bezier(.4,0,.2,1)}.animate-pulse{animation:pulse 2s ease-in-out infinite}.text-center{text-align:center}.text-muted{color:var(--color-text-muted)}.text-secondary{color:var(--color-text-secondary)}.text-primary{color:var(--color-primary)}.text-success{color:var(--color-success)}.text-error{color:var(--color-error)}.text-warning{color:var(--color-warning)}.font-bold{font-weight:600}.mt-2{margin-top:8px}.mt-4{margin-top:16px}.mt-6{margin-top:24px}.mb-2{margin-bottom:8px}.mb-4{margin-bottom:16px}.mr-2{margin-right:8px}.ml-2{margin-left:8px}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-2{gap:8px}.gap-4{gap:16px}.flex-1{flex:1}.flex-wrap{flex-wrap:wrap}.w-full{width:100%}.h-full{height:100%}.h-screen{height:100vh}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 18px;font-size:14px;font-weight:500;font-family:var(--font-family);line-height:1.4;border:1px solid transparent;border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition-fast);white-space:nowrap;-webkit-user-select:none;user-select:none}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--color-primary);color:var(--color-text-inverse);border-color:var(--color-primary)}.btn-primary:hover:not(:disabled){background:var(--color-primary-light);border-color:var(--color-primary-light)}.btn-secondary{background:var(--color-surface);color:var(--color-text-primary);border-color:var(--color-border)}.btn-secondary:hover:not(:disabled){background:var(--color-surface-hover);border-color:#c1c9d2}[data-theme=dark] .btn-secondary:hover:not(:disabled){border-color:#4d545d}.btn-ghost{background:transparent;color:var(--color-text-secondary);border-color:transparent}.btn-ghost:hover:not(:disabled){background:var(--color-surface-hover);color:var(--color-text-primary)}.btn-sm{padding:4px 12px;font-size:13px}.btn-lg{padding:12px 28px;font-size:16px;border-radius:var(--radius-md)}.btn-block{width:100%}.input{width:100%;padding:10px 14px;font-size:14px;font-family:var(--font-family);color:var(--color-text-primary);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);outline:none;transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.input::placeholder{color:var(--color-text-muted)}.input:focus{border-color:var(--color-primary);box-shadow:var(--focus-ring)}.input-error{border-color:var(--color-error)}.input-error:focus{box-shadow:0 0 0 3px #ef44441f}.chat-bubble{max-width:75%;padding:12px 18px;border-radius:var(--radius-lg);line-height:1.65;word-wrap:break-word;font-size:14px;transition:background var(--transition-normal),box-shadow var(--transition-normal)}.chat-bubble--user{background:linear-gradient(135deg,#00539b,#0070cc);color:var(--color-text-inverse);border-bottom-right-radius:var(--radius-sm);margin-left:auto;box-shadow:var(--shadow-bubble-user)}.chat-bubble--assistant{background:var(--color-surface);color:var(--color-text-primary);border:1px solid var(--color-border);border-bottom-left-radius:var(--radius-sm);box-shadow:var(--shadow-bubble-assistant)}.chat-bubble--error{background:#fef2f2;border-color:#fca5a5;color:#991b1b}[data-theme=dark] .chat-bubble--error{background:#2d1b1b;border-color:#5c2d2d;color:#f87171}[data-theme=dark] .chat-bubble--user{background:linear-gradient(135deg,#2e7fc4,#4da3e0)}.spinner{display:inline-block;width:18px;height:18px;border:2px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin .6s linear infinite}.spinner--sm{width:14px;height:14px;border-width:1.5px}.spinner--lg{width:28px;height:28px;border-width:3px}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.suggestion-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:16px;cursor:pointer;transition:all var(--transition-fast)}.suggestion-card:hover{border-color:var(--color-primary);box-shadow:var(--shadow-card);transform:translateY(-2px)}button{font-family:inherit}.chat-layout{display:flex;height:100vh;width:100%;overflow:hidden}.chat-main{flex:1;display:flex;flex-direction:column;min-width:0;height:100vh;background:var(--color-bg);position:relative}.view{display:none;flex-direction:column;height:100%}.view.active{display:flex}.sidebar{display:flex;flex-direction:column;width:var(--sidebar-width);height:100vh;background:var(--color-surface);border-right:1px solid var(--color-border);flex-shrink:0}.sidebar-brand{display:flex;align-items:center;gap:12px;padding:16px 20px 14px;border-bottom:1px solid var(--color-border)}.brand-logo{width:36px;height:36px;border-radius:10px;background:linear-gradient(135deg,#00539b,#07c);color:#fff;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:800;flex-shrink:0;box-shadow:0 4px 12px #00539b40}.brand-name{font-size:15px;font-weight:600;color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-new-chat{padding:60px 20px 14px}.new-chat-btn{width:100%;display:flex;align-items:center;justify-content:center;gap:8px;padding:10px;border:none;border-radius:var(--radius-sm);background:linear-gradient(135deg,#00539b,#07c);color:#fff;font-size:14px;font-weight:500;cursor:pointer;transition:all var(--transition-fast)}.new-chat-btn:hover{opacity:.92}.new-chat-btn svg{width:16px;height:16px}.sidebar-secondary{padding:8px 16px 12px;border-bottom:1px solid var(--color-border)}.secondary-nav{display:flex;align-items:center;justify-content:space-between;width:100%;padding:9px 12px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text-secondary);font-size:13px;font-weight:500;cursor:pointer;transition:all var(--transition-fast);gap:8px}.secondary-nav:hover:not(:disabled){border-color:var(--color-primary);color:var(--color-primary);background:var(--color-primary-bg)}.secondary-nav:disabled{opacity:.4;cursor:not-allowed}.secondary-nav.active{border-color:var(--color-primary);background:var(--color-primary-bg);color:var(--color-primary-dark)}.secondary-nav .sn-left{display:flex;align-items:center;gap:8px}.secondary-nav svg{width:15px;height:15px}.secondary-nav .chev{width:14px;height:14px;color:var(--color-text-muted)}.secondary-nav:hover:not(:disabled) .chev{color:var(--color-primary)}.sidebar-section-header{padding:14px 20px 8px}.section-title{font-size:12px;font-weight:600;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.5px}.sidebar-sessions{flex:1;overflow-y:auto;padding:0 10px 10px}.session-item{display:flex;align-items:center;gap:8px;width:100%;padding:10px 12px;border:none;border-radius:var(--radius-sm);background:transparent;cursor:pointer;text-align:left;color:var(--color-text-primary);font-size:13px;transition:all var(--transition-fast);margin-bottom:2px}.session-item:hover{background:var(--color-surface-hover)}.session-item.active{background:var(--color-primary-bg)}.session-item svg{width:14px;height:14px;flex-shrink:0;color:var(--color-text-muted)}.sidebar-footer{display:flex;align-items:center;gap:10px;padding:10px 20px;border-top:1px solid var(--color-border)}.user-avatar{width:32px;height:32px;border-radius:var(--radius-sm);background:linear-gradient(135deg,#00539b,#07c);color:#fff;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:600;flex-shrink:0}.user-info{flex:1;min-width:0}.user-name{font-size:13px;font-weight:600;color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-role{font-size:11px;color:var(--color-text-muted);margin-top:1px}.icon-btn{width:32px;height:32px;border:none;background:transparent;color:var(--color-text-secondary);border-radius:var(--radius-sm);cursor:pointer;display:flex;align-items:center;justify-content:center}.icon-btn:hover{background:#fef2f2;color:var(--color-error)}.icon-btn svg{width:16px;height:16px}.chat-welcome{flex:1;padding:80px 48px 40px;overflow-y:auto;display:flex;flex-direction:column;align-items:center}.welcome-hero{text-align:center;margin-bottom:36px;animation:scaleIn .35s cubic-bezier(.4,0,.2,1)}.welcome-logo{display:flex;justify-content:center;margin-bottom:20px}.welcome-logo .logo-icon{width:56px;height:56px;border-radius:14px;background:linear-gradient(135deg,#00539b,#07c);box-shadow:0 8px 24px #00539b4d;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:800;font-size:20px}.welcome-title{font-size:26px;font-weight:700;color:var(--color-text-primary);margin-bottom:10px;letter-spacing:-.3px}.welcome-subtitle{font-size:15px;color:var(--color-text-muted);line-height:1.6}.welcome-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;width:100%;max-width:800px}.welcome-suggestion{display:flex;flex-direction:column;gap:4px;text-align:left}.welcome-suggestion .sl{font-size:14px;color:var(--color-text-primary)}.welcome-suggestion .sh{font-size:12px;color:var(--color-text-muted)}.chat-input-wrapper{border-top:1px solid var(--color-border);background:var(--color-surface);padding:14px 24px 10px;flex-shrink:0}.chat-input-inner{display:flex;align-items:flex-end;gap:10px;background:var(--color-bg);border:2px solid var(--color-border);border-radius:var(--radius-lg);padding:10px 14px;transition:all var(--transition-fast);max-width:880px;margin:0 auto}.chat-input-inner--focused{border-color:var(--color-primary);box-shadow:var(--input-glow)}.chat-input-textarea{flex:1;border:none;outline:none;background:transparent;font-family:var(--font-family);font-size:15px;line-height:24px;color:var(--color-text-primary);resize:none;min-height:24px;max-height:144px;padding:0}.chat-input-textarea::placeholder{color:var(--color-text-muted)}.chat-upload-btn{width:38px;height:38px;padding:0;border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text-secondary);cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all var(--transition-fast)}.chat-upload-btn:hover:not(:disabled){background:var(--color-primary-bg);border-color:var(--color-primary);color:var(--color-primary)}.chat-upload-btn:disabled{opacity:.4;cursor:not-allowed}.chat-upload-btn svg{width:18px;height:18px}.chat-send-btn{width:38px;height:38px;padding:0;border-radius:var(--radius-md);background:var(--color-primary);color:#fff;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all var(--transition-fast)}.chat-send-btn:not(:disabled):hover{background:var(--color-primary-light)}.chat-send-btn:disabled{opacity:.5;cursor:not-allowed}.chat-send-btn svg{width:18px;height:18px}.chat-input-hint{text-align:center;font-size:11px;color:var(--color-text-muted);margin-top:6px}.upload-tooltip{position:absolute;bottom:calc(100% + 6px);left:0;background:var(--color-text-primary);color:var(--color-text-inverse);padding:5px 10px;border-radius:var(--radius-sm);font-size:11px;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity var(--transition-fast)}.chat-upload-btn:hover .upload-tooltip{opacity:1}.upload-view-head{padding:24px 48px 0;max-width:1100px;margin:0 auto;width:100%}.upload-back{display:flex;align-items:center;gap:8px;margin-bottom:14px}.upload-back .crumb{font-size:13px;color:var(--color-text-muted)}.upload-back .crumb .cur{color:var(--color-text-primary);font-weight:500}.upload-hero-sm{margin-bottom:20px}.upload-hero-sm .ht{font-size:22px;font-weight:700;color:var(--color-text-primary)}.upload-hero-sm .hs{font-size:13px;color:var(--color-text-muted);margin-top:4px}.upload-view-body{padding:0 48px 40px;max-width:1100px;margin:0 auto;width:100%;overflow-y:auto;flex:1}.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:20px}.stat-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:16px 18px;box-shadow:var(--shadow-sm);display:flex;align-items:center;justify-content:space-between}.stat-value{font-size:22px;font-weight:700;color:var(--color-text-primary)}.stat-value .sub{font-size:13px;color:var(--color-text-muted);font-weight:500}.stat-label{font-size:12px;color:var(--color-text-muted);margin-top:3px}.stat-icon{width:38px;height:38px;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;flex-shrink:0}.stat-icon svg{width:18px;height:18px}.section-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);margin-bottom:20px}.section-head{padding:16px 20px;border-bottom:1px solid var(--color-border-light);display:flex;align-items:center;justify-content:space-between}.section-title-lg{font-size:15px;font-weight:600;color:var(--color-text-primary)}.section-body{padding:20px}.uploader{border:2px dashed var(--color-border);border-radius:var(--radius-lg);padding:36px 24px;text-align:center;cursor:pointer;transition:all var(--transition-fast);background:var(--color-surface-hover)}.uploader:hover,.uploader.dragover{border-color:var(--color-primary);background:var(--color-primary-bg)}.uploader-icon{width:48px;height:48px;margin:0 auto 12px;border-radius:14px;background:var(--color-primary-bg);color:var(--color-primary-dark);display:flex;align-items:center;justify-content:center}.uploader-icon svg{width:24px;height:24px}.uploader-title{font-size:15px;font-weight:600;color:var(--color-text-primary);margin-bottom:6px}.uploader-hint{font-size:13px;color:var(--color-text-muted);line-height:1.6}.uploader-formats{margin-top:12px;display:flex;justify-content:center;gap:6px;flex-wrap:wrap}.uploader-formats .badge{font-size:10px}.file-list-wrap{margin-top:18px;border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden}.file-list-head{padding:10px 16px;background:var(--color-surface-secondary);border-bottom:1px solid var(--color-border);display:flex;align-items:center;justify-content:space-between;font-size:13px}.file-list-head .cov{color:var(--color-text-muted)}.file-list-head .cov strong{color:var(--color-text-primary);font-family:monospace}table.file-table{width:100%;border-collapse:collapse;font-size:13px}table.file-table th{background:var(--color-surface-secondary);padding:10px 14px;text-align:left;font-weight:600;color:var(--color-text-primary);border-bottom:1px solid var(--color-border);font-size:12px}table.file-table td{padding:11px 14px;border-bottom:1px solid var(--color-border-light);color:var(--color-text-secondary);vertical-align:middle}table.file-table tr:last-child td{border-bottom:none}table.file-table tr:hover td{background:var(--color-surface-hover)}.f-name{display:flex;align-items:center;gap:8px;color:var(--color-text-primary);font-weight:500}.f-name svg{width:15px;height:15px;color:var(--color-text-muted);flex-shrink:0}.f-table{font-family:monospace;font-size:12px;color:var(--color-primary-dark)}.f-rows,.f-date{font-family:monospace;font-size:12px;color:var(--color-text-secondary)}.f-status .err-text{font-size:11px;color:var(--color-error);display:block;margin-top:2px}.table-legend{display:flex;gap:6px;flex-wrap:wrap;padding:10px 16px;font-size:11px}.table-legend .chip{padding:2px 7px;border-radius:10px;background:var(--color-surface-secondary);color:var(--color-text-secondary)}.table-legend .chip.covered{background:#dcfce7;color:#166534}[data-theme=dark] .table-legend .chip.covered{background:#1a3a2a;color:#34d399}.upload-tabs{display:flex;gap:4px;border-bottom:1px solid var(--color-border);margin-bottom:20px;overflow-x:auto;padding-bottom:0}.upload-tab{display:flex;align-items:center;gap:6px;padding:10px 16px;border:1px solid transparent;border-bottom:none;border-radius:var(--radius-sm) var(--radius-sm) 0 0;background:transparent;color:var(--color-text-secondary);font-size:13px;font-weight:500;cursor:pointer;white-space:nowrap;transition:all var(--transition-fast);position:relative;top:1px}.upload-tab:hover{color:var(--color-primary);background:var(--color-surface-hover)}.upload-tab.active{background:var(--color-surface);border-color:var(--color-border);color:var(--color-primary-dark)}.upload-tab .tdot{width:7px;height:7px;border-radius:50%;background:var(--color-text-muted);flex-shrink:0;opacity:.3}.upload-tab .tdot.validating{background:var(--color-primary);opacity:1;animation:spin 1s linear infinite;border-radius:50%;border:1.5px solid var(--color-primary);border-top-color:transparent;width:10px;height:10px}.upload-tab .tdot.valid{background:var(--color-success);opacity:1}.upload-tab .tdot.invalid{background:var(--color-error);opacity:1}.upload-tab .tdot.expired{background:var(--color-warning);opacity:1}.upload-tab .tdot.writing{background:var(--color-primary);opacity:1;animation:pulse 1.2s infinite}.upload-tab .tdot.done{background:var(--color-success);opacity:1}.tab-meta{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:14px 18px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);margin-bottom:16px}.tab-meta .mt-label{font-size:12px;color:var(--color-text-muted)}.tab-meta .mt-val{font-size:13px;color:var(--color-text-primary);font-family:monospace;font-weight:600}.tab-meta .mt-sep{color:var(--color-border)}.tab-meta .mt-spacer{flex:1}.tab-uploader{border:2px dashed var(--color-border);border-radius:var(--radius-lg);padding:32px 24px;text-align:center;cursor:pointer;transition:all var(--transition-fast);background:var(--color-surface-hover)}.tab-uploader:hover,.tab-uploader.dragover{border-color:var(--color-primary);background:var(--color-primary-bg)}.tab-uploader-icon{width:44px;height:44px;margin:0 auto 10px;border-radius:12px;background:var(--color-primary-bg);color:var(--color-primary-dark);display:flex;align-items:center;justify-content:center}.tab-uploader-icon svg{width:22px;height:22px}.tab-uploader-title{font-size:14px;font-weight:600;color:var(--color-text-primary);margin-bottom:4px}.tab-uploader-hint{font-size:12px;color:var(--color-text-muted);line-height:1.6}.tab-uploader-hint code{background:var(--color-surface-secondary);padding:1px 5px;border-radius:3px;font-size:11px;color:var(--color-text-secondary)}.file-info-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);padding:16px 18px;margin-top:16px}.file-info-card.fic-valid{border-left:3px solid var(--color-success)}.file-info-card.fic-invalid{border-left:3px solid var(--color-error)}.file-info-card.fic-writing{border-left:3px solid var(--color-primary)}.file-info-card.fic-done{border-left:3px solid var(--color-success);background:var(--color-surface-hover)}.fic-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.fic-name{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:600;color:var(--color-text-primary)}.fic-name svg{width:15px;height:15px;color:var(--color-text-muted)}.fic-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px 24px;font-size:13px}.fic-row{display:flex;justify-content:space-between;gap:8px}.fic-row .k{color:var(--color-text-muted)}.fic-row .v{color:var(--color-text-primary);font-family:monospace}.fic-err{margin-top:10px;padding:10px 12px;background:#fef2f2;border-radius:6px;font-size:12px;color:#991b1b;line-height:1.7}[data-theme=dark] .fic-err{background:#2d1b1b;color:#f87171}.fic-err code{background:#ef44441a;padding:1px 4px;border-radius:3px}.fic-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:14px}.result-mini{margin-top:12px;padding:12px;border-radius:var(--radius-sm);background:var(--color-surface-secondary);font-size:12px;color:var(--color-text-secondary);line-height:1.7}.result-mini strong{color:var(--color-text-primary);font-family:monospace}.validate-row{display:flex;align-items:center;gap:20px;flex-wrap:wrap}.validate-row+.validate-row{margin-top:14px}.validate-group{display:flex;align-items:center;gap:10px}.validate-label{font-size:13px;color:var(--color-text-muted)}.validate-value{font-size:13px;color:var(--color-text-primary);font-family:monospace;font-weight:600}.overlap-warn{display:flex;align-items:center;gap:6px;padding:5px 10px;background:#fff7ed;border-radius:6px;font-size:12px;color:#9a3412}[data-theme=dark] .overlap-warn{background:#2d2416;color:#fbbf24}.overlap-warn svg{width:13px;height:13px}.strategy-radio{display:flex;gap:8px}.strategy-opt{display:flex;align-items:center;gap:5px;cursor:pointer;font-size:13px;color:var(--color-text-secondary);padding:6px 12px;border:1px solid var(--color-border);border-radius:var(--radius-sm);transition:all var(--transition-fast);background:var(--color-surface)}.strategy-opt:hover{border-color:var(--color-primary);color:var(--color-primary)}.strategy-opt.checked{border-color:var(--color-primary);background:var(--color-primary-bg);color:var(--color-primary-dark);font-weight:600}.strategy-opt.danger.checked{border-color:var(--color-error);background:#fef2f2;color:var(--color-error)}[data-theme=dark] .strategy-opt.danger.checked{background:#2d1b1b}.date-input{padding:6px 10px;border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:12px;font-family:monospace;background:var(--color-surface);color:var(--color-text-primary)}.validate-actions{display:flex;gap:8px;margin-left:auto;align-items:center}.btn-ai{border:1px dashed var(--color-primary);color:var(--color-primary-dark);background:var(--color-surface)}.btn-ai:hover:not(:disabled){background:var(--color-primary-bg)}.popconfirm{position:relative}.popconfirm-box{position:absolute;top:calc(100% + 8px);right:0;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);padding:14px;width:260px;z-index:50;display:none}.popconfirm-box.show{display:block}.pc-title{font-size:13px;color:var(--color-text-primary);font-weight:600;display:flex;gap:8px;align-items:flex-start}.pc-title svg{width:15px;height:15px;color:var(--color-warning);flex-shrink:0;margin-top:1px}.pc-desc{font-size:12px;color:var(--color-text-muted);margin:8px 0 12px;line-height:1.6}.pc-actions{display:flex;gap:8px;justify-content:flex-end}.result-report{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.result-item{padding:14px;border-radius:var(--radius-md);text-align:center}.result-item.success{background:#dcfce7}.result-item.error{background:#fef2f2}.result-item.warning{background:#fff7ed}.result-item.info{background:var(--color-primary-bg)}[data-theme=dark] .result-item.success{background:#1a3a2a}[data-theme=dark] .result-item.error{background:#2d1b1b}[data-theme=dark] .result-item.warning{background:#2d2416}.result-item .r-val{font-size:20px;font-weight:700;font-family:monospace}.result-item.success .r-val{color:#166534}.result-item.error .r-val{color:#991b1b}.result-item.warning .r-val{color:#9a3412}.result-item.info .r-val{color:var(--color-primary-dark)}[data-theme=dark] .result-item.success .r-val{color:#34d399}[data-theme=dark] .result-item.error .r-val{color:#f87171}[data-theme=dark] .result-item.warning .r-val{color:#fbbf24}.result-item .r-lbl{font-size:11px;color:var(--color-text-muted);margin-top:3px}.btn-danger{background:var(--color-error);color:#fff;border-color:var(--color-error)}.badge{font-size:11px;padding:2px 8px;border-radius:10px;font-weight:500;display:inline-flex;align-items:center;gap:3px}.badge-success{background:#dcfce7;color:#166534}.badge-error{background:#fef2f2;color:#991b1b}.badge-warning{background:#fff7ed;color:#9a3412}.badge-info{background:var(--color-primary-bg);color:var(--color-primary-dark)}.badge-gray{background:var(--color-surface-secondary);color:var(--color-text-muted)}[data-theme=dark] .badge-success{background:#1a3a2a;color:#34d399}[data-theme=dark] .badge-error{background:#2d1b1b;color:#f87171}[data-theme=dark] .badge-warning{background:#2d2416;color:#fbbf24}[data-theme=dark] .badge-gray{background:var(--color-surface-secondary);color:var(--color-text-muted)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;z-index:200;display:none;align-items:center;justify-content:center}.modal-overlay.show{display:flex}.modal{background:var(--color-surface);border-radius:var(--radius-lg);width:820px;max-width:92vw;max-height:85vh;display:flex;flex-direction:column;box-shadow:var(--shadow-lg)}.modal-head{padding:16px 20px;border-bottom:1px solid var(--color-border);display:flex;align-items:center;justify-content:space-between}.modal-title{font-size:15px;font-weight:600;color:var(--color-text-primary)}.modal-close{width:28px;height:28px;border:none;background:var(--color-surface-hover);color:var(--color-text-muted);border-radius:var(--radius-sm);cursor:pointer;display:flex;align-items:center;justify-content:center}.modal-close svg{width:14px;height:14px}.modal-body{flex:1;overflow-y:auto;padding:18px 20px}.modal-footer{padding:12px 20px;border-top:1px solid var(--color-border);display:flex;justify-content:flex-end;gap:8px}table.data-table{width:100%;border-collapse:collapse;font-size:13px}table.data-table th{background:var(--color-surface-secondary);padding:10px 12px;text-align:left;font-weight:600;color:var(--color-text-primary);border-bottom:1px solid var(--color-border)}table.data-table td{padding:10px 12px;border-bottom:1px solid var(--color-border-light);color:var(--color-text-secondary)}table.data-table tr:hover td{background:var(--color-surface-hover)}.toast{position:fixed;top:24px;right:24px;padding:10px 18px;border-radius:var(--radius-sm);font-size:13px;color:#fff;z-index:999;animation:messageSlideUp .3s ease;box-shadow:var(--shadow-card)}.toast.success{background:var(--color-success)}.toast.error{background:var(--color-error)}.toast.info{background:var(--color-primary)}.toast.warning{background:var(--color-warning)}.demo-role{position:fixed;top:14px;right:20px;display:flex;align-items:center;gap:6px;background:var(--color-surface);border:1px dashed var(--color-border);border-radius:9999px;padding:3px 6px 3px 10px;box-shadow:var(--shadow-sm);z-index:50;font-size:11px;color:var(--color-text-muted)}.demo-role .lbl{color:var(--color-text-muted)}.demo-role .pill{padding:3px 10px;border:none;border-radius:9999px;background:transparent;color:var(--color-text-secondary);font-size:11px;cursor:pointer;transition:all var(--transition-fast)}.demo-role .pill:hover{background:var(--color-surface-hover)}.demo-role .pill.active{background:var(--color-primary);color:#fff;font-weight:600}
