:root{--bg-primary: #0a0e17;--bg-secondary: #111827;--bg-card: rgba(17, 24, 39, .7);--bg-card-hover: rgba(30, 41, 59, .8);--bg-glass: rgba(255, 255, 255, .03);--border-glass: rgba(255, 255, 255, .08);--border-active: rgba(99, 102, 241, .5);--text-primary: #f1f5f9;--text-secondary: #94a3b8;--text-muted: #64748b;--accent-primary: #818cf8;--accent-secondary: #6366f1;--accent-glow: rgba(99, 102, 241, .25);--success: #34d399;--success-bg: rgba(52, 211, 153, .1);--warning: #fbbf24;--warning-bg: rgba(251, 191, 36, .1);--error: #f87171;--error-bg: rgba(248, 113, 113, .1);--row-edited-bg: rgba(99, 102, 241, .16);--row-edited-bg-hover: rgba(99, 102, 241, .26);--row-edited-accent: #a5b4fc;--table-row-hover: rgba(99, 102, 241, .14);--gradient-primary: linear-gradient(135deg, #6366f1 0%, #8b5cf6 50%, #a78bfa 100%);--gradient-surface: linear-gradient(180deg, rgba(99, 102, 241, .05) 0%, transparent 100%);--font-sans: "Inter", -apple-system, BlinkMacSystemFont, sans-serif;--font-mono: "JetBrains Mono", "Fira Code", monospace;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 24px;--ease-out: cubic-bezier(.16, 1, .3, 1);--transition-fast: .15s var(--ease-out);--transition-normal: .25s var(--ease-out);--transition-slow: .4s var(--ease-out)}*,*: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);background:var(--bg-primary);color:var(--text-primary);min-height:100vh;line-height:1.6}#root{min-height:100vh;display:flex;flex-direction:column}.app{min-height:100vh;position:relative;overflow:hidden}.app:before{content:"";position:fixed;top:-50%;left:-50%;width:200%;height:200%;background:radial-gradient(ellipse at 30% 20%,rgba(99,102,241,.08) 0%,transparent 50%),radial-gradient(ellipse at 70% 80%,rgba(139,92,246,.06) 0%,transparent 50%);pointer-events:none;z-index:0}.app-header{padding:24px 32px;display:flex;align-items:center;gap:16px;position:relative;z-index:1;border-bottom:1px solid var(--border-glass)}.app-logo{width:40px;height:40px;border-radius:var(--radius-sm);background:var(--gradient-primary);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:18px;color:#fff;flex-shrink:0}.app-title{font-size:20px;font-weight:700;letter-spacing:-.02em}.app-subtitle{font-size:13px;color:var(--text-muted);margin-left:auto}.app-content{flex:1;display:flex;align-items:center;justify-content:center;padding:32px;position:relative;z-index:1}.card{background:var(--bg-card);border:1px solid var(--border-glass);border-radius:var(--radius-lg);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);transition:border-color var(--transition-normal),box-shadow var(--transition-normal)}.card:hover{border-color:var(--border-active)}.card-lg{padding:48px;max-width:640px;width:100%}.upload-zone{border:2px dashed var(--border-glass);border-radius:var(--radius-lg);padding:64px 48px;text-align:center;cursor:pointer;transition:all var(--transition-normal);position:relative;overflow:hidden}.upload-zone:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:var(--gradient-surface);opacity:0;transition:opacity var(--transition-normal)}.upload-zone:hover,.upload-zone.drag-over{border-color:var(--accent-primary);background:#6366f10a}.upload-zone:hover:before,.upload-zone.drag-over:before{opacity:1}.upload-icon{width:72px;height:72px;margin:0 auto 24px;border-radius:50%;background:#6366f11a;display:flex;align-items:center;justify-content:center;color:var(--accent-primary);transition:transform var(--transition-normal),background var(--transition-normal)}.upload-icon svg{display:block}.upload-zone:hover .upload-icon{transform:scale(1.08) translateY(-4px);background:#6366f12e}.upload-title{font-size:18px;font-weight:600;margin-bottom:8px}.upload-hint{font-size:14px;color:var(--text-muted)}.upload-input{display:none}.file-selected{margin-top:24px;padding:16px 20px;background:var(--bg-glass);border:1px solid var(--border-glass);border-radius:var(--radius-md);display:flex;align-items:center;gap:12px}.file-icon{display:flex;align-items:center;justify-content:center;color:var(--accent-primary);flex-shrink:0}.file-icon svg{display:block}.file-info{flex:1}.file-name{font-size:14px;font-weight:500;font-family:var(--font-mono);color:var(--text-primary)}.file-size{font-size:12px;color:var(--text-muted)}.file-remove{background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:18px;padding:4px;transition:color var(--transition-fast)}.file-remove:hover{color:var(--error)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:12px 24px;border:none;border-radius:var(--radius-md);font-family:var(--font-sans);font-size:14px;font-weight:600;cursor:pointer;transition:all var(--transition-fast);position:relative;overflow:hidden}.btn:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:#fff0;transition:background var(--transition-fast)}.btn:hover:after{background:#ffffff29}.btn:active{transform:scale(.98)}.btn-primary{background:var(--gradient-primary);color:#fff;box-shadow:0 4px 16px var(--accent-glow)}.btn-primary:hover{box-shadow:0 8px 28px #6366f173;filter:brightness(1.06)}.btn-primary:hover:after{background:#ffffff1f}.btn-primary:disabled{opacity:.5;cursor:not-allowed;box-shadow:none}.btn-secondary{background:var(--bg-glass);border:1px solid var(--border-glass);color:var(--text-primary)}.btn-secondary:hover{border-color:#818cf880;background:#ffffff12}.btn-secondary:hover:after{background:#ffffff0f}.btn-success{background:linear-gradient(135deg,#059669,#10b981);color:#fff;box-shadow:0 4px 16px #10b98140}.btn-success:hover{box-shadow:0 8px 28px #10b98173;filter:brightness(1.07)}.btn-success:hover:after{background:#ffffff24}.btn:disabled,.btn[disabled]{cursor:not-allowed}.btn:disabled:hover:after,.btn[disabled]:hover:after{background:transparent!important}.btn:disabled:hover{filter:none}.btn-secondary:disabled:hover,.btn-secondary[disabled]:hover{border-color:var(--border-glass);background:var(--bg-glass)}.btn-lg{padding:16px 32px;font-size:16px;border-radius:var(--radius-md);width:100%;margin-top:24px}.progress-container{max-width:720px;width:100%}.progress-header{margin-bottom:32px}.progress-title{font-size:24px;font-weight:700;margin-bottom:4px}.progress-file{font-size:13px;color:var(--text-muted);font-family:var(--font-mono)}.progress-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:32px}.stat-card{padding:20px;background:var(--bg-card);border:1px solid var(--border-glass);border-radius:var(--radius-md);text-align:center}.stat-value{font-size:28px;font-weight:800;letter-spacing:-.02em;background:var(--gradient-primary);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.stat-label{font-size:12px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em;margin-top:4px}.progress-bar-wrapper{margin-bottom:24px}.progress-bar-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.progress-percent{font-size:14px;font-weight:600;color:var(--accent-primary)}.progress-count{font-size:13px;color:var(--text-muted)}.progress-bar{height:8px;background:#6366f11a;border-radius:4px;overflow:hidden}.progress-bar-fill{height:100%;background:var(--gradient-primary);border-radius:4px;transition:width var(--transition-slow);position:relative}.progress-bar-fill:after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.3),transparent);animation:shimmer 2s infinite}@keyframes shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}.page-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(44px,1fr));gap:6px}.page-dot{aspect-ratio:1;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;font-family:var(--font-mono);transition:all var(--transition-fast);border:1px solid transparent}.page-dot.pending{background:#64748b26;color:var(--text-muted);border-color:var(--border-glass)}.page-dot.processing{background:#6366f126;color:var(--accent-primary);border-color:var(--accent-primary);animation:pulse 1.5s ease-in-out infinite}.page-dot.completed{background:var(--success-bg);color:var(--success);border-color:#34d3994d}.page-dot.failed{background:var(--error-bg);color:var(--error);border-color:#f871714d}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.results-container{max-width:960px;width:100%}.results-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:32px;flex-wrap:wrap;gap:16px}.results-title{font-size:24px;font-weight:700}.results-actions{display:flex;gap:12px}.results-toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 16px;margin-bottom:12px;font-size:13px;color:var(--text-secondary)}.results-filter{display:flex;align-items:center;gap:10px}.results-filter label{font-size:12px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em}.results-filter select{background:var(--bg-secondary);border:1px solid var(--border-glass);border-radius:var(--radius-sm);color:var(--text-primary);font-family:var(--font-sans);font-size:13px;padding:8px 12px;min-width:200px;cursor:pointer;transition:border-color var(--transition-fast)}.results-filter select:hover,.results-filter select:focus{border-color:var(--border-active);outline:none}.results-toolbar--extended{flex-direction:column;align-items:stretch;gap:10px}.results-toolbar-row{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px 16px}.results-columns-picker{position:relative}.results-columns-icon{display:flex;align-items:center;justify-content:center;color:var(--accent-primary);flex-shrink:0}.results-columns-icon svg{display:block}.results-columns-summary{list-style:none;cursor:pointer;display:inline-flex;align-items:center;gap:8px;padding:8px 14px;background:var(--bg-secondary);border:1px solid var(--border-glass);border-radius:var(--radius-sm);font-family:var(--font-sans);font-size:13px;font-weight:500;color:var(--text-primary);transition:border-color var(--transition-fast)}.results-columns-summary::-webkit-details-marker{display:none}.results-columns-summary:hover,.results-columns-picker[open] .results-columns-summary{border-color:var(--border-active)}.results-columns-panel{position:absolute;z-index:20;right:0;top:calc(100% + 6px);min-width:220px;max-height:min(70vh,360px);overflow-y:auto;padding:12px;background:var(--bg-secondary);border:1px solid var(--border-glass);border-radius:var(--radius-md);box-shadow:0 12px 40px #00000073;display:flex;flex-direction:column;gap:8px}.results-columns-item{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none}.results-columns-item input{accent-color:var(--accent-secondary);cursor:pointer}.results-columns-item input:disabled{cursor:not-allowed;opacity:.5}.results-columns-reset{margin-top:4px;padding:6px 12px!important;font-size:12px!important;width:100%;justify-content:center}.results-toolbar-hint{font-size:12px;color:var(--text-muted)}.results-empty{padding:32px 24px;text-align:center;color:var(--text-muted);font-size:14px}.results-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:32px}.results-lot{padding:16px 24px;background:var(--bg-card);border:1px solid var(--border-glass);border-radius:var(--radius-md);margin-bottom:24px}.lot-label{font-size:12px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em}.lot-value{font-size:18px;font-weight:700;font-family:var(--font-mono);color:var(--accent-primary);margin-top:4px}.data-table-wrapper{overflow-x:auto;border:1px solid var(--border-glass);border-radius:var(--radius-lg);background:var(--bg-card)}.data-table{width:100%;table-layout:fixed;border-collapse:collapse;font-size:13px}.data-table--col-resize th:not(:last-child),.data-table--col-resize td:not(:last-child){border-right:1px solid rgba(255,255,255,.07)}.data-table th{padding:12px 16px;text-align:left;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);background:#0003;border-bottom:1px solid var(--border-glass);white-space:nowrap}.data-table-th--resizable{position:relative;padding-right:16px;vertical-align:bottom}.data-table-th-label{display:block;overflow:hidden;text-overflow:ellipsis}.data-table-resize-handle{position:absolute;top:0;right:0;width:12px;height:100%;cursor:col-resize;z-index:2;touch-action:none;background:linear-gradient(90deg,transparent 0%,rgba(129,140,248,.04) 35%,rgba(129,140,248,.08) 100%);transition:background var(--transition-fast)}.data-table-resize-handle:after{content:"";position:absolute;right:5px;top:50%;transform:translateY(-50%);width:1px;height:18px;border-radius:1px;opacity:.55;pointer-events:none;background:#94a3b8bf;box-shadow:-4px 0 #94a3b873;transition:opacity var(--transition-fast),background var(--transition-fast),box-shadow var(--transition-fast)}.data-table-resize-handle:hover{background:linear-gradient(90deg,transparent 0%,rgba(129,140,248,.12) 40%,rgba(129,140,248,.22) 100%)}.data-table-resize-handle:hover:after{opacity:1;background:#c7d2fee6;box-shadow:-4px 0 #c7d2fe8c}.data-table-resize-handle:active:after{opacity:1;background:#e0e7ff;box-shadow:-4px 0 #e0e7ffd9}body.data-table-resizing,body.data-table-resizing *{cursor:col-resize!important}.data-table td{padding:10px 16px;border-bottom:1px solid rgba(255,255,255,.03);color:var(--text-secondary);font-family:var(--font-mono);font-size:12px;overflow:hidden;text-overflow:ellipsis;vertical-align:top;min-width:0}.data-table td .inline-input{min-width:0}.data-table tbody tr:not(.data-table-row--edited):hover td{background:var(--table-row-hover)}.data-table tbody tr.data-table-row--edited td{background:var(--row-edited-bg);box-shadow:inset 4px 0 0 var(--row-edited-accent)}.data-table tbody tr.data-table-row--edited:hover td{background:var(--row-edited-bg-hover);box-shadow:inset 4px 0 0 var(--row-edited-accent)}.data-table tr:last-child td{border-bottom:none}.badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:600}.badge-warning{background:var(--warning-bg);color:var(--warning)}.badge-success{background:var(--success-bg);color:var(--success)}.confidence-bar{width:48px;height:4px;background:#ffffff14;border-radius:2px;display:inline-block;vertical-align:middle;margin-right:6px}.confidence-fill{height:100%;border-radius:2px}.confidence-high{background:var(--success)}.confidence-medium{background:var(--warning)}.confidence-low{background:var(--error)}.inline-input{width:100%;background:transparent;border:1px solid transparent;color:inherit;font-family:inherit;font-size:inherit;padding:4px 6px;border-radius:var(--radius-sm);transition:all var(--transition-fast)}.inline-input:hover{background:#ffffff1a}.inline-input:focus{outline:none;border-color:var(--accent-primary);background:#0003}.inline-input::placeholder{color:var(--text-muted)}.error-banner{padding:16px 20px;background:var(--error-bg);border:1px solid rgba(248,113,113,.2);border-radius:var(--radius-md);color:var(--error);font-size:14px;margin-top:16px}@keyframes fadeIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.fade-in{animation:fadeIn .5s var(--ease-out) forwards}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.spinner{width:20px;height:20px;border:2px solid rgba(255,255,255,.2);border-top-color:#fff;border-radius:50%;animation:spin .8s linear infinite}@media(max-width:768px){.app-header{padding:16px 20px}.app-content{padding:20px}.card-lg{padding:32px 24px}.upload-zone{padding:48px 24px}.progress-stats,.results-summary{grid-template-columns:repeat(2,1fr)}.results-header{flex-direction:column;align-items:flex-start}}
