:root{--bg:#f5f6f3;--ink:#1e302b;--muted:#718078;--line:#e1e6df;--green:#1c5843;--soft:#edf3e9;--gold:#946521;--white:#fff}*{box-sizing:border-box}body{margin:0;font-family:Inter,'Microsoft YaHei','Segoe UI',sans-serif;color:var(--ink);background:var(--bg);font-size:14px;line-height:1.65}button,input,textarea,select{font:inherit}button,a,input,select,textarea{outline-offset:4px}button{cursor:pointer}button:disabled{opacity:.5;cursor:wait}a{color:var(--green)}[hidden]{display:none!important}h1,h2,h3,p{margin-top:0}h1{font-size:28px;letter-spacing:-.8px;margin-bottom:0}h2{font-size:23px;letter-spacing:-.5px;margin-bottom:8px}h3{font-size:16px;margin-bottom:14px}p{color:var(--muted)}small{color:var(--muted);font-size:11px}.eyebrow{font-size:10px;letter-spacing:2px;font-weight:700;color:var(--green);margin-bottom:8px}.primary,.secondary,.quiet{border-radius:9px;padding:10px 17px;border:1px solid var(--line);font-weight:600;text-decoration:none;display:inline-block}.primary{background:var(--green);color:white;border-color:var(--green)}.primary:hover{background:#124735}.secondary{background:white;color:var(--ink)}.secondary:hover{background:var(--soft)}.quiet{border:0;background:transparent;color:var(--muted);padding:5px 8px}.wide{width:100%}aside{width:238px;position:fixed;inset:0 auto 0 0;background:#fff;border-right:1px solid var(--line);padding:32px 22px;display:flex;flex-direction:column}.brand{text-decoration:none;display:flex;gap:9px;align-items:center;font-size:21px;color:var(--green)}.brand strong{font-size:18px}.brand span{font-size:11px;color:var(--muted)}.sidebar-caption{font-size:10px;letter-spacing:1px;margin:5px 0 30px}nav{margin-top:30px;display:grid;gap:7px}.nav{border:0;border-radius:8px;text-align:left;padding:12px;background:none;color:var(--muted)}.nav.active{background:var(--soft);color:var(--green);font-weight:700}.history-head{font-size:11px;color:var(--muted);margin:32px 0 12px;display:flex;justify-content:space-between}#task-list{overflow:auto;flex:1}.task-item{display:block;border:0;background:none;text-align:left;width:100%;padding:12px 8px;border-radius:6px;font-size:12px;color:var(--muted)}.task-item.active{color:var(--green);background:#f5f7f3}.sidebar-bottom{font-size:10px;display:flex;align-items:center;gap:7px;border-top:1px solid var(--line);padding-top:18px}.status-dot{width:6px;height:6px;background:#6a9c74;border-radius:50%}main{margin-left:238px;padding:32px 42px;max-width:1800px}header{display:flex;justify-content:space-between;align-items:center;margin-bottom:30px}.top-chips{display:flex;gap:8px}.chip{font-size:10px;border-radius:30px;background:var(--soft);color:var(--green);padding:5px 10px;white-space:nowrap}.amber{background:#faf0dc;color:var(--gold)}.intro{padding:22px 0;display:flex;align-items:center;justify-content:space-between;gap:20px}.intro p{margin:0;font-size:12px}.steps{border:1px solid var(--line);background:#f0f3ed;display:flex;justify-content:space-between;padding:14px 26px;border-radius:10px;font-size:11px;color:#5b7263;margin:6px 0 25px}.steps i{font-style:normal;color:#a9b6a7}.workspace-grid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(300px,1fr);gap:22px}.card{background:white;border:1px solid var(--line);border-radius:13px;padding:23px;margin-bottom:20px}.card-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px}.card-heading h3{margin:0}.subtle{font-size:11px;color:var(--muted)}label{display:block;font-size:12px;font-weight:500;margin-bottom:13px}input:not([type=checkbox]),textarea,select{width:100%;display:block;border:1px solid var(--line);padding:10px 12px;border-radius:7px;background:#fcfdfb;color:var(--ink);margin-top:6px}textarea{resize:vertical;min-height:92px}input[type=file]{font-size:11px}.action-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:10px}.image-zone{border-top:1px solid var(--line);padding-top:18px;margin-top:22px;display:flex;flex-wrap:wrap;gap:8px}.image-zone label{width:100%;margin:0}.image-zone input{flex:1;min-width:150px;margin:0}#image-suggestions{width:100%}.fields{display:grid;grid-template-columns:1fr 1fr;gap:0 14px}.questions{font-size:12px;color:var(--gold);margin-top:12px}.questions ul{padding-left:18px}.run-card{background:#edf2e8}.run-card h3{font-size:19px;margin-bottom:8px}.run-card p{font-size:12px}.run-card small{display:block;margin-top:12px}.events{max-height:370px;overflow:auto}.event{border-left:2px solid #b6caba;padding:0 0 14px 13px;margin:8px 0;font-size:12px}.event b{font-weight:600}.event small{display:block}.event details{font-size:10px;color:var(--muted)}pre{white-space:pre-wrap;word-break:break-word;font-size:11px;background:#f5f7f3;padding:12px;border-radius:7px;max-height:300px;overflow:auto}.messages{max-height:200px;overflow:auto}.message{background:#f3f5f0;padding:12px;border-radius:8px;margin-bottom:12px;font-size:12px}.message p{margin:6px 0 0;color:var(--gold)}.results{margin-top:26px}.proposal-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:20px}.proposal h3{margin:12px 0 4px}.proposal-hero{display:flex;gap:20px;align-items:center}.button-art{width:86px;height:86px;background:#525751;box-shadow:inset 0 0 0 7px #646a62,0 6px 14px #24332925;border-radius:50%;display:grid;grid-template-columns:9px 9px;grid-template-rows:9px 9px;gap:9px;justify-content:center;align-content:center;flex-shrink:0}.button-art i{background:#e7e9e4;border-radius:100%;box-shadow:inset 0 1px 3px #0008}.amount{font-size:29px;letter-spacing:-1px;color:var(--green);font-weight:700;margin:10px 0}.amount small{letter-spacing:0;font-weight:400;margin-left:6px}.cost-row{display:flex;justify-content:space-between;font-size:12px;margin-top:10px;position:relative}.cost-row span{position:relative;z-index:1}.cost-row:before{content:'';position:absolute;inset:0 auto 0 0;width:var(--bar);background:#edf3e9;border-radius:3px}.sources{border-top:1px solid var(--line);padding-top:12px;margin-top:18px;font-size:11px;color:var(--muted)}.data-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px}.checkbox{display:flex;align-items:center;gap:7px}.template-links{display:flex;gap:12px;flex-wrap:wrap;font-size:12px;margin:22px 0 10px}.template-links b{width:100%}.catalog-row{border-top:1px solid var(--line);padding:16px 0;display:flex;justify-content:space-between;gap:18px;align-items:center}.catalog-row small{display:block}.empty{text-align:center;color:var(--muted);padding:50px 20px;font-size:13px}.flow{display:flex;align-items:center;justify-content:space-between;gap:12px}.flow div{background:var(--soft);border-radius:10px;padding:20px 12px;text-align:center;font-weight:600;font-size:12px}.flow b{color:#98ac9b}.callout{background:#fff5df;padding:16px;color:#816023;font-size:12px;border-radius:8px;margin:25px 0 0}.roles{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.roles p{font-size:12px}.role-label{font-size:10px;letter-spacing:1px;color:var(--green)}footer{margin-top:45px;border-top:1px solid var(--line);padding-top:18px;font-size:10px;color:var(--muted);display:flex;justify-content:space-between}#notice{position:sticky;top:12px;z-index:5;padding:12px 18px;border:1px solid #d7dfc4;background:#f6f8e9;border-radius:8px;font-size:12px;margin-bottom:12px}.login-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;background:radial-gradient(ellipse at 25% 30%,#dfebd7,transparent 60%)}.login-card{width:470px;background:#fff;border:1px solid var(--line);border-radius:20px;padding:42px;box-shadow:0 24px 80px #233d2910}.login-card h1{font-size:29px;line-height:1.5;margin:20px 0}.login-card .primary{width:100%;margin-bottom:18px}.brand-icon{font-size:40px;color:var(--green);margin-bottom:20px}#login-error{color:#a54a34;font-size:12px}.busy{animation:pulse 1.5s infinite}@keyframes pulse{50%{opacity:.45}}@media(max-width:1100px){main{padding:24px}aside{width:205px;padding:28px 15px}main{margin-left:205px}.workspace-grid{grid-template-columns:1fr}.roles{grid-template-columns:1fr 1fr}.top-chips{flex-wrap:wrap;justify-content:flex-end}}@media(max-width:720px){aside{position:static;width:auto;padding:16px}.sidebar-caption,.history-head,#task-list,.sidebar-bottom{display:none}nav{display:flex;margin:14px 0 0;gap:4px}.nav{flex:1;text-align:center;font-size:11px;padding:9px 4px}aside>.primary{margin-top:12px}.brand{justify-content:center}main{margin-left:0;padding:18px}.data-grid,.roles{grid-template-columns:1fr}.intro{align-items:flex-start;flex-direction:column}.steps{padding:12px 10px;font-size:9px}.card{padding:18px}header{gap:10px}h1{font-size:23px}.chip{white-space:normal}.flow{flex-wrap:wrap}.login-card{margin:18px;padding:28px}.action-row{align-items:flex-start;flex-direction:column}footer span{display:none}}@media print{aside,header,.intro,.steps,.workspace-grid,footer,#notice,.results .secondary{display:none!important}main{margin:0;padding:0}.proposal-grid{display:block}.proposal{break-inside:avoid}.proposal button{display:none}body{background:white}}

/* Step pages: vertical content flow, independent of backend capabilities. */
main { max-width: 1400px; }
.wizard-intro { align-items: flex-start; }
.wizard-steps { display: flex; gap: 8px; margin: 0 0 24px; }
.wizard-steps button { flex: 1; display: flex; align-items: center; gap: 10px; text-align: left; padding: 14px 18px; border: 1px solid var(--line); border-radius: 9px; background: white; color: var(--muted); }
.wizard-steps button span { font-size: 11px; }
.wizard-steps button.active { background: var(--green); color: white; border-color: var(--green); }
.wizard-steps button:disabled { cursor: not-allowed; opacity: .5; }
.flow-page { max-width: 960px; margin: 0 auto; }
.page-hint { margin: 0 0 22px; font-size: 13px; }
.fields, .data-grid, .roles, .proposal-grid { grid-template-columns: minmax(0, 1fr); }
.fields { gap: 0; }
.fields input { max-width: 100%; }
.action-row, .image-zone { display: flex; flex-direction: column; align-items: stretch; }
.action-row .primary { align-self: flex-end; }
.image-zone input { width: 100%; flex: auto; }
.image-zone button { align-self: flex-start; }
.messages, .events { max-height: none; overflow: visible; }
.page-actions { display: flex; flex-direction: column; align-items: stretch; gap: 10px; margin: 24px 0; padding-top: 18px; border-top: 1px solid var(--line); }
.summary-list { margin: 0 0 18px; }
.summary-list > div { display: flex; justify-content: space-between; gap: 16px; padding: 10px 0; border-bottom: 1px solid var(--line); }
.summary-list dt { color: var(--muted); font-size: 12px; }
.summary-list dd { margin: 0; text-align: right; overflow-wrap: anywhere; }
.results { margin-top: 0; }
/* Keep feedback visible when an action is below the top of a step page. */
#notice { position: sticky; top: 12px; }
button:disabled { cursor: not-allowed; }
#run:disabled { cursor: progress; }
.flow { flex-direction: column; align-items: stretch; }
.flow b { text-align: center; transform: rotate(90deg); }
.template-links { gap: 12px; }
@media(max-width:720px) {
  .wizard-steps { flex-direction: column; }
  .wizard-steps button { padding: 10px 14px; }
  .wizard-intro { gap: 12px; }
  .results > .card-heading { flex-direction: column; align-items: stretch; }
  .catalog-row { flex-direction: column; align-items: stretch; }
}
@media print {
  .wizard-steps, .page-actions, .page-hint, #step-requirements, #step-analysis { display: none !important; }
  #step-results { display: block !important; }
  .flow-page { max-width: none; }
}
