:root{--color-primary-50: #eef2ff;--color-primary-100: #e0e7ff;--color-primary-200: #c7d2fe;--color-primary-300: #a5b4fc;--color-primary-400: #818cf8;--color-primary-500: #6366f1;--color-primary-600: #4f46e5;--color-primary-700: #4338ca;--color-primary-800: #3730a3;--color-primary-900: #312e81;--color-primary-950: #1e1b4b;--color-accent-violet: #8b5cf6;--color-accent-rose: #f43f5e;--color-accent-amber: #f59e0b;--color-accent-emerald: #10b981;--color-accent-cyan: #06b6d4;--color-success-50: #f0fdf4;--color-success-500: #22c55e;--color-success-700: #15803d;--color-warning-50: #fffbeb;--color-warning-500: #f59e0b;--color-warning-700: #b45309;--color-error-50: #fef2f2;--color-error-500: #ef4444;--color-error-700: #b91c1c;--color-info-50: #eff6ff;--color-info-500: #3b82f6;--color-info-700: #1d4ed8;--color-neutral-0: #ffffff;--color-neutral-50: #fafafa;--color-neutral-100: #f5f5f5;--color-neutral-200: #e5e5e5;--color-neutral-300: #d4d4d4;--color-neutral-400: #a3a3a3;--color-neutral-500: #737373;--color-neutral-600: #525252;--color-neutral-700: #404040;--color-neutral-800: #262626;--color-neutral-900: #171717;--color-neutral-950: #0a0a0a;--surface-app: var(--color-neutral-50);--surface-layer: var(--color-neutral-0);--surface-elevated: var(--color-neutral-0);--surface-overlay: var(--color-neutral-0);--text-primary: var(--color-neutral-900);--text-secondary: var(--color-neutral-600);--text-tertiary: var(--color-neutral-400);--text-inverse: var(--color-neutral-0);--text-link: var(--color-primary-600);--border-light: var(--color-neutral-200);--border-default: var(--color-neutral-300);--border-strong: var(--color-neutral-400);--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", system-ui, sans-serif;--font-mono: "JetBrains Mono", "Fira Code", "Cascadia Code", "Consolas", monospace;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-lg: 1.125rem;--text-xl: 1.25rem;--text-2xl: 1.5rem;--text-3xl: 1.875rem;--text-4xl: 2.25rem;--text-5xl: 3rem;--leading-xs: 1rem;--leading-sm: 1.25rem;--leading-base: 1.5rem;--leading-lg: 1.75rem;--leading-xl: 1.75rem;--leading-2xl: 2rem;--font-normal: 400;--font-medium: 500;--font-semibold: 600;--font-bold: 700;--sp-0: 0;--sp-px: 1px;--sp-0-5: .125rem;--sp-1: .25rem;--sp-1-5: .375rem;--sp-2: .5rem;--sp-2-5: .625rem;--sp-3: .75rem;--sp-3-5: .875rem;--sp-4: 1rem;--sp-5: 1.25rem;--sp-6: 1.5rem;--sp-7: 1.75rem;--sp-8: 2rem;--sp-9: 2.25rem;--sp-10: 2.5rem;--sp-11: 2.75rem;--sp-12: 3rem;--sp-14: 3.5rem;--sp-16: 4rem;--sp-20: 5rem;--sp-24: 6rem;--radius-none: 0;--radius-sm: 6px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-2xl: 24px;--radius-full: 9999px;--shadow-xs: 0 1px 2px 0 rgb(0 0 0 / .05);--shadow-sm: 0 1px 3px 0 rgb(0 0 0 / .06), 0 1px 2px -1px rgb(0 0 0 / .06);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / .07), 0 2px 4px -2px rgb(0 0 0 / .05);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .08), 0 4px 6px -4px rgb(0 0 0 / .04);--shadow-xl: 0 20px 25px -5px rgb(0 0 0 / .08), 0 8px 10px -6px rgb(0 0 0 / .04);--shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / .15);--transition-fast: .15s cubic-bezier(.4, 0, .2, 1);--transition-base: .2s cubic-bezier(.4, 0, .2, 1);--transition-slow: .3s cubic-bezier(.4, 0, .2, 1);--transition-spring: .4s cubic-bezier(.34, 1.56, .64, 1);--z-dropdown: 100;--z-sticky: 200;--z-overlay: 300;--z-modal: 400;--z-toast: 500;--focus-ring: 0 0 0 3px rgb(99 102 241 / .3);--sidebar-width: 280px}[data-theme=dark]{--color-primary-50: #1e1b4b;--color-primary-100: #312e81;--color-primary-200: #3730a3;--color-primary-300: #6366f1;--color-primary-400: #818cf8;--color-primary-500: #818cf8;--color-primary-600: #a5b4fc;--color-primary-700: #c7d2fe;--color-primary-800: #e0e7ff;--color-primary-900: #eef2ff;--color-primary-950: #f5f7ff;--color-neutral-0: #0a0a0a;--color-neutral-50: #171717;--color-neutral-100: #262626;--color-neutral-200: #404040;--color-neutral-300: #525252;--color-neutral-400: #737373;--color-neutral-500: #a3a3a3;--color-neutral-600: #d4d4d4;--color-neutral-700: #e5e5e5;--color-neutral-800: #f5f5f5;--color-neutral-900: #fafafa;--color-neutral-950: #ffffff;--surface-app: var(--color-neutral-50);--surface-layer: var(--color-neutral-100);--surface-elevated: var(--color-neutral-200);--surface-overlay: var(--color-neutral-100);--text-primary: var(--color-neutral-900);--text-secondary: var(--color-neutral-500);--text-tertiary: var(--color-neutral-400);--text-link: var(--color-primary-400);--border-light: var(--color-neutral-200);--border-default: var(--color-neutral-300);--border-strong: var(--color-neutral-400);--shadow-xs: 0 1px 2px 0 rgb(0 0 0 / .3);--shadow-sm: 0 1px 3px 0 rgb(0 0 0 / .4);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / .4);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .5);--shadow-xl: 0 20px 25px -5px rgb(0 0 0 / .5);--shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / .6);--focus-ring: 0 0 0 3px rgb(129 140 248 / .4)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--leading-base);color:var(--text-primary);background:var(--surface-app);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100vh;overflow-x:hidden}#root{min-height:100vh}img,svg{display:block;max-width:100%}a{color:var(--text-link);text-decoration:none}a:hover{text-decoration:underline}button{font-family:inherit;cursor:pointer;border:none;background:none}input,textarea,select{font-family:inherit}:focus-visible{outline:none;box-shadow:var(--focus-ring);border-radius:var(--radius-sm)}::selection{background:var(--color-primary-200);color:var(--color-primary-900)}[data-theme=dark] ::selection{background:var(--color-primary-700);color:var(--color-primary-50)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}.h1,h1{font-size:var(--text-2xl);font-weight:var(--font-bold);line-height:1.2;letter-spacing:-.02em}.h2,h2{font-size:var(--text-xl);font-weight:var(--font-semibold);line-height:1.3}.h3,h3{font-size:var(--text-lg);font-weight:var(--font-semibold);line-height:1.4}.h4,h4{font-size:var(--text-base);font-weight:var(--font-semibold)}.h5,h5{font-size:var(--text-sm);font-weight:var(--font-semibold)}.h6,h6{font-size:var(--text-xs);font-weight:var(--font-semibold);text-transform:uppercase;letter-spacing:.05em}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@keyframes spin{to{transform:rotate(360deg)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes slideInRight{0%{opacity:0;transform:translate(100%) scale(.95)}to{opacity:1;transform:translate(0) scale(1)}}@keyframes slideInLeft{0%{opacity:0;transform:translate(-100%)}to{opacity:1;transform:translate(0)}}@keyframes slideOutRight{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(100%)}}@keyframes dotPulse{0%,80%,to{transform:scale(.6);opacity:.4}40%{transform:scale(1);opacity:1}}@keyframes pulse{0%,to{transform:scale(.95);opacity:.6}50%{transform:scale(1.05);opacity:1}}@keyframes skeleton{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes blink{0%,50%{opacity:1}51%,to{opacity:0}}@keyframes msgSlideIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes popoverIn{0%{opacity:0;transform:translateY(-4px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes stepPulse{0%,to{box-shadow:0 0 #6366f166}50%{box-shadow:0 0 0 6px #6366f100}}@keyframes progressStripes{0%{background-position:16px 0}to{background-position:0 0}}.fade-in{animation:fadeIn .2s ease}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);font-family:var(--font-sans);font-weight:var(--font-medium);font-size:var(--text-sm);line-height:1;border:1px solid transparent;border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);-webkit-user-select:none;user-select:none;white-space:nowrap;text-decoration:none;position:relative;overflow:hidden}.btn:active{transform:scale(.97)}.btn:disabled,.btn[aria-disabled=true]{opacity:.5;cursor:not-allowed;pointer-events:none}.btn--sm{padding:var(--sp-1-5) var(--sp-3);font-size:var(--text-xs);border-radius:var(--radius-sm);gap:var(--sp-1)}.btn--md{padding:var(--sp-2) var(--sp-4);font-size:var(--text-sm)}.btn--lg{padding:var(--sp-3) var(--sp-6);font-size:var(--text-base);border-radius:var(--radius-lg)}.btn--xl{padding:var(--sp-4) var(--sp-8);font-size:var(--text-lg);border-radius:var(--radius-xl)}.btn--primary{background:linear-gradient(135deg,var(--color-primary-500),var(--color-primary-600));color:#fff;border-color:var(--color-primary-600);box-shadow:0 2px 8px #6366f14d}.btn--primary:hover:not(:disabled){background:linear-gradient(135deg,var(--color-primary-600),var(--color-primary-700));box-shadow:0 4px 12px #6366f166;transform:translateY(-1px)}.btn--secondary{background:var(--surface-layer);color:var(--text-primary);border-color:var(--border-default)}.btn--secondary:hover:not(:disabled){background:var(--color-neutral-100);border-color:var(--border-strong)}[data-theme=dark] .btn--secondary:hover:not(:disabled){background:var(--color-neutral-200)}.btn--ghost{background:transparent;color:var(--text-primary);border-color:transparent}.btn--ghost:hover:not(:disabled){background:var(--color-neutral-100)}[data-theme=dark] .btn--ghost:hover:not(:disabled){background:var(--color-neutral-200)}.btn--danger{background:var(--color-error-500);color:#fff;border-color:var(--color-error-500)}.btn--danger:hover:not(:disabled){background:var(--color-error-700);border-color:var(--color-error-700)}.btn--success{background:var(--color-success-500);color:#fff;border-color:var(--color-success-500)}.btn--success:hover:not(:disabled){background:var(--color-success-700);border-color:var(--color-success-700)}.btn--outline{background:transparent;color:var(--color-primary-600);border-color:var(--color-primary-300)}.btn--outline:hover:not(:disabled){background:var(--color-primary-50);border-color:var(--color-primary-500)}.btn--link{background:transparent;color:var(--text-link);padding:0;border:none;border-radius:0;font-weight:var(--font-normal)}.btn--link:hover:not(:disabled){text-decoration:underline}.btn--icon{padding:var(--sp-2)!important;border-radius:var(--radius-full)}.btn--icon.btn--sm{padding:var(--sp-1-5)!important}.btn--icon.btn--lg{padding:var(--sp-3)!important}.btn--loading{position:relative;color:transparent!important}.btn--loading:after{content:"";position:absolute;width:1em;height:1em;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:spin .6s linear infinite}.form-group{display:flex;flex-direction:column;gap:var(--sp-1-5)}.form-label{font-size:var(--text-sm);font-weight:var(--font-medium);color:var(--text-primary)}.form-hint{font-size:var(--text-xs);color:var(--text-tertiary)}.input{display:block;width:100%;padding:var(--sp-2) var(--sp-3);font-family:var(--font-sans);font-size:var(--text-sm);line-height:1.5;color:var(--text-primary);background:var(--surface-layer);border:1px solid var(--border-default);border-radius:var(--radius-md);transition:all var(--transition-fast);outline:none}.input::placeholder{color:var(--text-tertiary)}.input:hover:not(:disabled){border-color:var(--border-strong)}.input:focus{border-color:var(--color-primary-500);box-shadow:var(--focus-ring)}.input:disabled{opacity:.5;cursor:not-allowed;background:var(--color-neutral-100)}.input--error{border-color:var(--color-error-500)}.input--error:focus{box-shadow:0 0 0 3px #ef444433}.input--sm{padding:var(--sp-1) var(--sp-2);font-size:var(--text-xs)}.input--lg{padding:var(--sp-3) var(--sp-4);font-size:var(--text-base)}.textarea{display:block;width:100%;min-height:80px;padding:var(--sp-2) var(--sp-3);font-family:var(--font-sans);font-size:var(--text-sm);line-height:1.6;color:var(--text-primary);background:var(--surface-layer);border:1px solid var(--border-default);border-radius:var(--radius-md);transition:all var(--transition-fast);outline:none;resize:vertical}.textarea:focus{border-color:var(--color-primary-500);box-shadow:var(--focus-ring)}.textarea::placeholder{color:var(--text-tertiary)}.select-wrapper{position:relative;display:inline-block;width:100%}.select{display:block;width:100%;padding:var(--sp-2) var(--sp-8) var(--sp-2) var(--sp-3);font-family:var(--font-sans);font-size:var(--text-sm);color:var(--text-primary);background:var(--surface-layer);border:1px solid var(--border-default);border-radius:var(--radius-md);transition:all var(--transition-fast);outline:none;cursor:pointer;appearance:none;-webkit-appearance:none}.select:focus{border-color:var(--color-primary-500);box-shadow:var(--focus-ring)}.select-arrow{position:absolute;right:var(--sp-3);top:50%;transform:translateY(-50%);pointer-events:none;color:var(--text-tertiary);transition:transform var(--transition-fast);font-size:12px}.select:focus+.select-arrow{transform:translateY(-50%) rotate(180deg)}.form-error{font-size:var(--text-xs);color:var(--color-error-500)}.form-feedback{font-size:var(--text-xs);margin-top:var(--sp-1)}.form-feedback--error{color:var(--color-error-500)}.form-feedback--success{color:var(--color-success-500)}.checkbox{display:inline-flex;align-items:center;gap:var(--sp-2);cursor:pointer;-webkit-user-select:none;user-select:none;font-size:var(--text-sm);color:var(--text-primary)}.checkbox input{position:absolute;opacity:0;width:0;height:0}.checkbox-box{width:18px;height:18px;border:2px solid var(--border-default);border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;transition:all var(--transition-fast);flex-shrink:0;background:var(--surface-layer)}.checkbox:hover .checkbox-box{border-color:var(--color-primary-400)}.checkbox input:checked+.checkbox-box{background:var(--color-primary-600);border-color:var(--color-primary-600)}.checkbox input:checked+.checkbox-box:after{content:"";width:5px;height:9px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg) translateY(-1px)}.checkbox input:focus-visible+.checkbox-box{box-shadow:var(--focus-ring)}.radio{display:inline-flex;align-items:center;gap:var(--sp-2);cursor:pointer;-webkit-user-select:none;user-select:none;font-size:var(--text-sm);color:var(--text-primary)}.radio input{position:absolute;opacity:0;width:0;height:0}.radio-circle{width:18px;height:18px;border:2px solid var(--border-default);border-radius:50%;display:flex;align-items:center;justify-content:center;transition:all var(--transition-fast);flex-shrink:0;background:var(--surface-layer)}.radio:hover .radio-circle{border-color:var(--color-primary-400)}.radio input:checked+.radio-circle{border-color:var(--color-primary-600)}.radio input:checked+.radio-circle:after{content:"";width:10px;height:10px;background:var(--color-primary-600);border-radius:50%}.radio input:focus-visible+.radio-circle{box-shadow:var(--focus-ring)}.switch{position:relative;display:inline-flex;align-items:center;gap:var(--sp-3);cursor:pointer;-webkit-user-select:none;user-select:none}.switch input{position:absolute;opacity:0;width:0;height:0}.switch-track{position:relative;width:44px;height:24px;background:var(--color-neutral-300);border-radius:var(--radius-full);transition:background var(--transition-base);flex-shrink:0}.switch input:checked+.switch-track{background:var(--color-primary-600)}.switch-thumb{position:absolute;top:2px;left:2px;width:20px;height:20px;background:#fff;border-radius:50%;transition:transform var(--transition-spring);box-shadow:var(--shadow-sm)}.switch input:checked+.switch-track .switch-thumb{transform:translate(20px)}.switch input:focus-visible+.switch-track{box-shadow:var(--focus-ring)}.switch-label{font-size:var(--text-sm);color:var(--text-primary)}.switch--sm .switch-track{width:36px;height:20px}.switch--sm .switch-thumb{width:16px;height:16px}.switch--sm input:checked+.switch-track .switch-thumb{transform:translate(16px)}.card{background:var(--surface-layer);border:1px solid var(--border-light);border-radius:var(--radius-xl);overflow:hidden;transition:all var(--transition-base)}.card--hover:hover{box-shadow:var(--shadow-lg);transform:translateY(-2px);border-color:var(--border-default)}.card--bordered{border-color:var(--border-default)}.card-header{padding:var(--sp-5) var(--sp-6);border-bottom:1px solid var(--border-light);display:flex;align-items:center;justify-content:space-between}.card-body{padding:var(--sp-6)}.card-footer{padding:var(--sp-4) var(--sp-6);border-top:1px solid var(--border-light);background:var(--color-neutral-50)}[data-theme=dark] .card-footer{background:var(--color-neutral-50)}.tag{display:inline-flex;align-items:center;gap:var(--sp-1);padding:var(--sp-0-5) var(--sp-2-5);font-size:var(--text-xs);font-weight:var(--font-medium);border-radius:var(--radius-full);line-height:1.4;white-space:nowrap;border:1px solid transparent}.tag--default{background:var(--color-neutral-100);color:var(--text-secondary);border-color:var(--border-light)}.tag--primary{background:var(--color-primary-50);color:var(--color-primary-700)}.tag--success{background:var(--color-success-50);color:var(--color-success-700)}.tag--warning{background:var(--color-warning-50);color:var(--color-warning-700)}.tag--danger{background:var(--color-error-50);color:var(--color-error-700)}.tag--info{background:var(--color-info-50);color:var(--color-info-700)}.tag--sm{padding:0 var(--sp-1-5);font-size:.6875rem}.tag--lg{padding:var(--sp-1) var(--sp-3);font-size:var(--text-sm)}.badge{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 var(--sp-1-5);font-size:.6875rem;font-weight:var(--font-semibold);line-height:1;border-radius:var(--radius-full);background:var(--color-error-500);color:#fff}.badge--primary{background:var(--color-primary-600)}.badge--success{background:var(--color-success-500)}.badge--warning{background:var(--color-warning-500)}.badge--dot{min-width:10px;width:10px;height:10px;padding:0}.badge--outline{background:transparent;border:1.5px solid var(--color-error-500);color:var(--color-error-500)}.avatar{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;background:var(--color-primary-100);color:var(--color-primary-700);font-weight:var(--font-semibold);font-size:var(--text-sm);overflow:hidden;flex-shrink:0;-webkit-user-select:none;user-select:none}.avatar img{width:100%;height:100%;object-fit:cover}.avatar--sm{width:32px;height:32px;font-size:var(--text-xs)}.avatar--lg{width:56px;height:56px;font-size:var(--text-lg)}.avatar--xl{width:80px;height:80px;font-size:var(--text-2xl)}.avatar--square{border-radius:var(--radius-md)}.menu{display:flex;flex-direction:column;padding:var(--sp-2);background:var(--surface-layer);border:1px solid var(--border-light);border-radius:var(--radius-lg);min-width:200px;box-shadow:var(--shadow-lg)}.menu-item{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-2) var(--sp-3);font-size:var(--text-sm);color:var(--text-primary);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);-webkit-user-select:none;user-select:none;text-decoration:none;width:100%;text-align:left;font-family:var(--font-sans)}.menu-item:hover{background:var(--color-neutral-100)}[data-theme=dark] .menu-item:hover{background:var(--color-neutral-200)}.menu-item--active{background:var(--color-primary-50);color:var(--color-primary-600);font-weight:var(--font-medium)}.menu-item--danger{color:var(--color-error-500)}.menu-item--danger:hover{background:var(--color-error-50)}.menu-separator{height:1px;background:var(--border-light);margin:var(--sp-1) var(--sp-3)}.menu-label{padding:var(--sp-2) var(--sp-3);font-size:var(--text-xs);color:var(--text-tertiary);font-weight:var(--font-semibold);text-transform:uppercase;letter-spacing:.05em}.tabs{display:flex;border-bottom:2px solid var(--border-light);gap:0}.tab{padding:var(--sp-3) var(--sp-5);font-size:var(--text-sm);font-weight:var(--font-medium);color:var(--text-secondary);background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-2px;cursor:pointer;transition:all var(--transition-fast);font-family:var(--font-sans);white-space:nowrap}.tab:hover{color:var(--text-primary)}.tab--active{color:var(--color-primary-600);border-bottom-color:var(--color-primary-600)}.tab--disabled{opacity:.4;cursor:not-allowed}.tabs--pill{border-bottom:none;gap:var(--sp-1);background:var(--color-neutral-100);padding:var(--sp-1);border-radius:var(--radius-lg)}.tabs--pill .tab{margin-bottom:0;border-bottom:none;border-radius:var(--radius-md)}.tabs--pill .tab--active{background:var(--surface-layer);color:var(--text-primary);box-shadow:var(--shadow-sm)}.table-container{overflow-x:auto;border:1px solid var(--border-light);border-radius:var(--radius-lg)}.table{width:100%;border-collapse:collapse;font-size:var(--text-sm);background:var(--surface-layer)}.table th{padding:var(--sp-3) var(--sp-4);text-align:left;font-weight:var(--font-semibold);color:var(--text-secondary);background:var(--color-neutral-50);border-bottom:1px solid var(--border-light);white-space:nowrap;-webkit-user-select:none;user-select:none}.table td{padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--border-light);color:var(--text-primary)}.table tbody tr{transition:background var(--transition-fast)}.table tbody tr:hover{background:var(--color-neutral-50)}[data-theme=dark] .table tbody tr:hover{background:#ffffff08}.table tbody tr:last-child td{border-bottom:none}.table--striped tbody tr:nth-child(2n){background:var(--color-neutral-50)}.table--compact th,.table--compact td{padding:var(--sp-2) var(--sp-3)}.divider{border:none;border-top:1px solid var(--border-light);margin:var(--sp-6) 0}.divider--dashed{border-style:dashed}.divider--thick{border-width:2px}.collapse{border:1px solid var(--border-light);border-radius:var(--radius-lg);overflow:hidden;background:var(--surface-layer)}.collapse+.collapse{margin-top:var(--sp-2)}.collapse-header{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-3) var(--sp-4);cursor:pointer;-webkit-user-select:none;user-select:none;font-weight:var(--font-medium);font-size:var(--text-sm);transition:background var(--transition-fast);width:100%;text-align:left;color:var(--text-primary);font-family:var(--font-sans)}.collapse-header:hover{background:var(--color-neutral-50)}[data-theme=dark] .collapse-header:hover{background:#ffffff08}.collapse-arrow{transition:transform var(--transition-base);color:var(--text-tertiary);flex-shrink:0;font-size:10px}.collapse--open .collapse-arrow{transform:rotate(90deg)}.collapse-body{max-height:0;overflow:hidden;transition:max-height var(--transition-slow),padding var(--transition-slow)}.collapse--open .collapse-body{max-height:2000px}.collapse-content{padding:0 var(--sp-4) var(--sp-4);color:var(--text-secondary);font-size:var(--text-sm);line-height:var(--leading-base)}.spinner{display:inline-block;width:24px;height:24px;border:2.5px solid var(--color-neutral-200);border-top-color:var(--color-primary-600);border-radius:50%;animation:spin .7s linear infinite}.spinner--sm{width:16px;height:16px;border-width:2px}.spinner--lg{width:40px;height:40px;border-width:3px}.dots{display:flex;gap:var(--sp-1);align-items:center}.dots span{width:8px;height:8px;background:var(--color-primary-400);border-radius:50%;animation:dotPulse 1.4s ease-in-out infinite both}.dots span:nth-child(2){animation-delay:.16s}.dots span:nth-child(3){animation-delay:.32s}.skeleton{background:linear-gradient(90deg,var(--color-neutral-100) 25%,var(--color-neutral-200) 50%,var(--color-neutral-100) 75%);background-size:200% 100%;animation:skeleton 1.5s ease-in-out infinite;border-radius:var(--radius-md)}.skeleton--text{height:1em;margin-bottom:.5em}.skeleton--title{height:1.5em;width:60%;margin-bottom:.75em}.skeleton--avatar{width:40px;height:40px;border-radius:50%}.skeleton--button{height:38px;width:100px}.skeleton.short,.skeleton--short{width:50%}.empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--sp-12) var(--sp-6);text-align:center}.empty-icon{font-size:3rem;margin-bottom:var(--sp-4);opacity:.4}.empty-title{font-size:var(--text-lg);font-weight:var(--font-semibold);color:var(--text-primary);margin-bottom:var(--sp-2)}.empty-desc{font-size:var(--text-sm);color:var(--text-tertiary);max-width:360px}.empty--compact{padding:var(--sp-8) var(--sp-4)}.empty--compact .empty-icon{font-size:2rem}.toast-container{position:fixed;top:var(--sp-6);right:var(--sp-6);z-index:var(--z-toast);display:flex;flex-direction:column;gap:var(--sp-3);pointer-events:none}.toast{display:flex;align-items:flex-start;gap:var(--sp-3);padding:var(--sp-4) var(--sp-5);background:var(--surface-layer);border:1px solid var(--border-light);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);min-width:320px;max-width:420px;pointer-events:auto;animation:slideInRight .3s cubic-bezier(.34,1.56,.64,1)}.toast--removing{animation:slideOutRight .2s ease forwards}.toast--success{border-left:3px solid var(--color-success-500)}.toast--error{border-left:3px solid var(--color-error-500)}.toast--warning{border-left:3px solid var(--color-warning-500)}.toast--info{border-left:3px solid var(--color-info-500)}.toast-icon{flex-shrink:0;width:20px;height:20px;display:flex;align-items:center;justify-content:center;font-size:14px}.toast--success .toast-icon{color:var(--color-success-500)}.toast--error .toast-icon{color:var(--color-error-500)}.toast--warning .toast-icon{color:var(--color-warning-500)}.toast--info .toast-icon{color:var(--color-info-500)}.toast-body{flex:1;min-width:0}.toast-title{font-size:var(--text-sm);font-weight:var(--font-semibold);color:var(--text-primary)}.toast-message{font-size:var(--text-xs);color:var(--text-secondary);margin-top:var(--sp-0-5)}.progress{width:100%;height:8px;background:var(--color-neutral-100);border-radius:var(--radius-full);overflow:hidden}.progress-bar{height:100%;background:var(--color-primary-600);border-radius:var(--radius-full);transition:width var(--transition-slow);position:relative}.progress--sm{height:4px}.progress--lg{height:16px}.progress--success .progress-bar{background:var(--color-success-500)}.progress--warning .progress-bar{background:var(--color-warning-500)}.progress--danger .progress-bar{background:var(--color-error-500)}.tooltip{position:relative;display:inline-flex}.tooltip:after{content:attr(data-tooltip);position:absolute;white-space:nowrap;padding:6px 12px;border-radius:var(--radius-sm);background:var(--color-neutral-900);color:var(--color-neutral-0);font-size:12px;font-weight:var(--font-medium);pointer-events:none;opacity:0;transform:translateY(4px);transition:opacity .15s,transform .15s;z-index:var(--z-toast);bottom:calc(100% + 8px);left:50%;transform:translate(-50%) translateY(4px)}.tooltip:hover:after{opacity:1;transform:translate(-50%) translateY(0)}.popover-panel{position:absolute;top:calc(100% + 8px);left:0;z-index:var(--z-dropdown);background:var(--surface-elevated);border:1px solid var(--border-light);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);padding:var(--sp-3);min-width:240px;animation:popoverIn .15s ease-out}.theme-toggle{width:40px;height:40px;border-radius:var(--radius-md);border:1px solid var(--border-light);background:var(--surface-elevated);color:var(--text-primary);font-size:18px;display:flex;align-items:center;justify-content:center;transition:background var(--transition-fast),transform var(--transition-fast);flex-shrink:0}.theme-toggle:hover{background:var(--color-neutral-100);transform:scale(1.05)}[data-theme=dark] .theme-toggle:hover{background:var(--color-neutral-200)}.theme-toggle:focus-visible{outline:none;box-shadow:var(--focus-ring)}.d-flex{display:flex}.d-none{display:none}.d-block{display:block}.d-inline-flex{display:inline-flex}.flex-column{flex-direction:column}.flex-wrap{flex-wrap:wrap}.flex-grow-1{flex-grow:1}.flex-shrink-0{flex-shrink:0}.align-items-center{align-items:center}.align-items-start{align-items:flex-start}.align-items-end{align-items:flex-end}.justify-content-center{justify-content:center}.justify-content-between{justify-content:space-between}.justify-content-end{justify-content:flex-end}.justify-content-start{justify-content:flex-start}.gap-1{gap:var(--sp-1)}.gap-2{gap:var(--sp-2)}.gap-3{gap:var(--sp-3)}.gap-4{gap:var(--sp-4)}.p-0{padding:0}.p-2{padding:var(--sp-2)}.p-3{padding:var(--sp-3)}.p-4{padding:var(--sp-4)}.px-3{padding-left:var(--sp-3);padding-right:var(--sp-3)}.px-4{padding-left:var(--sp-4);padding-right:var(--sp-4)}.py-2{padding-top:var(--sp-2);padding-bottom:var(--sp-2)}.py-3{padding-top:var(--sp-3);padding-bottom:var(--sp-3)}.py-4{padding-top:var(--sp-4);padding-bottom:var(--sp-4)}.pt-3{padding-top:var(--sp-3)}.pb-0{padding-bottom:0}.m-0{margin:0}.mb-0{margin-bottom:0}.mb-1{margin-bottom:var(--sp-1)}.mb-2{margin-bottom:var(--sp-2)}.mb-3{margin-bottom:var(--sp-3)}.mb-4{margin-bottom:var(--sp-4)}.mt-1{margin-top:var(--sp-1)}.mt-2{margin-top:var(--sp-2)}.mt-3{margin-top:var(--sp-3)}.mt-4{margin-top:var(--sp-4)}.mt-auto{margin-top:auto}.ms-auto{margin-left:auto}.ms-2{margin-left:var(--sp-2)}.ms-4{margin-left:var(--sp-4)}.me-2{margin-right:var(--sp-2)}.me-auto{margin-right:auto}.mx-auto{margin-left:auto;margin-right:auto}.w-100,.w-full{width:100%}.h-100,.h-full{height:100%}.min-vh-100{min-height:100vh;min-height:100dvh}.min-height-0{min-height:0}.overflow-hidden{overflow:hidden}.overflow-auto{overflow:auto}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.border-top{border-top:1px solid var(--border-light)}.border-bottom{border-bottom:1px solid var(--border-light)}.position-relative{position:relative}.position-fixed{position:fixed}.position-sticky{position:sticky}.top-0{top:0}.text-start{text-align:left}.text-center{text-align:center}.text-end{text-align:right}.text-muted{color:var(--text-secondary)}.text-tertiary{color:var(--text-tertiary)}.text-break{word-break:break-word}.text-primary-color{color:var(--color-primary-600)}.small{font-size:var(--text-sm)}.fw-medium{font-weight:var(--font-medium)}.fw-semibold{font-weight:var(--font-semibold)}.fw-bold{font-weight:var(--font-bold)}.cursor-pointer{cursor:pointer}.pointer-events-none{pointer-events:none}.stack{display:flex;flex-direction:column}.stack--1{gap:var(--sp-1)}.stack--2{gap:var(--sp-2)}.stack--3{gap:var(--sp-3)}.stack--4{gap:var(--sp-4)}.stack--6{gap:var(--sp-6)}.inline{display:flex;align-items:center;flex-wrap:wrap}.inline--2{gap:var(--sp-2)}.inline--3{gap:var(--sp-3)}.inline--4{gap:var(--sp-4)}.grid{display:grid;gap:var(--sp-6)}.grid--2{grid-template-columns:repeat(2,1fr)}.grid--3{grid-template-columns:repeat(3,1fr)}.grid--4{grid-template-columns:repeat(4,1fr)}.grid--auto{grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.container{width:100%;max-width:1280px;margin:0 auto;padding:0 var(--sp-6)}.app-shell{display:flex;flex-direction:column;height:100vh;height:100dvh;background:var(--surface-app)}.vh-100{height:100vh;height:100dvh}.login-overlay{display:flex;align-items:center;justify-content:center;min-height:100vh;min-height:100dvh;padding:var(--sp-4);background:radial-gradient(ellipse 80% 60% at 50% 0%,rgb(99 102 241 / .08),transparent),radial-gradient(ellipse 60% 50% at 80% 100%,rgb(139 92 246 / .06),transparent),var(--surface-app)}.login-card{background:var(--surface-layer);border:1px solid var(--border-light);border-radius:var(--radius-2xl);padding:var(--sp-10) var(--sp-8);width:100%;max-width:420px;box-shadow:var(--shadow-2xl);animation:slideUp .4s cubic-bezier(.34,1.56,.64,1)}.login-brand{font-size:28px;font-weight:var(--font-bold);text-align:center;background:linear-gradient(135deg,var(--color-primary-500),var(--color-accent-violet));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.login-subtitle{text-align:center;color:var(--text-secondary);font-size:var(--text-sm)}.login-error{padding:var(--sp-2) var(--sp-3);background:var(--color-error-50);color:var(--color-error-700);border-radius:var(--radius-md);font-size:var(--text-sm);border:1px solid rgb(239 68 68 / .2)}.login-hints{margin-top:var(--sp-6);padding-top:var(--sp-4);border-top:1px solid var(--border-light)}.hint-row{display:flex;justify-content:space-between;padding:var(--sp-1-5) 0;font-size:var(--text-xs)}.hint-label{color:var(--text-tertiary)}.hint-value{color:var(--text-secondary);font-family:var(--font-mono)}.topbar{height:64px;background:#fffc;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--border-light);padding:0 var(--sp-6);position:sticky;top:0;z-index:var(--z-sticky);display:flex;align-items:center;flex-shrink:0;gap:var(--sp-3)}[data-theme=dark] .topbar{background:#171717cc}.topbar-brand{font-size:var(--text-lg);font-weight:var(--font-bold);background:linear-gradient(135deg,var(--color-primary-500),var(--color-accent-violet));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;flex-shrink:0}.topbar nav{display:flex;gap:var(--sp-1);margin-left:var(--sp-4)}.topbar-tab{padding:var(--sp-2) var(--sp-4);border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:var(--font-medium);color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast);text-decoration:none}.topbar-tab:hover{color:var(--text-primary);background:var(--color-neutral-100);text-decoration:none}[data-theme=dark] .topbar-tab:hover{background:var(--color-neutral-200)}.topbar-tab.active{color:var(--color-primary-600);background:var(--color-primary-50)}[data-theme=dark] .topbar-tab.active{background:#6366f126}.topbar-role-badge{font-size:var(--text-xs);color:var(--text-secondary)}.topbar-actions{margin-left:auto;display:flex;align-items:center;gap:var(--sp-2)}.panel-side{width:var(--sidebar-width);background:var(--surface-layer);border-right:1px solid var(--border-light);display:flex;flex-direction:column;padding:var(--sp-4);flex-shrink:0;overflow:hidden}.side-label{font-size:var(--text-xs);font-weight:var(--font-semibold);color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.05em}.side-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--sp-3)}.conversation-list{flex-grow:1;overflow-y:auto;margin:var(--sp-2) calc(-1 * var(--sp-2));padding:0 var(--sp-2)}.conv-row{display:flex;flex-direction:column;gap:2px;width:100%;padding:var(--sp-2) var(--sp-3);margin-bottom:2px;border:none;background:none;border-radius:var(--radius-md);cursor:pointer;text-align:left;transition:all var(--transition-fast);font-family:var(--font-sans)}.conv-row:hover{background:var(--color-neutral-100)}[data-theme=dark] .conv-row:hover{background:var(--color-neutral-200)}.conv-row.active{background:var(--color-primary-50)}[data-theme=dark] .conv-row.active{background:#6366f126}.conv-row.active .conv-title{color:var(--color-primary-700);font-weight:var(--font-medium)}[data-theme=dark] .conv-row.active .conv-title{color:var(--color-primary-400)}.conv-title{font-size:var(--text-sm);color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.conv-time{font-size:var(--text-xs);color:var(--text-tertiary)}.side-nav-btn{display:block;width:100%;padding:var(--sp-2) var(--sp-3);border:none;background:none;border-radius:var(--radius-md);font-size:var(--text-sm);color:var(--text-secondary);cursor:pointer;text-align:left;transition:all var(--transition-fast);font-family:var(--font-sans)}.side-nav-btn:hover{background:var(--color-neutral-100);color:var(--text-primary)}[data-theme=dark] .side-nav-btn:hover{background:var(--color-neutral-200)}.side-nav-btn.active{background:var(--color-primary-50);color:var(--color-primary-600);font-weight:var(--font-medium)}[data-theme=dark] .side-nav-btn.active{background:#6366f126;color:var(--color-primary-400)}.side-section{margin-top:var(--sp-3);padding-top:var(--sp-3);border-top:1px solid var(--border-light)}.mobile-toolbar{display:none;height:56px;padding:0 var(--sp-4);background:var(--surface-layer);border-bottom:1px solid var(--border-light);align-items:center;gap:var(--sp-3);flex-shrink:0}.mobile-menu-btn{width:40px;height:40px;border:none;background:none;border-radius:var(--radius-md);font-size:20px;color:var(--text-primary);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background var(--transition-fast)}.mobile-menu-btn:hover{background:var(--color-neutral-100)}[data-theme=dark] .mobile-menu-btn:hover{background:var(--color-neutral-200)}.mobile-toolbar-title{font-size:var(--text-base);font-weight:var(--font-semibold);color:var(--text-primary)}.mobile-nav-overlay{position:fixed;inset:0;background:#00000080;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:var(--z-modal);opacity:0;pointer-events:none;transition:opacity var(--transition-base)}.mobile-nav-overlay.active{opacity:1;pointer-events:auto}.mobile-nav-drawer{position:fixed;top:0;left:0;bottom:0;width:280px;background:var(--surface-layer);z-index:calc(var(--z-modal) + 1);transform:translate(-100%);transition:transform var(--transition-base);display:flex;flex-direction:column;padding:var(--sp-4);overflow-y:auto}.mobile-nav-drawer.open{transform:translate(0)}.mobile-nav-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--sp-4);padding-bottom:var(--sp-4);border-bottom:1px solid var(--border-light)}.mobile-nav-brand{font-size:var(--text-xl);font-weight:var(--font-bold);background:linear-gradient(135deg,var(--color-primary-500),var(--color-accent-violet));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.mobile-nav-close{width:36px;height:36px;border:none;background:none;border-radius:var(--radius-md);font-size:18px;color:var(--text-tertiary);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all var(--transition-fast)}.mobile-nav-close:hover{background:var(--color-neutral-100);color:var(--text-primary)}[data-theme=dark] .mobile-nav-close:hover{background:var(--color-neutral-200)}.mobile-nav-new-btn{display:flex;align-items:center;justify-content:center;gap:var(--sp-2);width:100%;padding:var(--sp-3);background:linear-gradient(135deg,var(--color-primary-500),var(--color-primary-600));color:#fff;border:none;border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:var(--font-medium);cursor:pointer;margin-bottom:var(--sp-4);transition:all var(--transition-fast);box-shadow:0 2px 8px #6366f14d}.mobile-nav-new-btn:hover{box-shadow:0 4px 12px #6366f166}.mobile-nav-section{margin-bottom:var(--sp-4)}.mobile-nav-section-title{font-size:var(--text-xs);font-weight:var(--font-semibold);color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.05em;margin-bottom:var(--sp-2);padding:0 var(--sp-2)}.mobile-nav-list{display:flex;flex-direction:column;gap:2px}.mobile-nav-item{display:flex;align-items:center;gap:var(--sp-2);width:100%;padding:var(--sp-2) var(--sp-3);border:none;background:none;border-radius:var(--radius-md);font-size:var(--text-sm);color:var(--text-primary);cursor:pointer;text-align:left;transition:all var(--transition-fast);font-family:var(--font-sans)}.mobile-nav-item:hover{background:var(--color-neutral-100)}[data-theme=dark] .mobile-nav-item:hover{background:var(--color-neutral-200)}.mobile-nav-item.active{background:var(--color-primary-50);color:var(--color-primary-600);font-weight:var(--font-medium)}[data-theme=dark] .mobile-nav-item.active{background:#6366f126;color:var(--color-primary-400)}.mobile-nav-item-title{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mobile-nav-item-time{font-size:var(--text-xs);color:var(--text-tertiary);flex-shrink:0}.mobile-nav-item-icon{font-size:var(--text-base);flex-shrink:0}.mobile-nav-empty{padding:var(--sp-4);text-align:center;font-size:var(--text-sm);color:var(--text-tertiary)}.mobile-nav-scenario{color:var(--color-primary-600)}[data-theme=dark] .mobile-nav-scenario{color:var(--color-primary-400)}.panel-main{flex:1;display:flex;flex-direction:column;overflow:hidden;background:var(--surface-app);min-width:0}.chat-toolbar{display:flex;align-items:center;padding:var(--sp-3) var(--sp-6);border-bottom:1px solid var(--border-light);background:var(--surface-layer);flex-shrink:0;gap:var(--sp-3)}.toolbar-toggle{width:32px;height:32px;border:1px solid var(--border-light);background:var(--surface-layer);border-radius:var(--radius-md);font-size:18px;color:var(--text-secondary);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all var(--transition-fast);flex-shrink:0}.toolbar-toggle:hover{background:var(--color-neutral-100);color:var(--text-primary)}[data-theme=dark] .toolbar-toggle:hover{background:var(--color-neutral-200)}.toolbar-title{font-size:var(--text-sm);font-weight:var(--font-medium);color:var(--text-secondary)}.chat-messages{flex:1;overflow-y:auto;padding:0}.empty-chat{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;padding:var(--sp-8);text-align:center}.empty-chat .empty-title{font-size:var(--text-2xl);font-weight:var(--font-bold);background:linear-gradient(135deg,var(--color-primary-500),var(--color-accent-violet));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin-bottom:var(--sp-2)}.empty-chat .empty-desc{font-size:var(--text-sm);color:var(--text-tertiary)}.chat-input-area{padding:var(--sp-4) var(--sp-6);background:var(--surface-layer);border-top:1px solid var(--border-light);flex-shrink:0}.chat-textarea{width:100%;padding:var(--sp-3) var(--sp-4);border:1px solid var(--border-default);border-radius:var(--radius-lg);font-size:var(--text-sm);line-height:1.6;background:var(--surface-app);color:var(--text-primary);resize:none;outline:none;transition:all var(--transition-fast);font-family:var(--font-sans);margin-bottom:var(--sp-2);min-height:80px}.chat-textarea:focus{border-color:var(--color-primary-500);box-shadow:var(--focus-ring)}.chat-textarea::placeholder{color:var(--text-tertiary)}.chat-error{padding:var(--sp-2) var(--sp-3);background:var(--color-warning-50);color:var(--color-warning-700);border-radius:var(--radius-md);font-size:var(--text-xs);border:1px solid rgb(245 158 11 / .2);margin-top:var(--sp-2)}.msg-row{padding:var(--sp-6) var(--sp-8);border-bottom:1px solid var(--border-light);transition:background var(--transition-fast);animation:msgSlideIn .38s cubic-bezier(.16,1,.3,1)}.msg-row:hover{background:#00000003}[data-theme=dark] .msg-row:hover{background:#ffffff05}.msg-row.user{background:var(--color-primary-50)}[data-theme=dark] .msg-row.user{background:#6366f114}.msg-label{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--text-sm);font-weight:var(--font-semibold);color:var(--text-secondary);margin-bottom:var(--sp-3)}.msg-row.user .msg-label .avatar{background:var(--color-accent-violet);color:#fff}.msg-row.assistant .msg-label .avatar{background:linear-gradient(135deg,var(--color-primary-500),var(--color-accent-violet));color:#fff}.msg-avatar{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:var(--text-xs);font-weight:var(--font-bold);flex-shrink:0}.msg-row.user .msg-avatar{background:var(--color-accent-violet);color:#fff}.msg-row.assistant .msg-avatar{background:linear-gradient(135deg,var(--color-primary-500),var(--color-accent-violet));color:#fff}.file-chip{display:inline-flex;align-items:center;gap:var(--sp-1);padding:var(--sp-1) var(--sp-2-5);background:var(--color-neutral-100);border:1px solid var(--border-light);border-radius:var(--radius-full);font-size:var(--text-xs);color:var(--text-secondary);margin-top:var(--sp-2)}[data-theme=dark] .file-chip{background:var(--color-neutral-200)}.file-chip-remove{width:16px;height:16px;border:none;background:none;color:var(--text-tertiary);cursor:pointer;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:14px;line-height:1;margin-left:2px;transition:all var(--transition-fast)}.file-chip-remove:hover{background:var(--color-neutral-200);color:var(--text-primary)}.thinking-trail{display:flex;align-items:center;flex-wrap:nowrap;gap:var(--sp-2);margin-bottom:var(--sp-3);overflow-x:auto;padding-bottom:var(--sp-1)}.thinking-step-group{display:flex;align-items:center;gap:var(--sp-2);flex-shrink:0}.thinking-step{display:inline-flex;align-items:center;gap:var(--sp-1-5);padding:var(--sp-1) var(--sp-3);background:var(--color-neutral-100);border-radius:var(--radius-full);font-size:var(--text-xs);color:var(--text-tertiary);font-weight:var(--font-medium);transition:all var(--transition-base)}[data-theme=dark] .thinking-step{background:var(--color-neutral-200)}.thinking-step.running{background:var(--color-primary-50);color:var(--color-primary-600)}[data-theme=dark] .thinking-step.running{background:#6366f126;color:var(--color-primary-400)}.thinking-step.completed{background:var(--color-success-50);color:var(--color-success-700)}[data-theme=dark] .thinking-step.completed{background:#22c55e1a;color:var(--color-success-500)}.step-dot{width:8px;height:8px;border-radius:50%;background:currentColor;flex-shrink:0}.thinking-step.running .step-dot{animation:pulse 1.5s ease-in-out infinite}.thinking-arrow{color:var(--text-tertiary);font-size:var(--text-xs);flex-shrink:0;transition:color var(--transition-base)}.thinking-arrow.active{color:var(--color-primary-400)}.citation-block,.tools-block{margin-top:var(--sp-3)}.citation-toggle,.tools-label{display:inline-flex;align-items:center;gap:var(--sp-1-5);padding:var(--sp-1) var(--sp-2);background:none;border:none;font-size:var(--text-xs);color:var(--text-tertiary);cursor:pointer;border-radius:var(--radius-sm);transition:all var(--transition-fast);font-family:var(--font-sans)}.citation-toggle:hover,.tools-label:hover{background:var(--color-neutral-100);color:var(--text-secondary)}[data-theme=dark] .citation-toggle:hover,[data-theme=dark] .tools-label:hover{background:var(--color-neutral-200)}.citation-list,.tools-list{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin-top:var(--sp-2);animation:fadeIn .2s ease}.citation-item{display:inline-flex;flex-direction:column;padding:var(--sp-1-5) var(--sp-3);background:var(--color-info-50);border-radius:var(--radius-md);font-size:var(--text-xs);color:var(--color-info-700)}[data-theme=dark] .citation-item{background:#3b82f61a;color:var(--color-info-500)}.tool-chip{display:inline-flex;align-items:center;gap:var(--sp-1-5);padding:var(--sp-1) var(--sp-2-5);background:var(--color-neutral-100);border-radius:var(--radius-full);font-size:var(--text-xs);color:var(--text-secondary)}[data-theme=dark] .tool-chip{background:var(--color-neutral-200)}.tool-chip.error{background:var(--color-error-50);color:var(--color-error-700)}[data-theme=dark] .tool-chip.error{background:#ef44441a;color:var(--color-error-500)}.tool-dot{width:6px;height:6px;border-radius:50%;background:var(--color-success-500)}.tool-chip.error .tool-dot{background:var(--color-error-500)}.tool-popover{position:absolute;top:calc(100% + 8px);left:0;z-index:var(--z-dropdown);background:var(--surface-elevated);border:1px solid var(--border-light);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);width:280px;animation:popoverIn .15s ease-out;overflow:hidden}.tool-popover-header{padding:var(--sp-3) var(--sp-4);font-size:var(--text-xs);font-weight:var(--font-semibold);color:var(--text-tertiary);border-bottom:1px solid var(--border-light);text-transform:uppercase;letter-spacing:.05em}.tool-popover-body{padding:var(--sp-2);max-height:240px;overflow-y:auto}.tool-popover-item{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border-radius:var(--radius-md);cursor:pointer;transition:background var(--transition-fast);font-size:var(--text-sm)}.tool-popover-item:hover{background:var(--color-neutral-100)}[data-theme=dark] .tool-popover-item:hover{background:var(--color-neutral-200)}.tool-popover-item input[type=checkbox]{width:16px;height:16px;accent-color:var(--color-primary-600);cursor:pointer;position:absolute;opacity:0;width:0;height:0}.tool-popover-item .checkbox-box{width:16px;height:16px}.tool-popover-icon{width:24px;text-align:center;font-size:var(--text-base)}.tool-popover-name{flex:1}.tool-popover-footer{padding:var(--sp-2) var(--sp-4);font-size:var(--text-xs);color:var(--text-tertiary);border-top:1px solid var(--border-light);background:var(--color-neutral-50)}.tool-count{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;background:var(--color-primary-600);color:#fff;border-radius:var(--radius-full);font-size:10px;font-weight:var(--font-semibold);margin-left:2px}.metric-card{background:var(--surface-layer);border:1px solid var(--border-light);border-radius:var(--radius-xl);padding:var(--sp-5);transition:all var(--transition-base)}.metric-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.metric-label{font-size:var(--text-xs);color:var(--text-tertiary);font-weight:var(--font-medium);text-transform:uppercase;letter-spacing:.05em;margin-bottom:var(--sp-2)}.metric-value{font-size:var(--text-2xl);font-weight:var(--font-bold);color:var(--text-primary)}.tool-toggle-card{background:var(--surface-layer);border:1px solid var(--border-light);border-radius:var(--radius-lg);padding:var(--sp-4);text-align:center;transition:all var(--transition-fast)}.tool-toggle-card:hover{border-color:var(--color-primary-200)}.tool-toggle-name{font-size:var(--text-sm);font-weight:var(--font-medium);color:var(--text-primary);margin-bottom:var(--sp-2)}.section-label{font-size:var(--text-xs);font-weight:var(--font-semibold);color:var(--color-primary-600);text-transform:uppercase;letter-spacing:.05em;margin-bottom:var(--sp-3);display:block}.status-badge{display:inline-flex;align-items:center;padding:2px var(--sp-2);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:var(--font-medium)}.status-badge.on{background:var(--color-success-50);color:var(--color-success-700)}[data-theme=dark] .status-badge.on{background:#22c55e1a;color:var(--color-success-500)}.status-badge.off{background:var(--color-neutral-100);color:var(--text-tertiary)}[data-theme=dark] .status-badge.off{background:var(--color-neutral-200)}.type-tag{display:inline-flex;padding:2px var(--sp-2);background:var(--color-info-50);color:var(--color-info-700);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:var(--font-medium)}[data-theme=dark] .type-tag{background:#3b82f61a;color:var(--color-info-500)}.impact-preview{padding:var(--sp-3) var(--sp-4);background:var(--color-primary-50);border:1px solid rgb(99 102 241 / .2);border-radius:var(--radius-lg);font-size:var(--text-sm);color:var(--color-primary-700)}[data-theme=dark] .impact-preview{background:#6366f11a;color:var(--color-primary-400)}.toast-bar{padding:var(--sp-3) var(--sp-4);background:var(--color-success-50);border:1px solid rgb(34 197 94 / .2);border-radius:var(--radius-lg);font-size:var(--text-sm);color:var(--color-success-700);animation:slideUp .3s ease}[data-theme=dark] .toast-bar{background:#22c55e1a;color:var(--color-success-500)}.toast-bar.alert-warning{background:var(--color-warning-50);border-color:#f59e0b33;color:var(--color-warning-700)}[data-theme=dark] .toast-bar.alert-warning{background:#f59e0b1a;color:var(--color-warning-500)}.markdown-body{font-size:var(--text-sm);line-height:1.75;color:var(--text-primary)}.markdown-body>*:first-child{margin-top:0}.markdown-body>*:last-child{margin-bottom:0}.md-h1{font-size:var(--text-xl);font-weight:var(--font-bold);margin:var(--sp-4) 0 var(--sp-3);color:var(--text-primary)}.md-h2{font-size:var(--text-lg);font-weight:var(--font-semibold);margin:var(--sp-4) 0 var(--sp-2);color:var(--text-primary)}.md-h3{font-size:var(--text-base);font-weight:var(--font-semibold);margin:var(--sp-3) 0 var(--sp-2);color:var(--text-primary)}.md-h4{font-size:var(--text-sm);font-weight:var(--font-semibold);margin:var(--sp-3) 0 var(--sp-2);color:var(--text-primary)}.md-h5,.md-h6{font-size:var(--text-sm);font-weight:var(--font-semibold);margin:var(--sp-2) 0;color:var(--text-secondary)}.md-p{margin:var(--sp-2) 0;color:var(--text-primary)}.md-ul,.md-ol{margin:var(--sp-2) 0;padding-left:var(--sp-6)}.md-li{margin:var(--sp-1) 0}.md-blockquote{margin:var(--sp-3) 0;padding:var(--sp-2) var(--sp-4);border-left:3px solid var(--color-primary-300);background:var(--color-primary-50);border-radius:0 var(--radius-md) var(--radius-md) 0;color:var(--text-secondary);font-size:var(--text-sm)}[data-theme=dark] .md-blockquote{background:#6366f11a;border-left-color:var(--color-primary-500)}.md-link{color:var(--color-primary-600);text-decoration:none;border-bottom:1px solid transparent;transition:border-color var(--transition-fast)}[data-theme=dark] .md-link{color:var(--color-primary-400)}.md-link:hover{border-bottom-color:var(--color-primary-600);text-decoration:none}.md-table-wrapper{overflow-x:auto;margin:var(--sp-3) 0;border:1px solid var(--border-light);border-radius:var(--radius-lg)}.md-table{width:100%;border-collapse:collapse;font-size:var(--text-sm)}.md-th{padding:var(--sp-2) var(--sp-3);text-align:left;font-weight:var(--font-semibold);color:var(--text-secondary);background:var(--color-neutral-50);border-bottom:1px solid var(--border-light);white-space:nowrap}[data-theme=dark] .md-th{background:var(--color-neutral-100)}.md-td{padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--border-light);color:var(--text-primary)}.md-tr:last-child .md-td{border-bottom:none}.md-hr{border:none;border-top:1px solid var(--border-light);margin:var(--sp-6) 0}.md-img{max-width:100%;border-radius:var(--radius-lg);margin:var(--sp-3) 0}.md-strong{font-weight:var(--font-semibold);color:var(--text-primary)}.md-em{font-style:italic}.md-del{text-decoration:line-through;color:var(--text-tertiary)}.markdown-body code:not(pre code){padding:2px 6px;background:var(--color-neutral-100);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:.875em;color:var(--color-accent-rose)}[data-theme=dark] .markdown-body code:not(pre code){background:var(--color-neutral-200)}.streaming-cursor{display:inline-block;width:2px;height:1.2em;background:var(--color-primary-500);margin-left:2px;vertical-align:text-bottom;animation:blink 1s infinite}@media(max-width:1024px){.panel-side{width:240px}.grid--4{grid-template-columns:repeat(2,1fr)}}@media(max-width:768px){.topbar{padding:0 var(--sp-4)}.topbar nav{margin-left:var(--sp-2)}.topbar-tab{padding:var(--sp-1-5) var(--sp-3);font-size:var(--text-xs)}.topbar-role-badge,.panel-side{display:none}.mobile-toolbar{display:flex}.chat-toolbar{padding:var(--sp-2) var(--sp-4)}.toolbar-toggle{display:none}.chat-input-area{padding:var(--sp-3) var(--sp-4)}.msg-row{padding:var(--sp-4)}.chat-messages{-webkit-overflow-scrolling:touch}.grid--2,.grid--3,.grid--4{grid-template-columns:1fr}.login-card{padding:var(--sp-6) var(--sp-4)}.empty-chat{padding:var(--sp-4)}.empty-chat .empty-title{font-size:var(--text-xl)}.toast-container{left:var(--sp-4);right:var(--sp-4);top:var(--sp-4)}.toast{min-width:auto;max-width:none}.d-none-tablet{display:none!important}.d-block-tablet{display:block!important}}@media(min-width:769px){.mobile-toolbar{display:none!important}.d-none-tablet{display:block!important}.d-block-tablet{display:none!important}}@media(max-width:640px){.thinking-trail{flex-wrap:wrap}}
