:root { --paper:#f7f4ed; --paper-deep:#ede7d9; --ink:#1e2724; --muted:#66706a; --line:#d8d2c5; --jade:#2f6b62; --jade-soft:#dfebe5; --vermilion:#a73a2d; --vermilion-soft:#f4e1dc; --gold:#9d7b39; --black:#161d1b; }
* { box-sizing:border-box; }
body { margin:0; min-width:320px; background:var(--paper); color:var(--ink); font:14px/1.5 -apple-system,BlinkMacSystemFont,"Noto Sans CJK SC","PingFang SC","Microsoft YaHei",sans-serif; letter-spacing:0; }
button,input,textarea,select { font:inherit; }
button { cursor:pointer; }
.app-shell { display:grid; grid-template-columns:230px minmax(0,1fr); min-height:100vh; }
.sidebar { display:flex; flex-direction:column; padding:25px 18px; color:#e9eee9; background:var(--black); border-right:1px solid #303a36; }
.brand { display:flex; gap:10px; align-items:center; color:inherit; text-decoration:none; padding:0 7px 30px; border-bottom:1px solid #37403c; }
.brand-mark { display:grid; place-items:center; width:42px; height:42px; color:#fbf3df; background:#a83e30; font-weight:700; font-size:15px; }
.brand strong,.brand small { display:block; } .brand small { color:#96a39b; font-size:11px; margin-top:2px; }
.nav-list { display:grid; gap:5px; padding-top:22px; }
.nav-link { display:flex; gap:11px; align-items:center; padding:10px 12px; color:#bdc8c0; text-decoration:none; border-left:2px solid transparent; }
.nav-link:hover,.nav-link.active { color:#f8faf6; background:#28312d; border-left-color:#c8a651; }.nav-glyph { width:16px; text-align:center; color:#dac57d; font-size:17px; }
.sidebar-note { margin-top:auto; display:flex; gap:9px; align-items:flex-start; padding:14px 10px; border-top:1px solid #37403c; color:#dbe1db; }.sidebar-note small { color:#93a097; }.mode-dot { width:8px; height:8px; margin-top:6px; background:#ad3f33; border-radius:50%; }
.workspace { min-width:0; }.topbar { height:72px; display:flex; justify-content:space-between; align-items:center; padding:0 32px; border-bottom:1px solid var(--line); background:rgba(247,244,237,.92); }.crumb { color:var(--muted); }.crumb i { color:#a9aa9f; margin:0 8px; font-style:normal; }.crumb strong { color:var(--ink); }.top-actions { display:flex; align-items:center; gap:10px; }
.back-link { padding:0; color:var(--jade); background:transparent; border:0; font-weight:650; }.back-link:hover { text-decoration:underline; }
.content-wrap { max-width:1500px; margin:0 auto; padding:32px; }.project-summary { display:flex; justify-content:space-between; gap:30px; padding:0 0 28px; border-bottom:1px solid var(--line); }.eyebrow { color:var(--jade); font-size:11px; font-weight:700; letter-spacing:.08em; margin:0 0 7px; text-transform:uppercase; }.project-summary h1,.section-heading h2,.dialog-heading h2 { margin:0; font-size:24px; line-height:1.2; font-weight:650; }.project-question { margin:8px 0 14px; color:#414b45; font-size:16px; }.meta-row { display:flex; flex-wrap:wrap; gap:7px; }.meta { padding:3px 8px; color:#5a655e; background:#efede6; border:1px solid #ded9cc; font-size:12px; }.summary-status { min-width:220px; padding-top:12px; text-align:right; }.summary-status p { margin:9px 0 0; color:var(--muted); font-size:12px; }
.index-heading { display:flex; align-items:flex-end; justify-content:space-between; gap:24px; padding:0 0 26px; border-bottom:1px solid var(--line); }.index-heading h1 { margin:0 0 8px; font-size:26px; line-height:1.15; font-weight:650; }.project-total { padding:7px 10px; color:#365b51; background:var(--jade-soft); border:1px solid #b8d1c8; font-size:12px; font-weight:650; white-space:nowrap; }.project-table-panel { padding:24px 0; }.table-heading { display:flex; align-items:center; justify-content:space-between; gap:18px; margin-bottom:16px; }.table-heading h2 { margin:0; font-size:18px; }.project-table-wrap { overflow-x:auto; border-top:1px solid var(--line); border-bottom:1px solid var(--line); }.project-table { width:100%; min-width:1150px; border-collapse:collapse; text-align:left; }.project-table th { padding:11px 12px; color:#66706a; background:#f0eee6; border-bottom:1px solid var(--line); font-size:11px; font-weight:700; white-space:nowrap; }.project-table td { padding:14px 12px; border-bottom:1px solid var(--line); color:#39443f; font-size:12px; vertical-align:middle; white-space:nowrap; }.project-table tbody tr:last-child td { border-bottom:0; }.project-table tbody tr:hover { background:#f4f1e9; }.project-table td:first-child { min-width:180px; white-space:normal; }.project-table td:nth-child(2) { max-width:190px; overflow:hidden; text-overflow:ellipsis; }.project-table strong,.project-table small { display:block; }.project-table strong { color:var(--ink); font-size:13px; }.project-table small { margin-top:3px; color:var(--muted); font-size:11px; }.step-cell { color:#3c6056; font-weight:650; }.mode-chip { padding:3px 7px; color:#625b3a; background:#f4ecd4; border:1px solid #ddcb98; font-size:11px; }.table-open { padding:6px 9px; color:var(--jade); background:transparent; border:1px solid #afc9c1; font-weight:650; }.table-open:hover { color:#fff; background:var(--jade); }.empty-table { padding:36px !important; color:var(--muted) !important; text-align:center; }
.timeline-panel,.versions-panel,.review-panel,.files-panel,.delivery-panel { padding:24px 0; border-bottom:1px solid var(--line); }.section-heading { display:flex; justify-content:space-between; gap:18px; align-items:flex-end; }.section-heading.compact { align-items:center; }.section-heading h2 { font-size:18px; }.muted { margin:0; color:var(--muted); font-size:12px; }.step-timeline { display:grid; grid-template-columns:repeat(6,minmax(112px,1fr)); list-style:none; gap:0; padding:26px 0 4px; margin:0; }.step { position:relative; padding:0 12px 0 0; min-width:0; }.step::after { content:""; position:absolute; top:14px; right:0; left:29px; height:1px; background:#cfc9bd; }.step:last-child::after { display:none; }.step-marker { position:relative; z-index:1; display:grid; place-items:center; width:30px; height:30px; margin-bottom:10px; border:1px solid #c7c4ba; border-radius:50%; color:#737c75; background:var(--paper); font-size:12px; font-weight:700; }.step h3 { margin:0; font-size:13px; font-weight:600; }.step p { margin:4px 0 0; color:var(--muted); font-size:11px; }.step.approved .step-marker { color:white; background:var(--jade); border-color:var(--jade); }.step.failed .step-marker { color:white; background:var(--vermilion); border-color:var(--vermilion); }.step.active .step-marker { color:#715914; background:#f0e4be; border-color:#b99540; box-shadow:0 0 0 4px #f4edda; }.step.locked { opacity:.65; }
.main-grid { display:grid; grid-template-columns:minmax(0,1.55fr) minmax(310px,.75fr); gap:32px; }.versions-panel,.review-panel { border-bottom:0; }.review-panel { border-left:1px solid var(--line); padding-left:28px; }.version-list { display:grid; margin-top:16px; border-top:1px solid var(--line); }.version-row { display:grid; grid-template-columns:84px minmax(0,1fr) 108px 32px; align-items:center; gap:14px; padding:15px 2px; border-bottom:1px solid var(--line); }.version-name { margin:0; font-weight:650; }.version-detail { margin:2px 0 0; color:var(--muted); font-size:12px; }.version-arrow { color:var(--jade); font-size:19px; text-align:right; }.version-row.selected { background:#f0eee6; margin:0 -9px; padding-left:9px; padding-right:9px; }.version-row.hidden { display:none; }
.status-chip,.source-badge { display:inline-flex; width:max-content; align-items:center; padding:4px 8px; border:1px solid; font-size:11px; font-weight:700; white-space:nowrap; }.status-approved { color:#1f6055; border-color:#a9cbc1; background:var(--jade-soft); }.status-review { color:#8b5815; border-color:#dbc18d; background:#f5ead0; }.status-failed { color:#94372c; border-color:#e3b1aa; background:var(--vermilion-soft); }.status-pending { color:#59625d; border-color:#d4d5cc; background:#efefeb; }.source-badge { color:#56625a; border-color:#d1d4cb; background:#f3f2ec; }
.review-callout { margin-top:18px; padding:15px; background:#f0eee6; border-left:3px solid var(--vermilion); }.review-callout strong { display:block; font-size:13px; }.review-callout p { margin:6px 0 0; color:#5d635e; font-size:12px; }.review-form { display:grid; gap:10px; margin-top:18px; }.review-form label,.dialog-heading + p + label,.dialog-heading ~ label { display:grid; gap:6px; color:#4b5650; font-size:12px; font-weight:600; }.review-form textarea,input,textarea,select { width:100%; padding:9px 10px; color:var(--ink); background:#fffdf8; border:1px solid #cbc7bb; border-radius:0; outline:none; }.review-form textarea:focus,input:focus,textarea:focus,select:focus { border-color:var(--jade); box-shadow:0 0 0 2px #d9e8e2; }.button-row { display:flex; gap:8px; margin-top:2px; }.primary-button,.secondary-button,.danger-button,.icon-button { border:1px solid transparent; border-radius:0; font-weight:650; }.primary-button { padding:9px 13px; color:white; background:var(--jade); border-color:var(--jade); }.primary-button:hover { background:#245b53; }.secondary-button { padding:8px 11px; color:#3e514a; background:transparent; border-color:#b9bdb2; }.secondary-button:hover { background:#ecebe4; }.danger-button { padding:8px 11px; color:#96392d; background:#fff8f5; border-color:#d8a59f; }.icon-button { display:grid; place-items:center; width:34px; height:34px; color:#48554e; background:transparent; border-color:#c5c9be; font-size:20px; }.icon-button:hover { background:#ecebe4; }.primary-button:disabled,.secondary-button:disabled,.danger-button:disabled { opacity:.45; cursor:not-allowed; }
.step1-review-box { margin-top:14px; padding:14px; background:#fbfaf4; border:1px solid #d8d2c5; }.step1-review-box .review-callout { margin-top:0; }.plan-choice-list { display:grid; gap:7px; margin-top:13px; }.plan-choice { display:flex; gap:10px; align-items:flex-start; padding:10px; color:#35433c; background:#fffdf8; border:1px solid #d7d2c7; cursor:pointer; }.plan-choice.selected { border-color:var(--jade); box-shadow:0 0 0 2px #d9e8e2; }.plan-choice.unavailable { opacity:.58; cursor:not-allowed; }.plan-choice input { width:auto; margin-top:3px; }.plan-choice strong,.plan-choice small { display:block; }.plan-choice small { margin-top:3px; color:var(--muted); font-size:11px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }.plan-choice a { color:var(--jade); }.review-feedback { display:grid; gap:6px; margin-top:12px; color:#4b5650; font-size:12px; font-weight:600; }.review-feedback textarea { resize:vertical; }.review-actions { margin-top:12px; }
.files-panel { clear:both; }.file-layout { display:grid; grid-template-columns:minmax(320px,.85fr) minmax(0,1.15fr); gap:26px; margin-top:17px; }.preview-frame { position:relative; display:block; aspect-ratio:16/9; overflow:hidden; background:#e8e1d1; border:1px solid #cbc5b7; color:white; text-decoration:none; }.preview-frame img { width:100%; height:100%; display:block; object-fit:cover; }.preview-frame::after { content:""; position:absolute; inset:auto 0 0; height:34%; background:linear-gradient(transparent,rgba(16,21,18,.74)); pointer-events:none; }.preview-frame span { position:absolute; z-index:1; bottom:11px; left:13px; font-weight:650; font-size:12px; }.evidence-list { display:grid; align-content:start; border-top:1px solid var(--line); }.evidence { display:grid; grid-template-columns:96px 1fr; gap:10px; padding:12px 0; border-bottom:1px solid var(--line); }.evidence dt { color:var(--muted); font-size:12px; }.evidence dd { margin:0; color:#36423c; font-size:12px; }.evidence dd.error { color:#a33b30; }.candidate-strip { display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:10px; margin-top:16px; }.candidate-strip a { min-width:0; color:#4b554f; font-size:11px; text-decoration:none; }.candidate-strip img { display:block; width:100%; aspect-ratio:16/9; object-fit:cover; border:1px solid #cbc5b7; background:#e8e1d1; margin-bottom:6px; }.candidate-strip span { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }.delivery-panel { display:flex; align-items:center; justify-content:space-between; gap:20px; border-bottom:0; }.delivery-panel h2 { margin:0 0 7px; font-size:18px; }.delivery-locked { padding:9px 12px; color:#616961; background:#efeee8; border:1px solid #d5d3ca; font-size:12px; }
.project-dialog .el-dialog { display:flex; flex-direction:column; max-height:calc(100vh - 48px); margin:24px auto; overflow:hidden; border:1px solid #bdb9ad; border-radius:0; background:var(--paper); box-shadow:0 20px 70px rgba(32,38,34,.28); }.project-dialog .el-dialog__header { flex:none; margin:0; padding:22px 24px 14px; border-bottom:1px solid var(--line); }.project-dialog .el-dialog__title { color:var(--ink); font-size:19px; font-weight:650; }.project-dialog .el-dialog__body { flex:1; min-height:0; padding:18px 24px 8px; overflow-y:auto; }.project-dialog .el-dialog__footer { flex:none; padding:16px 24px 22px; border-top:1px solid var(--line); }.project-dialog .el-form-item { margin-bottom:14px; }.project-dialog .el-form-item__label { color:#4b5650; font-size:12px; font-weight:650; line-height:1.4; }.project-dialog .el-input__wrapper,.project-dialog .el-textarea__inner,.project-dialog .el-select__wrapper { border-radius:0; background:#fffdf8; box-shadow:0 0 0 1px #cbc7bb inset; }.project-dialog .el-input__wrapper.is-focus,.project-dialog .el-textarea__inner:focus,.project-dialog .el-select__wrapper.is-focused { box-shadow:0 0 0 1px var(--jade) inset; }.project-dialog .el-button { border-radius:0; }.project-dialog .el-button--primary { --el-button-bg-color:var(--jade); --el-button-border-color:var(--jade); --el-button-hover-bg-color:#245b53; --el-button-hover-border-color:#245b53; }.dialog-intro { margin:0 0 16px; color:var(--muted); font-size:12px; }.toast { position:fixed; z-index:2100; right:24px; bottom:24px; max-width:min(410px,calc(100vw - 48px)); padding:12px 14px; color:#f5f7f3; background:#283631; box-shadow:0 8px 25px rgba(0,0,0,.18); opacity:0; pointer-events:none; transform:translateY(8px); transition:opacity .18s,transform .18s; }.toast.show { opacity:1; transform:translateY(0); }
@media (max-width:920px) { .app-shell { grid-template-columns:1fr; }.sidebar { display:none; }.content-wrap { padding:24px; }.main-grid,.file-layout { grid-template-columns:1fr; gap:0; }.review-panel { border-left:0; border-top:1px solid var(--line); padding-left:0; }.step-timeline { overflow-x:auto; grid-template-columns:repeat(6,130px); padding-bottom:10px; }.project-summary { align-items:flex-start; flex-direction:column; }.summary-status { padding:0; text-align:left; }.delivery-panel { align-items:flex-start; flex-direction:column; } }
@media (max-width:620px) { .topbar { height:62px; padding:0 16px; }.crumb { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }.source-badge { display:none; }.content-wrap { padding:20px 16px; }.project-summary h1 { font-size:22px; }.version-row { grid-template-columns:70px 1fr 28px; }.version-row .status-chip { display:none; }.section-heading.compact { align-items:flex-end; }.section-heading.compact .secondary-button { font-size:11px; }.button-row { flex-wrap:wrap; } }
.preview-empty { display:grid; place-content:center; aspect-ratio:16/9; gap:8px; padding:28px; color:#5e6861; background:#eeece4; border:1px solid #cbc5b7; text-align:center; }.preview-empty strong { color:#39453f; font-size:14px; }.preview-empty span { max-width:270px; font-size:12px; }

.top-actions .el-button,.workbench .el-button,.artifact-panel .el-button { border-radius:0; }
.top-actions .el-button--primary,.workbench .el-button--primary { --el-button-bg-color:var(--jade); --el-button-border-color:var(--jade); --el-button-hover-bg-color:#245b53; --el-button-hover-border-color:#245b53; }
.summary-status a { display:block; margin-top:10px; color:var(--jade); font-size:12px; font-weight:650; }
.drive-missing { display:block; margin-top:10px; color:var(--vermilion); font-size:12px; font-weight:650; }
.step.selectable { cursor:pointer; padding:8px 12px 10px 8px; }
.step.selectable:hover,.step.selectable.selected { background:#f0eee6; }
.step.selectable.selected { box-shadow:inset 0 -2px 0 var(--jade); }
.workbench { padding:28px 0; border-bottom:1px solid var(--line); scroll-margin-top:84px; }
.workbench-heading { display:flex; align-items:flex-start; justify-content:space-between; gap:24px; margin-bottom:20px; }
.workbench-heading h2 { margin:0; font-size:21px; }
.workbench-heading p:not(.eyebrow) { margin:7px 0 0; color:var(--muted); font-size:12px; }
.workbench-grid { display:grid; grid-template-columns:minmax(0,1.25fr) minmax(300px,.75fr); border-top:1px solid var(--line); }
.task-panel,.review-workspace { padding:22px 0; }
.task-panel { padding-right:28px; }
.review-workspace { padding-left:28px; border-left:1px solid var(--line); scroll-margin-top:84px; }
.task-panel h3,.review-workspace h3 { margin:0 0 16px; font-size:15px; }
.fact-list { margin:0; }
.fact-list div { display:grid; grid-template-columns:90px 1fr; gap:14px; padding:10px 0; border-bottom:1px solid var(--line); }
.fact-list dt { color:var(--muted); font-size:12px; }
.fact-list dd { margin:0; color:#334039; font-size:12px; }
.action-block { margin-top:18px; }
.action-block .el-button { max-width:100%; height:auto; min-height:32px; white-space:normal; }
.regeneration-alert { margin-bottom:12px; }
.action-reason { margin:9px 0 0; color:var(--muted); font-size:12px; }
.action-reason.error { color:var(--vermilion); }
.review-workspace > p { color:var(--muted); font-size:12px; }
.review-scope-alert { margin:12px 0; }
.review-actions { display:flex; gap:8px; margin-top:12px; }
.artifact-panel { padding:28px 0; border-bottom:1px solid var(--line); }
.artifact-versions { margin-top:18px; border-top:1px solid var(--line); }
.artifact-version { padding:16px 0; border-bottom:1px solid var(--line); }
.artifact-version header { display:flex; align-items:center; justify-content:space-between; gap:18px; }
.artifact-version header strong,.artifact-version header small { display:block; }
.artifact-version header small { margin-top:4px; color:var(--muted); font-size:11px; }
.file-list { margin:13px 0 0; padding:0; list-style:none; }
.file-list li { display:grid; grid-template-columns:70px minmax(0,1fr); gap:12px; padding:8px 10px; background:#f0eee6; border-bottom:1px solid #d9d4c8; font-size:12px; }
.file-list li span { color:var(--muted); font-weight:650; }
.file-list a { color:var(--jade); overflow-wrap:anywhere; }
.empty-artifacts { margin:12px 0 0; color:var(--muted); font-size:12px; }
@media (max-width:920px) { .workbench-grid { grid-template-columns:1fr; }.task-panel { padding-right:0; }.review-workspace { padding-left:0; border-left:0; border-top:1px solid var(--line); } }
