*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#0d0d0f;--surface:#16181c;--surface-2:#1e2026;--surface-3:#262930;--border:#2a2d35;--border-2:#363a44;--text:#e8eaee;--text-2:#9aa0ad;--text-3:#60656f;--accent:#4f8ef7;--accent-dim:#1e3a6e;--green:#27c97a;--green-dim:#0d3d23;--red:#f05252;--red-dim:#3d1414;--yellow:#f5a623;--radius:6px;--radius-lg:10px;--font:system-ui, -apple-system, "Segoe UI", sans-serif;--mono:ui-monospace, "Cascadia Code", "Fira Code", monospace}body{font-family:var(--font);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;height:100vh;line-height:1.5;overflow:hidden}#root{height:100vh;display:flex}button{font-family:var(--font);cursor:pointer;border:none;outline:none}input,textarea{font-family:var(--font);color:var(--text);background:0 0;border:none;outline:none}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}::-webkit-scrollbar{width:5px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border-2);border-radius:3px}.app{width:100%;height:100vh;display:flex;overflow:hidden}.sidebar{background:var(--surface);border-right:1px solid var(--border);flex-direction:column;width:220px;min-width:220px;display:flex}.sidebar-logo{border-bottom:1px solid var(--border);align-items:center;gap:9px;padding:20px 20px 16px;display:flex}.sidebar-logo-dot{background:var(--accent);border-radius:50%;flex-shrink:0;width:8px;height:8px}.sidebar-logo span{letter-spacing:.1em;text-transform:uppercase;color:var(--text);font-size:12.5px;font-weight:700}.sidebar-nav{flex:1;padding:10px 0;list-style:none}.sidebar-nav li button{width:100%;color:var(--text-2);text-align:left;background:0 0;border-left:2px solid #0000;align-items:center;gap:10px;padding:9px 20px;font-size:13.5px;font-weight:450;transition:color .12s,background .12s;display:flex}.sidebar-nav li button:hover{color:var(--text);background:var(--surface-2)}.sidebar-nav li button.active{color:var(--text);background:var(--surface-2);border-left-color:var(--accent)}.nav-icon{text-align:center;opacity:.7;width:18px;font-size:15px}.sidebar-footer{border-top:1px solid var(--border);color:var(--text-3);padding:14px 20px;font-size:11px}.main{background:var(--bg);flex:1;overflow-y:auto}.section-pane{max-width:860px;margin:0 auto;padding:40px 32px 60px}.section-heading{color:var(--text);letter-spacing:-.02em;margin-bottom:6px;font-size:22px;font-weight:600}.section-subhead{color:var(--text-3);margin-bottom:32px;font-size:13.5px}.home-title{letter-spacing:-.04em;color:var(--text);margin-bottom:4px;font-size:30px;font-weight:700}.home-sub{color:var(--text-3);margin-bottom:32px;font-size:14px}.home-cards{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:14px;display:grid}.home-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);cursor:pointer;text-align:left;padding:22px;transition:border-color .15s,background .15s,transform .1s}.home-card:hover{border-color:var(--border-2);background:var(--surface-2);transform:translateY(-1px)}.home-card-icon{margin-bottom:12px;font-size:22px}.home-card h3{color:var(--text);margin-bottom:4px;font-size:15px;font-weight:600}.home-card p{color:var(--text-3);font-size:12.5px;line-height:1.45}.placeholder{height:240px;color:var(--text-3);border:1px dashed var(--border);border-radius:var(--radius-lg);flex-direction:column;justify-content:center;align-items:center;gap:8px;font-size:14px;display:flex}.placeholder-icon{opacity:.4;font-size:28px}.form-grid{flex-direction:column;gap:20px;display:flex}.field{flex-direction:column;gap:7px;display:flex}.field label{letter-spacing:.07em;text-transform:uppercase;color:var(--text-3);font-size:11.5px;font-weight:600}.field-hint{color:var(--text-3);margin-top:-3px;font-size:11.5px}.chip-wrap{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);cursor:text;flex-wrap:wrap;align-items:center;gap:6px;min-height:42px;padding:7px 10px;transition:border-color .12s;display:flex}.chip-wrap:focus-within{border-color:var(--border-2)}.chip{background:var(--surface-3);border:1px solid var(--border-2);color:var(--text);border-radius:4px;align-items:center;gap:5px;padding:3px 8px;font-size:12.5px;line-height:1;display:inline-flex}.chip-remove{color:var(--text-3);background:0 0;padding:0 0 0 2px;font-size:14px;line-height:1;transition:color .1s}.chip-remove:hover{color:var(--red)}.chip-input{min-width:120px;color:var(--text);background:0 0;border:none;outline:none;flex:1;padding:2px 0;font-size:13.5px}.chip-input::placeholder{color:var(--text-3)}.text-input{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);width:100%;padding:9px 12px;font-size:13.5px;transition:border-color .12s}.text-input:focus{border-color:var(--border-2);outline:none}.text-input::placeholder{color:var(--text-3)}.btn-primary{background:var(--accent);color:#fff;border-radius:var(--radius);padding:10px 22px;font-size:13.5px;font-weight:600;transition:opacity .12s,transform .1s}.btn-primary:hover:not(:disabled){opacity:.88;transform:translateY(-1px)}.btn-primary:disabled{opacity:.4;cursor:not-allowed}.btn-secondary{background:var(--surface-3);border:1px solid var(--border-2);color:var(--text);border-radius:var(--radius);padding:8px 16px;font-size:13px;font-weight:500;transition:background .12s}.btn-secondary:hover{background:var(--surface-2)}.btn-danger{background:var(--red-dim);border:1px solid var(--red);color:var(--red);border-radius:var(--radius);padding:8px 18px;font-size:13px;font-weight:600;transition:opacity .12s}.btn-danger:hover{opacity:.82}.form-actions{align-items:center;gap:10px;margin-top:4px;display:flex}.error-msg{color:var(--red);background:var(--red-dim);border:1px solid var(--red);border-radius:var(--radius);margin-top:4px;padding:8px 12px;font-size:12.5px}.progress-section{border-top:1px solid var(--border);margin-top:36px;padding-top:32px}.progress-header{justify-content:space-between;align-items:baseline;margin-bottom:6px;display:flex}.progress-title{color:var(--text-3);text-transform:uppercase;letter-spacing:.08em;font-size:12px;font-weight:600}.progress-stat{color:var(--text);margin-bottom:22px;font-size:14px}.progress-stat strong{color:var(--green);font-size:20px;font-weight:700}.progress-counts{align-items:center;gap:14px;font-size:12.5px;display:flex}.count-done{color:var(--green);font-weight:600}.count-fail{color:var(--red);font-weight:600}.progress-track-outer{align-items:center;height:28px;margin-bottom:24px;display:flex;position:relative}.progress-track{background:var(--border-2);border-radius:1px;width:100%;height:2px;position:relative}.progress-fill{background:var(--green);border-radius:1px;transition:width .5s;position:absolute;top:0;bottom:0;left:0}.progress-dots{position:absolute;inset:0}.pdot{background:var(--surface-3);border:2px solid var(--border-2);cursor:default;border-radius:50%;width:10px;height:10px;transition:background .3s,border-color .3s;position:absolute;top:50%;transform:translate(-50%,-50%)}.pdot[title]{pointer-events:all}.pdot.done{background:var(--green);border-color:var(--green)}.pdot.failed{background:var(--red);border-color:var(--red)}.pdot.running{background:var(--yellow);border-color:var(--yellow);animation:1s infinite dpulse}@keyframes dpulse{0%,to{opacity:1}50%{opacity:.35}}.job-badge{letter-spacing:.04em;border-radius:100px;align-items:center;gap:5px;padding:3px 10px;font-size:11.5px;font-weight:600;display:inline-flex}.job-badge.running{background:var(--accent-dim);color:var(--accent)}.job-badge.done{background:var(--green-dim);color:var(--green)}.job-badge.partial{background:var(--red-dim);color:var(--red)}.progress-actions{align-items:center;gap:10px;margin-bottom:28px;display:flex}.page-list{border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}.page-list-head{color:var(--text-3);letter-spacing:.06em;text-transform:uppercase;background:var(--surface);border-bottom:1px solid var(--border);grid-template-columns:36px 1fr 1fr 1fr 90px 1fr;gap:8px;padding:8px 12px;font-size:11px;font-weight:600;display:grid}.page-row{color:var(--text-2);border-bottom:1px solid var(--border);grid-template-columns:36px 1fr 1fr 1fr 90px 1fr;align-items:start;gap:8px;padding:9px 12px;font-size:12.5px;transition:background .1s;display:grid}.page-row:last-child{border-bottom:none}.page-row:hover{background:var(--surface)}.page-row .pos{color:var(--text-3);font-variant-numeric:tabular-nums;padding-top:2px}.page-row .kw{color:var(--text);font-weight:500}.status-badge{letter-spacing:.04em;white-space:nowrap;border-radius:4px;align-items:center;padding:2px 8px;font-size:11px;font-weight:600;display:inline-flex}.status-badge.pending{background:var(--surface-3);color:var(--text-3)}.status-badge.running{background:var(--accent-dim);color:var(--accent)}.status-badge.done{background:var(--green-dim);color:var(--green)}.status-badge.failed{background:var(--red-dim);color:var(--red)}.error-cell{color:var(--red);word-break:break-all;font-size:11.5px}.url-cell{word-break:break-all}
