:root{--blue-50: #e8f4fd;--blue-100: #d0e8f7;--blue-200: #a8d4f0;--blue-300: #6bb8e8;--blue-400: #3da1e0;--blue-500: #4cc9f0;--blue-600: #2196f3;--blue-700: #1976d2;--ink: #111111;--ink-soft: #2a2a2a;--ink-muted:#555555;--ink-light:#888888;--surface: #ffffff;--surface-2:#f7fafc;--border: #d5e3ee;--border-light: #e8eff5;--success: #2e7d32;--success-bg: #e8f5e9;--danger: #c62828;--danger-bg: #ffeaea;--radius: 10px;--radius-lg: 14px;--shadow: 0 2px 12px rgba(0,0,0,.06);--shadow-lg:0 4px 24px rgba(0,0,0,.08);--font-mono:"Space Mono", "Courier New", monospace;--font-body:"Inter", -apple-system, sans-serif;--transition: .2s ease}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--blue-50);color:var(--ink);font-family:var(--font-body);min-height:100vh;-webkit-font-smoothing:antialiased}.app-layout{display:flex;min-height:100vh}.main-content{flex:1;max-width:900px;margin:0 auto;padding:2rem 2.5rem;display:flex;flex-direction:column;min-height:100vh}.sidebar{width:300px;background:var(--ink);color:#cfd8e0;padding:1.5rem;overflow-y:auto;border-left:1px solid #222;flex-shrink:0}.sidebar-title{font-family:var(--font-mono);font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:1.5px;color:var(--blue-500);margin-bottom:1rem;display:flex;align-items:center;gap:.5rem}.sidebar-empty{color:#556;font-size:.8rem;font-style:italic;text-align:center;margin-top:2rem}.sidebar-batch{background:#1a1a1a;border:1px solid #2a2a2a;border-radius:var(--radius);padding:.85rem;margin-bottom:.75rem;cursor:pointer;transition:all var(--transition)}.sidebar-batch:hover{border-color:var(--blue-500);background:#1f1f1f}.sidebar-batch.active{border-color:var(--blue-500);background:#162230}.sidebar-batch-id{font-family:var(--font-mono);font-size:.75rem;color:var(--blue-400);margin-bottom:.4rem;display:flex;align-items:center;gap:.4rem}.sidebar-batch-id i{font-size:.65rem}.sidebar-batch-time{font-size:.7rem;color:#556;margin-bottom:.5rem}.sidebar-batch-files{list-style:none}.sidebar-batch-files li{font-size:.75rem;color:#8899a6;padding:.2rem 0;display:flex;align-items:center;gap:.4rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-batch-files li i{font-size:.6rem;flex-shrink:0}.sidebar-batch-files li i.fa-check{color:var(--success)}.sidebar-batch-files li i.fa-xmark{color:var(--danger)}.sidebar-batch-files li i.fa-spinner{color:var(--blue-400)}.sidebar-batch-files li i.fa-clock{color:#556}header{text-align:center;margin-bottom:2.5rem;padding-bottom:1.5rem;border-bottom:1px solid var(--border)}.logo{max-width:120px;height:auto;margin-bottom:.5rem}header h1{font-family:var(--font-mono);font-size:2.4rem;font-weight:700;color:var(--ink);letter-spacing:-1px}.subtitle{font-family:var(--font-mono);color:var(--ink-light);margin-top:.25rem;font-size:.85rem;letter-spacing:.5px}.dropzone{border:2px dashed var(--blue-200);border-radius:var(--radius-lg);padding:3.5rem 2rem;text-align:center;cursor:pointer;transition:all var(--transition);background:var(--surface);box-shadow:var(--shadow)}.dropzone:hover,.dropzone.dragging{border-color:var(--blue-500);background:var(--blue-50);box-shadow:0 0 0 4px #4cc9f01a}.drop-icon{font-size:2.5rem;margin-bottom:.75rem;color:var(--blue-400)}.dropzone p{color:var(--ink-muted);font-size:.95rem}.drop-hint{font-size:.8rem!important;color:var(--ink-light)!important;margin-top:.25rem}.file-queue{margin-top:1.5rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1.25rem;box-shadow:var(--shadow)}.queue-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;font-family:var(--font-mono);color:var(--ink-muted);font-size:.85rem}.file-queue ul{list-style:none;max-height:300px;overflow-y:auto}.file-queue li{display:flex;align-items:center;gap:.75rem;padding:.6rem .5rem;border-bottom:1px solid var(--border-light)}.fname{flex:1;font-size:.85rem;font-family:var(--font-mono);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fsize{color:var(--ink-light);font-size:.75rem;font-family:var(--font-mono);white-space:nowrap}.btn-remove{background:none;border:none;color:var(--ink-light);cursor:pointer;font-size:.85rem;padding:.2rem .4rem;transition:color var(--transition)}.btn-remove:hover{color:var(--danger)}.btn-clear{background:none;border:1px solid var(--border);color:var(--ink-light);border-radius:6px;padding:.3rem .75rem;cursor:pointer;font-size:.75rem;font-family:var(--font-mono);transition:all var(--transition)}.btn-clear:hover{border-color:var(--danger);color:var(--danger)}.btn-upload{width:100%;margin-top:1rem;padding:.85rem;background:var(--ink);color:var(--surface);border:none;border-radius:var(--radius);font-size:.95rem;font-weight:600;font-family:var(--font-mono);cursor:pointer;transition:all var(--transition);display:flex;align-items:center;justify-content:center;gap:.5rem}.btn-upload:hover:not(:disabled){background:var(--ink-soft);box-shadow:var(--shadow-lg)}.btn-upload:disabled{background:#ccc;color:#999;cursor:not-allowed}.batch-panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1.5rem;box-shadow:var(--shadow)}.batch-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:1rem}.batch-header h2{font-family:var(--font-mono);font-size:1.1rem;font-weight:700;color:var(--ink)}.batch-id{font-family:var(--font-mono);color:var(--ink-light);font-size:.7rem;margin-top:.2rem;display:flex;align-items:center;gap:.35rem}.batch-stats{display:flex;flex-direction:column;align-items:flex-end;gap:.5rem;font-family:var(--font-mono);color:var(--ink-muted);font-size:.85rem}.batch-actions{display:flex;gap:.75rem;align-items:center;margin-top:.5rem}.btn-new{padding:.4rem 1rem;background:var(--ink);color:var(--surface);border:none;border-radius:6px;cursor:pointer;font-size:.8rem;font-weight:600;font-family:var(--font-mono);transition:all var(--transition);display:inline-flex;align-items:center;gap:.4rem}.btn-new:hover{background:var(--ink-soft)}.overall-bar{height:6px;background:var(--border-light);border-radius:3px;margin-bottom:1.5rem;overflow:hidden}.overall-fill{height:100%;background:var(--blue-500);border-radius:3px;transition:width .4s ease}.job-list{list-style:none;display:flex;flex-direction:column;gap:.75rem}.job-item{background:var(--surface-2);border:1px solid var(--border-light);border-radius:var(--radius);padding:1rem;transition:border-color var(--transition)}.job-item.done{border-left:4px solid var(--success)}.job-item.failed{border-left:4px solid var(--danger)}.job-item.processing{border-left:4px solid var(--blue-500)}.job-item.queued{border-left:4px solid var(--border)}.job-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:.4rem;gap:.75rem}.job-name-group{display:flex;align-items:center;gap:.6rem;min-width:0;flex:1}.job-thumb{width:40px;height:40px;border-radius:6px;object-fit:contain;background:repeating-conic-gradient(var(--border-light) 0% 25%,var(--surface) 0% 50%) 0 0 / 10px 10px;border:1px solid var(--border);flex-shrink:0}.preview-row{display:flex;gap:.75rem;margin:.75rem 0;overflow-x:auto}.preview-panel{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;gap:.35rem}.preview-label{font-family:var(--font-mono);font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--ink-light)}.preview-panel img{width:100%;max-height:280px;object-fit:contain;border-radius:var(--radius);border:1px solid var(--border);background:repeating-conic-gradient(var(--border-light) 0% 25%,var(--surface) 0% 50%) 0 0 / 12px 12px}.job-name{font-family:var(--font-mono);font-size:.85rem;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--ink)}.job-badge{font-family:var(--font-mono);font-size:.75rem;white-space:nowrap;display:inline-flex;align-items:center;gap:.35rem}.job-step{font-family:var(--font-mono);font-size:.75rem;color:var(--ink-light);margin-bottom:.4rem}.job-stats{display:flex;gap:1rem;flex-wrap:wrap;font-size:.7rem;font-family:var(--font-mono);color:var(--blue-700);margin-bottom:.5rem}.job-bar{height:6px;background:var(--border-light);border-radius:3px;overflow:hidden;position:relative}.job-fill{height:100%;border-radius:3px;transition:width .3s ease;background:var(--blue-500)}.job-item.done .job-fill{background:var(--success)}.job-item.failed .job-fill{background:var(--danger)}.job-pct{position:absolute;right:0;top:-16px;font-size:.65rem;font-family:var(--font-mono);color:var(--ink-light)}.btn-download{display:inline-flex;align-items:center;gap:.4rem;margin-top:.75rem;padding:.5rem 1.25rem;background:var(--success-bg);color:var(--success);border:1px solid #c8e6c9;border-radius:6px;text-decoration:none;font-size:.8rem;font-weight:600;font-family:var(--font-mono);transition:all var(--transition)}.btn-download:hover{background:#c8e6c9}.job-actions{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:.75rem}.job-actions .btn-download{margin-top:0}.btn-halftone{display:inline-flex;align-items:center;gap:.4rem;padding:.5rem 1.25rem;background:#fff3e0;color:#e65100;border:1px solid #ffcc80;border-radius:6px;font-size:.85rem;font-weight:600;cursor:pointer;transition:background .2s}.btn-halftone:hover{background:#ffe0b2}.btn-remove-bg{display:inline-flex;align-items:center;gap:.4rem;padding:.5rem 1.25rem;background:#e3f2fd;color:#1565c0;border:1px solid #90caf9;border-radius:6px;font-size:.85rem;font-weight:600;cursor:pointer;transition:background .2s}.btn-remove-bg:hover{background:#bbdefb}.btn-zip{display:inline-flex;align-items:center;gap:.5rem;padding:.5rem 1.25rem;background:var(--ink);color:var(--blue-500);border:1px solid #333;border-radius:var(--radius);text-decoration:none;font-size:.85rem;font-weight:700;font-family:var(--font-mono);cursor:pointer;transition:all var(--transition)}.btn-zip:hover{background:var(--ink-soft);border-color:var(--blue-500);box-shadow:0 2px 12px #4cc9f033}footer{margin-top:auto;padding-top:2rem;text-align:center;font-family:var(--font-mono);color:var(--ink-light);font-size:.75rem}footer a{color:var(--blue-600);text-decoration:none}footer a:hover{text-decoration:underline}@media (max-width: 1024px){.sidebar{display:none}}@media (max-width: 640px){.main-content{padding:1rem}header h1{font-size:1.8rem}.dropzone{padding:2rem 1rem}}.options-row{margin-top:1rem;padding:.75rem;background:var(--surface-alt, #f0f2f5);border-radius:8px;border:1px solid var(--border, #e0e0e0)}.toggle-label{display:flex;align-items:center;gap:.5rem;cursor:pointer;font-size:.9rem;color:var(--text, #333)}.toggle-label input[type=checkbox]{width:18px;height:18px;accent-color:var(--blue-400, #2196f3);cursor:pointer}.toggle-text{display:flex;align-items:center;gap:.4rem}.toggle-text i{color:var(--blue-400, #2196f3)}
