/* 质检赋能：页面级视觉与交互样式。所有核心样式在本文件内自包含，避免缺少公共组件文件时弹窗/按钮失效。 */
:root {
  --quality-bg:#f7f3ee;
  --quality-panel:#fffdf9;
  --quality-text:#2f4360;
  --quality-muted:#7f8b99;
  --quality-orange:#f5873d;
  --quality-blue:#2f80ed;
  --quality-green:#4d9a61;
  --quality-red:#e6574f;
  --quality-border:#e8dfd3;
}

* { box-sizing:border-box; }
html { background:#fff; }
body { min-width:320px; margin:0; overflow-x:hidden; color:var(--quality-text); background:#fff; font-family:"PingFang SC","Microsoft YaHei",sans-serif; }
button,select,input,textarea { font:inherit; }
button { -webkit-tap-highlight-color:transparent; }
.is-hidden { display:none !important; }
.tabular-number,.header-metric strong,.closure-list-row > b,.rank-value { font-variant-numeric:tabular-nums; }

/* 公共组件兜底：完整包独立打开时仍有正确 UI。 */
.ui-btn { display:inline-flex; align-items:center; justify-content:center; gap:6px; min-height:32px; padding:0 12px; border:1px solid #d6e0ea; border-radius:9px; color:#536783; background:#fff; font-size:11px; font-weight:700; cursor:pointer; transition:.18s ease; }
.ui-btn:hover { border-color:#9fc7ee; color:#276bb3; background:#f8fbff; }
.ui-btn-primary { color:#fff; border-color:#2f80ed; background:#2f80ed; }
.ui-btn-primary:hover { color:#fff; border-color:#2672d5; background:#2672d5; }
.ui-btn-danger { color:#fff; border-color:#dc5b55; background:#dc5b55; }
.ui-select,.ui-input,.ui-textarea { width:100%; border:1px solid #d8e1ea; border-radius:9px; color:#344967; background:#fff; outline:0; }
.ui-select,.ui-input { min-height:34px; padding:0 10px; }
.ui-textarea { min-height:92px; padding:9px 10px; line-height:1.6; resize:vertical; }
.ui-pill { display:inline-flex; width:max-content; align-items:center; min-height:22px; padding:0 8px; border-radius:999px; color:#596b80; background:#eef2f6; font-size:10px; font-weight:800; }
.ui-pill-good,.ui-pill-main { color:#287b43; background:#e8f6ec; }
.ui-pill-warn,.ui-pill-accent { color:#af5e30; background:#fff0e6; }
.ui-pill-neutral { color:#66768a; background:#eef2f6; }
.ui-table-wrap { width:100%; overflow:auto; border:1px solid #e8ddd1; border-radius:14px; background:linear-gradient(180deg,#fffefc,#fffaf5); box-shadow:none; }
.ui-data-table table { width:100%; border-collapse:collapse; }
.ui-data-table th,.ui-data-table td { padding:11px 12px; border-bottom:1px solid #edf1f5; text-align:left; vertical-align:middle; font-size:11px; }
.ui-data-table th { position:sticky; top:0; z-index:1; color:#6f7e91; background:linear-gradient(180deg,#fdf9f4,#f6f1ea); font-weight:800; }
.ui-data-table tbody tr:hover { background:#fffaf5; }
.ui-modal-close { display:grid; place-items:center; flex:0 0 30px; width:30px; height:30px; padding:0; border:0; border-radius:50%; color:#718096; background:linear-gradient(180deg,#fbf6f0,#f0f4f7); font-size:20px; line-height:1; cursor:pointer; box-shadow:none; }
.ui-modal-close svg,.inline-icon,.pagination-icon { width:14px; height:14px; }
.ui-btn > [data-icon] svg,.quality-home > [data-icon] svg { width:14px; height:14px; }

.dev-toolbar { display:flex; align-items:center; justify-content:space-between; gap:16px; min-height:38px; padding:4px max(14px,calc((100vw - 1480px)/2)); border-bottom:1px solid #e8ddd0; background:linear-gradient(180deg,#f9f7f3,#f2eee8); color:#6f7d8f; font-size:12px; }
.dev-toolbar__brand,.dev-toolbar__controls,.dev-toolbar__controls label { display:flex; align-items:center; gap:9px; }
.dev-toolbar__controls { flex-wrap:wrap; justify-content:flex-end; }
.dev-toolbar__badge { padding:3px 8px; border-radius:999px; color:#9f5d2f; background:#fff0de; font-weight:800; box-shadow:none; }
.dev-toolbar .ui-select { min-width:156px; min-height:30px; }
.dev-toolbar .ui-btn { min-height:30px; padding:0 11px; }

.quality-page { width:min(1480px,calc(100% - 28px)); max-width:none; margin:8px auto 10px; padding:0; }

/* 标题栏：品牌、数据驱动的客户评价和返回入口形成一条温暖的鼓励带。 */
.quality-shellbar { position:relative; display:grid; grid-template-columns:minmax(270px,.82fr) minmax(430px,1.45fr) auto; align-items:center; gap:18px; min-height:86px; margin-bottom:10px; padding:9px 21px 9px 22px; overflow:hidden; border:1px solid #f4cfab; border-radius:22px; background:radial-gradient(circle at 9% 50%,rgba(255,200,151,.18),transparent 20%),linear-gradient(102deg,#fffdf9 0%,#fdf7ef 42%,#fdf9f4 100%); box-shadow:none; isolation:isolate; }
.quality-shellbar::before { content:""; position:absolute; z-index:0; inset:1px; border-radius:21px; background:radial-gradient(circle at 86% 48%,rgba(255,168,91,.11),transparent 20%),linear-gradient(90deg,transparent 0 53%,rgba(255,170,95,.045) 75%,transparent),linear-gradient(180deg,rgba(255,255,255,.52),transparent 38%); pointer-events:none; }
.quality-shellbar__art { position:absolute; z-index:0; inset:0; width:100%; height:100%; pointer-events:none; }
.quality-brand,.quality-home,.customer-voice,.management-scope { position:relative; z-index:1; }
.quality-brand { display:flex; align-items:center; gap:14px; min-width:0; }
.quality-brand__halo { position:relative; display:grid; place-items:center; flex:0 0 50px; width:50px; height:50px; border-radius:50%; background:radial-gradient(circle,#fff 0 34%,rgba(255,231,208,.94) 35% 49%,rgba(255,255,255,.95) 50% 63%,rgba(255,201,154,.24) 64% 77%,transparent 78%); filter:none; }
.quality-brand__halo::before,.quality-brand__halo::after { content:""; position:absolute; border-radius:50%; border:1px solid rgba(245,143,72,.2); }
.quality-brand__halo::before { inset:-5px; }
.quality-brand__halo::after { inset:-9px; border-style:dashed; opacity:.42; }
.quality-brand__mark { display:grid; place-items:center; width:32px; height:32px; border-radius:10px; color:#fff; background:linear-gradient(145deg,#ffbd79,#ff8440 68%,#f46f2e); box-shadow:none; }
.quality-brand__mark svg { width:23px; height:23px; fill:none; stroke:#fff; stroke-width:2.1; stroke-linecap:round; stroke-linejoin:round; }
.quality-brand__copy { min-width:0; }
.quality-brand h1 { margin:0; color:#5e321d; font-size:26px; font-weight:900; line-height:1.06; letter-spacing:.035em; background:linear-gradient(180deg,#2f1b13,#6e4127 58%,#b76635); -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent; text-shadow:none; }
.quality-brand p { display:flex; align-items:center; gap:8px; margin:4px 0 0; color:#8b7b70; font-size:11px; font-weight:600; white-space:nowrap; }
.quality-brand p i { display:block; width:3px; height:14px; border-radius:3px; background:linear-gradient(#ff9f5c,#ff7f3b); box-shadow:none; }
.customer-voice { display:grid; grid-template-columns:28px minmax(0,1fr) 22px; align-items:center; gap:10px; min-width:0; min-height:62px; padding:5px 12px 5px 6px; }
.customer-voice::before { content:"“"; position:absolute; right:42px; top:-25px; color:rgba(224,108,49,.11); font-family:Georgia,serif; font-size:102px; line-height:1; pointer-events:none; }
.customer-voice__icon { display:grid; place-items:center; width:28px; height:28px; color:#ee7042; }
.customer-voice__icon svg { width:24px; height:24px; }
.customer-voice__copy { position:relative; z-index:1; display:grid; min-width:0; }
.customer-voice__copy > span { color:#bd6638; font-size:10px; font-weight:800; letter-spacing:.08em; }
.customer-voice__copy q { display:-webkit-box; max-height:38px; margin:1px 0 0; overflow:hidden; color:#7c3e26; font-size:15px; font-weight:900; line-height:1.28; -webkit-box-orient:vertical; -webkit-line-clamp:2; }
.customer-voice__copy q::before,.customer-voice__copy q::after { content:""; }
.customer-voice__copy small { margin-top:1px; color:#a98876; font-size:10px; }
.customer-voice__sparkle { align-self:start; color:#e5a224; }
.customer-voice__sparkle svg { width:19px; height:19px; }
.management-scope { display:grid; grid-template-columns:30px minmax(0,1fr) auto; align-items:center; gap:10px; min-width:0; padding:0 8px; }
.management-scope__icon { display:grid; place-items:center; width:30px; height:30px; color:#2878c8; }
.management-scope__icon svg { width:22px; height:22px; }
.management-scope > div { display:grid; min-width:0; gap:3px; }
.management-scope small { color:#7a899b; font-size:10px; font-weight:700; }
#managementScopePath { display:flex; align-items:center; gap:4px; min-width:0; color:#334d6f; }
#managementScopePath button { padding:0; border:0; color:#2878c8; background:transparent; font-size:12px; font-weight:800; cursor:pointer; }
#managementScopePath strong { overflow:hidden; font-size:13px; text-overflow:ellipsis; white-space:nowrap; }
.management-scope em { color:#8a97a7; font-size:10px; font-style:normal; white-space:nowrap; }
.quality-home { display:inline-flex; align-items:center; gap:7px; flex:0 0 auto; min-height:34px; padding:0 10px; border-radius:999px; border:1px solid rgba(245,207,170,.72); color:#b55824; background:rgba(255,252,248,.7); box-shadow:none; font-size:12px; font-weight:900; text-decoration:none; backdrop-filter:blur(1px); }
.quality-home span { display:grid; place-items:center; width:21px; height:21px; color:#e46f31; box-shadow:none; }

.quality-dashboard { display:grid; grid-template-columns:minmax(0,2.12fr) minmax(390px,1fr); gap:10px; align-items:stretch; }
.quality-dashboard__main { display:grid; grid-template-rows:auto minmax(0,1fr); gap:8px; min-width:0; }
.dashboard-card { position:relative; min-width:0; padding:0 0 8px; overflow:hidden; border:1px solid var(--quality-border); border-radius:20px; background:#fff; box-shadow:none; }
.dashboard-card__head { position:relative; display:flex; align-items:center; justify-content:space-between; gap:12px; min-height:54px; margin:0 0 7px; padding:7px 13px; overflow:hidden; isolation:isolate; }
.dashboard-card__head > :not(.section-header-art) { position:relative; z-index:1; }
.closure-board,.cases-board { background:#fff; }
.closure-board { border-color:#91c7f7; }
.cases-board { border-color:#a9d6b1; }
.praise-board { border-color:#efcb95; }
.closure-board > .dashboard-card__head { border-bottom:1px solid rgba(76,145,215,.22); background:linear-gradient(110deg,#edf6ff 0%,#f7fbff 56%,#e5f1ff 100%); }
.cases-board > .dashboard-card__head { border-bottom:1px solid rgba(92,157,100,.2); background:linear-gradient(110deg,#edf8ee 0%,#f8fcf7 56%,#e5f4e8 100%); }
.praise-board > .dashboard-card__head { border-bottom:1px solid #efd4a9; background:linear-gradient(110deg,#fff3dd 0%,#fffaf0 100%); }
.section-header-art { position:absolute; z-index:0; top:0; right:0; width:min(44%,300px); height:100%; pointer-events:none; }
.section-header-art--closure circle { fill:none; stroke:#438ddd; stroke-width:1.5; opacity:.22; }
.section-header-art--closure circle:nth-child(2) { stroke:#2f80ed; opacity:.16; }
.section-header-art--closure path { fill:none; stroke:#3f86cf; stroke-width:1.5; opacity:.25; }
.section-header-art--closure path:last-child { fill:#4993dc; stroke:none; opacity:.24; }
.section-header-art--cases path:first-child { fill:#8aba90; opacity:.17; }
.section-header-art--cases path:not(:first-child) { fill:none; stroke:#579663; stroke-width:1.4; opacity:.22; }
.section-header-art--cases path:last-child { fill:#77aa7d; stroke:none; opacity:.23; }
.section-header-art--praise path:first-child { fill:#efb650; stroke:#d7922e; stroke-width:1; opacity:.24; }
.section-header-art--praise circle { fill:#fff5d8; stroke:#d7922e; stroke-width:1; opacity:.6; }
.section-header-art--praise path:not(:first-child) { fill:#e8a63b; stroke:none; opacity:.28; }
.section-header-art--praise path:last-child { fill:none; stroke:#d99432; stroke-width:1.5; opacity:.25; }
.dashboard-heading { display:flex; align-items:center; gap:9px; min-width:0; }
.dashboard-heading > div { min-width:0; }
.dashboard-heading h2 { margin:0; overflow:hidden; color:var(--quality-text); font-size:17px; line-height:1.35; font-weight:900; letter-spacing:.01em; text-overflow:ellipsis; white-space:nowrap; }
.dashboard-heading p { margin:2px 0 0; overflow:hidden; color:var(--quality-muted); font-size:11px; font-weight:600; text-overflow:ellipsis; white-space:nowrap; }
.section-icon { display:grid; place-items:center; flex:0 0 36px; width:36px; height:36px; border-radius:12px; box-shadow:none; }
.section-icon svg { width:22px; height:22px; fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }
.section-icon--closure { color:#1976df; background:linear-gradient(145deg,#f4faff,#e4f0ff); }
.section-icon--book { color:#4e9a5d; background:linear-gradient(145deg,#f5fbf5,#e8f5ea); }
.section-icon--medal { color:#d97722; background:linear-gradient(145deg,#fff8ea,#ffeed4); }

/* 标题栏内嵌今日指标：沿用所属大卡片主色，不再占用独立一行。 */
.dashboard-head-actions { position:relative; z-index:2; display:flex; align-items:center; gap:8px; margin-left:auto; }
.header-metric { position:relative; z-index:2; display:flex; align-items:center; gap:9px; flex:0 0 auto; min-height:38px; padding:5px 11px; border:1px solid currentColor; border-radius:12px; background:rgba(255,255,255,.78); }
.header-metric > span { font-size:10px; font-weight:800; opacity:.78; white-space:nowrap; }
.header-metric > strong { display:flex; align-items:baseline; gap:3px; font-size:20px; line-height:1; font-weight:900; white-space:nowrap; }
.header-metric > strong > b { font:inherit; }
.header-metric small { font-size:10px; font-weight:800; }
.header-metric--blue { color:#2679cf; background:#f5faff; }
.header-metric--green { color:#3e8f54; background:#f4fbf5; }
.header-metric--orange { color:#c86b20; background:#fff8ec; }

/* 质检预警：蓝色只留在标题栏，内容区为纯白。 */
.closure-board { height:262px; min-height:262px; }
.closure-actions { display:flex; align-items:center; justify-content:flex-end; gap:8px; }
.closure-breadcrumb { display:flex; align-items:center; gap:5px; min-height:23px; margin:0 12px 3px; overflow:hidden; color:#7b8ba0; font-size:10px; white-space:nowrap; }
.closure-breadcrumb button { max-width:132px; padding:0; overflow:hidden; border:0; color:#2679cf; background:transparent; font-size:10px; font-weight:700; text-overflow:ellipsis; white-space:nowrap; cursor:pointer; }
.closure-breadcrumb strong { overflow:hidden; color:#536783; text-overflow:ellipsis; }
.closure-list-head,.closure-list-row { display:grid; grid-template-columns:minmax(160px,1.14fr) minmax(125px,.9fr) 64px 64px 70px 44px; align-items:center; gap:8px; min-width:0; }
.closure-list-head { min-height:24px; margin:0 12px; padding:0 9px; border-bottom:1px solid #ece3d7; color:#98a2ae; font-size:10px; }
.closure-list-head span:nth-child(n+3) { text-align:right; }
.closure-project-grid { display:grid; grid-template-columns:1fr; grid-auto-rows:38px; align-content:start; gap:0; min-width:0; height:114px; margin:0 12px; overflow:hidden; background:#fff; }
.closure-list-row { min-height:38px; height:38px; padding:3px 9px; border-bottom:1px solid #eee3d7; background:linear-gradient(180deg,#fffefd,#fffdfa); }
.closure-list-row:hover { background:linear-gradient(180deg,#fffdf9,#fff8f1); }
.closure-list-row > b { justify-self:end; color:#415570; font-size:12px; }
.closure-list-row > b.attention { color:var(--quality-red); }
.closure-list-row > b.good { color:#3d9360; }
.closure-list-row > b.empty { color:#8a97a8; }
.closure-status--good { color:#3d9360 !important; }
.closure-status--attention { color:#c9635d !important; }
.closure-status--empty { color:#8a97a8 !important; }
.closure-project-name,.closure-org-link,.closure-org-name { display:grid; gap:0; min-width:0; justify-items:start; text-align:left; }
.closure-project-name strong,.closure-org-link strong,.closure-org-name strong { max-width:100%; overflow:hidden; font-size:11px; text-overflow:ellipsis; white-space:nowrap; }
.closure-project-name small,.closure-org-link small,.closure-org-name small { color:#8a97a8; font-size:10px; font-weight:500; }
.closure-org-link { width:max-content; max-width:100%; padding:0; border:0; color:#2679cf; background:transparent; cursor:pointer; }
.closure-org-link:hover strong { text-decoration:underline; text-underline-offset:2px; }
.closure-org-name strong { color:#536783; }
.closure-more { display:inline-flex; align-items:center; justify-self:end; gap:2px; min-height:28px; padding:0; border:0; color:#2679cf; background:transparent; font-size:10px; font-weight:700; cursor:pointer; }
.closure-empty { display:grid; place-items:center; height:114px; color:#6f8195; font-size:11px; }
.closure-board .module-pagination { margin-right:12px; margin-left:12px; }

/* 案例学习：绿色只留在标题栏，正文白底；标题支持两行，卡片高度足够。 */
.cases-board { min-height:0; }
.cases-toolbar { display:flex; align-items:center; justify-content:space-between; gap:10px; margin:0 12px 7px; }
.cases-toolbar > span { color:var(--quality-muted); font-size:10px; }
.segmented-control { display:inline-flex; align-items:center; gap:3px; width:max-content; padding:3px; border-radius:11px; background:linear-gradient(180deg,#f5f1eb,#f1ede7); box-shadow:none; }
.segmented-control button { min-height:28px; padding:0 12px; border:0; border-radius:8px; color:#6d7b90; background:transparent; font-size:11px; font-weight:700; cursor:pointer; }
.segmented-control button.active { color:#287e42; background:#fffdfa; box-shadow:none; }
.segmented-control--warm { width:auto; margin:8px 12px; background:linear-gradient(180deg,#f6efe6,#f3ece1); }
.segmented-control--warm button { flex:1; color:#8b6a48; }
.segmented-control--warm button.active { color:#c56519; background:linear-gradient(180deg,#fff6e9,#ffefdb); box-shadow:none; }
.case-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:8px; min-width:0; margin:0 12px; }
.case-card { display:grid; grid-template-rows:auto auto 1fr auto; gap:4px; min-width:0; min-height:108px; padding:8px 10px; overflow:hidden; border:1px solid #d8e8db; border-radius:13px; color:inherit; background:#fff; text-align:left; cursor:pointer; transition:.18s ease; box-shadow:none; }
.case-card:hover { border-color:#7bb685; box-shadow:none; transform:none; }
.case-card--typical { border-color:#efc9c6; background:#fff; box-shadow:none; }
.case-card__head { display:flex; align-items:center; justify-content:space-between; gap:6px; min-width:0; color:#318349; font-size:10px; font-weight:800; }
.case-card--typical .case-card__head { color:#d74f48; }
.case-card__head small { overflow:hidden; color:#7d8999; font-size:10px; font-weight:500; text-overflow:ellipsis; white-space:nowrap; }
.case-card h3 { display:-webkit-box; min-height:32px; margin:0; overflow:hidden; font-size:12px; line-height:1.35; -webkit-box-orient:vertical; -webkit-line-clamp:2; }
.case-card p { display:-webkit-box; min-height:27px; margin:0; overflow:hidden; color:#718096; font-size:10px; line-height:1.35; -webkit-box-orient:vertical; -webkit-line-clamp:2; }
.case-card__action { display:flex; align-items:center; gap:3px; margin-top:auto; color:#377f4a; font-size:10px; font-weight:800; }
.case-card--learned .case-card__action { color:#247347; }
.case-card--typical:hover { border-color:#df766f; box-shadow:none; }
.case-card--typical .case-card__action,.case-card--typical.case-card--learned .case-card__action { color:#d6534c; }
#caseTypeTabs button[data-case-type="excellent"].active { color:#287e42; background:#fff; }
#caseTypeTabs button[data-case-type="typical"].active { color:#d44f48; background:#fff4f3; box-shadow:none; }
#caseTypeTabs button[data-case-type="progress"].active { color:#246fbd; background:#f2f8ff; box-shadow:none; }
.case-card__action svg { width:12px; height:12px; fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }
.cases-board .module-pagination { margin-right:12px; margin-left:12px; }

/* 学习进度：多场考试独立 8 选 1，上级按当前管理范围只读查看。 */
.case-grid--progress { display:block; }
.learning-breadcrumb { display:none; }
.breadcrumb-icon { width:11px; height:11px; vertical-align:middle; }
.exam-task-list { display:grid; gap:6px; margin:0 12px; }
.exam-task { overflow:hidden; border:1px solid #dbe5ef; border-radius:12px; background:#fff; }
.exam-task--done { border-color:#cfe4d4; }
.exam-task__summary { display:grid; grid-template-columns:30px minmax(150px,1fr) minmax(145px,.8fr) 18px; align-items:center; gap:8px; width:100%; min-height:42px; padding:5px 9px; border:0; color:#344967; background:#f8fbfe; text-align:left; cursor:pointer; }
.exam-task--done .exam-task__summary { background:#f7fbf8; }
.exam-task__mark { display:grid; place-items:center; width:28px; height:28px; border-radius:8px; color:#2d76bd; background:#eaf4ff; }
.exam-task--done .exam-task__mark { color:#38834d; background:#eaf6ed; }
.exam-task__icon { width:17px; height:17px; }
.exam-task__title,.exam-task__status { display:grid; min-width:0; gap:1px; }
.exam-task__title strong,.exam-task__status small { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.exam-task__title strong { font-size:11px; }
.exam-task__title small,.exam-task__status small { color:#8390a0; font-size:10px; }
.exam-task__status { justify-items:end; text-align:right; }
.exam-task__status b { color:#2d76bd; font-size:10px; }
.exam-task--done .exam-task__status b { color:#38834d; }
.exam-task__chevron { width:15px; height:15px; color:#718096; }
.exam-task__body { padding:6px 8px 8px; border-top:1px solid #e7edf3; }
.exam-task__body > p { margin:0 0 5px; color:#718096; font-size:10px; }
.exam-link-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:5px; }
.exam-link-row { display:grid; grid-template-columns:18px minmax(0,1fr); align-items:center; gap:3px 5px; min-width:0; min-height:46px; padding:5px 6px; border:1px solid #e3e9ef; border-radius:9px; background:#fff; }
.exam-link-row--selected { border-color:#9ecbac; background:#f5fbf6; }
.exam-link-row__icon { width:15px; height:15px; color:#397ec1; }
.exam-link-row--selected .exam-link-row__icon { color:#38834d; }
.exam-link-row__open { display:flex; align-items:center; justify-content:space-between; gap:4px; min-width:0; padding:0; border:0; color:#405875; background:transparent; cursor:pointer; }
.exam-link-row__open strong { overflow:hidden; font-size:10px; text-overflow:ellipsis; white-space:nowrap; }
.exam-link-row__complete,.exam-link-row em { grid-column:2; justify-self:start; font-size:10px; font-style:normal; }
.exam-link-row__complete { min-height:20px; padding:0; border:0; color:#2d76bd; background:transparent; font-weight:800; cursor:pointer; }
.exam-link-row em { color:#7c8999; }
.exam-link-row--selected em { color:#38834d; font-weight:800; }
.learning-empty { display:grid; place-items:center; min-height:150px; color:#718096; font-size:11px; }
.learning-manager { min-width:0; }
.exam-picker { display:flex; align-items:center; gap:5px; margin-bottom:6px; overflow-x:auto; scrollbar-width:none; }
.exam-picker::-webkit-scrollbar { display:none; }
.exam-picker button { flex:0 0 auto; min-height:26px; padding:0 9px; border:1px solid #d9e2eb; border-radius:8px; color:#65758a; background:#fff; font-size:10px; font-weight:700; cursor:pointer; }
.exam-picker button.active { color:#1f69b3; border-color:#8db9e4; background:#f0f7ff; }
.learning-summary { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:6px; margin-bottom:7px; }
.learning-summary > span { display:grid; grid-template-columns:22px 1fr auto; align-items:center; gap:2px 6px; min-height:38px; padding:5px 8px; border:1px solid #deeadf; border-radius:10px; background:#f9fcf8; }
.learning-summary__icon { grid-row:1 / span 2; width:19px; height:19px; color:#4b915d; }
.learning-summary small { color:#7c8999; font-size:10px; }
.learning-summary strong { grid-column:3; grid-row:1 / span 2; color:#35506f; font-size:15px; font-variant-numeric:tabular-nums; }
.learning-progress-head,.learning-progress-row { display:grid; grid-template-columns:minmax(160px,1.4fr) 62px 62px 62px 72px; align-items:center; gap:7px; min-width:560px; }
.learning-progress-head--seat,.learning-progress-row--seat { grid-template-columns:minmax(170px,1.35fr) 82px 96px 128px; min-width:560px; }
.learning-progress-head { min-height:21px; padding:0 8px; color:#98a2ae; font-size:10px; }
.learning-progress-head span:not(:first-child) { text-align:right; }
.learning-progress-list { border-top:1px solid #e6ece5; }
.learning-progress-row { min-height:34px; padding:3px 8px; border-bottom:1px solid #edf0ec; background:#fff; font-size:10px; }
.learning-progress-row > div { display:flex; align-items:center; gap:6px; min-width:0; }
.learning-progress-row > div > small { flex:0 0 auto; color:#97a2af; font-size:10px; }
.learning-progress-row > b,.learning-progress-row > span { justify-self:end; font-variant-numeric:tabular-nums; }
.learning-scope-link { display:flex; align-items:center; gap:4px; min-width:0; padding:0; border:0; color:#32804a; background:transparent; cursor:pointer; }
.learning-scope-link strong,.learning-person-name { overflow:hidden; font-size:10px; text-overflow:ellipsis; white-space:nowrap; }
.learning-state { display:inline-flex; align-items:center; gap:3px; color:#9b704b; font-weight:800; }
.learning-state--done { color:#35814d; }
.exam-confirm { display:grid; grid-template-columns:40px minmax(0,1fr); align-items:start; gap:12px; }
.exam-confirm__icon { width:34px; height:34px; padding:7px; border-radius:11px; color:#c66b27; background:#fff1de; }
.exam-confirm > div { display:grid; gap:5px; }
.exam-confirm strong { color:#4e3b31; font-size:14px; }
.exam-confirm p { margin:0; color:#74685f; }

.module-pagination { display:flex; align-items:center; justify-content:space-between; gap:10px; min-height:26px; margin-top:3px; color:#7c8999; font-size:10px; }
.module-pagination > div { display:flex; align-items:center; gap:3px; }
.module-pagination button { display:grid; place-items:center; min-width:24px; height:24px; padding:0 5px; border:1px solid #e4ddd2; border-radius:8px; color:#536783; background:#fffdfa; box-shadow:none; cursor:pointer; }
.module-pagination button.active { color:#fff; border-color:var(--quality-blue); background:var(--quality-blue); }
.module-pagination button:disabled { opacity:.42; cursor:not-allowed; }

/* 荣誉榜：顶部改成“表扬横幅”视觉，左侧排名表现 / 中间勋章 / 右侧今日力赞。 */
.praise-board { display:flex; flex-direction:column; min-height:100%; padding-bottom:8px; border-color:#efcb95; background:#fff; box-shadow:none; }
.praise-hero { position:relative; z-index:1; flex:0 0 auto; min-height:118px; overflow:hidden; border-bottom:1px solid #f1d8b3; background:radial-gradient(circle at 44% 60%,rgba(255,204,89,.20),transparent 19%),linear-gradient(105deg,#fffaf0 0%,#fffdf9 45%,#fff8e9 100%); }
.praise-hero::before { content:""; position:absolute; inset:0; pointer-events:none; background:radial-gradient(circle at 91% 20%,rgba(255,190,74,.12),transparent 18%),radial-gradient(circle at 14% 79%,rgba(255,226,172,.17),transparent 22%); }
.praise-hero::after { content:""; position:absolute; right:8px; top:8px; width:76px; height:76px; border-radius:50%; background:repeating-radial-gradient(circle,transparent 0 17px,rgba(226,162,67,.08) 18px 19px,transparent 20px 29px); }
.praise-hero__title { position:relative; z-index:2; display:flex; align-items:center; gap:7px; min-height:38px; padding:8px 12px 2px; color:#c7611e; }
.praise-hero__title h2 { margin:0; color:#c6601e; font-size:17px; font-weight:900; letter-spacing:.01em; }
.praise-crown { display:grid; place-items:center; width:25px; height:25px; color:#f3a51c; }
.praise-crown svg { width:24px; height:24px; fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }
.praise-hero__content { position:relative; z-index:2; display:grid; grid-template-columns:minmax(82px,.82fr) 82px minmax(160px,1.5fr); align-items:center; gap:7px; min-height:76px; padding:0 12px 9px; }
.praise-exceed { display:grid; justify-items:center; align-content:center; gap:0; min-width:0; color:#8b684f; text-align:center; }
.praise-exceed > span { font-size:10px; font-weight:700; }
.praise-exceed strong { display:flex; align-items:baseline; justify-content:center; gap:1px; margin-top:1px; color:#f06c18; line-height:1; }
.praise-exceed strong b { font-size:30px; font-weight:900; letter-spacing:-.045em; }
.praise-exceed strong small { font-size:14px; font-weight:900; }
.praise-exceed em { margin-top:1px; color:#9a7a61; font-size:10px; font-style:normal; font-weight:700; }
.praise-medal { position:relative; display:grid; place-items:center; width:80px; height:72px; justify-self:center; }
.praise-medal svg { position:relative; z-index:2; width:72px; height:78px; overflow:visible; filter:none; }
.praise-medal__rays { position:absolute; width:76px; height:76px; border-radius:50%; background:repeating-conic-gradient(from 5deg,rgba(242,166,36,.22) 0 2deg,transparent 2deg 18deg); mask:radial-gradient(circle,transparent 0 29px,#000 30px 38px,transparent 39px); opacity:.7; }
.praise-message { position:relative; display:grid; align-content:center; gap:5px; min-width:0; min-height:66px; padding:8px 12px 8px 16px; border:1px solid #f0dfc3; border-radius:11px; background:rgba(255,255,255,.92); }
.praise-message::before { content:""; position:absolute; left:-8px; top:24px; width:14px; height:14px; border-left:1px solid #f0dfc3; border-bottom:1px solid #f0dfc3; background:#fff; transform:rotate(45deg); }
.praise-message__main { position:relative; z-index:1; color:#7b5844; font-size:10px; font-weight:700; white-space:nowrap; }
.praise-message__main strong { display:inline-flex; align-items:baseline; gap:2px; color:#ef6c1a; }
.praise-message__main b { font-size:19px; font-weight:900; }
.praise-message__main small { font-size:10px; }
.praise-message p { position:relative; z-index:1; margin:0; overflow:hidden; color:#8b684f; font-size:10px; font-weight:700; line-height:1.45; text-overflow:ellipsis; white-space:nowrap; }
.praise-sparkles { position:absolute; inset:0; pointer-events:none; }
.praise-sparkles span { position:absolute; color:#f4b43a; opacity:.7; }
.praise-sparkles span svg { width:11px; height:11px; }
.praise-sparkles span:nth-child(1) { left:27%; top:8%; }
.praise-sparkles span:nth-child(2) { left:32%; bottom:12%; color:#ff7b66; transform:rotate(18deg); }
.praise-sparkles span:nth-child(2) svg { width:8px; height:8px; }
.praise-sparkles span:nth-child(3) { right:3%; top:18%; }
.leaderboard-list { position:relative; z-index:1; display:grid; flex:1 1 auto; grid-auto-rows:minmax(34px,1fr); align-content:stretch; min-height:0; margin:0 12px; padding:4px 0 0; list-style:none; }
.rank-row { display:grid; grid-template-columns:28px minmax(0,1fr) 64px; align-items:center; gap:8px; min-height:30px; padding:4px 9px; border-bottom:1px solid rgba(237,221,201,.82); border-radius:10px; background:linear-gradient(180deg,rgba(255,255,255,.6),rgba(255,255,255,0)); }
.rank-row--current { margin:2px 0; border:1px solid #efbd79; background:#fff8ec; box-shadow:none; }
.rank-row--appended { margin-top:5px; border-top-width:1px; }
.rank-badge { display:grid; place-items:center; width:22px; height:22px; border-radius:50%; color:#8b704f; background:linear-gradient(180deg,#fbf4eb,#f3e8d8); box-shadow:none; font-size:10px; font-weight:900; }
.rank-badge--1 { color:#8b5612; background:linear-gradient(145deg,#ffe597,#f5b738); }
.rank-badge--2 { color:#68707b; background:linear-gradient(145deg,#f6f6f6,#d6d9dd); }
.rank-badge--3 { color:#8b5139; background:linear-gradient(145deg,#f5c2a9,#dd8e68); }
.rank-name { display:flex; align-items:center; gap:5px; min-width:0; }
.rank-name strong { overflow:hidden; font-size:12px; text-overflow:ellipsis; white-space:nowrap; }
.rank-name small { flex:0 0 auto; padding:1px 5px; border-radius:999px; color:#bd5d19; background:#fff; font-size:10px; font-weight:800; }
.rank-value { justify-self:end; color:#a35e1e; font-size:14px; font-weight:900; }
.rank-value small { font-size:10px; }
.praise-decoration { position:absolute; right:-25px; bottom:12px; width:240px; opacity:.06; pointer-events:none; }
.praise-decoration svg { width:100%; fill:none; stroke:#dc7e2d; stroke-width:2; }

.global-state { min-height:420px; padding:20px; border:1px solid #dbe4ed; border-radius:18px; background:#fff; }
.state-card { display:grid; justify-items:start; gap:12px; max-width:560px; margin:70px auto; text-align:left; }
.state-card h2,.state-card p { margin:0; }
.state-card p { color:var(--quality-muted); }
.skeleton-line { width:100%; height:14px; border-radius:7px; background:#edf1f5; }

/* 所有业务弹窗统一正中间，不再使用右侧/底部抽屉。 */
.drawer-layer,.ui-modal-layer { position:fixed; inset:0; z-index:90; display:grid; place-items:center; padding:28px; }
.drawer-backdrop { position:absolute; inset:0; width:100%; height:100%; border:0; background:rgba(20,31,46,.38); backdrop-filter:blur(2px); cursor:pointer; }
.quality-drawer { position:relative; z-index:1; display:grid; grid-template-rows:auto minmax(0,1fr) auto; width:min(680px,calc(100vw - 48px)); max-height:min(86vh,820px); overflow:hidden; border:1px solid #d7cabc; border-radius:20px; background:linear-gradient(180deg,#fffefc,#fffaf5); box-shadow:none; }
.drawer-layer[data-mode="manager"] .quality-drawer { width:min(1040px,calc(100vw - 48px)); max-height:88vh; }
.drawer-layer[data-mode="editor"] .quality-drawer { width:min(860px,calc(100vw - 48px)); max-height:88vh; }
.drawer-head { display:flex; align-items:flex-start; justify-content:space-between; gap:20px; padding:16px 20px; border-bottom:1px solid #ece3d8; background:linear-gradient(100deg,#fffaf5,#fffefb); }
.drawer-head h2,.quality-kicker { margin:0; }
.drawer-head h2 { margin-top:2px; color:#2b3f5e; font-size:18px; }
.quality-kicker { color:#b3672b; font-size:10px; font-weight:800; }
.drawer-body { min-width:0; padding:18px 20px; overflow:auto; }
.drawer-footer { display:flex; justify-content:flex-end; gap:8px; min-height:58px; padding:12px 20px; border-top:1px solid #e4e9ef; background:#fbfcfd; }
.detail-stack { display:grid; gap:12px; }
.detail-section { display:grid; gap:7px; padding:14px; border:1px solid #ece3d8; border-radius:14px; background:linear-gradient(180deg,#fffefd,#fbfcfd); }
.detail-section p { margin:0; color:#5f6e82; line-height:1.7; }
.detail-label { color:#7c8999; font-size:11px; }
.detail-section--issue { border-color:#f1d8cf; background:#fff9f6; }
.detail-section--practice { border-color:#d8ead9; background:#f6fbf6; }

/* 自有质检案例管理 */
.case-manager { display:grid; gap:14px; }
.case-manager__summary { display:grid; grid-template-columns:repeat(4,1fr); gap:10px; }
.case-manager__summary > div { display:grid; gap:4px; padding:10px 12px; border:1px solid #e8ddd1; border-radius:14px; background:linear-gradient(145deg,#fffefc,#f9f7f3); box-shadow:none; }
.case-manager__summary span { color:#7d8998; font-size:10px; }
.case-manager__summary strong { color:#2d6fb6; font-size:20px; }
.manager-toolbar { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:11px 12px; border:1px solid #e8ddd1; border-radius:14px; background:linear-gradient(180deg,#fffdfa,#f7f3ee); }
.manager-toolbar > div { display:grid; gap:2px; }
.manager-toolbar strong { font-size:12px; }
.manager-toolbar p { margin:0; color:#69788b; font-size:10px; }
.quality-table table { min-width:760px; }
.exam-manager-table table { min-width:640px; }
.exam-manager-table th:first-child,.exam-manager-table td:first-child { width:44%; }
.exam-manager-table th:nth-child(3),.exam-manager-table td:nth-child(3) { width:112px; }
.quality-drawer .ui-data-table th:last-child,.quality-drawer .ui-data-table td:last-child { position:static; width:auto; min-width:0; box-shadow:none; }
.case-manager__title,.case-manager__record { display:block; }
.case-manager__title { max-width:280px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:#344967; }
.case-manager__record { margin-top:3px; color:#8b98a9; font-size:10px; }
.case-manager__actions { display:flex; align-items:center; gap:6px; white-space:nowrap; }
.table-action { min-height:27px; padding:0 8px; border:1px solid #d8e6f3; border-radius:8px; color:#2c74bd; background:linear-gradient(180deg,#fbfdff,#f1f7fd); font-size:10px; font-weight:800; cursor:pointer; }
.table-action:hover { border-color:#83b6e5; background:#edf7ff; }
.table-action--warn { color:#ae6040; border-color:#efd7ca; background:linear-gradient(180deg,#fffaf7,#fff3ed); }

.form-grid { display:grid; gap:11px; }
.form-grid__two { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
.form-grid .ui-field { display:grid; gap:5px; color:#52657d; font-size:11px; font-weight:700; }
.form-grid .ui-field > span:first-child { color:#52657d; }
.form-grid .ui-textarea { min-height:86px; }
.field-error { min-height:14px; color:var(--quality-red); font-size:10px; font-weight:500; }
[aria-invalid="true"] { border-color:#e6574f !important; box-shadow:none; }

/* 通用确认弹窗同样强制居中。 */
.ui-modal-layer { z-index:110; background:rgba(20,31,46,.38); backdrop-filter:blur(2px); }
.ui-modal { width:min(520px,calc(100vw - 48px)); overflow:hidden; border:1px solid #d7cabc; border-radius:18px; background:linear-gradient(180deg,#fffefc,#fffaf5); box-shadow:none; }
.ui-modal-head { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:15px 18px; border-bottom:1px solid #ece3d8; background:linear-gradient(180deg,#fffdf9,#fbfcfd); }
.ui-modal-title-wrap h2 { margin:0; color:#2e415e; font-size:17px; }
.ui-modal-content { padding:18px; color:#617185; font-size:12px; line-height:1.7; }
.ui-modal-footer { display:flex; justify-content:flex-end; gap:8px; padding:12px 18px; border-top:1px solid #e5eaf0; background:#fbfcfd; }
.confirm-copy { margin:0; }
.task-confirm { display:grid; gap:10px; }
.task-confirm > strong { color:var(--quality-text); font-size:17px; }
.task-confirm > span { color:#7c8999; font-size:11px; }
.task-confirm > div { display:grid; grid-template-columns:repeat(3,1fr); gap:8px; }
.task-confirm > div span { display:grid; gap:3px; padding:10px; border-radius:10px; background:#f7f9fb; }
.task-confirm small { color:#7c8999; font-size:10px; }
.task-confirm b { font-size:18px; }
.modal-summary { display:grid; gap:10px; }
.modal-summary-row { display:flex; align-items:center; justify-content:space-between; gap:16px; padding-bottom:9px; border-bottom:1px solid #e7ebf0; }
.modal-summary p { margin:0; color:#6e7c8f; font-size:11px; }
.ui-toast-center { position:fixed; z-index:140; top:22px; left:50%; transform:translateX(-50%); max-width:min(520px,calc(100vw - 32px)); padding:9px 15px; border:1px solid rgba(255,255,255,.16); border-radius:10px; color:#fff; background:rgba(39,55,76,.96); box-shadow:none; font-size:11px; font-weight:700; }

button:focus-visible,a:focus-visible,select:focus-visible,input:focus-visible,textarea:focus-visible { outline:3px solid rgba(47,128,237,.28); outline-offset:2px; }

/* 页面视觉规范：页面背景纯白，所有卡片表面不使用阴影。 */
.quality-shellbar,.dashboard-card,.case-card,.case-card:hover,.rank-row--current,.case-manager__summary > div,.manager-toolbar,.ui-table-wrap,.header-metric { box-shadow:none !important; }

.quality-home:hover { color:#a24d1f; border-color:#eeb987; background:rgba(255,247,238,.95); box-shadow:none; }
.dashboard-card::after { content:""; position:absolute; inset:0; border-radius:inherit; pointer-events:none; box-shadow:none; }
.closure-board::before,.cases-board::before,.praise-board::before { content:""; position:absolute; inset:0; pointer-events:none; background:linear-gradient(180deg,rgba(255,255,255,.12),transparent 20%); }

/* 桌面看板锁定一屏：开发条 + 标题 + 看板总高不超过视口，不出现页面滚动条。 */
@media (min-width:1101px) {
  html,body { height:100%; overflow:hidden; }
  .quality-page { display:flex; flex-direction:column; height:calc(100vh - 54px); min-height:0; overflow:hidden; }
  .quality-shellbar { flex:0 0 86px; }
  .quality-dashboard { flex:1 1 auto; min-height:0; overflow:hidden; }
  .quality-dashboard__main { grid-template-rows:262px minmax(0,1fr); min-height:0; overflow:hidden; }
  .cases-board,.praise-board { min-height:0; height:100%; }
  .cases-board { display:flex; flex-direction:column; }
  .case-grid { flex:0 0 auto; }
  .praise-hero { min-height:112px; }
  .segmented-control--warm { margin-top:5px; margin-bottom:5px; }
  .leaderboard-list { grid-auto-rows:minmax(28px,1fr); }
}

@media (min-width:1101px) and (max-height:760px) {
  .dev-toolbar { min-height:34px; padding-top:2px; padding-bottom:2px; }
  .quality-page { height:calc(100vh - 42px); margin-top:4px; margin-bottom:4px; }
  .quality-shellbar { flex-basis:76px; min-height:76px; }
  .quality-brand__halo { flex-basis:46px; width:46px; height:46px; }
  .quality-brand__mark { width:30px; height:30px; }
  .quality-brand h1 { font-size:23px; }
  .quality-brand p { font-size:10px; }
  .quality-dashboard__main { grid-template-rows:246px minmax(0,1fr); }
  .closure-board { height:246px; min-height:246px; }
  .dashboard-card__head { min-height:46px; margin-bottom:4px; }
  .closure-project-grid { grid-auto-rows:35px; height:105px; }
  .closure-list-row { min-height:35px; height:35px; }
  .case-card { min-height:96px; }
  .case-card p { -webkit-line-clamp:1; min-height:14px; }
  .rank-row { min-height:27px; }
}

@media (max-width:1100px) {

  .quality-shellbar { grid-template-columns:minmax(245px,.9fr) minmax(360px,1.35fr) auto; }
  .management-scope em { display:none; }
  .praise-hero__content { grid-template-columns:90px 76px minmax(170px,1fr); }
  .header-metric { min-height:34px; padding:4px 9px; }
  .header-metric > strong { font-size:18px; }

  .quality-dashboard { grid-template-columns:1fr; }
  .praise-board { min-height:560px; }
  .leaderboard-list { min-height:390px; }
}

@media (max-width:760px) {
  .dev-toolbar { align-items:flex-start; }
  .dev-toolbar__brand > span:last-child { display:none; }
  .dev-toolbar__controls { justify-content:flex-start; }
  .quality-page { width:min(100% - 18px,1480px); margin-top:9px; }
  .quality-shellbar { grid-template-columns:minmax(0,1fr) auto; grid-template-areas:"brand home" "voice voice"; min-height:154px; padding:11px 15px; }
  .quality-brand { grid-area:brand; }
  .customer-voice,.management-scope { grid-area:voice; min-height:60px; }
  .quality-home { grid-area:home; }
  .quality-brand { gap:12px; }
  .quality-brand__halo { flex-basis:58px; width:58px; height:58px; }
  .quality-brand__mark { width:38px; height:38px; }
  .quality-brand h1 { font-size:26px; }
  .quality-brand p { font-size:11px; white-space:normal; }
  .case-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .case-grid--progress { display:block; }
  .exam-link-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .exam-task__summary { grid-template-columns:30px minmax(120px,1fr) minmax(110px,.7fr) 18px; }
  .learning-manager { overflow-x:auto; }
  .dashboard-card__head { align-items:flex-start; }
  .closure-actions { align-items:flex-end; flex-direction:column; }
  .drawer-layer,.ui-modal-layer { padding:14px; }
  .quality-drawer,.drawer-layer[data-mode="manager"] .quality-drawer,.drawer-layer[data-mode="editor"] .quality-drawer,.ui-modal { width:calc(100vw - 28px); max-height:92vh; }
  .case-manager__summary { grid-template-columns:repeat(2,1fr); }
}

@media (max-width:560px) {
  .dev-toolbar { display:grid; }
  .dev-toolbar__controls,.dev-toolbar__controls label { align-items:stretch; flex-direction:column; }
  .dev-toolbar .ui-select { width:100%; }
  .quality-brand__halo { display:none; }
  .quality-brand h1 { font-size:22px; }
  .quality-home { font-size:11px; }
  .case-grid { grid-template-columns:1fr; }
  .case-grid--progress { display:block; }
  .exam-link-grid,.learning-summary { grid-template-columns:1fr 1fr; }
  .exam-task__summary { grid-template-columns:28px minmax(0,1fr) 18px; }
  .exam-task__status { grid-column:2; justify-items:start; text-align:left; }
  .dashboard-card__head { display:grid; }
  .closure-actions { align-items:stretch; }
  .closure-list-head,.closure-list-row { grid-template-columns:minmax(105px,1fr) minmax(86px,.8fr) 44px 44px 50px 34px; gap:3px; }
  .closure-project-name small,.closure-org-link small,.closure-org-name small { display:none; }
  .module-pagination { align-items:flex-start; flex-direction:column; }
  .rank-row { grid-template-columns:28px minmax(0,1fr) 56px; }
  .form-grid__two { grid-template-columns:1fr; }
  .case-manager__summary { grid-template-columns:1fr 1fr; }
}

@media (max-width:620px) {
  .praise-hero { min-height:156px; }
  .praise-hero__content { grid-template-columns:1fr 78px; grid-template-areas:"exceed medal" "message message"; gap:6px 8px; padding-bottom:10px; }
  .praise-exceed { grid-area:exceed; }
  .praise-medal { grid-area:medal; }
  .praise-message { grid-area:message; width:100%; min-height:52px; }
  .praise-message::before { display:none; }
}

/* 2026-09-15 优化：学习进度始终以单场考试详情呈现，考试数量增加时不再纵向撑高页面。 */
.employee-progress-shell { display:grid; gap:7px; min-height:0; margin:0 12px; }
.employee-progress-top { display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:end; gap:10px; }
.employee-exam-select { display:grid; grid-template-columns:auto minmax(220px,420px); align-items:center; gap:8px; min-width:0; color:#6c7b8f; font-size:10px; font-weight:800; }
.employee-exam-select .ui-select { min-height:30px; }
.employee-progress-stat { display:flex; align-items:baseline; gap:6px; white-space:nowrap; }
.employee-progress-stat strong { color:#2f78bd; font-size:16px; }
.employee-progress-stat span { color:#8290a0; font-size:10px; }
.exam-task--single { min-height:0; }
.exam-task__summary--static { cursor:default; }
.exam-task__summary--static:hover { background:#f8fbfe; }
.exam-task--done .exam-task__summary--static:hover { background:#f7fbf8; }
.field-help { color:#8b97a6; font-size:10px; font-weight:500; line-height:1.5; }
.exam-links-input { min-height:150px; resize:vertical; }
.exam-link-row__open:disabled { cursor:not-allowed; opacity:.45; }

/* 桌面/笔记本高度自适应：压缩头部和上半区，把案例区、荣誉榜完整留在视口内。 */
@media (min-width:821px) {
  .quality-dashboard { grid-template-columns:minmax(0,2.05fr) minmax(310px,1fr); }
}

@media (min-width:1101px) {
  .quality-page { height:calc(100dvh - 50px); }
  .quality-shellbar { flex-basis:clamp(68px,10.5vh,86px); min-height:clamp(68px,10.5vh,86px); }
  .quality-dashboard__main { grid-template-rows:clamp(218px,31vh,262px) minmax(0,1fr); }
  .closure-board { height:auto; min-height:0; }
  .praise-hero { min-height:clamp(88px,14vh,112px); }
  .praise-hero__title { min-height:clamp(31px,5vh,38px); padding-top:5px; }
  .praise-hero__content { min-height:0; padding-bottom:6px; }
  .leaderboard-list { grid-auto-rows:minmax(24px,1fr); }
  .rank-row { min-height:24px; padding-top:2px; padding-bottom:2px; }
  .cases-toolbar { margin-bottom:5px; }
  .employee-progress-shell { gap:5px; }
  .exam-task__body { padding-top:5px; padding-bottom:6px; }
  .exam-link-row { min-height:40px; }
}

@media (min-width:821px) and (max-width:1100px) {
  html,body { min-height:100%; }
  .quality-dashboard { grid-template-columns:minmax(0,1.9fr) minmax(300px,.95fr); }
  .praise-board { min-height:0; }
  .leaderboard-list { min-height:0; }
  .praise-hero__content { grid-template-columns:78px 68px minmax(130px,1fr); }
  .praise-message { padding-left:10px; padding-right:8px; }
}

@media (max-width:820px) {
  .quality-dashboard { grid-template-columns:1fr; }
  .employee-progress-top { grid-template-columns:1fr; align-items:stretch; }
  .employee-exam-select { grid-template-columns:1fr; }
  .employee-progress-stat { justify-content:flex-end; }
}

/* 2026-09-15 视觉优化 V2：收敛装饰，统一为清爽的企业级质管运营台。 */
:root {
  --quality-bg:#f5f7fa;
  --quality-panel:#ffffff;
  --quality-text:#22324a;
  --quality-muted:#7b8798;
  --quality-orange:#f28b3c;
  --quality-blue:#3478d4;
  --quality-green:#47945e;
  --quality-red:#d95852;
  --quality-border:#e7ebf0;
  --quality-soft:#f8fafc;
  --quality-shadow:0 10px 30px rgba(36,50,73,.055);
}

html,body { background:var(--quality-bg); }
body { color:var(--quality-text); }
.dev-toolbar { min-height:36px; border-bottom:1px solid #e8ecf1; background:#fff; color:#7b8796; }
.dev-toolbar__badge { color:#7e5b3f; background:#fff3e7; }
.quality-page { width:min(1480px,calc(100% - 32px)); margin-top:10px; margin-bottom:12px; }

/* 顶部：从“宣传横幅”改成紧凑、干净的产品页头。 */
.quality-shellbar {
  grid-template-columns:minmax(260px,.85fr) minmax(420px,1.35fr) auto;
  min-height:78px;
  margin-bottom:12px;
  padding:10px 18px;
  border:1px solid #e8ebef;
  border-radius:18px;
  background:linear-gradient(135deg,#ffffff 0%,#fffdf9 100%);
  box-shadow:var(--quality-shadow);
}
.quality-shellbar::before { background:linear-gradient(90deg,transparent 0 58%,rgba(242,139,60,.035) 100%); }
.quality-shellbar__art { opacity:.22; }
.quality-brand { gap:12px; }
.quality-brand__halo { flex-basis:44px; width:44px; height:44px; background:none; }
.quality-brand__halo::before,.quality-brand__halo::after { display:none; }
.quality-brand__mark { width:40px; height:40px; border-radius:12px; background:linear-gradient(145deg,#ffad69,#f17f35); box-shadow:0 5px 14px rgba(242,132,54,.18); }
.quality-brand h1 { color:#2b3442; font-size:23px; letter-spacing:.02em; background:none; -webkit-text-fill-color:initial; }
.quality-brand p { margin-top:3px; color:#8b93a0; font-size:10px; font-weight:500; }
.quality-brand p i { width:2px; height:11px; background:#f39a57; }
.customer-voice { min-height:54px; padding:5px 12px; border-left:1px solid #edf0f3; }
.customer-voice::before { display:none; }
.customer-voice__icon { color:#ee8951; }
.customer-voice__copy > span { color:#9b7b67; font-size:10px; letter-spacing:.04em; }
.customer-voice__copy q { color:#59473d; font-size:13px; font-weight:800; }
.customer-voice__copy small { color:#a4a0a0; }
.quality-home { min-height:34px; padding:0 12px; border-color:#e8e2dc; color:#7b5d49; background:#fff; }
.quality-home:hover { color:#b55e2c; border-color:#efc7a6; background:#fffaf6; }

/* 整体看板：中性卡片 + 细节色，去掉三块大面积彩色描边。 */
.quality-dashboard { grid-template-columns:minmax(0,2.08fr) minmax(330px,.92fr); gap:12px; }
.quality-dashboard__main { gap:12px; }
.dashboard-card {
  padding-bottom:8px;
  border:1px solid #e6eaf0 !important;
  border-radius:16px;
  background:#fff;
  box-shadow:var(--quality-shadow) !important;
}
.dashboard-card::before { display:none; }
.dashboard-card__head {
  min-height:52px;
  margin-bottom:6px;
  padding:8px 14px;
  border-bottom:1px solid #eef1f4 !important;
  background:#fff !important;
}
.dashboard-card__head::after { content:""; position:absolute; left:14px; bottom:-1px; width:34px; height:2px; border-radius:2px; }
.closure-board > .dashboard-card__head::after { background:#5b95d8; }
.cases-board > .dashboard-card__head::after { background:#65a274; }
.section-header-art { opacity:.25; width:min(34%,220px); }
.dashboard-heading { gap:10px; }
.dashboard-heading h2 { color:#26374f; font-size:15px; font-weight:850; }
.dashboard-heading p { margin-top:1px; color:#8e99a8; font-size:10px; font-weight:500; }
.section-icon { flex-basis:32px; width:32px; height:32px; border-radius:10px; }
.section-icon svg { width:18px; height:18px; }
.section-icon--closure { color:#397cca; background:#edf5ff; }
.section-icon--book { color:#428956; background:#eef8f0; }
.header-metric { min-height:34px; gap:7px; padding:4px 9px; border:0; border-radius:10px; }
.header-metric > span { font-size:10px; font-weight:700; }
.header-metric > strong { font-size:18px; }
.header-metric--blue { color:#3475bd; background:#f0f6fd; }
.header-metric--green { color:#3d8350; background:#eff8f1; }
.header-metric--orange { color:#bc672b; background:#fff4e9; }

/* 质检预警：表格感更轻，重点数据更清晰。 */
.closure-board { height:250px; min-height:250px; }
.closure-breadcrumb { margin:0 14px 4px; color:#8e99a8; }
.closure-list-head,.closure-list-row { grid-template-columns:minmax(160px,1.18fr) minmax(125px,.9fr) 64px 64px 70px 44px; }
.closure-list-head { min-height:22px; margin:0 14px; padding:0 8px; border-bottom:1px solid #eef1f4; color:#9aa4b1; }
.closure-project-grid { height:108px; margin:0 14px; grid-auto-rows:36px; }
.closure-list-row { height:36px; min-height:36px; padding:3px 8px; border-bottom:1px solid #f0f2f5; background:#fff; }
.closure-list-row:hover { background:#f8fbfe; }
.closure-list-row > b { color:#324760; }
.closure-project-name strong,.closure-org-link strong,.closure-org-name strong { font-size:10.5px; }
.closure-more { color:#4c80bb; }
.module-pagination { color:#8b96a5; }
.module-pagination button { border-color:#e6eaf0; border-radius:7px; background:#fff; }
.module-pagination button.active { border-color:#4b83c5; background:#4b83c5; }

/* 案例 / 学习区：更像“任务中心”，考试数量再多也只占一块固定区域。 */
.cases-toolbar { margin:0 14px 7px; }
.segmented-control { gap:2px; padding:3px; border:1px solid #eceff3; border-radius:10px; background:#f5f7f9; }
.segmented-control button { min-height:27px; padding:0 11px; border-radius:7px; color:#718096; font-size:10px; }
.segmented-control button.active { color:#2f7043; background:#fff; box-shadow:0 1px 4px rgba(39,55,76,.08); }
.case-grid { gap:9px; margin:0 14px; }
.case-card { min-height:104px; padding:9px 10px; border:1px solid #e5ebe6; border-radius:11px; background:#fff; }
.case-card:hover { border-color:#a7c9ae; background:#fbfdfb; transform:translateY(-1px); box-shadow:0 5px 14px rgba(56,95,66,.06) !important; }
.case-card--typical { border-color:#eee5e4; }
.case-card--typical:hover { border-color:#e0aaa6; background:#fffafa; }
.case-card__head { font-size:10px; }
.case-card h3 { min-height:30px; color:#304157; font-size:11.5px; }
.case-card p { color:#8792a1; }
.case-card__action { color:#4a845b; }

.employee-progress-shell { gap:8px; margin:0 14px; }
.employee-progress-top {
  grid-template-columns:minmax(0,1fr) minmax(180px,240px);
  align-items:center;
  gap:14px;
  min-height:42px;
  padding:7px 10px;
  border:1px solid #edf0f3;
  border-radius:11px;
  background:#fafbfc;
}
.employee-exam-select { grid-template-columns:auto minmax(220px,1fr); gap:8px; color:#7d8897; font-size:10px; }
.employee-exam-select .ui-select { min-height:30px; border-color:#e1e6ec; border-radius:8px; color:#344a64; background:#fff; font-size:10px; font-weight:700; }
.employee-progress-stat { display:grid; grid-template-columns:auto minmax(72px,1fr); align-items:center; gap:2px 10px; min-width:0; }
.employee-progress-stat > div { display:flex; align-items:baseline; justify-content:flex-end; gap:5px; white-space:nowrap; }
.employee-progress-stat strong { color:#3371b3; font-size:18px; line-height:1; }
.employee-progress-stat strong small { color:#8f9aaa; font-size:10px; font-weight:700; }
.employee-progress-stat span { color:#8b96a5; font-size:10px; }
.employee-progress-track { grid-column:1 / -1; display:block; width:100%; height:4px; overflow:hidden; border-radius:99px; background:#e8edf2; }
.employee-progress-track i { display:block; height:100%; border-radius:inherit; background:linear-gradient(90deg,#5b91cf,#65a675); }
.exam-task { border:1px solid #e6ebf0; border-radius:12px; background:#fff; }
.exam-task--done { border-color:#dce9df; }
.exam-task__summary { grid-template-columns:32px minmax(160px,1fr) minmax(135px,.7fr); min-height:54px; padding:7px 10px; background:#fff; }
.exam-task--done .exam-task__summary { background:#fff; }
.exam-task__mark { width:30px; height:30px; border-radius:9px; color:#3d78b5; background:#edf5fd; }
.exam-task--done .exam-task__mark { color:#4b8a5d; background:#eef7f0; }
.exam-task__title { gap:1px; }
.exam-task__title > small:first-child { color:#9aa4b1; font-size:10px; }
.exam-task__title strong { color:#2d4058; font-size:11px; }
.exam-task__title em { overflow:hidden; color:#8995a4; font-size:10px; font-style:normal; text-overflow:ellipsis; white-space:nowrap; }
.exam-task__status b { display:inline-flex; align-items:center; justify-content:center; min-height:20px; padding:0 7px; border-radius:999px; color:#9b652f; background:#fff4e7; font-size:10px; }
.exam-task--done .exam-task__status b { color:#36774a; background:#eef8f1; }
.exam-task__status small { margin-top:2px; color:#8c97a5; font-size:10px; }
.exam-task__body { padding:7px 10px 9px; border-top:1px solid #eff2f5; background:#fcfdfe; }
.exam-task__guide { display:flex; align-items:center; gap:8px; margin-bottom:6px; }
.exam-task__guide > span { flex:0 0 auto; color:#52677f; font-size:10px; font-weight:800; }
.exam-task__guide p { margin:0; color:#98a2ae; font-size:10px; }
.exam-link-grid { grid-template-columns:repeat(4,minmax(0,1fr)); gap:6px; }
.exam-link-row { min-height:42px; padding:6px 7px; border-color:#e8ecf1; border-radius:9px; background:#fff; transition:.16s ease; }
.exam-link-row:hover { border-color:#bed2e7; background:#fafdff; }
.exam-link-row--selected { border-color:#b8d9c0; background:#f5faf6; }
.exam-link-row__open { color:#435970; }
.exam-link-row__open strong { font-size:10px; }
.exam-link-row__complete { color:#4b7fb6; font-size:10px; }

/* 管理视角的考试切换也收敛为一排轻量标签。 */
.exam-picker { gap:6px; margin-bottom:7px; padding-bottom:1px; }
.exam-picker button { min-height:27px; padding:0 10px; border-color:#e4e8ed; border-radius:8px; color:#6f7e91; background:#fff; }
.exam-picker button.active { color:#366fae; border-color:#b8cde4; background:#f2f7fc; }
.learning-summary { gap:7px; }
.learning-summary > span { min-height:39px; border-color:#e4ebe5; border-radius:9px; background:#fbfcfb; }
.learning-progress-list { border-top-color:#edf0f3; }
.learning-progress-row { border-bottom-color:#eff2f4; }

/* 荣誉榜：从“勋章海报”改成高级感的排行卡。 */
.praise-board { padding-bottom:10px; border-color:#e6eaf0 !important; background:#fff; }
.praise-hero {
  min-height:104px;
  margin:10px 10px 0;
  overflow:hidden;
  border:0;
  border-radius:13px;
  background:linear-gradient(135deg,#fff8ef 0%,#fffdf9 62%,#fff6e8 100%);
}
.praise-hero::before { background:radial-gradient(circle at 85% 20%,rgba(240,159,72,.13),transparent 24%); }
.praise-hero::after { right:-16px; top:-20px; width:100px; height:100px; opacity:.5; }
.praise-hero__title { min-height:33px; padding:7px 11px 0; color:#a35c2c; }
.praise-hero__title h2 { color:#8e542f; font-size:14px; }
.praise-crown { width:22px; height:22px; color:#e39a37; }
.praise-crown svg { width:19px; height:19px; }
.praise-hero__content { grid-template-columns:minmax(76px,.8fr) 64px minmax(125px,1.4fr); gap:8px; min-height:67px; padding:0 10px 8px; }
.praise-exceed { color:#8c7565; }
.praise-exceed > span { font-size:10px; }
.praise-exceed strong { color:#df742b; }
.praise-exceed strong b { font-size:26px; letter-spacing:-.03em; }
.praise-exceed strong small { font-size:12px; }
.praise-exceed em { color:#9a887b; font-size:10px; }
.praise-medal { width:62px; height:58px; }
.praise-medal svg { width:57px; height:62px; }
.praise-medal__rays { width:60px; height:60px; opacity:.45; }
.praise-message { min-height:55px; padding:7px 9px 7px 12px; border-color:#f0e5d8; border-radius:9px; background:rgba(255,255,255,.78); }
.praise-message::before { left:-6px; top:20px; width:11px; height:11px; border-color:#f0e5d8; }
.praise-message__main { color:#715b4d; font-size:10px; }
.praise-message__main strong { color:#dc7029; }
.praise-message__main b { font-size:17px; }
.praise-message p { color:#948174; font-size:10px; font-weight:600; }
.segmented-control--warm { margin:8px 10px 5px; border:0; background:#f5f6f8; }
.segmented-control--warm button { color:#8b7f75; }
.segmented-control--warm button.active { color:#9d5b2d; background:#fff; box-shadow:0 1px 4px rgba(55,45,36,.08); }
.leaderboard-list { margin:0 10px; padding-top:2px; }
.rank-row { grid-template-columns:27px minmax(0,1fr) 60px; min-height:31px; padding:3px 8px; border-bottom:1px solid #f0f2f4; border-radius:8px; background:#fff; }
.rank-row:hover { background:#fafbfc; }
.rank-row--current { margin:2px 0; border:1px solid #ecd1ad; background:#fff9f1; }
.rank-badge { width:21px; height:21px; background:#f4f5f7; color:#788391; }
.rank-badge--1 { color:#8d5b12; background:#ffe8a7; }
.rank-badge--2 { color:#68717c; background:#e9ecf0; }
.rank-badge--3 { color:#935c45; background:#f0c7b5; }
.rank-name strong { color:#35465d; font-size:11px; font-weight:750; }
.rank-value { color:#8b5a35; font-size:12px; }
.rank-value small { color:#a39285; font-size:10px; font-weight:600; }
.praise-decoration { opacity:.025; }

/* 表单 / 管理弹窗同一套视觉语言。 */
.ui-btn { min-height:31px; border-color:#dfe5ec; border-radius:8px; color:#52677f; background:#fff; }
.ui-btn:hover { border-color:#b8cbe0; color:#326aa9; background:#f8fbfe; }
.ui-btn-primary { border-color:#417fc3; background:#417fc3; }
.ui-btn-primary:hover { border-color:#356eae; background:#356eae; }
.ui-select,.ui-input,.ui-textarea { border-color:#dfe5eb; border-radius:8px; }
.ui-table-wrap { border-color:#e5e9ee; border-radius:11px; background:#fff; }
.ui-data-table th { color:#7d8999; background:#f7f8fa; }
.ui-data-table tbody tr:hover { background:#f8fafc; }

/* 桌面一屏：在不同高度下压缩密度，但不改变信息层级。 */
@media (min-width:1101px) {
  .quality-page { height:calc(100dvh - 52px); }
  .quality-shellbar { flex-basis:clamp(66px,9.5vh,78px); min-height:clamp(66px,9.5vh,78px); }
  .quality-dashboard__main { grid-template-rows:clamp(226px,30vh,250px) minmax(0,1fr); }
  .closure-board { height:auto; min-height:0; }
  .praise-hero { min-height:clamp(92px,13vh,104px); }
  .leaderboard-list { grid-auto-rows:minmax(27px,1fr); }
  .rank-row { min-height:25px; }
}

@media (min-width:1101px) and (max-height:760px) {
  .quality-page { height:calc(100dvh - 44px); margin-top:6px; margin-bottom:6px; }
  .quality-shellbar { flex-basis:64px; min-height:64px; padding-top:7px; padding-bottom:7px; }
  .quality-brand__mark { width:35px; height:35px; }
  .quality-brand h1 { font-size:20px; }
  .customer-voice { min-height:46px; }
  .quality-dashboard__main { grid-template-rows:214px minmax(0,1fr); }
  .dashboard-card__head { min-height:46px; padding-top:6px; padding-bottom:6px; }
  .closure-project-grid { height:96px; grid-auto-rows:32px; }
  .closure-list-row { min-height:32px; height:32px; }
  .employee-progress-top { min-height:38px; padding-top:5px; padding-bottom:5px; }
  .exam-task__summary { min-height:47px; }
  .exam-link-row { min-height:36px; padding-top:4px; padding-bottom:4px; }
  .praise-hero { margin-top:8px; min-height:88px; }
  .praise-hero__title { min-height:28px; padding-top:4px; }
  .praise-hero__content { min-height:56px; padding-bottom:5px; }
  .praise-medal { height:50px; }
  .praise-medal svg { width:50px; height:54px; }
  .rank-row { min-height:23px; padding-top:1px; padding-bottom:1px; }
}

@media (min-width:821px) and (max-width:1100px) {
  .quality-page { width:calc(100% - 20px); }
  .quality-dashboard { grid-template-columns:minmax(0,1.78fr) minmax(285px,.92fr); gap:9px; }
  .quality-shellbar { grid-template-columns:minmax(230px,.82fr) minmax(310px,1.18fr) auto; gap:10px; padding-left:13px; padding-right:13px; }
  .quality-brand p { display:none; }
  .customer-voice { padding-left:8px; }
  .customer-voice__copy q { font-size:11px; }
  .dashboard-card__head { padding-left:10px; padding-right:10px; }
  .dashboard-heading p { display:none; }
  .header-metric > span { display:none; }
  .employee-progress-top { grid-template-columns:minmax(0,1fr) 155px; }
  .employee-exam-select { grid-template-columns:1fr; gap:3px; }
  .exam-link-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .praise-hero__content { grid-template-columns:72px 56px minmax(110px,1fr); }
  .praise-message { padding-left:9px; padding-right:7px; }
}

@media (max-width:820px) {
  html,body { overflow:auto; }
  .quality-page { width:calc(100% - 18px); }
  .quality-dashboard { grid-template-columns:1fr; }
  .quality-shellbar { box-shadow:none; }
  .dashboard-card { box-shadow:none !important; }
  .employee-progress-top { grid-template-columns:1fr; }
  .employee-progress-stat { grid-template-columns:auto 1fr; }
  .employee-progress-stat > div { justify-content:flex-start; }
  .exam-task__summary { grid-template-columns:32px minmax(0,1fr); }
  .exam-task__status { grid-column:2; justify-items:start; text-align:left; }
  .exam-link-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .praise-board { min-height:auto; }
  .leaderboard-list { min-height:0; }
}

@media (max-width:560px) {
  .quality-page { width:calc(100% - 12px); }
  .quality-shellbar { border-radius:14px; }
  .dashboard-card { border-radius:14px; }
  .case-grid,.exam-link-grid { grid-template-columns:1fr; }
  .employee-exam-select { grid-template-columns:1fr; }
  .praise-hero { margin:7px 7px 0; }
  .leaderboard-list { margin-left:7px; margin-right:7px; }
}

/* V2.1：1024 级别的小桌面也锁定一屏，不让学习区和荣誉榜掉出视口。 */
.dev-toolbar__controls label { white-space:nowrap; }

@media (min-width:821px) {
  html,body { height:100%; overflow:hidden; }
  .quality-page { display:flex; flex-direction:column; height:calc(100dvh - 52px); min-height:0; overflow:hidden; }
  .quality-shellbar { flex:0 0 clamp(64px,9.5vh,78px); min-height:clamp(64px,9.5vh,78px); }
  .quality-dashboard { flex:1 1 auto; min-height:0; overflow:hidden; }
  .quality-dashboard__main { min-height:0; overflow:hidden; }
  .cases-board,.praise-board { height:100%; min-height:0; }
  .cases-board { display:flex; flex-direction:column; }
  .case-grid--progress { flex:1 1 auto !important; min-height:0; }
  .case-grid--progress .employee-progress-shell { min-height:0; }
  .praise-board { overflow:hidden; }
  .leaderboard-list { min-height:0; }
}

@media (min-width:960px) and (max-width:1100px) {
  .quality-page { height:calc(100dvh - 46px); margin-top:7px; margin-bottom:7px; }
  .quality-shellbar { flex-basis:70px; min-height:70px; margin-bottom:9px; }
  .quality-dashboard__main { grid-template-rows:212px minmax(0,1fr); gap:9px; }
  .closure-board { height:auto; min-height:0; }
  .dashboard-card__head { min-height:43px; margin-bottom:4px; padding-top:5px; padding-bottom:5px; }
  .section-icon { width:29px; height:29px; flex-basis:29px; }
  .dashboard-heading h2 { font-size:14px; }
  .closure-breadcrumb { min-height:18px; margin-bottom:1px; }
  .closure-list-head { min-height:19px; }
  .closure-project-grid { height:84px; grid-auto-rows:28px; }
  .closure-list-row { min-height:28px; height:28px; }
  .closure-board .module-pagination { min-height:20px; margin-top:1px; }
  .module-pagination button { min-width:22px; height:22px; }
  .cases-toolbar { margin-bottom:5px; }
  .employee-progress-shell { gap:6px; }
  .employee-progress-top { min-height:36px; padding-top:4px; padding-bottom:4px; }
  .employee-exam-select .ui-select { min-height:27px; }
  .employee-progress-stat strong { font-size:16px; }
  .exam-task__summary { min-height:45px; padding-top:5px; padding-bottom:5px; }
  .exam-task__mark { width:27px; height:27px; }
  .exam-task__body { padding-top:5px; padding-bottom:6px; }
  .exam-task__guide { margin-bottom:4px; }
  .exam-link-grid { grid-template-columns:repeat(4,minmax(0,1fr)); gap:5px; }
  .exam-link-row { min-height:35px; padding:4px 5px; }
  .praise-hero { min-height:84px; margin-top:8px; }
  .praise-hero__title { min-height:26px; padding-top:4px; }
  .praise-hero__content { min-height:54px; padding-bottom:4px; }
  .praise-exceed strong b { font-size:23px; }
  .praise-medal { width:52px; height:48px; }
  .praise-medal svg { width:48px; height:52px; }
  .praise-message { min-height:44px; gap:2px; }
  .praise-message p { display:none; }
  .segmented-control--warm { margin-top:6px; margin-bottom:4px; }
  .leaderboard-list { grid-auto-rows:minmax(23px,1fr); }
  .rank-row { min-height:22px; padding-top:1px; padding-bottom:1px; }
}

@media (min-width:821px) and (max-width:959px) {
  .quality-page { height:calc(100dvh - 46px); margin-top:7px; margin-bottom:7px; }
  .quality-shellbar { flex-basis:66px; min-height:66px; margin-bottom:8px; }
  .quality-dashboard { grid-template-columns:minmax(0,1.72fr) minmax(270px,.92fr); gap:8px; }
  .quality-dashboard__main { grid-template-rows:202px minmax(0,1fr); gap:8px; }
  .closure-board { height:auto; min-height:0; }
  .dashboard-card__head { min-height:41px; margin-bottom:3px; padding-top:4px; padding-bottom:4px; }
  .dashboard-heading h2 { font-size:13px; }
  .dashboard-heading p,.customer-voice__copy small { display:none; }
  .closure-breadcrumb { min-height:17px; margin-bottom:1px; }
  .closure-list-head { min-height:18px; }
  .closure-project-grid { height:78px; grid-auto-rows:26px; }
  .closure-list-row { min-height:26px; height:26px; }
  .exam-link-grid { grid-template-columns:repeat(3,minmax(0,1fr)); }
  .exam-link-row { min-height:34px; }
  .praise-hero { min-height:80px; margin-top:7px; }
  .praise-message p { display:none; }
  .praise-medal { width:48px; }
  .praise-medal svg { width:45px; height:50px; }
  .leaderboard-list { grid-auto-rows:minmax(22px,1fr); }
  .rank-row { min-height:21px; padding-top:1px; padding-bottom:1px; }
}

/* V3：案例学习区统一交互、学习次数与白底弹窗。 */
.cases-toolbar { min-height:38px; }
.cases-toolbar__right { display:flex; align-items:center; justify-content:flex-end; gap:10px; min-width:0; margin-left:auto; }
#caseProgressControl { min-width:0; }
.case-progress-control { display:flex; align-items:center; justify-content:flex-end; gap:10px; min-width:0; }
.case-exam-select { display:grid; grid-template-columns:auto minmax(160px,280px); align-items:center; gap:6px; min-width:0; color:#6d7c8f; font-size:10px; font-weight:800; }
.case-exam-select .ui-select { min-width:0; min-height:29px; padding-right:26px; font-size:10px; }
.case-progress-stat { display:grid; grid-template-columns:auto 88px; align-items:center; gap:3px 8px; flex:0 0 auto; min-width:146px; }
.case-progress-stat > div { display:flex; align-items:baseline; justify-content:flex-end; gap:4px; white-space:nowrap; }
.case-progress-stat strong { color:#3f8c55; font-size:15px; line-height:1; font-variant-numeric:tabular-nums; }
.case-progress-stat strong small { color:#93a09a; font-size:10px; font-weight:700; }
.case-progress-stat > div > span { color:#7c8998; font-size:10px; }
.case-progress-stat .employee-progress-track { grid-column:2; width:88px; }
.case-progress-stat .employee-progress-track i { background:#54a06a; }

.case-card__head > span { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.case-card__views { display:inline-flex; align-items:center; gap:3px; flex:0 0 auto; color:#8996a5 !important; font-variant-numeric:tabular-nums; }
.case-card__views svg { width:12px; height:12px; }
.case-card__footer { display:flex; align-items:center; justify-content:space-between; gap:8px; min-width:0; margin-top:auto; }
.case-card__learn-count { flex:0 0 auto; color:#7f8c9c; font-size:10px; font-weight:600; white-space:nowrap; }
.case-card__learn-count b { color:#3c7f50; font-size:11px; font-variant-numeric:tabular-nums; }
.case-card--typical .case-card__learn-count b { color:#bd5a55; }

/* 管理视角增加“学习次数”列：组织与坐席均可查看汇总量。 */
.learning-progress-head,.learning-progress-row { grid-template-columns:minmax(135px,1.35fr) 52px 52px 52px 60px 68px; min-width:560px; }
.learning-progress-head--seat,.learning-progress-row--seat { grid-template-columns:minmax(145px,1.35fr) 68px 82px 112px 66px; min-width:560px; }

/* 所有业务弹窗统一纯白；次操作按钮透明，主操作保留明确的绿色动作色与白字。 */
.quality-drawer,.drawer-head,.drawer-body,.drawer-footer,.ui-modal,.ui-modal-head,.ui-modal-content,.ui-modal-footer { background:#fff !important; }
.quality-drawer,.ui-modal { border-color:#e1e6eb; }
.drawer-head,.ui-modal-head { border-bottom-color:#edf0f3; }
.drawer-footer,.ui-modal-footer { border-top-color:#edf0f3; }
.quality-drawer .ui-modal-close,.quality-modal .ui-modal-close { background:transparent !important; }
.quality-drawer .ui-btn:not(.ui-btn-primary):not(.ui-btn-danger),.quality-modal .ui-btn:not(.ui-btn-primary):not(.ui-btn-danger) { background:transparent !important; }
.ui-btn.ui-btn-primary { color:#fff !important; border-color:#3f8f58 !important; background:#3f8f58 !important; }
.ui-btn.ui-btn-primary:hover { color:#fff !important; border-color:#34794a !important; background:#34794a !important; }
.manager-toolbar .ui-btn.ui-btn-primary { color:#fff !important; }

@media (min-width:821px) {
  .cases-board .case-grid:not(.case-grid--progress) { flex:1 1 auto; grid-auto-rows:1fr; min-height:0; }
  .cases-board .case-grid:not(.case-grid--progress) .case-card { height:100%; min-height:0; }
}

@media (min-width:821px) and (max-width:1100px) {
  .cases-toolbar { gap:6px; margin-left:10px; margin-right:10px; }
  .segmented-control button { padding-left:9px; padding-right:9px; }
  .case-progress-control { gap:6px; }
  .case-exam-select { grid-template-columns:minmax(130px,190px); }
  .case-exam-select > span { display:none; }
  .case-progress-stat { grid-template-columns:auto 62px; min-width:116px; gap:3px 5px; }
  .case-progress-stat .employee-progress-track { width:62px; }
  .case-progress-stat > div > span { display:none; }
}

@media (max-width:820px) {
  .cases-toolbar { align-items:flex-start; flex-wrap:wrap; }
  .cases-toolbar__right { width:100%; justify-content:stretch; }
  #caseProgressControl { width:100%; }
  .case-progress-control { width:100%; justify-content:stretch; }
  .case-exam-select { flex:1 1 auto; grid-template-columns:auto minmax(0,1fr); }
  .case-progress-stat { grid-template-columns:auto minmax(72px,1fr); min-width:135px; }
  .case-progress-stat .employee-progress-track { width:100%; }
}

/* V4：统一状态色、指标口径、组织展示、8 分类链接与客户肯定动效。 */
.header-metric--status { min-width:112px; justify-content:space-between; border:0; }
.header-metric--good { color:#33844a !important; background:#eef8f1 !important; }
.header-metric--attention { color:#c94f49 !important; background:#fff1f0 !important; }
.header-metric--neutral { color:#748194 !important; background:#f4f6f8 !important; }
.header-metric--status > strong { min-width:48px; justify-content:flex-end; font-size:18px; }
.header-metric--status > strong > b { font:inherit; }
.header-metric--status small { min-width:12px; font-size:10px; }

/* 未完成/未达标统一红色，完成/达标统一绿色。 */
.case-progress-stat--pending strong { color:#c94f49; }
.case-progress-stat--pending .employee-progress-track i { background:#d85e58; }
.case-progress-stat--done strong { color:#33844a; }
.case-progress-stat--done .employee-progress-track i { background:#4d9a62; }
.learning-state--pending { color:#c94f49; }
.learning-state--done { color:#33844a; }
.exam-task:not(.exam-task--done) .exam-task__mark { color:#c94f49; background:#fff1f0; }
.exam-task:not(.exam-task--done) .exam-task__status b { color:#c94f49; background:#fff1f0; }
.exam-task--done .exam-task__mark { color:#33844a; background:#eef8f1; }
.exam-task--done .exam-task__status b { color:#33844a; background:#eef8f1; }
.closure-list-row > b.attention,.closure-status--attention { color:#c94f49 !important; }
.closure-list-row > b.good,.closure-status--good { color:#33844a !important; }

/* 学习汇总项垂直居中，标签和数字基线一致。 */
.learning-summary > span { display:flex; align-items:center; gap:7px; min-height:40px; padding:6px 9px; }
.learning-summary__icon { flex:0 0 19px; width:19px; height:19px; grid-row:auto; color:#61758d; }
.learning-summary small { flex:1 1 auto; align-self:center; color:#7d8998; font-size:10px; line-height:1.15; }
.learning-summary strong { grid-column:auto; grid-row:auto; align-self:center; color:#35506f; font-size:15px; line-height:1; }
.learning-summary__item--done .learning-summary__icon,.learning-summary__item--done strong { color:#33844a; }
.learning-summary__item--pending .learning-summary__icon,.learning-summary__item--pending strong { color:#c94f49; }

/* 两个业务区的组织字段使用同一展示形式：组织名 + 层级 + 下钻箭头。 */
.organization-link,.organization-name { display:flex !important; align-items:center; gap:4px; min-width:0; max-width:100%; }
.organization-link { width:max-content; padding:0; border:0; color:#2679cf !important; background:transparent; cursor:pointer; }
.organization-link > span,.organization-name > span { display:flex; align-items:baseline; gap:4px; min-width:0; max-width:100%; }
.organization-link strong,.organization-name strong { max-width:100%; overflow:hidden; color:inherit; font-size:10.5px; line-height:1.2; text-overflow:ellipsis; white-space:nowrap; }
.organization-link small,.organization-name small { flex:0 0 auto; color:#97a2af !important; font-size:10px !important; font-weight:500; line-height:1; }
.organization-link .inline-icon { flex:0 0 11px; width:11px; height:11px; }
.organization-name { color:#536783; }
.learning-progress-row > div { min-width:0; }
.learning-person-name { font-weight:400; }

/* 卡片右上角显示浏览/学习次数，统一用“次”而不是“人”。 */
.case-card__views { color:#8996a5 !important; font-weight:600; }
.case-card__learn-count b,.case-card--typical .case-card__learn-count b { color:#33844a; }

/* 固定 8 个考试分类链接：纵向排列，左分类右链接。 */
.exam-link-fields { display:grid; gap:7px; }
.exam-link-fields__head,.exam-link-field { display:grid; grid-template-columns:minmax(128px,.72fr) minmax(0,1.75fr); align-items:center; gap:10px; min-width:0; }
.exam-link-fields__head { padding:0 1px; color:#7b8898; font-size:10px; font-weight:800; }
.exam-link-fields__list { display:grid; grid-template-columns:1fr; gap:6px; }
.exam-link-field .ui-input { min-width:0; background:#fff; }
.exam-link-field .exam-category-input { color:#40546d; font-weight:800; }
.exam-link-field .ui-input[aria-invalid="true"] { border-color:#d75a54 !important; background:#fff8f7; }

/* 坐席进入：客户肯定从屏幕中央庆祝出现，再收回到标题栏。 */
.customer-celebration { --voice-fly-x:0px; --voice-fly-y:-260px; position:fixed; inset:0; z-index:240; display:grid; place-items:center; pointer-events:none; background:rgba(25,33,44,0); opacity:0; transition:opacity .22s ease, background .22s ease; }
.customer-celebration.is-showing { opacity:1; background:rgba(25,33,44,.16); }
.customer-celebration__card { position:relative; display:grid; justify-items:center; gap:6px; width:min(410px,calc(100vw - 44px)); padding:28px 30px 25px; overflow:hidden; border:1px solid #f1d8c7; border-radius:24px; background:#fff; box-shadow:0 24px 70px rgba(79,51,34,.20); transform:scale(.82) translateY(18px); opacity:0; animation:voiceCelebrateIn .56s cubic-bezier(.2,.8,.2,1) .06s forwards; transform-origin:center; }
.customer-celebration__card::before,.customer-celebration__card::after { content:""; position:absolute; border-radius:50%; background:#fff1e8; }
.customer-celebration__card::before { width:120px; height:120px; right:-48px; top:-48px; }
.customer-celebration__card::after { width:80px; height:80px; left:-32px; bottom:-32px; background:#fff7e6; }
.customer-celebration__icon { position:relative; z-index:1; display:grid; place-items:center; width:54px; height:54px; border-radius:50%; color:#e76843; background:#fff0ea; animation:voiceHeartBeat .85s ease .35s 2; }
.customer-celebration__icon svg { width:29px; height:29px; }
.customer-celebration__card small { position:relative; z-index:1; color:#b66a43; font-size:11px; font-weight:900; letter-spacing:.06em; }
.customer-celebration__card q { position:relative; z-index:1; margin:0; color:#443832; font-size:19px; font-weight:900; line-height:1.45; text-align:center; }
.customer-celebration__card q::before,.customer-celebration__card q::after { content:""; }
.customer-celebration__card em { position:relative; z-index:1; color:#9b8f89; font-size:10px; font-style:normal; }
.customer-celebration__spark { position:absolute; display:grid; place-items:center; color:#f0a13d; animation:voiceSpark 1.1s ease-in-out infinite alternate; }
.customer-celebration__spark svg { width:28px; height:28px; }
.customer-celebration__spark--1 { left:calc(50% - 245px); top:calc(50% - 125px); }
.customer-celebration__spark--2 { right:calc(50% - 235px); top:calc(50% - 92px); color:#ef7554; animation-delay:.18s; }
.customer-celebration__spark--3 { right:calc(50% - 205px); bottom:calc(50% - 135px); animation-delay:.35s; }
.customer-celebration.is-retracting { background:rgba(25,33,44,0); transition:background .5s ease .2s; }
.customer-celebration.is-retracting .customer-celebration__card { animation:none; opacity:1; transform:translate(var(--voice-fly-x),var(--voice-fly-y)) scale(.22); transition:transform .72s cubic-bezier(.4,0,.2,1),opacity .7s ease; opacity:.05; }
.customer-celebration.is-retracting .customer-celebration__spark { opacity:0; transition:opacity .28s ease; }
.customer-voice--received { animation:voiceHeaderReceive .72s ease; }
@keyframes voiceCelebrateIn { to { transform:scale(1) translateY(0); opacity:1; } }
@keyframes voiceHeartBeat { 0%,100% { transform:scale(1); } 45% { transform:scale(1.14); } }
@keyframes voiceSpark { from { transform:translateY(2px) rotate(-8deg) scale(.9); opacity:.45; } to { transform:translateY(-6px) rotate(8deg) scale(1.08); opacity:1; } }
@keyframes voiceHeaderReceive { 0%,100% { background:transparent; } 45% { background:#fff4ec; border-radius:12px; } }

@media (max-width:1100px) {
  .organization-link small,.organization-name small { display:inline !important; }
  .header-metric--status { min-width:78px; }
  .header-metric--status > strong { font-size:17px; }
}

@media (max-width:820px) {
  .exam-link-fields__head,.exam-link-field { grid-template-columns:100px minmax(0,1fr); gap:8px; }
  .customer-celebration__spark--1 { left:8%; }
  .customer-celebration__spark--2 { right:8%; }
  .customer-celebration__spark--3 { right:12%; }
}

@media (prefers-reduced-motion:reduce) {
  .customer-celebration__card,.customer-celebration__icon,.customer-celebration__spark,.customer-voice--received { animation:none !important; }
  .customer-celebration__card { transform:none; opacity:1; }
}
.learning-progress-row > b.learning-count--done,.learning-progress-row > b.learning-rate--done { color:#33844a; }
.learning-progress-row > b.learning-count--pending,.learning-progress-row > b.learning-rate--pending { color:#c94f49; }
.learning-progress-row > b.learning-count--neutral { color:#415570; }


/* V5：考试管理数据卡片不使用底色，保持弹窗白底统一。 */
.drawer-layer[data-mode="exam-manager"] .case-manager__summary > div { background:transparent !important; border-color:#e5e9ee; }
.drawer-layer[data-mode="exam-manager"] .case-manager__summary strong { color:#35506f; }
.drawer-layer[data-mode="exam-manager"] .manager-toolbar { background:transparent !important; }
.drawer-layer[data-mode="exam-editor"] .exam-link-fields__head { background:transparent; }
/* 全站字体下限：所有显式字号均已提升至 10px 及以上。 */

/* V6：案例学习区表格核心数据字号与“本月质检预警闭环”业务量/闭环量/闭环率保持一致。 */
.learning-progress-row > b {
  font-size:12px;
  line-height:1;
}
