:root{--blue: #1a56db;--blue-d: #1e40af;--blue-m: #3b82f6;--blue-l: #eff6ff;--blue-ll: #dbeafe;--green: #059669;--green-l: #f0fdf4;--green-ll: #d1fae5;--amber: #d97706;--amber-l: #fffbeb;--amber-ll: #fef3c7;--red: #dc2626;--red-l: #fef2f2;--purple: #7c3aed;--purple-l: #f5f3ff;--teal: #0891b2;--teal-l: #ecfeff;--bg: #f8fafc;--bg2: #fff;--surface: #f1f5f9;--border: #e2e8f0;--border2: #cbd5e1;--text: #0f172a;--text2: #475569;--text3: #94a3b8;--shadow: 0 1px 3px rgba(0,0,0,.08);--shadow-md: 0 4px 12px rgba(0,0,0,.08);--r: 10px;--r-lg: 14px}.pipeline{display:flex;align-items:center;gap:0;margin-bottom:24px;background:var(--bg2);border:1px solid var(--border);border-radius:var(--r-lg);padding:0;overflow:hidden;box-shadow:var(--shadow)}@media (max-width: 768px){.pipeline{overflow-x:auto;justify-content:flex-start;padding:0 10px}.pipe-step{flex:0 0 120px}}.pipe-step{flex:1;display:flex;flex-direction:column;align-items:center;padding:14px 10px;position:relative;transition:all .2s;cursor:default}.pipe-step:after{content:"›";position:absolute;right:-8px;top:50%;transform:translateY(-50%);font-size:20px;color:var(--border2);z-index:1}.pipe-step:last-child:after{display:none}.pipe-step.active{background:var(--blue-l)}.pipe-step.done{background:var(--green-l)}.pipe-step.waiting{background:var(--bg2)}.pipe-num{width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;margin-bottom:6px;flex-shrink:0}.pipe-step.active .pipe-num{background:var(--blue);color:#fff}.pipe-step.done .pipe-num{background:var(--green);color:#fff}.pipe-step.waiting .pipe-num{background:var(--surface);color:var(--text3);border:1.5px solid var(--border)}.pipe-label{font-size:11px;font-weight:600;text-align:center;line-height:1.3}.pipe-step.active .pipe-label{color:var(--blue-d)}.pipe-step.done .pipe-label{color:var(--green)}.pipe-step.waiting .pipe-label{color:var(--text3)}.pipe-sub{font-size:10px;color:var(--text3);text-align:center;margin-top:2px;line-height:1.3}.pipe-step.active .pipe-sub{color:var(--blue-m)}.pred-tabs{margin-top:10px}.pred-tabs .ant-tabs-nav{margin-bottom:20px!important}.pred-tabs .ant-tabs-tab{padding:12px 20px;font-weight:600;font-size:14px;transition:all .3s}.pred-tabs .ant-tabs-tab-active{background:transparent}.pred-tabs .ant-tabs-tab-btn{color:var(--text3)}.pred-tabs .ant-tabs-tab-active .ant-tabs-tab-btn{color:var(--blue)}.pred-tabs .ant-tabs-ink-bar{background:var(--blue);height:3px!important;border-radius:3px}.pred-grid{display:grid;grid-template-columns:420px 1fr;gap:20px;align-items:start}@media (max-width: 992px){.pred-grid{grid-template-columns:1fr}}.panel{background:var(--bg2);border:1px solid var(--border);border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--shadow);margin-bottom:16px}.panel-head{padding:14px 18px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:10px}.panel-icon{width:32px;height:32px;border-radius:8px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.panel-icon.blue{background:var(--blue-l);color:var(--blue)}.panel-icon.green{background:var(--green-l);color:var(--green)}.panel-icon.amber{background:var(--amber-l);color:var(--amber)}.panel-title{font-size:13px;font-weight:600;color:var(--text)}.panel-sub{font-size:11px;color:var(--text3);margin-top:1px}.panel-body{padding:16px 18px}.nlp-box{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:10px 12px;margin-top:10px}.nlp-title{font-size:10px;font-weight:600;color:var(--text3);text-transform:uppercase;letter-spacing:.6px;margin-bottom:8px;display:flex;align-items:center;gap:6px}.nlp-tags{display:flex;flex-wrap:wrap;gap:5px}.nlp-tag{padding:3px 8px;border-radius:4px;font-size:11px;font-weight:500}.nlp-tag.kw{background:var(--blue-ll);color:var(--blue-d)}.nlp-tag.stop{background:var(--surface);color:var(--text3);text-decoration:line-through}.proc-panel{background:var(--bg2);border:1px solid var(--border);border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--shadow)}.proc-head{padding:12px 18px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between}.proc-title{font-size:12px;font-weight:600;color:var(--text2)}.proc-status{font-size:11px;padding:3px 10px;border-radius:20px;font-weight:500}.proc-status.idle{background:var(--surface);color:var(--text3)}.proc-status.running{background:var(--amber-ll);color:var(--amber)}.proc-status.done{background:var(--green-ll);color:var(--green)}.proc-steps{padding:14px 18px;display:flex;flex-direction:column;gap:0}.proc-row{display:flex;align-items:flex-start;gap:12px;padding:8px 0;position:relative}.proc-row:not(:last-child):after{content:"";position:absolute;left:11px;top:28px;bottom:-8px;width:1.5px;background:var(--border);z-index:0}.proc-dot{width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;z-index:1;position:relative;font-size:11px;font-weight:700;transition:all .3s}.proc-dot.idle{background:var(--surface);border:1.5px solid var(--border);color:var(--text3)}.proc-dot.running{background:var(--amber-ll);border:1.5px solid var(--amber);color:var(--amber)}.proc-dot.done{background:var(--green-ll);border:1.5px solid var(--green);color:var(--green)}.proc-info{flex:1;padding-top:2px}.proc-name{font-size:12px;font-weight:600;color:var(--text)}.proc-desc{font-size:11px;color:var(--text3);margin-top:1px}.proc-time{font-size:10px;font-family:monospace;color:var(--text3)}.progress-bar{height:3px;background:var(--border);border-radius:2px;margin-top:5px;overflow:hidden}.progress-fill{height:100%;border-radius:2px;background:linear-gradient(90deg,var(--blue),var(--teal));transition:width .4s ease}.result-show{display:flex;flex-direction:column;gap:16px}.metrics-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}@media (max-width: 576px){.metrics-grid{grid-template-columns:1fr}}.metric-card{background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);padding:14px;text-align:center;box-shadow:var(--shadow);transition:all .2s}.metric-card:hover{border-color:var(--border2);transform:translateY(-1px)}.metric-icon{font-size:18px;margin-bottom:6px}.metric-val{font-size:24px;font-weight:700;font-family:monospace;line-height:1}.metric-val.blue{color:var(--blue)}.metric-val.purple{color:var(--purple)}.metric-val.green{color:var(--green)}.metric-label{font-size:10px;color:var(--text3);margin-top:4px;font-weight:500}.metric-change{font-size:9px;margin-top:2px;padding:1px 6px;border-radius:4px;display:inline-block}.metric-change.good{background:var(--green-ll);color:var(--green)}.metric-change.avg{background:var(--amber-ll);color:var(--amber)}.time-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}@media (max-width: 576px){.time-grid{grid-template-columns:1fr}}.tslot{border:1.5px solid var(--border);border-radius:var(--r);padding:10px 8px;text-align:center;cursor:pointer;transition:all .2s;background:var(--bg2)}.tslot:hover{border-color:var(--blue-m);background:var(--blue-l)}.tslot.best{border-color:var(--blue);background:var(--blue-l);box-shadow:0 0 0 3px #3b82f61a}.tslot-h{font-size:15px;font-weight:700;font-family:monospace;color:var(--blue)}.tslot-l{font-size:10px;color:var(--text3);margin-top:1px;line-height:1.3}.tslot-bar{height:3px;border-radius:2px;margin-top:5px;background:var(--border);overflow:hidden}.tslot-fill{height:100%;border-radius:2px}.best .tslot-fill{background:var(--blue)}.tslot:not(.best) .tslot-fill{background:var(--border2)}.suggest-list{display:flex;flex-direction:column;gap:8px}.suggest-item{display:flex;align-items:flex-start;gap:10px;padding:10px 14px;border-radius:var(--r);border:1px solid var(--border);background:var(--bg2);transition:border-color .2s}.suggest-item:hover{border-color:var(--border2)}.s-icon{width:28px;height:28px;border-radius:7px;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:13px}.s-icon.tip{background:var(--blue-ll)}.s-icon.warn{background:var(--amber-ll)}.s-icon.ok{background:var(--green-ll)}.s-text{font-size:12px;color:var(--text2);line-height:1.55;flex:1}.s-text strong{color:var(--text);font-weight:600}@keyframes spin{to{transform:rotate(360deg)}}.spinning{animation:spin .7s linear infinite;display:inline-block}.fade-up{animation:fadeUp .4s ease-out}@keyframes fadeUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:Inter,sans-serif;font-size:16px;color:#111}a{color:inherit;text-decoration:none}
