:root{--primary: #2563eb;--primary-hover: #1d4ed8;--danger: #dc2626;--bg: #f8fafc;--card-bg: #ffffff;--text: #1e293b;--text-muted: #64748b;--border: #e2e8f0;--radius: 8px}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);line-height:1.6}.app{max-width:960px;margin:0 auto;padding:2rem 1rem}.app-header{text-align:center;margin-bottom:2rem}.app-header h1{font-size:2rem;color:var(--primary)}.subtitle{color:var(--text-muted);margin-top:.5rem}.warning-banner{background:#fef3c7;border:1px solid #fde68a;border-radius:var(--radius);padding:1rem;margin-bottom:2rem;font-size:.9rem}.card{background:var(--card-bg);border:1px solid var(--border);border-radius:var(--radius);padding:2rem;text-align:center;margin-bottom:2rem}.info-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem}.info-card{background:var(--card-bg);border:1px solid var(--border);border-radius:var(--radius);padding:1.5rem}.info-card h3{margin-bottom:.5rem}.info-card p{font-size:.875rem;color:var(--text-muted)}.page{max-width:960px;margin:0 auto;padding:2rem 1rem}.page h1{margin-bottom:1rem}.page>p{color:var(--text-muted);margin-bottom:1.5rem}.category{margin-bottom:2rem}.category h2{font-size:1.1rem;margin-bottom:.75rem}.columns-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:.75rem}.column-card{display:flex;flex-direction:column;gap:.25rem;padding:.75rem;border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;transition:border-color .15s}.column-card:hover{border-color:var(--primary)}.column-label{font-weight:500}.deps{font-size:.75rem;color:var(--text-muted)}.form-group{margin-bottom:1.5rem}.form-row{margin-bottom:1rem;display:flex;align-items:center;gap:.5rem}.form-group label,.form-row label{font-weight:500;display:block;margin-bottom:.25rem}.form-row label{margin-bottom:0}input[type=text],input[type=number],select{padding:.5rem .75rem;border:1px solid var(--border);border-radius:var(--radius);font-size:1rem;width:100%}.form-row input[type=checkbox]{margin-right:.5rem}.presets{display:flex;gap:.5rem;margin-top:.5rem}.presets button{padding:.25rem .75rem;border:1px solid var(--border);border-radius:var(--radius);background:#fff;cursor:pointer;font-size:.875rem}.presets button:hover{border-color:var(--primary)}.table,.preview-table{width:100%;border-collapse:collapse;margin-bottom:1.5rem}.table th,.preview-table th{text-align:left;padding:.5rem;border-bottom:2px solid var(--border);font-size:.875rem}.table td,.preview-table td{padding:.5rem;border-bottom:1px solid var(--border);font-size:.875rem}.table-wrapper{overflow-x:auto}.actions{display:flex;gap:1rem;margin-top:1.5rem}button{padding:.5rem 1.5rem;border:1px solid var(--border);border-radius:var(--radius);background:#fff;cursor:pointer;font-size:1rem;transition:background .15s}button:hover:not(:disabled){border-color:var(--primary)}button:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--primary);color:#fff;border-color:var(--primary)}.btn-primary:hover:not(:disabled){background:var(--primary-hover)}.btn-large{font-size:1.1rem;padding:.75rem 2rem}.btn-danger{background:var(--danger);color:#fff;border-color:var(--danger)}.status-card{background:var(--card-bg);border:1px solid var(--border);border-radius:var(--radius);padding:1.5rem;margin-bottom:1.5rem}.status-row{display:flex;gap:1rem;margin-bottom:.5rem}.status-row .label{font-weight:500;min-width:120px}.status-running{color:var(--primary);font-weight:700}.status-completed{color:#16a34a;font-weight:700}.status-cancelled{color:#ea580c;font-weight:700}.status-failed{color:var(--danger);font-weight:700}.progress-bar{width:100%;height:24px;background:var(--border);border-radius:var(--radius);overflow:hidden;margin-bottom:1.5rem}.progress-fill{height:100%;background:var(--primary);transition:width .3s}.error{background:#fef2f2;border:1px solid #fecaca;color:#991b1b;padding:1rem;border-radius:var(--radius);margin-bottom:1rem}.loading{text-align:center;padding:2rem;color:var(--text-muted)}.app-footer{text-align:center;color:var(--text-muted);font-size:.8rem;margin-top:3rem}.csv-options{display:flex;flex-direction:column;gap:.75rem}
