:root{background:#fdfcfc;color:#201d1d;font-family:Berkeley Mono,SFMono-Regular,Cascadia Code,Roboto Mono,Liberation Mono,Menlo,Consolas,monospace;font-synthesis:none;line-height:1.5;--canvas: #fbfaf8;--surface-soft: #f5f3f0;--surface-card: #ece8e3;--surface-raised: #fffefd;--ink: #201d1d;--ink-deep: #0f0000;--charcoal: #302c2c;--body: #424245;--mute: #646262;--ash: #9a9898;--hairline: rgba(15, 0, 0, .1);--hairline-soft: rgba(15, 0, 0, .06);--hairline-strong: rgba(15, 0, 0, .28);--on-dark: #fdfcfc;--accent: #007aff;--accent-hover: #0056b3;--danger: #ff3b30;--warning: #ff9f0a;--success: #30d158}*{box-sizing:border-box}body{background:var(--canvas);margin:0;min-height:100vh}button,input,select,textarea{font:inherit}button{background:var(--canvas);border:1px solid var(--hairline);border-radius:0;color:var(--ink);cursor:pointer;font-weight:500;min-height:36px;transition:background-color .15s ease,border-color .15s ease,color .15s ease,transform .15s ease}button:hover:not(:disabled){background:var(--surface-soft);border-color:var(--hairline-strong)}button:active:not(:disabled){transform:translateY(1px)}button:disabled{background:var(--surface-card);color:var(--ash);cursor:not-allowed}h1,h2,h3,h4,p{margin-top:0;overflow-wrap:anywhere}h1{font-size:24px;font-weight:700;letter-spacing:0;line-height:1.25;margin-bottom:0}h2{font-size:20px;font-weight:700;letter-spacing:0;line-height:1.35;margin-bottom:8px}h3{font-size:16px;font-weight:700;letter-spacing:0;line-height:1.4;margin-bottom:8px}small{color:var(--mute);overflow-wrap:anywhere}label{color:var(--charcoal);display:grid;font-size:14px;font-weight:700;gap:8px}input,select,textarea{background:var(--surface-soft);border:1px solid var(--hairline);border-radius:0;color:var(--ink);min-width:0;padding:8px 12px;transition:background-color .15s ease,border-color .15s ease,box-shadow .15s ease}input:focus,select:focus,textarea:focus{background:var(--canvas);border-color:var(--accent);box-shadow:0 0 0 3px #007aff24;outline:none}textarea{resize:vertical}.shell{min-height:100vh;min-width:0;padding:20px 24px}.topbar{align-items:center;display:flex;justify-content:space-between}.topbar{background:var(--canvas);border-bottom:1px solid var(--hairline-soft);margin-bottom:12px;min-height:52px;padding-bottom:12px}.topbar-workbench{display:grid;gap:16px;grid-template-columns:auto minmax(0,1fr) auto;margin-bottom:14px;min-height:44px;padding-bottom:10px}.topbar-workbench .brand-lockup{gap:10px}.topbar-workbench .brand-mark{font-size:12px;height:32px;width:42px}.topbar-workbench .eyebrow{display:none}.topbar-workbench h1{font-size:18px;white-space:nowrap}.workbench-actions{align-items:center;display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}.brand-lockup{align-items:center;display:flex;gap:12px}.brand-mark{align-items:center;background:var(--ink);border:1px solid var(--ink);border-radius:0;color:var(--on-dark);display:inline-flex;font-size:14px;font-weight:700;height:36px;justify-content:center;width:48px}.brand-mark:before{content:"["}.brand-mark:after{content:"]"}.eyebrow{color:var(--mute);font-size:13px;font-weight:700;letter-spacing:0;margin:0 0 4px;text-transform:uppercase}.error-banner,.notice-banner{border-radius:0;margin-bottom:16px;padding:12px 16px}.error-banner{background:#fff1f0;border:1px solid var(--danger)}.notice-banner{background:#f2f8ff;border:1px solid rgba(0,122,255,.36)}.project-page{align-items:start;display:grid;gap:24px;grid-template-columns:minmax(280px,360px) minmax(320px,1fr);margin:48px auto 0;max-width:960px;min-width:0}.project-hero{border:1px solid var(--hairline);grid-column:1 / -1;padding:24px}.project-hero h2{font-size:30px;line-height:1.35;margin-bottom:8px}.project-hero p:last-child{color:var(--body);font-size:16px;margin-bottom:0}.project-form,.project-list,.daemon-panel{background:var(--canvas);border:1px solid var(--hairline);border-radius:0}.project-form{align-content:start;display:grid;gap:16px;padding:24px}.daemon-panel{display:grid;gap:8px;grid-column:1 / -1;padding:16px 24px}.daemon-panel p{color:var(--body);margin:0}.daemon-panel small{color:var(--ash)}.daemon-panel code{background:var(--surface-soft);border:1px solid var(--hairline);color:var(--body);display:block;max-width:100%;overflow-wrap:anywhere;padding:8px}.daemon-panel-offline{border-color:var(--danger)}.daemon-panel-token-required{border-color:var(--accent)}.token-row{align-items:end;display:grid;gap:16px;grid-template-columns:minmax(0,1fr) auto}.token-row label{margin:0}.token-row button{min-height:40px;padding:0 16px}.form-heading p,.project-form p{color:var(--body);margin-bottom:0}.project-form button,.step-actions button,.chat-form button{min-height:40px;padding:0 16px}.primary-button,.step-actions button:first-child{background:var(--ink);border-color:var(--ink);color:var(--on-dark)}.primary-button:hover:not(:disabled),.step-actions button:first-child:hover:not(:disabled){background:var(--ink-deep);border-color:var(--ink-deep)}.primary-button:disabled,.step-actions button:first-child:disabled{background:var(--surface-card);border-color:var(--hairline);color:var(--ash)}.project-list{align-content:start;display:grid;gap:8px;min-height:280px;padding:16px}.project-row{align-items:flex-start;background:var(--canvas);border-color:transparent;border-radius:0;border-top:1px solid var(--hairline);display:grid;gap:4px;justify-items:start;overflow:hidden;padding:16px 8px 16px 40px;position:relative;text-align:left;width:100%}.project-row:first-child{border-top-color:transparent}.project-row:before{color:var(--ink);content:"[+]";font-weight:700;left:8px;position:absolute;top:16px}.project-row:hover:not(:disabled){background:var(--surface-soft)}.project-row span{font-weight:700}.project-empty{align-items:center;align-self:center;color:var(--body);display:grid;gap:8px;justify-items:center;padding:40px 24px;text-align:center}.project-empty strong{color:var(--ink);font-size:16px}.project-empty p{margin-bottom:0}.empty-folder-icon{align-items:center;border:1px solid var(--hairline);border-radius:0;color:var(--mute);display:inline-flex;height:44px;justify-content:center;width:76px}.empty-folder-icon:before{content:"[dir]";font-weight:700}.empty-folder-icon:after{content:none}.workbench{display:grid;gap:12px;grid-template-columns:minmax(0,1fr);min-width:0}.workbench-grid{align-items:stretch;display:grid;gap:18px;grid-template-columns:minmax(248px,288px) minmax(432px,1fr) minmax(328px,384px);height:calc(100dvh - 72px);min-width:0}.step-progress,.main-panel,.artifact-chat{height:100%;min-width:0}.main-panel{min-height:0}.workbench-project-summary{color:var(--body);justify-self:start;min-width:0}.workbench-project-summary summary{align-items:baseline;cursor:pointer;display:flex;gap:10px;list-style:none;min-width:0}.workbench-project-summary summary::-webkit-details-marker{display:none}.workbench-project-summary summary:after{color:var(--ash);content:"v";font-size:13px}.workbench-project-summary[open] summary:after{content:"^"}.project-summary-label{color:var(--mute);font-size:12px;font-weight:700}.project-summary-path{color:var(--mute);font-size:13px;max-width:min(44vw,560px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-summary-details{align-items:center;color:var(--mute);display:flex;gap:10px;margin-top:8px}.project-summary-details code{background:var(--surface-soft);border-radius:0;color:var(--body);padding:4px 8px}.daemon-pill{background:#edf8f1;border-radius:0;color:#1f7a3a;font-size:12px;font-weight:700;padding:5px 10px}.step-progress{align-self:stretch;background:var(--surface-soft);border:0;border-radius:0;display:grid;grid-template-rows:auto minmax(0,1fr);overflow:hidden;padding:16px 10px 16px 14px}.step-progress h2{border-bottom:0;padding-bottom:8px}.artifact-chat h2{border-bottom:0;font-size:18px;line-height:1.25;margin-bottom:6px;padding-bottom:8px}.step-progress ol{display:grid;gap:0;list-style:none;margin:0;min-height:0;overflow:auto;padding:0}.progress-item{position:relative}.progress-item button{align-items:flex-start;border-color:transparent;border-radius:0;display:grid;gap:10px;grid-template-columns:34px minmax(0,1fr);min-height:52px;padding:10px 8px;position:relative;text-align:left;width:100%;z-index:1}.progress-item.current button{background:var(--surface-raised);border-color:transparent;box-shadow:inset 3px 0 0 var(--accent)}.progress-item.ready button:hover{background:#ffffff9e;border-color:transparent}.progress-item.completed button{background:transparent}.progress-item.locked button{color:var(--ash)}.progress-marker{color:var(--mute);display:inline-flex;font-size:13px;font-weight:700;justify-content:flex-start;line-height:24px;min-width:28px}.progress-item.current .progress-marker{color:var(--ink);position:relative}.progress-item.current .progress-marker:after{animation:step-cursor 1.2s steps(2,jump-none) infinite;color:var(--accent);content:"_";margin-left:2px}.progress-item.completed .progress-marker{color:var(--success)}.progress-item strong{display:block;font-size:14px;line-height:1.4}.progress-item small{display:block;margin-top:4px}.step-detail{align-content:start;background:var(--surface-raised);border:1px solid var(--hairline-soft);border-radius:0;display:grid;gap:14px;grid-template-columns:minmax(0,1fr);height:100%;min-width:0;overflow:auto;padding:24px 32px}.step-detail>*,.step-header>*,.condition-grid>*,.panel-heading>*,.artifact-list>*,.artifact-heading>*,.technical-panel>*,.artifact-chat>*{min-width:0}.step-header{align-items:flex-start;display:flex;gap:16px;justify-content:space-between}.step-header p{color:var(--body);margin-bottom:0}.status{border:1px solid var(--hairline);border-radius:0;color:var(--mute);flex:0 0 auto;padding:6px 10px;text-transform:lowercase}.status:before{content:"["}.status:after{content:"]"}.status-running{border-color:var(--warning);color:#8a5a00}.status-succeeded{border-color:var(--success);color:#1f7a3a}.status-failed{border-color:var(--danger);color:var(--danger)}.condition-panel{background:var(--surface-soft);border-radius:0;color:var(--body);padding:8px 12px}.condition-panel summary{align-items:center;cursor:pointer;display:flex;gap:12px;justify-content:space-between;list-style:none}.condition-panel summary::-webkit-details-marker{display:none}.condition-panel summary:after{color:var(--ash);content:"展开";font-size:12px;font-weight:700}.condition-panel[open] summary:after{content:"收起"}.condition-panel summary span{color:var(--ink);font-weight:700}.condition-panel summary strong{color:var(--mute);font-size:13px}.output-panel,.technical-panel{border-top:1px solid var(--hairline-soft);padding-top:16px}.condition-grid{align-items:center;display:flex;flex-wrap:wrap;gap:8px 14px;margin-top:12px}.condition{align-items:center;background:transparent;border:0;border-radius:0;display:grid;font-size:13px;gap:6px;grid-template-columns:auto minmax(0,1fr);padding:0}.condition.ok span:first-child{color:var(--mute)}.condition.blocked span:first-child{color:var(--danger)}.condition span:first-child{border:1px solid var(--hairline);border-radius:0;font-size:12px;line-height:1.2;min-width:0;padding:2px 5px}.condition span:last-child{color:var(--mute)}.blocked-note{color:var(--danger);font-size:13px;margin:12px 0 0}.step-actions{align-items:center;display:flex;flex-wrap:wrap;gap:10px;min-width:0}.step-actions button:first-child{font-size:16px;min-height:44px;padding:0 20px}.step-actions button:first-child:before{content:"[run] "}.step-actions button{overflow-wrap:anywhere;white-space:normal}.panel-heading{align-items:baseline;display:flex;gap:10px;justify-content:space-between;min-width:0}.artifact-list,.chat-messages{display:grid;gap:12px}.artifact-card{background:transparent;border-top:1px solid var(--hairline-soft);padding:12px 0 0}.artifact-card.missing{color:var(--mute)}.artifact-heading{align-items:flex-start;display:grid;gap:12px;grid-template-columns:minmax(0,1fr) auto}.artifact-heading h3{margin-bottom:2px}.artifact-heading button{min-height:32px;padding:0 10px}.markdown-preview{color:var(--body);margin-top:10px;min-width:0;overflow-wrap:anywhere;word-break:break-word}.markdown-preview *{min-width:0;overflow-wrap:anywhere;word-break:break-word}.markdown-preview h3,.markdown-preview h4{color:var(--ink);margin:12px 0 6px}.markdown-preview p,.markdown-preview ul,.markdown-preview blockquote,.markdown-table-wrap{margin-bottom:8px}.markdown-preview code{background:var(--surface-soft);border:1px solid var(--hairline-soft);border-radius:0;color:var(--ink);font-size:.92em;padding:1px 4px}.markdown-preview blockquote{border-left:3px solid var(--hairline-strong);color:var(--body);margin-left:0;padding:4px 0 4px 12px}.markdown-preview blockquote p{margin-bottom:0}.markdown-table-wrap{max-width:100%;overflow-x:auto}.markdown-preview table{border-collapse:collapse;font-size:.94em;min-width:100%}.markdown-preview th,.markdown-preview td{border:1px solid var(--hairline);padding:6px 8px;text-align:left;vertical-align:top}.markdown-preview th{background:var(--surface-soft);color:var(--ink);font-weight:700}.code-preview,.run-log{background:var(--surface-card);border:1px solid var(--hairline);border-radius:0;color:var(--ink);margin:10px 0 0;max-height:260px;overflow:auto;padding:12px;white-space:pre-wrap;word-break:break-word}.link-button{background:transparent;border-color:transparent;color:var(--ink);padding:0;text-decoration:underline;text-underline-offset:3px}.artifact-chat{align-content:stretch;background:var(--surface-soft);border:0;border-radius:0;display:grid;gap:0;grid-template-rows:auto minmax(0,1fr) auto;height:100%;overflow:hidden}.artifact-chat-header,.chat-context,.advanced-panel{padding:8px 16px}.artifact-chat-header{padding:12px 16px 8px}.artifact-chat-scroll{display:grid;gap:4px;grid-template-rows:minmax(0,1fr) auto;min-height:0;overflow:auto}.artifact-picker{display:flex;flex-wrap:nowrap;gap:6px;overflow-x:auto;padding-bottom:2px}.artifact-chip{background:#ffffff9e;border-color:transparent;border-radius:0;font-size:12px;min-height:28px;padding:0 9px;white-space:nowrap}.artifact-chip:before{content:""}.artifact-chip.active{background:var(--ink);border-color:var(--ink);color:var(--on-dark)}.chat-target,.empty{color:var(--mute);font-size:13px;margin-bottom:6px;overflow-wrap:anywhere}.chat-context{min-height:0;overflow:auto;padding:8px 16px}.chat-messages{max-height:none;overflow:auto;padding-right:4px}.chat-message{background:var(--surface-raised);border:0;border-radius:0;font-size:13px;justify-self:start;max-width:86%;padding:8px 10px}.chat-message strong{color:var(--ink)}.chat-message strong:before{content:"["}.chat-message strong:after{content:"]"}.chat-message p{color:var(--body);line-height:1.45;margin:3px 0 0;overflow-wrap:anywhere}.chat-message.user{background:var(--ink);border-color:var(--ink);justify-self:end}.chat-message.user strong,.chat-message.user p{color:var(--on-dark)}.chat-form{background:var(--surface-soft);border-top:1px solid var(--hairline-soft);bottom:0;display:grid;font-size:13px;gap:6px;margin-top:0;padding:10px 16px 12px;position:sticky}.chat-form textarea{line-height:1.45;max-height:84px;min-height:64px}.advanced-panel{background:transparent;border:0;border-radius:0;color:var(--body);padding:8px 16px}.advanced-panel summary{color:var(--ink);cursor:pointer;font-weight:700}.advanced-panel summary::marker{content:"[+] "}.advanced-panel[open] summary::marker{content:"[-] "}.advanced-panel label{margin-top:12px}.advanced-controls{display:grid;gap:10px;grid-template-columns:repeat(2,minmax(0,1fr))}.usage-panel{background:#ffffff94;border:0;border-radius:0;margin-top:12px;padding:12px}.usage-panel h3{color:var(--ink);font-size:14px;margin-bottom:8px}.usage-total{color:var(--ink);font-size:18px;font-weight:700;line-height:1.3;margin-bottom:8px}.usage-breakdown{color:var(--mute);display:flex;flex-wrap:wrap;font-size:12px;gap:8px}.usage-breakdown span{background:var(--canvas);border:1px solid var(--hairline);border-radius:0;padding:4px 8px}@media (max-width: 1180px){.workbench-grid,.project-page,.condition-grid,.artifact-heading,.step-header{grid-template-columns:1fr}.step-header{display:grid}}@keyframes step-cursor{0%,45%{opacity:1}46%,to{opacity:0}}
