/* ===== ValAI 360 · Apple-style Design System ===== */
:root {
    --bg: #fbfbfd;
    --surface: #ffffff;
    --text: #1d1d1f;
    --text-secondary: #6e6e73;
    --text-tertiary: #86868b;
    --blue: #0071e3;
    --blue-hover: #0077ed;
    --blue-soft: #e8f2fd;
    --red: #ff3b30;
    --orange: #ff9500;
    --green: #34c759;
    --border: #d2d2d7;
    --separator: #f0f0f2;
    --radius: 18px;
    --radius-sm: 12px;
    --ease: cubic-bezier(0.4, 0, 0.2, 1);
    --shadow: 0 4px 24px rgba(0,0,0,0.06);
    --shadow-hover: 0 12px 40px rgba(0,0,0,0.10);
}
* { margin: 0; padding: 0; box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
    font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Display', 'SF Pro Text', 'PingFang SC', 'Helvetica Neue', 'Microsoft YaHei', sans-serif;
    background: var(--bg); color: var(--text); line-height: 1.5;
    -webkit-font-smoothing: antialiased; letter-spacing: -0.01em;
}
a { text-decoration: none; color: inherit; }
.container { max-width: 1080px; margin: 0 auto; padding: 0 22px; }

/* ===== 导航栏（毛玻璃）===== */
.navbar {
    background: rgba(255,255,255,0.72);
    backdrop-filter: saturate(180%) blur(20px);
    -webkit-backdrop-filter: saturate(180%) blur(20px);
    border-bottom: 1px solid rgba(0,0,0,0.06);
    position: sticky; top: 0; z-index: 100;
}
.navbar-inner { display: flex; justify-content: space-between; align-items: center; height: 52px; }
.logo { font-size: 19px; font-weight: 600; color: var(--text); display: flex; align-items: baseline; gap: 8px; letter-spacing: -0.02em; }
.logo span { color: var(--text-tertiary); font-size: 12px; font-weight: 400; }
.nav-links { display: flex; gap: 28px; align-items: center; }
.nav-links a { color: var(--text-secondary); font-size: 14px; transition: color 0.3s var(--ease); }
.nav-links a:hover { color: var(--text); }

