:root{--color-primary: #6366f1;--color-primary-hover: #4f46e5;--color-primary-active: #4338ca;--color-primary-light: #eef2ff;--color-primary-subtle: rgba(99, 102, 241, .08);--color-primary-foreground: #ffffff;--color-success: #22c55e;--color-success-hover: #16a34a;--color-success-light: #f0fdf4;--color-success-subtle: rgba(34, 197, 94, .08);--color-warning: #f59e0b;--color-warning-hover: #d97706;--color-warning-light: #fffbeb;--color-warning-subtle: rgba(245, 158, 11, .08);--color-error: #ef4444;--color-error-hover: #dc2626;--color-error-light: #fef2f2;--color-error-subtle: rgba(239, 68, 68, .08);--color-info: #3b82f6;--color-info-light: #eff6ff;--color-info-subtle: rgba(59, 130, 246, .08);--color-bg: #fafafa;--color-bg-secondary: #f4f4f5;--color-bg-tertiary: #e4e4e7;--color-bg-elevated: #ffffff;--color-surface: #ffffff;--color-surface-hover: #f9f9fb;--color-surface-active: #f4f4f5;--color-border: #e4e4e7;--color-border-light: #f0f0f2;--color-border-hover: #d4d4d8;--color-border-focus: var(--color-primary);--color-text: #18181b;--color-text-secondary: #71717a;--color-text-tertiary: #a1a1aa;--color-text-quaternary: #d4d4d8;--color-text-inverse: #ffffff;--color-text-link: var(--color-primary);--font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, "Helvetica Neue", "PingFang SC", "Microsoft YaHei", sans-serif;--font-mono: "JetBrains Mono", "SF Mono", "Fira Code", "Cascadia Code", Consolas, monospace;--font-size-xs: .6875rem;--font-size-sm: .8125rem;--font-size-base: .875rem;--font-size-lg: 1rem;--font-size-xl: 1.125rem;--font-size-2xl: 1.5rem;--font-size-3xl: 1.875rem;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-tight: 1.25;--line-height-normal: 1.5;--line-height-relaxed: 1.625;--letter-spacing-tight: -.025em;--letter-spacing-normal: 0;--letter-spacing-wide: .025em;--letter-spacing-wider: .05em;--spacing-0: 0px;--spacing-px: 1px;--spacing-0-5: 2px;--spacing-1: 4px;--spacing-1-5: 6px;--spacing-2: 8px;--spacing-2-5: 10px;--spacing-3: 12px;--spacing-4: 16px;--spacing-5: 20px;--spacing-6: 24px;--spacing-8: 32px;--spacing-10: 40px;--spacing-12: 48px;--spacing-xs: var(--spacing-1);--spacing-sm: var(--spacing-2);--spacing-md: var(--spacing-3);--spacing-lg: var(--spacing-4);--spacing-xl: var(--spacing-6);--spacing-2xl: var(--spacing-8);--spacing-3xl: var(--spacing-12);--radius-xs: 4px;--radius-sm: 6px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-2xl: 20px;--radius-full: 9999px;--shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, .03);--shadow-sm: 0 1px 3px 0 rgba(0, 0, 0, .04), 0 1px 2px -1px rgba(0, 0, 0, .03);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .05), 0 2px 4px -2px rgba(0, 0, 0, .03);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .06), 0 4px 6px -4px rgba(0, 0, 0, .03);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .08), 0 8px 10px -6px rgba(0, 0, 0, .03);--shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, .15);--shadow-card: 0 0 0 1px rgba(0, 0, 0, .03), 0 2px 4px rgba(0, 0, 0, .02), 0 12px 24px rgba(0, 0, 0, .03);--shadow-dropdown: 0 0 0 1px rgba(0, 0, 0, .04), 0 4px 12px rgba(0, 0, 0, .06), 0 16px 32px rgba(0, 0, 0, .08);--shadow-modal: 0 0 0 1px rgba(0, 0, 0, .04), 0 16px 48px rgba(0, 0, 0, .12), 0 32px 64px rgba(0, 0, 0, .08);--shadow-focus: 0 0 0 2px var(--color-bg), 0 0 0 4px var(--color-primary);--ease-default: cubic-bezier(.16, 1, .3, 1);--ease-in: cubic-bezier(.4, 0, 1, 1);--ease-out: cubic-bezier(0, 0, .2, 1);--ease-in-out: cubic-bezier(.4, 0, .2, 1);--ease-spring: cubic-bezier(.22, 1, .36, 1);--ease-bounce: cubic-bezier(.34, 1.56, .64, 1);--duration-instant: 75ms;--duration-fast: .15s;--duration-base: .2s;--duration-moderate: .3s;--duration-slow: .5s;--transition-fast: var(--duration-fast) var(--ease-default);--transition-base: var(--duration-base) var(--ease-default);--transition-slow: var(--duration-moderate) var(--ease-default);--transition-spring: var(--duration-moderate) var(--ease-spring);--z-base: 0;--z-dropdown: 100;--z-sticky: 200;--z-overlay: 500;--z-modal: 1000;--z-toast: 1500;--blur-sm: 8px;--blur-md: 16px;--blur-lg: 24px;--blur-xl: 40px;--header-height: 52px;--footer-height: 32px;--sidebar-width: 260px;--overlay-bg: rgba(0, 0, 0, .4);--overlay-blur: blur(var(--blur-sm))}.dark,[data-theme=dark]{--color-primary: #818cf8;--color-primary-hover: #6366f1;--color-primary-active: #4f46e5;--color-primary-light: rgba(129, 140, 248, .12);--color-primary-subtle: rgba(129, 140, 248, .06);--color-primary-foreground: #ffffff;--color-success: #4ade80;--color-success-hover: #22c55e;--color-success-light: rgba(34, 197, 94, .12);--color-success-subtle: rgba(34, 197, 94, .06);--color-warning: #fbbf24;--color-warning-hover: #f59e0b;--color-warning-light: rgba(245, 158, 11, .12);--color-warning-subtle: rgba(245, 158, 11, .06);--color-error: #f87171;--color-error-hover: #ef4444;--color-error-light: rgba(239, 68, 68, .12);--color-error-subtle: rgba(239, 68, 68, .06);--color-info: #60a5fa;--color-info-light: rgba(59, 130, 246, .12);--color-info-subtle: rgba(59, 130, 246, .06);--color-bg: #09090b;--color-bg-secondary: #111113;--color-bg-tertiary: #1a1a1f;--color-bg-elevated: #18181b;--color-surface: #141416;--color-surface-hover: #1c1c20;--color-surface-active: #222226;--color-border: #27272a;--color-border-light: #1e1e22;--color-border-hover: #3f3f46;--color-border-focus: var(--color-primary);--color-text: #fafafa;--color-text-secondary: #a1a1aa;--color-text-tertiary: #71717a;--color-text-quaternary: #3f3f46;--color-text-inverse: #09090b;--shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, .4);--shadow-sm: 0 1px 3px 0 rgba(0, 0, 0, .5), 0 1px 2px -1px rgba(0, 0, 0, .4);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .5), 0 2px 4px -2px rgba(0, 0, 0, .4);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .5), 0 4px 6px -4px rgba(0, 0, 0, .4);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .6), 0 8px 10px -6px rgba(0, 0, 0, .4);--shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, .7);--shadow-card: 0 0 0 1px rgba(255, 255, 255, .04), 0 2px 4px rgba(0, 0, 0, .3), 0 12px 24px rgba(0, 0, 0, .2);--shadow-dropdown: 0 0 0 1px rgba(255, 255, 255, .06), 0 4px 12px rgba(0, 0, 0, .4), 0 16px 32px rgba(0, 0, 0, .3);--shadow-modal: 0 0 0 1px rgba(255, 255, 255, .06), 0 16px 48px rgba(0, 0, 0, .5), 0 32px 64px rgba(0, 0, 0, .4);--shadow-focus: 0 0 0 2px var(--color-bg), 0 0 0 4px var(--color-primary);--overlay-bg: rgba(0, 0, 0, .6)}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;font-feature-settings:"cv02","cv03","cv04","cv11";-webkit-text-size-adjust:100%}body{font-family:var(--font-family);font-size:var(--font-size-base);font-weight:var(--font-weight-normal);line-height:var(--line-height-normal);color:var(--color-text);background-color:var(--color-bg);overflow:hidden;letter-spacing:var(--letter-spacing-normal)}#root{width:100vw;height:100vh;display:flex;flex-direction:column}::selection{background-color:var(--color-primary-light);color:var(--color-primary)}a{color:var(--color-text-link);text-decoration:none;transition:color var(--transition-fast)}a:hover{color:var(--color-primary-hover)}img{max-width:100%;display:block}:focus{outline:none}:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px;border-radius:var(--radius-sm)}.flex{display:flex}.flex-col{display:flex;flex-direction:column}.flex-center{display:flex;align-items:center;justify-content:center}.flex-between{display:flex;align-items:center;justify-content:space-between}.flex-1{flex:1}.grid{display:grid}.gap-sm{gap:var(--spacing-sm)}.gap-md{gap:var(--spacing-md)}.gap-lg{gap:var(--spacing-lg)}button{font-family:inherit;font-size:var(--font-size-base);cursor:pointer;border:none;outline:none;transition:all var(--transition-fast)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-2);padding:var(--spacing-2) var(--spacing-4);border-radius:var(--radius-md);font-weight:var(--font-weight-medium);font-size:var(--font-size-sm);line-height:1.4;white-space:nowrap;-webkit-user-select:none;user-select:none;position:relative;transition:all var(--transition-fast)}.btn-primary{background:linear-gradient(180deg,var(--color-primary) 0%,var(--color-primary-hover) 100%);color:var(--color-primary-foreground);box-shadow:0 1px 2px #0000001a,inset 0 1px #ffffff1f}.btn-primary:hover{background:linear-gradient(180deg,var(--color-primary-hover) 0%,var(--color-primary-active) 100%);box-shadow:0 2px 4px #00000026,inset 0 1px #ffffff1a;transform:translateY(-.5px)}.btn-primary:active{transform:translateY(0) scale(.98);box-shadow:0 1px 2px #0000001a,inset 0 1px 3px #0000001a}.btn-secondary{background-color:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border);box-shadow:var(--shadow-xs)}.btn-secondary:hover{background-color:var(--color-surface-hover);border-color:var(--color-border-hover);transform:translateY(-.5px);box-shadow:var(--shadow-sm)}.btn-secondary:active{transform:translateY(0) scale(.98);background-color:var(--color-surface-active)}.btn-ghost{background-color:transparent;color:var(--color-text-secondary)}.btn-ghost:hover{background-color:var(--color-bg-secondary);color:var(--color-text)}.btn-ghost:active{background-color:var(--color-bg-tertiary)}.btn-danger{background:linear-gradient(180deg,var(--color-error) 0%,var(--color-error-hover) 100%);color:var(--color-text-inverse);box-shadow:0 1px 2px #0000001a,inset 0 1px #ffffff1f}.btn-danger:hover{background:linear-gradient(180deg,var(--color-error-hover) 0%,#b91c1c 100%);transform:translateY(-.5px)}.btn-danger:active{transform:translateY(0) scale(.98)}.btn-success{background:linear-gradient(180deg,var(--color-success) 0%,var(--color-success-hover) 100%);color:var(--color-text-inverse);box-shadow:0 1px 2px #0000001a,inset 0 1px #ffffff1f}.btn-success:hover{background:linear-gradient(180deg,var(--color-success-hover) 0%,#15803d 100%);transform:translateY(-.5px)}.btn-success:active{transform:translateY(0) scale(.98)}.btn-sm{padding:var(--spacing-1) var(--spacing-3);font-size:var(--font-size-xs);border-radius:var(--radius-sm);gap:var(--spacing-1)}.btn-lg{padding:var(--spacing-3) var(--spacing-6);font-size:var(--font-size-base);border-radius:var(--radius-md)}.btn:disabled{opacity:.4;cursor:not-allowed;pointer-events:none;transform:none!important}.btn-icon{font-size:var(--font-size-base);line-height:1}.btn-capsule{display:inline-flex;align-items:center;gap:var(--spacing-1);padding:var(--spacing-1) var(--spacing-3);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);border:1px solid;border-radius:var(--radius-full);cursor:pointer;transition:all var(--transition-fast);white-space:nowrap}.btn-capsule:active:not(:disabled){transform:scale(.96)}.btn-capsule-green{color:var(--color-success);background:var(--color-success-subtle);border-color:#22c55e33}.btn-capsule-green:hover{background:#22c55e26;border-color:#22c55e59}.btn-capsule-purple{color:#8b5cf6;background:#8b5cf60f;border-color:#8b5cf626}.btn-capsule-purple:hover{background:#8b5cf61f;border-color:#8b5cf64d}.btn-capsule-blue{color:var(--color-info);background:var(--color-info-subtle);border-color:#3b82f626}.btn-capsule-blue:hover{background:#3b82f61f;border-color:#3b82f64d}.btn-capsule-gray{color:var(--color-text-secondary);background:var(--color-bg-secondary);border-color:var(--color-border-light)}.btn-capsule-gray:hover{background:var(--color-bg-tertiary);border-color:var(--color-border)}input,textarea,select{font-family:inherit;font-size:var(--font-size-base);color:var(--color-text);outline:none;transition:border-color var(--transition-fast),box-shadow var(--transition-fast),background-color var(--transition-fast)}.input{width:100%;padding:var(--spacing-2) var(--spacing-3);background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);line-height:1.4;color:var(--color-text)}.input:hover:not(:disabled):not(:focus){border-color:var(--color-border-hover)}.input:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-subtle),0 0 0 1px var(--color-primary)}.input::placeholder{color:var(--color-text-tertiary)}.input:disabled{background-color:var(--color-bg-secondary);color:var(--color-text-tertiary);opacity:.7;cursor:not-allowed}textarea.input{resize:vertical;min-height:80px}select.input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%2371717a' d='M6 8.825a.5.5 0 0 1-.354-.146L2.146 5.18a.5.5 0 0 1 .708-.708L6 7.618l3.146-3.147a.5.5 0 0 1 .708.708L6.354 8.68a.5.5 0 0 1-.354.146z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:32px}.card{background-color:var(--color-surface);border:1px solid var(--color-border-light);border-radius:var(--radius-lg);padding:var(--spacing-6);box-shadow:var(--shadow-card);transition:box-shadow var(--transition-base),border-color var(--transition-base)}.card:hover{box-shadow:var(--shadow-md);border-color:var(--color-border)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background-color:var(--overlay-bg);backdrop-filter:var(--overlay-blur);-webkit-backdrop-filter:var(--overlay-blur);display:flex;align-items:center;justify-content:center;z-index:var(--z-modal);animation:overlayFadeIn var(--duration-base) var(--ease-out)}.modal{background-color:var(--color-surface);border:1px solid var(--color-border-light);border-radius:var(--radius-xl);box-shadow:var(--shadow-modal);width:90%;max-width:520px;max-height:85vh;overflow-y:auto;animation:modalSlideUp var(--duration-moderate) var(--ease-spring)}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-5) var(--spacing-6) var(--spacing-3)}.modal-header h2{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing-tight)}.modal-body{padding:var(--spacing-3) var(--spacing-6)}.modal-footer{display:flex;justify-content:flex-end;gap:var(--spacing-2);padding:var(--spacing-4) var(--spacing-6) var(--spacing-5)}.modal-large{max-width:640px;max-height:85vh}.modal-large .modal-body{max-height:60vh;overflow-y:auto}.badge{display:inline-flex;align-items:center;padding:2px var(--spacing-2);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);border-radius:var(--radius-full);line-height:1.4;letter-spacing:var(--letter-spacing-wide)}.badge-primary{background-color:var(--color-primary-light);color:var(--color-primary)}.badge-success{background-color:var(--color-success-light);color:var(--color-success)}.badge-warning{background-color:var(--color-warning-light);color:var(--color-warning)}.badge-error{background-color:var(--color-error-light);color:var(--color-error)}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background-color:var(--color-text-quaternary);border-radius:var(--radius-full);transition:background-color var(--transition-fast)}::-webkit-scrollbar-thumb:hover{background-color:var(--color-text-tertiary)}*{scrollbar-width:thin;scrollbar-color:var(--color-text-quaternary) transparent}@keyframes overlayFadeIn{0%{opacity:0}to{opacity:1}}@keyframes modalSlideUp{0%{opacity:0;transform:translateY(16px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes slideInRight{0%{opacity:0;transform:translate(8px)}to{opacity:1;transform:translate(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.text-sm{font-size:var(--font-size-sm)}.text-xs{font-size:var(--font-size-xs)}.text-secondary{color:var(--color-text-secondary)}.text-tertiary{color:var(--color-text-tertiary)}.text-center{text-align:center}.font-mono{font-family:var(--font-mono)}.font-medium{font-weight:var(--font-weight-medium)}.font-semibold{font-weight:var(--font-weight-semibold)}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.app-container{display:flex;flex-direction:column;height:100%;min-height:0;background:var(--color-bg)}.app-header{display:flex;justify-content:space-between;align-items:center;padding:0 var(--spacing-5);height:var(--header-height);background:color-mix(in srgb,var(--color-surface) 80%,transparent);backdrop-filter:saturate(180%) blur(var(--blur-md));-webkit-backdrop-filter:saturate(180%) blur(var(--blur-md));border-bottom:1px solid var(--color-border-light);position:relative;z-index:var(--z-sticky);transition:background-color var(--transition-base),border-color var(--transition-base)}.header-left{display:flex;align-items:center;gap:var(--spacing-3)}.header-title h1{font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);color:var(--color-text);letter-spacing:var(--letter-spacing-tight)}.subtitle{font-size:var(--font-size-xs);color:var(--color-text-tertiary);font-weight:var(--font-weight-normal)}.header-right{display:flex;align-items:center;gap:var(--spacing-1)}.version{font-size:var(--font-size-xs);color:var(--color-text-tertiary);padding:var(--spacing-0-5) var(--spacing-2-5);background:var(--color-bg-secondary);border:1px solid var(--color-border-light);border-radius:var(--radius-full);font-weight:var(--font-weight-medium);font-family:var(--font-mono);letter-spacing:var(--letter-spacing-wide)}.main-content{display:grid;grid-template-columns:1fr 1fr;gap:var(--spacing-4);padding:var(--spacing-4);flex:1;overflow:hidden;min-height:0;background:var(--color-bg)}.config-panel,.log-panel{background:var(--color-surface);border-radius:var(--radius-lg);border:1px solid var(--color-border-light);display:flex;flex-direction:column;overflow:hidden;min-height:0;box-shadow:var(--shadow-card);transition:box-shadow var(--transition-base),border-color var(--transition-base)}.config-panel{overflow-y:auto}.panel-header{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-3) var(--spacing-5);border-bottom:1px solid var(--color-border-light);background:var(--color-surface)}.panel-header h2{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text);letter-spacing:var(--letter-spacing-tight)}.config-form{padding:var(--spacing-5);display:flex;flex-direction:column;gap:var(--spacing-5)}.form-group{display:flex;flex-direction:column;gap:var(--spacing-1-5)}.form-group label{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-secondary);display:flex;align-items:center;gap:var(--spacing-1-5)}.label-icon{font-size:var(--font-size-base);opacity:.7}.label-hint{font-size:var(--font-size-xs);font-weight:var(--font-weight-normal);margin-left:auto;color:var(--color-text-tertiary)}.form-hint{display:block;font-size:var(--font-size-xs);color:var(--color-text-tertiary);margin-top:var(--spacing-1);line-height:var(--line-height-relaxed)}.input-group{display:flex;gap:var(--spacing-2)}.input-group input,.input-group .input{flex:1}.form-actions{margin-top:var(--spacing-2)}.sdltm-file-list--dragover{outline:2px dashed var(--color-primary);outline-offset:2px;background:color-mix(in srgb,var(--color-primary) 8%,transparent)}.sdltm-file-list{background:var(--color-bg-secondary);border:1px solid var(--color-border-light);border-radius:var(--radius-md);padding:var(--spacing-2);max-height:120px;overflow-y:auto;margin-bottom:var(--spacing-2)}.sdltm-empty{padding:var(--spacing-3);text-align:center;color:var(--color-text-tertiary);font-size:var(--font-size-xs)}.sdltm-file-item{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-1) var(--spacing-2);border-radius:var(--radius-sm);font-size:var(--font-size-xs);transition:background-color var(--transition-fast)}.sdltm-file-item:hover{background:var(--color-surface-hover)}.sdltm-file-name{font-family:var(--font-mono);font-size:var(--font-size-xs);color:var(--color-text);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sdltm-file-remove{background:none;border:none;color:var(--color-text-tertiary);cursor:pointer;padding:2px var(--spacing-1);font-size:var(--font-size-xs);border-radius:var(--radius-sm);transition:all var(--transition-fast)}.sdltm-file-remove:hover{color:var(--color-error);background:var(--color-error-subtle)}.sdltm-file-download{background:none;border:none;color:var(--color-text-tertiary);cursor:pointer;padding:2px var(--spacing-1);font-size:var(--font-size-xs);border-radius:var(--radius-sm);transition:all var(--transition-fast)}.sdltm-file-download:hover{color:var(--color-primary);background:var(--color-primary-subtle)}.sdltm-actions{display:flex;gap:var(--spacing-1-5);align-items:center}.stats-panel{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--spacing-4);padding:var(--spacing-5);background:var(--color-bg-secondary);border-radius:var(--radius-md);margin:0 var(--spacing-5);border:1px solid var(--color-border-light)}.stat-item{display:flex;flex-direction:column;align-items:center;gap:var(--spacing-0-5)}.stat-value{font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);color:var(--color-primary);letter-spacing:var(--letter-spacing-tight);font-variant-numeric:tabular-nums}.stat-label{font-size:var(--font-size-xs);color:var(--color-text-tertiary);text-transform:uppercase;letter-spacing:var(--letter-spacing-wider);font-weight:var(--font-weight-medium)}.translation-controls{padding:var(--spacing-5);display:flex;gap:var(--spacing-4)}.progress-container{padding:var(--spacing-5);display:flex;flex-direction:column;gap:var(--spacing-2)}.progress-header{display:flex;justify-content:space-between;font-size:var(--font-size-sm)}.progress-text{color:var(--color-text-secondary)}.progress-percent{color:var(--color-primary);font-weight:var(--font-weight-semibold);font-variant-numeric:tabular-nums}.progress-track{height:4px;background:var(--color-bg-tertiary);border-radius:var(--radius-full);overflow:hidden;position:relative}.progress-fill{height:100%;width:0%;background:linear-gradient(90deg,var(--color-primary),var(--color-primary-hover));border-radius:var(--radius-full);transition:width var(--duration-base) var(--ease-out);position:relative}.progress-fill:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.2) 50%,transparent 100%);animation:shimmer 2s infinite linear;background-size:200% 100%}.progress-details{font-size:var(--font-size-xs);color:var(--color-text-tertiary)}.progress-filename{font-family:var(--font-mono);font-size:var(--font-size-xs)}.progress-fill-indeterminate{width:42%!important;animation:file-transfer-indeterminate 1.4s ease-in-out infinite}@keyframes file-transfer-indeterminate{0%{transform:translate(-120%)}to{transform:translate(320%)}}.file-transfer-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9500;display:flex;align-items:center;justify-content:center;padding:24px;background:#0f172a5c;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.file-transfer-panel{width:min(440px,calc(100vw - 32px));padding:22px 24px;border-radius:18px;background:var(--color-bg-primary);box-shadow:0 24px 70px #0f172a47;border:1px solid var(--color-border-light);display:flex;flex-direction:column;gap:14px;pointer-events:auto}.file-transfer-header{display:flex;align-items:flex-start;gap:12px}.file-transfer-icon{font-size:22px;line-height:1}.file-transfer-title-wrap{flex:1;min-width:0}.file-transfer-title{font-size:var(--font-size-base);font-weight:700;color:var(--color-text)}.file-transfer-detail{margin-top:4px;font-size:var(--font-size-xs);color:var(--color-text-tertiary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.file-transfer-percent{font-size:var(--font-size-lg);font-weight:700;color:var(--color-primary)}.file-transfer-track{margin-top:2px}.file-transfer-meta{display:flex;flex-direction:column;gap:4px;font-size:var(--font-size-xs);color:var(--color-text-secondary);font-variant-numeric:tabular-nums}.file-transfer-status{font-size:var(--font-size-sm);font-weight:600;color:var(--color-text)}.file-transfer-actions{display:flex;justify-content:flex-end;padding-top:2px}.progress-fill-cancelled{background:var(--color-text-tertiary)!important;transition:width .25s ease}.progress-fill-success{background:var(--color-success, #22c55e)!important;transition:width .35s ease}.file-transfer-overlay--done{background:#0f172a47}.file-transfer-percent--done{color:var(--color-success, #22c55e);font-size:24px}.config-upload-status{margin-bottom:16px;padding:12px 14px;border-radius:var(--radius-md);border:1px solid var(--color-primary);background:color-mix(in srgb,var(--color-primary) 10%,var(--color-bg-primary));display:flex;flex-direction:column;gap:8px}.config-upload-status--done{border-color:var(--color-success, #22c55e);background:color-mix(in srgb,var(--color-success, #22c55e) 12%,var(--color-bg-primary))}.config-upload-status--error{border-color:var(--color-error);background:var(--color-error-bg)}.config-upload-status-head{display:flex;align-items:flex-start;gap:10px}.config-upload-status-icon{font-size:18px;line-height:1.2}.config-upload-status-text{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;font-size:var(--font-size-sm);color:var(--color-text)}.config-upload-status-text strong{font-weight:600}.config-upload-status-detail{font-size:var(--font-size-xs);color:var(--color-text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.config-upload-status-percent{font-size:var(--font-size-base);font-weight:700;color:var(--color-primary);font-variant-numeric:tabular-nums}.config-upload-status--done .config-upload-status-percent{color:var(--color-success, #22c55e)}.config-upload-status-track{height:6px}.config-upload-status-meta{display:flex;flex-wrap:wrap;justify-content:space-between;gap:4px 12px;font-size:var(--font-size-xs);color:var(--color-text-secondary);font-variant-numeric:tabular-nums}.config-upload-status-cancel{align-self:flex-end;border:none;background:transparent;color:var(--color-primary);font-size:var(--font-size-xs);cursor:pointer;padding:0}.config-upload-status-cancel:hover{text-decoration:underline}.file-transfer-error{padding:10px 12px;border-radius:var(--radius-md);background:var(--color-error-bg);color:var(--color-error);font-size:var(--font-size-sm)}.log-controls{display:flex;gap:2px}.log-container{flex:1;overflow-y:auto;padding:var(--spacing-3);font-family:var(--font-mono);font-size:var(--font-size-xs);line-height:1.7;min-height:0;background:var(--color-surface)}.log-entry{padding:var(--spacing-1) var(--spacing-2-5);border-radius:var(--radius-sm);margin-bottom:var(--spacing-0-5);display:flex;gap:var(--spacing-2);animation:slideInRight var(--duration-fast) var(--ease-default)}.log-time{color:var(--color-text-tertiary);flex-shrink:0;font-size:var(--font-size-xs);font-variant-numeric:tabular-nums}.log-message{word-break:break-word}.log-info{background:var(--color-info-subtle);color:var(--color-info)}.log-success{background:var(--color-success-subtle);color:var(--color-success)}.log-warning{background:var(--color-warning-subtle);color:var(--color-warning)}.log-error{background:var(--color-error-subtle);color:var(--color-error)}.app-footer{display:flex;justify-content:space-between;align-items:center;padding:0 var(--spacing-5);height:var(--footer-height);background:color-mix(in srgb,var(--color-surface) 80%,transparent);backdrop-filter:saturate(180%) blur(var(--blur-md));-webkit-backdrop-filter:saturate(180%) blur(var(--blur-md));border-top:1px solid var(--color-border-light);font-size:var(--font-size-xs);color:var(--color-text-tertiary);font-weight:var(--font-weight-normal);transition:background-color var(--transition-base),border-color var(--transition-base)}.status-indicator{display:flex;align-items:center;gap:var(--spacing-1-5)}.status-dot{width:7px;height:7px;border-radius:50%;background:var(--color-success);box-shadow:0 0 0 2px var(--color-success-subtle)}.status-indicator.processing .status-dot{background:var(--color-warning);box-shadow:0 0 0 2px var(--color-warning-subtle);animation:pulse 1.5s infinite var(--ease-in-out)}.status-indicator.error .status-dot{background:var(--color-error);box-shadow:0 0 0 2px var(--color-error-subtle);animation:none}.settings-form{display:flex;flex-direction:column;gap:var(--spacing-5)}.settings-form label{display:flex;align-items:center;gap:var(--spacing-1-5);margin-bottom:var(--spacing-1-5);font-weight:var(--font-weight-medium);font-size:var(--font-size-sm);color:var(--color-text)}.settings-form textarea{font-family:var(--font-mono);font-size:var(--font-size-xs);min-height:180px}input[type=range]{-webkit-appearance:none;-moz-appearance:none;appearance:none;height:4px;background:var(--color-bg-tertiary);border-radius:var(--radius-full);outline:none;cursor:pointer}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:16px;height:16px;border-radius:50%;background:var(--color-primary);border:2px solid var(--color-surface);box-shadow:var(--shadow-sm);cursor:pointer;transition:transform var(--transition-fast),box-shadow var(--transition-fast)}input[type=range]::-webkit-slider-thumb:hover{transform:scale(1.15);box-shadow:var(--shadow-md)}input[type=range]::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:var(--color-primary);border:2px solid var(--color-surface);box-shadow:var(--shadow-sm);cursor:pointer}input[type=checkbox]{width:16px;height:16px;accent-color:var(--color-primary);cursor:pointer;border-radius:var(--radius-xs)}@media(max-width:900px){.main-content{grid-template-columns:1fr}.log-panel{max-height:300px}}.preview-doc{display:flex;flex-direction:column;gap:2px}.preview-section{padding:4px 0;border-bottom:1px solid #ccc}.preview-summary-status{border-bottom:1px solid #ccc}.preview-block{margin:0 0 3px}.preview-title{font-size:1.08em;font-weight:700;color:#000}.preview-para{color:#1a1a1a}.preview-item{position:relative;padding-left:1.1em}.preview-item:before{content:"•";position:absolute;left:0;color:#000}.preview-note{padding:2px 0;font-style:italic;font-size:.92em;color:#333}.preview-warning{padding:2px 0;font-weight:700;color:#1a1a1a}.preview-inline,.preview-text{display:inline}.preview-abb{font-weight:700}.preview-chip{display:inline;font-weight:700}.preview-chip--tech{color:#1a1a1a}.preview-measure{font-family:Arial,Helvetica Neue,sans-serif;font-weight:600;color:#1a1a1a}.preview-if-installed{opacity:.8;font-style:italic}.preview-emph--bold{font-weight:700}.preview-emph--italic{font-style:italic}.preview-emph--underline{text-decoration:underline}.preview-emph--overline{text-decoration:overline}.preview-table{width:100%;border-collapse:collapse;margin:4px 0;font-size:.92em}.preview-table td,.preview-table th{border:1px solid #000;padding:4px 8px;vertical-align:top;color:#1a1a1a}.preview-table thead td,.preview-table thead th{font-weight:700;color:#000;text-align:center}.preview-entry--center{text-align:center}.preview-entry--right{text-align:right}.preview-entry--left{text-align:left}.preview-table .preview-block{margin:0}.preview-linked{outline:2px solid rgba(99,102,241,.4);background:#6366f10d}.preview-text--editable{cursor:text;transition:background-color .15s ease,box-shadow .15s ease}.preview-text--editable:hover{background-color:#3b82f614}.preview-text--editable:focus{outline:none;background-color:#3b82f61f;box-shadow:0 0 0 1px #3b82f680}.preview-tag-chip{display:inline-flex;align-items:center;max-width:180px;height:20px;margin:0 3px;padding:0 7px;border:1px solid #c9ced6;border-radius:3px;background:linear-gradient(180deg,#f7f8fa,#e7ebf0);color:#4b5563;font-family:var(--font-family-mono);font-size:.85em;font-weight:600;line-height:1.4;white-space:nowrap;vertical-align:baseline;-webkit-user-select:none;user-select:none;cursor:default;box-shadow:inset 0 1px #fffc}.preview-tag-chip--empty{background:linear-gradient(180deg,#fafafa,#eceff3);color:#64748b}.preview--hide-tags .preview-tag-chip{display:none}.preview-emph-shell{display:inline}.preview-table-shell{display:block;margin:var(--spacing-md) 0}.preview-text--highlight{background-color:#facc1540;outline:2px solid rgba(250,204,21,.6);transition:background-color .15s ease,outline .15s ease}.preview-block.preview-text--highlight{outline:none;border-left:3px solid rgba(250,204,21,.8);padding-left:8px;background-color:#facc151f}.xml-highlight{background-color:#facc154d;border-radius:2px;padding:1px 0}.xml-tag{color:#7c3aed;font-weight:600}.xml-inline-token{display:inline-flex;align-items:baseline;margin:0 2px;padding:0 4px;border-radius:999px;background:linear-gradient(180deg,#7c3aed29,#6d28d91a);box-shadow:inset 0 0 0 1px #7c3aed1f}.xml-tag--inline{display:inline-block;padding:1px 2px;color:#6d28d9;font-weight:700}.xml-punct--inline{color:#6d28d9b8}.xml-attr{color:#d97706}.xml-val{color:#16a34a}.xml-punct{color:var(--color-text-tertiary)}.xml-comment,.xml-decl{color:#6b7280;font-style:italic}.dark .xml-tag,[data-theme=dark] .xml-tag{color:#c084fc}.dark .xml-inline-token,[data-theme=dark] .xml-inline-token{background:linear-gradient(180deg,#c084fc2e,#a855f71f);box-shadow:inset 0 0 0 1px #c084fc2e}.dark .xml-tag--inline,[data-theme=dark] .xml-tag--inline{color:#d8b4fe}.dark .xml-punct--inline,[data-theme=dark] .xml-punct--inline{color:#d8b4fed1}.dark .xml-attr,[data-theme=dark] .xml-attr{color:#fbbf24}.dark .xml-val,[data-theme=dark] .xml-val{color:#4ade80}.dark .xml-comment,.dark .xml-decl,[data-theme=dark] .xml-comment,[data-theme=dark] .xml-decl{color:#9ca3af}.dark .preview-tag-chip,[data-theme=dark] .preview-tag-chip{border-color:#475569;background:linear-gradient(180deg,#334155,#1f2937);color:#e5e7eb;box-shadow:inset 0 1px #ffffff14}.dark .preview-tag-chip--empty,[data-theme=dark] .preview-tag-chip--empty{color:#cbd5e1}.qrh-title-bar{position:relative;background:silver;text-align:center;padding:6px 30px;margin-bottom:6px;border:1px solid #999}.qrh-title-bar:before,.qrh-title-bar:after{content:"";position:absolute;top:0;bottom:0;width:14px;background:#e30613}.qrh-title-bar:before{left:0}.qrh-title-bar:after{right:0}.qrh-title-bar .preview-title{font-size:14px;font-weight:700;text-transform:uppercase;color:#000;margin:0}.qrh-procbody{display:flex;flex-direction:column;gap:0}.qrh-condition>.qrh-procbody{margin-left:18px}.qrh-memory-group{border:1.5px solid #000;margin:2px 0}.qrh-action{padding:1px 4px}.qrh-cr{display:flex;align-items:baseline}.qrh-challenge{white-space:nowrap;flex-shrink:0}.qrh-dots{flex:1;overflow:hidden;white-space:nowrap;min-width:8px;margin:0 1px;line-height:1;color:#333}.qrh-dots:after{content:"..............................................................................................................................";letter-spacing:.05em}.qrh-response{white-space:nowrap;flex-shrink:0}.qrh-condition{margin:2px 0}.qrh-intro{font-weight:700;margin:3px 0 1px}.qrh-condition>.qrh-intro:before{content:"● "}.qrh-block{padding:1px 4px}.qrh-land{padding:4px 8px;font-weight:700;text-transform:uppercase;background:#fef3c7;border:2px solid #f59e0b;text-align:center;margin:4px 0}.qrh-cr.preview-text--highlight,.qrh-action.preview-text--highlight,.qrh-block.preview-text--highlight,.qrh-condition.preview-text--highlight,.qrh-intro.preview-text--highlight{background-color:#facc152e;outline:2px solid rgba(250,204,21,.55)}.dark .qrh-title-bar,[data-theme=dark] .qrh-title-bar{background:#3a3a3a;border-color:#555}.dark .qrh-title-bar .preview-title,[data-theme=dark] .qrh-title-bar .preview-title{color:#fafafa}.dark .qrh-memory-group,[data-theme=dark] .qrh-memory-group{border-color:#71717a}.dark .qrh-dots:after,[data-theme=dark] .qrh-dots:after{color:#71717a}.dark .qrh-land,[data-theme=dark] .qrh-land{background:#f59e0b26;border-color:#f59e0b}.dark .preview-table td,.dark .preview-table th,[data-theme=dark] .preview-table td,[data-theme=dark] .preview-table th{border-color:#555;color:#e5e5e5}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--color-primary: #818cf8;--color-primary-hover: #6366f1;--color-primary-active: #4f46e5;--color-primary-light: rgba(129, 140, 248, .12);--color-primary-subtle: rgba(129, 140, 248, .06);--color-primary-foreground: #ffffff;--color-success: #4ade80;--color-success-hover: #22c55e;--color-success-light: rgba(34, 197, 94, .12);--color-success-subtle: rgba(34, 197, 94, .06);--color-warning: #fbbf24;--color-warning-hover: #f59e0b;--color-warning-light: rgba(245, 158, 11, .12);--color-warning-subtle: rgba(245, 158, 11, .06);--color-error: #f87171;--color-error-hover: #ef4444;--color-error-light: rgba(239, 68, 68, .12);--color-error-subtle: rgba(239, 68, 68, .06);--color-info: #60a5fa;--color-info-light: rgba(59, 130, 246, .12);--color-info-subtle: rgba(59, 130, 246, .06);--color-bg: #09090b;--color-bg-secondary: #111113;--color-bg-tertiary: #1a1a1f;--color-bg-elevated: #18181b;--color-surface: #141416;--color-surface-hover: #1c1c20;--color-surface-active: #222226;--color-border: #27272a;--color-border-light: #1e1e22;--color-border-hover: #3f3f46;--color-border-focus: var(--color-primary);--color-text: #fafafa;--color-text-secondary: #a1a1aa;--color-text-tertiary: #71717a;--color-text-quaternary: #3f3f46;--color-text-inverse: #09090b;--shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, .4);--shadow-sm: 0 1px 3px 0 rgba(0, 0, 0, .5), 0 1px 2px -1px rgba(0, 0, 0, .4);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .5), 0 2px 4px -2px rgba(0, 0, 0, .4);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .5), 0 4px 6px -4px rgba(0, 0, 0, .4);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .6), 0 8px 10px -6px rgba(0, 0, 0, .4);--shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, .7);--shadow-card: 0 0 0 1px rgba(255, 255, 255, .04), 0 2px 4px rgba(0, 0, 0, .3), 0 12px 24px rgba(0, 0, 0, .2);--shadow-dropdown: 0 0 0 1px rgba(255, 255, 255, .06), 0 4px 12px rgba(0, 0, 0, .4), 0 16px 32px rgba(0, 0, 0, .3);--shadow-modal: 0 0 0 1px rgba(255, 255, 255, .06), 0 16px 48px rgba(0, 0, 0, .5), 0 32px 64px rgba(0, 0, 0, .4);--shadow-focus: 0 0 0 2px var(--color-bg), 0 0 0 4px var(--color-primary);--overlay-bg: rgba(0, 0, 0, .6)}:root:not([data-theme=light]) .xml-tag{color:#c084fc}:root:not([data-theme=light]) .xml-attr{color:#fbbf24}:root:not([data-theme=light]) .xml-val{color:#4ade80}:root:not([data-theme=light]) .xml-comment,:root:not([data-theme=light]) .xml-decl{color:#9ca3af}:root:not([data-theme=light]) .qrh-title-bar{background:#3a3a3a;border-color:#555}:root:not([data-theme=light]) .qrh-title-bar .preview-title{color:#fafafa}:root:not([data-theme=light]) .qrh-memory-group{border-color:#71717a}:root:not([data-theme=light]) .qrh-dots:after{color:#71717a}:root:not([data-theme=light]) .qrh-land{background:#f59e0b26;border-color:#f59e0b}:root:not([data-theme=light]) .preview-table td,:root:not([data-theme=light]) .preview-table th{border-color:#555;color:#e5e5e5}}
