diff --git a/web/index.html b/web/index.html index 4cb48df..076ce34 100644 --- a/web/index.html +++ b/web/index.html @@ -103,7 +103,7 @@ diff --git a/web/style.css b/web/style.css index 72ea520..e4d51a6 100644 --- a/web/style.css +++ b/web/style.css @@ -198,6 +198,7 @@ body::before { #eventPanel .sec-head { padding: 18px 16px 10px; background: linear-gradient(var(--bg-deep) 75%, transparent); } .head-mark { color: var(--green); } .head-mark.amber { color: var(--amber); } +.head-mark.violet { color: var(--violet); } .head-mark.cyan { color: var(--cyan); } .side-head .btn, .sec-head .btn { margin-left: auto; letter-spacing: .1em; } @@ -256,8 +257,9 @@ body::before { .proj-meta { font-size: 11px; color: var(--muted); margin-top: 2px; } .spacer { flex: 1; } .gate-count { - font-size: 11px; letter-spacing: .12em; color: var(--amber); - border: 1px solid var(--amber-dim); padding: 4px 10px; + font-size: 11px; letter-spacing: .12em; color: var(--violet); + border: 1px solid var(--violet-dim); padding: 4px 10px; + border-radius: var(--radius-xs); animation: pulse 2.2s infinite; } @@ -294,11 +296,13 @@ body::before { .agent-empty { padding: 12px 14px; color: var(--faint); font-size: 12px; border: 1px dashed var(--line); + border-radius: var(--radius-md); } .agent-flex { display: flex; gap: 20px; align-items: stretch; background: var(--panel); border: 1px solid var(--cyan-dim); padding: 12px 16px; + border-radius: var(--radius-md); animation: rise .2s ease both; } .agent-big { @@ -334,6 +338,7 @@ body::before { .agent-run-kind { flex: none; font-size: 10px; letter-spacing: .1em; color: var(--cyan); border: 1px solid var(--cyan-dim); padding: 0 6px; + border-radius: var(--radius-xs); } .agent-run-time { flex: none; margin-left: auto; font-size: 10.5px; color: var(--faint); } @@ -342,14 +347,17 @@ body::before { .gate-stripe { height: 5px; background: repeating-linear-gradient(-45deg, - var(--amber) 0 9px, transparent 9px 18px); + var(--violet) 0 9px, transparent 9px 18px); opacity: .8; + border-radius: var(--radius-xs); } -.gate-head { padding-top: 12px; position: static; background: none; color: var(--amber); } +.gate-head { padding-top: 12px; position: static; background: none; color: var(--violet); } .gate-card { background: var(--panel); - border: 1px solid var(--amber-dim); + border: 1px solid var(--violet-dim); + border-radius: var(--radius-md); + overflow: hidden; margin-bottom: 12px; animation: rise .25s ease both; } @@ -362,11 +370,12 @@ body::before { } .gate-kind { font-size: 10.5px; font-weight: 700; letter-spacing: .18em; - color: var(--bg); background: var(--amber); + color: var(--bg); background: var(--violet); padding: 2px 8px; + border-radius: var(--radius-xs); } -.gate-title { font-weight: 600; } -.gate-body { padding: 12px 14px; } +.gate-title { font-weight: 600; font-size: 13px; } +.gate-body { padding: 12px 14px; font-size: 12.5px; } .gate-doc-label { font-size: 10.5px; color: var(--muted); letter-spacing: .18em; margin: 8px 0 4px; } .gate-doc-label:first-child { margin-top: 0; } @@ -374,6 +383,7 @@ pre.doc { background: var(--bg-deep); border: 1px solid var(--line-soft); border-left: 2px solid var(--green-dim); + border-radius: var(--radius-sm); padding: 10px 12px; font-family: var(--mono); font-size: 12.5px; white-space: pre-wrap; word-break: break-word; @@ -401,6 +411,7 @@ pre.doc.empty { color: var(--faint); border-left-color: var(--line); } letter-spacing: .08em; background: transparent; color: var(--ink); border: 1px solid var(--line); + border-radius: var(--radius-sm); padding: 6px 14px; cursor: pointer; transition: all .12s; } @@ -422,7 +433,7 @@ pre.doc.empty { color: var(--faint); border-left-color: var(--line); } .btn:disabled { opacity: .4; cursor: not-allowed; } /* ── 表单 ────────────────────────────────────────────────── */ -.panel { background: var(--panel); border: 1px solid var(--line); } +.panel { background: var(--panel); border: 1px solid var(--line); border-radius: var(--radius-md); } .form-panel { padding: 14px; margin-bottom: 14px; } .form-row { display: flex; gap: 14px; align-items: flex-end; flex-wrap: wrap; } .form-row + .form-row { margin-top: 12px; } @@ -437,6 +448,7 @@ input[type=text], input[type=number], select, textarea { font-family: var(--mono); font-size: 13px; background: var(--bg-deep); color: var(--ink); border: 1px solid var(--line); + border-radius: var(--radius-sm); padding: 7px 10px; outline: none; transition: border-color .12s; @@ -445,7 +457,7 @@ input:focus, select:focus, textarea:focus { border-color: var(--green-dim); box- textarea { resize: vertical; min-height: 72px; width: 100%; } /* 复杂度分段选择 */ -.seg { display: inline-flex; border: 1px solid var(--line); } +.seg { display: inline-flex; border: 1px solid var(--line); border-radius: var(--radius-sm); overflow: hidden; } .seg input { position: absolute; opacity: 0; pointer-events: none; } .seg label { padding: 7px 13px; cursor: pointer; @@ -462,6 +474,7 @@ textarea { resize: vertical; min-height: 72px; width: 100%; } /* ── 任务树筛选栏 ─────────────────────────────────────────── */ .filter-bar { background: var(--panel); border: 1px solid var(--line); + border-radius: var(--radius-md); padding: 8px 10px; margin-bottom: 12px; display: flex; flex-direction: column; gap: 7px; } @@ -472,6 +485,7 @@ textarea { resize: vertical; min-height: 72px; width: 100%; } font-family: var(--mono); font-size: 10px; font-weight: 700; letter-spacing: .1em; background: transparent; color: var(--faint); border: 1px solid var(--line); padding: 2px 8px; + border-radius: var(--radius-xs); cursor: pointer; transition: all .1s; } .fchip:hover { color: var(--ink); border-color: var(--muted); } @@ -481,6 +495,7 @@ textarea { resize: vertical; min-height: 72px; width: 100%; } .fgroup { display: inline-flex; align-items: center; gap: 4px; padding: 2px 4px; border: 1px dashed var(--line-soft); + border-radius: var(--radius-xs); } .fgroup-chip { color: var(--muted); } .fgroup-chip.part { color: var(--amber); border-color: var(--amber-dim); } @@ -493,6 +508,7 @@ textarea { resize: vertical; min-height: 72px; width: 100%; } .tree-empty { padding: 46px 0; text-align: center; color: var(--faint); border: 1px dashed var(--line); + border-radius: var(--radius-md); } .tree-empty b { display: block; font-size: 15px; color: var(--muted); margin-bottom: 6px; letter-spacing: .2em; } @@ -507,7 +523,7 @@ textarea { resize: vertical; min-height: 72px; width: 100%; } transition: background .1s; } .task-row:hover { background: var(--panel); } -.task-row.is-gate { background: rgba(240,180,41,.045); } +.task-row.is-gate { background: rgba(184,142,245,.05); } .task-row.expanded { background: var(--panel-2); } .caret { @@ -529,6 +545,7 @@ textarea { resize: vertical; min-height: 72px; width: 100%; } .cplx { flex: none; font-size: 10px; font-weight: 700; letter-spacing: .14em; padding: 1px 7px; border: 1px solid; + border-radius: var(--radius-xs); } .cplx-hard { color: var(--red); border-color: var(--red-dim); background: rgba(255,93,93,.07); } .cplx-medium { color: var(--amber); border-color: var(--amber-dim); background: rgba(240,180,41,.07); } @@ -539,6 +556,7 @@ textarea { resize: vertical; min-height: 72px; width: 100%; } display: inline-block; vertical-align: 1px; flex: none; font-size: 10px; font-weight: 700; letter-spacing: .14em; padding: 1px 7px; margin-left: 6px; border: 1px solid; + border-radius: var(--radius-xs); } .verdict-approve { color: var(--green); border-color: var(--green-dim); background: rgba(95,221,125,.1); } .verdict-reject { color: var(--red); border-color: var(--red-dim); background: rgba(255,93,93,.1); } @@ -556,7 +574,8 @@ button.cplx-btn:hover { box-shadow: 0 0 8px rgba(216,228,212,.18); } position: absolute; top: calc(100% + 5px); right: 0; z-index: 60; display: flex; gap: 5px; background: var(--bg-deep); border: 1px solid var(--line); - padding: 6px; box-shadow: 0 10px 30px rgba(0,0,0,.65); + border-radius: var(--radius-md); + padding: 6px; box-shadow: var(--shadow-pop); animation: rise .12s ease both; } .cplx-pop .cplx { cursor: pointer; } @@ -568,12 +587,13 @@ button.cplx-btn:hover { box-shadow: 0 0 8px rgba(216,228,212,.18); } flex: none; display: inline-flex; align-items: center; gap: 5px; font-size: 11px; padding: 1px 8px; border: 1px solid var(--line); color: var(--muted); + border-radius: var(--radius-xs); white-space: nowrap; } .chip::before { content: ''; width: 6px; height: 6px; border-radius: 50%; background: currentColor; } .chip-idle { color: var(--muted); } .chip-work { color: var(--cyan); border-color: var(--cyan-dim); } -.chip-gate { color: var(--amber); border-color: var(--amber-dim); } +.chip-gate { color: var(--violet); border-color: var(--violet-dim); } .chip-gate::before { animation: pulse 1.4s infinite; } .chip-container { color: #9bb4c8; border-color: #2c3c4a; } .chip-go { color: var(--green); border-color: var(--green-dim); } @@ -634,6 +654,7 @@ button.cplx-btn:hover { box-shadow: 0 0 8px rgba(216,228,212,.18); } .event-list li::before { content: ''; position: absolute; left: 0; top: 13px; width: 5px; height: 5px; background: var(--ev, var(--muted)); + border-radius: 1.5px; } .ev-head { display: flex; gap: 8px; align-items: baseline; } .ev-type { font-weight: 600; color: var(--ev, var(--ink)); letter-spacing: .04em; } @@ -646,7 +667,7 @@ li.ev-created { --ev: var(--green); } li.ev-status { --ev: var(--cyan); } li.ev-approve { --ev: var(--green); } li.ev-rejected { --ev: var(--red); } -li.ev-gatewait { --ev: var(--amber); } +li.ev-gatewait { --ev: var(--violet); } li.ev-run { --ev: var(--cyan); } li.ev-updated { --ev: var(--muted); } @@ -658,7 +679,8 @@ li.ev-updated { --ev: var(--muted); } position: relative; width: min(460px, 92vw); padding: 18px 20px 20px; display: flex; flex-direction: column; gap: 12px; - box-shadow: 0 0 0 1px var(--green-dim), 0 18px 60px rgba(0,0,0,.6); + border-radius: var(--radius-lg); + box-shadow: 0 0 0 1px var(--green-dim), var(--shadow-modal); animation: rise .18s ease both; } .modal .sec-head { padding: 0 0 4px; position: static; background: none; } @@ -672,10 +694,11 @@ li.ev-updated { --ev: var(--muted); } font-family: var(--mono); font-size: 12.5px; background: var(--bg-deep); border: 1px solid var(--line); + border-radius: var(--radius-md); padding: 9px 16px; max-width: 70vw; animation: toastIn .18s ease both; - box-shadow: 0 8px 30px rgba(0,0,0,.55); + box-shadow: var(--shadow-toast); } .toast.err { border-color: var(--red); color: var(--red); } .toast.ok { border-color: var(--green-dim); color: var(--green); } @@ -684,7 +707,7 @@ li.ev-updated { --ev: var(--muted); } @keyframes toastIn { from { opacity: 0; transform: translateY(8px); } } /* 待 CC 产出占位 */ -.doc-pending { padding: 10px 12px; border: 1px dashed var(--line, #2a3a2a); color: var(--dim, #6a7a6a); font-style: italic; } +.doc-pending { padding: 10px 12px; border: 1px dashed var(--line, #2a3a2a); border-radius: var(--radius-sm); color: var(--dim, #6a7a6a); font-style: italic; } /* ── 全局预览模式(全屏读方案 + 就地裁决) ── */ .preview-root { position: fixed; inset: 0; z-index: 1100; display: grid; place-items: center; } @@ -693,7 +716,8 @@ li.ev-updated { --ev: var(--muted); } .preview-panel { position: relative; display: flex; flex-direction: column; width: min(1080px, 94vw); height: 94vh; - background: var(--panel); border: 1px solid var(--amber-dim); + background: var(--panel); border: 1px solid var(--violet-dim); + border-radius: var(--radius-lg); overflow: hidden; box-shadow: 0 0 0 1px var(--line-soft), 0 24px 64px rgba(0,0,0,.6); } .preview-head { @@ -725,6 +749,7 @@ li.ev-updated { --ev: var(--muted); } background: var(--bg-deep); border: 1px solid var(--line-soft); border-left: 2px solid var(--green-dim); + border-radius: var(--radius-sm); padding: 12px 16px; font-family: var(--mono); font-size: 12.5px; line-height: 1.7; color: var(--ink); @@ -746,11 +771,13 @@ li.ev-updated { --ev: var(--muted); } .doc.md li { margin: 3px 0; } .doc.md code { background: var(--panel-2); border: 1px solid var(--line-soft); + border-radius: var(--radius-xs); padding: 0 4px; color: var(--cyan); font-size: .95em; } .doc.md pre.codeblock { background: var(--panel-2); border: 1px solid var(--line-soft); border-left: 2px solid var(--cyan-dim); + border-radius: var(--radius-sm); padding: 10px 12px; margin: 8px 0; white-space: pre-wrap; word-break: break-word; overflow-x: auto; } @@ -770,6 +797,7 @@ li.ev-updated { --ev: var(--muted); } .ready-count { font-size: 11px; letter-spacing: .12em; color: var(--green); border: 1px solid var(--green-dim); padding: 4px 10px; + border-radius: var(--radius-xs); } /* ── 顶栏徽章组:默认 图标+数量,hover 展开文字 ── */ @@ -778,6 +806,7 @@ li.ev-updated { --ev: var(--muted); } display: inline-flex; align-items: center; font-size: 11.5px; line-height: 1; letter-spacing: .08em; height: 28px; padding: 0 10px; /* 固定高度对齐旁边的 .btn,防字形差异撑高 */ + border-radius: var(--radius-sm); cursor: default; white-space: nowrap; } .bdg .bdg-ico { @@ -791,7 +820,7 @@ li.ev-updated { --ev: var(--muted); } } .bdg:hover .bdg-label { max-width: 8em; opacity: 1; margin-left: 5px; } -.bdg-gate { color: var(--amber); border: 1px solid var(--amber-dim); } +.bdg-gate { color: var(--violet); border: 1px solid var(--violet-dim); } .bdg-gate:not(.zero) { animation: pulse 2.2s infinite; } .bdg-ready { color: var(--green); border: 1px solid var(--green-dim); } .bdg-run { color: var(--cyan); border: 1px solid var(--cyan-dim); } @@ -803,6 +832,7 @@ li.ev-updated { --ev: var(--muted); } flex: none; font-size: 10.5px; letter-spacing: .06em; color: var(--amber); border: 1px dashed var(--amber-dim); padding: 1px 7px; line-height: 1.5; white-space: nowrap; + border-radius: var(--radius-xs); } .dep-list { display: grid; gap: 4px; } .dep-item { @@ -810,6 +840,7 @@ li.ev-updated { --ev: var(--muted); } font-size: 12px; padding: 4px 10px; background: var(--bg-deep); border: 1px solid var(--line-soft); border-left: 2px solid var(--amber-dim); + border-radius: var(--radius-sm); } .dep-item.ok { border-left-color: var(--green-dim); } .dep-item.ok .dep-mark { color: var(--green); } @@ -830,6 +861,7 @@ li.ev-updated { --ev: var(--muted); } font-size: 12px; padding: 4px 10px; cursor: pointer; background: var(--bg-deep); border: 1px solid var(--line-soft); border-left: 2px solid var(--line-soft); + border-radius: var(--radius-sm); transition: border-color .12s, background .12s; } .dep-pick:hover { background: var(--panel-2); border-color: var(--muted); } @@ -859,7 +891,7 @@ li.ev-updated { --ev: var(--muted); } .archive-subs { flex: none; font-size: 10.5px; color: var(--faint); } .archive-time { flex: none; font-size: 11px; color: var(--faint); } .archive-size { font-size: 11px; color: var(--muted); display: flex; gap: 6px; align-items: center; } -.archive-size select { background: var(--panel-2); color: var(--ink); border: 1px solid var(--line); padding: 2px 6px; font-family: var(--mono); } +.archive-size select { background: var(--panel-2); color: var(--ink); border: 1px solid var(--line); padding: 2px 6px; font-family: var(--mono); border-radius: var(--radius-sm); } .archive-pager { display: flex; align-items: center; gap: 12px; padding: 10px 0; justify-content: center; } .archive-page { font-size: 11px; color: var(--muted); } @@ -921,6 +953,7 @@ li.ev-updated { --ev: var(--muted); } padding: 6px 10px; background: rgba(255,93,93,.06); border: 1px solid var(--red-dim); + border-radius: var(--radius-sm); } .detail-action-confirm-del { background: rgba(255,93,93,.09); @@ -931,11 +964,11 @@ li.ev-updated { --ev: var(--muted); } /* ── 归档详情:执行历史 + 转录回放 ── */ .run-list { display: flex; flex-direction: column; gap: 8px; margin-top: 6px; } -.run-item { border: 1px solid var(--line-soft); background: var(--panel); padding: 8px 10px; } +.run-item { border: 1px solid var(--line-soft); background: var(--panel); padding: 8px 10px; border-radius: var(--radius-md); } .run-head { display: flex; align-items: center; gap: 10px; font-size: 12px; flex-wrap: wrap; } .run-head .spacer { flex: 1; } .run-kind { color: var(--ink); font-weight: 600; } -.run-st { font-size: 11px; padding: 1px 6px; border: 1px solid var(--line); color: var(--muted); } +.run-st { font-size: 11px; padding: 1px 6px; border: 1px solid var(--line); color: var(--muted); border-radius: var(--radius-xs); } .run-st-succeeded { color: var(--green); border-color: var(--green-dim); } .run-st-failed { color: var(--red); border-color: var(--red-dim); } .run-st-started { color: var(--cyan); border-color: var(--cyan-dim); } @@ -958,6 +991,7 @@ li.ev-updated { --ev: var(--muted); } .t-badge { display: inline-block; font-size: 10px; letter-spacing: .08em; padding: 1px 6px; margin-right: 8px; border: 1px solid var(--line); color: var(--muted); + border-radius: var(--radius-xs); } .t-badge-a { color: var(--green); border-color: var(--green-dim); } .t-badge-r { color: var(--green); border-color: var(--green); } @@ -969,6 +1003,7 @@ li.ev-updated { --ev: var(--muted); } .t-trunc { color: var(--faint); font-size: 11px; margin-top: 2px; } .t-pre { margin: 4px 0 0; padding: 6px 8px; background: var(--bg-deep); border: 1px solid var(--line-soft); + border-radius: var(--radius-sm); font-size: 11.5px; white-space: pre-wrap; word-break: break-word; max-height: 320px; overflow-y: auto; } .t-fold { margin-top: 4px; } @@ -985,6 +1020,7 @@ li.ev-updated { --ev: var(--muted); } } .metric-card { border: 1px solid var(--line); background: var(--panel); + border-radius: var(--radius-md); padding: 10px 12px; min-width: 0; } .metric-card.est { border-style: dashed; } @@ -1005,6 +1041,7 @@ li.ev-updated { --ev: var(--muted); } .metric-models { margin-top: 14px; border: 1px solid var(--line-soft); background: var(--bg-deep); padding: 10px 12px; + border-radius: var(--radius-md); } .metric-models-head { font-size: 10px; font-weight: 600; letter-spacing: .14em; @@ -1018,6 +1055,7 @@ li.ev-updated { --ev: var(--muted); } .metric-model-bar { flex: 1; height: 8px; min-width: 40px; background: var(--panel-2); border: 1px solid var(--line-soft); overflow: hidden; + border-radius: var(--radius-xs); } .metric-model-fill { display: block; height: 100%;