/* ===== 按钮（胶囊形）===== */
.btn {
    display: inline-block; padding: 9px 22px; border-radius: 980px;
    font-size: 14px; font-weight: 400; cursor: pointer; border: none;
    transition: all 0.3s var(--ease); text-align: center; letter-spacing: 0;
}
.btn-primary { background: var(--blue); color: #fff; }
.btn-primary:hover { background: var(--blue-hover); transform: scale(1.02); }
.btn-outline { border: 1px solid var(--border); background: transparent; color: var(--blue); }
.btn-outline:hover { border-color: var(--blue); background: var(--blue-soft); }
.btn-danger { background: var(--red); color: #fff; }
.btn-success { background: var(--green); color: #fff; }
.nav-links .btn { padding: 6px 18px; font-size: 13px; }
.nav-links .btn-primary { color: #fff; }
.nav-links .btn-outline { color: var(--blue); }

/* ===== Hero ===== */
.hero {
    background: linear-gradient(180deg, #ffffff 0%, #f5f5f7 100%);
    color: var(--text); padding: 96px 0 80px; text-align: center;
}
.hero h1 { font-size: 56px; font-weight: 600; letter-spacing: -0.03em; margin-bottom: 18px; line-height: 1.1; }
.hero p { font-size: 21px; color: var(--text-secondary); margin-bottom: 36px; font-weight: 400; }
.hero-buttons { display: flex; gap: 16px; justify-content: center; }
.hero .btn-primary { font-size: 17px; padding: 13px 34px; }
.hero .btn-outline { font-size: 17px; padding: 13px 34px; color: var(--blue); border-color: var(--blue); background: transparent; }

/* ===== 特性区 ===== */
.features { padding: 80px 0; }
.features h2 { text-align: center; font-size: 40px; font-weight: 600; letter-spacing: -0.025em; margin-bottom: 56px; }
.feature-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
.feature-card {
    background: var(--surface); padding: 36px 28px; border-radius: var(--radius);
    box-shadow: var(--shadow); text-align: center; transition: all 0.4s var(--ease);
}
.feature-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-hover); }
.feature-icon { font-size: 44px; margin-bottom: 18px; }
.feature-card h3 { font-size: 19px; font-weight: 600; margin-bottom: 8px; letter-spacing: -0.01em; }
.feature-card p { color: var(--text-secondary); font-size: 14px; line-height: 1.6; }

/* ===== 表单 ===== */
.auth-page { min-height: calc(100vh - 52px); display: flex; align-items: center; justify-content: center; padding: 48px 0; }
.auth-card {
    background: var(--surface); padding: 44px; border-radius: var(--radius);
    box-shadow: var(--shadow); width: 100%; max-width: 420px;
}
.auth-card h2 { text-align: center; margin-bottom: 28px; font-size: 26px; font-weight: 600; letter-spacing: -0.02em; }
.form-group { margin-bottom: 18px; }
.form-group label { display: block; margin-bottom: 7px; font-size: 13px; color: var(--text-secondary); font-weight: 500; }
.form-group input, .form-group select, .form-group textarea {
    width: 100%; padding: 12px 14px; border: 1px solid var(--border); border-radius: var(--radius-sm);
    font-size: 15px; font-family: inherit; background: var(--bg); transition: all 0.3s var(--ease);
}
.form-group input:focus, .form-group select:focus, .form-group textarea:focus {
    outline: none; border-color: var(--blue); background: #fff; box-shadow: 0 0 0 4px rgba(0,113,227,0.10);
}
.auth-card .btn { width: 100%; padding: 13px; font-size: 16px; margin-top: 10px; }
.auth-link { text-align: center; margin-top: 18px; font-size: 14px; color: var(--text-tertiary); }
.auth-link a { color: var(--blue); }

/* ===== 控制台 ===== */
.page-header { display: flex; justify-content: space-between; align-items: center; margin: 44px 0 28px; }
.page-header h1 { font-size: 32px; font-weight: 600; letter-spacing: -0.025em; }
.stats-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; margin-bottom: 28px; }
.stat-card {
    background: var(--surface); padding: 24px; border-radius: var(--radius);
    box-shadow: var(--shadow); transition: transform 0.3s var(--ease);
}
.stat-card:hover { transform: translateY(-2px); }
.stat-number { font-size: 38px; font-weight: 600; color: var(--text); letter-spacing: -0.02em; }
.stat-label { font-size: 13px; color: var(--text-tertiary); margin-top: 4px; }

/* ===== 项目列表 ===== */
.project-list { background: var(--surface); border-radius: var(--radius); box-shadow: var(--shadow); overflow: hidden; }
.project-item {
    display: flex; justify-content: space-between; align-items: center;
    padding: 18px 24px; border-bottom: 1px solid var(--separator); transition: background 0.3s var(--ease);
}
.project-item:hover { background: #fafafc; }
.project-item:last-child { border-bottom: none; }
.project-info h3 { font-size: 16px; font-weight: 600; margin-bottom: 4px; }
.project-info h3 a:hover { color: var(--blue); }
.project-info p { font-size: 13px; color: var(--text-tertiary); }
.project-meta { display: flex; gap: 16px; align-items: center; }
.status-badge { padding: 5px 14px; border-radius: 980px; font-size: 12px; font-weight: 500; }
.status-pending { background: #fff4e6; color: #c97400; }
.status-processing { background: var(--blue-soft); color: var(--blue); }
.status-completed { background: #e8f9ed; color: #1a8a3e; }

/* ===== 区块卡片 ===== */
.detail-section {
    background: var(--surface); border-radius: var(--radius); padding: 28px;
    margin-bottom: 20px; box-shadow: var(--shadow);
}
.detail-section h2 { font-size: 20px; font-weight: 600; margin-bottom: 18px; letter-spacing: -0.015em; }
.detail-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 14px; }
.detail-item { font-size: 14px; color: var(--text-secondary); }
.detail-item label { color: var(--text-tertiary); display: inline-block; width: 96px; }
.upload-area {
    border: 2px dashed var(--border); border-radius: var(--radius); padding: 48px;
    text-align: center; cursor: pointer; transition: all 0.3s var(--ease); background: var(--bg);
}
.upload-area:hover { border-color: var(--blue); background: var(--blue-soft); }
.upload-area p { color: var(--text-tertiary); margin-top: 8px; font-size: 14px; }
.file-list { margin-top: 16px; }
.file-item {
    display: flex; justify-content: space-between; align-items: center; padding: 12px 16px;
    background: var(--bg); border-radius: var(--radius-sm); margin-bottom: 8px; font-size: 14px;
}

/* ===== 审核结果 ===== */
.issue-card { border-left: 4px solid; padding: 18px; margin-bottom: 12px; border-radius: 0 var(--radius-sm) var(--radius-sm) 0; background: #fafafc; }
.issue-major { border-color: var(--red); }
.issue-minor { border-color: var(--orange); }
.issue-concern { border-color: var(--blue); }
.issue-title { font-weight: 600; margin-bottom: 6px; }
.issue-meta { font-size: 12px; color: var(--text-tertiary); margin-bottom: 8px; }
.issue-desc { font-size: 14px; color: var(--text-secondary); }

/* ===== 提示 ===== */
.flash { padding: 13px 18px; border-radius: var(--radius-sm); margin-bottom: 16px; font-size: 14px; }
.flash-error { background: #ffeaea; color: #c62828; }
.flash-success { background: #e8f9ed; color: #1a8a3e; }

/* ===== 工具卡片 hover ===== */
.tool-card { transition: all 0.35s var(--ease); }
.tool-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-hover); }

/* ===== 页脚 ===== */
.footer {
    background: #f5f5f7; color: var(--text-tertiary); padding: 36px 0;
    text-align: center; font-size: 12px; margin-top: 80px; border-top: 1px solid var(--separator);
}

/* ===== 外观切换按钮 ===== */
.theme-toggle {
    width: 34px; height: 34px; border-radius: 50%; border: 1px solid var(--border);
    background: var(--surface); color: var(--text); font-size: 15px; line-height: 1;
    cursor: pointer; display: inline-flex; align-items: center; justify-content: center;
    transition: all .3s var(--ease); padding: 0;
}
.theme-toggle:hover { transform: rotate(20deg) scale(1.06); border-color: var(--blue); }

/* ===== 强调色（可切换主题色）===== */
:root { --accent: var(--blue); --accent-hover: var(--blue-hover); --accent-soft: var(--blue-soft); }
[data-accent="indigo"] { --accent:#5e5ce6; --accent-hover:#6a68ee; --accent-soft:#ececfe; }
[data-accent="green"]  { --accent:#30b067; --accent-hover:#37c273; --accent-soft:#e6f7ee; }
[data-accent="orange"] { --accent:#ff9500; --accent-hover:#ffa51f; --accent-soft:#fff3e2; }
[data-accent="purple"] { --accent:#af52de; --accent-hover:#bd64e8; --accent-soft:#f6eafd; }
.btn-primary { background: var(--accent); }
.btn-primary:hover { background: var(--accent-hover); }
.btn-outline { color: var(--accent); }
.btn-outline:hover { border-color: var(--accent); background: var(--accent-soft); }
.form-group input:focus, .form-group select:focus, .form-group textarea:focus { border-color: var(--accent); box-shadow: 0 0 0 4px color-mix(in srgb, var(--accent) 10%, transparent); }
.project-info h3 a:hover { color: var(--accent); }
.upload-area:hover { border-color: var(--accent); background: var(--accent-soft); }
.status-processing { background: var(--accent-soft); color: var(--accent); }
.auth-link a { color: var(--accent); }
.nav-links .btn-outline { color: var(--accent); }

/* ===== 数据更新状态卡 ===== */
.ds-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; }
.ds-card {
    background: var(--bg); border: 1px solid var(--separator); border-radius: var(--radius-sm);
    padding: 16px 18px; transition: all .3s var(--ease);
}
.ds-card:hover { transform: translateY(-2px); box-shadow: var(--shadow); }
.ds-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 10px; }
.ds-name { font-size: 14px; font-weight: 600; display: flex; align-items: center; gap: 7px; }
.ds-dot { width: 8px; height: 8px; border-radius: 50%; flex: none; }
.ds-dot.ok { background: var(--green); box-shadow: 0 0 0 3px rgba(52,199,89,.15); }
.ds-dot.review { background: var(--orange); box-shadow: 0 0 0 3px rgba(255,149,0,.15); }
.ds-dot.static { background: var(--text-tertiary); }
.ds-dot.error { background: var(--red); box-shadow: 0 0 0 3px rgba(255,59,48,.15); }
.ds-mode { font-size: 10px; padding: 2px 8px; border-radius: 980px; background: var(--accent-soft); color: var(--accent); white-space: nowrap; }
.ds-cutoff { font-size: 26px; font-weight: 600; letter-spacing: -.02em; line-height: 1.1; }
.ds-cutoff small { font-size: 12px; font-weight: 400; color: var(--text-tertiary); margin-left: 6px; letter-spacing: 0; }
.ds-meta { font-size: 11.5px; color: var(--text-secondary); margin-top: 8px; line-height: 1.7; }
.ds-meta b { color: var(--text); font-weight: 600; }
.ds-pending { color: #c97400; font-weight: 600; }
.ds-hl { margin-top: 8px; display: flex; flex-wrap: wrap; gap: 5px; }
.ds-hl span { font-size: 10.5px; padding: 2px 8px; background: var(--surface); border:1px solid var(--separator); border-radius: 980px; color: var(--text-secondary); }
.ds-schedule { margin-top: 9px; font-size: 10.5px; color: var(--text-tertiary); }
.ds-loading { font-size: 13px; color: var(--text-tertiary); padding: 6px 2px; }
/* 可点击的数据状态卡：整卡跳转对应工具（仅 .ds-link，不影响 dashboard 质控卡） */
.ds-card.ds-link { cursor: pointer; position: relative; }
.ds-card.ds-link:hover { border-color: var(--accent); }
.ds-card.ds-link:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.ds-link .ds-schedule { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.ds-go { color: var(--accent); font-weight: 600; white-space: nowrap; opacity: .8; transition: opacity .2s var(--ease); }
.ds-card.ds-link:hover .ds-go { opacity: 1; }

/* ===== 深色主题 ===== */
[data-theme="dark"] {
    --bg: #000000; --surface: #1c1c1e; --text: #f5f5f7; --text-secondary: #a1a1a6;
    --text-tertiary: #6e6e73; --border: #38383a; --separator: #2c2c2e;
    --blue-soft: #0a2540; --shadow: 0 4px 24px rgba(0,0,0,.4); --shadow-hover: 0 12px 40px rgba(0,0,0,.6);
}
[data-theme="dark"] body { background: #000; }
[data-theme="dark"] .navbar { background: rgba(22,22,24,.72); border-bottom-color: rgba(255,255,255,.08); }
[data-theme="dark"] .hero { background: linear-gradient(180deg,#000 0%,#0d0d0f 100%); }
[data-theme="dark"] .footer { background: #0d0d0f; border-top-color: var(--separator); }
[data-theme="dark"] .feature-card, [data-theme="dark"] .stat-card,
[data-theme="dark"] .detail-section, [data-theme="dark"] .project-list, [data-theme="dark"] .auth-card { background: var(--surface); }
[data-theme="dark"] .project-item:hover { background: #232325; }
[data-theme="dark"] .issue-card, [data-theme="dark"] .ds-card, [data-theme="dark"] .upload-area,
[data-theme="dark"] .file-item, [data-theme="dark"] .form-group input,
[data-theme="dark"] .form-group select, [data-theme="dark"] .form-group textarea { background: #232325; }
[data-theme="dark"] .ds-hl span { background: #2c2c2e; }
[data-theme="dark"] .theme-toggle { background: var(--surface); }
[data-theme="dark"] .btn-outline { background: transparent; }
[data-theme="dark"] .status-completed { background:#0e2a18; color:#4cd979; }
[data-theme="dark"] .status-pending { background:#33240a; color:#ffb340; }
[data-theme="dark"] .flash-error { background:#3a1414; color:#ff8080; }
[data-theme="dark"] .flash-success { background:#0e2a18; color:#4cd979; }

/* ===== P0 应用壳：左侧导航 + 主区 ===== */
.app-shell { display:flex; align-items:flex-start; max-width:1280px; margin:0 auto; }
.app-side {
    width:220px; flex:none; position:sticky; top:52px; height:calc(100vh - 52px);
    padding:18px 12px; border-right:1px solid var(--separator);
    display:flex; flex-direction:column; gap:2px; overflow-y:auto;
    background:color-mix(in srgb, var(--bg) 86%, transparent);
    backdrop-filter:saturate(180%) blur(20px); -webkit-backdrop-filter:saturate(180%) blur(20px);
}
.app-main { flex:1; min-width:0; padding:0 26px 60px; }
.side-item {
    display:flex; align-items:center; gap:10px; padding:9px 12px; border-radius:10px;
    font-size:14px; color:var(--text-secondary); transition:all .2s var(--ease); white-space:nowrap;
}
.side-item span{ font-size:15px; width:20px; text-align:center; flex:none; }
.side-item.sub{ padding-left:26px; font-size:13px; }
.side-item:hover{ background:var(--separator); color:var(--text); }
.side-item.active{ background:var(--accent-soft); color:var(--accent); font-weight:600; }
.side-group{ font-size:11px; color:var(--text-tertiary); padding:14px 12px 4px; letter-spacing:.08em; }
.side-spacer{ flex:1; }
.side-role{ border-top:1px solid var(--separator); padding-top:12px; }
.side-role-label{ font-size:11px;color:var(--text-tertiary);margin-bottom:6px; }
.side-role-select{ width:100%; padding:8px 10px; border-radius:10px; border:1px solid var(--border); background:var(--surface); color:var(--text); font-size:12.5px; }

/* ===== ⌘K 快速搜索（导航内） ===== */
.cmdk-quick{
    display:flex;align-items:center;gap:10px;height:34px;padding:0 12px;border-radius:980px;
    border:1px solid var(--border);background:var(--bg);color:var(--text-tertiary);
    font-size:13px;cursor:pointer;transition:all .2s var(--ease);font-family:inherit;
}
.cmdk-quick kbd,.cmdk-panel kbd{ font-family:inherit;font-size:11px;background:var(--separator);border-radius:6px;padding:1px 7px;color:var(--text-secondary); }
.cmdk-quick:hover{ border-color:var(--accent);color:var(--text-secondary); }
#cmdkOverlay{ position:fixed;inset:0;z-index:2000;background:rgba(0,0,0,.4);backdrop-filter:blur(4px);
    display:none;align-items:flex-start;justify-content:center;padding:12vh 20px; }
#cmdkOverlay.show{ display:flex; }
.cmdk-panel{ width:100%;max-width:600px;background:var(--surface);border-radius:18px;box-shadow:0 24px 70px rgba(0,0,0,.28);overflow:hidden;animation:cmdkIn .18s var(--ease); }
@keyframes cmdkIn{from{transform:translateY(-10px) scale(.98);opacity:0}to{transform:none;opacity:1}}
.cmdk-inputrow{display:flex;align-items:center;gap:10px;padding:16px 18px;border-bottom:1px solid var(--separator);}
.cmdk-inputrow .cmdk-k{font-size:17px;color:var(--text-tertiary);}
.cmdk-inputrow input{flex:1;border:none;outline:none;background:transparent;font-size:16px;color:var(--text);font-family:inherit;}
.cmdk-results{max-height:52vh;overflow-y:auto;padding:8px;}
.cmdk-group{font-size:11px;color:var(--text-tertiary);padding:8px 12px 4px;letter-spacing:.06em;}
.cmdk-item{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:10px;cursor:pointer;}
.cmdk-item.on,.cmdk-item:hover{background:var(--accent-soft);}
.cmdk-ico{font-size:17px;width:24px;text-align:center;}
.cmdk-name{font-size:14.5px;font-weight:500;color:var(--text);}
.cmdk-desc{margin-left:auto;font-size:12px;color:var(--text-tertiary);max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.cmdk-empty{padding:30px;text-align:center;color:var(--text-tertiary);font-size:13.5px;}
.cmdk-foot{display:flex;gap:16px;padding:10px 18px;border-top:1px solid var(--separator);font-size:11px;color:var(--text-tertiary);}

/* ===== 三签进度条 ===== */
.flow-steps{display:flex;align-items:center;margin:6px 0 4px;}
.flow-step{display:flex;flex-direction:column;align-items:center;gap:6px;position:relative;z-index:1;flex:none;width:96px;}
.flow-dot{width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:600;
    background:var(--surface);border:2px solid var(--border);color:var(--text-tertiary);}
.flow-step .flow-label{font-size:12px;color:var(--text-tertiary);text-align:center;}
.flow-step.done .flow-dot{background:var(--green);border-color:var(--green);color:#fff;}
.flow-step.done .flow-label{color:var(--green);}
.flow-step.active .flow-dot{background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:0 0 0 4px var(--accent-soft);}
.flow-step.active .flow-label{color:var(--accent);font-weight:600;}
.flow-line{flex:1;height:2px;background:var(--border);margin:0 -10px 20px;}
.flow-line.done{background:var(--green);}
.flow-round{display:inline-block;font-size:11px;font-weight:600;padding:2px 10px;border-radius:980px;background:var(--accent-soft);color:var(--accent);margin-left:10px;}

/* ===== 状态徽章（stage） ===== */
.stage-badge{padding:5px 14px;border-radius:980px;font-size:12px;font-weight:600;white-space:nowrap;}
.stage-draft{background:var(--separator);color:var(--text-secondary);}
.stage-l2_pending,.stage-l3_pending{background:var(--accent-soft);color:var(--accent);}
.stage-returned{background:#fff4e6;color:#c97400;}
.stage-approved{background:#e8f9ed;color:#1a8a3e;}
.stage-archived{background:#ececfe;color:#5e5ce6;}
.stale-warn{color:#c97400;font-weight:600;}

/* ===== 动作条 / 问题卡 / 答复 ===== */
.action-bar{display:flex;gap:10px;flex-wrap:wrap;margin:14px 0;}
.action-bar form{display:inline;}
.opinion-input{width:100%;min-height:64px;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);
    font-family:inherit;font-size:13.5px;background:var(--bg);color:var(--text);resize:vertical;margin-bottom:8px;}
.finding-card{border-left:4px solid var(--border);background:var(--bg);border-radius:0 var(--radius-sm) var(--radius-sm) 0;
    padding:16px 18px;margin-bottom:12px;}
.finding-card.sev-critical,.finding-card.sev-high{border-left-color:var(--red);}
.finding-card.sev-medium{border-left-color:var(--orange);}
.finding-card.sev-low{border-left-color:var(--accent);}
.finding-card.sev-advisory{border-left-color:var(--text-tertiary);}
.finding-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px;}
.finding-code{font-size:12px;font-weight:700;color:var(--text-tertiary);}
.finding-title{font-size:15px;font-weight:600;}
.sev-tag{font-size:11px;padding:2px 9px;border-radius:980px;font-weight:600;}
.sev-tag.critical,.sev-tag.high{background:#ffe5e5;color:#c62828;}
.sev-tag.medium{background:#fff4e6;color:#c97400;}
.sev-tag.low{background:var(--accent-soft);color:var(--accent);}
.sev-tag.advisory{background:var(--separator);color:var(--text-secondary);}
.fix-tag{font-size:11px;padding:2px 9px;border-radius:980px;}
.fix-none{background:#f1f1f3;color:#6e6e73;}.fix-doing{background:#fff4e6;color:#c97400;}.fix-done{background:#e8f9ed;color:#1a8a3e;}
.finding-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px 18px;font-size:13px;color:var(--text-secondary);margin-bottom:8px;}
.finding-grid b{color:var(--text-tertiary);font-weight:500;margin-right:6px;}
.reply-thread{margin-top:10px;border-top:1px dashed var(--border);padding-top:10px;}
.reply-item{background:var(--surface);border:1px solid var(--separator);border-radius:10px;padding:8px 12px;margin-bottom:6px;font-size:13px;}
.reply-item .reply-meta{font-size:11px;color:var(--text-tertiary);margin-bottom:2px;}
.timeline{list-style:none;border-left:2px solid var(--separator);margin:8px 0 4px 8px;padding-left:18px;}
.timeline li{position:relative;padding:6px 0;font-size:13px;color:var(--text-secondary);}
.timeline li::before{content:'';position:absolute;left:-24px;top:12px;width:9px;height:9px;border-radius:50%;background:var(--accent);}
.timeline li .tl-time{font-size:11px;color:var(--text-tertiary);margin-left:8px;}
.timeline li.act-return::before{background:var(--orange);}
.timeline li.act-pass::before{background:var(--green);}

/* ===== 工具：最近/收藏横条 + 收藏星 ===== */
.rt-block{margin-bottom:22px;}
.rt-block h3{font-size:15px;font-weight:600;margin-bottom:10px;display:flex;align-items:center;gap:8px;}
.rt-strip{display:flex;gap:12px;overflow-x:auto;padding-bottom:6px;}
.rt-card{position:relative;flex:none;width:210px;display:flex;align-items:center;gap:10px;padding:14px;
    background:var(--surface);border:1px solid var(--separator);border-radius:var(--radius-sm);
    transition:all .25s var(--ease);}
.rt-card:hover{transform:translateY(-3px);box-shadow:var(--shadow);border-color:var(--accent);}
.rt-ico{font-size:22px;}
.rt-txt{display:flex;flex-direction:column;min-width:0;}
.rt-txt b{font-size:13.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.rt-txt small{font-size:11px;color:var(--text-tertiary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.rt-fav{margin-left:auto;border:none;background:transparent;font-size:16px;color:var(--text-tertiary);cursor:pointer;padding:2px;}
.rt-fav.on{color:#ffb300;}
.tool-card{position:relative;}
.card-fav{position:absolute;top:12px;right:12px;border:none;background:transparent;font-size:17px;color:var(--text-tertiary);cursor:pointer;z-index:2;}
.card-fav.on{color:#ffb300;}

/* ===== 队列 / 质量 ===== */
.queue-item{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:13px 16px;
    background:var(--surface);border:1px solid var(--separator);border-radius:var(--radius-sm);margin-bottom:8px;transition:all .2s var(--ease);}
.queue-item:hover{border-color:var(--accent);transform:translateX(2px);}
.q-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin-bottom:22px;}
.q-mini{background:var(--surface);border-radius:var(--radius-sm);padding:14px 16px;box-shadow:var(--shadow);}
.q-mini .n{font-size:26px;font-weight:700;letter-spacing:-.02em;}
.q-mini .l{font-size:12px;color:var(--text-tertiary);margin-top:2px;}
.identity-banner{display:flex;align-items:center;gap:10px;font-size:13px;padding:10px 16px;border-radius:var(--radius-sm);
    background:var(--accent-soft);color:var(--accent);margin-bottom:18px;}

[data-theme="dark"] .cmdk-quick, [data-theme="dark"] .side-role-select,
[data-theme="dark"] .opinion-input { background:#232325; color:var(--text); }
[data-theme="dark"] .rt-card,[data-theme="dark"] .queue-item,[data-theme="dark"] .q-mini,
[data-theme="dark"] .reply-item { background:var(--surface); }
[data-theme="dark"] .fix-none { background:#2c2c2e;color:var(--text-secondary); }
[data-theme="dark"] .sev-tag.critical,[data-theme="dark"] .sev-tag.high { background:#3a1414;color:#ff8080; }
[data-theme="dark"] .stage-returned,[data-theme="dark"] .fix-doing { background:#33240a;color:#ffb340; }
[data-theme="dark"] .flow-step.done .flow-label,[data-theme="dark"] .stage-approved { color:#4cd979; }
[data-theme="dark"] .flow-dot{background:#232325;}

@media (max-width: 900px){
    .app-side{display:none;}
    .q-grid{grid-template-columns:repeat(2,1fr);}
    .finding-grid{grid-template-columns:1fr;}
    .cmdk-quick span{display:none;}
}
@media (max-width: 768px) {
    .feature-grid { grid-template-columns: 1fr; }
    .stats-grid { grid-template-columns: repeat(2, 1fr); }
    .hero h1 { font-size: 36px; }
    .hero p { font-size: 17px; }
    .detail-grid { grid-template-columns: 1fr; }
    .nav-links { gap: 14px; }
    .ds-grid { grid-template-columns: 1fr; }
    .app-main{padding:0 14px 40px;}
    .flow-step{width:64px;}.flow-step .flow-label{font-size:10.5px;}
}

/* ===== 组织与权限（v1.6.0） ===== */
.role-legend{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px;margin:12px 0 6px;}
.role-legend-item{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px 14px;display:flex;flex-direction:column;gap:4px;}
.role-legend-item b{font-size:13.5px;color:var(--accent);}
.role-legend-item span{font-size:12px;color:var(--text-tertiary);line-height:1.5;}
.user-card{padding:22px 24px;}
.uc-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:14px;}
.uc-id{display:flex;flex-direction:column;gap:4px;}
.uc-sub{font-size:12.5px;color:var(--text-tertiary);}
.uc-self{display:inline-block;margin-top:2px;font-size:11px;color:var(--accent);background:var(--accent-soft);border-radius:999px;padding:2px 10px;width:fit-content;}
.uc-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;margin-bottom:14px;}
.uc-field{display:flex;flex-direction:column;gap:6px;font-size:12.5px;color:var(--text-tertiary);}
.uc-field input{width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);font-size:14px;font-family:inherit;background:var(--bg);color:var(--text);box-sizing:border-box;}
.uc-field input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 4px rgba(0,113,227,.10);}
.role-picks{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:10px;}
.role-pick{position:relative;display:flex;flex-direction:column;gap:3px;padding:13px 14px 13px 40px;border:1.5px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;transition:all .2s var(--ease);background:var(--bg);}
.role-pick:hover{border-color:var(--accent);}
.role-pick input{position:absolute;left:13px;top:15px;width:17px;height:17px;accent-color:var(--accent);cursor:pointer;}
.role-pick:has(input:checked){border-color:var(--accent);background:var(--accent-soft);}
.rp-name{font-size:13.5px;font-weight:600;color:var(--text);}
.rp-hint{font-size:11.5px;color:var(--text-tertiary);line-height:1.45;}
.uc-save{flex-shrink:0;}
[data-theme="dark"] .role-legend-item,[data-theme="dark"] .role-pick,[data-theme="dark"] .uc-field input{background:#1c1c1e;border-color:#38383a;}
[data-theme="dark"] .role-pick:has(input:checked){background:rgba(10,132,255,.16);}
@media (max-width:768px){.user-card{padding:16px;}.uc-head{flex-direction:column;}.role-picks{grid-template-columns:1fr;}}

/* ===== 专业信息中心（v1.7.0） ===== */
.kb-meta-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:12.5px;color:var(--text-tertiary);margin:4px 0 16px;}
.kb-meta-bar .pill{background:var(--accent-soft);color:var(--accent);border-radius:999px;padding:3px 11px;font-size:12px;}
.kb-sync-bar{display:none;align-items:center;gap:9px;flex-wrap:wrap;font-size:12.5px;color:var(--text-secondary,rgba(60,60,67,.78));background:var(--accent-soft);border:1px solid var(--border);border-radius:var(--radius-sm);padding:9px 14px;margin:-6px 0 16px;}
.kb-sync-dot{width:8px;height:8px;border-radius:50%;flex:none;box-shadow:0 0 0 4px rgba(52,199,89,.15);animation:kbPulse 2s infinite;}
@keyframes kbPulse{0%,100%{opacity:1;}50%{opacity:.45;}}
[data-theme="dark"] .kb-sync-bar{background:rgba(255,255,255,.05);}
.kb-tabs{display:flex;gap:6px;flex-wrap:wrap;border-bottom:1px solid var(--border);margin-bottom:18px;}
.kb-tab{appearance:none;border:none;background:transparent;font-family:inherit;font-size:14.5px;color:var(--text-tertiary);padding:10px 16px;cursor:pointer;border-bottom:2.5px solid transparent;border-radius:8px 8px 0 0;transition:all .2s;display:flex;align-items:center;gap:6px;}
.kb-tab:hover{color:var(--accent);}
.kb-tab.active{color:var(--accent);border-bottom-color:var(--accent);font-weight:600;}
.kb-tab .lock{font-size:11px;}
.kb-toolbar{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:14px;align-items:center;}
.kb-search{flex:1;min-width:220px;padding:10px 14px;border:1px solid var(--border);border-radius:var(--radius-sm);font-size:14px;font-family:inherit;background:var(--surface);color:var(--text);}
.kb-search:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 4px rgba(0,113,227,.10);}
.kb-select{padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);font-size:13.5px;font-family:inherit;background:var(--surface);color:var(--text);}
.kb-chips{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px;}
.kb-chip{border:1px solid var(--border);background:var(--surface);color:var(--text-secondary,rgba(60,60,67,.78));border-radius:999px;padding:5px 13px;font-size:12.5px;cursor:pointer;transition:all .15s;}
.kb-chip.on{background:var(--accent);border-color:var(--accent);color:#fff;}
.kb-layout{display:grid;grid-template-columns:340px 1fr;gap:16px;align-items:start;}
.kb-list{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);max-height:72vh;overflow-y:auto;padding:6px;}
.kb-li{padding:11px 13px;border-radius:var(--radius-sm);cursor:pointer;border:1px solid transparent;transition:background .15s;}
.kb-li:hover{background:var(--bg);}
.kb-li.active{background:var(--accent-soft);border-color:var(--accent);}
.kb-li .t{font-size:13.5px;font-weight:500;line-height:1.4;color:var(--text);}
.kb-li .m{font-size:11.5px;color:var(--text-tertiary);margin-top:3px;display:flex;gap:8px;flex-wrap:wrap;}
.kb-li .s{font-size:11.5px;color:var(--text-tertiary);margin-top:3px;line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.kb-reader{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);padding:26px 30px;min-height:60vh;}
.kb-reader h1.kb-r-title{font-size:21px;margin:0 0 10px;line-height:1.4;}
.kb-r-bar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;font-size:12.5px;color:var(--text-tertiary);padding-bottom:14px;margin-bottom:18px;border-bottom:1px solid var(--border);}
.kb-r-bar a{color:var(--accent);}
.kb-btn{appearance:none;border:1px solid var(--accent);background:transparent;color:var(--accent);border-radius:999px;padding:5px 14px;font-size:12.5px;cursor:pointer;font-family:inherit;}
.kb-btn:hover{background:var(--accent-soft);}
.kb-summary{background:var(--accent-soft);border-radius:var(--radius-sm);padding:13px 16px;font-size:13px;line-height:1.65;margin-bottom:18px;color:var(--text);display:none;}
.kb-summary.show{display:block;}
.kb-summary b{color:var(--accent);}
.kb-md-body{font-size:14.5px;line-height:1.85;color:var(--text);}
.kb-md-body h1,.kb-md-body h2{font-size:17px;margin:22px 0 10px;}
.kb-md-body h3{font-size:15.5px;margin:18px 0 8px;}
.kb-md-body p{margin:9px 0;}
.kb-md-body table{border-collapse:collapse;width:100%;font-size:12.5px;margin:12px 0;display:block;overflow-x:auto;}
.kb-md-body th,.kb-md-body td{border:1px solid var(--border);padding:6px 10px;}
.kb-empty{padding:60px 20px;text-align:center;color:var(--text-tertiary);font-size:14px;}
.kb-tag{display:inline-block;background:var(--bg);border-radius:6px;padding:2px 8px;font-size:11px;color:var(--text-secondary,rgba(60,60,67,.78));margin:2px 4px 2px 0;}
.kb-tag.blue{background:var(--accent-soft);color:var(--accent);}
.kb-more{width:calc(100% - 12px);margin:8px 6px;padding:10px;border:1px dashed var(--border);background:transparent;border-radius:var(--radius-sm);color:var(--accent);cursor:pointer;font-family:inherit;font-size:13px;}
.kb-lock-mask{border:2px dashed var(--border);border-radius:var(--radius);padding:56px 30px;text-align:center;background:var(--bg);}
.kb-lock-mask .lk-ico{font-size:40px;}
.kb-lock-mask h3{margin:14px 0 8px;}
.kb-lock-mask p{color:var(--text-tertiary);font-size:13.5px;margin-bottom:18px;}
.off-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px;}
.off-group{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px 20px;}
.off-group h3{font-size:14.5px;margin:0 0 12px;color:var(--accent);}
.off-item{display:block;padding:10px 0;border-top:1px solid var(--border);text-decoration:none;color:var(--text);}
.off-item:first-of-type{border-top:none;}
.off-item:hover .off-n{color:var(--accent);}
.off-item .off-n{font-size:14px;font-weight:500;}
.off-item .off-d{font-size:12px;color:var(--text-tertiary);margin-top:2px;line-height:1.5;}
.va-card{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px 20px;margin-bottom:12px;}
.va-card .va-h{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;align-items:baseline;}
.va-card .va-t{font-size:14.5px;font-weight:600;}
.va-card .va-row{font-size:12.5px;color:var(--text-tertiary);margin-top:8px;line-height:1.6;}
[data-theme="dark"] .kb-search,[data-theme="dark"] .kb-select,[data-theme="dark"] .kb-chip{background:#1c1c1e;border-color:#38383a;}
[data-theme="dark"] .kb-li:hover{background:#1c1c1e;}
@media (max-width:900px){.kb-layout{grid-template-columns:1fr;}.kb-list{max-height:38vh;}.kb-reader{padding:18px;}}
