:root{--bg: #f5f6f8;--surface: #ffffff;--surface-2: #f1f3f6;--border: #e4e7ec;--border-strong: #d0d5dd;--text: #101828;--text-muted: #667085;--text-faint: #98a2b3;--primary: #3457e0;--primary-hover: #2743c0;--primary-soft: #eef2ff;--success: #067647;--success-soft: #ecfdf3;--warning: #b54708;--warning-soft: #fffaeb;--danger: #b42318;--danger-soft: #fef3f2;--info: #175cd3;--info-soft: #eff8ff;--violet: #5925dc;--violet-soft: #f4f3ff;--radius: 12px;--radius-sm: 8px;--shadow-xs: 0 1px 2px rgba(16, 24, 40, .05);--shadow-sm: 0 1px 3px rgba(16, 24, 40, .08), 0 1px 2px rgba(16, 24, 40, .04);--shadow-md: 0 12px 32px rgba(16, 24, 40, .1);--ring: 0 0 0 3px rgba(52, 87, 224, .16);--font: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", system-ui, sans-serif;--mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;color-scheme:light}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:var(--bg);color:var(--text);font-family:var(--font);font-size:14px;line-height:1.55;-webkit-font-smoothing:antialiased}h1,h2,h3{margin:0;font-weight:650;letter-spacing:-.01em}p{margin:0 0 .6rem}a{color:var(--primary)}small{color:var(--text-muted);font-size:.78rem}code{font-family:var(--mono);font-size:.8em}.app-shell{display:flex;flex-direction:column;min-height:100vh}.topbar{position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.85rem clamp(1rem,3vw,2rem);background:#ffffffeb;-webkit-backdrop-filter:saturate(180%) blur(8px);backdrop-filter:saturate(180%) blur(8px);border-bottom:1px solid var(--border)}.brand{display:flex;align-items:center;gap:.7rem;min-width:0}.brand-mark{display:grid;place-items:center;flex:0 0 auto;width:36px;height:36px;border-radius:10px;background:linear-gradient(135deg,var(--primary),#6b8cff);color:#fff;font-size:.76rem;font-weight:750;letter-spacing:.02em}.topbar h1{font-size:1.02rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.eyebrow{margin:0;color:var(--text-faint);font-size:.66rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase}.topbar-meta{display:flex;align-items:center;gap:.65rem;font-size:.8rem;color:var(--text-muted);flex:0 0 auto}.topbar-user{white-space:nowrap}.mode-badge{padding:.22rem .6rem;border-radius:999px;background:var(--warning-soft);border:1px solid #fedf89;color:var(--warning);font-size:.72rem;font-weight:650;white-space:nowrap}.topbar-action{padding:.32rem .7rem;font-size:.8rem}.shell-body{display:grid;grid-template-columns:216px minmax(0,1fr);flex:1}.sidebar{display:flex;flex-direction:column;gap:.2rem;padding:1.1rem .8rem;background:var(--surface);border-right:1px solid var(--border)}.sidebar a{padding:.5rem .7rem;border-radius:var(--radius-sm);color:var(--text-muted);text-decoration:none;font-size:.86rem;font-weight:500;transition:background .15s,color .15s}.sidebar a:hover{background:var(--surface-2);color:var(--text)}.sidebar a.active{background:var(--primary-soft);color:var(--primary);font-weight:650}.workspace{width:100%;max-width:1280px;padding:1.6rem clamp(1rem,3vw,2.5rem) 3rem}.page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-bottom:.4rem}.page-header h2{font-size:1.45rem}.panel-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-bottom:.7rem}.panel-heading code{padding:.12rem .4rem;border-radius:6px;background:var(--surface-2);color:var(--text-faint);font-size:.72rem}.panel{margin:.9rem 0;padding:1.2rem 1.25rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-xs)}.panel h2{font-size:1.02rem}.step{margin:0 0 .1rem;color:var(--primary);font-size:.66rem;font-weight:750;letter-spacing:.1em}.success-panel{border-color:#abefc6;background:linear-gradient(180deg,var(--success-soft),var(--surface) 70%)}.status-pill{display:inline-flex;align-items:center;gap:.35rem;padding:.2rem .55rem;border:1px solid var(--border);border-radius:999px;background:var(--surface-2);color:var(--text-muted);font-size:.72rem;font-weight:650;letter-spacing:.02em;white-space:nowrap}.status-pill:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.65}.status-pill[data-status=PLANNING]{background:var(--info-soft);color:var(--info);border-color:#b2ddff}.status-pill[data-status=READY]{background:var(--warning-soft);color:var(--warning);border-color:#fedf89}.status-pill[data-status=CONFIRMED]{background:var(--success-soft);color:var(--success);border-color:#abefc6}.status-pill[data-status=RUNNING]{background:var(--primary-soft);color:var(--primary);border-color:#c7d7fe}.status-pill[data-status=COMPLETED]{background:var(--violet-soft);color:var(--violet);border-color:#d9d6fe}.status-pill[data-status=REVIEWED]{background:#ecfdf3;color:#05603a;border-color:#a9efc5}.status-pill[data-status=CANCELLED]{background:var(--danger-soft);color:var(--danger);border-color:#fecdca}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.7rem;margin:1.1rem 0}.stats div{padding:.8rem .95rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-xs)}.stats dt{color:var(--text-muted);font-size:.76rem}.stats dd{margin:.2rem 0 0;font-size:1.22rem;font-weight:700;letter-spacing:-.01em}.stepper{display:flex;flex-wrap:wrap;gap:.5rem;margin:1.1rem 0}.stepper span{display:flex;flex:1 1 118px;align-items:center;gap:.45rem;padding:.5rem .7rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-muted);font-size:.82rem}.stepper b{display:grid;place-items:center;width:20px;height:20px;border-radius:50%;background:var(--primary-soft);color:var(--primary);font-size:.7rem;font-weight:700}.product-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(168px,1fr));gap:.6rem;margin:.7rem 0}.product-card{display:grid;gap:.15rem;padding:.75rem .85rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;transition:border-color .15s,box-shadow .15s}.product-card:hover{border-color:var(--border-strong);box-shadow:var(--shadow-sm)}.product-card:has(input:checked){border-color:var(--primary);box-shadow:var(--ring)}.product-card.locked{background:var(--warning-soft);border-color:#fedf89;cursor:default}.product-card.locked span{color:var(--warning);font-size:.74rem;font-weight:650}.product-card strong{font-size:.86rem}.product-card small{color:var(--text-muted);font-size:.76rem}.product-card input[type=checkbox]{width:15px;height:15px;margin:0 0 .1rem;accent-color:var(--primary)}.timeline{list-style:none;margin:.4rem 0 0;padding:0}.timeline li{display:grid;grid-template-columns:10px 1fr auto;align-items:center;gap:.65rem;padding:.5rem 0;border-bottom:1px solid var(--border);font-size:.86rem}.timeline li:last-child{border-bottom:0}.timeline-dot{width:8px;height:8px;border-radius:50%;background:var(--text-faint)}.timeline li[data-status=SUCCEEDED] .timeline-dot{background:var(--success)}.timeline li[data-status=FAILED] .timeline-dot{background:var(--danger)}.timeline li[data-status=RUNNING] .timeline-dot,.timeline li[data-status=WAITING_HUMAN] .timeline-dot{background:var(--warning)}.timeline li[data-status=SKIPPED] .timeline-dot{background:var(--border-strong)}.timeline li>span:last-child{color:var(--text-muted);font-size:.8rem}aside[aria-label=人工确认面板]{margin-top:.7rem;padding:.65rem .85rem;background:var(--info-soft);border:1px solid #b2ddff;border-radius:var(--radius-sm);color:var(--info);font-size:.84rem}button,.button{display:inline-flex;align-items:center;justify-content:center;gap:.35rem;padding:.48rem .9rem;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font-family:inherit;font-size:.84rem;font-weight:550;text-decoration:none;cursor:pointer;transition:background .15s,border-color .15s,box-shadow .15s,opacity .15s}button:hover:not(:disabled),.button:hover{background:var(--surface-2)}button:disabled{opacity:.45;cursor:not-allowed}button:focus-visible,.button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,summary:focus-visible{outline:none;box-shadow:var(--ring)}.primary{background:var(--primary);border-color:var(--primary);color:#fff}.primary:hover:not(:disabled){background:var(--primary-hover);border-color:var(--primary-hover)}.danger{color:var(--danger);border-color:#fecdca}.danger:hover:not(:disabled){background:var(--danger-soft)}.actions{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.85rem}label{display:grid;gap:.3rem;color:var(--text-muted);font-size:.8rem;font-weight:550}input,textarea,select{width:100%;padding:.52rem .65rem;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font-family:inherit;font-size:.86rem;transition:border-color .15s,box-shadow .15s}input:hover,textarea:hover,select:hover{border-color:#b8c0cc}textarea{min-height:120px;resize:vertical}input[type=file]{padding:.35rem;font-size:.78rem}input[type=checkbox],input[type=radio]{width:auto;accent-color:var(--primary)}.field-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:.8rem;margin:.9rem 0}fieldset{margin:.9rem 0;padding:.75rem .95rem;border:1px solid var(--border);border-radius:var(--radius-sm)}legend{padding:0 .3rem;color:var(--text-muted);font-size:.8rem;font-weight:650}.inline-option{display:flex;align-items:center;gap:.45rem;margin:.65rem 0;color:var(--text-muted);font-size:.84rem}pre{margin:.6rem 0;padding:.8rem .95rem;max-height:420px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font-family:var(--mono);font-size:.76rem;line-height:1.65;white-space:pre-wrap;overflow-wrap:anywhere;overflow:auto}details{margin:.9rem 0}details summary{cursor:pointer;padding:.15rem 0;color:var(--text-muted);font-size:.86rem;font-weight:600;list-style:none;-webkit-user-select:none;user-select:none}details summary::-webkit-details-marker{display:none}details summary:before{content:"▸ ";color:var(--text-faint)}details[open] summary:before{content:"▾ "}details summary:hover{color:var(--text)}.notice,.error-banner{margin:.75rem 0;padding:.65rem .85rem;border:1px solid transparent;border-radius:var(--radius-sm);font-size:.84rem}.notice{background:var(--success-soft);border-color:#abefc6;color:var(--success)}.error-banner{background:var(--danger-soft);border-color:#fecdca;color:var(--danger)}.hint{color:var(--text-faint);font-size:.79rem}.markdown-preview{margin:.6rem 0;padding:.8rem .95rem;background:var(--surface-2);border-left:3px solid var(--primary);border-radius:0 var(--radius-sm) var(--radius-sm) 0;font-size:.82rem;white-space:pre-wrap;overflow-wrap:anywhere}.center-card{display:grid;gap:.8rem;width:100%;max-width:400px;margin:9vh auto;padding:1.9rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-md)}.center-card h2{font-size:1.3rem}.center-card>p{color:var(--text-muted);font-size:.86rem}.center-card button{width:100%}.data-table{width:100%;margin-top:.9rem;border-collapse:collapse;font-size:.84rem}.data-table th,.data-table td{padding:.55rem .6rem;border-bottom:1px solid var(--border);text-align:left;vertical-align:middle}.data-table th{background:var(--surface-2);color:var(--text-muted);font-size:.76rem;font-weight:650;letter-spacing:.02em;text-transform:uppercase}.data-table tbody tr:hover{background:var(--surface-2)}.data-table .row-warning{background:var(--warning-soft)}.data-table .row-warning:hover{background:#fff4d6}.warning-text{color:var(--warning);font-size:.79rem;font-weight:600}.ok-text{color:var(--success);font-size:.79rem;font-weight:600}.chip-list{display:flex;flex-wrap:wrap;gap:.45rem;margin:.6rem 0 0;padding:0;list-style:none}.chip{display:inline-flex;align-items:center;gap:.4rem;padding:.3rem .5rem;background:var(--primary-soft);border:1px solid #c7d7fe;border-radius:999px;font-size:.79rem}.chip strong{font-size:.79rem}.chip .chip-price{color:var(--text-muted)}.chip button{padding:0 .3rem;border:0;background:transparent;color:var(--primary);font-size:.95rem;line-height:1;box-shadow:none}.chip button:hover{color:var(--danger)}.chip-source{color:var(--text-faint);font-size:.72rem}.dialog-backdrop{position:fixed;inset:0;z-index:40;display:grid;place-items:center;padding:1.2rem;background:#1018286b}.dialog{width:min(780px,100%);max-height:86vh;overflow:auto;padding:1.2rem 1.3rem 1.4rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-md)}.dialog-wide{width:min(920px,100%)}.dialog:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.dialog-subtitle{margin:.35rem 0 0;color:var(--text-muted);font-size:.84rem}.dialog-close{flex:0 0 auto;width:30px;height:30px;padding:0;border-radius:50%;font-size:1.1rem;line-height:1}.dialog-body{display:grid;gap:.9rem;margin-top:.5rem}.dialog-footer{display:flex;flex-wrap:wrap;gap:.55rem;align-items:center;margin-top:1rem;padding-top:.9rem;border-top:1px solid var(--border)}.dialog-footer .hint{margin:0}.dialog-section{padding:.8rem .9rem;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm)}.dialog-section h3{display:flex;flex-wrap:wrap;gap:.45rem;align-items:center;margin:0 0 .5rem;font-size:.92rem}.dialog-section p{margin:.3rem 0;font-size:.86rem}.dialog-section-head{display:flex;flex-wrap:wrap;gap:.6rem;justify-content:space-between;align-items:center}.dialog-tag{padding:.1rem .45rem;border-radius:999px;background:var(--warning-soft);color:var(--warning);font-size:.72rem;font-weight:650}.dialog-tag-info{background:var(--info-soft);color:var(--info)}.dialog-summary{margin:0;padding:.55rem .75rem;background:var(--primary-soft);border-radius:var(--radius-sm);color:var(--primary);font-size:.86rem}.dialog-list{margin:.35rem 0 0;padding-left:1.1rem;color:var(--text-muted);font-size:.82rem}.dialog-evidence{font-size:.82rem}.dialog-evidence pre{max-height:180px;overflow:auto}.actions-inline{margin:0}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.picker-grid{max-height:40vh;overflow:auto;padding:.15rem}.progress-list{display:grid;gap:.35rem;margin:.7rem 0 0;padding:0;list-style:none}.progress-list li{display:flex;gap:.55rem;align-items:baseline;padding:.4rem .6rem;background:var(--surface-2);border-radius:var(--radius-sm);font-size:.82rem}.progress-list li[data-kind="run.failed"]{background:var(--danger-soft);color:var(--danger)}.progress-list li[data-kind="run.completed"]{background:var(--success-soft);color:var(--success)}.progress-list li[data-kind="run.waiting_human"]{background:var(--warning-soft);color:var(--warning)}.progress-node{font-family:var(--mono);font-size:.74rem;color:var(--text-muted)}.progress-text{font-weight:600}.campaign-workspace{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:1rem;align-items:start}.campaign-main{display:grid;gap:.9rem;min-width:0}.progress-rail{position:sticky;top:1rem;display:grid;gap:.55rem;padding:.9rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.rail-head{display:flex;gap:.6rem;justify-content:space-between;align-items:flex-start}.rail-head h2{margin:.1rem 0 0;font-size:.98rem}.rail-meta{display:grid;gap:.35rem;margin:0;padding:.5rem 0 0;border-top:1px solid var(--border)}.rail-meta div{display:flex;gap:.5rem;justify-content:space-between;font-size:.8rem}.rail-meta dt{color:var(--text-muted)}.rail-meta dd{margin:0;font-weight:650}.rail-list{max-height:320px;overflow:auto;margin-top:.4rem}.progress-clock{font-family:var(--mono);font-size:.72rem;color:var(--text-faint)}.progress-cost{margin-left:auto;font-family:var(--mono);font-size:.72rem;color:var(--text-muted)}.rail-action{width:100%;margin-top:.2rem}.campaign-chat{display:grid;grid-template-rows:minmax(0,1fr) auto;min-height:520px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);overflow:hidden}.chat-stream{display:grid;gap:.7rem;align-content:start;max-height:62vh;padding:1rem;overflow:auto}.chat-row{display:flex}.chat-row[data-role=OPERATOR]{justify-content:flex-end}.chat-bubble{max-width:min(640px,88%);padding:.7rem .85rem;border-radius:var(--radius);background:var(--surface-2);border:1px solid var(--border);font-size:.87rem}.chat-bubble p{margin:.15rem 0 0;white-space:pre-wrap}.chat-bubble header{display:flex;flex-wrap:wrap;gap:.45rem;align-items:baseline}.chat-meta{display:block;margin-top:.35rem;color:var(--text-faint);font-size:.74rem}.chat-badge{padding:.1rem .45rem;border-radius:999px;background:var(--primary-soft);color:var(--primary);font-size:.72rem;font-weight:650}.chat-badge-plan{background:var(--violet-soft);color:var(--violet)}.chat-brief{max-width:100%;background:var(--surface);border-color:var(--border-strong)}.chat-objective{color:var(--text);font-size:.88rem}.chat-facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:.4rem .9rem;margin:.6rem 0 0}.chat-facts dt{color:var(--text-muted);font-size:.74rem}.chat-facts dd{margin:.1rem 0 0;font-size:.86rem;font-weight:650}.chat-operator{background:var(--primary-soft);border-color:#c7d7fe}.chat-agent,.chat-plan{background:var(--violet-soft);border-color:#d9d6fe}.chat-plan footer{display:flex;flex-wrap:wrap;gap:.6rem;justify-content:space-between;align-items:baseline}.chat-interrupt{background:var(--warning-soft);border-color:#fedf89}.chat-interrupt[data-resolved=true]{background:var(--success-soft);border-color:#abefc6}.chat-system{margin:0;padding:.4rem .75rem;color:var(--text-muted);font-size:.78rem;text-align:center}.chat-system[data-level=error]{color:var(--danger)}.chat-loading{display:flex;gap:.5rem;align-items:center;color:var(--text-muted)}.chat-dots{display:inline-flex;gap:.2rem}.chat-dots i{width:6px;height:6px;border-radius:50%;background:var(--violet);animation:chat-blink 1.1s infinite ease-in-out}.chat-dots i:nth-child(2){animation-delay:.18s}.chat-dots i:nth-child(3){animation-delay:.36s}@keyframes chat-blink{0%,80%,to{opacity:.25;transform:translateY(0)}40%{opacity:1;transform:translateY(-2px)}}.chat-composer{padding:.8rem .9rem .9rem;background:var(--surface-2);border-top:1px solid var(--border)}.chat-composer textarea{min-height:54px;background:var(--surface)}.chat-composer-actions{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center;margin-top:.5rem}.chat-composer-actions .hint{margin:0}.link-button{padding:0;border:0;background:transparent;color:var(--primary);font-size:.8rem;box-shadow:none}.link-button:hover:not(:disabled){text-decoration:underline;background:transparent}.pending-confirm{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center;justify-content:space-between;padding:.6rem .8rem;background:var(--warning-soft);border:1px solid #fedf89;border-radius:var(--radius-sm);font-size:.84rem;color:var(--warning)}.product-meta{display:flex;flex-wrap:wrap;gap:.5rem;color:var(--text-muted);font-size:.74rem}.product-reason{color:var(--violet);font-size:.74rem}.plan-totals{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:.5rem .9rem;margin:0}.plan-totals dt{color:var(--text-muted);font-size:.74rem}.plan-totals dd{margin:.1rem 0 0;font-size:1rem;font-weight:700}@media(max-width:1080px){.campaign-workspace{grid-template-columns:1fr}.progress-rail{position:static;order:2}.chat-stream{max-height:none}}@media(max-width:860px){.shell-body{grid-template-columns:1fr}.sidebar{flex-direction:row;overflow-x:auto;gap:.3rem;padding:.55rem .7rem;border-right:0;border-bottom:1px solid var(--border)}.sidebar a{white-space:nowrap}.workspace{padding:1.1rem 1rem 2.4rem}.topbar-meta{display:none}.stats,.field-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.page-header h2{font-size:1.25rem}}@media(prefers-reduced-motion:reduce){*{transition:none!important}}
