:root{--background:#f9fafb;--surface:#fff;--surface-hover:#f3f4f6;--surface-border:#e5e7eb;--foreground:#111827;--foreground-muted:#4b5563;--primary:#4f46e5;--primary-hover:#4338ca;--primary-glow:#4f46e514;--secondary:#2563eb;--secondary-hover:#1d4ed8;--accent:#7c3aed;--accent-hover:#6d28d9;--error:#dc2626;--error-bg:#fee2e2;--warning:#d97706;--success:#15803d;--success-bg:#d1fae5;--shadow-sm:none;--shadow-md:none;--shadow-lg:none;--shadow-xl:none;--font-sans:"Inter", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;--border-radius-sm:4px;--border-radius-md:6px;--border-radius-lg:10px}*{box-sizing:border-box;margin:0;padding:0}html,body{background-color:var(--background);width:100%;height:100%;color:var(--foreground);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden}body{flex-direction:column;min-height:100vh;display:flex}a{color:inherit;text-decoration:none}h1,h2,h3,h4,h5,h6{letter-spacing:-.02em;color:var(--foreground);font-weight:700;line-height:1.2}p{color:var(--foreground-muted);line-height:1.6}.container{width:100%;max-width:1200px;margin:0 auto;padding:0 24px}.header{border-bottom:1px solid var(--surface-border);background:var(--surface);z-index:100;padding:14px 0;position:sticky;top:0}.header-container{justify-content:space-between;align-items:center;display:flex}.logo{color:var(--primary);align-items:center;gap:8px;font-size:18px;font-weight:800;display:flex}.nav-links{align-items:center;gap:20px;display:flex}.nav-link{color:var(--foreground-muted);font-size:14px;font-weight:500;transition:color .15s}.nav-link:hover,.nav-link.active{color:var(--primary)}.nav-link-btn{border-radius:var(--border-radius-sm);border:1px solid var(--surface-border);background:#f3f4f6;padding:6px 12px}.nav-link-btn:hover{background:#e5e7eb}.page-header{border-bottom:1px solid var(--surface-border);margin-bottom:24px;padding:32px 0 16px}.page-title{color:var(--foreground);margin-bottom:6px;font-size:28px}.page-subtitle{color:var(--foreground-muted);font-size:15px}.card{background:var(--surface);border:1px solid var(--surface-border);border-radius:var(--border-radius-md);box-shadow:none;padding:20px;transition:border-color .15s}.card:hover{border-color:#cbd5e1}.card-title{align-items:center;gap:8px;margin-bottom:8px;font-size:16px;display:flex}.card-desc{margin-bottom:16px;font-size:13px}.form-group{margin-bottom:16px}.form-label{color:var(--foreground);margin-bottom:6px;font-size:13px;font-weight:600;display:block}.form-control{border-radius:var(--border-radius-sm);width:100%;color:var(--foreground);background:#fff;border:1px solid #d1d5db;padding:10px 14px;font-family:inherit;font-size:14px;transition:border-color .15s}.form-control:focus{border-color:var(--primary);outline:none}.form-textarea{resize:vertical;min-height:100px}.form-row{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;display:grid}.btn{border-radius:var(--border-radius-sm);cursor:pointer;border:none;justify-content:center;align-items:center;gap:6px;padding:10px 18px;font-family:inherit;font-size:13px;font-weight:600;transition:background-color .15s;display:inline-flex}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--primary-hover)}.btn-secondary{color:var(--foreground);background:#fff;border:1px solid #d1d5db}.btn-secondary:hover:not(:disabled){background:#f9fafb}.btn-accent{background:var(--accent);color:#fff}.btn-accent:hover:not(:disabled){background:var(--accent-hover)}.btn-danger{background:var(--error);color:#fff}.btn-danger:hover:not(:disabled){background:#b91c1c}.btn:disabled{opacity:.5;cursor:not-allowed}.badge{border-radius:4px;align-items:center;padding:3px 8px;font-size:11px;font-weight:600;display:inline-flex}.badge-success{background:var(--success-bg);color:var(--success);border:1px solid #15803d26}.badge-warning{color:var(--warning);background:#fffbeb;border:1px solid #d9770626}.badge-error{background:var(--error-bg);color:var(--error);border:1px solid #dc262626}.badge-info{color:var(--secondary);background:#eff6ff;border:1px solid #2563eb26}.progress-list{flex-direction:column;gap:10px;margin-top:16px;display:flex}.progress-item{background:var(--surface);border:1px solid var(--surface-border);border-radius:var(--border-radius-sm);align-items:center;gap:12px;padding:12px 16px;display:flex}.progress-item.active{border-color:var(--primary);background:#f5f3ff}.progress-icon{border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:20px;height:20px;font-size:11px;font-weight:700;display:flex}.progress-icon.pending{color:#9ca3af;border:1px solid #9ca3af}.progress-icon.running{border:2px solid var(--primary);color:var(--primary);animation:1.5s infinite pulse}.progress-icon.success{background:var(--success);color:#fff}.progress-icon.failed{background:var(--error);color:#fff}.progress-details{flex-grow:1}.progress-title{color:var(--foreground);font-size:14px;font-weight:600}.progress-msg{color:var(--foreground-muted);font-size:12px}.dashboard-grid{grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:20px;margin-top:16px;display:grid}.tabs{border-bottom:1px solid var(--surface-border);gap:4px;margin-bottom:20px;display:flex}.tab-btn{color:var(--foreground-muted);cursor:pointer;background:0 0;border:none;padding:10px 14px;font-size:13px;font-weight:600;transition:color .15s;position:relative}.tab-btn:hover,.tab-btn.active{color:var(--primary)}.tab-btn.active:after{content:"";background:var(--primary);height:2px;position:absolute;bottom:-1px;left:0;right:0}.image-grid{grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:12px;display:grid}.image-card{aspect-ratio:1;border:1px solid var(--surface-border);border-radius:var(--border-radius-sm);cursor:pointer;background:#f3f4f6;position:relative;overflow:hidden}.image-card.selected{border-color:var(--primary)}.image-card img{object-fit:cover;width:100%;height:100%}.image-checkbox{width:16px;height:16px;accent-color:var(--primary);cursor:pointer;z-index:2;position:absolute;top:6px;left:6px}.image-badge{color:#fff;z-index:2;background:#111827cc;border-radius:2px;padding:2px 4px;font-size:9px;position:absolute;bottom:6px;right:6px}.variants-table-container{overflow-x:auto}.variants-table{border-collapse:collapse;text-align:left;width:100%}.variants-table th{color:var(--foreground-muted);border-bottom:1px solid var(--surface-border);padding:10px 14px;font-size:12px;font-weight:600}.variants-table td{border-bottom:1px solid var(--surface-border);vertical-align:middle;padding:10px 14px;font-size:13px}.variant-thumb{border-radius:var(--border-radius-sm);object-fit:cover;background:#f3f4f6;width:36px;height:36px}.terminal-panel{border-radius:var(--border-radius-md);color:#34d399;background:#1f2937;border:1px solid #111827;max-height:250px;margin-top:16px;padding:14px;font-family:Courier New,Courier,monospace;font-size:12px;overflow-y:auto}.terminal-line{white-space:pre-wrap;margin-bottom:3px}.terminal-line.error{color:#f87171}.terminal-line.info{color:#e5e7eb}.terminal-line.warning{color:#fbbf24}@keyframes pulse{0%{transform:scale(1)}50%{transform:scale(1.08)}to{transform:scale(1)}}.image-card-actions{z-index:10;opacity:0;background:#000000bf;justify-content:center;align-items:center;padding:6px 4px;transition:opacity .2s;display:flex;position:absolute;bottom:0;left:0;right:0}.image-card:hover .image-card-actions{opacity:1}.bg-remove-btn{color:#fff;cursor:pointer;background:#3b82f6;border:none;border-radius:4px;justify-content:center;align-items:center;gap:4px;width:100%;padding:4px 8px;font-size:10px;font-weight:700;transition:background .2s;display:flex}.bg-remove-btn:hover{background:#2563eb}.image-card-processing{z-index:12;color:#3b82f6;text-align:center;background:#ffffffd9;flex-direction:column;justify-content:center;align-items:center;padding:4px;font-size:10px;font-weight:700;display:flex;position:absolute;inset:0}.spinner-mini{border:2px solid #e5e7eb;border-top-color:#3b82f6;border-radius:50%;width:16px;height:16px;margin-bottom:6px;animation:1s linear infinite spin}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}
