/* ══════════════════════════════════════════════════════════════════════
   pc.css — 桌面站 PC 原生设计系统（试点：/saas/console、/saas/cases）
   --------------------------------------------------------------
   定位：只「扩展」main.css 的 Apple 令牌皮肤，不翻转、不覆盖 H5 样式。
   挂载：pc-core.js 给 <body> 加 .pc-on；控制台页叠加既有 .admin-body 限定。
   特异性约定：本页在模板 <style> 之前加载，所有与 console.html 内联样式
   同层的规则一律以 body.xx 前缀提权到 (0,2,x)+，压过内联 (0,1,x)。
   回滚：模板删除 pc.css/pc-core.js/pc-grid.js 三个引用即整体失效。
   桌面站专属资产：禁止同步移动端项目；版本走 ?v=20261021p 独立体系。
   ══════════════════════════════════════════════════════════════════════ */

/* ── 1. 令牌扩展（消费 main.css / console 本地令牌，只增不改）── */
:root {
    --pc-rail-w: 76px;               /* 图标 Rail */
    --pc-menu-w: 250px;              /* 导航菜单栏（可拖拽，JS 以 inline 变量覆盖）*/
    --pc-menu-cw: 62px;              /* 菜单折叠宽度 */
    --pc-inspector-w: 360px;         /* 右侧上下文辅助面板 */
    --pc-row-pad-y: 11px;            /* 密度 comfortable 基准（compact 由 body 类覆盖）*/
    --pc-row-pad-x: 14px;
    /* 8pt 间距刻度 */
    --pc-sp-1: 4px; --pc-sp-2: 8px; --pc-sp-3: 12px; --pc-sp-4: 16px;
    --pc-sp-5: 24px; --pc-sp-6: 32px; --pc-sp-7: 48px; --pc-sp-8: 64px;
    /* 动效三档：短程状态 / 面板浮出 / 停靠位移，均配 --ease 物理感曲线 */
    --pc-dur-1: 120ms; --pc-dur-2: 180ms; --pc-dur-3: 240ms;
    /* 浮层表面：后台=深色延续，前台=浅色卡片（各自在上下文里重定义）*/
    --pc-pop-bg: var(--surface, #fff);
    --pc-overlay: rgba(10, 12, 30, .5);
}

/* 全局键盘可达：focus-visible 品牌描边 */
body.pc-on :focus-visible {
    outline: 2px solid var(--primary, #0071e3);
    outline-offset: 2px;
    border-radius: 6px;
}

/* ── 2. 顶栏工具组（⌘K 入口 / 主题 / 密度 / 菜单折叠把手）── */
.pc-topbar-tools { display: flex; align-items: center; gap: 8px; flex: 0 0 auto; }
.pc-kbtn {
    display: inline-flex; align-items: center; gap: 8px;
    height: 34px; padding: 0 10px 0 12px; border-radius: var(--radius-pill, 999px);
    border: 1px solid var(--border, rgba(0,0,0,.08)); background: rgba(0, 0, 0, .045);
    color: var(--muted, #6e6e73); font: inherit; font-size: 12.5px; cursor: pointer;
    transition: background var(--pc-dur-1) var(--ease, ease), color var(--pc-dur-1) var(--ease, ease), border-color var(--pc-dur-1) var(--ease, ease);
}
.pc-kbtn:hover { background: var(--surface, #fff); color: var(--text, #1d1d1f); border-color: var(--border-strong, #dcdce2); }
.pc-kbtn .pc-kbd { margin-left: 2px; }
/* 前台导航内的 ⌘K 入口（pc-core.js 自主派生插入，模板与 base.html 零改动）：
   玻璃导航上更透，窄窗口只留图标，避免挤占既有 nav-cta 行动位 */
.pc-kbtn-in-nav { height: 30px; padding: 0 8px 0 10px; background: rgba(255, 255, 255, .5); }
.pc-kbtn-in-nav:hover { background: var(--surface, #fff); }
@media (max-width: 1180px) { .pc-kbtn-in-nav .pc-nav-label { display: none; } }
.pc-tbtn {
    display: inline-flex; align-items: center; justify-content: center;
    width: 34px; height: 34px; border-radius: 10px;
    border: 1px solid var(--border, rgba(0,0,0,.08)); background: rgba(0, 0, 0, .045);
    color: var(--text-2, #48484d); font-size: 15px; font-family: inherit; cursor: pointer;
    transition: background var(--pc-dur-1) var(--ease, ease), color var(--pc-dur-1) var(--ease, ease), transform var(--pc-dur-1) var(--ease, ease);
}
.pc-tbtn:hover { background: var(--surface, #fff); color: var(--primary, #0071e3); transform: translateY(-1px); }
.pc-tbtn.is-on { background: var(--primary-soft, rgba(0,113,227,.12)); color: var(--primary, #0071e3); border-color: var(--primary-soft, transparent); }
kbd.pc-kbd {
    display: inline-block; min-width: 20px; padding: 2px 6px; border-radius: 6px;
    border: 1px solid var(--border, rgba(0,0,0,.12)); border-bottom-width: 2px;
    background: var(--surface, #fff); color: var(--text-2, #48484d);
    font-family: ui-monospace, "SF Mono", Consolas, monospace; font-size: 10.5px; line-height: 1.3; text-align: center;
}

/* ── 3. 四区外壳：栅格变量化 + 菜单折叠 + 栏宽拖拽（仅控制台）── */
@media (min-width: 1181px) {
    body.admin-body.pc-on .admin-shell { grid-template-columns: var(--pc-rail-w) var(--pc-menu-w) minmax(0, 1fr); }
    body.admin-body.pc-on.pc-menu-collapsed .admin-shell { grid-template-columns: var(--pc-rail-w) var(--pc-menu-cw) minmax(0, 1fr); }
}
@media (min-width: 901px) and (max-width: 1180px) {
    body.admin-body.pc-on .admin-shell { grid-template-columns: var(--pc-rail-w) minmax(180px, var(--pc-menu-w)) minmax(0, 1fr); }
    body.admin-body.pc-on.pc-menu-collapsed .admin-shell { grid-template-columns: var(--pc-rail-w) var(--pc-menu-cw) minmax(0, 1fr); }
}

/* 折叠态：磁贴收文字展图标（选择器深度压过内联 .launcher .tile .ti 的 (0,3,0)）*/
@media (min-width: 901px) {
    body.admin-body.pc-on.pc-menu-collapsed .admin-menu { padding: 18px 8px 28px; }
    body.admin-body.pc-on.pc-menu-collapsed .admin-menu .admin-menu-title { display: none; }
    body.admin-body.pc-on.pc-menu-collapsed .admin-menu .lg-head { justify-content: center; margin-bottom: 6px; }
    body.admin-body.pc-on.pc-menu-collapsed .admin-menu .lg-title { display: none; }
    body.admin-body.pc-on.pc-menu-collapsed .admin-menu .tile-grid { grid-template-columns: 1fr; padding: 4px; }
    body.admin-body.pc-on.pc-menu-collapsed .admin-menu .launcher .tile { padding: 9px 0; display: grid; place-items: center; }
    body.admin-body.pc-on.pc-menu-collapsed .admin-menu .launcher .tile .tn,
    body.admin-body.pc-on.pc-menu-collapsed .admin-menu .launcher .tile .td { display: none; }
    body.admin-body.pc-on.pc-menu-collapsed .admin-menu .launcher .tile .ti { display: block; font-size: 16px; }
    body.admin-body.pc-on.pc-menu-collapsed .admin-menu .tile-badge { top: 2px; right: 2px; min-width: 15px; height: 15px; font-size: 9.5px; line-height: 15px; }
}

/* 栏宽拖拽把手：贴在菜单右缘 */
body.admin-body.pc-on .admin-menu { position: sticky; }
.pc-resizer {
    position: absolute; top: 0; right: -3px; width: 7px; height: 100%;
    cursor: col-resize; z-index: 50; display: none;
}
.pc-resizer::after {
    content: ""; position: absolute; inset: 0 3px; border-radius: 2px;
    background: transparent; transition: background var(--pc-dur-2) var(--ease, ease);
}
.pc-resizer:hover::after, body.pc-resizing .pc-resizer::after { background: var(--primary, #0071e3); opacity: .5; }
@media (min-width: 901px) { body.admin-body.pc-on:not(.pc-menu-collapsed) .pc-resizer { display: block; } }
body.pc-resizing { cursor: col-resize; user-select: none; }
body.pc-resizing .admin-shell { pointer-events: none; }
body.pc-resizing .pc-resizer { pointer-events: auto; }

/* 折叠态 hover 浮出标签（JS 定位的 fixed 提示气泡）*/
.pc-tip {
    position: fixed; z-index: 1300; padding: 5px 11px; border-radius: 8px;
    background: #0d1029; color: #eaeefb; border: 1px solid rgba(255,255,255,.14);
    font-size: 12.5px; font-weight: 600; white-space: nowrap; pointer-events: none;
    box-shadow: 0 10px 24px -10px rgba(0,0,0,.7); opacity: 0; transform: translateX(-4px);
    transition: opacity var(--pc-dur-1) var(--ease, ease), transform var(--pc-dur-1) var(--ease, ease);
}
.pc-tip.is-show { opacity: 1; transform: none; }

/* ── 4. Inspector：右列停靠 / 窄屏退化抽屉 ── */
.pc-inspector { display: none; }
@media (min-width: 1536px) {
    /* ≥1536 四区全开：追加第四列 */
    body.admin-body.pc-on.pc-inspector-open .admin-shell {
        grid-template-columns: var(--pc-rail-w) var(--pc-menu-w) minmax(0, 1fr) var(--pc-inspector-w);
    }
    body.admin-body.pc-on.pc-menu-collapsed.pc-inspector-open .admin-shell {
        grid-template-columns: var(--pc-rail-w) var(--pc-menu-cw) minmax(0, 1fr) var(--pc-inspector-w);
    }
    body.admin-body.pc-on .pc-inspector {
        display: none; position: sticky; top: 0; align-self: start; height: 100vh;
        flex-direction: column; min-width: 0; overflow: hidden;
        background: var(--rail-bg, #0d1029); border-left: 1px solid var(--border, rgba(255,255,255,.09));
        color: var(--text, #eaeefb);
    }
    body.admin-body.pc-on.pc-inspector-open .pc-inspector { display: flex; }
}
/* <1536：右侧浮出抽屉（≤900 与菜单抽屉同理，覆盖主区而非挤压栅格）*/
@media (max-width: 1535.98px) {
    body.admin-body.pc-on .pc-inspector {
        display: flex; position: fixed; top: 0; right: 0; bottom: 0; z-index: 900;
        width: min(var(--pc-inspector-w), 92vw); flex-direction: column;
        background: var(--rail-bg, #0d1029); border-left: 1px solid var(--border, rgba(255,255,255,.09));
        color: var(--text, #eaeefb); box-shadow: -24px 0 60px -24px rgba(0,0,0,.6);
        transform: translateX(105%); opacity: 0; visibility: hidden; pointer-events: none;
        transition: transform var(--pc-dur-3) var(--ease, ease), opacity var(--pc-dur-2) var(--ease, ease), visibility 0s linear var(--pc-dur-3);
    }
    body.admin-body.pc-on.pc-inspector-open .pc-inspector {
        transform: none; opacity: 1; visibility: visible; pointer-events: auto;
        transition: transform var(--pc-dur-3) var(--ease, ease), opacity var(--pc-dur-2) var(--ease, ease), visibility 0s;
    }
}
.pc-insp-head { display: flex; align-items: center; gap: 10px; padding: 14px 16px; border-bottom: 1px solid var(--border, rgba(255,255,255,.09)); flex: 0 0 auto; }
.pc-insp-head b { font-size: 14px; font-weight: 700; letter-spacing: -.01em; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pc-insp-close { margin-left: auto; width: 28px; height: 28px; flex: 0 0 auto; border: 1px solid var(--border, rgba(255,255,255,.09)); border-radius: 8px; background: transparent; color: var(--muted, #949dc9); font-size: 12px; cursor: pointer; }
.pc-insp-close:hover { color: var(--text, #eaeefb); border-color: var(--border-strong, rgba(255,255,255,.18)); }
.pc-insp-body { flex: 1 1 auto; min-height: 0; overflow: auto; padding: 14px 16px; display: flex; flex-direction: column; gap: 12px; }
.pc-insp-empty { margin: auto; text-align: center; color: var(--tertiary, #6f79a8); font-size: 13px; line-height: 2; }
.pc-insp-kv { display: grid; grid-template-columns: 88px minmax(0, 1fr); gap: 6px 12px; font-size: 13px; margin: 0; }
.pc-insp-kv dt { color: var(--muted, #949dc9); }
.pc-insp-kv dd { margin: 0; color: var(--text, #eaeefb); word-break: break-all; }
.pc-insp-sect { font-size: 11.5px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--tertiary, #6f79a8); margin: 4px 0 0; }
.pc-insp-acts { display: flex; flex-wrap: wrap; gap: 8px; }
.pc-insp-acts .btn, .pc-insp-acts button {
    padding: 7px 13px; border-radius: 9px; border: 1px solid var(--border-strong, rgba(255,255,255,.18));
    background: rgba(255,255,255,.06); color: var(--text-2, #c5cbe8); font: inherit; font-size: 12.5px; font-weight: 600; cursor: pointer;
}
.pc-insp-acts .btn:hover, .pc-insp-acts button:hover { background: rgba(255,255,255,.12); color: var(--text, #eaeefb); }
.pc-insp-acts .pc-danger { border-color: rgba(255, 90, 90, .45); color: #ff8484; }
.pc-insp-acts .pc-danger:hover { background: rgba(255, 90, 90, .16); color: #ffb4b4; }
/* AI 辅助插槽（规范 §11：Inspector 内联 AI 洞察，接后端 /saas/ai/insight，密钥零下发）*/
.pc-insp-ai { border: 1px solid var(--border, rgba(255,255,255,.09)); border-radius: 12px; padding: 12px 14px; font-size: 12px; background: rgba(255,255,255,.03); }
.pc-insp-ai-tip { color: var(--muted, #949dc9); font-weight: 600; margin-bottom: 9px; letter-spacing: .01em; }
.pc-insp-ai-form { display: flex; gap: 8px; }
.pc-insp-ai-input { flex: 1 1 auto; min-width: 0; height: 32px; padding: 0 10px; border-radius: 9px; border: 1px solid var(--border-strong, rgba(255,255,255,.18)); background: var(--inset, rgba(255,255,255,.06)); color: var(--text, #eaeefb); font: inherit; font-size: 12.5px; outline: none; }
.pc-insp-ai-input:focus { border-color: var(--primary, #4c8dff); }
.pc-insp-ai-input::placeholder { color: var(--tertiary, #6f79a8); }
.pc-insp-ai-btn { flex: 0 0 auto; height: 32px; padding: 0 13px; border-radius: 9px; border: 1px solid var(--primary, #4c8dff); background: var(--primary, #4c8dff); color: #fff; font: inherit; font-size: 12.5px; font-weight: 600; cursor: pointer; white-space: nowrap; }
.pc-insp-ai-btn:hover { background: var(--primary-strong, #7aa9ff); border-color: var(--primary-strong, #7aa9ff); }
.pc-insp-ai-btn:disabled { opacity: .6; cursor: default; }
.pc-insp-ai-out { margin-top: 10px; font-size: 12.5px; line-height: 1.6; color: var(--text, #eaeefb); white-space: pre-wrap; word-break: break-word; }
.pc-insp-ai-out.is-loading { color: var(--primary-strong, #7aa9ff); }
.pc-insp-ai-out.is-muted { color: var(--tertiary, #6f79a8); }
.pc-insp-foot { flex: 0 0 auto; padding: 10px 16px; border-top: 1px solid var(--border, rgba(255,255,255,.09)); font-size: 11.5px; color: var(--tertiary, #6f79a8); }

/* ── 5. 深色皮肤：仅翻转 .admin-main 浅色令牌域（后台页专属，营销页不受影响）── */
html[data-theme="dark"] body.admin-body .admin-main {
    --surface: #1a2048; --surface-2: #232b5a; --inset: #2c356b;
    --text: #eaeefb; --text-2: #c5cbe8; --muted: #949dc9; --tertiary: #6f79a8;
    --border: rgba(255, 255, 255, .09); --border-strong: rgba(255, 255, 255, .18);
    --primary: #4c8dff; --primary-strong: #7aa9ff; --primary-soft: rgba(76, 141, 255, .22); --accent: #4c8dff;
    --toolbar-bg: rgba(26, 32, 72, .78); --sel-bg: rgba(76, 141, 255, .22);
    --pc-pop-bg: #1a2048;
    background: linear-gradient(180deg, var(--bg-1, #171c3e), var(--bg-0, #0f1330));
    color: var(--text);
}
html[data-theme="dark"] body.admin-body .admin-topbar { border-bottom-color: var(--border); }
html[data-theme="dark"] body.admin-body .admin-search input { background: rgba(255, 255, 255, .07); color: var(--text); border-color: var(--border); }
html[data-theme="dark"] body.admin-body .admin-search input:focus { background: var(--surface-2); }
html[data-theme="dark"] body.admin-body .admin-search::before { filter: invert(1); opacity: .45; }
html[data-theme="dark"] body.admin-body .admin-front-link { background: rgba(255, 255, 255, .08); color: var(--text-2); }
html[data-theme="dark"] body.admin-body .admin-front-link:hover { background: rgba(255, 255, 255, .14); color: var(--primary-strong); }
html[data-theme="dark"] body.admin-body .saas-account-box { background: rgba(255, 255, 255, .06); }
html[data-theme="dark"] body.admin-body .admin-menu-btn,
html[data-theme="dark"] body.admin-body .pc-kbtn,
html[data-theme="dark"] body.admin-body .pc-tbtn { background: rgba(255, 255, 255, .07); border-color: var(--border); color: var(--text-2); }
html[data-theme="dark"] body.admin-body .pc-kbtn:hover,
html[data-theme="dark"] body.admin-body .pc-tbtn:hover { background: rgba(255, 255, 255, .13); color: var(--text); }
html[data-theme="dark"] body.admin-body kbd.pc-kbd { background: var(--inset); border-color: var(--border-strong); color: var(--text-2); }
/* 内联样式里硬编码浅色的少量热点（弹窗分析图 / 安全徽章浅色域）同步补暗 */
html[data-theme="dark"] body.admin-body .mchart { background: var(--surface); }
html[data-theme="dark"] body.admin-body .mon-kpis .cell { background: var(--inset); }
html[data-theme="dark"] body.admin-body .mon-modal { background: var(--surface); }
html[data-theme="dark"] body.admin-body .mon-modal-close { background: var(--inset); color: var(--text-2); }
html[data-theme="dark"] body.admin-body #tab-security-admin .sec-tab-badge { background: rgba(255, 132, 132, .16); color: #ff8484; }

/* ── 6. 密度两档：compact 收紧表格与内容区 ── */
body.admin-body.pc-on.pc-density-compact { --pc-row-pad-y: 6px; --pc-row-pad-x: 10px; }
body.admin-body.pc-on.pc-density-compact .admin-content { padding: 18px 22px 26px; }
body.admin-body.pc-on.pc-density-compact .saas-table th,
body.admin-body.pc-on.pc-density-compact .saas-table td { padding: var(--pc-row-pad-y) var(--pc-row-pad-x); font-size: 12.8px; }
body.admin-body.pc-on.pc-density-compact .stat-card { padding: 12px 14px; }
body.admin-body.pc-on.pc-density-compact .ov-card { padding: 14px 16px; }

/* ── 7. DataGrid：对 table[data-pc-grid] 的声明式增强 ── */
body.admin-body.pc-on table[data-pc-grid] { border-collapse: separate; border-spacing: 0; }
body.admin-body.pc-on table[data-pc-grid] thead th[data-pc-sort] { cursor: pointer; user-select: none; white-space: nowrap; }
body.admin-body.pc-on table[data-pc-grid] thead th[data-pc-sort]:hover { color: var(--primary-strong, #0058b8); }
body.admin-body.pc-on table[data-pc-grid] th[data-pc-sort]::after {
    content: "↕"; margin-left: 6px; font-size: 10px; opacity: .38; letter-spacing: -2px;
}
body.admin-body.pc-on table[data-pc-grid] th[aria-sort="ascending"]::after { content: "↑"; opacity: 1; color: var(--primary, #0071e3); }
body.admin-body.pc-on table[data-pc-grid] th[aria-sort="descending"]::after { content: "↓"; opacity: 1; color: var(--primary, #0071e3); }
body.admin-body.pc-on table[data-pc-grid] th[aria-sort]:hover { color: inherit; }
/* 多选列（JS 注入 .pc-sel 单元格）*/
body.admin-body.pc-on table[data-pc-grid] .pc-sel { width: 34px; text-align: center; }
body.admin-body.pc-on table[data-pc-grid] .pc-sel input[type="checkbox"] { width: 15px; height: 15px; accent-color: var(--primary, #0071e3); cursor: pointer; vertical-align: middle; }
/* 斑马纹 + hover 行/列高亮 + 选中/活动行 */
body.admin-body.pc-on table[data-pc-grid] tbody tr:nth-child(even) td { background: rgba(127, 140, 170, .06); }
body.admin-body.pc-on table[data-pc-grid] tbody tr:hover td { background: var(--sel-bg, rgba(0, 113, 227, .1)); }
body.admin-body.pc-on table[data-pc-grid] tbody td.pc-col-hover { background: color-mix(in srgb, var(--primary, #0071e3) 7%, transparent); }
body.admin-body.pc-on table[data-pc-grid] tbody tr.pc-selected td { background: var(--sel-bg, rgba(0, 113, 227, .16)); }
body.admin-body.pc-on table[data-pc-grid] tbody tr.pc-row-active td { box-shadow: inset 0 0 0 999px color-mix(in srgb, var(--primary, #0071e3) 5%, transparent); }
body.admin-body.pc-on table[data-pc-grid] tbody tr.pc-row-active td:first-child { box-shadow: inset 3px 0 0 var(--primary, #0071e3); }
body.admin-body.pc-on table[data-pc-grid] tbody tr { transition: background var(--pc-dur-1) var(--ease, ease); }

/* ── 8. BulkBar：多选后浮现的吸底批量条 ── */
.pc-bulkbar {
    position: fixed; left: 50%; bottom: 22px; z-index: 1240;
    display: flex; align-items: center; gap: 10px;
    padding: 9px 12px 9px 18px; border-radius: 14px;
    background: #10142e; color: #eaeefb; border: 1px solid rgba(255,255,255,.14);
    box-shadow: 0 20px 48px -16px rgba(0,0,0,.65);
    transform: translate(-50%, calc(100% + 32px)); opacity: 0; visibility: hidden;
    transition: transform var(--pc-dur-3) var(--ease, ease), opacity var(--pc-dur-2) var(--ease, ease), visibility 0s linear var(--pc-dur-3);
    font-size: 13px; max-width: min(92vw, 780px);
}
.pc-bulkbar.is-open { transform: translate(-50%, 0); opacity: 1; visibility: visible; transition: transform var(--pc-dur-3) var(--ease, ease), opacity var(--pc-dur-2) var(--ease, ease), visibility 0s; }
.pc-bulkbar b { font-weight: 700; font-variant-numeric: tabular-nums; }
.pc-bulkbar .pc-bulk-sep { width: 1px; height: 20px; background: rgba(255,255,255,.16); }
.pc-bulk-btn {
    padding: 7px 13px; border-radius: 9px; border: 1px solid rgba(255,255,255,.2);
    background: rgba(255,255,255,.08); color: #dfe6fb; font: inherit; font-size: 12.5px; font-weight: 600; cursor: pointer; white-space: nowrap;
}
.pc-bulk-btn:hover { background: rgba(255,255,255,.16); color: #fff; }
.pc-bulk-btn.pc-danger { border-color: rgba(255, 90, 90, .5); color: #ff9d9d; }
.pc-bulk-btn.pc-danger:hover { background: rgba(255, 90, 90, .18); color: #ffbdbd; }
.pc-bulk-close { border: none; background: transparent; color: #949dc9; font-size: 14px; cursor: pointer; padding: 4px 6px; }
.pc-bulk-close:hover { color: #fff; }

/* ── 9. CommandPalette（⌘K）── */
.pc-palette-mask {
    position: fixed; inset: 0; z-index: 1400; background: var(--pc-overlay);
    -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px);
    display: flex; justify-content: center; align-items: flex-start; padding: 12vh 16px 16px;
    opacity: 0; transition: opacity var(--pc-dur-2) var(--ease, ease);
}
.pc-palette-mask.is-open { opacity: 1; }
.pc-palette {
    width: min(640px, 100%); max-height: min(62vh, 520px); display: flex; flex-direction: column;
    background: var(--pc-pop-bg, #fff); border: 1px solid var(--border-strong, rgba(255,255,255,.18));
    border-radius: 16px; box-shadow: 0 40px 90px -30px rgba(0,0,0,.7); overflow: hidden;
    color: var(--text, #eaeefb);
    transform: translateY(10px) scale(.985); transition: transform var(--pc-dur-3) var(--ease, ease);
}
.pc-palette-mask.is-open .pc-palette { transform: none; }
.pc-palette-input { padding: 16px 18px; border: none; border-bottom: 1px solid var(--border, rgba(255,255,255,.09)); background: transparent; color: var(--text, #eaeefb); font: inherit; font-size: 15.5px; outline: none; }
.pc-palette-input::placeholder { color: var(--tertiary, #6f79a8); }
.pc-palette-list { overflow: auto; padding: 6px; flex: 1 1 auto; min-height: 0; }
.pc-palette-group { font-size: 11px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--tertiary, #6f79a8); padding: 10px 12px 4px; }
.pc-palette-item {
    display: flex; align-items: center; gap: 10px; width: 100%;
    padding: 9px 12px; border: none; border-radius: 10px; background: transparent;
    color: var(--text-2, #c5cbe8); font: inherit; font-size: 13.5px; text-align: left; cursor: pointer;
}
.pc-palette-item .pi-ico { width: 20px; text-align: center; flex: 0 0 auto; opacity: .85; }
.pc-palette-item .pi-label { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 550; }
.pc-palette-item .pi-hint { margin-left: auto; flex: 0 0 auto; }
.pc-palette-item.is-active { background: var(--primary, #0071e3); color: #fff; }
.pc-palette-item.is-active .pi-hint kbd { background: rgba(255,255,255,.2); border-color: transparent; color: #fff; }
.pc-palette-empty { padding: 22px; text-align: center; color: var(--tertiary, #6f79a8); font-size: 13px; }
.pc-palette-foot { flex: 0 0 auto; display: flex; gap: 14px; padding: 9px 14px; border-top: 1px solid var(--border, rgba(255,255,255,.09)); font-size: 11.5px; color: var(--tertiary, #6f79a8); }
.pc-palette-foot span { display: inline-flex; align-items: center; gap: 5px; }
body.pc-on { overflow: inherit; }
body.pc-modal-open { overflow: hidden; }

/* ── 10. ContextMenu（右键 / . 唤起）── */
.pc-ctx {
    position: fixed; z-index: 1350; min-width: 190px; padding: 5px;
    background: var(--pc-pop-bg, #fff); border: 1px solid var(--border-strong, rgba(255,255,255,.18));
    border-radius: 12px; box-shadow: 0 22px 50px -18px rgba(0,0,0,.55);
    color: var(--text, #eaeefb);
    opacity: 0; transform: scale(.97); transform-origin: top left;
    transition: opacity var(--pc-dur-1) var(--ease, ease), transform var(--pc-dur-1) var(--ease, ease);
}
.pc-ctx.is-open { opacity: 1; transform: none; }
.pc-ctx button {
    display: flex; align-items: center; gap: 9px; width: 100%;
    padding: 8px 11px; border: none; border-radius: 8px; background: transparent;
    color: var(--text-2, #c5cbe8); font: inherit; font-size: 13px; text-align: left; cursor: pointer; white-space: nowrap;
}
.pc-ctx button:hover { background: var(--sel-bg, rgba(0,113,227,.14)); color: var(--text, #eaeefb); }
.pc-ctx button.pc-danger { color: #ff8484; }
.pc-ctx button.pc-danger:hover { background: rgba(255, 90, 90, .14); }
.pc-ctx .pc-ctx-sep { height: 1px; margin: 4px 8px; background: var(--border, rgba(255,255,255,.1)); }
.pc-ctx kbd { margin-left: auto; }

/* ── 11. Toast + Undo ── */
.pc-toasts { position: fixed; right: 18px; bottom: 18px; z-index: 1500; display: flex; flex-direction: column; gap: 10px; align-items: flex-end; pointer-events: none; }
.pc-toast {
    display: flex; align-items: center; gap: 12px; max-width: min(420px, 92vw);
    padding: 11px 12px 11px 16px; border-radius: 12px;
    background: #10142e; color: #eaeefb; border: 1px solid rgba(255,255,255,.14);
    box-shadow: 0 18px 40px -14px rgba(0,0,0,.6); font-size: 13px;
    opacity: 0; transform: translateY(8px) scale(.98); pointer-events: auto;
    transition: opacity var(--pc-dur-2) var(--ease, ease), transform var(--pc-dur-2) var(--ease, ease);
}
.pc-toast.is-show { opacity: 1; transform: none; }
.pc-toast .pt-ico { flex: 0 0 auto; font-size: 14px; }
.pc-toast.pt-ok .pt-ico { color: #4ade80; }
.pc-toast.pt-bad .pt-ico { color: #ff8484; }
.pc-toast .pt-msg { min-width: 0; }
.pc-toast .pt-undo {
    flex: 0 0 auto; padding: 5px 12px; border-radius: 8px; border: 1px solid rgba(255,255,255,.22);
    background: rgba(255,255,255,.08); color: #cfe0ff; font: inherit; font-size: 12px; font-weight: 700; cursor: pointer;
}
.pc-toast .pt-undo:hover { background: rgba(255,255,255,.18); color: #fff; }

/* ── 12. FilterBar + 案例中心多栏目录（营销前台试点，浅色域）── */
.pc-cases-layout { display: block; }
.pc-filterbar {
    background: var(--surface, #fff); border: 1px solid var(--border, rgba(0,0,0,.08));
    border-radius: var(--radius, 16px); padding: 16px 18px; box-shadow: var(--shadow-sm);
    margin-bottom: 16px;
}
.pc-fb-title { display: flex; align-items: center; gap: 7px; margin: 0 0 10px; font-size: 13.5px; font-weight: 700; color: var(--text, #1d1d1f); letter-spacing: -.01em; }
.pc-fb-title button { margin-left: auto; border: none; background: transparent; color: var(--muted, #6e6e73); font: inherit; font-size: 12px; cursor: pointer; text-decoration: underline; }
.pc-fb-title button:hover { color: var(--primary, #0071e3); }
.pc-fb-group { margin: 0 0 12px; }
.pc-fb-group > b { display: block; font-size: 11.5px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--tertiary, #9a9aa0); margin-bottom: 6px; }
.pc-fb-opt { display: flex; align-items: center; gap: 8px; padding: 4px 0; font-size: 13.5px; color: var(--text-2, #48484d); cursor: pointer; }
.pc-fb-opt input { width: 15px; height: 15px; accent-color: var(--primary, #0071e3); cursor: pointer; }
.pc-fb-opt:hover { color: var(--primary-strong, #0058b8); }
.pc-fb-opt .pc-fb-n { margin-left: auto; font-size: 11.5px; color: var(--tertiary, #9a9aa0); font-variant-numeric: tabular-nums; }
.pc-fb-chips { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 12px; padding: 0; list-style: none; }
.pc-fb-chips:empty { display: none; }
.pc-fb-chips li {
    display: inline-flex; align-items: center; gap: 5px; padding: 3px 6px 3px 11px;
    border-radius: var(--radius-pill, 999px); background: var(--primary-soft, rgba(0,113,227,.1));
    color: var(--primary-strong, #0058b8); font-size: 12px; font-weight: 600;
}
.pc-fb-chips button { border: none; background: transparent; color: inherit; font-size: 12px; cursor: pointer; padding: 1px 4px; border-radius: 50%; }
.pc-fb-chips button:hover { background: rgba(0, 0, 0, .08); }
.pc-fb-count { font-size: 12.5px; color: var(--muted, #6e6e73); }

/* ≥1280：左侧筛选面板 + 中多栏目录；≥1536：三列起步 */
@media (min-width: 1280px) {
    .pc-cases-layout { display: grid; grid-template-columns: 230px minmax(0, 1fr); gap: 26px; align-items: start; }
    .pc-filterbar { position: sticky; top: 20px; margin-bottom: 0; }
    .pc-cases-main { min-width: 0; }
}
@media (min-width: 1536px) {
    body.pc-on .pc-cases-layout .cl-grid { grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); }
}
@media (min-width: 1920px) {
    body.pc-on .pc-cases-layout { grid-template-columns: 250px minmax(0, 1fr); gap: 32px; }
    body.pc-on .pc-cases-layout .cl-grid { gap: 24px; }
}

/* hover 速览浮层（卡片悬停 180ms 后浮出：封面 + 摘要 + 快捷进入）*/
.pc-hovercard {
    position: fixed; z-index: 1300; width: 320px; padding: 0; overflow: hidden;
    background: var(--surface, #fff); border: 1px solid var(--border-strong, #dcdce2);
    border-radius: 14px; box-shadow: 0 26px 60px -20px rgba(16, 24, 40, .38);
    opacity: 0; transform: translateY(6px); pointer-events: none;
    transition: opacity var(--pc-dur-2) var(--ease, ease), transform var(--pc-dur-2) var(--ease, ease);
}
.pc-hovercard.is-show { opacity: 1; transform: none; }
.pc-hovercard .hc-cover { display: block; height: 128px; background: var(--grad-hero, linear-gradient(135deg, #4c8dff, #6366f1)); background-size: cover; background-position: center; }
.pc-hovercard .hc-body { padding: 12px 14px 14px; display: flex; flex-direction: column; gap: 6px; }
.pc-hovercard .hc-body b { font-size: 14px; color: var(--text, #1d1d1f); letter-spacing: -.01em; }
.pc-hovercard .hc-body p { margin: 0; font-size: 12.8px; line-height: 1.6; color: var(--text-2, #48484d); display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.pc-hovercard .hc-go { margin-top: 4px; font-size: 12.5px; font-weight: 700; color: var(--primary, #0071e3); }

/* ── 13. 无障碍与动效克制 ── */
@media (prefers-reduced-motion: reduce) {
    body.pc-on *, body.pc-on *::before, body.pc-on *::after {
        animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important;
    }
}
/* 200% 缩放不破版：浮层高度上限已有 max-height，浮出元素不越过视口 */
.pc-sr { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }

/* ── 14. 高风险操作强确认（概念3：关键节点可视化确认，替代原生 confirm）──
   作为 body 直子，沿用后台壳层深色令牌，与 ⌘K 面板 / 右键菜单同一浮层语言。 */
.pc-confirm-mask {
    position: fixed; inset: 0; z-index: 1450; display: flex; align-items: center; justify-content: center;
    padding: 20px; background: rgba(10, 12, 30, .58);
    -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px);
    opacity: 0; transition: opacity var(--pc-dur-2) var(--ease, ease);
}
.pc-confirm-mask.is-open { opacity: 1; }
.pc-confirm {
    width: min(440px, 100%); box-sizing: border-box; text-align: center;
    background: var(--pc-pop-bg, #1a2048); color: var(--text, #eaeefb);
    border: 1px solid var(--border-strong, rgba(255, 255, 255, .18));
    border-radius: 18px; padding: 26px 24px 20px;
    box-shadow: 0 40px 90px -30px rgba(0, 0, 0, .7);
    transform: translateY(10px) scale(.985); transition: transform var(--pc-dur-3) var(--ease, ease);
}
.pc-confirm-mask.is-open .pc-confirm { transform: none; }
.pc-confirm-ico {
    width: 52px; height: 52px; margin: 0 auto 14px; border-radius: 15px; display: grid; place-items: center;
    font-size: 26px; background: rgba(255, 90, 90, .16); color: #ff8484; box-shadow: 0 0 0 1px rgba(255, 90, 90, .4) inset;
}
.pc-confirm.is-warn .pc-confirm-ico { background: rgba(255, 176, 32, .16); color: #ffb020; box-shadow: 0 0 0 1px rgba(255, 176, 32, .4) inset; }
.pc-confirm h4 { margin: 0 0 8px; font-size: 17px; font-weight: 800; letter-spacing: -.02em; color: var(--text, #eaeefb); }
.pc-confirm p { margin: 0 auto; font-size: 13.5px; line-height: 1.6; color: var(--text-2, #c5cbe8); max-width: 340px; }
.pc-confirm-detail { margin-top: 8px !important; font-size: 12.5px !important; color: var(--muted, #949dc9) !important; }
.pc-confirm-check {
    display: flex; align-items: center; justify-content: center; gap: 8px; margin: 16px auto 0;
    font-size: 12.5px; color: var(--text-2, #c5cbe8); cursor: pointer; user-select: none;
}
.pc-confirm-check input { width: 16px; height: 16px; accent-color: #ff5a5a; cursor: pointer; }
.pc-confirm-acts { display: flex; gap: 10px; justify-content: center; margin-top: 20px; }
.pc-confirm-btn {
    min-width: 104px; padding: 9px 18px; border-radius: 11px; font: inherit; font-size: 13.5px; font-weight: 700; cursor: pointer;
    border: 1px solid var(--border-strong, rgba(255, 255, 255, .18)); background: rgba(255, 255, 255, .06); color: var(--text-2, #c5cbe8);
    transition: background var(--pc-dur-1) var(--ease, ease), color var(--pc-dur-1) var(--ease, ease), filter var(--pc-dur-1) var(--ease, ease);
}
.pc-confirm-btn:hover { background: rgba(255, 255, 255, .12); color: var(--text, #eaeefb); }
.pc-confirm-btn.primary { border-color: transparent; background: linear-gradient(135deg, #e5484d, #c9242f); color: #fff; }
.pc-confirm-btn.primary:hover { filter: brightness(1.08); }
.pc-confirm-btn.primary:disabled { opacity: .5; cursor: not-allowed; filter: none; }
.pc-confirm.is-warn .pc-confirm-btn.primary { background: linear-gradient(135deg, #d98a1f, #b45309); }

/* ── 15. 智能工作台首页（概念2：意图预判 + AI 助手入口 + 渐进显隐 + 一键经典视图）──
   仅作用于 #tab-home 内部，浅色域沿用 .admin-main 令牌；不侵入其它面板。 */
.wb-hero {
    position: relative; overflow: hidden; display: flex; align-items: center; justify-content: space-between;
    gap: 20px; flex-wrap: wrap; border-radius: var(--radius-lg, 20px); padding: 24px 26px; margin-bottom: 22px;
    color: #fff; background: var(--grad-hero, linear-gradient(135deg, #3f6fe0, #6a4fd0)); box-shadow: var(--shadow-md);
}
.wb-hero::after { content: ""; position: absolute; inset: 0; pointer-events: none; background: radial-gradient(460px 240px at 90% -30%, rgba(255, 255, 255, .2), transparent 70%); }
.wb-hero > * { position: relative; z-index: 1; }
.wb-hero .wb-kicker { font-size: 12px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: rgba(255, 255, 255, .82); }
.wb-hero h2 { margin: 4px 0 6px; font-size: 23px; font-weight: 700; color: #fff; letter-spacing: -.03em; }
.wb-hero p { margin: 0; color: rgba(255, 255, 255, .88); font-size: 13.5px; max-width: 560px; line-height: 1.55; }
/* AI 目标胶囊：点击唤起 ⌘K 命令面板（意图驱动的任务中枢入口） */
.wb-capsule {
    display: inline-flex; align-items: center; gap: 10px; cursor: pointer; font: inherit; text-align: left;
    padding: 12px 16px; border-radius: 999px; border: 1px solid rgba(255, 255, 255, .34); background: rgba(255, 255, 255, .16);
    color: #fff; -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
    transition: background var(--pc-dur-1) var(--ease, ease), transform var(--pc-dur-1) var(--ease, ease), box-shadow var(--pc-dur-1) var(--ease, ease);
}
.wb-capsule:hover { background: rgba(255, 255, 255, .26); transform: translateY(-1px); box-shadow: 0 10px 24px -12px rgba(0, 0, 0, .5); }
.wb-capsule .wb-cap-ico { display: grid; place-items: center; width: 26px; height: 26px; border-radius: 50%; background: rgba(255, 255, 255, .22); font-size: 14px; }
.wb-capsule .wb-cap-txt { display: flex; flex-direction: column; gap: 1px; }
.wb-capsule .wb-cap-txt b { font-size: 13.5px; font-weight: 700; letter-spacing: -.01em; }
.wb-capsule .wb-cap-txt span { font-size: 11px; color: rgba(255, 255, 255, .78); }
.wb-capsule kbd.pc-kbd { background: rgba(255, 255, 255, .2); border-color: transparent; color: #fff; }

/* 动态意图看板：自动整理的今日重点，按紧迫度排序，逐条一键直达处理 */
.wb-focus { background: var(--surface, #fff); border: 1px solid var(--border, rgba(0, 0, 0, .08)); border-radius: var(--radius, 16px); padding: 18px 20px; margin-bottom: 22px; box-shadow: var(--shadow-sm); }
.wb-focus-head { display: flex; align-items: center; gap: 10px; margin-bottom: 6px; }
.wb-focus-head .wb-fh-ico { display: grid; place-items: center; width: 28px; height: 28px; border-radius: 9px; font-size: 15px; background: var(--primary-soft, rgba(0, 113, 227, .12)); color: var(--primary, #0071e3); }
.wb-focus-head b { font-size: 15.5px; font-weight: 700; color: var(--text, #1d1d1f); letter-spacing: -.02em; }
.wb-focus-head .wb-fh-note { margin-left: auto; font-size: 11.5px; color: var(--muted, #6e6e73); }
.wb-focus-sub { margin: 0 0 12px; font-size: 12.5px; color: var(--muted, #6e6e73); }
.wb-item { display: flex; align-items: center; gap: 12px; padding: 12px 4px; border-top: 1px solid var(--border, rgba(0, 0, 0, .07)); }
.wb-item:first-of-type { border-top: none; }
.wb-item .wb-pri { flex: 0 0 auto; width: 8px; height: 8px; border-radius: 50%; background: var(--tertiary, #9a9aa0); }
.wb-item.p-high .wb-pri { background: #d1242f; box-shadow: 0 0 0 3px rgba(209, 36, 47, .14); }
.wb-item.p-warn .wb-pri { background: #b45309; box-shadow: 0 0 0 3px rgba(180, 83, 9, .14); }
.wb-item.p-ok .wb-pri { background: #1a7f37; }
.wb-item .wb-main { min-width: 0; flex: 1 1 auto; }
.wb-item .wb-title { font-size: 13.8px; font-weight: 600; color: var(--text, #1d1d1f); line-height: 1.4; }
.wb-item .wb-desc { font-size: 12px; color: var(--muted, #6e6e73); margin-top: 2px; }
.wb-item .wb-act { flex: 0 0 auto; }
.wb-item .wb-act .btn, .wb-item .wb-act button { padding: 6px 14px; font-size: 12.5px; font-weight: 600; border-radius: 9px; border: 1px solid var(--border-strong, #dcdce2); background: var(--surface, #fff); color: var(--text, #1d1d1f); cursor: pointer; font-family: inherit; }
.wb-item .wb-act .btn:hover, .wb-item .wb-act button:hover { border-color: var(--primary, #0071e3); color: var(--primary, #0071e3); }
.wb-empty { display: flex; align-items: center; gap: 10px; padding: 14px 4px; font-size: 13.5px; color: var(--muted, #6e6e73); }
.wb-empty .wb-empty-ico { color: #1a7f37; font-size: 16px; }

/* 底部工具行：一键切回经典视图（渐进显隐：意图态 ↔ 传统快捷磁贴） */
.wb-toolbar { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin: 2px 0 22px; }
.wb-mode-switch {
    display: inline-flex; align-items: center; gap: 8px; cursor: pointer; font: inherit; font-size: 12.5px; font-weight: 600;
    padding: 7px 14px; border-radius: 999px; border: 1px solid var(--border-strong, #dcdce2); background: var(--surface, #fff); color: var(--text-2, #48484d);
    transition: background var(--pc-dur-1) var(--ease, ease), color var(--pc-dur-1) var(--ease, ease), border-color var(--pc-dur-1) var(--ease, ease);
}
.wb-mode-switch:hover { color: var(--primary, #0071e3); border-color: var(--primary, #0071e3); }
.wb-mode-switch .wb-ms-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--primary, #0071e3); }
.wb-toolbar .wb-tip { font-size: 11.5px; color: var(--tertiary, #9a9aa0); }
/* 经典视图：隐藏智能区（hero/统计/看板+动态双栏），保留原快捷磁贴；智能视图反之（由 JS 切换 body 类） */
body.pc-home-classic #tab-home .wb-focus,
body.pc-home-classic #tab-home .wb-hero,
body.pc-home-classic #tab-home .wb-stats,
body.pc-home-classic #tab-home .wb-cols { display: none; }
body:not(.pc-home-classic) #tab-home .wb-classic-only { display: none; }

/* ── 15.1 首页大改版（对齐概念图 2/6）：意图输入框 · 快捷胶囊行 · KPI 统计带 · 看板+动态双栏 ── */
/* 意图输入框：把「告诉我你的目标」从按钮升级为真正的自然语言入口，回车进命令面板 */
.wb-intent {
    display: flex; align-items: center; gap: 10px; width: 100%; max-width: 640px; margin-top: 16px;
    padding: 6px 6px 6px 16px; border-radius: 999px; border: 1px solid rgba(255, 255, 255, .38); background: rgba(255, 255, 255, .14);
    -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); transition: background var(--pc-dur-1) var(--ease, ease), box-shadow var(--pc-dur-1) var(--ease, ease);
}
.wb-intent:focus-within { background: rgba(255, 255, 255, .22); box-shadow: 0 0 0 4px rgba(255, 255, 255, .14); }
.wb-intent .wb-in-ico { font-size: 16px; opacity: .9; flex: 0 0 auto; }
.wb-intent input {
    flex: 1 1 auto; min-width: 0; border: none; outline: none; background: transparent; font: inherit; font-size: 14px; color: #fff;
}
.wb-intent input::placeholder { color: rgba(255, 255, 255, .72); }
.wb-intent button {
    flex: 0 0 auto; cursor: pointer; font: inherit; font-size: 13px; font-weight: 700; color: #3f6fe0;
    padding: 9px 18px; border-radius: 999px; border: none; background: #fff;
    transition: transform var(--pc-dur-1) var(--ease, ease), box-shadow var(--pc-dur-1) var(--ease, ease);
}
.wb-intent button:hover { transform: translateY(-1px); box-shadow: 0 8px 18px -8px rgba(0, 0, 0, .45); }
/* hero 内快捷意图胶囊：一点即把关键词带进命令面板 */
.wb-quickcaps { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.wb-quickcaps button {
    display: inline-flex; align-items: center; gap: 6px; cursor: pointer; font: inherit; font-size: 12px; font-weight: 600;
    padding: 6px 12px; border-radius: 999px; border: 1px solid rgba(255, 255, 255, .3); background: rgba(255, 255, 255, .12); color: rgba(255, 255, 255, .94);
    transition: background var(--pc-dur-1) var(--ease, ease), transform var(--pc-dur-1) var(--ease, ease);
}
.wb-quickcaps button:hover { background: rgba(255, 255, 255, .24); transform: translateY(-1px); }
/* KPI 统计带：今日调用/剩余额度/生效绑定/有效密钥，大数字一眼可读 */
.wb-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(168px, 1fr)); gap: 14px; margin-bottom: 22px; }
.wb-stat {
    background: var(--surface, #fff); border: 1px solid var(--border, rgba(0, 0, 0, .08)); border-radius: var(--radius, 16px);
    padding: 14px 16px; box-shadow: var(--shadow-sm); display: flex; flex-direction: column; gap: 2px; cursor: pointer; font: inherit; text-align: left;
    transition: transform var(--pc-dur-1) var(--ease, ease), box-shadow var(--pc-dur-1) var(--ease, ease), border-color var(--pc-dur-1) var(--ease, ease);
}
.wb-stat:hover { transform: translateY(-2px); box-shadow: var(--shadow-md); border-color: var(--primary, #0071e3); }
.wb-stat .ws-label { font-size: 12px; color: var(--muted, #6e6e73); display: flex; align-items: center; gap: 6px; }
.wb-stat .ws-big { font-size: 26px; font-weight: 800; letter-spacing: -.04em; color: var(--text, #1d1d1f); line-height: 1.15; }
.wb-stat .ws-big small { font-size: 14px; font-weight: 600; color: var(--tertiary, #9a9aa0); letter-spacing: 0; }
.wb-stat .ws-sub { font-size: 11.5px; color: var(--muted, #6e6e73); }
.wb-stat .ws-bar { height: 4px; border-radius: 2px; background: var(--inset, #eceef3); overflow: hidden; margin-top: 6px; }
.wb-stat .ws-bar i { display: block; height: 100%; border-radius: 2px; background: var(--grad-brand, linear-gradient(90deg, #3b82f6, #6366f1)); }
.wb-stat .ws-bar i.over { background: linear-gradient(90deg, #e5484d, #c9242f); }
/* 双栏：左意图看板（宽）+ 右最近动态时间线（窄）；窄屏自然塌缩单列 */
.wb-cols { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); gap: 22px; align-items: start; margin-bottom: 22px; }
.wb-cols > * { min-width: 0; }
@media (max-width: 1200px) { .wb-cols { grid-template-columns: 1fr; } }
.wb-cols .wb-focus { margin-bottom: 0; }
.wb-activity { background: var(--surface, #fff); border: 1px solid var(--border, rgba(0, 0, 0, .08)); border-radius: var(--radius, 16px); padding: 18px 20px; box-shadow: var(--shadow-sm); }
.wb-activity .wb-focus-head { margin-bottom: 10px; }
.wb-act-item { display: flex; gap: 10px; padding: 10px 2px; border-top: 1px solid var(--border, rgba(0, 0, 0, .07)); cursor: pointer; }
.wb-act-item:first-child { border-top: none; }
.wb-act-item .wa-ico { flex: 0 0 auto; width: 26px; height: 26px; border-radius: 8px; display: grid; place-items: center; font-size: 13px; background: var(--inset, #eceef3); }
.wb-act-item .wa-main { min-width: 0; }
.wb-act-item .wa-title { font-size: 13px; font-weight: 600; color: var(--text, #1d1d1f); line-height: 1.45; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.wb-act-item .wa-time { font-size: 11.5px; color: var(--tertiary, #9a9aa0); margin-top: 2px; }
.wb-act-item:hover .wa-title { color: var(--primary, #0071e3); }
.wb-activity .wb-more { margin-top: 10px; font-size: 12px; }
@media (max-width: 860px) { .wb-hero { padding: 20px; } .wb-stats { grid-template-columns: 1fr 1fr; } }
