/* 错误诊断 · 体检报告(Warm Paper,全令牌配色,无硬编码颜色)。 只读呈现:没有任何「立即修复」按钮,徽章仅表达状态与修复难度。 */ .diag { flex: 1; min-width: 0; overflow-y: auto; padding: 36px 48px 48px; } .diag-head { margin-bottom: 24px; } .diag-head-row { display: flex; align-items: center; justify-content: space-between; gap: 16px; } .diag-head h1 { font-size: 30px; } .diag-refresh { flex-shrink: 0; } .diag-refresh:disabled { opacity: 0.6; cursor: default; } .diag-sub { margin: 6px 0 0; font-size: 13.5px; color: var(--text-secondary); font-variant-numeric: tabular-nums; } .diag-sub-dim { color: var(--text-tertiary); } /* ── 检查卡列表 ───────────────────────────────────────────────────── */ .diag-list { display: flex; flex-direction: column; gap: 16px; } .diag-card { padding: 20px 22px 18px; border: 1px solid var(--border); border-radius: var(--radius-card); background: var(--bg-elevated); } /* 状态只用左侧一条细色带表达,克制不喧哗(design-system §2 语义色规则) */ .diag-card.is-warn { border-left: 3px solid var(--warning); } .diag-card.is-critical { border-left: 3px solid var(--danger); } .diag-card.is-ok { border-left: 3px solid var(--success); } .diag-card-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 12px; } .diag-card-title { font-size: 16px; } /* ── 徽章 ─────────────────────────────────────────────────────────── */ /* 徽章:与全站徽章同尺寸同字重(2px 8px / 12px / 500 / pill) */ .diag-badge { display: inline-flex; align-items: center; flex-shrink: 0; padding: 2px 8px; border-radius: 999px; font-size: 12px; font-weight: 500; line-height: 1.6; } .diag-badge-status.is-ok { background: color-mix(in srgb, var(--success) 14%, transparent); color: var(--success); } .diag-badge-status.is-warn { background: color-mix(in srgb, var(--warning) 16%, transparent); color: var(--warning); } .diag-badge-status.is-critical { background: color-mix(in srgb, var(--danger) 14%, transparent); color: var(--danger); } .diag-badge-risk.is-green { background: color-mix(in srgb, var(--success) 14%, transparent); color: var(--success); } .diag-badge-risk.is-yellow { background: color-mix(in srgb, var(--warning) 16%, transparent); color: var(--warning); } .diag-badge-risk.is-red { background: color-mix(in srgb, var(--danger) 14%, transparent); color: var(--danger); } /* ── 三段式文案 ───────────────────────────────────────────────────── */ .diag-card-body { display: flex; flex-direction: column; gap: 8px; } .diag-line { display: flex; align-items: baseline; gap: 12px; } .diag-line-label { flex-shrink: 0; width: 64px; font-size: 12px; color: var(--text-tertiary); } .diag-line-text { margin: 0; font-size: 13.5px; line-height: 1.65; color: var(--text); } .diag-fix-hint { margin: 4px 0 0; font-size: 12.5px; color: var(--text-secondary); font-family: var(--font-mono); } /* ── 明细列表(崩溃报告 / Top 进程 / 端口)─────────────────────────── */ .diag-crash-list, .diag-mini-list { list-style: none; margin: 12px 0 0; padding: 12px 0 0; border-top: 1px solid var(--border); } .diag-crash, .diag-mini { display: flex; align-items: baseline; gap: 12px; padding: 5px 0; font-size: 13px; font-variant-numeric: tabular-nums; } .diag-crash-name, .diag-mini-name { flex-shrink: 0; min-width: 96px; color: var(--text); overflow-wrap: anywhere; } .diag-crash-time { flex: 1; min-width: 0; color: var(--text-secondary); overflow-wrap: anywhere; } .diag-crash-kind { flex-shrink: 0; max-width: 220px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-family: var(--font-mono); font-size: 12px; color: var(--text-tertiary); } .diag-mini-value { flex: 1; min-width: 0; text-align: right; color: var(--text-secondary); font-variant-numeric: tabular-nums; overflow-wrap: anywhere; } /* 文字按钮(查看原文):无底色,hover 才出现下划线 */ .diag-link-btn { flex-shrink: 0; padding: 0; border: none; background: transparent; color: var(--accent); font-family: inherit; font-size: 13px; cursor: pointer; transition: opacity var(--dur) var(--ease); } .diag-link-btn:hover { text-decoration: underline; } /* ── 卡片脚注(修复难度徽章 + 温和话术)────────────────────────────── */ .diag-card-foot { display: flex; align-items: baseline; gap: 10px; margin-top: 12px; } .diag-risk-note { font-size: 12.5px; color: var(--text-tertiary); } .diag-foot { margin: 8px 0 0; font-size: 12px; color: var(--text-tertiary); } /* ── 空态 / 加载态(衬线大字一句话,design-system §7)──────────────── */ .diag-empty { padding: 56px 0 24px; } .diag-empty-title { margin: 0; font-family: var(--font-serif); font-size: 24px; font-weight: 600; color: var(--text); } .diag-empty-sub { margin: 10px 0 0; max-width: 560px; font-size: 13.5px; color: var(--text-secondary); } /* 呼吸点加载指示:三点错峰呼吸(reduced-motion 时 theme.css 全局静止) */ @keyframes diag-breathe { 0%, 100% { opacity: 0.25; } 50% { opacity: 1; } } .diag-loading-dots { display: inline-flex; gap: 5px; margin-left: 10px; vertical-align: middle; } .diag-loading-dots span { width: 6px; height: 6px; border-radius: 50%; background: var(--accent); animation: diag-breathe 1.2s var(--ease) infinite; } .diag-loading-dots span:nth-child(2) { animation-delay: 150ms; } .diag-loading-dots span:nth-child(3) { animation-delay: 300ms; } /* ── 修复区(Phase 6A):🟢 直接可点 / 🟡 先确认 ────────────────────── */ .diag-fixes { display: flex; flex-direction: column; gap: 10px; margin-top: 14px; padding-top: 12px; border-top: 1px solid var(--border); } .diag-fix { display: flex; flex-direction: column; gap: 10px; align-items: flex-start; } /* 修复按钮:语义色只做描边与文字,底色保持纸感(design-system §2) */ .diag-fix-btn { height: 34px; padding: 0 14px; border: 1px solid transparent; border-radius: var(--radius-control); font-family: inherit; font-size: 13px; cursor: pointer; transition: background-color var(--dur) var(--ease), opacity var(--dur) var(--ease); } .diag-fix-btn.is-green { background: color-mix(in srgb, var(--success) 14%, transparent); border-color: color-mix(in srgb, var(--success) 32%, transparent); color: var(--success); } .diag-fix-btn.is-green:hover:not(:disabled) { background: color-mix(in srgb, var(--success) 22%, transparent); } .diag-fix-btn.is-yellow { background: color-mix(in srgb, var(--warning) 14%, transparent); border-color: color-mix(in srgb, var(--warning) 34%, transparent); color: var(--warning); } .diag-fix-btn.is-yellow:hover:not(:disabled) { background: color-mix(in srgb, var(--warning) 22%, transparent); } .diag-fix-btn:disabled { opacity: 0.55; cursor: default; } /* 展开的「会发生什么」面板 */ .diag-fix-panel { width: 100%; padding: 12px 14px; border: 1px solid var(--border); border-radius: var(--radius-control); background: var(--bg-sunken); display: flex; flex-direction: column; gap: 10px; } .diag-fix-detail { margin: 0; font-size: 13px; line-height: 1.65; color: var(--text); } /* 候选清单:默认全不勾,一行一项 */ .diag-candidates { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 2px; } .diag-candidate { display: flex; align-items: baseline; gap: 10px; padding: 5px 6px; border-radius: var(--radius-chip); cursor: pointer; font-size: 13px; } .diag-candidate:hover { background: color-mix(in srgb, var(--accent-soft) 40%, transparent); } .diag-candidate input { flex-shrink: 0; align-self: center; accent-color: var(--accent); } .diag-candidate-title { flex-shrink: 0; max-width: 40%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--text); } .diag-candidate-size { flex-shrink: 0; min-width: 72px; text-align: right; color: var(--text-secondary); font-variant-numeric: tabular-nums; } .diag-candidate-detail { flex: 1; min-width: 0; color: var(--text-tertiary); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .diag-fix-summary { margin: 0; font-size: 12.5px; color: var(--text-secondary); font-variant-numeric: tabular-nums; } .diag-fix-actions { display: flex; align-items: center; gap: 10px; } /* 修复结果行:人话 + 释放体积 + 可撤销说明 */ .diag-fix-result { display: flex; align-items: baseline; gap: 8px; margin: 0; max-width: 100%; font-size: 13px; line-height: 1.65; } .diag-fix-result.is-ok { color: var(--text); } .diag-fix-result.is-note { color: var(--text-secondary); } .diag-fix-result-mark { flex-shrink: 0; font-family: var(--font-mono); } .diag-fix-result.is-ok .diag-fix-result-mark { color: var(--success); } .diag-fix-undone { color: var(--text-secondary); } .diag-open-settings { margin-top: 12px; } /* ── 后悔药(隔离区清单)───────────────────────────────────────────── */ .diag-trash { margin-top: 10px; padding: 18px 22px; border: 1px solid var(--border); border-radius: var(--radius-card); background: var(--bg-elevated); } .diag-trash-head { display: flex; align-items: baseline; gap: 14px; flex-wrap: wrap; } .diag-trash-title { margin: 0; font-size: 16px; } .diag-trash-sub { margin: 0; font-size: 12.5px; color: var(--text-secondary); } .diag-trash-empty { margin: 12px 0 0; font-family: var(--font-serif); font-size: 15px; color: var(--text-tertiary); } .diag-trash-list { list-style: none; margin: 12px 0 0; padding: 0; display: flex; flex-direction: column; } .diag-trash-item { display: flex; align-items: baseline; gap: 12px; padding: 7px 0; border-top: 1px solid var(--border); font-size: 13px; font-variant-numeric: tabular-nums; flex-wrap: wrap; } .diag-trash-time { flex-shrink: 0; min-width: 168px; color: var(--text-secondary); } .diag-trash-info { flex: 1; min-width: 160px; color: var(--text); } .diag-trash-confirm { display: inline-flex; align-items: baseline; gap: 8px; font-size: 12.5px; color: var(--text-secondary); } .diag-trash-confirm-yes { height: 28px; padding: 0 10px; font-size: 12.5px; }