
        :root {
            --mac-bg: #f5f5f7;
            --mac-window: #ffffff;
            --mac-text: #1d1d1f;
            --mac-text-secondary: #6e6e73;
            --mac-separator: rgba(0, 0, 0, 0.08);
            --mac-accent: #0a84ff;
            --mac-accent-hover: #007aff;
            --mac-accent-press: #0066cc;
            --mac-green: #34c759;
            --mac-green-hover: #2db14d;
            --mac-red: #ff3b30;
            --mac-red-hover: #e0352b;
            --mac-orange: #ff9f0a;
            --mac-yellow: #ffcc00;
            --mac-gray: #8e8e93;
            --mac-gray-bg: #e8e8ed;
            --mac-radius-xs: 6px;
            --mac-radius-sm: 8px;
            --mac-radius: 12px;
            --mac-radius-lg: 18px;
            --mac-shadow: 0 12px 40px rgba(0, 0, 0, 0.16);
            --mac-shadow-sm: 0 2px 10px rgba(0, 0, 0, 0.08);
            --mac-glass: rgba(255, 255, 255, 0.72);
            --mac-glass-strong: rgba(255, 255, 255, 0.86);
            --mac-glass-border: rgba(255, 255, 255, 0.6);
            --mac-font: -apple-system, BlinkMacSystemFont, "SF Pro Text", "SF Pro Display", "Helvetica Neue", "PingFang SC", "Microsoft YaHei", sans-serif;
        }
        * {
            box-sizing: border-box;
            margin: 0;
            padding: 0;
            font-family: var(--mac-font);
            -webkit-font-smoothing: antialiased;
            -moz-osx-font-smoothing: grayscale;
            text-rendering: optimizeLegibility;
        }
        body {
            background-color: var(--mac-bg);
            color: var(--mac-text);
            line-height: 1.5;
            height: 100vh;
            overflow: hidden;
            font-size: 14px;
        }
        /* 移除原顶部header样式，转移至.order-header */
        .main-header {
            display: none;
        }
        .tabs {
            display: flex;
            gap: 0;
            height: 100%;
            align-items: stretch;
        }
        .tab-btn {
            padding: 0 20px;
            border: none;
            background: transparent;
            cursor: pointer;
            font-size: 1rem;
            font-weight: bold;
            color: #666;
            border-bottom: 3px solid transparent;
            transition: all 0.2s;
            height: 100%;
            display: flex;
            align-items: center;
        }
        .tab-btn:hover {
            color: #333;
            background: #f5f5f5;
        }
        .tab-btn.active {
            color: #1792ff;
            border-bottom-color: #1792ff;
            background: #f0f7ff;
        }
        /* 覆盖.order-header内的按钮样式 */
        .order-header .tab-btn {
            color: rgba(255,255,255,0.8);
            border-bottom: 2px solid transparent;
            padding: 2px 12px;
            height: auto;
            font-size: 0.9rem;
            background: transparent;
        }
        .order-header .tab-btn.active {
            color: #fff;
            border-bottom-color: #fff;
            background: rgba(255,255,255,0.15);
        }
        .order-header .tab-btn:hover {
            background: rgba(255,255,255,0.1);
            color: #fff;
        }
        #targetTabHint {
            font-size: 0.9rem;
            color: red;
            font-weight: bold;
            padding: 4px 8px;
            background: #fff0f0;
            border-bottom: 1px solid #ffcccc;
            display: none;
        }
        .connection-status,
        .winning-number-input-area,
        .statistics-title,
        .total-bet-display,
        .recognize-title,
        .recognize-table,
        .result-item,
        .action-footer,
        .non-special-notes,
        .confirmed-header,
        .user-group-header,
        .order-record,
        .modal-content,
        .config-btn,
        .add-customer-btn,
        .manage-customer-btn,
        .rebate-setting,
        .recognize-btn,
        .btn,
        .add-note-btn,
        .export-btn,
        .statistics-container,
        .statistics-item,
        .profit-detail,
        .user-profit,
        .order-details,
        .non-special-note-display {
            font-size: 0.95rem;
        }
        .statistics-header,
        .statistics-item .stat-label,
        .profit-detail,
        .order-time,
        .order-id {
            font-size: 0.85rem;
        }
        .editor-header,
        .results-header {
            font-size: 0.9rem;
        }
        .editor-textarea {
            font-size: 14px;
        }

        .app-container {
            display: flex;
            height: 100vh;
            width: 100%;
        }
        .main-content {
            flex: 1;
            display: flex;
            flex-direction: column;
            overflow: hidden;
            min-width: 0;
        }

        .order-entry-container {
            flex: 1;
            display: flex;
            overflow: hidden;
            min-height: 0;
            gap: 0;
        }
        .order-main {
            width: 800px;
            display: flex;
            flex-direction: column;
            overflow: hidden;
            flex-shrink: 0;
        }
        .order-header {
            background: linear-gradient(135deg, #6a11cb 0%, #2575fc 100%);
            padding: 4px 12px;
            color: white;
            flex-shrink: 0;
            display: flex;
            align-items: center;
            gap: 10px;
            min-height: 32px;
        }
        .order-header .tab-label {
            font-weight: bold;
            font-size: 0.85rem;
            color: rgba(255,255,255,0.9);
            margin-right: 4px;
        }
        .lottery-results {
            width: 350px;
            background: white;
            border-left: 1px solid #ddd;
            padding: 12px;
            display: flex;
            flex-direction: column;
            flex-shrink: 0;
            overflow-y: auto;
        }
        .results-header {
            display: flex;
            align-items: center;
            margin-bottom: 12px;
        }
        .play-sort-icon {
            width: 30px;
            height: 30px;
            background: #1792ff;
            border-radius: 50%;
            margin-right: 10px;
        }
        .winning-number-input-area {
            margin-bottom: 12px;
            padding: 10px;
            background: #f8f9fa;
            border-radius: 6px;
            border: 1px solid #dee2e6;
        }
        .winning-number-input-area h4 {
            margin-bottom: 6px;
            font-size: 0.85rem;
            color: #495057;
        }
        .winning-input-row {
            display: flex;
            gap: 6px;
            margin-bottom: 6px;
            flex-wrap: wrap;
            justify-content: center;
        }
        .winning-input-row .pingma-row {
            display: flex;
            gap: 6px;
            flex-wrap: wrap;
            justify-content: center;
            width: 100%;
        }
        .winning-input-row .tema-row {
            display: flex;
            gap: 6px;
            justify-content: center;
            width: 100%;
            margin-top: 4px;
        }
        .winning-input {
            flex: 1;
            padding: 4px 8px;
            border: 1px solid #ced4da;
            border-radius: 4px;
            font-size: 12px;
            font-family: monospace;
        }
        .winning-number-part {
            width: 50px;
            text-align: center;
            -moz-appearance: textfield;
            appearance: textfield;
        }
        .winning-number-part::-webkit-outer-spin-button,
        .winning-number-part::-webkit-inner-spin-button {
            -webkit-appearance: none;
            margin: 0;
        }
        .winning-number-details {
            display: flex;
            flex-wrap: wrap;
            gap: 4px;
            margin: 6px 0;
        }
        .winning-number-chip {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            border: 1px solid #ccc;
            border-radius: 12px;
            padding: 4px 8px;
            font-size: 0.78rem;
            background: #fff;
            gap: 6px;
        }
        .winning-number-chip small {
            font-size: 0.7rem;
            color: #666;
            margin-left: 4px;
        }
        /* 按钮行样式 */
        .winning-action-row {
            display: flex;
            gap: 4px;
            margin-bottom: 6px;
        }
        .winning-action-row .btn-action {
            flex: 1;
            padding: 3px 0;
            font-size: 0.7rem;
            border: none;
            border-radius: 4px;
            cursor: pointer;
            font-weight: bold;
            text-align: center;
        }
        .btn-action.confirm-winning {
            background: #28a745;
            color: white;
        }
        .btn-action.clear-winning {
            background: #dc3545;
            color: white;
        }
        .btn-action.refund {
            background: #007bff;
            color: white;
        }
        .btn-action:hover {
            opacity: 0.85;
        }
        .current-winning-display {
            margin-top: 6px;
            padding: 5px;
            background: #e9ecef;
            border-radius: 4px;
            font-size: 0.8em;
            text-align: center;
        }
        .current-winning-numbers {
            font-weight: bold;
            color: #1792ff;
            margin-top: 2px;
        }
        .statistics-section {
            margin-top: 12px;
            background: white;
            border-radius: 6px;
            border: 1px solid #ddd;
            overflow: hidden;
            flex: 1;
            display: flex;
            flex-direction: column;
            min-height: 0;
        }
        .statistics-title {
            padding: 6px 10px;
            background: #f5f5f5;
            font-weight: bold;
            border-bottom: 1px solid #ddd;
            display: flex;
            flex-direction: column;
            flex-shrink: 0;
            font-size: 0.85rem;
            gap: 4px;
        }
        .statistics-title .title-row {
            display: flex;
            justify-content: space-between;
            align-items: center;
            flex-wrap: wrap;
            gap: 6px;
        }
        .statistics-title .stats-row {
            display: flex;
            justify-content: space-between;
            align-items: center;
            flex-wrap: wrap;
            gap: 6px;
        }
        .statistics-title select {
            padding: 2px 6px;
            font-size: 0.8rem;
            border-radius: 4px;
            border: 1px solid #ccc;
        }
        .total-bet-display {
            background: #f8f9fa;
            padding: 5px 10px;
            font-weight: bold;
            display: flex;
            justify-content: space-between;
            border-bottom: 1px solid #eee;
            flex-shrink: 0;
            font-size: 0.8rem;
            flex-wrap: wrap;
            gap: 8px;
        }
        .total-bet-amount {
            color: #e74c3c;
        }
        .odds-disclaimer {
            flex: 1;
            text-align: center;
            color: #e74c3c;
            font-weight: 600;
            font-size: 0.72rem;
            white-space: nowrap;
        }
        .statistics-container {
            flex: 1;
            overflow-y: auto;
            padding: 5px;
            min-height: 0;
        }
        .statistics-header {
            display: flex;
            margin-bottom: 4px;
            padding-bottom: 3px;
            border-bottom: 1px solid #eee;
            font-weight: bold;
            font-size: 0.7rem;
            background: #e9ecef;
            text-align: center;
            justify-content: center;
        }
        .statistics-header div {
            text-align: center;
        }
        .statistics-item {
            display: flex;
            padding: 3px 0;
            border-bottom: 1px solid #f5f5f5;
            align-items: center;
            font-size: 0.7rem;
            cursor: pointer;
            text-align: center;
        }
        .statistics-item:hover {
            background: #f0f7ff;
        }
        .stat-label {
            width: 80px;
            display: flex;
            align-items: center;
            gap: 4px;
            justify-content: center;
        }
        .stat-number {
            width: 20px;
            height: 20px;
            border-radius: 50%;
            display: flex;
            align-items: center;
            justify-content: center;
            color: white;
            font-weight: bold;
            margin-right: 2px;
            font-size: 0.6rem;
        }
        .stat-index {
            width: 24px;
            text-align: center;
            font-size: 0.85rem;
            font-weight: bold;
            color: #000;
        }
        .stat-amount,
        .stat-profit {
            flex: 1;
            text-align: center;
        }
        .stat-profit.positive {
            color: #f56c6c;
            font-weight: bold;
        }
        .stat-profit.negative {
            color: #67c23a;
            font-weight: bold;
        }

        .group-stat-table {
            width: 100%;
            border-collapse: collapse;
            font-size: 0.8rem;
            cursor: default;
            text-align: center;
        }
        .group-stat-table th {
            background: #e9ecef;
            padding: 4px 6px;
            border: 1px solid #ddd;
            text-align: center;
        }
        .group-stat-table td {
            padding: 4px 6px;
            border: 1px solid #ddd;
            text-align: center;
        }
        .group-stat-table .left {
            text-align: left;
            padding-left: 10px;
        }
        .group-stat-table .profit-positive {
            color: #f56c6c;
        }
        .group-stat-table .profit-negative {
            color: #67c23a;
        }
        .group-stat-table tr.clickable {
            cursor: pointer;
        }
        .group-stat-table tr.clickable:hover {
            background: #f0f7ff;
        }

        .summary-preview {
            margin-bottom: 8px;
            background: #f8f9fa;
            border-radius: 4px;
            padding: 4px 8px;
            font-size: 0.8rem;
        }
        .summary-preview table {
            width: 100%;
            border-collapse: collapse;
            text-align: center;
        }
        .summary-preview td {
            padding: 2px 8px;
            border-bottom: 1px solid #eee;
            text-align: center;
        }
        .summary-preview .group-name {
            font-weight: bold;
            width: 80px;
        }
        .summary-preview .num {
            text-align: center;
            padding-right: 12px;
        }
        .summary-preview .total-profit {
            font-weight: bold;
        }
        .summary-preview .total-profit.positive {
            color: #f56c6c;
        }
        .summary-preview .total-profit.negative {
            color: #67c23a;
        }
        .summary-preview .header-row {
            background: #e9ecef;
        }

        .statistics-item.highlight-special {
            background: #f8d7da !important;
        }

        .order-content {
            flex: 1;
            display: flex;
            flex-direction: column;
            overflow: auto;
            min-height: 0;
        }
        .recognize-order-info {
            background: white;
            margin: 15px 20px 10px 20px;
            padding: 12px;
            border-radius: 6px;
            border: 1px solid #ddd;
            flex-shrink: 0;
        }
        .recognize-title {
            font-weight: bold;
            margin-bottom: 8px;
        }
        .recognize-table {
            width: 100%;
            border-collapse: collapse;
        }
        .recognize-table th {
            background: #f5f5f5;
            padding: 8px;
            text-align: left;
            border-bottom: 1px solid #ddd;
        }
        .recognize-table td {
            padding: 8px;
            border-bottom: 1px solid #eee;
        }
        .empty-table {
            text-align: center;
            padding: 20px;
            color: #999;
        }
        .recognize-order-footer {
            margin: 0 20px 20px;
            background: white;
            border-radius: 6px;
            border: 1px solid #ddd;
            overflow: hidden;
            display: flex;
            flex-direction: column;
            flex-shrink: 0;
        }
        .recognize-header {
            padding: 12px;
            border-bottom: 1px solid #eee;
            display: flex;
            align-items: center;
            justify-content: space-between;
            flex-wrap: wrap;
            gap: 10px;
        }
        .customer-management {
            display: flex;
            align-items: center;
            gap: 8px;
            flex-wrap: wrap;
        }
        .user-select label {
            margin-right: 6px;
            white-space: nowrap;
        }
        .user-select select,
        .user-select input {
            padding: 5px 10px;
            border: 1px solid #ddd;
            border-radius: 4px;
        }
        .add-customer-btn,
        .manage-customer-btn {
            padding: 5px 10px;
            background: #17a2b8;
            color: white;
            border: none;
            border-radius: 4px;
            cursor: pointer;
        }
        .manage-customer-btn {
            background: #ffc107;
            color: #212529;
        }
        .config-buttons {
            display: flex;
            gap: 6px;
            margin-left: auto;
        }
        .config-btn {
            padding: 4px 8px;
            background: #6c757d;
            color: white;
            border: none;
            border-radius: 4px;
            cursor: pointer;
            font-size: 0.7rem;
        }
        .rebate-setting {
            display: flex;
            align-items: center;
            gap: 4px;
        }
        .rebate-input {
            width: 55px;
            padding: 5px;
        }
        .recognize-btn {
            background: #67c23a;
            color: white;
            border: none;
            padding: 6px 16px;
            border-radius: 4px;
            font-weight: bold;
        }
        .editor-results-container {
            display: flex;
            padding: 10px 12px 12px 12px;
            height: 222px;
            gap: 12px;
        }
        .editor-container,
        .results-container {
            flex: 1;
            border: 1px solid #ddd;
            border-radius: 4px;
            display: flex;
            flex-direction: column;
            overflow: hidden;
        }
        .editor-header,
        .results-header {
            background: #f5f5f5;
            padding: 3px 10px;
            border-bottom: 1px solid #ddd;
            line-height: 1.2;
        }
        .editor-content {
            flex: 1;
            padding: 8px;
        }
        .editor-textarea {
            width: 100%;
            height: 100%;
            border: none;
            resize: none;
            font-family: monospace;
            font-size: 14px;
            padding-left: 6px;
            box-sizing: border-box;
            line-height: 1.4;
        }
        .editor-textarea:focus {
            outline: 2px solid #4caf50;
            outline-offset: -1px;
        }
        .results-content {
            flex: 1;
            overflow-y: auto;
            padding: 8px;
        }
        .result-item {
            padding: 8px;
            background: #f9f9f9;
            margin-bottom: 6px;
            border-radius: 4px;
        }
        .result-main {
            display: flex;
            justify-content: space-between;
            align-items: flex-start;
            gap: 8px;
        }
        .result-details {
            flex: 1;
        }
        .result-actions {
            flex-shrink: 0;
            display: flex;
            gap: 4px;
            align-items: center;
        }
        .result-actions button {
            padding: 2px 6px;
            font-size: 0.7rem;
            white-space: nowrap;
        }
        /* 单注条目增强：状态徽标 + 点击查看详情 */
        .result-item {
            position: relative;
            cursor: pointer;
            transition: box-shadow 0.15s ease, background 0.15s ease;
        }
        .result-item:hover {
            box-shadow: 0 1px 6px rgba(0, 0, 0, 0.12);
        }
        .result-item .result-actions button {
            cursor: pointer;
        }
        .item-parse-status {
            display: inline-flex;
            align-items: center;
            gap: 4px;
            font-size: 0.7rem;
            padding: 1px 7px;
            border-radius: 10px;
            margin-bottom: 4px;
        }
        .item-parse-status.item-parse-success {
            color: #1a7f37;
            background: #dafbe1;
            border: 1px solid #aceebb;
        }
        .item-parse-status.item-parse-failed {
            color: #b42318;
            background: #ffebe9;
            border: 1px solid #ffc1bb;
        }
        .item-parse-status.item-parse-parsing {
            color: #0550ae;
            background: #ddf4ff;
            border: 1px solid #b6e3ff;
        }
        .item-parse-status .item-parse-icon {
            display: inline-block;
            width: 9px;
            height: 9px;
        }
        .item-parse-status.item-parse-parsing .item-parse-icon {
            border: 1.5px solid #0550ae;
            border-top-color: transparent;
            border-radius: 50%;
            animation: wmy-spin 0.8s linear infinite;
        }
        @keyframes wmy-spin {
            to { transform: rotate(360deg); }
        }
        /* 号码球：纯色波色（红/绿/蓝），无渐变/立体；球内仅号码，生肖标注在右侧 */
        .num-ball {
            display: inline-flex; align-items: center; justify-content: center;
            width: 26px; height: 26px; border-radius: 50%; margin: 1px 3px 1px 1px;
            color: #fff; font-weight: 700; font-size: 0.72rem; vertical-align: middle;
            line-height: 1;
        }
        .num-ball.red { background: #e53935; }
        .num-ball.green { background: #2e9e4f; }
        .num-ball.blue { background: #2f6fe0; }
        .num-ball.plain { background: #8a8f99; }
        .num-ball.zodiac { background: #2f6fe0; color: #fff; }
        /* 球体右侧的生肖/对应数字标注 */
        .nb-side {
            font-style: normal; font-size: 0.66rem; color: #555;
            margin-right: 5px; vertical-align: middle; white-space: nowrap;
        }
        /* 解析中状态条（识别按钮下方） */
        .parse-status-bar {
            display: flex;
            align-items: center;
            gap: 8px;
            padding: 8px 14px;
            margin: 0 16px 8px 16px;
            background: #ddf4ff;
            border: 1px solid #b6e3ff;
            border-radius: 6px;
            color: #0550ae;
            font-size: 0.8rem;
        }
        .parse-status-bar .parse-spinner {
            width: 14px;
            height: 14px;
            border: 2px solid #0550ae;
            border-top-color: transparent;
            border-radius: 50%;
            animation: wmy-spin 0.8s linear infinite;
            flex-shrink: 0;
        }
        /* 连接心跳状态（暂停同步按钮右侧，常驻显示，类似「解析中」效果） */
        .wmylhc-heartbeat-pill {
            display: inline-flex;
            align-items: center;
            gap: 5px;
            padding: 2px 9px;
            border-radius: 12px;
            background: #e6f7ed;
            border: 1px solid #9fe0b8;
            color: #1a9e4b;
            font-size: 0.68rem;
            line-height: 1.2;
            white-space: nowrap;
        }
        .wmylhc-heartbeat-pill .wmylhc-heartbeat-spinner {
            width: 10px;
            height: 10px;
            border: 2px solid #1a9e4b;
            border-top-color: transparent;
            border-radius: 50%;
            animation: wmy-spin 2s linear infinite;
            flex-shrink: 0;
        }
        /* 心跳失联：避免一直显示「正常」误导 */
        .wmylhc-heartbeat-pill.stale {
            background: #fdecea;
            border-color: #f3b5ae;
            color: #d9534f;
        }
        .wmylhc-heartbeat-pill.stale .wmylhc-heartbeat-spinner {
            border-color: #d9534f;
            animation: none;
        }
        /* 重新解析 / 插入新投注弹窗 */
        .reparse-modal-content {
            width: 520px;
            max-width: 92vw;
        }
        .reparse-origin-label {
            font-size: 0.8rem;
            color: #666;
            margin-bottom: 4px;
        }
        .reparse-input {
            width: 100%;
            box-sizing: border-box;
            padding: 8px 10px;
            border: 1px solid #ccc;
            border-radius: 4px;
            font-size: 0.85rem;
            font-family: inherit;
            resize: vertical;
            background: #fff;
            color: #222;
        }
        .reparse-input:focus {
            outline: none;
            border-color: #4a90d9;
            box-shadow: 0 0 0 2px rgba(74, 144, 217, 0.2);
        }
        .reparse-hint {
            margin-top: 6px;
            font-size: 0.72rem;
            color: #999;
        }
        .mac-btn-gray {
            padding: 5px 14px;
            border-radius: 4px;
            border: 1px solid #ccc;
            background: #f0f0f0;
            color: #333;
            cursor: pointer;
            font-size: 0.8rem;
        }
        .mac-btn-gray:hover { background: #e4e4e4; }
        /* 已确认订单明细摘要表格 */
        .confirmed-orders-scroll {
            max-height: 460px;
            overflow-x: hidden;
            overflow-y: auto;
            border: 1px solid #e2e2e2;
            border-radius: 4px;
            background: #fff;
        }
        .confirmed-detail-table {
            width: 100%;
            border-collapse: collapse;
            font-size: 0.75rem;
            white-space: nowrap;
            table-layout: fixed;
            min-width: 0;
        }
        .confirmed-detail-table th {
            background: #f4f6f8;
            border: 1px solid #e2e2e2;
            padding: 5px 4px;
            position: sticky;
            top: 0;
            z-index: 1;
            text-align: center;
            font-weight: 600;
            color: #444;
            overflow: hidden;
            text-overflow: ellipsis;
        }
        .confirmed-detail-table td {
            border: 1px solid #e8e8e8;
            padding: 4px 4px;
            vertical-align: middle;
            overflow: hidden;
            text-overflow: ellipsis;
            text-align: center;
        }
        /* 固定列宽（th 与 td 均需设置，table-layout:fixed 由首行 th 决定列宽） */
        .confirmed-detail-table .col-customer { width: 44px; min-width: 44px; max-width: 44px; }
.confirmed-detail-table .col-check { width: 32px; min-width: 32px; max-width: 32px; text-align: center; }
.confirmed-detail-table .col-check input { margin: 0; cursor: pointer; }
        .confirmed-detail-table .col-seq { width: 44px; min-width: 44px; max-width: 44px; }
        .confirmed-detail-table .col-time { width: 56px; min-width: 56px; max-width: 56px; }
        .confirmed-detail-table .col-raw { width: 90px; min-width: 90px; max-width: 90px; }
        .confirmed-detail-table .col-num {
            width: 56px;
            min-width: 56px;
            max-width: 56px;
            text-align: center;
            font-variant-numeric: tabular-nums;
        }
        .confirmed-detail-table .col-rebate {
            width: 50px;
            min-width: 50px;
            max-width: 50px;
            text-align: center;
            font-variant-numeric: tabular-nums;
        }
        .confirmed-detail-table .col-parse {
            width: 72px;
            min-width: 72px;
            max-width: 72px;
        }
        /* 操作列：宽度自适应，按钮换行排列，不产生横向滚动条 */
        .confirmed-detail-table .col-actions {
            width: 150px;
            min-width: 150px;
            overflow: visible;
            text-overflow: clip;
            white-space: normal;
        }
        .confirmed-detail-table tbody tr {
            cursor: pointer;
        }
        .confirmed-detail-table tbody tr:hover {
            background: #f0f6ff;
        }
        /* 存在赔付的订单：赔付列用淡红色底纹标注 */
        .confirmed-detail-table td.col-payout-hit {
            background: #ffe5e5;
            font-weight: 600;
            color: #c0392b;
        }
        /* 状态列（替代原「客户」列）：仅容纳 2 个中文字符；被标记的歧义订单橙色底纹 + 徽章 */
        .confirmed-detail-table .col-verify { width: 36px; min-width: 36px; max-width: 36px; text-align: center; padding: 4px 2px; }
        .confirmed-detail-table td.col-verify-hit {
            background: linear-gradient(135deg, #ffe9d2, #ffd9ad);
            border-color: #f5c98a;
        }
        .verify-mark-badge {
            display: inline-block;
            padding: 1px 4px;
            border-radius: 999px;
            background: linear-gradient(135deg, #ff9f2e, #f57c00);
            color: #fff;
            font-size: 0.6rem;
            font-weight: 700;
            white-space: nowrap;
            box-shadow: 0 1px 2px rgba(245, 124, 0, 0.35);
        }
        /* 群组头部「核对订单」蓝色底纹按钮 */
        .verify-order-btn {
            margin-left: 8px;
            padding: 2px 12px;
            border: none;
            border-radius: 999px;
            background: linear-gradient(135deg, #0a84ff, #3aa0ff);
            color: #fff;
            font-size: 0.72rem;
            font-weight: 600;
            cursor: pointer;
            box-shadow: 0 1px 4px rgba(10, 132, 255, 0.35);
            vertical-align: middle;
        }
        .verify-order-btn:hover { background: linear-gradient(135deg, #007aff, #2f8fe6); }
        .verify-order-btn:active { transform: scale(0.96); }
        .confirmed-detail-table .confirmed-admin-row td {
            color: #b03a2e;
            background: #fff5f5;
        }
        .confirmed-order-actions {
            display: flex;
            flex-wrap: wrap;
            gap: 3px;
            align-items: center;
            justify-content: center;
            white-space: nowrap;
        }
        .confirmed-order-actions button {
            padding: 2px 5px;
            font-size: 0.68rem;
            border-radius: 3px;
            border: 1px solid #ccc;
            background: #fff;
            color: #333;
            cursor: pointer;
            white-space: nowrap;
            flex: 0 0 auto;
            display: inline-flex;
            align-items: center;
            gap: 3px;
        }
        .confirmed-order-actions .edit-order-btn:hover { background: #e8f0fe; border-color: #4a90d9; }
        .confirmed-order-actions .add-order-btn:hover { background: #e6f4ea; border-color: #34a853; }
        .confirmed-order-actions .delete-order-btn:hover { background: #fce8e6; border-color: #ea4335; }
        .action-footer {
            padding: 12px;
            border-top: 1px solid #eee;
            display: flex;
            justify-content: space-between;
            align-items: center;
            flex-wrap: wrap;
            gap: 10px;
        }
        .total-info {
            display: flex;
            flex-wrap: wrap;
            gap: 15px;
        }
        .total-item strong {
            font-size: 1rem;
            color: #e74c3c;
        }
        .btn {
            padding: 5px 15px;
            background: #1792ff;
            color: white;
            border: none;
            border-radius: 4px;
            cursor: pointer;
            font-weight: bold;
        }
        .btn-clear {
            background: #f56c6c;
        }
        .btn-confirm {
            background: #1792ff;
        }
        .btn:disabled {
            background: #c0c4cc;
            cursor: not-allowed;
        }
        .quick-bet-buttons {
            padding: 8px 12px;
            background: #f8f9fa;
            border-bottom: 1px solid #eee;
            display: flex;
            flex-wrap: wrap;
            gap: 6px;
            align-items: center;
        }
        .quick-bet-btn {
            padding: 3px 8px;
            background: #6c757d;
            color: white;
            border: none;
            border-radius: 4px;
            cursor: pointer;
            font-size: 0.7rem;
        }
        .quick-bet-btn:hover {
            opacity: 0.8;
        }
        .confirmed-orders {
            margin: 0 0 15px 0;
            background: white;
            border-radius: 6px;
            border: 1px solid #ddd;
            overflow: hidden;
            /* 与左侧客户区域高度齐平：填满 .order-content 剩余空间 */
            flex: 1;
            min-height: 0;
            display: flex;
            flex-direction: column;
        }
        .confirmed-content {
            flex: 1;
            min-height: 0;
            overflow: auto;
        }
        .confirmed-header {
            padding: 10px 12px;
            background: #f5f5f5;
            font-weight: bold;
            /* 已按需求隐藏标题区；DOM/JS 业务逻辑保留，后续需要时改回 display:flex 即可显示 */
            display: none;
            justify-content: space-between;
            align-items: center;
            flex-wrap: wrap;
            gap: 8px;
        }
        .export-btn {
            background: #28a745;
            color: white;
            border: none;
            border-radius: 4px;
            padding: 4px 10px;
            cursor: pointer;
        }
        .clear-all-btn {
            background: #dc3545;
            color: white;
            border: none;
            border-radius: 4px;
            padding: 4px 10px;
            cursor: pointer;
            margin-left: 8px;
        }
        .confirmed-content {
            overflow-y: auto;
            max-height: none;
            min-height: 0;
            padding: 8px;
            background: #fff;
        }
        .user-group {
            border-bottom: 1px solid #dee2e6;
        }
        .user-group-header {
            padding: 8px 12px;
            background: #e9ecef;
            font-weight: bold;
            display: flex;
            justify-content: space-between;
            align-items: center;
            flex-wrap: wrap;
            gap: 6px;
            /* 需求：群组头部冻结，不随滚动条移动 */
            position: sticky;
            top: 0;
            z-index: 4;
        }
        .user-total {
            color: #e74c3c;
        }
        .user-profit {
            margin-left: 5px;
        }
        .user-profit.positive {
            color: #f56c6c;
        }
        .user-profit.negative {
            color: #67c23a;
        }
        .profit-detail {
            font-size: 0.7rem;
            color: #555;
            margin-left: 5px;
        }
        .user-orders {
            padding: 0 10px;
        }
        .order-record {
            padding: 8px 0;
            border-bottom: 1px solid #f5f5f5;
            display: flex;
            flex-direction: column;
            gap: 4px;
        }
        .order-record.has-payout {
            border-left: 3px solid #e74c3c;
            padding-left: 8px;
        }
        .order-record-top {
            display: flex;
            justify-content: space-between;
            align-items: flex-start;
            gap: 8px;
        }
        .order-record-detail {
            font-size: 0.75rem;
            color: #333;
            padding-left: 10px;
            margin-top: 2px;
        }
        .order-id {
            color: #666;
            margin-bottom: 3px;
        }
        .order-time {
            color: #999;
        }
        .order-amount {
            font-weight: bold;
            color: #e74c3c;
            white-space: nowrap;
        }
        .order-payout {
            font-weight: bold;
            color: #28a745;
            white-space: nowrap;
            margin-left: 8px;
        }
        /* 管理员补货订单：红色字体标注（独立核算记录） */
        /* 群组头部导出按钮：区别于红色清空本群 */
        .clear-group-btn.export-group-btn { background: #27ae60; }
        .clear-group-btn.export-group-btn:hover { background: #219a52; }
        .order-record.order-admin-record {
            border-left: 3px solid #e74c3c;
            padding-left: 8px;
            background: rgba(231, 76, 60, 0.05);
        }
        .order-admin-record .order-id { color: #e74c3c; font-weight: 700; }
        .order-admin-record .order-time { color: #c0392b; }
        .order-admin-record .order-amount { color: #e74c3c; }
        .order-admin-record .order-record-detail { color: #e74c3c; }
        .admin-replenish-badge {
            display: inline-block;
            margin-left: 6px;
            padding: 0 6px;
            font-size: 0.68rem;
            font-weight: 700;
            color: #fff;
            background: #e74c3c;
            border-radius: 4px;
            vertical-align: middle;
        }
        .delete-order-btn,
        .edit-order-btn,
        .add-order-btn,
        .edit-note-btn,
        .add-note-btn-order,
        .set-rebate-btn,
        .clear-group-btn {
            background: #dc3545;
            color: white;
            border: none;
            border-radius: 4px;
            padding: 2px 8px;
            cursor: pointer;
            font-size: 0.7rem;
            margin-left: 4px;
            flex-shrink: 0;
        }
        .edit-order-btn {
            background: #ffc107;
            color: #212529;
        }
        .add-order-btn {
            background: #28a745;
        }
        .edit-note-btn,
        .add-note-btn-order {
            background: #17a2b8;
            color: white;
        }
        .edit-non-special-btn {
            background: #6f42c1;
            color: white;
        }
        .set-rebate-btn {
            background: #fd7e14;
            color: white;
        }
        .clear-group-btn {
            background: #dc3545;
            color: white;
        }
        .order-actions {
            display: flex;
            gap: 4px;
            flex-wrap: wrap;
        }
        .modal {
            display: none;
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background: rgba(0, 0, 0, 0.5);
            z-index: 1000;
            justify-content: center;
            align-items: center;
        }
        .modal-content {
            background: white;
            border-radius: 8px;
            width: 90%;
            max-width: 800px;
            max-height: 85vh;
            overflow-y: auto;
            padding: 16px;
        }
        .modal-header {
            padding-bottom: 12px;
            border-bottom: 1px solid #ddd;
            display: flex;
            justify-content: space-between;
            align-items: center;
        }
        .modal-body {
            padding: 16px 0;
        }
        .form-group {
            margin-bottom: 12px;
        }
        .form-group label {
            margin-bottom: 4px;
            display: block;
            font-weight: bold;
        }
        .form-group input,
        .form-group textarea {
            width: 100%;
            padding: 6px 10px;
            border: 1px solid #ddd;
            border-radius: 4px;
            font-size: 0.9rem;
        }
        .form-group .item-edit {
            display: flex;
            align-items: center;
            gap: 8px;
            margin-bottom: 6px;
        }
        .form-group .item-edit span {
            min-width: 80px;
        }
        .modal-footer {
            padding-top: 12px;
            border-top: 1px solid #ddd;
            display: flex;
            justify-content: flex-end;
            gap: 8px;
        }

        /* ===== 明细弹窗（投注明细）：固定 1024x500，蓝色 mac 关闭按钮 ===== */
        #detailModal .modal-content.detail-modal-wide {
            width: 1024px;
            max-width: 1024px;
            height: 500px;
            max-height: 500px;
            padding: 0;
            display: flex;
            flex-direction: column;
            overflow: hidden;
            border-radius: 0;
            box-shadow: 0 8px 40px rgba(0,0,0,0.25);
        }
        #detailModal .modal-header {
            flex-shrink: 0;
            padding: 12px 16px;
            background: linear-gradient(135deg, var(--mac-accent), #5ac8fa);
            color: #fff;
            border-bottom: none;
            border-top: none;
        }
        #detailModal .modal-header .title { color: #fff; font-weight: 700; }
        #detailModal .modal-body {
            flex: 1 1 auto;
            min-height: 0;
            overflow: auto;
            padding: 12px 16px;
        }
        #detailModal .modal-footer {
            flex-shrink: 0;
            padding: 12px 16px;
            border-top: 1px solid var(--mac-separator);
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 12px;
        }
        /* 弹窗底部固定合计信息（始终可见，不随内容滚动） */
        #detailModal .detail-modal-summary {
            flex: 1 1 auto;
            font-size: 0.84rem;
            color: #222;
            text-align: left;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }
        #detailModal .detail-modal-summary b { color: #e53935; font-size: 0.95rem; }
        /* 弹窗内明细表：13 列在 1024 宽下自动适配，缩小内边距/字号以容纳更多行 */
        #detailModal .dc-detail-table.dc-detail-fixed.dc-detail-wide th,
        #detailModal .dc-detail-table.dc-detail-fixed.dc-detail-wide td {
            font-size: 0.72rem;
            padding: 4px 6px;
        }
        /* 关闭按钮统一白色（蓝色 header 下） */
        #detailModal .modal-header .close-modal {
            color: rgba(255,255,255,0.9);
            font-size: 1.5rem;
            line-height: 1;
            font-weight: 700;
            opacity: 0.85;
            transition: opacity 0.15s;
        }
        #detailModal .modal-header .close-modal:hover { opacity: 1; }
        .mac-btn-blue {
            background: var(--mac-accent);
            color: #fff;
            border: none;
            border-radius: 7px;
            padding: 7px 20px;
            font-size: 0.85rem;
            font-weight: 600;
            cursor: pointer;
            transition: background 0.15s, transform 0.05s;
        }
        .mac-btn-blue:hover { background: var(--mac-accent-hover, #0a78e0); }
        .mac-btn-blue:active { transform: scale(0.97); }
        .customer-config-info {
            font-size: 0.75rem;
            font-weight: normal;
            color: #495057;
            margin-left: 8px;
        }

        .play-config-table {
            width: 100%;
            border-collapse: separate;
            border-spacing: 0;
            font-size: 0.7rem;
            margin-top: 4px;
        }
        .play-config-table th {
            background: #e9ecef;
            padding: 3px 5px;
            text-align: center;
            border: 1px solid #ddd;
            position: sticky;
            top: 0;
            z-index: 3;
        }
        /* 固定前两行表头：第一行 top:0，第二行跟随其下方 */
        .play-config-table thead tr:first-child th { top: 0; }
        .play-config-table thead tr:nth-child(2) th { top: 23px; }
        .play-config-table td {
            padding: 2px 3px;
            border: 1px solid #ddd;
            vertical-align: middle;
            text-align: center;
        }
        /* 灰白底纹（去除原蓝灰相间） */
        .play-config-table tbody tr:nth-child(even) td { background: #fafafa; }
        .play-config-table input[type="number"] {
            width: 72px;
            min-width: 72px;
            padding: 2px 4px;
            border: 1px solid #ccc;
            border-radius: 3px;
            font-size: 0.7rem;
            text-align: center;
            -moz-appearance: textfield;
            appearance: textfield;
        }

        .play-config-table input[type="number"]::-webkit-outer-spin-button,
        .play-config-table input[type="number"]::-webkit-inner-spin-button {
            -webkit-appearance: none;
            margin: 0;
        }
        .play-config-table .play-name {
            font-weight: 500;
            white-space: nowrap;
            text-align: left;
            padding-left: 6px;
        }
        .play-config-scroll {
            max-height: 300px;
            overflow-y: auto;
            border: 1px solid #ddd;
            border-radius: 4px;
            margin-top: 4px;
        }
        /* 业务员玩法赔率表：冻结首行，滚动时不随内容移动 */
        .recorder-play-config-scroll {
            max-height: 320px;
        }
        .recorder-play-config-scroll .play-config-table thead th {
            position: -webkit-sticky;
            position: sticky;
            top: 0;
            z-index: 4;
        }
        /* 兜底：该表仅一行表头，覆盖可能存在的单行/多行 top 偏移规则，确保首行恒定贴在顶部 */
        .recorder-play-config-scroll .play-config-table thead tr:first-child th { top: 0 !important; }
        .recorder-play-config-scroll .play-config-table thead tr:nth-child(2) th { top: 0 !important; }
        .play-config-table .label-a,
        .play-config-table .label-b {
            font-size: 0.6rem;
            color: #555;
            display: block;
        }
        .play-config-table .label-b {
            color: #888;
        }
        .play-config-table .group-header {
            background: #eeeeee;
            font-weight: bold;
            text-align: left;
            padding-left: 10px;
            font-size: 0.72rem;
        }

        #refundModal {
            display: none;
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background: rgba(0, 0, 0, 0.6);
            z-index: 9999;
            justify-content: center;
            align-items: center;
        }
        #refundModal .refund-modal-content {
            background: white;
            border-radius: 8px;
            padding: 24px 30px;
            max-width: 600px;
            width: 90%;
            max-height: 80vh;
            overflow-y: auto;
            position: relative;
            box-shadow: 0 10px 40px rgba(0, 0, 0, 0.3);
        }
        #refundModal .refund-close-btn {
            font-size: 24px;
            font-weight: bold;
            color: #999;
            cursor: pointer;
            background: none;
            border: none;
            line-height: 1;
            padding: 0 5px;
        }
        #refundModal .refund-close-btn:hover {
            color: #333;
        }
        #refundModal .refund-text {
            font-size: 1.4rem;
            color: red;
            font-weight: bold;
            line-height: 1.8;
            padding: 8px 0;
            word-wrap: break-word;
            white-space: pre-wrap;
        }
        .refund-modal-header {
            display: flex;
            justify-content: space-between;
            align-items: center;
            margin-bottom: 8px;
        }
        .refund-modal-header .title {
            font-size: 1.2rem;
            font-weight: bold;
            color: #333;
        }
        .refund-modal-header .close-group {
            display: flex;
            align-items: center;
            gap: 6px;
        }
        .refund-modal-header .close-group button {
            background: none;
            border: none;
            cursor: pointer;
            font-size: 0.95rem;
            color: #555;
            padding: 4px 8px;
            border-radius: 4px;
        }
        .refund-modal-header .close-group button:hover {
            background: #f0f0f0;
            color: #000;
        }
        .refund-copy-btn {
            background: #007bff;
            color: white;
            border: none;
            padding: 6px 18px;
            border-radius: 4px;
            cursor: pointer;
            font-size: 0.9rem;
            margin-top: 8px;
            transition: background 0.2s;
        }
        .refund-copy-btn:hover {
            background: #0056b3;
        }

        .customer-item {
            display: flex;
            justify-content: space-between;
            align-items: center;
            padding: 6px 0;
            border-bottom: 1px solid #f0f0f0;
        }
        .customer-item .customer-details {
            font-size: 0.75rem;
            color: #666;
        }
        .delete-btn-small {
            padding: 2px 8px;
            font-size: 0.7rem;
            border: none;
            border-radius: 6px;
            cursor: pointer;
            margin-left: 4px;
            background: var(--mac-red);
            color: #fff;
        }
        .delete-btn-small[disabled] {
            cursor: not-allowed;
            opacity: 0.45;
            filter: grayscale(0.6);
        }
        .save-btn-small {
            padding: 2px 8px;
            font-size: 0.7rem;
            border: none;
            border-radius: 3px;
            cursor: pointer;
            margin-left: 4px;
            background: #28a745;
            color: white;
        }
        .cancel-btn-small {
            padding: 2px 8px;
            font-size: 0.7rem;
            border: none;
            border-radius: 3px;
            cursor: pointer;
            margin-left: 4px;
            background: #6c757d;
            color: white;
        }
        .edit-btn-small {
            display: none !important;
        }
        .customer-list .edit-btn-small {
            display: none !important;
        }
        .hidden-in-edit {
            display: none;
        }
        .visible-in-edit {
            display: block;
        }

        @media (max-width: 1200px) {
            .order-main {
                width: auto;
                flex: 1;
            }
            .lottery-results {
                width: 220px;
            }
        }
        @media (max-width: 768px) {
            .order-entry-container {
                flex-wrap: wrap;
            }
            .order-main {
                width: 100%;
            }
            .lottery-results {
                width: 100%;
                border-left: none;
                border-top: 1px solid #ddd;
                order: 2;
            }
            .editor-results-container {
                height: 222px;
            }
            .confirmed-content {
                max-height: none;
            }
            #refundModal .refund-modal-content {
                max-width: 95%;
                padding: 20px;
            }
            #refundModal .refund-text {
                font-size: 1.2rem;
            }
            .modal-content {
                max-width: 95%;
            }
            .play-config-table input[type="number"] {
                width: 64px;
                min-width: 64px;
            }
            .play-config-table .play-name {
                font-size: 0.65rem;
            }
            .winning-number-part {
                width: 40px;
            }
        }
    /* ============================================================
       macOS 26 (Liquid Glass / Tahoe) 全局主题覆盖层
       说明：仅调整视觉表现（配色、阴影、边框、圆角、层次），
       不修改任何 HTML 结构、class / id 或 JS 业务逻辑。
       ============================================================ */

        /* ---------- 顶部彩种工具栏：玻璃质感 + 分段控制器 ---------- */
        .order-header {
            background: var(--mac-glass);
            backdrop-filter: blur(24px) saturate(180%);
            -webkit-backdrop-filter: blur(24px) saturate(180%);
            border-bottom: 1px solid var(--mac-separator);
            padding: 10px 18px !important;
            min-height: 46px !important;
            gap: 14px !important;
        }
        .order-header .tab-label {
            color: var(--mac-text-secondary) !important;
            font-size: 0.85rem !important;
            letter-spacing: 0.5px;
        }
        /* 标签页按钮靠右显示，并采用蓝色按钮底纹，确保文字清晰可读 */
        .order-header .tab-btn:first-of-type {
            margin-left: auto !important;
        }
        .order-header .tab-btn {
            color: var(--mac-accent) !important;
            background: rgba(10, 132, 255, 0.10) !important;
            border: 1px solid rgba(10, 132, 255, 0.30) !important;
            border-radius: 8px !important;
            font-weight: 600;
            font-size: 0.82rem;
            padding: 5px 18px;
            transition: background 0.18s ease, color 0.18s ease, box-shadow 0.18s ease;
        }
        .order-header .tab-btn:hover {
            color: var(--mac-accent) !important;
            background: rgba(10, 132, 255, 0.20) !important;
        }
        .order-header .tab-btn.active {
            color: #ffffff !important;
            background: var(--mac-accent) !important;
            border-color: var(--mac-accent) !important;
            box-shadow: 0 1px 5px rgba(10, 132, 255, 0.45) !important;
        }

        /* ---------- 整体布局留白与层次 ---------- */
        .app-container { background: var(--mac-bg); padding: 14px; gap: 14px; }
        .order-entry-container { gap: 14px; }
        .order-main { border-radius: var(--mac-radius-lg); overflow: hidden; box-shadow: var(--mac-shadow); background: var(--mac-window); }
        .order-content { background: var(--mac-window); padding: 4px; }

        /* 右侧开奖/统计侧栏：毛玻璃侧边栏 */
        .lottery-results {
            width: 360px;
            background: var(--mac-glass);
            backdrop-filter: blur(24px) saturate(180%);
            -webkit-backdrop-filter: blur(24px) saturate(180%);
            border: 1px solid var(--mac-glass-border);
            border-left: 1px solid var(--mac-separator);
            border-radius: var(--mac-radius-lg);
            box-shadow: var(--mac-shadow);
            padding: 14px;
        }

        /* ---------- 卡片容器统一风格 ---------- */
        .recognize-order-info,
        .recognize-order-footer,
        .confirmed-orders,
        .winning-number-input-area,
        .statistics-section {
            background: var(--mac-window);
            border: 1px solid var(--mac-separator);
            border-radius: var(--mac-radius);
            box-shadow: var(--mac-shadow-sm);
        }
        .recognize-order-info { margin: 14px 16px 12px 16px !important; padding: 14px !important; }
        .recognize-order-footer { margin: 0 16px 16px !important; border-radius: var(--mac-radius); overflow: hidden; }
        .confirmed-orders { margin: 2px 16px 16px !important; border-radius: var(--mac-radius); overflow: hidden; }
        .winning-number-input-area { margin-bottom: 14px !important; padding: 14px !important; }
        .statistics-section { margin-top: 0 !important; border-radius: var(--mac-radius); }

        /* ---------- 区块标题（macOS section header 风格） ---------- */
        .recognize-title,
        .editor-header,
        .results-header,
        .confirmed-header,
        .user-group-header {
            background: linear-gradient(to bottom, #fbfbfd, #f2f2f5) !important;
            border-bottom: 1px solid var(--mac-separator) !important;
            font-weight: 600;
            color: var(--mac-text);
            padding: 10px 14px !important;
            font-size: 0.9rem !important;
        }
        .user-group-header { background: #f2f2f5 !important; }
        .editor-header, .results-header { background: #f2f2f5 !important; }

        /* ---------- 表单控件：macOS 输入框 ---------- */
        .winning-input,
        .rebate-input,
        .user-select select,
        .user-select input,
        .editor-textarea,
        .form-group input,
        .form-group textarea,
        select,
        input[type="number"],
        input[type="text"] {
            border: 1px solid var(--mac-separator);
            border-radius: var(--mac-radius-sm);
            background: #fafafa;
            color: var(--mac-text);
            padding: 7px 10px;
            font-size: 0.85rem;
            transition: border-color 0.18s ease, box-shadow 0.18s ease, background 0.18s ease;
        }
        .winning-input:focus,
        .rebate-input:focus,
        .user-select select:focus,
        .user-select input:focus,
        .editor-textarea:focus,
        .form-group input:focus,
        .form-group textarea:focus,
        select:focus,
        input:focus {
            outline: none;
            border-color: var(--mac-accent);
            background: #fff;
            box-shadow: 0 0 0 3px rgba(10, 132, 255, 0.18);
        }
        .winning-number-part { width: 46px !important; text-align: center; font-weight: 600; }
        #winningNumberInput7 { border: 2px solid var(--mac-accent) !important; }
        .editor-textarea { width: 100%; height: 100%; resize: none; font-family: var(--mac-font); line-height: 1.5; }

        /* ---------- 按钮：macOS 圆角胶囊 / 实色按钮 ---------- */
        .btn,
        .btn-action,
        .add-customer-btn,
        .manage-customer-btn,
        .config-btn,
        .recognize-btn,
        .export-btn,
        .clear-all-btn,
        .quick-bet-btn,
        .delete-order-btn,
        .edit-order-btn,
        .add-order-btn,
        .edit-note-btn,
        .add-note-btn-order,
        .set-rebate-btn,
        .clear-group-btn,
        .edit-non-special-btn,
        .delete-btn-small,
        .save-btn-small,
        .cancel-btn-small,
        .refund-copy-btn,
        .confirm-winning-btn,
        .clear-winning-btn,
        .refund-btn,
        .config-buttons button {
            border: none;
            border-radius: 9px;
            cursor: pointer;
            font-weight: 600;
            font-size: 0.82rem;
            padding: 7px 14px;
            color: #fff;
            transition: filter 0.15s ease, transform 0.05s ease, box-shadow 0.15s ease;
        }
        .btn:hover, .btn-action:hover, .add-customer-btn:hover, .manage-customer-btn:hover,
        .config-btn:hover, .recognize-btn:hover, .export-btn:hover, .clear-all-btn:hover,
        .quick-bet-btn:hover, .delete-order-btn:hover, .edit-order-btn:hover, .add-order-btn:hover,
        .edit-note-btn:hover, .add-note-btn-order:hover, .set-rebate-btn:hover, .clear-group-btn:hover,
        .edit-non-special-btn:hover, .delete-btn-small:hover, .save-btn-small:hover, .cancel-btn-small:hover,
        .refund-copy-btn:hover, .confirm-winning-btn:hover, .clear-winning-btn:hover, .refund-btn:hover,
        .config-buttons button:hover {
            filter: brightness(1.06);
        }
        .btn:active, .btn-action:active, .config-btn:active, .quick-bet-btn:active { transform: scale(0.98); }

        /* 主操作按钮（确认 / 识别 / 添加） */
        .btn-confirm, .recognize-btn, .add-customer-btn, .btn-action.confirm-winning { background: var(--mac-accent); }
        .btn-confirm:hover, .recognize-btn:hover, .add-customer-btn:hover, .btn-action.confirm-winning:hover { background: var(--mac-accent-hover); }
        .btn-clear, .clear-all-btn, .clear-winning-btn, .delete-order-btn, .clear-group-btn, .btn-action.clear-winning { background: var(--mac-red); }
        .btn-clear:hover, .clear-all-btn:hover, .clear-winning-btn:hover, .delete-order-btn:hover, .clear-group-btn:hover, .btn-action.clear-winning:hover { background: var(--mac-red-hover); }
        .btn-action.refund, .refund-btn, .manage-customer-btn { background: var(--mac-accent); }
        .btn-action.refund:hover, .refund-btn:hover, .manage-customer-btn:hover { background: var(--mac-accent-hover); }
        .export-btn, .add-order-btn { background: var(--mac-green); }
        .export-btn:hover, .add-order-btn:hover { background: var(--mac-green-hover); }
        .edit-order-btn { background: var(--mac-orange); }
        .edit-note-btn, .add-note-btn-order, .edit-non-special-btn { background: #5ac8fa; }
        .set-rebate-btn { background: #ff9500; }
        .config-btn { background: #8e8e93; }
        .quick-bet-btn { font-size: 0.72rem !important; padding: 4px 10px !important; border-radius: 8px !important; opacity: 0.95; }
        .delete-btn-small { background: var(--mac-red); }
        .save-btn-small { background: var(--mac-green); }
        .cancel-btn-small { background: #8e8e93; }
        .refund-copy-btn { background: var(--mac-accent); }

        /* 操作栏 */
        .action-footer { padding: 8px 16px !important; background: #fbfbfd; border-top: 1px solid var(--mac-separator); }
        .total-info { gap: 18px; }
        .total-item strong { color: var(--mac-red); font-size: 1.05rem; }
        .actions { display: flex; gap: 10px; }
        .actions .btn { padding: 9px 20px; font-size: 0.88rem; }

        /* ---------- 彩种标识徽章（覆盖内联红色样式） ---------- */
        #winningTabLabel,
        #currentWinningTabLabel,
        #statisticsTabLabel,
        .lottery-type-badge {
            color: #fff !important;
            background: var(--mac-accent) !important;
            font-weight: 700 !important;
            font-size: 0.85rem !important;
            padding: 2px 12px !important;
            border-radius: 999px !important;
            display: inline-block;
            letter-spacing: 0.5px;
            box-shadow: 0 1px 4px rgba(10, 132, 255, 0.35);
        }
        #statisticsTabLabel {
            display: block !important;
            text-align: center;
            font-size: 0.95rem !important;
            padding: 6px 0 !important;
            margin-bottom: 8px !important;
            background: linear-gradient(135deg, rgba(10,132,255,0.12), rgba(10,132,255,0.06)) !important;
            color: var(--mac-accent) !important;
            border: 1px solid rgba(10,132,255,0.25) !important;
            box-shadow: none !important;
        }
        .lottery-type-banner {
            margin-top: 14px !important;
            padding: 8px 12px !important;
            background: #fbfbfd !important;
            border: 1px dashed var(--mac-separator) !important;
            border-radius: var(--mac-radius) !important;
        }

        /* ---------- 开奖号码区域 ---------- */
        .winning-number-input-area h4 { color: var(--mac-text); font-size: 0.9rem; margin-bottom: 10px; display: flex; align-items: center; gap: 8px; }
        .winning-input-row { gap: 8px; }
        .pingma-row, .tema-row { gap: 8px; }
        .winning-action-row { display: flex; gap: 8px; margin: 10px 0; }
        .winning-action-row .btn-action { flex: 1; }
        .current-winning-display {
            background: linear-gradient(to bottom, #f5f8ff, #eef4ff) !important;
            border: 1px solid rgba(10,132,255,0.18) !important;
            border-radius: var(--mac-radius) !important;
            padding: 12px !important;
            margin-top: 8px !important;
            text-align: left !important;
        }
        .current-winning-numbers { font-size: 1rem !important; }
        .winning-number-chip {
            border-radius: 999px !important;
            padding: 4px 10px !important;
            font-weight: 600;
            background: #fff !important;
            box-shadow: var(--mac-shadow-sm);
        }
        .winning-number-chip small { color: var(--mac-text-secondary) !important; }
        .special-code-display, #specialCodeDisplay { color: var(--mac-red) !important; }

        /* ---------- 统计报表区 ---------- */
        .statistics-title {
            background: linear-gradient(to bottom, #fbfbfd, #f2f2f5) !important;
            border-bottom: 1px solid var(--mac-separator) !important;
            border-radius: var(--mac-radius) var(--mac-radius) 0 0 !important;
            padding: 10px 14px !important;
        }
        .statistics-title select { padding: 4px 8px; }
        .total-bet-display {
            background: #fbfbfd !important;
            border-bottom: 1px solid var(--mac-separator) !important;
            padding: 8px 14px !important;
        }
        .total-bet-amount { color: var(--mac-red) !important; }
        .statistics-container { padding: 8px !important; }
        .statistics-header {
            background: #f2f2f5 !important;
            border-radius: var(--mac-radius-xs) !important;
            color: var(--mac-text-secondary);
            font-weight: 600;
            padding: 6px 0;
        }
        .statistics-item {
            border-bottom: 1px solid #f0f0f2 !important;
            padding: 6px 0 !important;
            border-radius: var(--mac-radius-xs);
        }
        .statistics-item:hover { background: rgba(10,132,255,0.05) !important; }
        .stat-number { box-shadow: var(--mac-shadow-sm); }
        .stat-profit.positive, .profit-positive, .total-profit.positive, .user-profit.positive { color: #e02020 !important; }
        .stat-profit.negative, .profit-negative, .total-profit.negative, .user-profit.negative { color: #0a8f3c !important; }

        /* ---------- 表格（识别 / 群组统计 / 玩法配置 / 汇总） ---------- */
        .recognize-table,
        .group-stat-table,
        .play-config-table,
        .summary-preview table,
        .customer-list table {
            border-collapse: separate;
            border-spacing: 0;
            width: 100%;
            overflow: hidden;
            border-radius: var(--mac-radius-sm);
        }
        .recognize-table th,
        .group-stat-table th,
        .play-config-table th,
        .summary-preview .header-row td {
            background: #f2f2f5 !important;
            color: var(--mac-text-secondary);
            font-weight: 600;
            border-bottom: 1px solid var(--mac-separator);
            padding: 8px 10px;
            font-size: 0.78rem;
        }
        /* 玩法配置表在深色模式下保持压缩字号与表头冻结 */
        .play-config-table { font-size: 0.7rem !important; }
        /* 冻结表头根因修复：table 自身的 overflow:hidden 会成为 sticky 的滚动上下文，
           导致表头无法相对外层 .play-config-scroll 粘住，必须改为 visible */
        .play-config-table { overflow: visible !important; }
        .play-config-table th { font-size: 0.7rem !important; padding: 3px 5px !important; position: sticky; z-index: 3; }
        .play-config-table thead tr:first-child th { top: 0 !important; }
        .play-config-table thead tr:nth-child(2) th { top: 23px !important; }
        .play-config-table td { font-size: 0.7rem !important; padding: 2px 3px !important; }
        .play-config-table input[type="number"] { font-size: 0.7rem !important; }
        .recognize-table td,
        .group-stat-table td,
        .play-config-table td,
        .summary-preview td {
            padding: 8px 10px;
            border-bottom: 1px solid #f0f0f2;
            font-size: 0.8rem;
        }
        .recognize-table tr:last-child td,
        .group-stat-table tr:last-child td,
        .play-config-table tr:last-child td { border-bottom: none; }
        .group-stat-table tr.clickable:hover,
        .recognize-table tbody tr:hover { background: rgba(10,132,255,0.05); }
        .play-config-scroll { border: 1px solid var(--mac-separator); border-radius: var(--mac-radius-sm); overflow-y: auto; overflow-x: hidden; }
        .play-config-table th { position: sticky; top: 0; background: linear-gradient(180deg, #f2f2f5, #e8ecf4) !important; box-shadow: 0 1px 0 var(--mac-separator); }
        .summary-preview { background: #fbfbfd; border: 1px solid var(--mac-separator); border-radius: var(--mac-radius-sm); padding: 8px 12px; }

        /* ---------- 弹窗：毛玻璃遮罩 + 玻璃卡片 ---------- */
        .modal, #refundModal {
            background: rgba(0, 0, 0, 0.28) !important;
            backdrop-filter: blur(6px);
            -webkit-backdrop-filter: blur(6px);
        }
        .modal-content, #refundModal .refund-modal-content {
            background: var(--mac-glass-strong) !important;
            backdrop-filter: blur(30px) saturate(180%);
            -webkit-backdrop-filter: blur(30px) saturate(180%);
            border: 1px solid var(--mac-glass-border);
            border-radius: var(--mac-radius-lg) !important;
            box-shadow: var(--mac-shadow);
            padding: 20px !important;
        }
        .modal-header, .refund-modal-header {
            border-bottom: 1px solid var(--mac-separator) !important;
            padding-bottom: 14px !important;
            margin-bottom: 14px !important;
        }
        .modal-footer { border-top: 1px solid var(--mac-separator) !important; padding-top: 14px !important; }
        .form-group label { color: var(--mac-text); margin-bottom: 6px; }
        .form-group .item-edit span { color: var(--mac-text-secondary); }
        .customer-config-info { color: var(--mac-text-secondary) !important; }

        /* ---------- 提示文字 ---------- */
        #targetTabHint {
            color: var(--mac-red) !important;
            background: rgba(255, 59, 48, 0.08) !important;
            border: 1px solid rgba(255, 59, 48, 0.2) !important;
            border-radius: var(--mac-radius-xs) !important;
            padding: 6px 10px !important;
        }
        .empty-table { color: var(--mac-gray) !important; padding: 24px !important; }

        /* ---------- 客户列表项 ---------- */
        .customer-item { border-bottom: 1px solid #f0f0f2 !important; padding: 10px 0 !important; }
        .customer-details { color: var(--mac-text-secondary) !important; }

        /* ---------- 已确认订单记录 ---------- */
        .confirmed-content { background: #fff; }
        .user-group { border-bottom: 1px solid var(--mac-separator) !important; }
        .order-record { border-bottom: 1px solid #f5f5f7 !important; }
        /* 已确认订单：存在赔付行左侧红色边框标记 */
        .order-record.has-payout {
            border-left: 3px solid var(--mac-red) !important;
            padding-left: 8px !important;
        }
        /* 统计报表明细弹窗：存在赔付的条目高亮（淡红底纹 + 红色最左边框） */
        .detail-payout-row {
            background: #fff5f5 !important;
        }
        .detail-payout-row > td:first-child {
            border-left: 3px solid #e74c3c !important;
        }
        .order-record-detail { color: var(--mac-text); }
        .order-id, .order-time { color: var(--mac-gray) !important; }
        .order-amount { color: var(--mac-red); }
        .order-payout { color: #0b6e2e; }
        .user-total { color: var(--mac-red) !important; }

        /* ---------- 快速投注按钮容器 ---------- */
        .quick-bet-buttons { background: #fbfbfd !important; border-bottom: 1px solid var(--mac-separator) !important; padding: 10px 14px !important; border-radius: var(--mac-radius-sm); }

        /* ---------- 滚动条（macOS 风格细滚动条；已确认订单已完全隐藏，不在此列） ---------- */
        .statistics-container::-webkit-scrollbar,
        .results-content::-webkit-scrollbar,
        .modal-content::-webkit-scrollbar,
        .play-config-scroll::-webkit-scrollbar,
        .order-content::-webkit-scrollbar { width: 8px; height: 8px; }
        .statistics-container::-webkit-scrollbar-thumb,
        .results-content::-webkit-scrollbar-thumb,
        .modal-content::-webkit-scrollbar-thumb,
        .play-config-scroll::-webkit-scrollbar-thumb,
        .order-content::-webkit-scrollbar-thumb {
            background: rgba(0,0,0,0.2); border-radius: 999px;
        }
        .statistics-container::-webkit-scrollbar-thumb:hover,
        .results-content::-webkit-scrollbar-thumb:hover,
        .modal-content::-webkit-scrollbar-thumb:hover,
        .play-config-scroll::-webkit-scrollbar-thumb:hover,
        .order-content::-webkit-scrollbar-thumb:hover { background: rgba(0,0,0,0.32); }
        /* ---------- 顶部标签居左 + 右侧栏紧凑（节约高度空间，展示更多内容） ---------- */
        .order-header .tab-btn:first-of-type {
            margin-left: 0 !important;
        }
        /* 隐藏客户区"返点:%"显示，避免把"识别"按钮挤到下一行（元素保留，逻辑不变） */
        .rebate-setting {
            display: none !important;
        }
        .lottery-results {
            padding: 10px !important;
            gap: 10px !important;
        }
        .winning-number-input-area {
            margin-bottom: 0 !important;
            padding: 10px !important;
        }
        .winning-number-input-area h4 {
            margin: 0 0 8px 0 !important;
            font-size: 0.95rem !important;
        }
        .winning-input-row { margin-bottom: 8px !important; }
        .winning-input { padding: 5px 8px !important; }
        .winning-action-row { gap: 6px !important; margin-top: 8px !important; }
        .winning-action-row .btn-action { padding: 5px 10px !important; font-size: 0.78rem !important; }
        .current-winning-display { padding-top: 6px !important; }
        .statistics-section { margin-top: 0 !important; }
        .statistics-title { padding: 8px 12px !important; gap: 3px !important; }
        .statistics-title .title-row,
        .statistics-title .stats-row { gap: 4px !important; }
        .total-bet-display { padding: 6px 12px !important; gap: 4px !important; }
        .statistics-container { padding: 6px !important; }
        .statistics-header { padding: 4px 0 !important; margin-bottom: 3px !important; }
        .statistics-item { padding: 4px 0 !important; }

        /* ---------- 左侧识别区组件紧凑：缩小上边距，节省整体高度 ---------- */
        .recognize-order-info {
            margin: 8px 16px 8px 16px !important;
            padding: 10px 14px !important;
        }
        .recognize-title {
            margin-bottom: 6px !important;
        }
        .recognize-order-footer {
            margin: 0 16px 12px !important;
        }
        .editor-results-container {
            padding: 8px !important;
            gap: 8px !important;
        }
        .editor-header,
        .results-header {
            padding: 7px 12px !important;
        }
        .editor-content { padding: 6px !important; }
        .results-content { padding: 6px !important; }

        /* ---------- 弹窗页面底纹改为纯白，避免灰底阅读障碍 ---------- */
        .modal-content,
        #refundModal .refund-modal-content {
            background: #FFFFFF !important;
            backdrop-filter: none !important;
            -webkit-backdrop-filter: none !important;
        }
    
/* ===== 待审核面板（自进化反馈） ===== */
.pending-toggle-btn {
    position: fixed; right: 16px; bottom: 16px; z-index: 9999;
    background: #e67e22; color: #fff; border: none; border-radius: 24px;
    padding: 10px 16px; font-size: 0.9rem; cursor: pointer; box-shadow: 0 2px 8px rgba(0,0,0,.25);
}
.pending-panel {
    position: fixed; right: 16px; bottom: 64px; z-index: 9998;
    width: 360px; max-height: 70vh; overflow: auto;
    background: #fff; border: 1px solid #ddd; border-radius: 8px; box-shadow: 0 4px 16px rgba(0,0,0,.2);
}
.pending-panel-header { display:flex; justify-content:space-between; align-items:center; padding:8px 12px; background:#f8f9fa; border-bottom:1px solid #eee; }
.pending-panel-header h3 { margin:0; font-size:0.95rem; }
.pending-close-btn { background:none; border:none; font-size:1.2rem; cursor:pointer; }
.pending-list { padding:8px 12px; }
.pending-item { border:1px solid #eee; border-radius:6px; padding:8px; margin-bottom:8px; }
.pending-input { font-size:0.8rem; color:#666; margin-bottom:6px; }
.pending-result { font-size:0.85rem; margin:4px 0; }
.pending-edit { display:flex; flex-direction:column; gap:6px; margin:6px 0; }
.pending-row { display:flex; flex-wrap:wrap; align-items:center; gap:8px; padding:4px; background:#fafafa; border-radius:4px; }
.pending-row label { display:flex; align-items:center; gap:4px; font-size:0.8rem; color:#444; }
.pending-row select, .pending-row input { padding:3px 6px; border:1px solid #ccc; border-radius:4px; font-size:0.8rem; }
.pending-row select { min-width:90px; }
.pending-row input { min-width:140px; }
.pending-actions { display:flex; gap:8px; flex-wrap:wrap; }

/* ===== 存储管理面板 ===== */
.storage-toggle-btn {
    position: fixed; right: 16px; bottom: 64px; z-index: 9999;
    background: #2c3e50; color: #fff; border: none; border-radius: 24px;
    padding: 10px 16px; font-size: 0.9rem; cursor: pointer; box-shadow: 0 2px 8px rgba(0,0,0,.25);
}
.storage-panel {
    position: fixed; right: 16px; bottom: 112px; z-index: 9998;
    width: 420px; max-height: 75vh; overflow: auto;
    background: #fff; border: 1px solid #ddd; border-radius: 8px; box-shadow: 0 4px 16px rgba(0,0,0,.2);
}
.storage-panel-header { display:flex; justify-content:space-between; align-items:center; padding:8px 12px; background:#f8f9fa; border-bottom:1px solid #eee; }
.storage-panel-header h3 { margin:0; font-size:0.95rem; }
.storage-close-btn { background:none; border:none; font-size:1.2rem; cursor:pointer; }
.storage-tabs { display:flex; gap:4px; padding:8px 12px 0; flex-wrap:wrap; border-bottom:1px solid #eee; }
.storage-tab { background:#eee; border:1px solid #ddd; border-bottom:none; border-radius:6px 6px 0 0; padding:6px 10px; font-size:0.82rem; cursor:pointer; }
.storage-tab.active { background:#fff; font-weight:bold; border-color:#bbb; }
.storage-actions { display:flex; justify-content:space-between; align-items:center; padding:8px 12px; font-size:0.8rem; color:#666; }
.storage-clear-btn { background:#e74c3c; color:#fff; border:none; border-radius:4px; padding:4px 10px; cursor:pointer; font-size:0.8rem; }
.storage-list { padding:8px 12px; }
.storage-item { border:1px solid #eee; border-radius:6px; padding:8px; margin-bottom:8px; }
.storage-item-preview { font-size:0.78rem; color:#444; word-break:break-all; max-height:96px; overflow:auto; background:#fafafa; padding:6px; border-radius:4px; }
.storage-item-actions { display:flex; gap:8px; margin-top:6px; }
.storage-del-btn { background:#e74c3c; color:#fff; border:none; border-radius:4px; padding:4px 10px; cursor:pointer; font-size:0.8rem; }
.storage-detail-btn { background:#3498db; color:#fff; border:none; border-radius:4px; padding:4px 10px; cursor:pointer; font-size:0.8rem; }
.storage-empty { color:#999; font-size:0.85rem; padding:12px; text-align:center; }
.storage-detail { background:#f4f4f4; border:1px solid #eee; border-radius:4px; padding:6px; font-size:0.72rem; max-height:200px; overflow:auto; white-space:pre-wrap; word-break:break-all; margin:6px 0 0; }

/* ===== 云端连接配置面板样式已随配置外部化移除（应用内无配置入口） ===== */

/* ============================================================
   微信自动化面板
   ============================================================ */

/* 顶部按钮 */
.wechat-auto-btn {
    background: linear-gradient(135deg, #07c160, #06ad56);
    color: #fff;
    border: none;
    border-radius: 20px;
    padding: 5px 14px 5px 10px;
    font-size: 0.8rem;
    font-weight: 600;
    cursor: pointer;
    display: flex;
    align-items: center;
    gap: 6px;
    transition: all 0.2s ease;
    box-shadow: 0 2px 8px rgba(7,193,96,0.3);
    white-space: nowrap;
}
.wechat-auto-btn:hover {
    background: linear-gradient(135deg, #06ad56, #059648);
    box-shadow: 0 4px 12px rgba(7,193,96,0.4);
    transform: translateY(-1px);
}
.wechat-status-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    display: inline-block;
    transition: background 0.3s ease;
}
.wechat-status-dot.connected { background: #34c759 !important; box-shadow: 0 0 6px rgba(52,199,89,0.5); }
.wechat-status-dot.disconnected { background: #34c759 !important; }
.agent-switch-btn {
    background: linear-gradient(135deg, #d4af37, #b8860b);
    color: #fff;
    border: none;
    border-radius: 20px;
    padding: 5px 14px 5px 10px;
    font-size: 0.8rem;
    font-weight: 600;
    cursor: pointer;
    display: flex;
    align-items: center;
    gap: 6px;
    transition: all 0.2s ease;
    box-shadow: 0 2px 8px rgba(184,134,11,0.3);
    white-space: nowrap;
}
.agent-switch-btn:hover {
    background: linear-gradient(135deg, #e6c34d, #c8970f);
    box-shadow: 0 4px 12px rgba(184,134,11,0.4);
    transform: translateY(-1px);
}
.agent-switch-btn:disabled {
    background: linear-gradient(135deg, #d4d4d4, #a8a8a8);
    color: rgba(255,255,255,0.9);
    cursor: not-allowed;
    box-shadow: none;
    transform: none;
    opacity: 0.75;
}
.agent-switch-btn:disabled:hover {
    background: linear-gradient(135deg, #d4d4d4, #a8a8a8);
    box-shadow: none;
    transform: none;
}
.wechat-status-dot.checking { background: #ff9500 !important; animation: pulse-dot 1s infinite; }

@keyframes pulse-dot {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.4; }
}

/* ============================================================
   悬浮窗 + 遮罩（居中 60%）
   ============================================================ */
.wechat-overlay {
    position: fixed; top:0; left:0; right:0; bottom:0;
    background: rgba(0,0,0,0.35);
    z-index: 9998; display: none;
    animation: fadeIn 0.2s ease;
}
.wechat-overlay.show { display: block; }
@keyframes fadeIn { from { opacity:0; } to { opacity:1; } }

/* 最小化浮动按钮 */
.wechat-float-btn {
    position: fixed; top: 8px; right: 24px;
    width: 50px; height: 50px;
    border-radius: 50%;
    background: linear-gradient(135deg, #07c160, #06ad56);
    color: #fff;
    font-size: 1.4rem;
    box-shadow: 0 4px 20px rgba(7,193,96,0.4);
    z-index: 10001;
    border: none; cursor: pointer;
    display: none;
    align-items: center; justify-content: center;
    animation: floatIn 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
    transition: transform 0.2s, box-shadow 0.2s;
}
/* 刷新缓存按钮：位于 header 右侧（切换代理版左侧），普通内联按钮 */
.refresh-cache-btn {
    display: inline-flex; align-items: center; gap: 6px;
    height: 36px; padding: 0 14px;
    border-radius: 20px;
    background: linear-gradient(135deg, #2f80ed, #2563eb);
    color: #fff; font-size: 0.85rem; font-weight: 600;
    border: none; cursor: pointer;
    box-shadow: 0 2px 8px rgba(47,128,237,0.3);
    white-space: nowrap;
    transition: all 0.2s ease;
}
.refresh-cache-btn:hover { background: linear-gradient(135deg, #2563eb, #1d4ed8); box-shadow: 0 4px 12px rgba(47,128,237,0.4); transform: translateY(-1px); }
.refresh-cache-btn:active { transform: translateY(0); }
.refresh-cache-btn.spinning i { animation: wmy-spin 0.6s linear infinite; }
@keyframes wmy-spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }

/* 固定在滚动提醒条高度（下移避开顶部「服务续费」按钮），每 2 秒轻微抖动一次以引起注意 */
.wechat-float-btn.show { display: flex; animation: wmy-float-shake 2s ease-in-out infinite; }
.wechat-float-btn.show:hover { animation-play-state: paused; transform: scale(1.1); box-shadow: 0 6px 24px rgba(7,193,96,0.5); }
@keyframes floatIn { from { transform: scale(0); } to { transform: scale(1); } }
@keyframes wmy-float-shake {
    0%, 100% { transform: translateX(0); }
    20% { transform: translateX(-3px); }
    40% { transform: translateX(3px); }
    60% { transform: translateX(-3px); }
    80% { transform: translateX(3px); }
}

/* ============================================================
   报表中心
   ============================================================ */
.report-center { max-width: 1080px; margin: 0 auto; padding: 18px 22px 48px; }
.report-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 18px; padding: 14px 18px; background: linear-gradient(120deg, #f0f6ff, #ffffff); border: 1px solid #e3ecff; border-radius: 14px; }
.report-header h2 { font-size: 1.25rem; margin: 0; color: #1d1d1f; font-weight: 700; }
.report-header h2 i { color: #1890ff; margin-right: 8px; }
.report-actions { display: flex; align-items: center; gap: 12px; }
.report-tag { font-size: 0.78rem; color: #667; background: #eef3ff; padding: 4px 10px; border-radius: 12px; }
.report-settle-btn {
    background: linear-gradient(135deg, #2f9bff, #0a63c9); color: #fff; border: none;
    padding: 9px 20px; border-radius: 9px; font-size: 0.9rem; font-weight: 600; cursor: pointer;
    display: inline-flex; align-items: center; gap: 6px;
    box-shadow: 0 4px 14px rgba(24,144,255,0.32);
    transition: all .2s ease;
}
.report-settle-btn:hover { transform: translateY(-1px); box-shadow: 0 6px 18px rgba(24,144,255,0.42); filter: brightness(1.04); }
.report-settle-btn:active { transform: translateY(1px); box-shadow: 0 2px 8px rgba(24,144,255,0.3); }
/* 结算按钮计算器图标：与"快捷手动录单"手指同款闪烁提醒 */
.report-settle-icon {
    display: inline-block;
    animation: back-to-wechat-blink 2s ease-in-out infinite;
}

.report-lottery-tabs { display: inline-flex; gap: 0; margin-bottom: 18px; border: 1px solid #e3e5e8; border-radius: 10px; overflow: hidden; box-shadow: 0 1px 4px rgba(0,0,0,0.04); }
.report-lottery-tabs .rl-tab {
    background: #f7f8fa; color: #555; border: none; padding: 8px 24px; font-size: 0.88rem;
    cursor: pointer; transition: all .15s ease;
}
.report-lottery-tabs .rl-tab + .rl-tab { border-left: 1px solid #e3e5e8; }
.report-lottery-tabs .rl-tab:hover { background: #eef0f2; }
.report-lottery-tabs .rl-tab.active { background: linear-gradient(135deg, #2f9bff, #0a63c9); color: #fff; font-weight: 600; }

/* 筛选栏：结算日期 / 业务员 */
.report-filter-bar { display: flex; flex-wrap: wrap; align-items: center; gap: 18px; margin-bottom: 18px; padding: 12px 16px; background: #fff; border: 1px solid #eef0f2; border-radius: 12px; box-shadow: 0 1px 4px rgba(0,0,0,0.04); }
.rf-item { display: inline-flex; align-items: center; gap: 8px; font-size: 0.86rem; color: #555; }
.rf-item > span { color: #888; }
.rf-item select { padding: 6px 10px; border: 1px solid #d8dbe0; border-radius: 8px; background: #fff; font-size: 0.86rem; color: #1d1d1f; min-width: 150px; cursor: pointer; }
.rf-item select:focus { outline: none; border-color: #1890ff; box-shadow: 0 0 0 2px rgba(24,144,255,0.15); }
.rf-hint { font-size: 0.8rem; color: #1890ff; margin-left: auto; }

/* 盈利趋势分析 */
.report-trend { margin-top: 8px; padding-top: 8px; }
.rt-range { display: inline-flex; margin-left: auto; gap: 0; border: 1px solid #e3e5e8; border-radius: 9px; overflow: hidden; vertical-align: middle; box-shadow: 0 1px 4px rgba(0,0,0,0.04); }
.rt-btn { background: #f7f8fa; color: #555; border: none; padding: 5px 14px; font-size: 0.82rem; cursor: pointer; transition: all .15s ease; }
.rt-btn + .rt-btn { border-left: 1px solid #e3e5e8; }
.rt-btn:hover { background: #eef0f2; }
.rt-btn.active { background: linear-gradient(135deg, #2f9bff, #0a63c9); color: #fff; font-weight: 600; }
.rt-summary { display: flex; flex-wrap: wrap; gap: 10px 24px; margin: 6px 0 14px; padding: 14px 18px; background: linear-gradient(120deg, #f5f9ff, #ffffff); border: 1px solid #e3ecff; border-radius: 12px; }
.rt-stat { display: inline-flex; flex-direction: column; line-height: 1.3; padding: 0 8px; border-left: 2px solid #e3ecff; padding-left: 14px; }
.rt-stat em { font-style: normal; font-size: 0.74rem; color: #999; margin-bottom: 3px; }
.rt-stat b { font-size: 1.02rem; font-weight: 700; color: #1d1d1f; }
.rt-stat b.rc-pos { color: #e02020; }
.rt-stat b.rc-neg { color: #0a8f3c; }
.rt-chart { background: linear-gradient(180deg, #ffffff, #fafcff); border: 1px solid #e3ecff; border-radius: 14px; padding: 18px; box-shadow: 0 3px 14px rgba(24,144,255,0.07); }
.rt-svg { width: 100%; height: auto; display: block; }
.rt-grid { stroke: #eef2f8; stroke-width: 1; }
.rt-zero { stroke: #c7ccd4; stroke-width: 1.2; stroke-dasharray: 4 4; }
.rt-area { fill: url(#rtAreaGrad); }
.rt-line { fill: none; stroke: #2f9bff; stroke-width: 2.4; stroke-linejoin: round; stroke-linecap: round; }
.rt-dot-pos { fill: #1890ff; stroke: #fff; stroke-width: 1.6; }
.rt-dot-neg { fill: #ff3b30; stroke: #fff; stroke-width: 1.6; }
.rt-axis-label { fill: #9aa0a8; font-size: 11px; }
.rt-empty { padding: 30px; text-align: center; color: #aaa; font-size: 0.9rem; }

.report-empty {
    display: flex; align-items: center; gap: 10px; padding: 26px; border: 1px dashed #c3d4f0;
    border-radius: 12px; color: #888; font-size: 0.92rem; background: #f7faff;
}
.report-empty i { color: #1890ff; font-size: 1.2rem; }
.report-empty strong { color: #1890ff; }

.report-body { margin-top: 4px; }
.report-summary { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 14px; margin-bottom: 18px; }
.rc-card {
    position: relative; overflow: hidden;
    background: #fff; border: 1px solid #e7edf5; border-radius: 14px;
    padding: 16px 18px 16px 20px;
    box-shadow: 0 2px 10px rgba(15,54,102,0.05);
    transition: transform .18s ease, box-shadow .18s ease;
}
.rc-card:hover { transform: translateY(-2px); box-shadow: 0 6px 18px rgba(15,54,102,0.1); }
.rc-card::before { content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 4px; background: #d9e7ff; }
.rc-card.bet::before { background: #1890ff; }
.rc-card.payout::before { background: #ff6b5e; }
.rc-card.rebate::before { background: #ffa940; }
.rc-card.profit.pos::before { background: #e02020; }
.rc-card.profit.neg::before { background: #0a8f3c; }
.rc-card-label { font-size: 0.8rem; color: #8a97a8; margin-bottom: 8px; }
.rc-card-value { font-size: 1.45rem; font-weight: 700; color: #1d1d1f; letter-spacing: -0.02em; }
.rc-card.bet .rc-card-value { color: #1890ff; }
.rc-card.payout .rc-card-value { color: #ff4d4f; }
.rc-card.rebate .rc-card-value { color: #fa8c16; }
.rc-card.profit.pos .rc-card-value { color: #e02020; }
.rc-card.profit.neg .rc-card-value { color: #0a8f3c; }
.rc-card.operate { border-color: #bfd8ff; box-shadow: 0 4px 16px rgba(24,144,255,0.14); background: linear-gradient(180deg, #eef6ff, #ffffff); }

.report-section { margin-bottom: 26px; }
.report-section-title { font-size: 1rem; font-weight: 700; color: #1d1d1f; margin-bottom: 12px; padding-left: 12px; border-left: 4px solid #1890ff; line-height: 1.2; }
.report-section-title i { color: #1890ff; margin-right: 6px; }
.report-table-wrap { background: #fff; border: 1px solid #e7edf5; border-radius: 14px; overflow: hidden; box-shadow: 0 2px 10px rgba(15,54,102,0.05); }
.report-table { width: 100%; border-collapse: collapse; font-size: 0.88rem; }
.report-table th, .report-table td { padding: 12px 14px; text-align: right; border-bottom: 1px solid #f0f3f7; }
.report-table th { background: linear-gradient(180deg, #f2f7ff, #eaf2ff); color: #3a567a; font-weight: 600; }
.report-table td:first-child, .report-table th:first-child { text-align: left; }
.report-table tbody tr:last-child td { border-bottom: none; }
.report-table tbody tr:nth-child(even) { background: #fafcff; }
.report-table tbody tr:hover { background: #eef6ff; }
.report-table .rc-pos { color: #e02020; font-weight: 600; }
.report-table .rc-neg { color: #0a8f3c; font-weight: 600; }
.report-table .rc-name { font-weight: 600; color: #1d1d1f; }
.report-table .rc-empty { text-align: center !important; color: #aaa; padding: 20px; }
.rc-admin-badge { font-size: 0.68rem; color: #fa8c16; background: #fff7e6; border: 1px solid #ffd591; padding: 1px 6px; border-radius: 8px; margin-left: 6px; }
.rc-admin-row { background: #fffdf7; }
.rc-ratio { white-space: nowrap; }
.rc-ratio .rc-bar { display: inline-block; width: 70px; height: 8px; background: #eef2f7; border-radius: 999px; overflow: hidden; vertical-align: middle; margin-right: 6px; }
.rc-ratio .rc-bar span { display: block; height: 100%; background: linear-gradient(90deg, #2f9bff, #0a63c9); border-radius: 999px; }
.rc-ratio em { font-style: normal; color: #888; font-size: 0.78rem; }

/* 业务员业绩行：可展开，占成金额 + 灰字显示未占成 */
.rc-row-main { cursor: pointer; transition: background .12s ease; }
.rc-row-main:hover { background: #f0f7ff; }
.rc-toggle { color: #1890ff; font-weight: 700; font-size: 1rem; text-align: center; user-select: none; }
.rc-row-main:hover .rc-toggle { transform: translateX(2px); transition: transform 0.15s; }
.rc-raw { display: block; color: #999; font-size: 0.75rem; font-weight: 400; margin-top: 2px; line-height: 1.2; text-align: center; }
/* 业务员概览行：所有单元格内容居中显示（展开明细不受影响） */
#reportSalesTable .rc-row-main td { text-align: center; }
#reportSalesTable .rc-row-main .rc-main-amt { display: block; }
#reportSalesTable .rc-row-main .rc-ratio { text-align: center; }
#reportSalesTable .rc-row-main .rc-ratio .rc-bar { display: inline-block; }
/* 未占成/未计算占成：金额在上、说明文字换行居中 */
.rc-raw-note { text-align: center; margin-top: 4px; line-height: 1.4; }
.rc-raw-note .rc-raw-amt { display: block; color: #a6aeb8; font-size: 0.72rem; }
.rc-raw-note .rc-raw-label { display: block; color: #b3bac4; font-size: 0.68rem; letter-spacing: 0.02em; }
/* ★ 2026-08-22 展开明细行：父表格真实 <tr>，与抬头共享列网格，数字列严格对齐。
   原文占「业务员/客户+占成」两列，时间列已移除，右侧数值列左移对齐抬头。 */
.rc-detail-row td {
    background: #f7faff;
    padding: 6px 10px;
    border-bottom: 1px solid #eaf0f7;
    font-size: 0.82rem;
    text-align: center;
}
.rc-detail-row .rc-detail-indent { width: 28px; }
.rc-detail-row .rc-detail-raw {
    text-align: left;
    max-width: 300px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    color: #44566e;
}
.rc-detail-row .rc-raw { color: #a6aeb8; font-size: 0.72rem; }
.rc-detail-row .rc-ratio { color: #b3bac4; }

/* 经营亏构成 */
.report-operating { display: flex; align-items: stretch; flex-wrap: wrap; gap: 10px; background: linear-gradient(120deg, #eef6ff, #f7fbff); border: 1px solid #cfe1ff; border-radius: 14px; padding: 16px 18px; margin-bottom: 22px; box-shadow: 0 2px 10px rgba(15,54,102,0.04); }
.report-operating .ro-item { display: flex; flex-direction: column; gap: 4px; flex: 1 1 160px; }
.report-operating .ro-item > span { font-size: 0.78rem; color: #5b7fa8; }
.report-operating .ro-item > b { font-size: 1.15rem; font-weight: 700; color: #1d1d1f; }
.report-operating .ro-item.ro-total > span { color: #5b7fa8; font-weight: 600; }
.report-operating .ro-item.ro-total > b { font-size: 1.35rem; }
.report-operating .ro-item.ro-total > b.rc-pos { color: #e02020; }
.report-operating .ro-item.ro-total > b.rc-neg { color: #0a8f3c; }
.report-operating .ro-item.ro-total > b.rc-zero { color: #1d1d1f; }
.report-operating .ro-plus, .report-operating .ro-eq { display: flex; align-items: center; font-size: 1.2rem; font-weight: 700; color: #9fb8d8; }
.rc-pos { color: #e02020; font-weight: 600; }
.rc-neg { color: #0a8f3c; font-weight: 600; }
.rc-zero { color: #6e6e73; font-weight: 600; }

/* 管理员 / 补货 盈亏（单列） */
.report-admin-block { background: #fff; border: 1px solid #e7edf5; border-radius: 14px; padding: 16px 18px; box-shadow: 0 2px 10px rgba(15,54,102,0.05); }
.ra-card { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; }
.ra-row { display: flex; flex-direction: column; gap: 4px; }
.ra-row > span { font-size: 0.8rem; color: #888; }
.ra-row > b { font-size: 1.2rem; font-weight: 700; color: #1d1d1f; }
.ra-row.ra-profit > b { color: #fa8c16; }
.ra-note { margin-top: 12px; font-size: 0.78rem; color: #999; }
.ra-empty { color: #aaa; font-size: 0.9rem; }

/* 实际占成金额（括号标注） */
.rc-occ { font-size: 0.78rem; color: #888; font-weight: 400; margin-left: 2px; }

.report-meta { margin-top: 8px; font-size: 0.8rem; color: #999; line-height: 1.7; }

/* 面板本体 — 居中悬浮60% */
.wechat-panel {
    position: fixed;
    top: 50%; left: 50%;
    transform: translate(-50%, -50%);
    width: 60vw; height: 60vh;
    max-width: 1024px; max-height: 768px;
    min-width: 480px; min-height: 380px;
    z-index: 10000;
    background: #ffffff;
    border-radius: 12px;
    box-shadow: 0 12px 48px rgba(0,0,0,0.25);
    display: none;
    flex-direction: column;
    overflow: hidden;
    animation: popIn 0.25s cubic-bezier(0.22, 0.61, 0.36, 1);
}
.wechat-panel.show { display: flex; }
@keyframes popIn {
    from { transform: translate(-50%, -50%) scale(0.9); opacity: 0; }
    to { transform: translate(-50%, -50%) scale(1); opacity: 1; }
}

/* 面板头部 */
.wechat-panel-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 10px 16px;
    background: linear-gradient(135deg, #07c160, #06ad56);
    color: #fff;
    flex-shrink: 0;
    gap: 8px;
}
.wechat-panel-title {
    font-size: 1rem;
    font-weight: 700;
    display: flex;
    align-items: center;
    gap: 10px;
}
.wechat-status-badge {
    font-size: 0.7rem;
    background: rgba(255,255,255,0.25);
    padding: 2px 10px;
    border-radius: 12px;
    font-weight: 500;
}
.wechat-header-btns { display:flex; gap:6px; align-items:center; }
.wechat-min-btn, .wechat-close-btn {
    background: rgba(255,255,255,0.2);
    border: none; color: #fff;
    width: 30px; height: 30px;
    border-radius: 50%;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.1rem;
    transition: background 0.15s;
}
.wechat-min-btn { font-size:1.3rem; line-height:1; }
.wechat-min-btn:hover, .wechat-close-btn:hover { background: rgba(255,255,255,0.35); }

/* Tab 栏 */
.wechat-tabs {
    display: flex;
    background: #f8f9fa;
    border-bottom: 1px solid #e5e5e7;
    flex-shrink: 0;
}
.wechat-tab {
    flex: 1;
    padding: 10px 0;
    border: none;
    background: transparent;
    font-size: 0.82rem;
    cursor: pointer;
    color: #666;
    font-weight: 500;
    border-bottom: 2px solid transparent;
    transition: all 0.15s;
}
.wechat-tab:hover { color: #07c160; }
.wechat-tab.active {
    color: #07c160;
    font-weight: 600;
    border-bottom-color: #07c160;
}

/* 内容区 */
.wechat-tab-content {
    flex: 1;
    overflow-y: auto;
    padding: 14px 16px;
    display: flex;
    flex-direction: column;
    gap: 14px;
}

/* 区块 */
.wechat-section {
    background: #f8f9fa;
    border: 1px solid #e5e5e7;
    border-radius: 10px;
    padding: 12px 14px;
}
.wechat-section-title {
    font-weight: 700;
    font-size: 0.85rem;
    color: #1d1d1f;
    margin-bottom: 10px;
    display: flex;
    align-items: center;
    gap: 6px;
}

/* 心跳状态条：登录后界面顶部居中，与消息计数区分 */
.wechat-heartbeat-bar {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    margin: 0 0 12px;
    padding: 8px 10px;
    background: linear-gradient(90deg, #eaf7ee, #f3fbf5);
    border: 1px solid #c8e9d2;
    border-radius: 10px;
    font-size: 0.82rem;
    color: #1a9e4b;
    font-weight: 600;
}
.wechat-heartbeat-dot {
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background: #1a9e4b;
    box-shadow: 0 0 0 0 rgba(26, 158, 75, 0.5);
    animation: wechat-heartbeat-pulse 1.4s infinite;
}
.wechat-heartbeat-bar.stale {
    background: linear-gradient(90deg, #fdecec, #fdf3f3);
    border-color: #f3c9c9;
    color: #c0392b;
}
.wechat-heartbeat-bar.stale .wechat-heartbeat-dot {
    background: #c0392b;
    animation: none;
}
@keyframes wechat-heartbeat-pulse {
    0%   { box-shadow: 0 0 0 0 rgba(26, 158, 75, 0.5); }
    70%  { box-shadow: 0 0 0 7px rgba(26, 158, 75, 0); }
    100% { box-shadow: 0 0 0 0 rgba(26, 158, 75, 0); }
}

/* 行 */
.wechat-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 6px 0;
    border-bottom: 1px solid #f0f0f2;
    font-size: 0.82rem;
    color: #555;
}
.wechat-row:last-child { border-bottom: none; }
.wechat-value {
    font-weight: 600;
    color: #1d1d1f;
    font-family: 'SF Mono', Monaco, monospace;
    font-size: 0.78rem;
}
.wechat-value.ok { color: #34c759; }
.wechat-value.error { color: #ff3b30; }
.wechat-value.warning { color: #ff9500; }

/* 操作按钮行 */
.wechat-actions-row {
    display: flex;
    gap: 8px;
    margin-top: 8px;
    flex-wrap: wrap;
}

/* 通用按钮 */
.wechat-btn {
    padding: 7px 14px;
    border: none;
    border-radius: 8px;
    cursor: pointer;
    font-size: 0.8rem;
    font-weight: 600;
    transition: all 0.15s;
    display: flex;
    align-items: center;
    gap: 5px;
}
.wechat-btn:hover { filter: brightness(1.08); transform: translateY(-1px); }
.wechat-btn:active { transform: scale(0.97); }
.wechat-btn.start { background: #07c160; color: #fff; }
.wechat-btn.stop { background: #ff3b30; color: #fff; }
.wechat-btn.refresh { background: #007aff; color: #fff; }
.wechat-btn.small { padding: 4px 10px; font-size: 0.7rem; }

/* 表单 */
.wechat-form {
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.wechat-form-row {
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.wechat-form-row label {
    font-size: 0.75rem;
    font-weight: 600;
    color: #666;
}
.wechat-form-row input,
.wechat-form-row select {
    padding: 7px 10px;
    border: 1px solid #d1d1d6;
    border-radius: 7px;
    font-size: 0.82rem;
    background: #fff;
    transition: border-color 0.15s;
}
.wechat-form-row input:focus,
.wechat-form-row select:focus {
    outline: none;
    border-color: #07c160;
    box-shadow: 0 0 0 3px rgba(7,193,96,0.15);
}

/* 统计卡片网格 */
.wechat-stats-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 8px;
}
.wechat-stat-card {
    background: #fff;
    border: 1px solid #e5e5e7;
    border-radius: 8px;
    padding: 12px 10px;
    text-align: center;
}
.wechat-stat-num {
    font-size: 1.5rem;
    font-weight: 700;
    color: #07c160;
    font-family: 'SF Mono', Monaco, monospace;
}
.wechat-stat-label {
    font-size: 0.7rem;
    color: #999;
    margin-top: 2px;
}

/* 映射列表 */
.wechat-mapping-list {
    max-height: 260px;
    overflow-y: auto;
}
.wechat-mapping-item {
    background: #fff;
    border: 1px solid #e5e5e7;
    border-radius: 8px;
    padding: 10px 12px;
    margin-bottom: 8px;
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 8px;
}
.wechat-mapping-info {
    flex: 1;
    min-width: 0;
}
.wechat-mapping-info .arrow {
    color: #07c160;
    font-size: 0.75rem;
}
.wechat-mapping-info .source {
    font-size: 0.78rem;
    color: #333;
}
.wechat-mapping-info .target {
    font-size: 0.75rem;
    color: #007aff;
    font-weight: 600;
}
.wechat-mapping-status {
    font-size: 0.68rem;
    padding: 2px 8px;
    border-radius: 10px;
    font-weight: 500;
    white-space: nowrap;
}
.wechat-mapping-status.enabled { background: #e8f5e9; color: #2e7d32; }
.wechat-mapping-status.disabled { background: #f5f5f5; color: #999; }
.wechat-mapping-actions {
    display: flex;
    gap: 4px;
    flex-shrink: 0;
}
.wechat-mapping-actions button {
    background: none;
    border: 1px solid #ddd;
    border-radius: 5px;
    padding: 3px 8px;
    font-size: 0.7rem;
    cursor: pointer;
    color: #666;
    transition: all 0.15s;
}
.wechat-mapping-actions button:hover { background: #f0f0f0; }
.wechat-mapping-actions button.danger:hover { background: #ffe5e5; color: #ff3b30; border-color: #ff3b30; }

/* 日志列表 */
.wechat-log-list {
    max-height: 350px;
    overflow-y: auto;
}
.wechat-log-item {
    padding: 8px 10px;
    border-bottom: 1px solid #f0f0f2;
    font-size: 0.78rem;
    display: flex;
    align-items: flex-start;
    gap: 8px;
}
.wechat-log-icon { flex-shrink: 0; margin-top: 1px; }
.wechat-log-icon.success { color: #34c759; }
.wechat-log-icon.error { color: #ff3b30; }
.wechat-log-icon.info { color: #007aff; }
.wechat-log-body { flex: 1; min-width: 0; }
.wechat-log-time { font-size: 0.7rem; color: #999; }

/* 空状态 */
.wechat-empty {
    color: #999;
    font-size: 0.85rem;
    text-align: center;
    padding: 24px;
}

/* 底部提示 */
.wechat-panel-footer {
    padding: 10px 16px;
    background: #f8f9fa;
    border-top: 1px solid #e5e5e7;
    font-size: 0.75rem;
    color: #999;
    text-align: center;
    flex-shrink: 0;
}

/* ============================================================
   调试 Tab
   ============================================================ */
.wechat-debug-console {
    max-height: 400px;
    overflow-y: auto;
    font-family: 'SF Mono', Monaco, 'Courier New', monospace;
    font-size: 0.72rem;
    background: #1d1d1f;
    color: #34c759;
    border-radius: 8px;
    padding: 12px;
    line-height: 1.5;
}
.wechat-debug-line { padding: 2px 0; border-bottom: 1px solid #2c2c2e; }
.wechat-debug-line:last-child { border-bottom: none; }
.wechat-debug-line.ok { color: #34c759; }
.wechat-debug-line.warn { color: #ff9500; }
.wechat-debug-line.error { color: #ff3b30; }
.wechat-debug-line.info { color: #5ac8fa; }
.wechat-debug-line.heading { color: #fff; font-weight: 700; font-size: 0.78rem; padding: 6px 0; }
.wechat-debug-line .label { color: #8e8e93; }
.wechat-debug-line .val { color: #fff; }

.wechat-debug-env {
    font-family: 'SF Mono', Monaco, monospace;
    font-size: 0.72rem;
    color: #666;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 4px 12px;
}
.wechat-debug-env-item { padding: 2px 0; }
.wechat-debug-env-item .key { color: #999; }
.wechat-debug-env-item .val { color: #333; font-weight: 600; }

/* ============================================================
   智能账务统计平台 —— 顶部标题栏 / 提醒条 / 主导航 / 侧边栏 / 页面框架
   仅影响布局与视觉，不涉及任何业务逻辑
   ============================================================ */

/* ---------- 顶部标题栏 ---------- */
.app-header {
    flex-shrink: 0;
    background: var(--mac-glass-strong);
    backdrop-filter: blur(24px) saturate(180%);
    -webkit-backdrop-filter: blur(24px) saturate(180%);
    border-bottom: 1px solid var(--mac-separator);
    box-shadow: var(--mac-shadow-sm);
}
.app-header-inner {
    display: flex;
    align-items: center;
    gap: 20px;
    height: 58px;
    padding: 0 22px;
    background:
        radial-gradient(1200px 120px at 10% -60%, rgba(10,132,255,0.10), transparent 60%),
        radial-gradient(1000px 120px at 90% -60%, rgba(52,199,89,0.10), transparent 60%);
}
.app-header-left { display: flex; align-items: center; gap: 12px; flex-shrink: 0; }
/* 品牌图标：朱砂红底衬金元宝（红金配 = 财气，与"金算盘"品牌呼应） */
.app-logo {
    width: 38px; height: 38px;
    border-radius: 11px;
    background: linear-gradient(135deg, #8e1c1c, #c62828);
    display: flex; align-items: center; justify-content: center;
    box-shadow: 0 4px 14px rgba(198, 40, 40, 0.35), inset 0 1px 0 rgba(255, 255, 255, 0.25);
    flex-shrink: 0;
}
.app-brand-text { display: flex; flex-direction: column; justify-content: center; gap: 2px; min-width: 0; }
.app-title {
    font-size: 1.12rem;
    font-weight: 800;
    letter-spacing: 0.5px;
    margin: 0;
    background: linear-gradient(120deg, #1d1d1f, #0a84ff);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    white-space: nowrap;
}
/* 品牌标语：金色渐变字 + 两侧金线点缀 */
.app-slogan {
    font-size: 0.68rem;
    letter-spacing: 2px;
    white-space: nowrap;
    display: flex; align-items: center; gap: 6px;
    background: linear-gradient(90deg, #a4690a, #e8a410, #a4690a);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
}
.app-slogan::before, .app-slogan::after {
    content: '';
    width: 14px; height: 1px;
    flex-shrink: 0;
}
.app-slogan::before { background: linear-gradient(90deg, rgba(217, 165, 32, 0), rgba(217, 165, 32, 0.9)); }
.app-slogan::after { background: linear-gradient(90deg, rgba(217, 165, 32, 0.9), rgba(217, 165, 32, 0)); }
.app-subtitle {
    font-size: 0.72rem;
    color: var(--mac-text-secondary);
    margin-top: 1px;
    display: block;
    white-space: nowrap;
}

/* ---------- 顶部主导航 ---------- */
.app-nav { display: flex; gap: 6px; flex: 1; justify-content: center; min-width: 0; }
.app-nav-item {
    border: none;
    background: transparent;
    color: var(--mac-text-secondary);
    font-size: 0.9rem;
    font-weight: 600;
    padding: 8px 16px;
    border-radius: 10px;
    cursor: pointer;
    white-space: nowrap;
    transition: all 0.18s ease;
}
.app-nav-item:hover { background: rgba(10,132,255,0.08); color: var(--mac-accent); }
.app-nav-item.active {
    background: var(--mac-accent);
    color: #fff;
    box-shadow: 0 2px 8px rgba(10,132,255,0.35);
}

/* 头部右侧 */
.app-header-right { display: flex; align-items: center; gap: 10px; flex-shrink: 0; }
.app-settings-btn {
    display: inline-flex; align-items: center; gap: 6px;
    background: #f2f2f5;
    border: 1px solid var(--mac-separator);
    color: var(--mac-text);
    border-radius: 10px;
    padding: 7px 14px;
    font-size: 0.82rem; font-weight: 600;
    cursor: pointer;
    transition: all 0.18s ease;
}
.app-settings-btn:hover { background: #e8e8ed; }

/* 开奖结果：位于滚动条右侧，与滚动条同排（无 fixed 偏移）；号码用球色区分 + 标注生肖 */
.app-reminder-draw {
    flex-shrink: 0;
    display: flex; align-items: center; gap: 5px;
    height: 30px;
    padding: 0 14px 0 12px;
    background: linear-gradient(90deg, #fff8f0, #ffffff 55%);
    border-left: 3px solid;
    border-image: linear-gradient(180deg, #ff9f43, #e53935) 1;
    color: #1d1d1f;
    font-size: 0.78rem;
    white-space: nowrap;
}
.app-reminder-draw .draw-date {
    display: inline-flex; align-items: center;
    padding: 1px 8px;
    border-radius: 999px;
    background: linear-gradient(135deg, #ff6b5e, #e0352b);
    color: #fff; font-weight: 700; font-size: 0.7rem;
    letter-spacing: 0.5px;
    box-shadow: 0 1px 3px rgba(224, 53, 43, 0.35);
    flex-shrink: 0;
}
.app-reminder-draw .draw-label {
    color: #6e6e73; font-weight: 600; font-size: 0.72rem;
    flex-shrink: 0;
}
.app-reminder-draw .draw-ball {
    display: inline-flex; align-items: center; justify-content: center;
    width: 21px; height: 21px; border-radius: 50%;
    color: #fff; font-size: 0.7rem; font-weight: 700; line-height: 1;
    flex-shrink: 0;
    box-shadow: inset 0 1px 1px rgba(255,255,255,0.45), 0 1px 2px rgba(0,0,0,0.25);
}
.app-reminder-draw .draw-ball.red { background: linear-gradient(135deg, #ff5f57, #e53935); }
.app-reminder-draw .draw-ball.blue { background: linear-gradient(135deg, #4da3ff, #1e6fe0); }
.app-reminder-draw .draw-ball.green { background: linear-gradient(135deg, #34c759, #0fa53a); }
.app-reminder-draw .draw-ball.draw-special {
    box-shadow: inset 0 1px 1px rgba(255,255,255,0.45), 0 0 0 2px #f5b800, 0 0 0 3px #fff, 0 0 6px rgba(245, 184, 0, 0.8);
}
.app-reminder-draw .draw-zodiac {
    display: inline-flex; align-items: center;
    color: #5b5b60; font-weight: 600; font-size: 0.68rem;
    margin-left: 1px; flex-shrink: 0;
    background: #f4f4f6;
    border-radius: 6px;
    padding: 1px 4px;
}

/* 下载按钮：滚动条开奖日期左侧（Mac 蓝胶囊按钮，点击进入产品宣传页） */
.app-reminder-download-btn {
    flex-shrink: 0;
    display: inline-flex; align-items: center; gap: 5px;
    height: 22px;
    margin-left: 10px;
    padding: 0 13px;
    border: none;
    border-radius: 999px;
    background: linear-gradient(135deg, #4da3ff, #0a84ff);
    color: #fff;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 1px;
    cursor: pointer;
    white-space: nowrap;
    box-shadow: 0 1px 4px rgba(10, 132, 255, 0.4);
    transition: all 0.18s ease;
}
.app-reminder-download-btn:hover {
    background: linear-gradient(135deg, #0a84ff, #0066cc);
    box-shadow: 0 2px 8px rgba(10, 132, 255, 0.5);
    transform: translateY(-1px);
}
.app-reminder-download-btn:active { transform: translateY(0); }

/* ---------- 红色滚动提醒条 ---------- */
.app-reminder {
    flex-shrink: 0;
    background: #fff3f3;
    border-bottom: 1px solid rgba(255,59,48,0.18);
    overflow: hidden;
    height: 30px;
    display: flex;
    align-items: center;
}
.app-reminder::before {
    content: "⚠️";
    position: relative;
    z-index: 2;
    padding-left: 14px;
    font-size: 0.8rem;
    background: linear-gradient(to right, #fff3f3 70%, transparent);
    flex-shrink: 0;
}
.app-reminder-track {
    flex: 1;
    overflow: hidden;
    white-space: nowrap;
    height: 30px;
    display: flex;
    align-items: center;
}
.app-reminder-text {
    display: inline-block;
    padding-left: 100%;
    font-size: 0.82rem;
    font-weight: 700;
    color: #e0352b;
    animation: reminder-scroll 18s linear infinite;
    letter-spacing: 1px;
}
@keyframes reminder-scroll {
    0% { transform: translateX(0); }
    100% { transform: translateX(-100%); }
}

/* ---------- 主内容区（侧边栏 + 页面） ---------- */
.app-container { flex-direction: column; gap: 6px; }
.main-content { flex-direction: row !important; }
.recorder-sidebar {
    width: 216px;
    min-width: 176px;
    flex-shrink: 0;
    display: flex;
    flex-direction: column;
    background: var(--mac-glass);
    backdrop-filter: blur(24px) saturate(180%);
    -webkit-backdrop-filter: blur(24px) saturate(180%);
    border: 1px solid var(--mac-glass-border);
    border-radius: var(--mac-radius-lg);
    box-shadow: var(--mac-shadow-sm);
    overflow: hidden;
    margin: 0;
}
.recorder-sidebar-header {
    display: flex; align-items: center; justify-content: space-between;
    padding: 12px 14px;
    border-bottom: 1px solid var(--mac-separator);
    background: linear-gradient(to bottom, #fbfbfd, #f2f2f5);
}
.recorder-sidebar-title { font-size: 0.88rem; font-weight: 700; color: var(--mac-text); display: flex; align-items: center; gap: 6px; }
.recorder-add-btn {
    border: none; background: var(--mac-accent); color: #fff;
    width: 24px; height: 24px; border-radius: 7px; cursor: pointer;
    display: flex; align-items: center; justify-content: center; font-size: 0.8rem;
    transition: filter 0.15s;
}
.recorder-add-btn:hover { filter: brightness(1.1); }
.recorder-sidebar-search { padding: 8px 10px; border-bottom: 1px solid var(--mac-separator); }
.recorder-search-input {
    width: 100%; box-sizing: border-box;
    border: 1px solid var(--mac-separator); border-radius: 8px;
    padding: 6px 10px; font-size: 0.78rem; background: #fafafa; color: var(--mac-text);
    outline: none; transition: border-color 0.15s, box-shadow 0.15s;
}
.recorder-search-input:focus { border-color: var(--mac-accent); box-shadow: 0 0 0 3px rgba(10,132,255,0.15); }
.recorder-sidebar-list { flex: 1; overflow-y: auto; padding: 6px; }
.recorder-item {
    display: flex; align-items: center; gap: 10px;
    padding: 9px 10px; border-radius: 10px; cursor: pointer;
    transition: background 0.15s;
}
.recorder-item:hover { background: rgba(10,132,255,0.07); }
.recorder-avatar {
    width: 34px; height: 34px; border-radius: 50%;
    background: linear-gradient(135deg, #0a84ff, #5ac8fa);
    color: #fff; font-weight: 700;
    display: flex; align-items: center; justify-content: center; font-size: 0.95rem; flex-shrink: 0;
}
.recorder-info { flex: 1; min-width: 0; }
.recorder-name { font-size: 0.82rem; font-weight: 600; color: var(--mac-text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.recorder-meta { font-size: 0.68rem; color: var(--mac-text-secondary); }
.recorder-profit { font-size: 0.8rem; font-weight: 700; flex-shrink: 0; }
.recorder-profit.pos { color: #ff453a; }
.recorder-profit.neg { color: #0b6e2e; }
.recorder-profit.na { color: #999; font-weight: 500; }
/* 需求5：业务员列表右侧 修改/删除 操作区 */
.recorder-ops {
    display: flex; flex-direction: column; gap: 2px;
    flex-shrink: 0;
}
.recorder-op-btn {
    border: none; background: rgba(10,132,255,0.1);
    color: var(--mac-accent);
    width: 22px; height: 20px; border-radius: 5px;
    cursor: pointer; font-size: 0.68rem;
    display: flex; align-items: center; justify-content: center;
    transition: background 0.15s;
}
.recorder-op-btn:hover { background: rgba(10,132,255,0.2); }
.recorder-op-btn.recorder-op-del { background: rgba(255,69,58,0.08); color: #ff453a; }
.recorder-op-btn.recorder-op-del:hover { background: rgba(255,69,58,0.16); }
/* 业务员列表项右侧三角形菜单按钮（⋮） */
.recorder-menu-btn {
    border: none; background: transparent;
    color: var(--mac-text-secondary);
    width: 24px; height: 24px; border-radius: 5px;
    cursor: pointer; font-size: 0.85rem;
    display: flex; align-items: center; justify-content: center;
    transition: background 0.15s, color 0.15s;
}
.recorder-menu-btn:hover { background: rgba(10,132,255,0.12); color: var(--mac-accent); }
/* 三角形菜单小弹窗（修改/删除） */
.dc-recorder-menu {
    position: fixed; z-index: 1100;
    background: #fff;
    border-radius: 8px;
    box-shadow: 0 6px 24px rgba(0,0,0,0.18);
    border: 1px solid var(--mac-separator);
    min-width: 120px;
    overflow: hidden;
}
.dc-recorder-menu-item {
    padding: 9px 14px;
    font-size: 0.82rem;
    color: var(--mac-text);
    cursor: pointer;
    display: flex; align-items: center; gap: 8px;
    transition: background 0.12s;
}
.dc-recorder-menu-item:hover { background: rgba(10,132,255,0.08); }
.dc-recorder-menu-item.dc-recorder-menu-del { color: #ff453a; }
.dc-recorder-menu-item.dc-recorder-menu-del:hover { background: rgba(255,69,58,0.1); }
/* 管理员(补货专用)：菜单项禁用态 */
.dc-recorder-menu-item.dc-recorder-menu-disabled {
    color: #b0b0b8;
    cursor: not-allowed;
    opacity: 0.7;
}
.dc-recorder-menu-item.dc-recorder-menu-disabled:hover { background: transparent; }

/* 业务员编辑弹窗扩展字段（蓝色风格） */
.dc-customer-modal-blue .modal-content {
    border-radius: 14px;
    overflow: hidden;
    box-shadow: 0 8px 40px rgba(0,0,0,0.25);
    border-top: 4px solid var(--mac-accent);
}
.dc-customer-modal-blue .modal-header {
    background: linear-gradient(135deg, var(--mac-accent), #5ac8fa);
    color: #fff;
    border-bottom: none;
}
.dc-customer-modal-blue .modal-header .title { color: #fff; font-weight: 700; }
.dc-customer-modal-blue .modal-header .close-modal { color: rgba(255,255,255,0.85); }

/* 业务员编辑/新增弹窗（#customerModal）：蓝色 header 与补货弹窗风格统一 */
#customerModal .modal-content {
    padding: 0;
    border-radius: 0;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    max-height: 85vh;
    width: 90%;
    max-width: 720px;
    box-shadow: 0 8px 40px rgba(0,0,0,0.25);
}
#customerModal .modal-header {
    flex-shrink: 0;
    padding: 12px 16px;
    margin: 0;
    background: linear-gradient(135deg, var(--mac-accent), #5ac8fa);
    color: #fff;
    border-bottom: none;
}
#customerModal .modal-header h3 { color: #fff; font-weight: 700; margin: 0; }
#customerModal .modal-header .close-modal { color: rgba(255,255,255,0.9); }
#customerModal .modal-body {
    flex: 1 1 auto;
    min-height: 0;
    padding: 16px;
    overflow-y: auto;
    overflow-x: hidden;
}
#customerModal .modal-body::-webkit-scrollbar { width: 8px; }
#customerModal .modal-body::-webkit-scrollbar-thumb { background: rgba(0,0,0,0.2); border-radius: 999px; }
#customerModal .modal-body::-webkit-scrollbar-thumb:hover { background: rgba(0,0,0,0.32); }
#customerModal .modal-footer {
    flex-shrink: 0;
    padding: 12px 16px;
    border-top: 1px solid #ddd;
    display: flex;
    justify-content: flex-end;
    gap: 8px;
}
.dc-customer-extras { margin-bottom: 14px; }
.dc-customer-extra-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px 16px;
    background: #f0f7ff;
    border: 1px solid #bcd8f7;
    border-radius: 10px;
    padding: 12px 14px;
}
.dc-customer-field { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.dc-customer-field.dc-field-full { grid-column: span 2; }
.dc-customer-field label { font-size: 0.78rem; color: var(--mac-text-secondary); font-weight: 600; }
.dc-customer-field input,
.dc-customer-field select {
    border: 1px solid var(--mac-separator); border-radius: 7px;
    padding: 5px 10px; font-size: 0.85rem; color: var(--mac-text);
    background: #fff; outline: none;
    width: 100%; box-sizing: border-box;
}
.dc-customer-field input:focus,
.dc-customer-field select:focus { border-color: var(--mac-accent); box-shadow: 0 0 0 3px rgba(10,132,255,0.12); }
.dc-customer-field input[readonly] { background: #f5f5f7; color: #666; }
.dc-pwd-row { display: flex; gap: 6px; }
.dc-pwd-row input { flex: 1; }
.dc-pwd-gen {
    border: 1px solid var(--mac-accent); background: rgba(10,132,255,0.08);
    color: var(--mac-accent); border-radius: 6px;
    padding: 4px 10px; font-size: 0.78rem; cursor: pointer;
    white-space: nowrap;
}
.dc-pwd-gen:hover { background: rgba(10,132,255,0.18); }
.dc-field-tip { font-size: 0.7rem; color: #888; line-height: 1.4; }
.dc-checkbox-label { display: flex; align-items: center; gap: 6px; cursor: pointer; user-select: none; }
.dc-customer-status-row {
    display: flex; align-items: center; gap: 10px;
    margin-bottom: 10px;
}
.dc-customer-status-row label { font-size: 0.8rem; color: var(--mac-text-secondary); font-weight: 600; }
.dc-customer-status-row select {
    border: 1px solid var(--mac-separator); border-radius: 7px;
    padding: 4px 8px; font-size: 0.82rem;
}

/* 需求1：内嵌赔率设置面板（铺开到当前页） */
.inline-odds-panel {
    background: var(--mac-window);
    border: 1px solid var(--mac-separator);
    border-radius: var(--mac-radius);
    box-shadow: var(--mac-shadow);
    margin-bottom: 10px;
    overflow: hidden;
}
.inline-odds-header {
    display: flex; align-items: center; justify-content: space-between;
    padding: 10px 16px;
    background: linear-gradient(135deg, var(--mac-accent), #5ac8fa);
    color: #fff;
}
.inline-odds-title { font-size: 1rem; font-weight: 700; }
.inline-odds-close {
    border: none; background: rgba(255,255,255,0.2); color: #fff;
    width: 28px; height: 28px; border-radius: 8px;
    cursor: pointer; font-size: 0.95rem;
}
.inline-odds-close:hover { background: rgba(255,255,255,0.35); }
.inline-odds-body { padding: 14px 16px; }
.inline-odds-extras {
    display: flex; gap: 14px; flex-wrap: wrap;
    margin-bottom: 6px;
}
.inline-odds-extras .form-group {
    display: flex; flex-direction: column; gap: 4px;
    min-width: 130px;
}
.inline-odds-extras label { font-size: 0.8rem; color: var(--mac-text-secondary); font-weight: 600; }
.inline-odds-extras input {
    border: 1px solid var(--mac-separator); border-radius: 8px;
    padding: 6px 10px; font-size: 0.85rem; color: var(--mac-text);
    background: #fff; outline: none;
}
.inline-odds-extras input:focus { border-color: var(--mac-accent); box-shadow: 0 0 0 3px rgba(10,132,255,0.12); }
.inline-odds-footer {
    display: flex; gap: 10px;
    padding: 12px 16px;
    border-top: 1px solid var(--mac-separator);
    background: #fbfbfd;
}
/* 需求8：当前业务员红色群组标注（与客户/添加按钮同一行，紧凑显示） */
.current-group-hint {
    color: #ff3b30;
    font-size: 0.78rem;
    font-weight: 700;
    margin-left: 10px;
    padding: 2px 10px;
    background: rgba(255, 59, 48, 0.06);
    border: 1px solid rgba(255, 59, 48, 0.15);
    border-radius: 10px;
    white-space: nowrap;
    flex-shrink: 0;
}
.recorder-sidebar-footer {
    padding: 9px 14px; border-top: 1px solid var(--mac-separator);
    font-size: 0.72rem; color: var(--mac-text-secondary); text-align: center;
    background: #fbfbfd;
}
.recorder-empty { text-align: center; color: var(--mac-gray); font-size: 0.78rem; padding: 22px 8px; }

/* 生肖分类快捷按钮分隔线 */
.quick-bet-sep {
    display: inline-block;
    width: 1px; height: 18px;
    background: var(--mac-separator);
    margin: 0 6px;
    vertical-align: middle;
}
/* 挑码快捷分组标签 */
.quick-bet-group-label {
    display: inline-block;
    font-size: 0.7rem; font-weight: 700;
    color: var(--mac-text-secondary);
    margin: 0 6px 0 10px;
    vertical-align: middle;
}
.quick-bet-group-label::after { content: ':'; }

/* ---------- 页面容器 ---------- */
.app-pages { flex: 1; min-width: 0; display: flex; }
.app-page {
    flex: 1;
    min-width: 0;
    display: none;
    flex-direction: column;
    overflow: hidden;
}
.app-page.active { display: flex; }
/* 报表中心：内容可能超出视口，允许纵向滚动（否则下方被遮挡无法查看） */
#page-report { overflow-y: auto; overflow-x: hidden; }
#page-report::-webkit-scrollbar { width: 10px; }
#page-report::-webkit-scrollbar-thumb { background: #c9ccd1; border-radius: 6px; }
#page-report::-webkit-scrollbar-thumb:hover { background: #aeb3ba; }
#page-order { display: none; }
#page-order.active { display: flex; }
#page-order .order-entry-container { flex: 1; display: flex; min-height: 0; }

/* ---------- 预留页面（占位样式） ---------- */
.placeholder-page {
    flex: 1; overflow: auto;
    padding: 40px 30px;
    display: flex; flex-direction: column; align-items: center; justify-content: center;
    gap: 16px; text-align: center;
}
.placeholder-icon {
    width: 88px; height: 88px; border-radius: 26px;
    background: linear-gradient(135deg, rgba(10,132,255,0.14), rgba(90,200,250,0.10));
    color: var(--mac-accent);
    display: flex; align-items: center; justify-content: center;
    font-size: 2.4rem;
    box-shadow: var(--mac-shadow-sm);
}
.placeholder-title { font-size: 1.6rem; font-weight: 800; color: var(--mac-text); margin: 0; }
.placeholder-desc { font-size: 0.9rem; color: var(--mac-text-secondary); max-width: 480px; line-height: 1.7; }
.placeholder-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 14px; width: 100%; max-width: 640px; margin-top: 8px; }
.placeholder-card {
    background: var(--mac-window); border: 1px solid var(--mac-separator);
    border-radius: var(--mac-radius); padding: 18px; font-weight: 700;
    color: var(--mac-accent); box-shadow: var(--mac-shadow-sm);
}
.placeholder-actions { display: flex; gap: 12px; flex-wrap: wrap; justify-content: center; margin-top: 10px; }
.placeholder-btn {
    border: none; background: #f2f2f5; color: var(--mac-text-secondary);
    border-radius: 10px; padding: 10px 22px; font-size: 0.85rem; font-weight: 600; cursor: pointer;
    transition: all 0.18s;
}
.placeholder-btn:disabled { cursor: not-allowed; opacity: 0.7; }
.placeholder-btn.primary { background: var(--mac-accent); color: #fff; }
.placeholder-btn.primary:disabled { opacity: 0.6; }

/* ---------- 服务续费页 ---------- */
.renewal-page {
    flex: 1; overflow: auto; padding: 22px 26px;
    display: flex; flex-direction: column; gap: 14px;
}

/* 当前订阅卡片：白底圆角，左侧标题，右侧绿色"生效中"徽标 */
.renewal-current {
    background: var(--mac-window); border: 1px solid var(--mac-separator);
    border-radius: var(--mac-radius); box-shadow: var(--mac-shadow-sm);
    padding: 16px 22px; display: flex; flex-direction: column; gap: 12px;
}
.renewal-current-header { display: flex; align-items: center; justify-content: space-between; }
.renewal-current-title { font-size: 1rem; font-weight: 700; color: var(--mac-text); }
.renewal-status-badge {
    font-size: 0.78rem; font-weight: 600; color: #fff;
    background: #34c759; padding: 4px 12px; border-radius: 999px;
    white-space: nowrap;
}
.renewal-current-grid {
    display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px;
}
.renewal-current-item { text-align: center; padding: 4px 8px; }
.renewal-current-label { font-size: 0.78rem; color: var(--mac-text-secondary); margin-bottom: 6px; }
.renewal-current-value {
    font-size: 1.05rem; font-weight: 700; color: var(--mac-text);
}
/* Mac 风格蓝色"管理"小按钮（设备上限数字右侧） */
.mac-manage-btn {
    font-size: 0.72rem; font-weight: 600; color: #fff;
    background: #007aff; border: none; border-radius: 6px;
    padding: 3px 10px; line-height: 1.4; cursor: pointer;
    transition: background .15s ease;
}
.mac-manage-btn:hover { background: #0066d6; }
.mac-manage-btn:active { background: #0055b3; }

/* "选择套餐"小标题 */
.renewal-section-title {
    font-size: 0.95rem; font-weight: 700; color: var(--mac-text);
    margin: 6px 0 -2px;
}

/* 我的会员列表卡片（个人中心：下级成员列表，与"当前订阅"同款白底圆角） */
.renewal-members {
    background: var(--mac-window); border: 1px solid var(--mac-separator);
    border-radius: var(--mac-radius); box-shadow: var(--mac-shadow-sm);
    padding: 6px 22px 12px; overflow-x: auto;
    /* overflow-x:auto 的 flex 子项自动最小高度为 0，内容超出容器时会被压扁到不可见；
       禁止压缩，让超出部分由 .renewal-page 的 overflow:auto 正常滚动 */
    flex-shrink: 0;
}
.renewal-members-table { width: 100%; border-collapse: collapse; font-size: 0.88rem; }
.renewal-members-table th {
    text-align: left; font-size: 0.78rem; font-weight: 600;
    color: var(--mac-text-secondary); padding: 10px 10px 8px;
    border-bottom: 1px solid var(--mac-separator); white-space: nowrap;
}
.renewal-members-table td {
    padding: 10px; color: var(--mac-text);
    border-bottom: 1px solid var(--mac-separator); white-space: nowrap;
}
.renewal-members-table tbody tr:last-child td { border-bottom: none; }
.renewal-members-table tbody tr:hover td { background: rgba(10, 132, 255, 0.06); }

/* 套餐卡片布局：每排 3 张，不足一排的卡片整体居中 */
.renewal-plans {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 14px;
}
.renewal-plan-card {
    flex: 0 1 calc((100% - 28px) / 3);
    min-width: 0;
    background: var(--mac-window); border: 1px solid var(--mac-separator);
    border-radius: var(--mac-radius); box-shadow: var(--mac-shadow-sm);
    padding: 20px 20px 18px; display: flex; flex-direction: column;
    align-items: center; gap: 6px; transition: all 0.18s;
}
.renewal-plan-card:hover {
    box-shadow: 0 6px 20px rgba(10,132,255,0.15);
    transform: translateY(-2px);
}
/* 金色卡片（定制会员）：香槟金渐变 + 顶部内高光，高级质感 */
.renewal-plan-card.gold {
    background: linear-gradient(160deg, #fffdf5 0%, #fdf3d2 48%, #f9e5a6 100%);
    border: 1px solid rgba(201, 162, 39, 0.55);
    box-shadow: 0 2px 10px rgba(184, 134, 11, 0.12), inset 0 1px 0 rgba(255, 255, 255, 0.65);
}
.renewal-plan-card.gold:hover {
    box-shadow: 0 8px 24px rgba(184, 134, 11, 0.28), inset 0 1px 0 rgba(255, 255, 255, 0.65);
}
.renewal-plan-card.gold .renewal-plan-name { color: #8a6d1a; }
.renewal-plan-card.gold .renewal-plan-price .cur,
.renewal-plan-card.gold .renewal-plan-price .num { color: #b8860b; }
/* 金卡文字统一暖金色调，层次协调 */
.renewal-plan-card.gold .renewal-plan-price .unit { color: #a3821f; }
.renewal-plan-card.gold .renewal-plan-features li { color: #6f5a17; }
/* 金卡对勾：与"定制会员"标题同色（#8a6d1a） */
.renewal-plan-card.gold .renewal-check { background: #8a6d1a; }
/* 金卡按钮：香槟金渐变，与卡片呼应，Mac 风格质感 */
.renewal-plan-card.gold .renewal-plan-btn {
    background: linear-gradient(135deg, #d4af37 0%, #b8860b 100%);
    box-shadow: 0 2px 8px rgba(184, 134, 11, 0.30);
    text-shadow: 0 1px 1px rgba(122, 90, 10, 0.30);
}
.renewal-plan-card.gold .renewal-plan-btn:hover {
    background: linear-gradient(135deg, #c9a227 0%, #a5770a 100%);
    box-shadow: 0 4px 12px rgba(184, 134, 11, 0.40);
}
.renewal-plan-card.gold .renewal-plan-btn:active {
    background: linear-gradient(135deg, #b8931f 0%, #96690a 100%);
}
.renewal-plan-name { font-size: 1.15rem; font-weight: 700; color: var(--mac-text); margin-bottom: 4px; }
.renewal-plan-price {
    display: flex; align-items: baseline; gap: 2px;
    margin: 2px 0 8px;
}
.renewal-plan-price .cur { font-size: 1rem; color: var(--mac-accent); font-weight: 700; }
.renewal-plan-price .num { font-size: 1.7rem; font-weight: 800; color: var(--mac-accent); line-height: 1; }
.renewal-plan-price .unit { font-size: 0.85rem; color: var(--mac-text-secondary); margin-left: 4px; }

/* 功能勾选列表 */
.renewal-plan-features {
    list-style: none; margin: 0; padding: 0;
    display: flex; flex-direction: column; gap: 6px;
    width: 100%;
}
.renewal-plan-features li {
    font-size: 0.82rem; color: var(--mac-text);
    display: flex; align-items: center; gap: 8px;
    line-height: 1.5;
}
/* 自定义对勾（绿色） */
.renewal-check {
    display: inline-block; width: 14px; height: 14px; flex-shrink: 0;
    background: #34c759;
    -webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M6.4 11.2 3.2 8l-1.2 1.2 4.4 4.4 8-8L13.2 4.4z'/></svg>") no-repeat center / contain;
            mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M6.4 11.2 3.2 8l-1.2 1.2 4.4 4.4 8-8L13.2 4.4z'/></svg>") no-repeat center / contain;
}

/* 请联系代理续费按钮：绿色实心 */
.renewal-plan-btn {
    width: 100%;
    margin-top: 12px;
    background: #34c759; color: #fff;
    border: none; border-radius: var(--mac-radius-sm);
    padding: 11px 16px; font-size: 0.9rem; font-weight: 600;
    cursor: pointer; transition: all 0.18s;
    box-shadow: 0 2px 6px rgba(52,199,89,0.25);
}
.renewal-plan-btn:hover { background: #2db14d; transform: translateY(-1px); box-shadow: 0 4px 10px rgba(52,199,89,0.35); }
.renewal-plan-btn:active { transform: translateY(0); }

/* 永久卡单独放在第二行第一列 */
.renewal-plan-card.permanent {
    grid-column: 1;
}

/* 响应式 */
@media (max-width: 1000px) {
    .renewal-plan-card { flex-basis: calc((100% - 14px) / 2); }
    .renewal-current-grid { grid-template-columns: repeat(2, 1fr); gap: 12px; }
}
@media (max-width: 640px) {
    .renewal-plan-card { flex-basis: 100%; }
    .renewal-plan-card.permanent { grid-column: auto; }
}

/* ---------- 业务员管理页 ---------- */
.recorder-page { flex: 1; overflow: auto; padding: 22px 26px; display: flex; flex-direction: column; gap: 16px; }
.recorder-page-header { display: flex; align-items: center; justify-content: space-between; }
.recorder-page-header h2 { margin: 0; font-size: 1.3rem; font-weight: 800; color: var(--mac-text); display: flex; align-items: center; gap: 8px; }
.recorder-table-wrap { background: var(--mac-window); border: 1px solid var(--mac-separator); border-radius: var(--mac-radius); box-shadow: var(--mac-shadow-sm); overflow: hidden; }
.recorder-table { width: 100%; border-collapse: collapse; font-size: 0.85rem; }
.recorder-table th {
    background: #f2f2f5; color: var(--mac-text-secondary); font-weight: 600;
    text-align: left; padding: 12px 16px; border-bottom: 1px solid var(--mac-separator);
    white-space: nowrap;
}
.recorder-table td { padding: 12px 16px; border-bottom: 1px solid #f0f0f2; color: var(--mac-text); vertical-align: middle; }
/* 列宽与对齐，保证抬头与内容对齐 */
.recorder-table .col-name { min-width: 140px; }
.recorder-table .col-odds { min-width: 110px; text-align: center; font-variant-numeric: tabular-nums; }
.recorder-table .col-rebate { min-width: 120px; text-align: center; font-variant-numeric: tabular-nums; }
.recorder-table .col-wechat { min-width: 150px; }
.recorder-table .col-actions { min-width: 170px; text-align: right; white-space: nowrap; }

/* Mac 风格操作按钮（蓝色统一） */
.recorder-action-btn {
    border: none; cursor: pointer; font-size: 0.82rem; font-weight: 600;
    padding: 6px 14px; border-radius: 8px; color: #fff;
    background: linear-gradient(135deg, var(--mac-accent), #4aa3ff);
    box-shadow: 0 1px 3px rgba(10,132,255,0.35);
    transition: transform .08s ease, box-shadow .15s ease, opacity .15s ease;
    display: inline-flex; align-items: center; gap: 5px;
}
.recorder-action-btn:hover { box-shadow: 0 3px 10px rgba(10,132,255,0.45); opacity: .94; }
.recorder-action-btn:active { transform: translateY(1px); }
.recorder-action-btn i { font-size: 0.8rem; }
.recorder-action-btn.recorder-del-btn {
    background: linear-gradient(135deg, #ff453a, #ff7a70);
    box-shadow: 0 1px 3px rgba(255,69,58,0.35);
}
.recorder-action-btn.recorder-del-btn:hover { box-shadow: 0 3px 10px rgba(255,69,58,0.45); }
/* 禁用态：管理员(补货专用)的修改/删除按钮 */
.recorder-action-btn[disabled] {
    cursor: not-allowed;
    opacity: 0.45;
    filter: grayscale(0.6);
    box-shadow: none;
    transform: none;
}
.recorder-action-btn[disabled]:hover { box-shadow: none; opacity: 0.45; transform: none; }

/* 业务员编辑 / 新增弹窗（统一布局、可滚动、Mac 蓝） */
.recorder-edit-overlay {
    display: none; position: fixed; inset: 0; z-index: 1200;
    background: rgba(0,0,0,0.45);
    justify-content: center; align-items: flex-start;
    padding: 40px 16px; overflow-y: auto;
}
.recorder-edit-overlay.open { display: flex; }
.recorder-edit-modal {
    width: 100%; max-width: 720px; background: var(--mac-window);
    border-radius: 14px; box-shadow: 0 12px 48px rgba(0,0,0,0.28);
    overflow: hidden; border-top: 4px solid var(--mac-accent);
    display: flex; flex-direction: column; max-height: calc(100vh - 60px);
}
.recorder-edit-header {
    padding: 16px 22px; color: #fff;
    background: linear-gradient(135deg, var(--mac-accent), #5ac8fa);
    display: flex; align-items: center; justify-content: space-between;
    flex-shrink: 0;
}
.recorder-edit-header h3 { margin: 0; font-size: 0.95rem; font-weight: 700; }
.recorder-edit-header .close-x { cursor: pointer; font-size: 1.25rem; line-height: 1; opacity: .9; }
.recorder-edit-header .close-x:hover { opacity: 1; }
.recorder-edit-body { padding: 14px 18px; overflow-y: auto; font-size: 0.82rem; }
.recorder-edit-section-title {
    margin: 14px 0 7px; font-weight: 700; font-size: 0.82rem; color: var(--mac-text);
    padding-top: 10px; border-top: 1px solid var(--mac-separator);
}
.recorder-edit-section-title span { font-weight: 400; font-size: 0.7rem; color: var(--mac-text-secondary); }

/* 暂隐藏右下角：待审核订单、存储管理按钮 */
.pending-toggle-btn, .storage-toggle-btn { display: none !important; }
.recorder-edit-field { margin-bottom: 10px; }
.recorder-edit-field label { display: block; margin-bottom: 4px; font-weight: 600; font-size: 0.78rem; color: var(--mac-text-secondary); }
.recorder-edit-field input, .recorder-edit-field select {
    width: 100%; padding: 6px 9px; font-size: 0.82rem;
    border: 1px solid var(--mac-separator); border-radius: 8px;
    background: #fff; color: var(--mac-text); box-sizing: border-box;
    transition: border-color .15s, box-shadow .15s;
}
.recorder-edit-field input:focus, .recorder-edit-field select:focus {
    outline: none; border-color: var(--mac-accent);
    box-shadow: 0 0 0 3px rgba(10,132,255,0.15);
}
.recorder-edit-row { display: flex; gap: 12px; }
.recorder-edit-row .recorder-edit-field { flex: 1; }
.recorder-edit-footer {
    padding: 10px 18px; border-top: 1px solid var(--mac-separator);
    display: flex; justify-content: flex-end; gap: 8px; flex-shrink: 0;
    background: #fafafc;
}
.recorder-edit-footer button {
    border: none; cursor: pointer; font-size: 0.82rem; font-weight: 600;
    padding: 7px 18px; border-radius: 8px; transition: opacity .15s, transform .08s;
}
.recorder-edit-footer button:active { transform: translateY(1px); }
.recorder-edit-cancel { background: #e9e9ee; color: var(--mac-text); }
.recorder-edit-cancel:hover { background: #e0e0e6; }
.recorder-edit-save {
    color: #fff; background: linear-gradient(135deg, var(--mac-accent), #4aa3ff);
    box-shadow: 0 2px 8px rgba(10,132,255,0.35);
}
.recorder-edit-save:hover { opacity: .94; }

/* 顶部"删除所有订单"按钮（红底白字，位于快捷手动录单左侧） */
.delete-all-orders-btn {
    color: #fff;
    background: #d03424;
    border: 1px solid #b02c1e;
    border-radius: 8px;
    padding: 6px 14px;
    font-size: 0.85rem;
    font-weight: 700;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 5px;
    margin-right: 10px;
    transition: all 0.15s;
}
.delete-all-orders-btn:hover {
    background: #b02c1e;
    box-shadow: 0 2px 8px rgba(208, 52, 36, 0.35);
}

/* 顶部"快捷手动录单"按钮：微信全自动同款蓝色渐变风格，仅手指图标闪烁提醒 */
.quick-manual-entry-btn {
    color: #fff;
    background: linear-gradient(135deg, var(--mac-accent, #0a84ff), #5ac8fa);
    border: none;
    border-radius: 20px;
    padding: 6px 14px;
    font-size: 0.85rem;
    font-weight: 600;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 5px;
    margin-left: auto;
    margin-right: 12px;
    box-shadow: 0 2px 8px rgba(10, 132, 255, 0.3);
    transition: all 0.15s;
}
/* 按钮左侧手指示意符号：仅图标闪烁/抖动（同"回到微信"按钮） */
.qme-point {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 1rem;
    line-height: 1;
    font-weight: 800;
    animation: back-to-wechat-blink 2s ease-in-out infinite;
}
.quick-manual-entry-btn:hover {
    filter: brightness(1.08);
    box-shadow: 0 4px 12px rgba(10, 132, 255, 0.4);
    transform: translateY(-1px);
}

/* 弹窗：快捷手动录单（dfh 风格三栏 + 底部金额） */
.quick-manual-content {
    max-width: 1080px;
    width: 95%;
    padding: 0;
}
/* 弹窗标题栏：中间显示"当前为「XX业务员」" */
.quick-manual-modal .modal-header { position: relative; justify-content: space-between; align-items: center; }
.qme-current-group {
    position: absolute;
    left: 50%;
    transform: translateX(-50%);
    font-size: 0.85rem;
    font-weight: 700;
    color: #c0392b;
    background: rgba(255, 59, 48, 0.07);
    border: 1px solid rgba(255, 59, 48, 0.15);
    border-radius: 10px;
    padding: 3px 12px;
    white-space: nowrap;
}
.quick-manual-body { padding: 14px 16px 12px; }
.qme-grid {
    display: grid;
    grid-template-columns: 1.1fr 0.7fr 2fr;
    gap: 10px;
    margin-bottom: 12px;
}
.qme-pane {
    background: #fafbfc;
    border: 1px solid #e8e8e8;
    border-radius: 8px;
    padding: 8px 10px;
    max-height: 360px;
    overflow-y: auto;
}
.qme-pane-title {
    font-size: 0.78rem;
    font-weight: 700;
    color: #666;
    margin-bottom: 6px;
    border-bottom: 1px dashed #e8e8e8;
    padding-bottom: 4px;
}
.qme-numbers {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 6px;
}
.qme-num {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 4px 6px;
    background: #fff;
    border: 1px solid #ececec;
    border-radius: 6px;
    font-size: 0.85rem;
    font-weight: 700;
    cursor: pointer;
    transition: all 0.1s;
    user-select: none;
}
.qme-num:hover { background: #f0f7ff; border-color: #cddfff; }
.qme-num.selected { background: #eaf3ff; border-color: #0a84ff; color: #0a84ff; }
.qme-num-dot {
    width: 24px; height: 24px;
    border-radius: 50%;
    color: #fff;
    display: flex; align-items: center; justify-content: center;
    font-size: 0.7rem; font-weight: 800;
    flex-shrink: 0;
}
.qme-num-dot.red { background: #ff3b30; }
.qme-num-dot.blue { background: #0a84ff; }
.qme-num-dot.green { background: #30b755; }
.qme-num-dot.gray { background: #8e8e93; }
.qme-types { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; }
.qme-type {
    background: #fff;
    border: 1px solid #ececec;
    border-radius: 6px;
    padding: 6px 10px;
    text-align: center;
    cursor: pointer;
    font-size: 0.85rem;
    font-weight: 700;
}
.qme-type:hover { background: #f0f7ff; border-color: #cddfff; }
.qme-type.selected { background: #0a84ff; color: #fff; border-color: #0a84ff; }
.qme-categories {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(64px, 1fr));
    gap: 5px;
}
.qme-cat {
    background: #fff;
    border: 1px solid #ececec;
    border-radius: 6px;
    padding: 6px 4px;
    text-align: center;
    cursor: pointer;
    font-size: 0.78rem;
    font-weight: 600;
    user-select: none;
    transition: all 0.1s;
}
.qme-cat:hover { background: #f0f7ff; border-color: #cddfff; }
.qme-cat.selected { background: #0a84ff; color: #fff; border-color: #0a84ff; }
.qme-cat.zodiac { font-weight: 800; }
.qme-footer { border-top: 1px solid #e8e8e8; padding-top: 10px; }
.qme-amount-row {
    display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
}
.qme-lbl { color: #555; font-size: 0.85rem; font-weight: 600; }
#qmeAmountInput {
    width: 110px; padding: 5px 8px;
    border: 1px solid #d4d4d4; border-radius: 6px;
    font-size: 0.85rem; outline: none;
}
#qmeAmountInput:focus { border-color: #0a84ff; box-shadow: 0 0 0 2px rgba(10,132,255,0.15); }
.qme-amount-btn, .qme-mode-btn, .qme-submit-btn, .qme-reset-btn {
    border: none; border-radius: 6px;
    padding: 5px 12px; font-size: 0.82rem; font-weight: 700;
    cursor: pointer;
}
.qme-amount-btn { background: #f2f2f5; color: #333; }
.qme-amount-btn:hover { background: #e8e8eb; }
.qme-mode-btn { background: #af52de; color: #fff; }
.qme-mode-btn.mode-kill { background: #ff9500; }
.qme-submit-btn { background: #0b8a40; color: #fff; }
.qme-submit-btn:hover { background: #097034; }
.qme-reset-btn { background: #ff3b30; color: #fff; }
.qme-reset-btn:hover { background: #d8312a; }
.qme-selected-preview {
    margin-top: 8px;
    font-size: 0.78rem;
    color: #666;
    min-height: 18px;
    background: #f8f8f8;
    border-radius: 6px;
    padding: 4px 8px;
}
.qme-pane::-webkit-scrollbar { width: 5px; }
.qme-pane::-webkit-scrollbar-thumb { background: #b0b0b8; border-radius: 3px; }
.qme-pane::-webkit-scrollbar-track { background: transparent; }

/* ============================================================
   数据中心（参考截图风格）
   ============================================================ */
.dc-container {
    flex: 1; min-height: 0;
    display: flex; flex-direction: column;
    padding: 4px 10px 8px;
    gap: 2px;
    overflow: hidden;
}
/* 数据看板彩种分页（新澳门/香港） */
.dc-lottery-tabs {
    flex-shrink: 0;
    display: flex; gap: 4px;
    background: var(--mac-glass-strong);
    backdrop-filter: blur(18px) saturate(180%);
    -webkit-backdrop-filter: blur(18px) saturate(180%);
    border: 1px solid var(--mac-separator);
    border-radius: var(--mac-radius);
    padding: 2px 8px;
    box-shadow: var(--mac-shadow-sm);
    align-self: flex-start;
}
.dc-lottery-tab {
    border: none; background: transparent;
    color: var(--mac-text-secondary);
    padding: 2px 18px; font-size: 0.92rem; font-weight: 700;
    border-radius: 9px; cursor: pointer;
    transition: all 0.15s;
    line-height: 1.4;
}
.dc-lottery-tab:hover { background: rgba(10,132,255,0.08); color: var(--mac-accent); }
.dc-lottery-tab.active { background: var(--mac-accent); color: #fff; box-shadow: 0 2px 8px rgba(10,132,255,0.3); }
.dc-toolbar {
    flex-shrink: 0;
    display: flex; align-items: center; justify-content: flex-start;
    background: var(--mac-glass-strong);
    backdrop-filter: blur(18px) saturate(180%);
    -webkit-backdrop-filter: blur(18px) saturate(180%);
    border: 1px solid var(--mac-separator);
    border-radius: var(--mac-radius);
    padding: 4px 16px;
    box-shadow: var(--mac-shadow-sm);
    flex-wrap: wrap;
    gap: 8px;
}
.dc-toolbar-left { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; }
.dc-toolbar-right { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.dc-title { margin: 0; font-size: 1.15rem; font-weight: 800; color: var(--mac-text); }
.dc-odds-input, .dc-loss-input {
    display: inline-flex; align-items: center; gap: 6px;
    font-size: 0.85rem; color: var(--mac-text-secondary);
}
.dc-odds-input input,
.dc-loss-input input {
    width: 80px;
    border: 1px solid var(--mac-separator);
    border-radius: 8px;
    padding: 5px 10px;
    font-size: 0.85rem; color: var(--mac-text);
    outline: none;
    transition: border-color 0.15s, box-shadow 0.15s;
    background: #fafafa;
}
.dc-loss-input input { width: 110px; }
.dc-odds-input input:focus,
.dc-loss-input input:focus { border-color: var(--mac-accent); box-shadow: 0 0 0 3px rgba(10,132,255,0.15); }
.dc-label { font-weight: 600; }

.dc-btn {
    border: none; border-radius: 9px; cursor: pointer;
    padding: 7px 16px; font-size: 0.85rem; font-weight: 600;
    transition: all 0.15s ease;
    display: inline-flex; align-items: center; gap: 5px;
    color: #fff;
}
.dc-btn-primary { background: var(--mac-accent); box-shadow: 0 2px 8px rgba(10,132,255,0.3); }
.dc-btn-primary:hover { filter: brightness(1.06); }
.dc-btn-secondary { background: #0a84ff; box-shadow: 0 2px 8px rgba(10,132,255,0.3); }
.dc-btn-secondary:hover { filter: brightness(1.06); }
.dc-btn-warning { background: #0060df; box-shadow: 0 2px 8px rgba(10,132,255,0.35); }
.dc-btn-warning:hover { filter: brightness(1.08); }
.dc-btn-average { background: #bf5af2; box-shadow: 0 2px 8px rgba(191,90,242,0.35); }
.dc-btn-average:hover { filter: brightness(1.08); }
/* 计算/补货状态提示（在工具栏内，与按钮同一行；完整显示不截断） */
.dc-toolbar-status {
    flex-shrink: 0;
    font-size: 0.78rem;
    color: #0b6e2e;
    font-weight: 600;
    white-space: nowrap;
    margin-left: 8px;
}
.dc-toolbar-status:empty { display: none; }

.dc-body {
    flex: 1; min-height: 0;
    display: flex; gap: 12px;
    overflow: hidden;
}
.dc-left {
    flex: 1; min-width: 0; min-height: 0;
    display: flex; flex-direction: column;
    background: var(--mac-glass-strong);
    backdrop-filter: blur(18px) saturate(180%);
    -webkit-backdrop-filter: blur(18px) saturate(180%);
    border: 1px solid var(--mac-separator);
    border-radius: var(--mac-radius);
    box-shadow: var(--mac-shadow-sm);
    overflow: hidden;
}
.dc-group-tabs {
    display: flex; gap: 4px; padding: 8px 10px;
    border-bottom: 1px solid var(--mac-separator);
    background: #fbfbfd;
    overflow-x: auto;
    flex-shrink: 0;
}
.dc-group-tab {
    border: none; background: transparent; color: var(--mac-text-secondary);
    padding: 6px 14px; font-size: 0.82rem; font-weight: 600;
    border-radius: 8px; cursor: pointer; white-space: nowrap;
    transition: all 0.15s;
}
.dc-group-tab:hover { background: rgba(10,132,255,0.08); color: var(--mac-accent); }
.dc-group-tab.active { background: var(--mac-accent); color: #fff; box-shadow: 0 2px 6px rgba(10,132,255,0.3); }

/* 汇总条为独立色块（不随滚动），下方表格区独立滚动、抬头冻结 */
/* 自适应：撑满整个左侧高度（与右侧齐平），不再固定 450px，
   使平特等列表可一屏总览，下方 .dc-detail 不再预留空间遮挡列表 */
.dc-numbers-wrap {
    flex: 1 1 auto;
    min-height: 0;            /* 关键：避免被子元素自然高度撑爆，保证内部 .dc-table-scroll 可滚动 */
    display: flex;
    flex-direction: column;
    padding: 8px 10px;
    overflow: hidden;
}
.dc-bar-panel {
    flex-shrink: 0;
    margin-bottom: 6px;
}
.dc-table-scroll {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: scroll;
    overflow-x: hidden;
}
/* 滚动条最小宽度，但保留可拖拽手感 */
.dc-table-scroll::-webkit-scrollbar { width: 5px; height: 5px; }
.dc-table-scroll::-webkit-scrollbar-thumb { background: #b0b0b8; border-radius: 3px; }
.dc-table-scroll::-webkit-scrollbar-track { background: transparent; }
.dc-table-scroll::-webkit-scrollbar-thumb:hover { background: #909098; }
.dc-numbers-table {
    display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px;
}
.dc-num-cell {
    background: #fff;
    border: 1px solid #e8e8ed;
    border-radius: 10px;
    overflow: hidden;
    font-size: 0.78rem;
}
.dc-num-head {
    display: grid; grid-template-columns: 1.2fr 1fr 1fr 1fr;
    background: #f2f2f5;
    color: var(--mac-text-secondary); font-weight: 700;
    padding: 5px 8px;
}
.dc-num-head > div { text-align: center; font-size: 0.72rem; }
.dc-num-head > div:first-child { text-align: left; }
.dc-num-row {
    display: grid; grid-template-columns: 1.2fr 1fr 1fr 1fr;
    padding: 5px 8px;
    border-top: 1px solid #f0f0f2;
    cursor: pointer;
    transition: background 0.12s;
}
.dc-num-row:hover { background: rgba(10,132,255,0.06); }
.dc-num-row.selected { background: rgba(10,132,255,0.14); }
.dc-num-row > div { text-align: center; }
.dc-num-row > div:first-child { text-align: left; font-weight: 700; }
.dc-num-no { color: #0b6e2e; font-weight: 800; }
.dc-num-zodiac { font-size: 0.72rem; margin-left: 3px; color: var(--mac-text-secondary); }
.dc-num-odds { color: var(--mac-text); }
.dc-num-amount { color: #ff9500; font-weight: 600; }
.dc-num-profit.pos { color: #ff453a; }
.dc-num-profit.neg { color: #0b6e2e; }

.dc-detail {
    flex: 0 0 auto;           /* 不抢占统计表高度，仅在展开明细时按需占用（空时隐藏） */
    min-height: 0;
    max-height: 50%;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    border-top: 1px solid var(--mac-separator);
    background: #fbfbfd;
    padding: 2px 14px 4px;
}
.dc-detail:empty { display: none; }
/* 明细标题：独立色块区域（不作为表格内容） */
.dc-detail-title {
    flex-shrink: 0;
    font-size: 0.85rem; font-weight: 700; color: var(--mac-text);
    margin-bottom: 8px;
    padding: 7px 12px;
    background: linear-gradient(180deg, #f2f5fa, #e9eef7);
    border: 1px solid #dce3ef;
    border-radius: 8px;
    display: flex; align-items: center; justify-content: space-between;
    gap: 8px;
}
/* 明细提示：红色居中，位于"订单明细"按钮左侧 */
.dc-detail-hint {
    flex: 1;
    text-align: center;
    color: #e0402f;
    font-size: 0.78rem;
    font-weight: 600;
}
/* 明细表格滚动容器（内部滚动，首行 thead 冻结） */
.dc-detail-scroll {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: scroll;
    overflow-x: auto;
    border: 1px solid #e8e8ed;
    border-radius: 8px;
    background: #fff;
}
.dc-detail-scroll::-webkit-scrollbar { width: 5px; height: 5px; }
.dc-detail-scroll::-webkit-scrollbar-thumb { background: #b0b0b8; border-radius: 3px; }
.dc-detail-scroll::-webkit-scrollbar-thumb:hover { background: #909098; }
.dc-detail-scroll::-webkit-scrollbar-track { background: transparent; }
.dc-detail-table {
    width: 100%; border-collapse: collapse;
    font-size: 0.78rem;
}
.dc-detail-table.dc-detail-fixed {
    table-layout: fixed;
    width: 100%;
}
.dc-detail-fixed th, .dc-detail-fixed td {
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
    padding: 5px 8px; text-align: center;
}
.dc-detail-fixed th:nth-child(1), .dc-detail-fixed td:nth-child(1) { width: 28%; text-align: left; }
.dc-detail-fixed th:nth-child(2), .dc-detail-fixed td:nth-child(2) { width: 26%; }
.dc-detail-fixed th:nth-child(3), .dc-detail-fixed td:nth-child(3) { width: 26%; }
.dc-detail-fixed th:nth-child(4), .dc-detail-fixed td:nth-child(4) { width: 20%; }
/* 10 列明细（客户/订单#/时间/玩法/号码/投注额/赔付/返点/盈亏/原始）：固定列宽、内容截断 */
.dc-detail-fixed.dc-detail-wide th,
.dc-detail-fixed.dc-detail-wide td {
    font-size: 0.7rem;
    padding: 4px 5px;
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
    text-align: center;
}
.dc-detail-fixed.dc-detail-wide th:nth-child(1), .dc-detail-fixed.dc-detail-wide td:nth-child(1) { width: 9%; }
.dc-detail-fixed.dc-detail-wide th:nth-child(2), .dc-detail-fixed.dc-detail-wide td:nth-child(2) { width: 5%; }
.dc-detail-fixed.dc-detail-wide th:nth-child(3), .dc-detail-fixed.dc-detail-wide td:nth-child(3) { width: 8%; }
.dc-detail-fixed.dc-detail-wide th:nth-child(4), .dc-detail-fixed.dc-detail-wide td:nth-child(4) { width: 12%; }
.dc-detail-fixed.dc-detail-wide th:nth-child(5), .dc-detail-fixed.dc-detail-wide td:nth-child(5) { width: 7%; }
.dc-detail-fixed.dc-detail-wide th:nth-child(6), .dc-detail-fixed.dc-detail-wide td:nth-child(6) { width: 8%; }
.dc-detail-fixed.dc-detail-wide th:nth-child(7), .dc-detail-fixed.dc-detail-wide td:nth-child(7) { width: 8%; }
.dc-detail-fixed.dc-detail-wide th:nth-child(8), .dc-detail-fixed.dc-detail-wide td:nth-child(8) { width: 9%; }
.dc-detail-fixed.dc-detail-wide th:nth-child(9), .dc-detail-fixed.dc-detail-wide td:nth-child(9) { width: 6%; }
.dc-detail-fixed.dc-detail-wide th:nth-child(10), .dc-detail-fixed.dc-detail-wide td:nth-child(10) { width: 7%; }
.dc-detail-fixed.dc-detail-wide th:nth-child(11), .dc-detail-fixed.dc-detail-wide td:nth-child(11) { width: 6%; }
.dc-detail-fixed.dc-detail-wide th:nth-child(12), .dc-detail-fixed.dc-detail-wide td:nth-child(12) { width: 7%; }
.dc-detail-fixed.dc-detail-wide th:nth-child(13), .dc-detail-fixed.dc-detail-wide td:nth-child(13) { width: 8%; }
.dc-detail-fixed.dc-detail-wide td { cursor: pointer; }
.dc-detail-fixed.dc-detail-wide td:hover { color: var(--mac-accent); }
.dc-detail-more {
    border: 1px solid var(--mac-accent);
    background: rgba(10,132,255,0.1);
    color: var(--mac-accent);
    border-radius: 7px;
    padding: 2px 10px;
    font-size: 0.72rem;
    font-weight: 600;
    cursor: pointer;
    transition: background 0.15s;
}
.dc-detail-more:hover { background: rgba(10,132,255,0.2); }

/* ---------- 开奖号码自动同步（下单录入页） ---------- */
.winning-sync-row {
    display: flex; align-items: center; gap: 8px;
    margin-top: 6px;
}
.winning-sync-row .btn-action.sync-lottery {
    flex: 0 0 auto;
    padding: 5px 12px;
    font-size: 0.75rem;
    border: none; border-radius: 8px;
    background: linear-gradient(135deg, #5ac8fa, #0a84ff);
    color: #fff; cursor: pointer;
    font-weight: 600;
    transition: filter 0.15s;
}
.winning-sync-row .btn-action.sync-lottery:hover { filter: brightness(1.08); }
.winning-sync-row .btn-action.sync-lottery:disabled { opacity: 0.6; cursor: wait; }
.winning-sync-status {
    font-size: 0.7rem;
    color: var(--mac-text-secondary);
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
    flex: 1; min-width: 0;
}
.winning-sync-status.ok { color: #0b6e2e; font-weight: 600; }
.winning-sync-status.err { color: #ff453a; font-weight: 600; }
.winning-sync-status.loading { color: var(--mac-accent); }

.dc-detail-table th {
    background: #f2f2f5; color: var(--mac-text-secondary);
    padding: 6px 10px; text-align: left; font-weight: 600;
    border-bottom: 1px solid var(--mac-separator);
    position: sticky; top: 0;
    z-index: 2;
    box-shadow: 0 1px 0 var(--mac-separator);
}
.dc-detail-table td {
    padding: 5px 10px; border-bottom: 1px solid #f0f0f2;
    color: var(--mac-text);
}
.dc-detail-empty {
    text-align: center; color: var(--mac-gray); font-size: 0.85rem;
    padding: 12px 0;
}

/* ---------- 数据看板：玩法汇总条 + 统计表格 ---------- */
.dc-play-summary {
    display: flex; align-items: center; gap: 20px;
    padding: 8px 14px;
    background: linear-gradient(135deg, rgba(10,132,255,0.08), rgba(90,200,250,0.06));
    background-color: #fbfbfd;
    border-bottom: 1px solid var(--mac-separator);
    font-size: 0.82rem;
    flex-wrap: wrap;
}
.dc-ps-item { color: var(--mac-text-secondary); }
.dc-ps-item b { color: var(--mac-text); font-weight: 700; }
.dc-ps-item b.pos { color: #ff453a; }
.dc-ps-item b.neg { color: #0b6e2e; }
.dc-ps-item .lm-pending { color: #ff9500; font-weight: 700; }
/* 玩法名称醒目放大 2 号 */
.dc-play-name {
    font-size: 1.05rem;
    color: var(--mac-accent);
    font-weight: 800;
    letter-spacing: 1px;
}

.dc-table-header,
.dc-table-row {
    display: flex;
    align-items: center;
    padding: 6px 10px;
    gap: 4px;
}
.dc-table-header {
    background: #f2f2f5;
    color: var(--mac-text-secondary);
    font-weight: 700;
    font-size: 0.74rem;
    position: sticky;
    top: 0;
    z-index: 3;
    box-shadow: 0 1px 0 var(--mac-separator);
    position: sticky; top: 0; z-index: 2;
}
.dc-table-row {
    font-size: 0.8rem;
    border-bottom: 1px solid #f0f0f2;
    cursor: pointer;
    transition: background 0.12s;
}
/* 特码/平码表格：文字适度缩小以留出金额空间，抬头/内容居中 */
.dc-num-col .dc-table-header {
    font-size: 0.66rem;
    padding: 4px 6px;
}
.dc-num-col .dc-table-header .dc-th { text-align: center; }
.dc-num-col .dc-table-row {
    font-size: 0.70rem;
    padding: 3px 6px;
}
.dc-num-col .dc-td {
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
    text-align: center;
}
.dc-num-col .dc-ball {
    width: 20px; height: 20px; line-height: 20px;
    font-size: 0.62rem;
}
.dc-table-row:hover { background: rgba(10,132,255,0.06); }
.dc-th, .dc-td { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; text-align: center; }
.dc-table-row .dc-td { color: var(--mac-text); }
.dc-table-row .dc-td.positive { color: #ff453a; font-weight: 700; }
.dc-table-row .dc-td.negative { color: #0b6e2e; font-weight: 700; }
/* 补货 列（左=动态拟补货，右=确认已补货） */
.dc-td.dc-td-replenish { color: #0b6e2e; font-weight: 700; }
.dc-td.dc-td-confirmed { color: #0b6e2e; font-weight: 700; }
/* 合并单元格子表头 */
.dc-table-header.dc-table-header-sub {
    border-top: 1px solid var(--mac-separator);
    background: #eef3fa;
    font-size: 0.62rem;
}
/* 数据总览：连码/不中/连肖/尾数连 子玩法标题行（玩法名 + 总额胶囊连排） */
.dc-play-title-row {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 4px 2px 2px;
}
.dc-play-title-name {
    font-size: 0.86rem;
    font-weight: 700;
    color: var(--mac-text);
}
.dc-play-total-pill {
    display: inline-flex;
    align-items: baseline;
    gap: 4px;
    padding: 2px 10px;
    border-radius: 999px;
    background: #eef3fa;
    border: 1px solid rgba(10, 132, 255, 0.18);
    color: var(--mac-text-secondary);
    font-size: 0.72rem;
    font-weight: 600;
    line-height: 1.5;
}
.dc-play-total-pill b {
    color: #ff3b30;
    font-weight: 700;
}
.dc-ball {
    display: inline-block;
    width: 24px; height: 24px; line-height: 24px;
    border-radius: 50%;
    color: #fff; font-size: 0.72rem; font-weight: 700;
    text-align: center;
}
.dc-table-row.highlight-special { background: rgba(255,149,0,0.16); }

/* ---------- 数据看板：左侧群组筛选（下拉框） ---------- */
.dc-customer-bar {
    display: flex; align-items: center; gap: 10px;
    padding: 8px 12px;
    background: linear-gradient(to bottom, #fbfbfd, #f2f2f5);
    border-bottom: 1px solid var(--mac-separator);
    flex-shrink: 0;
}
/* 群组下拉框内联到玩法汇总条（表格抬头同一行），节省高度 */
.dc-play-summary.dc-bar-row {
    display: flex; align-items: center; gap: 12px;
    padding: 6px 12px;
    flex-wrap: wrap;
}
.dc-customer-bar-label {
    display: inline-flex; align-items: center; gap: 5px;
    font-size: 0.78rem; font-weight: 700; color: var(--mac-text-secondary);
    white-space: nowrap;
}
.dc-customer-select {
    max-width: 150px;
    border: 1px solid var(--mac-separator);
    border-radius: 7px;
    padding: 3px 8px;
    font-size: 0.78rem; color: var(--mac-text);
    background: #fff;
    outline: none;
    cursor: pointer;
    transition: border-color 0.15s, box-shadow 0.15s;
}
.dc-customer-select:focus { border-color: var(--mac-accent); box-shadow: 0 0 0 3px rgba(10,132,255,0.15); }

/* ---------- 数据看板：特码/平码 2 列布局 ---------- */
.dc-num-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 12px;
    align-items: start;
}
.dc-num-grid-3 {
    grid-template-columns: repeat(3, 1fr);
}
@media (max-width: 1100px) {
    .dc-num-grid-3 { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 820px) {
    .dc-num-grid-3 { grid-template-columns: 1fr; }
}
.dc-num-col {
    border: 1px solid #e8e8ed;
    border-radius: 10px;
    overflow: hidden;
    background: #fff;
}

/* ---------- 数据看板：右侧玩法盈亏预览（双行抬头 + 带底纹数字） ---------- */
.dc-preview-head {
    display: grid;
    grid-template-columns: 44px 1fr;
    gap: 6px;
    padding: 5px 8px;
    font-size: 0.72rem;
    background: #f2f2f5;
    color: var(--mac-text-secondary);
    font-weight: 400;
    border-radius: 6px 6px 0 0;
}
/* 双行抬头：保留空格、居中 */
.dc-preview-head-text {
    display: flex;
    flex-direction: column;
    gap: 2px;
}
.dc-preview-head-row {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr;
    gap: 4px;
    text-align: center;
}
.dc-preview-head-row span { letter-spacing: 0.5px; }
/* 第一行（投注额/补货额/最终投注）：每个单元格独立 Mac 蓝色渐变胶囊，文字加粗 */
.dc-preview-head-row1 span {
    background: linear-gradient(180deg, #58aaff 0%, #0a84ff 100%);
    color: rgba(255, 255, 255, 0.95);
    font-weight: 700;
    border-radius: 999px;
    padding: 2px 4px;
    box-shadow: 0 1px 2px rgba(10, 132, 255, 0.25);
}
/* 第二行（输赢/补货输赢/最终输赢）：保持灰色，不加粗 */
.dc-preview-head-row2 { color: var(--mac-text-secondary); }
.dc-preview-group {
    display: flex;
    align-items: stretch;
    gap: 6px;
    padding: 7px 8px;
    margin-bottom: 4px;
    border-radius: 6px;
    border-bottom: 1px dashed #f0f0f2;
    cursor: pointer;
    transition: background 0.12s;
    font-size: 0.74rem;
}
.dc-preview-group:hover { background: rgba(10,132,255,0.07); }
.dc-preview-group.active { background: rgba(10,132,255,0.14); box-shadow: inset 3px 0 0 var(--mac-accent); }
.dc-preview-gname {
    width: 44px;
    flex: 0 0 44px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 800;
    color: var(--mac-text);
    border-right: 1px solid #eee;
}
.dc-preview-group.active .dc-preview-gname { color: var(--mac-accent); }
.dc-preview-lines {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 3px;
    min-width: 0;
}
/* 每行 3 列：投注额 | 补货额 | 最终投注 / 盈亏 | 补货盈亏 | 最终盈亏 */
.dc-preview-line {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr;
    gap: 4px;
    line-height: 1.5;
}
/* 带底纹的数字（去文字提示，仅保留数值；字体缩小以完整显示长数字，不截断） */
.dc-preview-line .cell {
    background: #f4f5f7;
    border-radius: 4px;
    padding: 1px 2px;
    text-align: center;
    font-weight: 700;
    font-size: 0.64rem;
    letter-spacing: -0.2px;
    color: var(--mac-text);
    white-space: nowrap;
}
.dc-preview-line .cell.op { background: #eef1f4; color: #667085; }
.dc-preview-line .cell.res { background: #eaf3ff; box-shadow: inset 0 0 0 1px #d4e6ff; }
.dc-preview-line .cell.positive { color: #e02020; }
.dc-preview-line .cell.negative { color: #0a8f3c; }
.dc-preview-line .cell.lm-pending { color: #f0a020; }

/* 实际总投注额 / 实际盈亏 汇总 */
.dc-actual-summary {
    margin-top: 8px;
    padding: 8px 10px;
    background: #f0f7ff;
    border: 1px solid #bcd8f7;
    border-radius: 8px;
    font-size: 0.74rem;
    color: var(--mac-text);
}
.dc-actual-row {
    display: flex; align-items: center; gap: 4px;
    padding: 3px 0;
    flex-wrap: wrap;
}
.dc-actual-row span:first-child { font-weight: 700; color: #0b6e2e; }
.dc-actual-row b { font-weight: 700; }
.dc-actual-row b.positive { color: #e02020; }
.dc-actual-row b.negative { color: #0a8f3c; }

/* 补货建议弹窗 */
.dc-replenish-modal {
    position: fixed; top: 0; left: 0; right: 0; bottom: 0;
    display: flex; align-items: center; justify-content: center;
    background: rgba(0,0,0,0.45);
    z-index: 1000;
}
.dc-replenish-box {
    background: #fff;
    border-radius: 12px;
    box-shadow: 0 8px 40px rgba(0,0,0,0.25);
    width: 420px; max-width: 90%;
    max-height: 80vh;
    display: flex; flex-direction: column;
    overflow: hidden;
}
.dc-replenish-header {
    display: flex; align-items: center; justify-content: space-between;
    padding: 12px 16px;
    background: linear-gradient(135deg, var(--mac-accent), #5ac8fa);
    color: #fff;
}
.dc-replenish-title { font-size: 1rem; font-weight: 700; }
.dc-replenish-close {
    border: none; background: rgba(255,255,255,0.2); color: #fff;
    width: 28px; height: 28px; border-radius: 8px;
    cursor: pointer; font-size: 1rem;
}
.dc-replenish-body {
    flex: 1; overflow-y: auto;
    padding: 12px 16px;
}
.dc-replenish-table {
    width: 100%; border-collapse: collapse;
    font-size: 0.8rem;
}
.dc-replenish-table th {
    background: #f2f2f5; color: var(--mac-text-secondary);
    padding: 6px 8px; text-align: center; font-weight: 700;
    border-bottom: 1px solid var(--mac-separator);
}
.dc-replenish-table td {
    padding: 5px 8px; text-align: center;
    border-bottom: 1px solid #f0f0f2;
    color: var(--mac-text);
}
.dc-replenish-table td.replenish-pos { color: #ff453a; font-weight: 700; }
.dc-replenish-table td.replenish-neg { color: #0b6e2e; font-weight: 700; }
.dc-replenish-total {
    margin-top: 8px; font-size: 0.82rem; font-weight: 700;
    color: #0b6e2e;
}
.dc-replenish-footer {
    display: flex; gap: 10px;
    padding: 12px 16px;
    border-top: 1px solid var(--mac-separator);
    background: #fbfbfd;
}

.dc-right {
    width: 300px; min-width: 260px; flex-shrink: 0;
    display: flex; flex-direction: column; gap: 10px;
    overflow-y: auto;
}
.dc-summary-card {
    background: var(--mac-glass-strong);
    backdrop-filter: blur(18px) saturate(180%);
    -webkit-backdrop-filter: blur(18px) saturate(180%);
    border: 1px solid var(--mac-separator);
    border-radius: var(--mac-radius);
    box-shadow: var(--mac-shadow-sm);
    overflow: hidden;
    display: flex; flex-direction: column;   /* 让内部列表撑满卡片，与左侧齐平 */
}
.dc-summary-header {
    display: flex; align-items: center; justify-content: space-between;
    padding: 10px 14px;
    background: linear-gradient(180deg, #fafbfc, #f2f4f7);
    border-bottom: 1px solid var(--mac-separator);
    color: #1d1d1f;
}
.dc-summary-title { font-size: 0.92rem; font-weight: 700; color: #1d1d1f; }
.dc-summary-total {
    background: transparent;
    border: none;
    border-radius: 10px;
    padding: 2px 10px;
    font-size: 0.95rem; font-weight: 800;
    color: #1d1d1f;
    font-variant-numeric: tabular-nums;
}
.dc-summary-total.positive { color: #e02020; }
.dc-summary-total.negative { color: #0a8f3c; }
.dc-summary-list {
    padding: 8px 10px;
    flex: 1 1 auto;          /* 自适应：撑满卡片高度，与左侧统计表齐平 */
    min-height: 0;
    overflow-y: scroll;
    font-size: 0.78rem;
}
.dc-summary-list::-webkit-scrollbar { width: 5px; }
.dc-summary-list::-webkit-scrollbar-thumb { background: #b0b0b8; border-radius: 3px; }
.dc-summary-list::-webkit-scrollbar-thumb:hover { background: #909098; }
.dc-summary-list::-webkit-scrollbar-track { background: transparent; }
.dc-summary-row {
    display: flex; justify-content: space-between;
    padding: 4px 6px;
    border-bottom: 1px dashed #f0f0f2;
}
.dc-summary-row:last-child { border-bottom: none; }
.dc-summary-row .no { color: #0b6e2e; font-weight: 700; }
.dc-summary-row .amt { color: #ff9500; font-weight: 600; }

.dc-categories {
    display: flex; flex-direction: column; gap: 8px;
}
.dc-cat-card {
    background: var(--mac-glass-strong);
    backdrop-filter: blur(18px) saturate(180%);
    -webkit-backdrop-filter: blur(18px) saturate(180%);
    border: 1px solid var(--mac-separator);
    border-radius: var(--mac-radius);
    box-shadow: var(--mac-shadow-sm);
    padding: 10px 14px;
    cursor: pointer;
    transition: all 0.15s;
}
.dc-cat-card:hover { transform: translateY(-1px); box-shadow: 0 4px 16px rgba(10,132,255,0.18); border-color: var(--mac-accent); }
.dc-cat-card.active { border-color: var(--mac-accent); background: rgba(10,132,255,0.08); }
.dc-cat-title {
    font-size: 0.92rem; font-weight: 700; color: var(--mac-text);
    margin-bottom: 2px;
}
.dc-cat-meta {
    font-size: 0.7rem; color: var(--mac-gray);
    margin-bottom: 6px;
    font-family: 'SF Mono', Consolas, monospace;
}
.dc-cat-rebate {
    font-size: 0.78rem; color: var(--mac-text-secondary);
}
.dc-cat-empty {
    background: var(--mac-glass-strong);
    border: 1px solid var(--mac-separator);
    border-radius: var(--mac-radius);
    box-shadow: var(--mac-shadow-sm);
    padding: 12px 14px;
    text-align: center;
    color: var(--mac-gray);
    font-size: 0.82rem;
}
@media (max-width: 1100px) {
    .dc-right { width: 260px; }
    .dc-numbers-table { grid-template-columns: repeat(3, 1fr); }
}
@media (max-width: 820px) {
    .dc-body { flex-direction: column; }
    .dc-right { width: 100%; flex-direction: row; flex-wrap: wrap; }
    .dc-summary-card, .dc-categories { flex: 1; min-width: 180px; }
    .dc-numbers-table { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 1100px) {
    .app-subtitle { display: none; }
    .app-nav-item { padding: 8px 10px; font-size: 0.82rem; }
}
@media (max-width: 900px) {
    .recorder-sidebar { display: none; }
    .app-header-inner { flex-wrap: wrap; height: auto; padding: 10px 16px; gap: 10px; }
    .app-nav { order: 3; width: 100%; justify-content: flex-start; overflow-x: auto; }
}

/* ============================================================
   开奖管理页面（参照 wmylhc 布局）
   ============================================================ */
.lm-container {
    flex: 1; min-height: 0;
    display: flex; flex-direction: column;
    padding: 14px;
    gap: 12px;
    overflow: hidden;
}
.lm-toolbar {
    flex-shrink: 0;
    display: flex; align-items: center; justify-content: space-between;
    background: var(--mac-glass-strong);
    backdrop-filter: blur(18px) saturate(180%);
    -webkit-backdrop-filter: blur(18px) saturate(180%);
    border: 1px solid var(--mac-separator);
    border-radius: var(--mac-radius);
    padding: 10px 16px;
    box-shadow: var(--mac-shadow-sm);
}
.lm-title { margin: 0; font-size: 1.15rem; font-weight: 800; color: var(--mac-text); display: flex; align-items: center; gap: 8px; }
.lm-toolbar-actions { display: flex; gap: 8px; }
.lm-btn {
    border: none; border-radius: 9px; cursor: pointer;
    padding: 7px 16px; font-size: 0.85rem; font-weight: 600;
    transition: filter 0.15s; color: #fff;
    display: inline-flex; align-items: center; gap: 5px;
}
.lm-btn-primary { background: var(--mac-accent); box-shadow: 0 2px 8px rgba(10,132,255,0.3); }
.lm-btn-primary:hover { filter: brightness(1.06); }
.lm-btn-secondary { background: #0a84ff; box-shadow: 0 2px 8px rgba(10,132,255,0.3); }
.lm-btn-secondary:hover { filter: brightness(1.06); }
.lm-btn-clear { background: #5c6b7a; box-shadow: 0 2px 8px rgba(0,0,0,0.2); }
.lm-btn-clear:hover { filter: brightness(1.1); }

/* 当前期开奖卡片 */
.lm-current-card {
    flex-shrink: 0;
    background: var(--mac-glass-strong);
    backdrop-filter: blur(18px) saturate(180%);
    -webkit-backdrop-filter: blur(18px) saturate(180%);
    border: 1px solid var(--mac-separator);
    border-radius: var(--mac-radius);
    box-shadow: var(--mac-shadow-sm);
    overflow: hidden;
}
.lm-current-head {
    display: flex; align-items: center; gap: 16px;
    padding: 10px 16px;
    background: linear-gradient(135deg, var(--mac-accent), #5ac8fa);
    color: #fff; flex-wrap: wrap;
}
.lm-current-title { font-size: 0.95rem; font-weight: 800; }
.lm-current-issue, .lm-current-time { font-size: 0.82rem; font-weight: 600; }
.lm-current-status {
    margin-left: auto;
    background: rgba(255,255,255,0.25);
    border-radius: 12px; padding: 2px 12px;
    font-size: 0.78rem; font-weight: 700;
}
.lm-current-status.drawn { background: #34c759; }
.lm-current-status.waiting { background: #ff9500; }
.lm-current-status.upcoming { background: #8e8e93; }
.lm-current-status.open { background: #0a84ff; }
.lm-current-body { padding: 10px 16px; display: flex; flex-direction: column; gap: 8px; }
.lm-num-inputs { display: flex; gap: 10px; flex-wrap: wrap; }
.lm-num-field {
    display: flex; flex-direction: column; align-items: center; gap: 4px;
    width: 64px;
}
.lm-num-field label { font-size: 0.72rem; color: var(--mac-text-secondary); font-weight: 600; }
.lm-num-field.lm-num-special label { color: #ff3b30; font-weight: 800; }
.lm-num-input {
    width: 56px; height: 40px;
    border: 1px solid var(--mac-separator);
    border-radius: 10px;
    text-align: center; font-size: 1rem; font-weight: 700;
    color: var(--mac-text); background: #fff;
    outline: none;
    transition: border-color 0.15s, box-shadow 0.15s;
}
.lm-num-input:focus { border-color: var(--mac-accent); box-shadow: 0 0 0 3px rgba(10,132,255,0.15); }
.lm-num-special .lm-num-input { border-color: #ff3b30; box-shadow: 0 0 0 2px rgba(255,59,48,0.15); }
.lm-current-actions { display: flex; gap: 8px; }
.lm-num-result-row { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.lm-num-result-row .lm-num-inputs { flex: 1 1 auto; }
.lm-num-result-row .lm-result-display { margin-left: auto; padding-left: 16px; border-left: 1px solid #e5e5ea; }
.lm-sync-status { font-size: 0.78rem; color: var(--mac-text-secondary); min-height: 18px; }
.lm-sync-status.ok { color: #0b6e2e; font-weight: 600; }
.lm-sync-status.err { color: #ff453a; font-weight: 600; }
.lm-sync-status.loading { color: var(--mac-accent); }

/* 历史开奖记录 */
.lm-history-card {
    flex: 1; min-height: 0;
    background: var(--mac-glass-strong);
    backdrop-filter: blur(18px) saturate(180%);
    -webkit-backdrop-filter: blur(18px) saturate(180%);
    border: 1px solid var(--mac-separator);
    border-radius: var(--mac-radius);
    box-shadow: var(--mac-shadow-sm);
    display: flex; flex-direction: column; overflow: hidden;
}
.lm-history-head {
    display: flex; align-items: center; justify-content: space-between;
    padding: 10px 16px;
    border-bottom: 1px solid var(--mac-separator);
    background: #fbfbfd;
}
.lm-history-title { font-size: 0.9rem; font-weight: 800; color: var(--mac-text); }
.lm-history-count { font-size: 0.75rem; color: var(--mac-text-secondary); }
.lm-history-table-wrap { flex: 1; overflow: auto; }
.lm-history-table { width: 100%; border-collapse: collapse; font-size: 0.8rem; }
.lm-history-table th {
    background: #f2f2f5; color: var(--mac-text-secondary);
    padding: 9px 12px; text-align: left; font-weight: 700;
    border-bottom: 1px solid var(--mac-separator);
    position: sticky; top: 0; z-index: 1;
}
.lm-history-table td {
    padding: 8px 12px; border-bottom: 1px solid #f0f0f2;
    color: var(--mac-text);
}
.lm-history-table tr:hover td { background: rgba(10,132,255,0.04); }
.lm-empty { text-align: center; color: var(--mac-gray); font-size: 0.82rem; padding: 30px 10px; }
.lm-nums-cell { white-space: nowrap; }
.lm-ball {
    display: inline-block;
    width: 24px; height: 24px; line-height: 24px;
    border-radius: 50%;
    background: linear-gradient(135deg, #0a84ff, #5ac8fa);
    color: #fff; font-size: 0.7rem; font-weight: 700;
    text-align: center; margin-right: 3px;
}
.lm-ball.lm-special { background: linear-gradient(135deg, #ff3b30, #ff9500); }
.lm-status-badge {
    display: inline-block;
    background: #34c759; color: #fff;
    border-radius: 10px; padding: 1px 10px;
    font-size: 0.72rem; font-weight: 600;
}
.lm-row-btn {
    border: 1px solid var(--mac-accent);
    background: rgba(10,132,255,0.08);
    color: var(--mac-accent);
    border-radius: 6px; padding: 2px 10px;
    font-size: 0.72rem; cursor: pointer;
    transition: background 0.15s;
}
.lm-row-btn:hover { background: rgba(10,132,255,0.18); }
.lm-row-del { border-color: #ff453a; color: #ff453a; background: rgba(255,69,58,0.06); }
.lm-row-del:hover { background: rgba(255,69,58,0.14); }
.lm-row-settle { border-color: #b8860b; color: #b8860b; background: rgba(184,134,11,0.06); }
.lm-row-settle:hover { background: rgba(184,134,11,0.14); }
.lm-row-settled { border-color: #8e8e93; color: #8e8e93; background: rgba(142,142,147,0.08); cursor: not-allowed; opacity: 0.7; }

/* ============================================================
   下单录入页调整
   ============================================================ */
/* 需求9：右侧开奖/统计区域暂时隐藏，空出给左侧下单区 */
#page-order .lottery-results { display: none; }
#page-order .order-main { width: 100%; flex: 1; }
/* 需求7（回退）：恢复快捷投注（挑码）界面显示 */
#page-order .quick-bet-buttons { display: block; }

/* 彩种切换 + 配置条 */
.lm-cfg-bar {
    flex-shrink: 0;
    display: flex; align-items: center; justify-content: space-between;
    background: var(--mac-glass-strong);
    backdrop-filter: blur(18px) saturate(180%);
    -webkit-backdrop-filter: blur(18px) saturate(180%);
    border: 1px solid var(--mac-separator);
    border-radius: var(--mac-radius);
    padding: 8px 14px;
    box-shadow: var(--mac-shadow-sm);
    flex-wrap: wrap; gap: 8px;
}
.lm-lottery-tabs { display: flex; gap: 6px; }
.lm-lottery-tab {
    border: none; background: transparent;
    color: var(--mac-text-secondary);
    padding: 6px 18px; font-size: 0.9rem; font-weight: 700;
    border-radius: 9px; cursor: pointer;
    transition: all 0.15s;
}
.lm-lottery-tab:hover { background: rgba(10,132,255,0.08); color: var(--mac-accent); }
.lm-lottery-tab.active { background: var(--mac-accent); color: #fff; box-shadow: 0 2px 8px rgba(10,132,255,0.3); }
.lm-cfg-right { display: flex; align-items: center; gap: 6px; }
.lm-time-label { font-size: 0.78rem; color: var(--mac-text-secondary); font-weight: 600; }
.lm-time-input {
    border: 1px solid var(--mac-separator); border-radius: 7px;
    padding: 4px 8px; font-size: 0.78rem; color: var(--mac-text);
    background: #fff; outline: none;
}
.lm-time-input:focus { border-color: var(--mac-accent); box-shadow: 0 0 0 3px rgba(10,132,255,0.12); }
.lm-save-cfg { padding: 4px 14px; font-size: 0.76rem; }

/* 登录框 */
.lm-login-bar {
    flex-shrink: 0;
    display: flex; align-items: center; gap: 8px;
    background: #fffbe6;
    border: 1px solid #f0d96a;
    border-radius: var(--mac-radius);
    padding: 8px 14px;
    box-shadow: var(--mac-shadow-sm);
    flex-wrap: wrap;
}
.lm-login-label { font-size: 0.82rem; font-weight: 700; color: #8a6d00; white-space: nowrap; }
.lm-login-input {
    border: 1px solid var(--mac-separator); border-radius: 7px;
    padding: 5px 10px; font-size: 0.82rem; color: var(--mac-text);
    width: 140px; background: #fff; outline: none;
}
.lm-login-input:focus { border-color: var(--mac-accent); box-shadow: 0 0 0 3px rgba(10,132,255,0.12); }
.lm-login-status { font-size: 0.75rem; }
.lm-login-status.ok { color: #0b6e2e; font-weight: 600; }
.lm-login-status.err { color: #ff453a; font-weight: 600; }
.lm-login-status.loading { color: var(--mac-accent); }
.lm-btn-login { background: #5ac8fa; box-shadow: 0 2px 8px rgba(90,200,250,0.3); }

/* 号码三色球 + 特码金色高亮 */
.hg-chip {
    display: inline-block;
    min-width: 24px; height: 24px; line-height: 24px;
    border-radius: 50%;
    color: #fff; font-size: 0.7rem; font-weight: 700;
    text-align: center; padding: 0 3px;
}
.hg-chip.hg-special {
    border: 2px solid #ffd700;
    box-shadow: 0 0 0 1px #b8860b, 0 1px 4px rgba(184,134,11,0.5);
    font-weight: 800;
}
/* 历史开奖记录：号码球右侧生肖标注 */
.lm-zodiac {
    display: inline-block;
    margin-left: 2px;
    color: #555;
    font-size: 0.72rem;
    font-weight: 600;
    vertical-align: middle;
}
/* 开奖结果展示：与输入框同行、最小留白、保留原球色号码球 + 生肖标注 */
.lm-result-display {
    margin: 0;
    padding: 0;
    background: none;
    border: none;
}
.lm-result-row { display: flex; gap: 6px; flex-wrap: wrap; align-items: flex-start; }
.lm-result-ball { display: flex; flex-direction: column; align-items: center; width: 52px; }
.lm-ball-label { font-size: 0.62rem; color: var(--mac-text-secondary, #666); margin-bottom: 3px; }
.lm-ball-number {
    width: 38px; height: 38px; line-height: 38px;
    border-radius: 50%;
    color: #fff; font-size: 1rem; font-weight: 800; text-align: center;
    box-shadow: 0 1px 3px rgba(0,0,0,0.25);
}
.lm-result-ball.lm-ball-special .lm-ball-number {
    border: 2px solid #ffd700;
    box-shadow: 0 0 0 1px #b8860b, 0 2px 5px rgba(184,134,11,0.5);
}
.lm-ball-zodiac { margin-top: 3px; font-size: 0.66rem; color: #b8860b; font-weight: 700; }
.lm-result-empty { color: var(--mac-text-secondary, #888); font-size: 0.78rem; }
.lm-history-table.lm-condensed th, .lm-history-table.lm-condensed td {
    text-align: center;
    padding: 6px 8px;
    font-size: 0.76rem;
}
.lm-issue-mono { font-family: 'SF Mono', Consolas, monospace; font-weight: 600; }
.lm-current-tag {
    display: inline-block; background: #ff3b30; color: #fff;
    border-radius: 8px; padding: 0 6px; font-size: 0.62rem; font-weight: 700;
    margin-left: 3px;
}
.lm-time-col { color: var(--mac-text-secondary); font-size: 0.72rem; }
/* 状态徽章色 */
.lm-badge-gray { background: #8e8e93; }
.lm-badge-green { background: #34c759; }
.lm-badge-amber { background: #ff9500; }
.lm-badge-blue { background: #0a84ff; }
.lm-badge-slate { background: #5c6b7a; }
.lm-status-badge {
    display: inline-block; color: #fff;
    border-radius: 10px; padding: 1px 10px;
    font-size: 0.7rem; font-weight: 600;
}

/* ============================================================
   统一蓝色主题（数据总览 / 智能录单 / 业务员 / 开奖管理）
   参照报表中心视觉语言：蓝白渐变表头、蓝色渐变按钮/标签、浅蓝边框卡片、左侧蓝竖条标题、正蓝负红
   ============================================================ */

/* —— 卡片容器：白底 + 浅蓝边框 + 柔和阴影（替代玻璃拟态，与报表中心一致） —— */
.lm-current-card,
.lm-history-card,
.dc-summary-card,
.dc-numbers-wrap,
.recorder-table-wrap,
.dc-cat-card {
    background: #fff;
    border: 1px solid #e7edf5;
    border-radius: 14px;
    box-shadow: 0 2px 10px rgba(15, 54, 102, 0.05);
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
}

/* —— 按钮：蓝色渐变（替代纯蓝） —— */
.dc-btn-primary, .dc-btn-secondary, .dc-btn-warning, .dc-btn-average,
.lm-btn-primary, .lm-btn-secondary, .lm-btn-login,
.recorder-action-btn, .recorder-add-btn,
.placeholder-btn.primary,
.btn-confirm, .recognize-btn, .add-customer-btn,
.btn-action.confirm-winning, .btn-action.sync-lottery, .btn-action.refund {
    background: linear-gradient(135deg, #2f9bff, #0a63c9) !important;
    box-shadow: 0 3px 12px rgba(24, 144, 255, 0.3) !important;
}
.dc-btn-primary:hover, .dc-btn-secondary:hover, .dc-btn-warning:hover, .dc-btn-average:hover,
.lm-btn-primary:hover, .lm-btn-secondary:hover, .lm-btn-login:hover,
.recorder-action-btn:hover, .recorder-add-btn:hover,
.placeholder-btn.primary:hover {
    filter: brightness(1.05);
    box-shadow: 0 5px 16px rgba(24, 144, 255, 0.42) !important;
}
/* 删除类按钮保持红色语义 */
.recorder-action-btn.recorder-del-btn {
    background: linear-gradient(135deg, #ff4d4f, #d9363e) !important;
    box-shadow: 0 3px 12px rgba(255, 77, 79, 0.32) !important;
}
/* 清空/中性按钮：蓝灰渐变 */
.lm-btn-clear { background: linear-gradient(135deg, #8a97a8, #5c6b7a) !important; box-shadow: 0 3px 12px rgba(0, 0, 0, 0.2) !important; }

/* —— 彩种标签 active：蓝色渐变 —— */
.dc-lottery-tab.active,
.lm-lottery-tab.active {
    background: linear-gradient(135deg, #2f9bff, #0a63c9) !important;
    color: #fff !important;
    box-shadow: 0 2px 8px rgba(24, 144, 255, 0.32) !important;
}

/* —— 表头：蓝白渐变 + 深蓝字（统一所有页面表格） —— */
.recorder-table th,
.lm-history-table th,
.confirmed-detail-table th,
.play-config-table th,
.group-stat-table th,
.dc-table-header {
    background: linear-gradient(180deg, #f2f7ff, #eaf2ff) !important;
    color: #3a567a !important;
}

/* —— 历史开奖记录卡片头：蓝白渐变（与报表中心卡片头一致） —— */
.lm-history-head {
    background: linear-gradient(180deg, #f2f7ff, #eaf2ff) !important;
    border-bottom: 1px solid #dbe6f5 !important;
}
/* —— 区块标题：左侧蓝色竖条装饰（仅用于浅色卡片头的标题） —— */
.lm-history-title {
    border-left: 4px solid #1890ff;
    padding-left: 8px;
    font-weight: 700;
    color: #3a567a;
}
/* 智能录单各区块标题（编辑器/识别结果/已确认订单） */
.editor-header,
.results-header,
.confirmed-header {
    background: linear-gradient(180deg, #f2f7ff, #eaf2ff) !important;
    border-left: 4px solid #1890ff;
    color: #3a567a !important;
    font-weight: 700;
}

/* —— 正负盈亏颜色：全局统一为 正数红(赢)、负数绿(输) —— */
.dc-table-row .dc-td.positive { color: #e02020; font-weight: 700; }
.dc-table-row .dc-td.negative { color: #0a8f3c; font-weight: 700; }
.dc-table-row .dc-td.zero { color: #6e6e73; font-weight: 600; }

/* —— 业务员侧边栏列表项选中态：蓝色底纹 —— */
.recorder-item.active,
.recorder-item.selected {
    background: linear-gradient(90deg, #eef6ff, #ffffff);
    border-left: 3px solid #1890ff;
}
.recorder-item:hover { background: #eef6ff; }

/* —— 工具栏容器：白底浅蓝边框卡片化 —— */
.dc-toolbar,
.lm-toolbar,
.lm-cfg-bar {
    background: #fff;
    border: 1px solid #e7edf5;
    border-radius: 12px;
    padding: 10px 14px;
    box-shadow: 0 1px 4px rgba(15, 54, 102, 0.05);
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
}

/* ============================================================
   弹窗视觉统一层（2026-08 重构美化）
   目标：订单详情弹窗（#detailModal）与业务员编辑弹窗（#recorderEditOverlay）
   统一为主界面的 macOS 风格：蓝渐变标题栏 + 圆角 + 柔和阴影 + 分隔线式表格。
   仅覆盖视觉，不改任何布局结构与交互逻辑。
   ============================================================ */

/* ---------- 通用：弹窗弹入动画（display 切换时触发，无需 JS 参与） ---------- */
@keyframes macModalIn {
    from { opacity: 0; transform: translateY(14px) scale(0.97); }
    to   { opacity: 1; transform: translateY(0) scale(1); }
}
#detailModal .modal-content,
.recorder-edit-modal { animation: macModalIn 0.22s cubic-bezier(0.32, 0.72, 0, 1); }

/* ============================================================
   一、订单详情弹窗（数据总览点击行 / 单注详情 共用 #detailModal）
   ============================================================ */
#detailModal .modal-content.detail-modal-wide {
    width: min(1024px, 92vw);          /* 自适应屏宽，避免小屏溢出 */
    max-width: min(1024px, 92vw);
    height: min(660px, 86vh);          /* 自适应屏高，内容不再拥挤 */
    max-height: min(660px, 86vh);
    padding: 0 !important;             /* 覆盖全局毛玻璃层的 20px !important，让色块贴边包裹上部+左右 */
    display: flex;
    flex-direction: column;
    overflow: hidden;
    border-radius: 16px !important;    /* 同上，覆盖 var(--mac-radius-lg) !important */
    box-shadow: 0 24px 64px rgba(10, 42, 94, 0.28), 0 0 0 1px rgba(255, 255, 255, 0.35);
}
#detailModal .modal-header {
    padding: 12px 18px;
    background: linear-gradient(135deg, #0a5a9c 0%, #0a84ff 100%);
    /* 覆盖全局毛玻璃层对 .modal-header 的强制白边/下边框，保持色块贴边 */
    border-bottom: none !important;
    padding-bottom: 12px !important;
    margin-bottom: 0 !important;
}
#detailModal .modal-footer {
    padding-top: 12px !important;      /* 覆盖全局层的 14px，与整体留白一致 */
}
#detailModal .modal-header .title {
    font-size: 1rem; font-weight: 600; letter-spacing: 0.02em;
    color: #fff; text-shadow: 0 1px 2px rgba(0, 0, 0, 0.18);
}
#detailModal .close-modal {
    width: 26px; height: 26px; line-height: 24px; text-align: center;
    border-radius: 50%; color: rgba(255, 255, 255, 0.9); font-size: 1.05rem;
    transition: background 0.15s ease, transform 0.15s ease;
}
#detailModal .close-modal:hover { background: rgba(255, 255, 255, 0.22); transform: scale(1.06); }
#detailModal .modal-body { padding: 14px 18px 6px; }
#detailModal .modal-body::-webkit-scrollbar,
.recorder-edit-body::-webkit-scrollbar { width: 8px; }
#detailModal .modal-body::-webkit-scrollbar-thumb,
.recorder-edit-body::-webkit-scrollbar-thumb {
    background: rgba(10, 84, 204, 0.22); border-radius: 4px; border: 2px solid transparent; background-clip: padding-box;
}
#detailModal .modal-body::-webkit-scrollbar-track,
.recorder-edit-body::-webkit-scrollbar-track { background: transparent; }

/* 原始投注引用卡片 */
.od-raw {
    display: flex; align-items: baseline; gap: 10px;
    margin: 0 0 10px; padding: 9px 12px;
    background: #f2f7ff; border-left: 3px solid #0a84ff; border-radius: 8px;
}
.od-raw-label { flex: none; font-size: 0.72rem; font-weight: 600; color: #0a5a9c; letter-spacing: 0.04em; }
.od-raw-text { font-size: 0.8rem; color: #333; line-height: 1.55; white-space: pre-wrap; word-break: break-all; }

/* 订单明细表格：分隔线式（弱化竖线）+ 渐变表头，与数据中心明细表风格一致 */
.od-table {
    width: 100%; border-collapse: separate; border-spacing: 0;
    font-size: 0.78rem; text-align: center;
    border: 1px solid #dfe8f5; border-radius: 10px; overflow: hidden;
}
.od-table thead th {
    padding: 8px 8px; font-weight: 600; font-size: 0.74rem; color: #0a4d8c;
    background: linear-gradient(180deg, #f4f9ff 0%, #e8f1fd 100%);
    border-bottom: 1px solid #cfe0f4; white-space: nowrap;
}
.od-table tbody td {
    padding: 7px 8px; color: #2c3e50;
    border-bottom: 1px solid #edf2f9; vertical-align: middle;
}
.od-table tbody tr:nth-child(even) { background: #fafcff; }
.od-table tbody tr:hover { background: #eef5ff; }
.od-table tbody tr:last-child td { border-bottom: none; }
.od-idx { color: #93a5bb; font-variant-numeric: tabular-nums; }
.od-amt { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.od-sub { color: #9aa9bd; font-size: 0.68rem; }
.od-balls { text-align: left; }
.od-empty { padding: 14px 8px !important; color: #b42318; }
.od-k { width: 110px; color: #5a6c85; background: #f7fafd; font-weight: 500; }
/* 单注详情：字段-值两列表格，去掉斑马纹改为字段列浅底 */
.od-kv-table tbody tr:nth-child(even) { background: transparent; }
.od-kv-table tbody tr:hover { background: #f7fbff; }

/* 原始解析数据（JSON）代码卡片 */
.od-json-title { margin: 12px 0 6px; font-size: 0.76rem; font-weight: 600; color: #444; }
.od-json {
    margin: 0; padding: 10px 12px; max-height: 220px; overflow: auto;
    font-size: 0.72rem; line-height: 1.5; color: #33475e;
    background: #f4f7fb; border: 1px solid #e1e9f4; border-radius: 8px;
    white-space: pre-wrap; word-break: break-all;
}
.od-json-inline { max-height: 160px; }

/* ============================================================
   图片订单解析失败：紧凑蓝色遮罩 + 锁头「需开通高级会员解锁」
   （2026-08-22 二次调整：仅遮「原文」与下方第一条居中明细，
   蓝色系与标签栏渐变协调，避免大色块突兀；点击无反应）
   ============================================================ */
.od-vip-lock-card {
    position: relative;
    margin: 6px 0 10px;
    border-radius: 10px;
    overflow: hidden;
    border: 1px solid #d7e4f5;
    background: #fff;
    user-select: none;
}
/* 原文区：模拟 .od-raw 引用卡片 */
.od-vip-lock-raw {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 10px 14px;
    background: #f7fafd;
    border-bottom: 1px solid #eaf0f7;
    font-size: 0.8rem;
    color: #333;
    line-height: 1.55;
    white-space: pre-wrap;
    word-break: break-all;
}
/* 第一条居中明细：模拟表格首行 */
.od-vip-lock-rowcell {
    padding: 12px 14px;
    text-align: center;
    font-size: 0.8rem;
    color: #5a6c85;
    background: #fff;
}
/* 蓝色渐变遮罩：与标签栏 linear-gradient(135deg, --mac-accent, #5ac8fa) 同色系 */
.od-vip-lock-mask {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    background: linear-gradient(135deg,
        rgba(10, 132, 255, 0.72) 0%,
        rgba(90, 200, 250, 0.68) 100%);
    -webkit-backdrop-filter: blur(3px);
    backdrop-filter: blur(3px);
    cursor: default;
}
.od-vip-lock-icon {
    font-size: 1.15rem;
    line-height: 1;
    filter: drop-shadow(0 1px 2px rgba(0, 40, 100, 0.35));
}
.od-vip-lock-text {
    padding: 5px 16px;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.94);
    color: #0a5a9c;
    font-size: 0.8rem;
    font-weight: 700;
    letter-spacing: 1px;
    box-shadow: 0 2px 6px rgba(0, 60, 140, 0.22);
}

/* 底部合计：胶囊分组，与底部栏留白呼应 */
#detailModal .detail-modal-summary { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.od-sum-chip {
    padding: 4px 12px; border-radius: 999px;
    background: #eef4fc; border: 1px solid #d7e4f5;
    font-size: 0.78rem; color: #40556e; white-space: nowrap;
}
.od-sum-chip b { color: #0a5a9c; font-variant-numeric: tabular-nums; }
.od-sum-warn { background: #fff7e8; border-color: #f3dfb6; color: #a05e03; }

/* ============================================================
   二、业务员编辑弹窗（#recorderEditOverlay）
   ============================================================ */
.recorder-edit-overlay {
    background: rgba(15, 32, 62, 0.45);
    -webkit-backdrop-filter: blur(6px);
    backdrop-filter: blur(6px);
}
.recorder-edit-modal {
    border-radius: 16px;
    border-top: none;
    box-shadow: 0 24px 64px rgba(10, 42, 94, 0.30), 0 0 0 1px rgba(255, 255, 255, 0.35);
    overflow: hidden;
}
.recorder-edit-header {
    padding: 13px 18px;
    background: linear-gradient(135deg, var(--mac-accent), #5ac8fa);
}
.recorder-edit-header .recorder-edit-title { font-size: 1rem; font-weight: 600; letter-spacing: 0.02em; text-shadow: 0 1px 2px rgba(0, 0, 0, 0.18); }
.recorder-edit-header .close-x {
    width: 26px; height: 26px; line-height: 24px; text-align: center;
    border-radius: 50%; font-size: 1.05rem; color: rgba(255, 255, 255, 0.9);
    transition: background 0.15s ease, transform 0.15s ease;
}
.recorder-edit-header .close-x:hover { background: rgba(255, 255, 255, 0.22); transform: scale(1.06); }

/* 分节标题：左侧蓝色竖条，替代生硬的全宽上边线 */
.recorder-edit-body .recorder-edit-section-title {
    position: relative; margin: 16px 0 8px; padding-left: 10px;
    font-size: 0.82rem; font-weight: 600; color: #274a6d;
    border-top: none;
}
.recorder-edit-body .recorder-edit-section-title::before {
    content: ''; position: absolute; left: 0; top: 50%; transform: translateY(-50%);
    width: 3px; height: 13px; border-radius: 2px; background: #0a84ff;
}
.recorder-edit-body .recorder-edit-section-title span { font-weight: 400; }

/* 表单字段统一间距与输入框风格 */
.recorder-edit-body label { font-size: 0.74rem; color: #5a6c85; margin-bottom: 4px; }
.recorder-edit-body input[type="text"],
.recorder-edit-body input[type="number"],
.recorder-edit-body select {
    padding: 7px 10px; font-size: 0.85rem; color: #24344a;
    border: 1px solid #ccd6e8; border-radius: 7px; background: #fff;
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.recorder-edit-body input[type="text"]:focus,
.recorder-edit-body input[type="number"]:focus,
.recorder-edit-body select:focus {
    outline: none; border-color: #0a84ff;
    box-shadow: 0 0 0 3px rgba(10, 132, 255, 0.15);
}

/* 自定义规则卡片（内联样式已抽为类） */
.recorder-edit-card {
    margin: 0 0 10px; padding: 10px 12px;
    background: #fafcff; border: 1px solid #dbe6f7; border-radius: 10px;
}
.recorder-edit-card-hint { font-size: 0.72rem; color: #8a98ac; margin-bottom: 8px; line-height: 1.45; }
.recorder-add-rule {
    margin-top: 6px; padding: 5px 12px; font-size: 0.78rem;
    color: #0a6ecd; background: #fff; border: 1px dashed #9bb4dd; border-radius: 7px;
    cursor: pointer; transition: background 0.15s ease, border-color 0.15s ease;
}
.recorder-add-rule:hover { background: #f2f8ff; border-color: #0a84ff; }

/* 规则行（原内联样式抽为类，与客户弹窗共用同一渲染函数） */
.dialect-rule-row { display: flex; gap: 6px; align-items: center; margin-bottom: 6px; }
.dialect-rule-input {
    flex: 1; padding: 6px 9px; font-size: 0.8rem; color: #24344a;
    border: 1px solid #ccd6e8; border-radius: 7px; background: #fff;
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.dialect-rule-input:focus { outline: none; border-color: #0a84ff; box-shadow: 0 0 0 3px rgba(10, 132, 255, 0.15); }
.dialect-rule-arrow { color: #93a5bb; font-size: 0.9rem; }
.dialect-rule-del {
    padding: 3px 9px; font-size: 0.85rem; color: #c0392b;
    background: #fff; border: 1px solid #ecc8c8; border-radius: 7px; cursor: pointer;
    transition: background 0.15s ease, border-color 0.15s ease;
}
.dialect-rule-del:hover { background: #fdf1f1; border-color: #c0392b; }

/* 玩法赔率表：与 od-table 同语言的表头 */
.recorder-edit-body .play-config-table thead th {
    background: linear-gradient(180deg, #f4f9ff 0%, #e8f1fd 100%);
    color: #0a4d8c;
}

/* ============================================================
   三、数据总览页面（数据看板 dc-*）+ 玩法配置表：整体复刻 od-table 视觉语言
   （渐变蓝表头 / 分隔线弱化竖线 / 浅蓝斑马纹 / 悬浮高亮）
   ============================================================ */

/* --- 3.1 数据看板主表（dc-table-header / dc-table-row） --- */
.dc-table-header {
    background: linear-gradient(180deg, #f4f9ff 0%, #e8f1fd 100%) !important;
    color: #0a4d8c !important;
    font-weight: 600;
    border-bottom: 1px solid #cfe0f4;
}
/* 分组小表头（玩法组行）：浅蓝底 + 深蓝字 */
.dc-table-header.dc-table-header-sub {
    background: #e8f1fd !important;
    color: #274a6d !important;
    border-bottom: 1px solid #d7e4f5;
}
.dc-table-row {
    border-bottom: 1px solid #edf2f9;
    transition: background 0.12s ease;
}
.dc-table-row:hover { background: #eef5ff; }

/* --- 3.2 数据看板下方明细表（dc-detail-table）与滚动容器 --- */
.dc-detail-scroll {
    border: 1px solid #dfe8f5;
    border-radius: 10px;
}
.dc-detail-table th {
    background: linear-gradient(180deg, #f4f9ff 0%, #e8f1fd 100%) !important;
    color: #0a4d8c !important;
    font-weight: 600;
    border-bottom: 1px solid #cfe0f4;
}
.dc-detail-table td { border-bottom: 1px solid #edf2f9; }
.dc-detail-table tbody tr:nth-child(even) { background: #fafcff; }
.dc-detail-table tbody tr:hover { background: #eef5ff; }
.dc-detail-table tbody tr:last-child td { border-bottom: none; }
/* 弹窗内 13 列明细表（od-table）紧凑化，与 dc-detail-wide 同规格 */
.od-table.od-table-wide thead th,
.od-table.od-table-wide tbody td {
    font-size: 0.72rem;
    padding: 4px 6px;
}
/* 中奖行保留既有"淡红底纹 + 红左边框"语义，仅补悬浮过渡 */
.od-table tr.detail-payout-row:hover td { background: #fdeeee; }

/* --- 3.3 玩法配置表（play-config-table）：去除灰底纹，统一为 od-table 风格 --- */
.play-config-table {
    border: 1px solid #dfe8f5;
    border-radius: 10px;
    /* 注意：不可在此处设置 overflow:hidden，否则会截断 position:sticky 表头（表头无法在滚动容器内固定） */
}
.play-config-table th {
    background: linear-gradient(180deg, #f4f9ff 0%, #e8f1fd 100%) !important;
    color: #0a4d8c !important;
    font-weight: 600;
    border: none;
    border-bottom: 1px solid #cfe0f4;
    border-right: 1px solid #e3edf9;
}
.play-config-table td {
    border: none;
    border-bottom: 1px solid #edf2f9;
    border-right: 1px solid #eef3fa;
}
.play-config-table td:last-child { border-right: none; }
.play-config-table tbody tr:nth-child(even) td { background: #fafcff; }
.play-config-table tbody tr:hover td { background: #eef5ff; }
.play-config-table tbody tr:last-child td { border-bottom: none; }
/* 玩法分组行：浅蓝底、深蓝字（替代原灰底 #eeeeee） */
.play-config-table .group-header {
    background: #e8f1fd !important;
    color: #274a6d;
    border-bottom: 1px solid #d7e4f5;
}
.play-config-table .play-name { color: #274a6d; font-weight: 600; }
.play-config-table .label-a { color: #5a6c85; }
.play-config-table .label-b { color: #93a5bb; }
/* 赔率输入框：统一蓝色聚焦环 */
.play-config-table input[type="number"] {
    border: 1px solid #ccd6e8;
    border-radius: 5px;
    background: #fff;
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.play-config-table input[type="number"]:focus {
    outline: none;
    border-color: #0a84ff;
    box-shadow: 0 0 0 2px rgba(10, 132, 255, 0.15);
}
.play-config-scroll {
    border: 1px solid #dfe8f5;
    border-radius: 10px;
}

/* ============================================================
   四、报表中心 / 微信自动化 / 服务续费 风格统一补充（2026-08）
   ============================================================ */

/* --- 4.1 报表中心：表头与内容居中对齐（名称/首列左对齐） --- */
#reportSalesTable th,
#reportSalesTable td { text-align: center; }
#reportSalesTable th:nth-child(2),
#reportSalesTable td.rc-name { text-align: left; padding-left: 10px; }
#reportSalesTable .rc-detail-row td:first-child { text-align: left; }
#reportPlayTable th,
#reportPlayTable td { text-align: center; }
#reportPlayTable th:first-child,
#reportPlayTable td:first-child { text-align: left; }
/* 占比条在居中列内保持块级居中 */
#reportSalesTable .rc-bar { margin: 2px auto; }

/* --- 4.2 微信自动化面板：微信绿 → 全局 macOS 蓝视觉语言 --- */
.wechat-panel {
    border-radius: var(--mac-radius, 12px);
    box-shadow: var(--mac-shadow, 0 4px 20px rgba(15, 54, 102, 0.10));
}
.wechat-panel-header {
    background: linear-gradient(135deg, var(--mac-accent, #0a84ff), #5ac8fa);
}
.wechat-tabs { background: #f7faff; border-bottom-color: #e3edf9; }
.wechat-tab { color: #5a6c85; }
.wechat-tab:hover { color: #0a84ff; background: #eef5ff; }
.wechat-tab.active {
    color: #0a84ff;
    border-bottom-color: #0a84ff;
    font-weight: 600;
}
.wechat-btn.refresh {
    background: linear-gradient(135deg, var(--mac-accent, #0a84ff), #5ac8fa);
}
.wechat-btn.refresh:hover { filter: brightness(1.08); }
.wechat-btn.start {
    background: linear-gradient(135deg, var(--mac-accent, #0a84ff), #5ac8fa);
    box-shadow: 0 2px 6px rgba(10, 132, 255, 0.25);
}
.wechat-btn.start:hover {
    background: linear-gradient(135deg, #0a74e0, #4bb8f8);
    box-shadow: 0 3px 8px rgba(10, 132, 255, 0.35);
}
/* 回到微信按钮：文字居中 + 手型图标 2s 闪烁提醒 */
.back-to-wechat {
    margin: 8px 0 0 0;
    width: 100%;
    justify-content: center;
    gap: 6px;
    padding: 9px 12px;
    font-size: 0.85rem;
}
.back-to-wechat-hand {
    display: inline-block;
    font-size: 1.15rem;
    line-height: 1;
    animation: back-to-wechat-blink 2s ease-in-out infinite;
}
@keyframes back-to-wechat-blink {
    0%, 100% { opacity: 1; transform: scale(1); }
    50% { opacity: 0.2; transform: scale(1.18); }
}
.wechat-section {
    background: #fff;
    border: 1px solid #e3edf9;
    border-radius: 10px;
    box-shadow: 0 1px 4px rgba(15, 54, 102, 0.05);
}
#qrImage { border: 1px solid #dfe8f5; border-radius: 8px; }
/* 导航栏入口按钮 / 最小化浮球：微信绿 → 全局蓝 */
.wechat-auto-btn {
    background: linear-gradient(135deg, var(--mac-accent, #0a84ff), #5ac8fa);
    box-shadow: 0 2px 8px rgba(10, 132, 255, 0.3);
}
.wechat-auto-btn:hover { filter: brightness(1.08); }
.wechat-float-btn {
    background: linear-gradient(135deg, var(--mac-accent, #0a84ff), #5ac8fa);
    box-shadow: 0 4px 20px rgba(10, 132, 255, 0.4);
}
.wechat-form-row input:focus,
.wechat-form-row select:focus {
    border-color: #0a84ff;
    box-shadow: 0 0 0 3px rgba(10, 132, 255, 0.15);
}
.wechat-stat-num { color: #0a84ff; }
.wechat-mapping-info .arrow { color: #0a84ff; }

/* ============================================================
   五、赔率配置表：A/B 含义标注 + 输入框宽度兜底（2026-08）
   说明：业务员/客户编辑弹窗中赔率数字输入框加宽并隐藏
   浏览器数字调节箭头，避免数字被遮挡显示不全；
   玩法名下方以小字标注 A/B 赔率各自对应的条件。
   ============================================================ */
/* 兜底：确保最终级联生效（宽度 + 隐藏 spinner） */
.play-config-table input[type="number"] {
    width: 72px;
    min-width: 72px;
    -moz-appearance: textfield;
    appearance: textfield;
}
.play-config-table input[type="number"]::-webkit-outer-spin-button,
.play-config-table input[type="number"]::-webkit-inner-spin-button {
    -webkit-appearance: none;
    margin: 0;
}
/* 玩法名下的 A/B 条件小标（全局，三处配置界面通用） */
.play-config-table .play-name .label-a,
.play-config-table .play-name .label-b {
    display: block;
    font-size: 0.62rem;
    font-weight: 400;
    line-height: 1.25;
    white-space: nowrap;
}
.play-config-table .play-name .label-a { color: #8a6d3b; }
.play-config-table .play-name .label-b { color: #3c763d; }

/* --- 4.3 服务续费：主色统一为全局 accent 蓝（状态徽章保留语义色） --- */
.renewal-plan-btn {
    background: linear-gradient(135deg, var(--mac-accent, #0a84ff), #5ac8fa);
    box-shadow: 0 2px 6px rgba(10, 132, 255, 0.28);
}
.renewal-plan-btn:hover {
    background: linear-gradient(135deg, #0a74e0, #4bb8f8);
    box-shadow: 0 4px 12px rgba(10, 132, 255, 0.38);
}
.renewal-check { background: var(--mac-accent, #0a84ff); }
.renewal-section-title {
    border-left: 4px solid var(--mac-accent, #0a84ff);
    padding-left: 10px;
}

/* ============================================================
   五、智能录单·单滚动区锁定（方案A · 自适应高度版）
   打通 视口→页面→grid→order-main→order-content→footer 的高度链：
   已确认订单区真正弹性吃满剩余空间（视口越高订单区越大），
   右侧开奖栏改为内部滚动；矮窗口自动退回页面滚动防止内容被裁。
   ============================================================ */
#page-order.active { overflow: hidden; display: flex; flex-direction: column; }
/* grid 容器：行高锁定为可用高度，两栏等高 */
#page-order .order-entry-container {
    flex: 1 1 auto;
    min-height: 0;
    grid-template-rows: minmax(0, 1fr);
    overflow: hidden;
}
/* 左栏：竖向 flex 高度链 */
#page-order .order-main { display: flex; flex-direction: column; min-height: 0; }
#page-order .order-header { flex-shrink: 0; }
#page-order .order-content {
    flex: 1 1 auto;
    min-height: 0;
    overflow: hidden;
    display: flex;
    flex-direction: column;
}
#page-order .recognize-order-footer {
    flex: 1 1 auto;
    min-height: 0;
    overflow: hidden;
}
/* 右栏开奖结果：改为内部滚动，不撑破 grid 行高 */
#page-order .lottery-results {
    min-height: 0;
    overflow-y: auto;
    overscroll-behavior: contain;
}
/* 各录入区块不参与压缩 */
#page-order .recognize-header,
#page-order .action-footer { flex-shrink: 0; }
/* 编辑器/预览区：随视口自适应（约 26vh，150~250px 之间），空间不足时先压缩它 */
#page-order .editor-results-container {
    height: clamp(150px, 26vh, 250px);
    flex: 0 1 auto;
    min-height: 150px;
}
/* 快捷投注/内嵌赔率面板展开时不被压缩 */
#page-order .inline-odds-panel,
#page-order .quick-bet-buttons { flex-shrink: 0; }
/* 内嵌赔率面板展开时：面板自身内部滚动，页面滚动条永不出现 */
#page-order .order-content:has(.inline-odds-panel:not([style*="display:none"])) .inline-odds-panel {
    flex: 1 1 0;
    min-height: 0;
    display: flex;
    flex-direction: column;
}
#page-order .order-content:has(.inline-odds-panel:not([style*="display:none"])) .inline-odds-body {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    overscroll-behavior: contain;
}
#page-order .inline-odds-body::-webkit-scrollbar { width: 8px; }
#page-order .inline-odds-body::-webkit-scrollbar-thumb { background: #c3d4ea; border-radius: 4px; }
#page-order .inline-odds-body::-webkit-scrollbar-track { background: transparent; }
/* 已确认订单：弹性吃满剩余空间；保底 max(220px, 42vh)，上限防超大屏过度占高 */
#page-order .confirmed-orders {
    flex: 1 1 0;
    min-height: max(220px, 42vh);
    max-height: 62vh;
}
/* 唯一滚动区：已确认订单列表（完全隐藏滚动条，仍可滚动） */
#page-order .confirmed-content {
    overflow-y: auto;
    overscroll-behavior: contain; /* 滚到头不穿透到页面 */
    scrollbar-width: none;      /* Firefox */
    -ms-overflow-style: none;   /* 旧 Edge */
    padding: 0 8px;             /* 去掉上下内边距，消除吸顶头部的缝隙 */
}
#page-order .confirmed-content::-webkit-scrollbar { display: none; width: 0; height: 0; }
/* 单一滚动架构：内层表格不再单独滚动，外层为唯一滚动容器，
   保证表头 sticky 相对外层生效 */
#page-order .confirmed-orders-scroll {
    max-height: none;
    overflow: visible;
}
/* 表头吸顶：吸附在冻结的群组头部（删除全部/导出按钮区）正下方，
   --ug-header-h 由 JS 实测头部高度写入，避免缝隙 */
#page-order .confirmed-detail-table thead th {
    position: sticky;
    top: var(--ug-header-h, 38px);
    z-index: 3; /* 低于群组头部(4)，滚动时行内容被头部与表头完全遮挡 */
}
/* 群组头部吸顶时贴紧滚动区顶端，消除缝隙 */
#page-order .user-group-header { top: 0; }
/* 注：矮窗口下布局整体 overflow:hidden，内容压缩适配，外围滚动条永不出现 */

/* ============================================================
   六、智能录单·按钮降噪（仅本页作用域）
   层级化：每处仅保留一个实心主按钮，次要操作降为幽灵样式；
   统一缩小尺寸，消除大色块造成的视觉干扰。
   ============================================================ */
/* 识别 / 清空内容 / 确认结果：紧凑化 */
#page-order .actions .btn,
#page-order .recognize-header .recognize-btn,
#page-order .btn-clear {
    padding: 5px 14px;
    font-size: 0.8rem;
    font-weight: 600;
    border-radius: 7px;
    box-shadow: none;
}
/* 清空内容（破坏性次要操作）：幽灵化，白底灰字，hover 才泛红 */
#page-order .btn-clear {
    background: #fff;
    color: #8e8e93;
    border: 1px solid #d5dbe5;
}
#page-order .btn-clear:hover {
    background: #fff5f5;
    color: var(--mac-red);
    border-color: #f0c5c5;
    filter: none;
}
/* 已确认订单组头：删除全部 / 导出表格 / 导出图片 → 小号幽灵按钮 */
#page-order .user-group-header .clear-group-btn {
    padding: 3px 10px;
    font-size: 0.72rem;
    font-weight: 500;
    border-radius: 6px;
    background: #fff;
}
/* 删除全部（含"删除选中"态）：浅红幽灵 */
#page-order .user-group-header .clear-group-btn:not(.export-group-btn) {
    color: var(--mac-red);
    border: 1px solid #f0c8c8;
}
#page-order .user-group-header .clear-group-btn:not(.export-group-btn):hover {
    background: #ffefef;
    filter: none;
}
/* 导出表格 / 导出图片：浅蓝幽灵 */
#page-order .user-group-header .export-group-btn {
    color: var(--mac-accent);
    border: 1px solid #bcd8f7;
}
#page-order .user-group-header .export-group-btn:hover {
    background: #eef5ff;
    filter: none;
}
/* 唯一滚动区：已确认订单列表（完全隐藏滚动条，仍可滚动） */
#page-order .confirmed-content {
    overflow-y: auto;
    overscroll-behavior: contain;
    scrollbar-width: none;
    -ms-overflow-style: none;
}
#page-order .confirmed-content::-webkit-scrollbar { display: none; width: 0; height: 0; }

/* ============================================================
   鍏ㄥ眬缁熶竴杈撹耽閰嶈壊锛?026-08-17锛塡n   瑙勫垯锛氳耽锛堟鏁帮級= 绾㈣壊锛岃緭锛堣礋鏁帮級= 缁胯壊锛岄浂 = 涓€х伆銆俓n   瑕嗙洊锛氭暟鎹€昏缁熻琛?/ 鎬荤泩浜?/ 鐜╂硶鎬昏 / 璁㈠崟璇︽儏寮圭獥 /
   鏅鸿兘褰曞崟宸茬‘璁よ鍗?/ 璇︽儏椤?/ 鎶ヨ〃涓績 绛夊叏閮ㄥ満鏅€俓n   ============================================================ */
.positive, .profit-positive, .total-profit.positive, .user-profit.positive,
.stat-profit.positive, .dc-actual-row b.positive, .dc-preview-line .cell.positive {
    color: #e02020 !important;
}
.negative, .profit-negative, .total-profit.negative, .user-profit.negative,
.stat-profit.negative, .dc-actual-row b.negative, .dc-preview-line .cell.negative {
    color: #0a8f3c !important;
}
.rc-pos { color: #e02020 !important; }
.rc-neg { color: #0a8f3c !important; }
.rc-zero { color: #6e6e73 !important; }
/* 鎬荤泩浜忓崱鐗囷紙涓€ф祬搴曪紝绾㈢豢鏂囧瓧鍙锛?*/
.dc-summary-total.positive { color: #e02020 !important; }
.dc-summary-total.negative { color: #0a8f3c !important; }

/* 鏁版嵁鎬昏锛氬凡寮€濂栨椂鎵归噺琛ヨ揣/绠楀悆骞冲潎/閫€鏁版寜閽鐢ㄦ€?*/
.dc-btn:disabled, .dc-btn[disabled] {
    opacity: 0.45;
    cursor: not-allowed;
    filter: grayscale(0.6);
    pointer-events: auto;
}

/* ============================================================
   寰俊鑷姩鍖栵細宸查€€鍗曟爣璁?+ 璁㈠崟璇︽儏鍘熸枃鍥剧墖锛?026-08-17锛塡n   ============================================================ */
/* 宸茬‘璁よ鍗曞垪琛?璇︽儏锛氬凡閫€鍗曞窘绔狅紙涓庤В鏋愮姸鎬佸苟鍒楋級 */
.item-parse-status.item-refunded {
    display: inline-flex; align-items: center; gap: 3px;
    background: linear-gradient(135deg, #fff1f0, #ffe3e0);
    color: #c0392b;
    border: 1px solid rgba(192, 57, 43, 0.35);
    border-radius: 999px;
    padding: 2px 10px;
    font-size: 0.7rem; font-weight: 700;
    margin-left: 6px;
}
.item-parse-status.item-refunded .item-parse-icon { font-size: 0.72rem; }

/* 璁㈠崟璇︽儏寮圭獥锛氶€€鍗曟彁绀哄潡 */
.od-refund-tip {
    display: flex; align-items: center; flex-wrap: wrap; gap: 8px;
    background: linear-gradient(90deg, #fff5f4, #fff);
    border: 1px solid rgba(224, 32, 32, 0.3);
    border-left: 4px solid #e02020;
    border-radius: 10px;
    padding: 8px 12px;
    margin: 6px 0 2px 0;
    font-size: 0.78rem;
}
.od-refund-badge {
    background: #e02020; color: #fff;
    border-radius: 999px; padding: 2px 12px;
    font-weight: 800; font-size: 0.75rem;
    flex-shrink: 0;
}
.od-refund-meta { color: #6e6e73; }
.od-refund-hint { color: #e02020; font-weight: 700; margin-left: auto; }

/* 璁㈠崟璇︽儏寮圭獥锛氬井淇″師鍥炬煡鐪嬶紙鍥剧墖OCR璁㈠崟锛?*/
.od-wx-image {
    display: flex; align-items: flex-start; gap: 8px;
    background: #f7f8fa;
    border: 1px solid var(--mac-separator, #e5e5ea);
    border-radius: 10px;
    padding: 8px 12px;
    margin: 6px 0 2px 0;
    font-size: 0.78rem;
}
.od-wx-image img {
    max-width: 260px; max-height: 180px;
    border-radius: 8px;
    border: 1px solid var(--mac-separator, #e5e5ea);
    cursor: zoom-in;
    display: block;
    transition: transform 0.15s ease;
}
.od-wx-image img:hover { transform: scale(1.02); box-shadow: 0 2px 10px rgba(0,0,0,0.15); }

/* 璁㈠崟璇︽儏寮圭獥锛氬井淇℃潵婧愯 */
.od-wx-source {
    display: flex; align-items: center; gap: 8px;
    color: #6e6e73;
    font-size: 0.75rem;
    padding: 2px 12px;
}
.od-wx-src-text { color: #5b7fa8; font-weight: 600; }
