:root{--bg:#0d1117;--surface:#161b22;--border:#30363d;--text:#e6edf3;--text-muted:#8b949e;--accent:#58a6ff;--success:#3fb950;--warning:#d29922;--danger:#f85149}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif;background:var(--bg);color:var(--text);line-height:1.5}.container{max-width:960px;margin:0 auto;padding:24px 16px}header{margin-bottom:32px}header h1{font-size:20px;font-weight:600;color:var(--text)}header .phase{font-size:13px;color:var(--text-muted);margin-top:4px}.error{background:#f8514922;border:1px solid var(--danger);border-radius:6px;padding:12px 16px;color:var(--danger);font-size:14px}.loading{color:var(--text-muted);font-size:14px;padding:24px 0}.milestone-card{background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:16px;margin-bottom:16px}.milestone-card h2{font-size:16px;font-weight:600;margin-bottom:8px}.milestone-card .status-badge{display:inline-block;font-size:12px;font-weight:500;padding:2px 8px;border-radius:12px;margin-left:8px;vertical-align:middle}.status-active{background:#58a6ff22;color:var(--accent)}.status-completed,.status-done{background:#3fb95022;color:var(--success)}.status-pending,.status-queued{background:#8b949e22;color:var(--text-muted)}.status-in-progress{background:#d2992222;color:var(--warning)}.slice-list{margin-top:16px}.slice-list h3{font-size:14px;font-weight:600;margin-bottom:8px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px}.slice-item{display:flex;align-items:center;gap:8px;padding:8px 12px;border-bottom:1px solid var(--border);font-size:14px}.slice-item:last-child{border-bottom:none}.slice-item .check{width:16px;height:16px;border-radius:3px;border:1px solid var(--border);display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:11px}.slice-item .check.done{background:var(--success);border-color:var(--success);color:#fff}.slice-item .risk{font-size:11px;color:var(--text-muted);margin-left:auto}.task-list{margin-top:16px}.task-list h3{font-size:14px;font-weight:600;margin-bottom:8px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px}.task-item{display:flex;align-items:center;gap:8px;padding:6px 12px;font-size:13px;color:var(--text-muted)}.task-item.checked{color:var(--text)}.task-item .check{width:14px;height:14px;border-radius:3px;border:1px solid var(--border);display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:10px}.task-item .check.done{background:var(--success);border-color:var(--success);color:#fff}.no-data{color:var(--text-muted);font-size:13px;font-style:italic;padding:8px 0}.sse-indicator{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-muted)}.sse-dot{width:8px;height:8px;border-radius:50%;background:var(--text-muted)}.sse-dot.connected{background:var(--success)}.event-log{margin-top:24px}.event-log h3{font-size:14px;font-weight:600;margin-bottom:8px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px}.event-log-scroll{max-height:320px;overflow-y:auto;background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:8px 0;scrollbar-width:thin;scrollbar-color:var(--border) transparent}.event-log-empty{color:var(--text-muted);font-size:13px;font-style:italic;padding:16px;text-align:center}.event-log-entry{display:flex;align-items:baseline;gap:8px;padding:3px 12px;font-size:12px;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;line-height:1.6}.event-log-entry:hover{background:var(--border)}.event-log-time{color:var(--text-muted);flex-shrink:0}.event-log-type{font-weight:600;flex-shrink:0;min-width:140px}.event-log-ctx{color:var(--text-muted);flex-shrink:0}.event-log-detail{color:var(--text-muted);font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.run-button-container{margin-top:24px;background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:16px}.run-button-row{display:flex;align-items:center;gap:12px}.executor-select{background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:4px;padding:6px 10px;font-size:13px;font-family:inherit;cursor:pointer}.executor-select:disabled{opacity:.5;cursor:not-allowed}.executor-label{font-size:13px;color:var(--text-muted);font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace}.run-button{background:var(--accent);color:#fff;border:none;border-radius:6px;padding:8px 20px;font-size:14px;font-weight:600;cursor:pointer;transition:opacity .15s}.run-button:hover:not(:disabled){opacity:.85}.run-button:disabled{opacity:.5;cursor:not-allowed}.run-button.running{background:var(--warning)}.run-button.reset{background:var(--surface);border:1px solid var(--border);color:var(--text)}.run-status{display:flex;align-items:center;gap:6px;margin-top:10px;font-size:12px;color:var(--text-muted)}.run-status-dot{width:8px;height:8px;border-radius:50%}.status-dot-idle{background:var(--text-muted)}.status-dot-running{background:var(--warning);animation:pulse 1.5s infinite}.status-dot-completed{background:var(--success)}.status-dot-failed{background:var(--danger)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.run-error{margin-top:8px;color:var(--danger);font-size:12px}.heartbeat-indicator{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-muted)}.heartbeat-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.heartbeat-idle{background:var(--text-muted)}.heartbeat-active{background:var(--success);animation:heartbeat-pulse 1.5s ease-in-out infinite}.heartbeat-error{background:var(--danger)}@keyframes heartbeat-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.85)}}.heartbeat-label{font-weight:500}.heartbeat-lastseen{color:var(--text-muted);font-size:11px}.agent-card{background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:12px 16px;margin-bottom:16px;transition:all .2s ease}.agent-card-idle{opacity:.6}.agent-card-running{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.agent-card-completed{border-color:var(--success)}.agent-card-failed{border-color:var(--danger)}.agent-card-header{display:flex;align-items:center;gap:12px}.agent-card-state{color:var(--text-muted);font-size:13px}.agent-card-executor{font-size:14px;color:var(--text)}.agent-card-duration,.agent-card-executor{font-weight:600;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace}.agent-card-duration{margin-left:auto;font-size:16px;color:var(--accent);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.agent-card-context{margin-top:10px;padding-top:10px;border-top:1px solid var(--border)}.agent-card-row{display:flex;align-items:baseline;gap:8px;padding:2px 0;font-size:13px}.agent-card-task-row{color:var(--text);font-weight:500}.agent-card-label{color:var(--text-muted);font-size:11px;text-transform:uppercase;letter-spacing:.5px;min-width:64px;flex-shrink:0}.agent-card-value{color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.agent-card-progress{margin-top:10px;display:flex;align-items:center;gap:10px}.agent-card-progress-bar{flex:1 1;height:6px;background:var(--border);border-radius:3px;overflow:hidden}.agent-card-progress-fill{height:100%;background:var(--accent);border-radius:3px;transition:width .3s ease}.agent-card-progress-text{font-size:12px;color:var(--text-muted);font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;white-space:nowrap}.progress-bar-container{background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:12px 16px;margin-bottom:16px}.progress-bar-header{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:8px}.progress-bar-label{font-size:13px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px}.progress-bar-stats{font-size:14px;font-weight:600;color:var(--text);font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.progress-bar-percent{color:var(--text-muted);font-weight:400;font-size:12px}.progress-bar-track{height:8px;background:var(--border);border-radius:4px;overflow:hidden;display:flex}.progress-bar-fill{height:100%;border-radius:4px;transition:width .3s ease}.progress-bar-completed{background:var(--success)}.slice-accordion{border-bottom:1px solid var(--border)}.slice-accordion:last-child{border-bottom:none}.slice-item{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.slice-chevron{font-size:10px;color:var(--text-muted);transition:transform .15s ease;flex-shrink:0;width:12px;display:inline-block;text-align:center}.slice-chevron.expanded{transform:rotate(90deg)}.slice-chevron-spacer{width:12px;display:inline-block;flex-shrink:0}.slice-tasks{padding:4px 0 8px 36px}.slice-task-item{display:flex;align-items:center;gap:8px;padding:3px 0;font-size:12px;color:var(--text-muted)}.slice-task-item.task-status-done{color:var(--text)}.slice-task-item.task-status-active{color:var(--accent)}.slice-task-check{width:14px;height:14px;border-radius:3px;border:1px solid var(--border);display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:9px}.slice-task-check.done{background:var(--success);border-color:var(--success);color:#fff}.slice-task-check.active{background:var(--accent);border-color:var(--accent);color:#fff;animation:pulse 1.5s infinite}.slice-task-id{font-weight:600;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:11px;min-width:28px}.slice-task-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-list{margin-bottom:16px}.project-list h3{font-size:14px;font-weight:600;margin-bottom:8px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px}.project-list-items{display:flex;flex-wrap:wrap;gap:8px}.project-list-item{display:flex;flex-direction:column;gap:4px;background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:10px 14px;cursor:pointer;transition:all .15s ease;text-align:left;font-family:inherit;color:var(--text);min-width:180px}.project-list-item:hover{border-color:var(--accent)}.project-list-item.project-active{border-color:var(--accent);background:#58a6ff0d;box-shadow:0 0 0 1px var(--accent)}.project-list-name{font-size:14px;font-weight:600}.project-list-meta,.project-list-name{display:flex;align-items:center;gap:8px}.project-list-executor,.project-list-meta{font-size:11px;color:var(--text-muted)}.project-list-executor{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace}.project-list-updated{color:var(--text-muted)}.project-list-error{color:var(--danger);font-size:13px;padding:8px 0}.metrics-section{margin-bottom:16px}.metrics-section h3{font-size:14px;font-weight:600;margin-bottom:12px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px}.metrics-cards{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:12px;gap:12px;margin-bottom:16px}.metrics-card{background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:16px;text-align:center}.metrics-card-value{font-size:24px;font-weight:700;color:var(--text);font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.metrics-card-value.metrics-card-success{color:var(--success)}.metrics-card-label{font-size:11px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;margin-top:4px}.metrics-executor-table{background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:12px 16px}.metrics-executor-table h4{font-size:12px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;margin-bottom:8px}.metrics-executor-table table{width:100%;border-collapse:collapse;font-size:13px}.metrics-executor-table th{text-align:left;color:var(--text-muted);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;padding:6px 8px;border-bottom:1px solid var(--border)}.metrics-executor-table td{padding:6px 8px;border-bottom:1px solid var(--border);color:var(--text)}.metrics-executor-table tr:last-child td{border-bottom:none}.metrics-executor-name{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-weight:600}.metrics-cell-success{color:var(--success)}.metrics-cell-fail{color:var(--danger)}.file-editor{display:flex;flex-direction:column;background:var(--bg);border:1px solid var(--border);border-radius:6px;overflow:hidden;min-height:300px;margin-bottom:16px}.file-editor-header{display:flex;align-items:center;gap:12px;padding:8px 16px;background:var(--surface);border-bottom:1px solid var(--border);min-height:40px}.file-editor-filename{font-size:13px;font-weight:600;color:var(--text);font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;white-space:nowrap}.file-editor-dirty{color:var(--warning);font-weight:700}.file-editor-path{font-size:11px;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1 1}.file-editor-save-btn{background:var(--accent);color:#fff;border:none;border-radius:4px;padding:4px 12px;font-size:12px;font-weight:600;cursor:pointer;transition:opacity .15s;font-family:inherit;flex-shrink:0}.file-editor-save-btn:hover:not(:disabled){opacity:.85}.file-editor-save-btn:disabled{opacity:.4;cursor:not-allowed}.file-editor-placeholder{height:300px;font-style:italic}.file-editor-placeholder,.file-editor-status{display:flex;align-items:center;justify-content:center;color:var(--text-muted);font-size:14px}.file-editor-status{height:200px}.file-editor-error{color:var(--danger)}.file-editor-body{flex:1 1;overflow:hidden;min-height:250px}.file-editor-body .cm-editor{height:100%;min-height:250px}.file-editor-body .cm-scroller{overflow:auto}.next-action{margin-top:24px;background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:12px 16px;font-size:13px}.next-action .label{font-weight:600;color:var(--accent);margin-bottom:4px}.next-action .detail{color:var(--text-muted);font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:12px}.chat-panel{margin-top:24px;background:var(--surface);border:1px solid var(--border);border-radius:6px;display:flex;flex-direction:column;overflow:hidden}.chat-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--border)}.chat-header h3{font-size:14px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;margin:0}.chat-header-actions{display:flex;gap:8px}.chat-clear-btn{background:none;border:1px solid var(--border);border-radius:4px;color:var(--text-muted);font-size:11px;padding:2px 8px;cursor:pointer;transition:all .15s ease;font-family:inherit}.chat-clear-btn:hover:not(:disabled){border-color:var(--text-muted);color:var(--text)}.chat-clear-btn:disabled{opacity:.4;cursor:not-allowed}.chat-messages{flex:1 1;overflow-y:auto;padding:12px 16px;max-height:400px;min-height:120px;scrollbar-width:thin;scrollbar-color:var(--border) transparent}.chat-empty{color:var(--text-muted);font-size:13px;font-style:italic;text-align:center;padding:32px 16px}.chat-message{margin-bottom:12px}.chat-message:last-child{margin-bottom:0}.chat-message-header{display:flex;align-items:baseline;gap:8px;margin-bottom:4px}.chat-message-role{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.chat-message-user .chat-message-role{color:var(--accent)}.chat-message-assistant .chat-message-role{color:var(--success)}.chat-message-time{font-size:10px;color:var(--text-muted)}.chat-message-content{font-size:13px;line-height:1.6;color:var(--text);white-space:pre-wrap;word-break:break-word}.chat-message-user .chat-message-content{color:var(--text)}.chat-message-assistant .chat-message-content{color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif}.chat-message-error{color:var(--danger)}.chat-message-streaming{opacity:.9}.chat-cursor{color:var(--accent);animation:blink .8s infinite}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}.chat-error-bar{padding:6px 16px;font-size:12px;color:var(--danger);background:#f8514910}.chat-error-bar,.chat-input-row{border-top:1px solid var(--border)}.chat-input-row{display:flex;align-items:flex-end;gap:8px;padding:12px 16px}.chat-input{flex:1 1;background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:8px 12px;font-size:13px;font-family:inherit;line-height:1.5;resize:none;overflow-y:auto;max-height:120px}.chat-input::placeholder{color:var(--text-muted)}.chat-input:focus{outline:none;border-color:var(--accent)}.chat-input:disabled{opacity:.5}.chat-send-btn{background:var(--accent);color:#fff;border:none;border-radius:6px;padding:8px 16px;font-size:13px;font-weight:600;cursor:pointer;transition:opacity .15s;font-family:inherit;flex-shrink:0}.chat-send-btn:hover:not(:disabled){opacity:.85}.chat-send-btn:disabled{opacity:.4;cursor:not-allowed}.file-browser{width:250px;background:var(--surface);border:1px solid var(--border);border-radius:6px;display:flex;flex-direction:column;overflow:hidden;margin-bottom:16px}.file-browser-header{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid var(--border)}.file-browser-title{font-size:13px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px}.file-browser-refresh{background:none;border:1px solid var(--border);border-radius:4px;color:var(--text-muted);font-size:14px;padding:2px 6px;cursor:pointer;transition:all .15s ease;font-family:inherit;line-height:1}.file-browser-refresh:hover:not(:disabled){border-color:var(--text-muted);color:var(--text)}.file-browser-refresh:disabled{opacity:.4;cursor:not-allowed}.file-browser-content{flex:1 1;overflow:hidden;padding:4px 0}.file-browser-empty,.file-browser-loading{color:var(--text-muted);font-size:13px;font-style:italic;padding:16px 12px;text-align:center}.file-browser-error{color:var(--danger);font-size:12px;padding:8px 12px}.file-browser [role=tree],.file-browser [role=treeitem]{outline:none}.file-node{display:flex;align-items:center;gap:6px;padding:0 12px;height:28px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:background .1s ease}.file-node:hover{background:var(--border)}.file-node-selected{background:#58a6ff18}.file-node-icon{font-size:14px;flex-shrink:0;line-height:1}.file-node-name{font-size:13px;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ide-shell{display:flex;flex-direction:column;height:100vh;overflow:hidden;background:var(--bg)}.ide-header{justify-content:space-between;padding:0 16px;height:44px;min-height:44px;background:var(--surface);border-bottom:1px solid var(--border);flex-shrink:0}.ide-header,.ide-header-left{display:flex;align-items:center;gap:16px}.ide-logo{font-size:16px;font-weight:700;color:var(--accent);letter-spacing:1px;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace}.ide-phase{font-size:12px;color:var(--text-muted)}.ide-phase code{color:var(--text);font-size:12px}.ide-header-center{display:flex;align-items:center;gap:16px}.ide-header-right{display:flex;align-items:center;gap:12px}.ide-header-right .project-list{margin-bottom:0}.ide-header-right .project-list h3{display:none}.ide-header-right .project-list-items{flex-wrap:nowrap}.ide-header-right .project-list-item{padding:4px 10px;min-width:auto;font-size:12px}.ide-header-right .project-list-name{font-size:12px}.ide-header-right .project-list-meta{display:none}.ide-status-toggle{background:none;border:1px solid var(--border);border-radius:4px;color:var(--text-muted);font-size:11px;padding:4px 10px;cursor:pointer;transition:all .15s ease;font-family:inherit;white-space:nowrap}.ide-status-toggle:hover{border-color:var(--text-muted);color:var(--text)}.ide-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1 1;color:var(--text-muted);font-size:14px;padding:24px}.ide-main{display:flex;flex:1 1;overflow:hidden;min-height:0}.ide-sidebar-left{width:250px;min-width:200px;flex-shrink:0;border-right:1px solid var(--border);overflow-y:auto;background:var(--surface);scrollbar-width:thin;scrollbar-color:var(--border) transparent}.ide-sidebar-left .file-browser{width:100%;border:none;border-radius:0;margin-bottom:0;height:100%;background:transparent}.ide-sidebar-left .file-browser-content{flex:1 1;overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--border) transparent}.ide-editor-pane{flex:1 1;min-width:0;overflow:hidden;display:flex;flex-direction:column}.ide-editor-pane .file-editor{border:none;border-radius:0;margin-bottom:0;flex:1 1;min-height:0}.ide-editor-pane .file-editor-body{flex:1 1;min-height:0}.ide-editor-pane .file-editor-body .cm-editor{height:100%;min-height:0}.ide-editor-pane .file-editor-placeholder{height:100%}.ide-sidebar-right{width:350px;min-width:280px;flex-shrink:0;border-left:1px solid var(--border);overflow:hidden;display:flex;flex-direction:column}.ide-sidebar-right .chat-panel{margin-top:0;border:none;border-radius:0;flex:1 1;min-height:0}.ide-sidebar-right .chat-messages{max-height:none;flex:1 1;min-height:0}.ide-status-panel{border-top:1px solid var(--border);background:var(--bg);max-height:50vh;overflow-y:auto;padding:16px;scrollbar-width:thin;scrollbar-color:var(--border) transparent}.health-indicator{position:relative;display:flex;align-items:center;gap:6px;cursor:default}.health-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.health-ok{background:var(--success)}.health-error{background:var(--danger)}.health-label{font-size:12px;color:var(--text-muted)}.health-tooltip{position:absolute;top:calc(100% + 8px);left:50%;transform:translateX(-50%);background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:8px 12px;min-width:160px;z-index:100;box-shadow:0 4px 12px rgba(0,0,0,.4)}.health-tooltip-row{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:2px 0;font-size:12px}.health-tooltip-key{color:var(--text-muted);font-size:11px}.health-tooltip-val{color:var(--text);font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:12px}.health-tooltip-ok{color:var(--success)}.health-tooltip-err{color:var(--danger)}@media (max-width:1024px){.ide-sidebar-left,.ide-sidebar-right{display:none}}