:root{--color-bg-global: #09090b;--color-bg-card: #18181b;--color-bg-secondary: #27272a;--color-bg-hover: #3f3f46;--color-bg-elevated: #1e1e22;--color-text-primary: #ffffff;--color-text-primary-90: rgba(255, 255, 255, .9);--color-text-secondary: #a1a1aa;--color-text-muted: #71717a;--color-text-disabled: #52525b;--color-brand-500: #84cc16;--color-brand-400: #a3e635;--color-brand-600: #65a30d;--color-brand-700: #4d7c0f;--color-brand-bg: rgba(132, 204, 22, .1);--color-brand-border: rgba(132, 204, 22, .25);--color-danger-500: #ef4444;--color-danger-400: #f87171;--color-danger-600: #dc2626;--color-danger-bg: rgba(239, 68, 68, .1);--color-danger-border: rgba(239, 68, 68, .25);--color-warning-500: #f59e0b;--color-warning-400: #fbbf24;--color-warning-bg: rgba(245, 158, 11, .1);--color-warning-border: rgba(245, 158, 11, .25);--color-info-500: #3b82f6;--color-info-bg: rgba(59, 130, 246, .1);--color-info-border: rgba(59, 130, 246, .25);--color-border: rgba(255, 255, 255, .05);--color-border-hover: rgba(255, 255, 255, .1);--color-border-active: rgba(255, 255, 255, .15);--font-sans: "Inter", system-ui, -apple-system, sans-serif;--font-display: "Space Grotesk", "Inter", sans-serif;--font-mono: "JetBrains Mono", "Fira Code", 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;--font-light: 300;--font-regular: 400;--font-medium: 500;--font-semibold: 600;--font-bold: 700;--leading-tight: 1.25;--leading-normal: 1.5;--leading-relaxed: 1.75;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--space-16: 4rem;--space-20: 5rem;--radius-sm: .375rem;--radius-md: .5rem;--radius-lg: .75rem;--radius-xl: 1rem;--radius-2xl: 1.25rem;--radius-full: 9999px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .3);--shadow-md: 0 4px 6px rgba(0, 0, 0, .4);--shadow-lg: 0 10px 25px rgba(0, 0, 0, .5);--shadow-glow-brand: 0 0 20px rgba(132, 204, 22, .15);--shadow-glow-danger: 0 0 20px rgba(239, 68, 68, .15);--transition-fast: .15s ease;--transition-base: .25s ease;--transition-slow: .4s ease;--max-width-sm: 28rem;--max-width-md: 36rem;--max-width-lg: 42rem;--max-width-xl: 48rem;--max-width-2xl: 56rem;--z-dropdown: 50;--z-sticky: 100;--z-overlay: 200;--z-modal: 300;--z-toast: 400}[data-theme=light]{--color-bg-global: #fafafa;--color-bg-card: #ffffff;--color-bg-secondary: #f4f4f5;--color-bg-hover: #e4e4e7;--color-bg-elevated: #ffffff;--color-text-primary: #09090b;--color-text-primary-90: rgba(9, 9, 11, .9);--color-text-secondary: #52525b;--color-text-muted: #71717a;--color-text-disabled: #a1a1aa;--color-border: rgba(0, 0, 0, .08);--color-border-hover: rgba(0, 0, 0, .12);--color-border-active: rgba(0, 0, 0, .18);--color-brand-bg: rgba(132, 204, 22, .08);--color-danger-bg: rgba(239, 68, 68, .08);--color-warning-bg: rgba(245, 158, 11, .08);--color-info-bg: rgba(59, 130, 246, .08);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .05);--shadow-md: 0 4px 6px rgba(0, 0, 0, .07);--shadow-lg: 0 10px 25px rgba(0, 0, 0, .1);--shadow-glow-brand: 0 0 20px rgba(132, 204, 22, .1);--shadow-glow-danger: 0 0 20px rgba(239, 68, 68, .1)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-sans);font-size:var(--text-base);font-weight:var(--font-regular);line-height:var(--leading-normal);color:var(--color-text-primary);background-color:var(--color-bg-global);min-height:100vh;transition:background-color var(--transition-slow),color var(--transition-slow)}h1,h2,h3,h4{font-family:var(--font-display);font-weight:var(--font-bold);line-height:var(--leading-tight)}h1{font-size:var(--text-4xl)}h2{font-size:var(--text-3xl)}h3{font-size:var(--text-2xl)}h4{font-size:var(--text-xl)}p{color:var(--color-text-secondary);line-height:var(--leading-relaxed)}a{color:var(--color-brand-500);text-decoration:none;transition:color var(--transition-fast)}a:hover{color:var(--color-brand-400)}button{font-family:var(--font-sans);cursor:pointer;border:none;background:none;font-size:inherit;color:inherit}input,textarea,select{font-family:var(--font-sans);font-size:var(--text-sm);color:var(--color-text-primary);background-color:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-3) var(--space-4);outline:none;transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}input:focus,textarea:focus,select:focus{border-color:var(--color-brand-500);box-shadow:0 0 0 3px var(--color-brand-bg)}textarea{resize:vertical;min-height:120px}::selection{background-color:var(--color-brand-500);color:var(--color-bg-global)}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background-color:var(--color-bg-hover);border-radius:var(--radius-full)}#app{max-width:var(--max-width-2xl);margin:0 auto;padding:var(--space-8) var(--space-6);min-height:100vh;display:flex;flex-direction:column}.app-header{display:flex;align-items:center;justify-content:space-between;padding-bottom:var(--space-8);border-bottom:1px solid var(--color-border);margin-bottom:var(--space-8)}.app-header__brand{display:flex;align-items:center;gap:var(--space-3)}.app-header__logo{width:36px;height:36px;background:linear-gradient(135deg,var(--color-brand-500),var(--color-brand-400));border-radius:var(--radius-lg);display:flex;align-items:center;justify-content:center}.app-header__logo svg{width:20px;height:20px;color:var(--color-bg-global)}.app-header__title{font-family:var(--font-display);font-size:var(--text-xl);font-weight:var(--font-bold)}.app-header__subtitle{font-size:var(--text-xs);color:var(--color-text-muted);font-weight:var(--font-medium);letter-spacing:.05em;text-transform:uppercase}.app-header__actions{display:flex;align-items:center;gap:var(--space-2)}.step-indicator{display:flex;align-items:center;justify-content:center;gap:var(--space-2);margin-bottom:var(--space-8)}.step-indicator__step{display:flex;align-items:center;gap:var(--space-2)}.step-indicator__dot{width:32px;height:32px;border-radius:var(--radius-full);display:flex;align-items:center;justify-content:center;font-size:var(--text-sm);font-weight:var(--font-semibold);border:2px solid var(--color-border);color:var(--color-text-muted);background:transparent;transition:all var(--transition-base)}.step-indicator__dot--active{border-color:var(--color-brand-500);color:var(--color-brand-500);background:var(--color-brand-bg)}.step-indicator__dot--completed{border-color:var(--color-brand-500);background:var(--color-brand-500);color:var(--color-bg-global)}.step-indicator__label{font-size:var(--text-xs);color:var(--color-text-muted);font-weight:var(--font-medium)}.step-indicator__label--active{color:var(--color-text-primary)}.step-indicator__connector{width:40px;height:2px;background:var(--color-border);border-radius:var(--radius-full)}.step-indicator__connector--completed{background:var(--color-brand-500)}.content-area{flex:1}.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}.card{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-2xl);padding:var(--space-6);transition:border-color var(--transition-fast)}.card--interactive:hover{border-color:var(--color-border-hover)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-3) var(--space-5);font-size:var(--text-sm);font-weight:var(--font-semibold);border-radius:var(--radius-lg);transition:all var(--transition-fast);white-space:nowrap;user-select:none;position:relative;overflow:hidden}.btn:disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.btn svg{width:18px;height:18px;flex-shrink:0}.btn--primary{background:var(--color-brand-500);color:var(--color-bg-global)}.btn--primary:hover{background:var(--color-brand-400);box-shadow:var(--shadow-glow-brand)}.btn--danger{background:var(--color-danger-500);color:#fff}.btn--danger:hover{background:var(--color-danger-400);box-shadow:var(--shadow-glow-danger)}.btn--ghost{background:transparent;color:var(--color-text-secondary);border:1px solid var(--color-border)}.btn--ghost:hover{background:var(--color-bg-secondary);color:var(--color-text-primary);border-color:var(--color-border-hover)}.btn--secondary{background:var(--color-bg-secondary);color:var(--color-text-primary);border:1px solid var(--color-border)}.btn--secondary:hover{background:var(--color-bg-hover);border-color:var(--color-border-hover)}.btn--sm{padding:var(--space-2) var(--space-3);font-size:var(--text-xs)}.btn--lg{padding:var(--space-4) var(--space-8);font-size:var(--text-base);border-radius:var(--radius-xl)}.btn--full{width:100%}.btn--icon{padding:var(--space-2);border-radius:var(--radius-md)}.modal-overlay{position:fixed;inset:0;background:#000000b3;backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:var(--z-modal);padding:var(--space-6)}.modal{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-2xl);padding:var(--space-8);max-width:480px;width:100%;text-align:center}.modal__icon{width:56px;height:56px;border-radius:var(--radius-full);display:flex;align-items:center;justify-content:center;margin:0 auto var(--space-4)}.modal__icon--danger{background:var(--color-danger-bg);color:var(--color-danger-500)}.modal__icon--warning{background:var(--color-warning-bg);color:var(--color-warning-500)}.modal__icon svg{width:28px;height:28px}.modal__title{font-family:var(--font-display);font-size:var(--text-xl);font-weight:var(--font-bold);margin-bottom:var(--space-2)}.modal__message{font-size:var(--text-sm);color:var(--color-text-secondary);margin-bottom:var(--space-6);line-height:var(--leading-relaxed)}.modal__actions{display:flex;gap:var(--space-3);justify-content:center}.toast-container{position:fixed;top:var(--space-6);right:var(--space-6);z-index:var(--z-toast);display:flex;flex-direction:column;gap:var(--space-3);pointer-events:none}.toast{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-xl);padding:var(--space-4) var(--space-5);display:flex;align-items:center;gap:var(--space-3);min-width:300px;max-width:420px;box-shadow:var(--shadow-lg);pointer-events:auto}.toast__icon{flex-shrink:0;width:20px;height:20px}.toast--success .toast__icon{color:var(--color-brand-500)}.toast--error .toast__icon{color:var(--color-danger-500)}.toast--warning .toast__icon{color:var(--color-warning-500)}.toast--info .toast__icon{color:var(--color-info-500)}.toast__text{font-size:var(--text-sm);color:var(--color-text-primary);flex:1}.toast__close{flex-shrink:0;color:var(--color-text-muted);cursor:pointer;padding:var(--space-1);border-radius:var(--radius-sm);transition:color var(--transition-fast)}.toast__close:hover{color:var(--color-text-primary)}.toast__close svg{width:16px;height:16px}.progress-bar{width:100%;height:8px;background:var(--color-bg-secondary);border-radius:var(--radius-full);overflow:hidden}.progress-bar__fill{height:100%;background:linear-gradient(90deg,var(--color-brand-600),var(--color-brand-500),var(--color-brand-400));border-radius:var(--radius-full);transition:width var(--transition-fast);background-size:200% 100%}.progress-bar__label{font-size:var(--text-sm);font-weight:var(--font-semibold);color:var(--color-text-primary);margin-top:var(--space-2);text-align:center}.drop-zone{border:2px dashed var(--color-border-hover);border-radius:var(--radius-2xl);padding:var(--space-10) var(--space-8);text-align:center;cursor:pointer;transition:all var(--transition-fast);position:relative}.drop-zone:hover,.drop-zone--active{border-color:var(--color-brand-500);background:var(--color-brand-bg)}.drop-zone__icon{width:48px;height:48px;margin:0 auto var(--space-4);color:var(--color-text-muted);transition:color var(--transition-fast)}.drop-zone:hover .drop-zone__icon,.drop-zone--active .drop-zone__icon{color:var(--color-brand-500)}.drop-zone__title{font-size:var(--text-base);font-weight:var(--font-semibold);color:var(--color-text-primary);margin-bottom:var(--space-1)}.drop-zone__subtitle{font-size:var(--text-sm);color:var(--color-text-muted)}.drop-zone input[type=file]{position:absolute;inset:0;opacity:0;cursor:pointer}.search-input{position:relative}.search-input__icon{position:absolute;left:var(--space-3);top:50%;transform:translateY(-50%);color:var(--color-text-muted);width:18px;height:18px;pointer-events:none}.search-input input{width:100%;padding-left:var(--space-10)}.file-table{width:100%;border-collapse:collapse}.file-table__header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);font-size:var(--text-xs);font-weight:var(--font-semibold);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--color-border)}.file-table__body{max-height:320px;overflow-y:auto}.file-table__row{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);font-size:var(--text-sm);border-bottom:1px solid var(--color-border);transition:background var(--transition-fast)}.file-table__row:hover{background:var(--color-bg-secondary)}.file-table__row:last-child{border-bottom:none}.file-table__status{width:20px;height:20px;flex-shrink:0}.file-table__status--matched{color:var(--color-brand-500)}.file-table__status--notfound{color:var(--color-warning-500)}.file-table__status--deleted{color:var(--color-brand-500)}.file-table__status--failed{color:var(--color-danger-500)}.file-table__name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--font-mono);font-size:var(--text-xs)}.badge{display:inline-flex;align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-3);font-size:var(--text-xs);font-weight:var(--font-semibold);border-radius:var(--radius-full)}.badge--brand{background:var(--color-brand-bg);color:var(--color-brand-500);border:1px solid var(--color-brand-border)}.badge--danger{background:var(--color-danger-bg);color:var(--color-danger-500);border:1px solid var(--color-danger-border)}.badge--warning{background:var(--color-warning-bg);color:var(--color-warning-500);border:1px solid var(--color-warning-border)}.badge--info{background:var(--color-info-bg);color:var(--color-info-500);border:1px solid var(--color-info-border)}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-16) var(--space-8);text-align:center}.empty-state__icon{width:64px;height:64px;color:var(--color-text-disabled);margin-bottom:var(--space-4)}.empty-state__title{font-size:var(--text-lg);font-weight:var(--font-semibold);color:var(--color-text-secondary);margin-bottom:var(--space-2)}.empty-state__desc{font-size:var(--text-sm);color:var(--color-text-muted);max-width:320px}.stat-card{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-xl);padding:var(--space-5);text-align:center}.stat-card__value{font-family:var(--font-display);font-size:var(--text-3xl);font-weight:var(--font-bold)}.stat-card__label{font-size:var(--text-xs);color:var(--color-text-muted);margin-top:var(--space-1);text-transform:uppercase;letter-spacing:.05em}.textarea-wrapper{position:relative}.textarea-wrapper textarea{width:100%;min-height:200px;font-family:var(--font-mono);font-size:var(--text-xs);line-height:1.8;padding:var(--space-4)}.textarea-wrapper__count{position:absolute;bottom:var(--space-3);right:var(--space-3);font-size:var(--text-xs);color:var(--color-text-muted);background:var(--color-bg-card);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm)}.theme-toggle{width:36px;height:36px;border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;color:var(--color-text-secondary);border:1px solid var(--color-border);transition:all var(--transition-fast);background:transparent}.theme-toggle:hover{background:var(--color-bg-secondary);color:var(--color-text-primary)}.theme-toggle svg{width:18px;height:18px}.tab-group{display:flex;gap:var(--space-1);background:var(--color-bg-secondary);border-radius:var(--radius-lg);padding:var(--space-1)}.tab-btn{flex:1;padding:var(--space-2) var(--space-4);font-size:var(--text-sm);font-weight:var(--font-medium);color:var(--color-text-muted);border-radius:var(--radius-md);transition:all var(--transition-fast);text-align:center}.tab-btn--active{background:var(--color-bg-card);color:var(--color-text-primary);box-shadow:var(--shadow-sm)}.tab-btn:hover:not(.tab-btn--active){color:var(--color-text-secondary)}.divider{width:100%;height:1px;background:var(--color-border);margin:var(--space-6) 0}.toggle-row{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);background:var(--color-bg-secondary);border-radius:var(--radius-lg);border:1px solid var(--color-border)}.toggle-row__label{font-size:var(--text-sm);color:var(--color-text-secondary)}.toggle-switch{position:relative;width:40px;height:22px;background:var(--color-bg-hover);border-radius:var(--radius-full);cursor:pointer;transition:background var(--transition-fast)}.toggle-switch--on{background:var(--color-brand-500)}.toggle-switch__thumb{position:absolute;top:2px;left:2px;width:18px;height:18px;background:#fff;border-radius:var(--radius-full);transition:transform var(--transition-fast)}.toggle-switch--on .toggle-switch__thumb{transform:translate(18px)}.log-entry{display:flex;gap:var(--space-3);padding:var(--space-2) 0;font-size:var(--text-xs);font-family:var(--font-mono);border-bottom:1px solid var(--color-border)}.log-entry__time{color:var(--color-text-muted);flex-shrink:0;white-space:nowrap}.log-entry__level{font-weight:var(--font-semibold);flex-shrink:0;width:50px}.log-entry__level--info{color:var(--color-info-500)}.log-entry__level--warn{color:var(--color-warning-500)}.log-entry__level--error{color:var(--color-danger-500)}.log-entry__level--action{color:var(--color-brand-500)}.log-entry__message{color:var(--color-text-secondary);word-break:break-all}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInScale{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes slideInRight{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}@keyframes slideOutRight{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(20px)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.6}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes progressStripes{0%{background-position:0 0}to{background-position:40px 0}}.anim-fade-in{animation:fadeIn var(--transition-base) ease forwards}.anim-fade-in-scale{animation:fadeInScale var(--transition-base) ease forwards}.anim-slide-in{animation:slideInRight var(--transition-base) ease forwards}.anim-slide-out{animation:slideOutRight var(--transition-fast) ease forwards}.anim-pulse{animation:pulse 2s ease infinite}.anim-spin{animation:spin 1s linear infinite}.stagger-children>*{opacity:0;animation:fadeIn var(--transition-base) ease forwards}.stagger-children>*:nth-child(1){animation-delay:0ms}.stagger-children>*:nth-child(2){animation-delay:60ms}.stagger-children>*:nth-child(3){animation-delay:.12s}.stagger-children>*:nth-child(4){animation-delay:.18s}.stagger-children>*:nth-child(5){animation-delay:.24s}.stagger-children>*:nth-child(6){animation-delay:.3s}.progress-bar__fill--active{background-image:linear-gradient(45deg,rgba(255,255,255,.1) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.1) 50%,rgba(255,255,255,.1) 75%,transparent 75%);background-size:40px 40px;animation:progressStripes 1s linear infinite}.skeleton{background:linear-gradient(90deg,var(--color-bg-secondary) 25%,var(--color-bg-hover) 50%,var(--color-bg-secondary) 75%);background-size:200% 100%;animation:shimmer 1.5s ease infinite;border-radius:var(--radius-md)}.spinner{width:24px;height:24px;border:3px solid var(--color-border);border-top-color:var(--color-brand-500);border-radius:var(--radius-full);animation:spin .8s linear infinite}.spinner--sm{width:16px;height:16px;border-width:2px}.spinner--lg{width:36px;height:36px;border-width:4px}
