/* 从 high_value_users.html 原位迁移，必须保持原有选择器和级联顺序。 */
    * { margin: 0; padding: 0; box-sizing: border-box; }
    body { font-family: -apple-system, BlinkMacSystemFont, "SF Pro Text", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Arial, sans-serif; background: #f5f6fa; color: #182230; overflow-x: hidden; }
    .main-content { min-width: 0; width: calc(100vw - 216px); max-width: calc(100vw - 216px); overflow-x: hidden; }
    body.sidebar-collapsed .main-content { width: calc(100vw - 72px); max-width: calc(100vw - 72px); }
    .container { max-width: none; width: 100%; min-width: 0; margin: 0; padding-bottom: 42px; }
    .page-head { display: flex; justify-content: space-between; align-items: center; gap: 18px; margin-bottom: 16px; }
    .head-actions { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
    /* 私信记录是低频查看入口而非操作：.btn 类把 ops-classic.css 按钮归一化降到（0-2-0），
       再用页面前缀 + !important 复位成文字链接外观，与旁边的操作按钮（导出）拉开层级 */
    body.ops-page.ops-high-value button.btn#messageRecordsBtn { padding: 0 4px; border-color: transparent !important; background: transparent !important; box-shadow: none !important; color: #475467 !important; }
    body.ops-page.ops-high-value button.btn#messageRecordsBtn:hover { border-color: transparent !important; background: transparent !important; color: #7f56d9 !important; text-decoration: underline; text-underline-offset: 3px; }
    .filter-panel, .panel, .stat-card { background: #fff; border: 1px solid #e7eaf1; border-radius: 10px; box-shadow: 0 10px 26px rgba(16,24,40,.05); }
    .filter-panel { padding: 14px; margin-bottom: 16px; }
    .toolbar { display: grid; grid-template-columns: minmax(170px, 1fr) minmax(104px, .45fr) auto minmax(190px, 1fr) minmax(120px, .5fr) minmax(104px, .45fr); gap: 10px; align-items: center; }
    .input, .select { width: 100%; height: 38px; border: 1px solid #d6dce8; border-radius: 10px; padding: 0 12px; background: #fff; color: #1e293b; outline: none; font-size: 14px; }
    .input:focus, .select:focus { border-color: #7f56d9; box-shadow: 0 0 0 3px rgba(127,86,217,.16); }
    /* 起止日期合并为一个视觉框：透明原生日期输入覆盖左右半区兜底，可见文案置于其上并直接唤起对应选择器。
       外观（高度/边框/圆角/颜色/字重/聚焦）由 ops-classic.css 统一控件规范接管，这里只保留布局；
       最小宽度 160px 让框体饱满、和旁边 128px 基准的控件视觉协调，又不会像固定 240px 那样留大段空白。 */
    .date-range-field { position: relative; display: flex; align-items: center; gap: 8px; width: fit-content; min-width: 160px; padding: 0 12px; }
    .date-input { position: absolute; top: 0; bottom: 0; width: 50%; height: 100%; opacity: 0; cursor: pointer; z-index: 2; border: 0; padding: 0; }
    .date-input-start { left: 0; }
    .date-input-end { right: 0; }
    .date-range-text { position: relative; z-index: 3; pointer-events: auto; cursor: pointer; white-space: nowrap; }
    .date-range-sep { color: #94a3b8; pointer-events: none; }
    /* 日历图标画法保持描边方块加顶部细线，避免实心黑块的沉重感；fit-content 容器内 margin auto 失效，固定间距即可。 */
    .date-range-field::after { content: ""; width: 14px; height: 14px; margin-left: 12px; flex: 0 0 auto; border: 1.8px solid #0f172a; border-radius: 3px; background: linear-gradient(#0f172a, #0f172a) 2px 3px / 10px 1.8px no-repeat; opacity: .9; }
    .filter-error { margin-top: 10px; padding: 9px 12px; border: 1px solid #f4bdb7; border-radius: 9px; background: #fff1f0; color: #b42318; font-size: 12px; font-weight: 700; }
    .filter-error[hidden] { display: none; }
    .btn { height: 38px; border: 1px solid #d6dce8; border-radius: 10px; padding: 0 14px; background: #fff; color: #1e293b; cursor: pointer; font-weight: 600; white-space: nowrap; }
    .btn:hover { background: #f9fafb; }
    .btn-primary { border-color: #7f56d9; background: #7f56d9; color: #fff; }
    .btn-primary:hover { background: #53389e; }
    .anchor-dropdown { position: relative; }
    .anchor-search { width: 100%; height: 38px; border: 1px solid #d6dce8; border-radius: 10px; padding: 0 12px; background: #fff; color: #1e293b; outline: none; font-size: 14px; }
    .anchor-search:focus { border-color: #7f56d9; box-shadow: 0 0 0 3px rgba(127,86,217,.16); }
    /* 菜单外观（圆角/内边距/阴影/边框）由 ops-classic.css 下拉菜单规范统一接管，这里只保留定位。 */
    .anchor-menu { position: absolute; top: 43px; left: 0; right: 0; z-index: 200; display: none; max-height: 280px; overflow-y: auto; }
    .anchor-menu.open { display: block; }
    .anchor-option { width: 100%; min-height: 38px; border: 0; border-radius: 10px; background: transparent; display: flex; align-items: center; gap: 9px; padding: 7px 9px; text-align: left; color: #1e293b; cursor: pointer; }
    .anchor-option:hover, .anchor-option.selected { background: #f0e9ff; color: #0f5f5c; }
    .small-avatar, .user-avatar { border-radius: 50%; background: #f0e9ff; color: #7f56d9; display: inline-flex; align-items: center; justify-content: center; font-weight: 700; overflow: hidden; flex-shrink: 0; }
    .small-avatar { width: 26px; height: 26px; font-size: 11px; }
    .user-avatar { width: 44px; height: 44px; font-size: 16px; }
    .small-avatar img, .user-avatar img { width: 100%; height: 100%; object-fit: cover; }
    .stats-grid { display: none; }
    .stat-card { padding: 16px; }
    .stat-value { font-size: 25px; line-height: 1.1; font-weight: 700; color: #0f172a; margin-bottom: 7px; }
    .stat-label { color: #64748b; font-size: 13px; }
    .panel { overflow: hidden; }
    .lead-table-head { display: grid; grid-template-columns: minmax(150px, .72fr) minmax(270px, 1.12fr) minmax(270px, 1fr) 120px 64px; gap: 12px; min-height: 50px; align-items: center; padding: 0 16px; background: linear-gradient(180deg, #fbfcfe 0%, #f5f7fb 100%); border-top: 1px solid #f0f2f5; border-bottom: 1px solid #e4e7ec; color: #475467; font-size: 12px; font-weight: 700; letter-spacing: .02em; }
    .lead-table-head > div { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    .lead-table-head > div:last-child { text-align: right; }
    .user-list { display: grid; gap: 0; }
    .user-row { display: grid; grid-template-columns: minmax(150px, .72fr) minmax(270px, 1.12fr) minmax(270px, 1fr) 120px 64px; gap: 12px; padding: 10px 16px; border-bottom: 1px solid #f0f2f5; align-items: start; min-width: 0; }
    .user-row > div { min-width: 0; }
    .user-row:last-child { border-bottom: 0; }
    .lead-user-cell { display: flex; align-items: flex-start; gap: 10px; min-width: 0; }
    .lead-user-selection { flex: 0 0 18px; padding-top: 14px; }
    .lead-user-selection:empty { display: none; }
    .user-main { display: grid; grid-template-columns: 44px minmax(0, 1fr); gap: 12px; min-width: 0; }
    .user-name-row { display: flex; align-items: center; gap: 8px; min-width: 0; }
    .user-name { min-width: 0; font-weight: 700; color: #0f172a; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
    /* 首列与其他列表页保持一致：默认深色，hover 品牌紫。
       必须带 body.ops-page 前缀与 !important 才能压过 ops-classic.css 的全局 a 染紫规则。 */
    body.ops-page .user-name-link { color: inherit !important; text-decoration: none; }
    body.ops-page .user-name-link:hover { color: #7f56d9 !important; text-decoration: underline; text-underline-offset: 3px; }
    .user-id { margin-top: 5px; color: #94a3b8; font-size: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
    .user-badges { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; margin-top: 8px; }
    .badge { display: inline-flex; align-items: center; height: 24px; padding: 0 8px; border-radius: 999px; font-size: 12px; font-weight: 600; white-space: nowrap; }
    .badge-info { background: #f0e9ff; color: #0f5f5c; border: 1px solid #e2d8fa; }
    .badge-muted { background: #f2f4f7; color: #64748b; }
    .badge-warn { background: #fff7ed; color: #b54708; }
    .badge-strong { background: #eff6ff; color: #175cd3; }
    .badge-anonymous { background: #f4f3ff; color: #5925dc; border: 1px solid #d9d6fe; }
    .score-text { margin-top: 8px; text-align: right; color: #64748b; font-size: 12px; }
    .metric-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
    .metric { background: #fcfcfd; border: 1px solid #edf0f3; border-radius: 10px; padding: 9px 10px; min-width: 0; }
    .metric-value { color: #0f172a; font-weight: 700; margin-bottom: 3px; }
    .metric-label { color: #94a3b8; font-size: 12px; }
    .context { margin-top: 10px; color: #64748b; font-size: 13px; line-height: 1.5; word-break: break-word; }
    .context strong { color: #1e293b; font-weight: 700; }
    .stay-chip { display: inline-flex; align-items: center; max-width: 100%; min-height: 22px; margin: 0 0 4px; padding: 0 8px; border-radius: 999px; background: #eef4ff; color: #315eea; border: 1px solid #d7e3ff; font-size: 12px; font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
    .comment-list { display: grid; gap: 8px; }
    .comment { background: #fbfcfd; border: 1px solid #edf0f3; border-radius: 10px; padding: 9px 10px; min-width: 0; }
    .comment-meta { display: flex; align-items: center; gap: 8px; color: #94a3b8; font-size: 12px; margin-bottom: 5px; flex-wrap: wrap; }
    .product-link { display: inline-flex; align-items: center; gap: 6px; min-width: 0; max-width: 100%; color: #1e293b; text-decoration: none; font-weight: 600; }
    .product-link:not(a) { cursor: default; }
    .product-link:hover { color: #7f56d9; text-decoration: underline; text-underline-offset: 3px; }
    .product-link:not(a):hover { color: #1e293b; text-decoration: none; }
    .product-cover { width: 28px; height: 28px; border-radius: 10px; object-fit: cover; border: 1px solid #edf0f3; background: #fff; flex-shrink: 0; }
    .product-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    .comment-text { color: #1e293b; font-size: 13px; line-height: 1.45; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
    .suggestion { margin-top: 8px; color: #475569; font-size: 13px; line-height: 1.45; }
    .lead-product { display: grid; grid-template-columns: 96px minmax(0, 1fr); gap: 12px; min-width: 0; }
    .lead-cover { width: 96px; height: 96px; border-radius: 10px; object-fit: cover; background: transparent; display: block; }
    .lead-cover-button { width: 96px; height: 96px; padding: 0; border: 0; background: transparent; cursor: zoom-in; border-radius: 10px; overflow: hidden; display: block; line-height: 0; }
    .lead-cover-button:hover .lead-cover { filter: brightness(.98); }
    body.ops-page.ops-high-value .lead-cover { border: 0 !important; box-shadow: none !important; background: transparent !important; }
    body.ops-page.ops-high-value .lead-cover-button,
    body.ops-page.ops-high-value .lead-cover-button:hover {
      border: 0 !important;
      box-shadow: none !important;
      background: transparent !important;
    }
    body.ops-page.ops-high-value .lead-cover-button:hover .lead-cover {
      border: 0 !important;
      box-shadow: none !important;
    }
    .lead-product-main { min-width: 0; }
    .lead-product-title-row { min-width: 0; }
    body.ops-page .lead-product-name { color: #0f172a !important; font-size: 14px; font-weight: 700; line-height: 1.35; text-decoration: none; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
    body.ops-page .lead-product-name:hover { color: #7f56d9 !important; text-decoration: underline; text-underline-offset: 3px; }
    .product-info-line { margin-top: 8px; color: #475569; font-size: 12px; line-height: 1.5; }
    .product-info-label { color: #64748b; font-weight: 700; margin-right: 4px; }
    .lead-product-price { margin-top: 8px; display: inline-flex; align-items: baseline; gap: 5px; max-width: 100%; color: #ff2f65; font-weight: 800; white-space: nowrap; line-height: 1; }
    .lead-product-price-label { font-size: 12px; }
    .lead-product-price-main { font-size: 18px; letter-spacing: 0; }
    .lead-product-price-original { color: #94a3b8; font-size: 12px; font-weight: 700; text-decoration: line-through; }
    .product-status { margin-top: 6px; color: #7f56d9; font-size: 12px; line-height: 1.45; }
    .product-confidence { margin-top: 6px; color: #94a3b8; font-size: 11px; line-height: 1.4; }
    .product-confidence strong { color: #475569; font-weight: 700; }
    .product-confidence.warn { color: #b54708; }
    .lead-detail-pills { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; max-width: 100%; margin-bottom: 6px; }
    .lead-intent-tags { display: inline-flex; align-items: center; flex-wrap: wrap; gap: 6px; min-width: 0; }
    .purchase-stage-pill { display: inline-flex; align-items: center; min-height: 24px; max-width: 100%; padding: 0 8px; overflow: hidden; border: 1px solid #d9d6fe; border-radius: 999px; background: #f4f3ff; color: #5925dc; font-size: 11px; font-weight: 700; line-height: 1; text-overflow: ellipsis; white-space: nowrap; }
    .lead-comment-time { white-space: nowrap; color: #64748b; }
    .lead-evidence { margin-top: 8px; display: grid; gap: 5px; }
    .evidence-item { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: baseline; gap: 8px; color: #475569; font-size: 12px; line-height: 1.45; background: #fbfcfd; border: 1px solid #edf0f3; border-radius: 10px; padding: 5px 8px; min-width: 0; }
    .evidence-item.no-time { grid-template-columns: minmax(0, 1fr); }
    .evidence-time { color: #94a3b8; font-size: 11px; white-space: nowrap; }
    .evidence-comment { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    /* 评论默认只露前几条（JS 侧 EVIDENCE_VISIBLE_COUNT 控制），超出条目由“展开剩余 N 条”就地切换；
       目的是压住行高、保证一屏线索密度，折叠条目仍在 DOM 中，展开不重渲染、不请求接口 */
    .lead-evidence:not(.expanded) .evidence-item-extra { display: none; }
    /* 截断评论的悬浮提示：fixed 定位由 JS 按评论位置计算；pointer-events:none 永不截获鼠标避免闪烁 */
    .evidence-tooltip { position: fixed; z-index: 2400; padding: 8px 10px; border-radius: 8px; background: rgba(15,23,42,.94); color: #fff; font-size: 12px; line-height: 1.55; box-shadow: 0 8px 24px rgba(15,23,42,.22); pointer-events: none; white-space: normal; word-break: break-word; }
    .evidence-tooltip[hidden] { display: none; }
    /* 展开开关要压过 ops-classic.css 两处按钮规则：.ops-page .btn 归一化锁皮肤（0-2-0），
       button:is(.btn,…) 规整化锁尺寸（0-2-2，height/min-height/min-width/padding/font-size 全 !important）——
       所以这里尺寸属性也必须全部 !important；border 整组清零，因为规整化单独锁了 border-width/style */
    body.ops-page.ops-high-value button.btn.evidence-toggle { justify-self: start; width: auto; min-width: 0 !important; height: 22px !important; min-height: 22px !important; padding: 0 !important; border: 0 !important; background: transparent !important; box-shadow: none !important; color: #64748b !important; font-size: 12px !important; font-weight: 600 !important; }
    body.ops-page.ops-high-value button.btn.evidence-toggle:hover { border: 0 !important; background: transparent !important; color: #7f56d9 !important; text-decoration: underline; text-underline-offset: 3px; }
    .score-box { display: flex; flex-direction: column; align-items: flex-end; gap: 6px; }
    .lead-status-select { width: 100%; height: 32px; border: 1px solid #d6dce8; border-radius: 10px; padding: 0 8px; background: #fff; color: #1e293b; font-size: 13px; outline: none; }
    .lead-status-select:focus { border-color: #7f56d9; box-shadow: 0 0 0 3px rgba(127,86,217,.16); }
    .lead-status-select.pending { color: #b54708; border-color: #fedf89; background: #fffbeb; }
    .lead-status-select.converted { color: #027a48; border-color: #abefc6; background: #ecfdf3; }
    .lead-status-select.invalid, .lead-status-select.ignored { color: #64748b; background: #f9fafb; }
    .lead-message-actions { display: inline-flex; align-items: center; gap: 6px; min-width: 0; }
    body.ops-page button.btn.lead-message-btn { width: auto !important; min-width: 0 !important; height: 22px !important; min-height: 22px !important; padding: 0 5px !important; border-radius: 6px !important; font-size: 11px !important; font-weight: 400 !important; line-height: 1 !important; }
    .lead-message-select { width: 15px; height: 15px; margin: 0; accent-color: #7f56d9; flex-shrink: 0; }
    .lead-message-btn:disabled { cursor: not-allowed; opacity: .56; }
    .user-inline-score { display: none; }
    .score-value { min-width: 52px; height: 40px; border: 1px solid #d8ccff; border-radius: 10px; background: linear-gradient(145deg, #f7f3ff 0%, #eee8ff 100%); color: #6338c5; box-shadow: 0 4px 12px rgba(105,65,198,.12); display: flex; align-items: center; justify-content: center; font-size: 18px; font-weight: 700; }
    body.ops-page.ops-high-value .score-value { border: 1px solid #d8ccff !important; background: linear-gradient(145deg, #f7f3ff 0%, #eee8ff 100%) !important; color: #6338c5 !important; box-shadow: 0 4px 12px rgba(105,65,198,.12) !important; }
    .score-label { color: #64748b; font-size: 12px; text-align: right; }
    .image-preview { position: fixed; inset: 0; z-index: 2600; display: none; align-items: center; justify-content: center; padding: 28px; background: rgba(15,23,42,.62); }
    .image-preview.show { display: flex; }
    .image-preview-panel { position: relative; max-width: min(860px, 88vw); max-height: 86vh; border-radius: 10px; overflow: hidden; background: #fff; box-shadow: 0 28px 80px rgba(15,23,42,.32); }
    .image-preview-panel img { display: block; max-width: min(860px, 88vw); max-height: 86vh; object-fit: contain; }
    .image-preview-close { position: absolute; top: 10px; right: 10px; width: 34px; height: 34px; border: 0; border-radius: 999px; background: rgba(15,23,42,.72); color: #fff; font-size: 22px; line-height: 1; cursor: pointer; }
    .image-preview-close:hover { background: rgba(15,23,42,.9); }
    .export-modal { position: fixed; inset: 0; z-index: 2500; display: none; align-items: center; justify-content: center; padding: 24px; background: rgba(15,23,42,.45); }
    .export-modal.show { display: flex; }
    .export-modal[hidden] { display: none; }
    .export-modal-panel { width: min(420px, 100%); border: 1px solid #e7eaf1; border-radius: 14px; background: #fff; box-shadow: 0 24px 70px rgba(15,23,42,.22); padding: 20px; }
    .export-modal-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 16px; }
    .export-modal-head h2 { color: #1e293b; font-size: 17px; font-weight: 700; }
    .export-modal-close { width: 30px; height: 30px; border: 0; border-radius: 999px; background: #f2f4f7; color: #475467; font-size: 20px; line-height: 1; cursor: pointer; }
    .export-modal-close:hover { background: #e4e7ec; }
    .export-modal-options { display: grid; gap: 10px; }
    .export-intent-option { display: flex; align-items: center; gap: 10px; min-height: 40px; padding: 8px 10px; border: 1px solid #e4e7ec; border-radius: 10px; color: #344054; font-size: 14px; cursor: pointer; }
    .export-intent-option:has(input:checked) { border-color: #b7a1f5; background: #f8f5ff; color: #53389e; }
    .export-intent-option input { width: 16px; height: 16px; accent-color: #7f56d9; }
    .export-modal-error { margin-top: 12px; padding: 8px 10px; border: 1px solid #f4bdb7; border-radius: 8px; background: #fff1f0; color: #b42318; font-size: 12px; font-weight: 600; }
    .export-modal-error[hidden] { display: none; }
    .export-modal-actions { display: flex; justify-content: flex-end; gap: 8px; margin-top: 18px; }
    .message-modal, .message-records-modal { position: fixed; inset: 0; z-index: 2550; display: none; align-items: center; justify-content: center; padding: 24px; background: rgba(15,23,42,.45); }
    .message-modal.show, .message-records-modal.show { display: flex; }
    .message-modal.is-minimized { display: none; }
    .message-modal[hidden], .message-records-modal[hidden] { display: none; }
    /* 打开过渡：遮罩淡入 + 面板轻微上浮。上浮必须用独立的 translate 属性而非 transform——
       私信弹窗可拖拽（applyMessageModalOffset 写 inline transform），且最小化恢复会重播动画，
       transform 关键帧会覆盖拖拽位移导致瞬移；translate 与 transform 复合计算，互不覆盖。 */
    @keyframes message-modal-fade-in { from { opacity: 0; } to { opacity: 1; } }
    @keyframes message-modal-panel-in { from { opacity: 0; translate: 0 10px; } to { opacity: 1; translate: 0 0; } }
    .message-modal.show, .message-records-modal.show, .message-template-modal.show { animation: message-modal-fade-in .16s ease-out; }
    .message-modal.show .message-modal-panel, .message-records-modal.show .message-records-panel, .message-template-modal.show .message-template-panel { animation: message-modal-panel-in .18s cubic-bezier(.2,.8,.3,1); }
    @media (prefers-reduced-motion: reduce) {
      .message-modal.show, .message-records-modal.show, .message-template-modal.show,
      .message-modal.show .message-modal-panel, .message-records-modal.show .message-records-panel, .message-template-modal.show .message-template-panel { animation: none; }
    }
    .message-modal-panel, .message-records-panel { width: min(620px, 100%); border: 1px solid #edf0f5; border-radius: 16px; background: #fff; box-shadow: 0 8px 24px rgba(15,23,42,.08), 0 28px 72px rgba(15,23,42,.2); padding: 20px; }
    .message-modal-panel { position: relative; will-change: transform; }
    .message-records-panel { width: min(1040px, 100%); }
    .message-modal-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 14px; padding-bottom: 12px; border-bottom: 1px solid #edf0f3; cursor: grab; user-select: none; }
    .message-modal-head:active, .message-modal-panel.is-dragging .message-modal-head { cursor: grabbing; }
    .message-modal-head h2 { color: #1e293b; font-size: 17px; font-weight: 700; }
    .message-modal-head-actions { display: inline-flex; align-items: center; gap: 4px; }
    .message-modal-minimize { width: 30px; height: 30px; border: 0; border-radius: 999px; background: #f2f4f7; color: #475467; font-size: 20px; line-height: 1; cursor: pointer; }
    .message-modal-minimize:hover { background: #e4e7ec; }
    .message-modal-close { width: 30px; height: 30px; border: 0; border-radius: 999px; background: #f2f4f7; color: #475467; font-size: 20px; line-height: 1; cursor: pointer; }
    .message-modal-close:hover { background: #e4e7ec; }
    .message-modal-target { color: #1e293b; font-size: 14px; font-weight: 700; }
    .message-template-field { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: 10px; margin-top: 12px; color: #475569; font-size: 12px; }
    .message-template-controls { display: flex; align-items: center; gap: 8px; min-width: 0; }
    .message-template-controls .select { min-width: 0; height: 32px; }
    .message-template-manage { height: 32px; min-height: 32px; padding: 0 10px; font-size: 12px; flex: 0 0 auto; }
    .message-draft { width: 100%; min-height: 128px; margin-top: 10px; resize: vertical; border: 1px solid #d6dce8; border-radius: 10px; padding: 10px 12px; color: #1e293b; font: inherit; line-height: 1.5; outline: none; }
    .message-draft:focus { border-color: #7f56d9; box-shadow: 0 0 0 3px rgba(127,86,217,.16); }
    .message-modal-meta { margin-top: 5px; color: #94a3b8; font-size: 11px; text-align: right; }
    .message-interval-field { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-top: 12px; color: #475569; font-size: 12px; white-space: nowrap; }
    .message-interval-field > span, .message-execution-field > span { flex: 0 0 auto; white-space: nowrap; }
    /* 与下方"执行方式"下拉（bozhi-select 包装器 width:100%）同轨道：wrap 占满文案后剩余行宽，左缘对齐、长度一致。
       必须用 ".message-interval-field >" 提特异性（0-2-1），否则被上行 ".message-interval-field > span"（0-1-1）的 flex:0 0 auto 静默压回内容宽度 */
    .message-interval-field > .message-interval-input-wrap { display: inline-flex; align-items: center; gap: 5px; flex: 1 1 auto; min-width: 0; }
    .message-interval-field .message-interval-input { flex: 1 1 auto; width: auto; min-width: 0; height: 32px !important; min-height: 32px; padding: 0 8px !important; }
    .message-interval-unit { color: #64748b; }
    .message-interval-field[hidden] { display: none; }
    .message-execution-field { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-top: 12px; color: #475569; font-size: 12px; white-space: nowrap; }
    .message-execution-field .select { width: 180px; height: 32px; }
    /* HTML 顺序是 input 在前、文案 span 在后；row-reverse 使文案居左、开关居右，与其他表单行对齐 */
    .message-simulation-field { display: flex; flex-direction: row-reverse; align-items: center; justify-content: space-between; gap: 8px; margin-top: 12px; color: #475569; font-size: 12px; white-space: nowrap; }
    .message-simulation-field input { width: 15px; height: 15px; margin: 0; accent-color: #7f56d9; }
    /* 与模拟发送行同版式（文案左、开关右）；仅批量可见，hidden 覆盖必须显式声明，否则 flex 会击穿 UA 的 [hidden] */
    .message-skip-recent-field { display: flex; flex-direction: row-reverse; align-items: center; justify-content: space-between; gap: 8px; margin-top: 12px; color: #475569; font-size: 12px; }
    .message-skip-recent-field[hidden] { display: none; }
    .message-skip-recent-field input { width: 15px; height: 15px; margin: 0; accent-color: #7f56d9; }
    /* 红字提醒只在用户取消勾选（选择继续打扰近7天已联系用户）时出现 */
    .message-skip-recent-warning { margin-top: 8px; color: #b42318; font-size: 12px; font-weight: 600; line-height: 1.5; }
    .message-skip-recent-warning[hidden] { display: none; }
    /* 页面内确认层：覆盖整个弹窗面板（含头部），逼迫用户在层内做出选择，替代原生 dialog.showMessageBox */
    .message-send-confirm { position: absolute; inset: 0; z-index: 6; display: flex; align-items: center; justify-content: center; padding: 20px; background: rgba(255, 255, 255, .72); border-radius: 16px; }
    .message-send-confirm[hidden] { display: none; }
    .message-send-confirm-card { width: min(360px, 100%); border: 1px solid #edf0f5; border-radius: 12px; background: #fff; box-shadow: 0 12px 36px rgba(15, 23, 42, .18); padding: 16px; }
    .message-send-confirm-title { color: #101828; font-size: 14px; font-weight: 600; line-height: 1.5; }
    .message-send-confirm-detail { margin-top: 8px; color: #475569; font-size: 12px; line-height: 1.6; white-space: pre-line; }
    .message-send-confirm-actions { display: flex; justify-content: flex-end; gap: 8px; margin-top: 14px; }
    .message-progress { margin-top: 12px; padding: 9px 10px; border: 1px solid #d9d6fe; border-radius: 8px; background: #f8f7ff; color: #6338c5; font-size: 12px; font-weight: 600; line-height: 1.45; }
    .message-progress[hidden] { display: none; }
    .message-progress.failed { border-color: #f4bdb7; background: #fff1f0; color: #b42318; }
    .message-progress.success { border-color: #abefc6; background: #ecfdf3; color: #027a48; }
    .message-progress.skipped { border-color: #fedf89; background: #fffbeb; color: #b54708; }
    .message-progress.cancelled { border-color: #fedf89; background: #fffbeb; color: #b54708; }
    .message-modal-error { margin-top: 12px; padding: 8px 10px; border: 1px solid #f4bdb7; border-radius: 8px; background: #fff1f0; color: #b42318; font-size: 12px; font-weight: 600; }
    .message-modal-error[hidden] { display: none; }
    .message-modal-actions { display: flex; justify-content: flex-end; gap: 8px; margin-top: 18px; }
    .message-mini-dock { position: fixed; right: 18px; bottom: 18px; z-index: 2600; width: min(330px, calc(100vw - 36px)); display: flex; align-items: center; gap: 12px; padding: 10px 12px; border: 1px solid #d9d6fe; border-radius: 12px; background: #fff; box-shadow: 0 16px 36px rgba(15,23,42,.18); }
    .message-mini-dock[hidden] { display: none; }
    .message-mini-dock-copy { display: grid; gap: 3px; min-width: 0; flex: 1 1 auto; }
    .message-mini-dock-copy strong { color: #344054; font-size: 12px; }
    .message-mini-dock-count { margin-left: 6px; color: #6941c6; font-weight: 700; }
    /* 必须用子选择器：count 嵌在 strong 内，后代选择器会把第二行详情的小字号/截断静默套到标题行进度数字上。 */
    .message-mini-dock-copy > span { color: #6941c6; font-size: 11px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    .message-mini-dock-btn { height: 28px; border: 1px solid #d9d6fe; border-radius: 8px; background: #f8f5ff; color: #6941c6; padding: 0 10px; font-size: 12px; cursor: pointer; flex: 0 0 auto; }
    .message-mini-dock-btn:hover { background: #f0e9ff; }
    /* 模板配置是叠加在私信弹窗之上的二级弹窗：遮罩更深，让下层弹窗明显退后、层级可读 */
    .message-template-modal { position: fixed; inset: 0; z-index: 2650; display: none; align-items: center; justify-content: center; padding: 24px; background: rgba(15,23,42,.6); }
    .message-template-modal.show { display: flex; }
    .message-template-modal[hidden] { display: none; }
    .message-template-panel { width: min(620px, 100%); max-height: min(720px, 92vh); overflow-y: auto; border: 1px solid #edf0f5; border-radius: 16px; background: #fff; box-shadow: 0 8px 24px rgba(15,23,42,.08), 0 28px 72px rgba(15,23,42,.2); padding: 20px; }
    /* 自定义下拉菜单挂在 body 下，必须高于模板弹窗遮罩，否则选项会被遮住而无法点击。 */
    body.ops-page.ops-high-value .bozhi-select-menu { z-index: 2700 !important; }
    .message-template-head-title { display: flex; align-items: center; gap: 8px; min-width: 0; }
    /* 二级弹窗"返回列表"按钮：ops-classic.css L235 归一化（0-22-1，border/background/radius 全 !important）
       稳赢本页任何皮肤声明，故此处不写皮肤，按钮与旁边的关闭按钮一样继承归一化外观（白底灰边），
       只覆盖归一化中无 !important 的 height/min-height 并约束尺寸。如需自定义皮肤须先把类名加进
       ops-classic.css 的 :not() 排除清单（属另一任务，勿顺手改）。 */
    body.ops-page.ops-high-value button.message-template-back { width: 26px; height: 26px !important; min-height: 26px !important; min-width: 0; padding: 0; font-size: 17px; line-height: 1; cursor: pointer; }
    body.ops-page.ops-high-value button.message-template-back[hidden] { display: none !important; }
    .message-template-manager-list { display: grid; gap: 8px; max-height: 34vh; overflow-y: auto; }
    .message-template-manager-list[hidden] { display: none; }
    .message-template-manager-empty { padding: 20px 10px; border: 1px dashed #d6dce8; border-radius: 10px; color: #98a2b3; font-size: 12px; text-align: center; }
    .message-template-item { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 10px; align-items: center; padding: 10px 12px; border: 1px solid #edf0f3; border-radius: 10px; background: #fbfcfd; }
    .message-template-item-copy { min-width: 0; display: grid; gap: 4px; }
    .message-template-item-title { color: #1e293b; font-size: 13px; font-weight: 700; }
    .message-template-item-content { color: #64748b; font-size: 12px; line-height: 1.4; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    .message-template-item-actions { display: inline-flex; gap: 6px; }
    .message-template-item-actions button { height: 28px; padding: 0 9px; border: 1px solid #d6dce8; border-radius: 7px; background: #fff; color: #475467; font-size: 11px; cursor: pointer; }
    .message-template-item-actions button:hover { border-color: #b7a1f5; color: #6941c6; background: #f8f5ff; }
    /* 编辑态与列表态互斥（JS 切换 hidden），编辑器不再与列表同屏，因此不需要顶部分隔线 */
    .message-template-editor { margin-top: 2px; }
    .message-template-editor[hidden] { display: none; }
    .message-template-editor-field { display: grid; gap: 6px; margin-top: 10px; color: #475467; font-size: 12px; font-weight: 700; }
    .message-template-editor-field[hidden] { display: none !important; }
    .message-template-editor-field .input { height: 34px; }
    .message-template-editor-field .message-draft { min-height: 110px; margin-top: 0; }
    .message-template-variable-picker { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; margin-top: 8px; color: #98a2b3; font-size: 11px; }
    body.ops-page.ops-high-value button.message-template-variable { height: 26px !important; min-height: 26px !important; min-width: 0 !important; padding: 0 9px !important; border: 1px solid #d9d6fe !important; border-radius: 999px !important; background: #f8f5ff !important; color: #6941c6 !important; font-size: 11px !important; font-weight: 400 !important; cursor: pointer !important; }
    body.ops-page.ops-high-value button.message-template-variable:hover { border-color: #b7a1f5 !important; background: #f0e9ff !important; color: #6941c6 !important; }
    .message-template-variable:focus-visible { outline: 2px solid rgba(127,86,217,.28); outline-offset: 2px; }
    .message-template-editor-actions { display: flex; justify-content: flex-end; gap: 8px; margin-top: 12px; }
    .message-template-editor-actions .btn, .message-template-add { height: 32px; min-height: 32px; padding: 0 10px; font-size: 12px; }
    .message-template-add { width: 100%; margin-top: 12px; border-style: dashed; }
    /* .btn 的 display 被 ops-classic.css 规整化锁定为 !important，[hidden] 必须同特异性覆盖才能隐藏 */
    body.ops-page.ops-high-value .message-template-add[hidden] { display: none !important; }
    .message-test-users { margin-top: 14px; padding-top: 14px; border-top: 1px solid #edf0f3; }
    .message-test-users[hidden] { display: none; }
    .message-test-users-head, .message-template-test-section-title { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
    .message-test-users-head > div { display: inline-flex; align-items: center; gap: 7px; }
    .message-test-users-head strong { color: #1e293b; font-size: 13px; }
    .message-test-users-head span { padding: 2px 6px; border-radius: 999px; background: #f2f4f7; color: #667085; font-size: 10px; }
    .message-test-users-head small, .message-template-test-section-title small { color: #98a2b3; font-size: 11px; }
    .message-test-users-list { display: grid; gap: 6px; max-height: 220px; margin-top: 9px; overflow-y: auto; }
    .message-test-users-empty { padding: 12px; border: 1px dashed #d6dce8; border-radius: 9px; color: #98a2b3; font-size: 11px; text-align: center; }
    /* 整行即选择开关（role=checkbox），选中态驱动"测试"默认收件人；移除按钮在行内止冒泡。 */
    .message-test-user-row { display: grid; grid-template-columns: 16px 32px minmax(0, 1fr) auto; gap: 9px; align-items: center; padding: 7px 9px; border: 1px solid #edf0f3; border-radius: 9px; background: #fbfcfd; cursor: pointer; }
    .message-test-user-row:hover { border-color: #d9d6fe; }
    .message-test-user-row:focus-visible { outline: 2px solid rgba(127,86,217,.28); outline-offset: 1px; }
    .message-test-user-row.is-selected { border-color: #b7a1f5; background: #faf8ff; }
    .message-test-user-check { position: relative; width: 16px; height: 16px; box-sizing: border-box; border: 1.5px solid #d0d5dd; border-radius: 50%; background: #fff; }
    .message-test-user-row.is-selected .message-test-user-check { border-color: #7f56d9; background: #7f56d9; }
    .message-test-user-row.is-selected .message-test-user-check::after { content: "✓"; position: absolute; inset: 0; color: #fff; font-size: 10px; line-height: 13px; text-align: center; }
    .message-test-user-avatar { width: 32px; height: 32px; border-radius: 50%; object-fit: cover; }
    .message-test-user-avatar.is-empty { display: inline-flex; align-items: center; justify-content: center; background: #f0e9ff; color: #6941c6; font-size: 11px; }
    .message-test-user-copy { min-width: 0; display: grid; gap: 1px; }
    .message-test-user-copy strong { color: #344054; font-size: 12px; }
    .message-test-user-copy small { overflow: hidden; color: #98a2b3; font-size: 10px; text-overflow: ellipsis; white-space: nowrap; }
    /* 昵称链接承接全局 a 染紫（body.ops-page a !important），与发送记录的主页链接保持一致 */
    .message-test-user-name { min-width: 0; overflow: hidden; font-size: 12px; font-weight: 700; text-decoration: none; text-overflow: ellipsis; white-space: nowrap; }
    .message-test-user-name:hover { text-decoration: underline; text-underline-offset: 2px; }
    /* 应用内确认框（z-index 2300）默认会被模板/测试弹窗（2650/2750）盖住，本页移除确认需要置顶 */
    body.ops-page.ops-high-value .app-alert-overlay { z-index: 2900; }
    body.ops-page.ops-high-value button.message-test-user-remove { height: 26px !important; min-height: 26px !important; min-width: 0 !important; padding: 0 8px !important; border: 1px solid #d6dce8 !important; border-radius: 7px !important; background: #fff !important; color: #667085 !important; font-size: 10px !important; font-weight: 400 !important; }
    body.ops-page.ops-high-value button.message-test-user-remove:hover { border-color: #fecdca !important; background: #fff5f4 !important; color: #b42318 !important; }
    /* 输入框与按钮直接并列，避免外层灰色容器再套一层边框；按钮尺寸必须带 !important 才能赢过 ops-classic 的 .btn 规整化。 */
    .message-test-users-add { display: flex; align-items: center; gap: 8px; margin-top: 10px; padding: 0; border: 0; background: transparent; }
    .message-test-users-add-input { flex: 1 1 auto; min-width: 0; height: 38px; max-height: 72px; box-sizing: border-box; border: 1px solid #d0d5dd !important; border-radius: 8px !important; padding: 8px 12px; background: #fff !important; color: #344054 !important; font: inherit; font-size: 12px; line-height: 1.4; outline: none; resize: none; }
    .message-test-users-add-input:focus { border-color: #7f56d9 !important; box-shadow: 0 0 0 3px rgba(127,86,217,.12) !important; }
    .message-test-users-add-input::placeholder { color: #98a2b3; }
    body.ops-page.ops-high-value .message-test-users-add .btn { flex: 0 0 auto; height: 30px !important; min-height: 30px !important; min-width: 0 !important; padding: 0 12px !important; font-size: 11px !important; }
    .message-test-users-hint { margin: 7px 0 0; color: #98a2b3; font-size: 11px; line-height: 1.5; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
    .message-test-users-error { margin-top: 8px; font-weight: 400; white-space: pre-line; }
    .message-template-test-modal { position: fixed; inset: 0; z-index: 2750; display: none; align-items: center; justify-content: center; padding: 24px; background: rgba(15,23,42,.62); }
    .message-template-test-modal.show { display: flex; }
    .message-template-test-modal[hidden] { display: none; }
    .message-template-test-panel { position: relative; width: min(620px, 100%); max-height: min(720px, 92vh); overflow-y: auto; border: 1px solid #edf0f5; border-radius: 16px; background: #fff; box-shadow: 0 28px 72px rgba(15,23,42,.24); padding: 20px; }
    .message-template-test-template { margin-top: 3px; color: #7f56d9; font-size: 11px; }
    .message-template-test-section-title { margin-top: 2px; color: #475467; font-size: 12px; font-weight: 700; }
    .message-template-test-user-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 7px; max-height: 190px; margin-top: 8px; overflow-y: auto; }
    .message-template-test-user-option { display: grid; grid-template-columns: 15px 30px minmax(0, 1fr); gap: 7px; align-items: center; padding: 7px; border: 1px solid #edf0f3; border-radius: 9px; cursor: pointer; }
    .message-template-test-user-option:has(input:checked) { border-color: #b7a1f5; background: #faf8ff; }
    .message-template-test-user-option input { width: 15px; height: 15px; margin: 0; accent-color: #7f56d9; }
    .message-template-test-user-option .message-test-user-avatar { width: 30px; height: 30px; }
    .message-template-test-user-option > span:last-child { min-width: 0; display: grid; gap: 2px; }
    .message-template-test-user-option strong, .message-template-test-user-option small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    .message-template-test-user-option strong { color: #344054; font-size: 11px; }
    .message-template-test-user-option small { color: #98a2b3; font-size: 9px; }
    .message-template-test-users-empty { grid-column: 1 / -1; padding: 12px; border: 1px dashed #d6dce8; border-radius: 9px; color: #98a2b3; font-size: 11px; text-align: center; }
    .message-template-test-preview-label { margin-top: 10px; color: #475467; font-size: 11px; font-weight: 700; }
    .message-template-test-preview { max-height: 112px; margin-top: 5px; overflow-y: auto; border: 1px solid #edf0f3; border-radius: 9px; padding: 9px 10px; background: #f8fafc; color: #475569; font-size: 12px; line-height: 1.5; white-space: pre-wrap; }
    .message-template-test-missing-variable { color: #d92d20; font-weight: 700; }
    .message-template-test-field-missing { color: #b42318; }
    .message-template-test-field-missing input { border-color: #f04438 !important; box-shadow: 0 0 0 3px rgba(240, 68, 56, .1) !important; }
    .message-template-test-real-warning { margin-top: 9px; color: #b42318; font-size: 11px; font-weight: 600; line-height: 1.45; }
    .message-template-test-real-warning[hidden] { display: none; }
    .message-test-dock { position: fixed; right: 18px; bottom: 18px; z-index: 2800; width: min(360px, calc(100vw - 36px)); display: flex; align-items: center; gap: 10px; padding: 10px 12px; border: 1px solid #d9d6fe; border-radius: 12px; background: #fff; box-shadow: 0 16px 36px rgba(15,23,42,.18); color: #6941c6; font-size: 11px; }
    .message-test-dock[hidden] { display: none; }
    .message-test-dock span { min-width: 0; flex: 1 1 auto; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    .message-test-dock button { height: 27px; border: 1px solid #d9d6fe; border-radius: 7px; background: #f8f5ff; color: #6941c6; padding: 0 9px; font-size: 11px; cursor: pointer; }
    @media (max-width: 680px) {
      .message-template-test-user-list { grid-template-columns: 1fr; }
    }
    .message-records-filters { display: flex; gap: 10px; align-items: center; margin-top: 14px; }
    /* 弹窗筛选行复用页面 .select/.date-range-field 控件规范；下拉固定宽度，日期框不拉伸 */
    .message-records-filters .select { width: 128px; flex: 0 0 auto; }
    .message-records-total { margin-left: auto; color: #64748b; font-size: 12px; white-space: nowrap; }
    .message-records-filter-error { margin-top: 10px; }
    .message-records-pager { display: flex; justify-content: center; align-items: center; gap: 12px; margin-top: 12px; }
    /* .btn 规整化锁定 display 为 !important，[hidden] 必须同特异性覆盖才能隐藏（同 message-template-add） */
    body.ops-page.ops-high-value .message-records-pager[hidden] { display: none !important; }
    .message-records-page-info { color: #475467; font-size: 12px; white-space: nowrap; }
    .message-records-list { margin-top: 14px; }
    .message-records-table-wrap { max-height: 54vh; overflow: auto; border: 1px solid #edf0f3; border-radius: 10px; }
    /* min-width 800：发送时间精确到秒后列宽加到 116px，六列合计同步抬高，保证消息内容列不被挤压 */
    .message-records-table { width: 100%; min-width: 800px; border-collapse: collapse; table-layout: fixed; color: #475569; font-size: 12px; line-height: 1.45; }
    .message-records-table th { position: sticky; top: 0; z-index: 1; padding: 10px; border-bottom: 1px solid #e4e7ec; background: #f8fafc; color: #475467; font-size: 11px; font-weight: 700; text-align: left; white-space: nowrap; }
    .message-records-table td { padding: 10px; border-bottom: 1px solid #edf0f3; vertical-align: top; }
    .message-records-table tbody tr:last-child td { border-bottom: 0; }
    .message-records-table th:nth-child(1), .message-records-table td:nth-child(1) { width: 82px; }
    .message-records-table th:nth-child(2), .message-records-table td:nth-child(2), .message-records-table th:nth-child(3), .message-records-table td:nth-child(3) { width: 108px; }
    .message-records-table th:nth-child(5), .message-records-table td:nth-child(5) { width: 116px; white-space: nowrap; }
    .message-records-table th:nth-child(6), .message-records-table td:nth-child(6) { width: 150px; }
    .message-record-profile { color: #6941c6; text-decoration: none; }
    .message-record-profile:hover { text-decoration: underline; text-underline-offset: 2px; }
    .message-record-status { font-size: 12px; font-weight: 700; }
    .message-record-status.success { color: #027a48; }
    .message-record-status.failed { color: #b42318; }
    .message-record-status.skipped { color: #b54708; }
    .message-record-status.cancelled { color: #b54708; }
    .message-record-body { min-width: 230px; color: #475569; white-space: pre-wrap; word-break: break-word; }
    .message-record-error { display: flex; flex-direction: column; gap: 2px; color: #b42318; font-size: 11px; line-height: 1.4; word-break: break-word; }
    .message-record-error-type { width: fit-content; padding: 1px 6px; border-radius: 999px; background: #fff1f0; color: #b42318; font-size: 10px; font-weight: 700; line-height: 1.5; }
    .message-record-error-detail { color: #b42318; }
    .message-record-time { color: #94a3b8; font-size: 11px; }
    .message-batch-toolbar { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin: 14px 0; padding: 12px 14px; border: 1px solid #e4e7ec; border-radius: 12px; background: #fff; }
    .message-select-all { display: inline-flex; align-items: center; gap: 7px; color: #344054; font-size: 13px; font-weight: 700; white-space: nowrap; }
    .message-select-all input { width: 15px; height: 15px; accent-color: #7f56d9; }
    .message-selection-count { color: #7f56d9; font-size: 12px; font-weight: 700; white-space: nowrap; }
    .message-batch-hint { flex: 1 1 300px; color: #64748b; font-size: 12px; line-height: 1.45; }
    .message-client-guide { flex: 1 1 300px; color: #7f56d9; font-size: 12px; line-height: 1.45; }
    body.ops-page.ops-high-value[data-bozhi-runtime="browser"] #messageBatchBtn:disabled {
      border-color: #d0d5dd !important;
      background: #f2f4f7 !important;
      color: #98a2b3 !important;
      box-shadow: none !important;
      opacity: 1 !important;
      cursor: not-allowed !important;
    }
    .message-batch-toolbar .btn { min-height: 32px; padding: 0 10px; font-size: 12px; }
    .empty { padding: 54px 20px; color: #94a3b8; text-align: center; }
    .pagination { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 14px 18px; border-top: 1px solid #eaecf0; flex-wrap: wrap; }
    .page-actions { display: flex; gap: 8px; align-items: center; }
    .page-text { color: #64748b; font-size: 13px; }
    .loading { opacity: .62; pointer-events: none; }
    @media (max-width: 1360px) {
      .toolbar { grid-template-columns: repeat(2, minmax(0, 1fr)); }
      .stats-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
      .lead-table-head { display: none; }
      .user-row { grid-template-columns: minmax(160px, .72fr) minmax(270px, 1.1fr) minmax(270px, 1fr) 120px; }
      .score-text { text-align: left; }
      .score-box { display: none; }
      .user-inline-score { display: inline-flex; align-items: center; gap: 6px; margin-top: 8px; }
      .user-inline-score .score-value { min-width: 42px; height: 28px; border-radius: 999px; font-size: 13px; }
      .user-inline-score .score-label { font-size: 12px; text-align: left; }
    }
    @media (max-width: 1120px) {
      .user-row { grid-template-columns: 1fr; }
      .lead-product { grid-template-columns: 96px minmax(0, 1fr); }
    }
    @media (max-width: 680px) {
      .container { padding: 18px 16px 34px; }
      .page-head { flex-direction: column; align-items: stretch; }
      .toolbar, .stats-grid, .metric-grid { grid-template-columns: 1fr; }
      .lead-product { grid-template-columns: 88px minmax(0, 1fr); }
      .lead-cover, .lead-cover-button { width: 88px; height: 88px; }
    }
