* {
        box-sizing: border-box;
      }

      html, body {
        margin: 0;
        padding: 0;
        height: 100%;
      }

      body {
        font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Segoe UI', system-ui, sans-serif;
        background: #f5f7fa;
        color: #1f2937;
        min-height: 100vh;
      }

      .container {
        width: 100%;
        max-width: 100%;
        margin: 0;
        padding: 0;
        height: 100vh;
        display: flex;
        flex-direction: column;
        overflow: hidden;
      }

      .content {
        flex: 1;
        display: flex;
        flex-direction: column;
        background: #ffffff;
        overflow: hidden;
        width: 100%;
      }

      .tabs-nav {
        display: flex;
        background:
          linear-gradient(180deg, rgba(255, 255, 255, 0.96), rgba(248, 250, 252, 0.96));
        border-bottom: 1px solid rgba(203, 213, 225, 0.9);
        overflow-x: auto;
        flex-shrink: 0;
        min-height: 58px;
        padding: 6px 10px 0;
        gap: 4px;
        scrollbar-width: none;
      }
      .tabs-nav::-webkit-scrollbar { display: none; }

      .tab-btn {
        flex: 0 0 auto;
        min-width: 138px;
        padding: 7px 18px 9px;
        background: transparent;
        border: none;
        color: #6b7280;
        font-size: 13px;
        font-weight: 600;
        cursor: pointer;
        transition: all 0.18s ease;
        position: relative;
        white-space: nowrap;
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
        gap: 2px;
        border-radius: 14px 14px 0 0;
      }

      .tab-btn .tab-main {
        color: inherit;
        font-size: 13.5px;
        font-weight: 800;
        letter-spacing: 0.01em;
        line-height: 1.25;
      }

      .tab-btn .tab-sub {
        color: #94a3b8;
        font-size: 10.5px;
        font-weight: 700;
        line-height: 1.2;
      }

      .tab-btn:hover:not(.locked) {
        color: #111827;
        background: #f1f5f9;
      }

      .tab-btn.active {
        color: #0f172a;
        background: #ffffff;
        box-shadow: 0 -1px 0 rgba(255, 255, 255, 0.9), 0 10px 24px rgba(15, 23, 42, 0.08);
      }

      .tab-btn.active .tab-sub {
        color: #2563eb;
      }

      .tab-btn.active::after {
        content: '';
        position: absolute;
        bottom: 0;
        left: 14px;
        right: 14px;
        height: 3px;
        border-radius: 999px 999px 0 0;
        background: linear-gradient(90deg, #0ea5e9, #2563eb);
      }

      .tab-btn.locked {
        opacity: 0.4;
        cursor: not-allowed;
        color: #d1d5db;
      }

      .tab-btn.locked:hover {
        background: transparent;
      }

      .locked-tab-pane {
        margin: 22px;
        border: 1px dashed #cbd5e1;
        border-radius: 14px;
        padding: 28px 26px;
        background: linear-gradient(180deg, #f8fafc 0%, #f1f5f9 100%);
        color: #64748b;
      }
      .locked-tab-pane h2 { margin: 0 0 8px; color: #334155; font-size: 20px; }
      .locked-tab-pane p { margin: 0; font-size: 13px; }

      .tab-pane {
        display: none !important;
        flex: 1;
        overflow: auto;
        animation: fadeIn 0.3s ease;
      }

      .tab-pane.active {
        display: flex !important;
        flex-direction: column;
        flex: 1;
        overflow: auto;
        animation: fadeInPage 0.2s ease;
      }
      @keyframes fadeInPage {
        from { opacity: 0; transform: translateY(3px); }
        to   { opacity: 1; transform: translateY(0); }
      }

      @keyframes fadeIn {
        from { opacity: 0; }
        to { opacity: 1; }
      }

      @keyframes tableRowEnter {
        from {
          opacity: 0;
          transform: translateY(4px);
        }
        to {
          opacity: 1;
          transform: translateY(0);
        }
      }

      /* ========== 主页授权 UI ========== */
      
      .auth-welcome-container {
        display: flex;
        align-items: center;
        justify-content: center;
        flex: 1;
        padding: 40px 20px;
        background: linear-gradient(135deg, rgba(102, 126, 234, 0.05) 0%, rgba(118, 75, 162, 0.05) 100%);
      }

      .auth-welcome-card {
        background: rgba(255, 255, 255, 0.95);
        backdrop-filter: blur(20px);
        border: 1px solid rgba(255, 255, 255, 0.3);
        border-radius: 24px;
        padding: 60px 50px;
        max-width: 700px;
        width: 100%;
        box-shadow: 0 25px 50px rgba(0, 0, 0, 0.3);
        text-align: center;
        animation: slideUp 0.5s cubic-bezier(0.4, 0, 0.2, 1);
      }

      @keyframes slideUp {
        from {
          opacity: 0;
          transform: translateY(30px);
        }
        to {
          opacity: 1;
          transform: translateY(0);
        }
      }

      .auth-welcome-header {
        margin-bottom: 50px;
      }

      .auth-welcome-icon {
        font-size: 80px;
        margin-bottom: 24px;
        display: block;
        animation: bounce 0.6s cubic-bezier(0.68, -0.55, 0.265, 1.55);
      }

      @keyframes bounce {
        0%, 100% { transform: translateY(0); }
        50% { transform: translateY(-20px); }
      }

      .auth-welcome-title {
        margin: 0 0 16px 0;
        font-size: 32px;
        font-weight: 800;
        background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
        -webkit-background-clip: text;
        -webkit-text-fill-color: transparent;
        background-clip: text;
      }

      .auth-welcome-subtitle {
        margin: 0;
        font-size: 16px;
        color: #6b7280;
        font-weight: 500;
      }

      .auth-welcome-body {
        margin-bottom: 50px;
      }

      .auth-welcome-options {
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: 24px;
      }

      @media (max-width: 700px) {
        .auth-welcome-options {
          grid-template-columns: 1fr;
        }
      }

      .auth-option-btn {
        padding: 40px 30px;
        border: 2px solid #e5e7eb;
        border-radius: 16px;
        background: #ffffff;
        cursor: pointer;
        transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
        display: flex;
        flex-direction: column;
        align-items: center;
        gap: 16px;
      }

      .auth-option-btn:hover {
        transform: translateY(-8px);
        border-color: #667eea;
        box-shadow: 0 20px 40px rgba(102, 126, 234, 0.2);
      }

      .auth-option-have:hover {
        border-color: #10b981;
        box-shadow: 0 20px 40px rgba(16, 185, 129, 0.2);
      }

      .auth-option-register:hover {
        border-color: #f59e0b;
        box-shadow: 0 20px 40px rgba(245, 158, 11, 0.2);
      }

      .auth-option-icon {
        font-size: 48px;
      }

      .auth-option-title {
        font-size: 18px;
        font-weight: 700;
        color: #1f2937;
      }

      .auth-option-desc {
        font-size: 14px;
        color: #9ca3af;
      }

      .auth-welcome-footer {
        padding-top: 30px;
        border-top: 1px solid #e5e7eb;
      }

      .auth-welcome-tips {
        margin: 0;
        font-size: 14px;
        color: #6b7280;
      }

      /* 模态框 */
      .auth-modal {
        position: fixed;
        top: 0;
        left: 0;
        right: 0;
        bottom: 0;
        z-index: 1000;
        display: flex;
        align-items: center;
        justify-content: center;
        padding: 20px;
      }

      .auth-modal-overlay {
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        bottom: 0;
        background:
          radial-gradient(circle at 20% 18%, rgba(56, 189, 248, 0.22), transparent 32%),
          radial-gradient(circle at 80% 10%, rgba(245, 158, 11, 0.16), transparent 28%),
          rgba(2, 6, 23, 0.68);
        backdrop-filter: blur(14px);
        animation: fadeIn 0.3s ease;
      }

      .auth-modal-content {
        position: relative;
        background:
          radial-gradient(circle at 0% 0%, rgba(219, 234, 254, 0.80), transparent 32%),
          #ffffff;
        border: 1px solid rgba(191, 219, 254, 0.95);
        border-radius: 24px;
        width: 90%;
        max-width: 480px;
        max-height: calc(100vh - 40px);
        overflow: auto;
        box-shadow: 0 34px 90px rgba(2, 6, 23, 0.42);
        color: #1f2937;
        animation: modalLiftIn 0.24s ease both;
      }

      .auth-modal-header {
        padding: 22px 26px 18px;
        border-bottom: 1px solid #e5e7eb;
        display: flex;
        justify-content: space-between;
        align-items: center;
      }

      .auth-modal-header h2 { margin: 0; font-size: 19px; font-weight: 700; color: #111827; }

      .auth-modal-close {
        background: #f3f4f6;
        border: none;
        color: #6b7280;
        width: 34px; height: 34px;
        border-radius: 8px;
        font-size: 20px;
        cursor: pointer;
        display: flex;
        align-items: center;
        justify-content: center;
        transition: background 0.15s, color 0.15s;
        padding: 0;
      }

      .auth-modal-close:hover { background: #e5e7eb; color: #111827; }

      .auth-modal-body { padding: 24px 26px; }

      .auth-modal-footer {
        padding: 18px 26px;
        border-top: 1px solid #e5e7eb;
        display: flex;
        gap: 12px;
        justify-content: flex-end;
      }

      @keyframes modalLiftIn {
        from { opacity: 0; transform: translateY(14px) scale(0.98); }
        to { opacity: 1; transform: translateY(0) scale(1); }
      }

      .auth-form {
        display: flex;
        flex-direction: column;
        gap: 20px;
      }

      .auth-form-group {
        display: flex;
        flex-direction: column;
        gap: 10px;
      }

      .auth-input-label { font-size: 12px; font-weight: 600; color: #6b7280; text-transform: uppercase; letter-spacing: 0.05em; margin-bottom: 6px; display: block; }

      .auth-form-input,
      .auth-code-input {
        padding: 12px 16px;
        border: 2px solid #e5e7eb;
        border-radius: 10px;
        font-size: 15px;
        transition: border-color 0.2s, box-shadow 0.2s;
        background: #f9fafb;
        color: #1f2937;
        width: 100%;
      }

      .auth-form-input:focus,
      .auth-code-input:focus {
        outline: none;
        border-color: #58a6ff;
        box-shadow: 0 0 0 3px rgba(88,166,255,0.2);
      }

      .auth-input-wrapper {
        display: flex;
        align-items: stretch;
        border: 1.5px solid #e5e7eb;
        border-radius: 10px;
        overflow: hidden;
        background: #f9fafb;
        transition: border-color 0.2s, box-shadow 0.2s;
      }
      .auth-input-wrapper:focus-within {
        border-color: #58a6ff;
        box-shadow: 0 0 0 3px rgba(88,166,255,0.2);
      }

      .auth-code-input {
        flex: 1;
        font-family: 'SF Mono', 'Fira Code', 'Monaco', monospace;
        letter-spacing: 1px;
        background: transparent;
        border: none;
        outline: none;
        padding: 12px 16px;
        color: #1f2937;
        font-size: 14px;
      }
      .auth-code-input::placeholder { color: #9ca3af; }

      .auth-input-toggle {
        padding: 0 14px;
        background: transparent;
        border: none;
        border-left: 1px solid #e5e7eb;
        cursor: pointer;
        font-size: 16px;
        transition: background 0.15s, color 0.15s;
        min-width: 44px;
        color: #6b7280;
        display: flex;
        align-items: center;
        justify-content: center;
        flex-shrink: 0;
      }

      .auth-input-toggle:hover {
        background: #f3f4f6;
        color: #1f2937;
      }

      .auth-input-toggle:active {
        background: #e5e7eb;
      }

      .auth-status {
        padding: 14px 16px;
        border-radius: 10px;
        font-size: 14px;
        font-weight: 500;
        margin-top: 12px;
        animation: slideDown 0.3s ease;
      }

      @keyframes slideDown {
        from {
          opacity: 0;
          transform: translateY(-10px);
        }
        to {
          opacity: 1;
          transform: translateY(0);
        }
      }

      .auth-status.success {
        background: #dcfce7;
        color: #166534;
        border: 1px solid #86efac;
      }

      .auth-status.error {
        color: #b91c1c;
        background: #fef2f2;
        border: 1px solid #fca5a5;
      }

      /* 按钮 */
      .btn-primary, .btn-secondary {
        display: inline-flex; align-items: center; gap: 6px;
        justify-content: center;
        padding: 8px 18px; border-radius: 8px;
        font-size: 13px; font-weight: 600; cursor: pointer;
        transition: background 0.15s, transform 0.12s, box-shadow 0.15s;
        white-space: nowrap; border: 1px solid transparent;
        text-decoration: none;
      }
      .btn-primary {
        background: #2563eb; color: #fff; border-color: #2563eb;
      }
      .btn-primary:hover {
        background: #1d4ed8; transform: translateY(-1px);
        box-shadow: 0 4px 14px rgba(37,99,235,0.3);
      }
      .btn-primary:active { transform: translateY(0); box-shadow: none; }
      .btn-secondary {
        background: #ffffff; color: #374151; border-color: #d1d5db;
      }
      .btn-secondary:hover {
        background: #f9fafb; border-color: #9ca3af; transform: translateY(-1px);
      }
      .btn-secondary:active { transform: translateY(0); }
      .btn-logout {
        background: #fef2f2; color: #dc2626;
        border-color: #fca5a5;
      }
      .btn-logout:hover {
        background: #fee2e2; border-color: #f87171;
      }

      /* 配置容器 */
      .auth-config-container { padding: 32px; flex: 1; background: #f5f7fa; overflow: auto; }

      /* ========== 实时资金流表格 ========== */
      
      .realtime-section {
        display: flex;
        flex-direction: column;
        flex: 1;
        overflow: hidden;
        min-height: 0;
      }

      .realtime-section > h2 {
        flex-shrink: 0;
        margin: 0;
        padding: 12px 20px;
        font-size: 15px;
        font-weight: 700;
        color: #1f2937;
        border-bottom: 1px solid #e5e7eb;
        background: #f8fafc;
      }

      .realtime-metrics {
        flex-shrink: 0;
        padding: 10px 16px;
        display: flex;
        gap: 8px 12px;
        flex-wrap: wrap;
        border-bottom: 1px solid #e5e7eb;
        background: #f8fafc;
        align-items: center;
      }

      .data-table-container {
        flex: 1;
        overflow: auto;
        min-height: 0;
        border: 1px solid rgba(203, 213, 225, 0.82);
        border-radius: 16px;
        background: linear-gradient(180deg, #ffffff 0%, #f8fbff 100%);
        box-shadow:
          inset 0 1px 0 rgba(255, 255, 255, 0.9),
          0 14px 32px rgba(15, 23, 42, 0.06);
      }
      .data-table-container::-webkit-scrollbar { height: 6px; width: 6px; }
      .data-table-container::-webkit-scrollbar-track { background: transparent; }
      .data-table-container::-webkit-scrollbar-thumb {
        background: rgba(148, 163, 184, 0.56);
        border-radius: 999px;
      }
      .data-table-container::-webkit-scrollbar-thumb:hover { background: rgba(100, 116, 139, 0.72); }

      .data-table {
        width: 100%;
        min-width: 1800px;
        border-collapse: separate;
        border-spacing: 0;
        background: transparent;
        font-size: 12.5px;
        font-variant-numeric: tabular-nums;
      }

      .data-table thead { position: sticky; top: 0; z-index: 20; }

      /* 普通表头单元格 */
      .data-table th {
        padding: 9px 7px;
        text-align: center;
        font-weight: 800;
        border-bottom: 1px solid #dbe4ee;
        border-right: 1px solid #edf2f7;
        white-space: nowrap;
        background: linear-gradient(180deg, #f8fafc 0%, #eef3f8 100%);
        color: #475569;
        font-size: 11px;
        letter-spacing: 0.025em;
      }

      /* 大类表头（概念资金流 / 地域资金流）*/
      .data-table th.section-header {
        font-size: 12.5px;
        font-weight: 700;
        color: #1e293b;
        letter-spacing: 0;
        padding: 10px 8px;
        background:
          linear-gradient(135deg, rgba(219, 234, 254, 0.92) 0%, rgba(226, 232, 240, 0.94) 100%);
        border-bottom: 2px solid #bfdbfe;
      }

      /* 大类左侧加粗竖线分割 */
      .data-table th.section-header,
      .data-table th[data-field="name"],
      .data-table td[data-field="name"] {
        border-left: 2px solid #cbd5e1;
      }
      /* 第一列（排行）不加左边框 */
      .data-table th:first-child,
      .data-table td:first-child {
        border-left: none;
      }

      /* 时间戳表头行 */
      .data-table th.timestamp-header {
        font-size: 10.5px;
        color: #64748b;
        font-weight: 600;
        background: rgba(248, 250, 252, 0.86);
        padding: 4px 6px;
      }

      .data-table td {
        padding: 8px 7px;
        text-align: center;
        border-bottom: 1px solid #eef2f7;
        border-right: 1px solid #f6f8fb;
        white-space: nowrap;
        color: #374151;
        background: rgba(255, 255, 255, 0.96);
        transition: background-color 0.16s ease, color 0.16s ease, box-shadow 0.16s ease;
      }
      .data-table tbody tr:nth-child(-n+24) {
        animation: tableRowEnter 0.18s ease both;
      }
      #stockQuoteSection .data-table tbody tr {
        animation: none !important;
      }
      .data-table tbody tr:hover td { background: #eff6ff !important; }
      .data-table tbody tr:hover td:first-child {
        box-shadow: inset 3px 0 0 rgba(37, 99, 235, 0.45);
      }
      .data-table tbody tr:nth-child(even) td { background: #fbfdff; }

      /* td 大类左侧分割线 */
      .data-table td[data-field="name"] {
        border-left: 2px solid #e2e8f0;
        font-weight: 600;
        color: #1e293b;
        min-width: 80px;
      }

      .data-table td.name { text-align: center; font-weight: 600; color: #1e293b; min-width: 80px; }
      .stock-name-addable {
        cursor: pointer;
        color: #1d4ed8;
        font-weight: 700;
        text-decoration: underline;
        text-underline-offset: 2px;
      }
      .stock-name-addable:hover {
        color: #1e40af;
        text-decoration: underline;
      }

      @media (prefers-reduced-motion: reduce) {
        .data-table tbody tr {
          animation: none !important;
        }
      }

      /* 净额 / 净占比 / 涨跌幅：正红负绿 */
      .data-table td.amount.positive,
      .data-table td.percent.positive,
      .data-table td.change.positive { color: #dc2626; font-weight: 600; }

      .data-table td.amount.negative,
      .data-table td.percent.negative,
      .data-table td.change.negative { color: #16a34a; font-weight: 600; }

      .data-table td.amount,
      .data-table td.percent,
      .data-table td.change { font-weight: 500; }

      .data-table td.stock { color: #64748b; font-size: 11.5px; }

      /* 实时个股行情：资金流正负号（>0 红 / <0 绿 / =0 灰） */
      .data-table td.amount.zero { color: #9ca3af; font-weight: 500; }
      /* 涨速分档：>2 紫，0.8~2 红，0~0.8 灰；负数对称，<-2 深绿 */
      .data-table td.percent.speed-fast-up { color: #7c3aed; font-weight: 700; }
      .data-table td.percent.speed-up { color: #dc2626; font-weight: 700; }
      .data-table td.percent.speed-flat { color: #9ca3af; font-weight: 600; }
      .data-table td.percent.speed-down { color: #16a34a; font-weight: 700; }
      .data-table td.percent.speed-fast-down { color: #166534; font-weight: 700; }

      /* 实时个股行情：状态文本颜色 */
      .state-normal { color: #64748b; font-weight: 600; }
      .state-suspended { color: #dc2626; font-weight: 700; }

      /* 收紧：只作用于“实时个股行情看板”表格，避免其它表受影响 */
      #stockQuoteTable {
        font-size: 11px;
        width: max-content;
        min-width: 100%;
        table-layout: auto;
      }
      #stockQuoteTable thead th {
        padding: 6px 2px !important;
        font-size: 11px;
        white-space: nowrap;
        width: 1%;
      }
      #stockQuoteTable tbody td {
        padding: 5px 1px !important;
        font-size: 11px;
        white-space: nowrap;
        width: 1%;
      }
      #stockQuoteTable tbody tr.stock-quote-row-limit-up td {
        background: #fde2e2 !important;
      }
      #stockQuoteTable tbody tr.stock-quote-row-limit-up:hover td {
        background: #f9cfcf !important;
      }
      #stockQuoteTable.data-table { min-width: 100%; }
      #stockQuoteTable td.name { min-width: 0; }

      #stockQuoteSection .stock-quote-grid {
        display: grid;
        grid-template-columns: 6.5fr 3.5fr;
        gap: 12px;
        margin: 16px;
        flex: 1;
        height: auto;
        min-height: 0;
        overflow: hidden;
      }
      /* CSS Grid 默认 min-width:auto 会被子元素(如表格 min-width)撑爆，必须显式允许收缩 */
      #stockQuoteSection .stock-quote-grid > * {
        min-width: 0;
      }
      #stockQuoteSection .stock-quote-grid .realtime-card {
        margin: 0;
        min-height: 0;
      }
      /* 左侧两卡：上「实时个股行情」下「涨跌停异动（Tab）」；高度 6:4 */
      #stockQuoteSection .stock-quote-left {
        display: grid;
        grid-template-rows: 6fr 4fr;
        gap: 12px;
        min-height: 0;
        min-width: 0;
      }
      #stockQuoteSection .stock-quote-left .realtime-card {
        display: flex;
        flex-direction: column;
        min-height: 0;
        min-width: 0;
      }
      /* 右侧一张卡：市场实时扫描（内部两个区：涨速异动/实时快报） */
      #stockQuoteSection .stock-quote-right {
        display: grid;
        grid-template-rows: 1fr;
        gap: 12px;
        min-height: 0;
        min-width: 0;
      }
      #stockQuoteSection .stock-quote-right .realtime-card {
        display: flex;
        flex-direction: column;
        min-height: 0;
        min-width: 0;
      }
      #stockQuoteSection .stock-quote-right .data-table-container,
      #stockQuoteSection .stock-quote-right .scan-card-body {
        flex: 1;
        min-height: 0;
        overflow: auto;
      }
      /* 主看板表格容器也必须占满卡片剩余高度，否则会把卡片撑高且无法在容器内纵向滚动 */
      #stockQuoteSection .stock-quote-grid > .realtime-card > .data-table-container {
        flex: 1;
        min-height: 0;
        overflow: auto;
      }
      /* 扫描卡片：禁止横向滚动条，只允许纵向滚动 */
      #stockQuoteSection .stock-quote-right .scan-card-body {
        overflow-y: auto;
        overflow-x: hidden;
      }

      /* 涨跌停异动卡片：Tab 样式（三段横向） */
      .limit-tabs-head {
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 12px;
        padding: 6px 10px;
        border-bottom: 1px solid #eef2f7;
        background: #f8fafc;
        flex-shrink: 0;
      }
      .limit-tabs-right {
        display: inline-flex;
        align-items: center;
        gap: 8px;
        flex-shrink: 0;
        min-width: 0;
        flex-wrap: wrap;
        justify-content: flex-end;
      }
      .limit-tabs-title {
        display: flex;
        align-items: center;
        gap: 8px;
        min-width: 0;
        flex: 1 1 auto;
      }
      .limit-tabs-title h2 {
        margin: 0;
        font-size: 14px;
        font-weight: 800;
        color: #0f172a;
        white-space: nowrap;
        flex-shrink: 0;
      }
      .limit-tabs-title .sub {
        font-size: 11px;
        color: #64748b;
        line-height: 1.12;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
        min-width: 0;
      }
      .limit-status-rich {
        display: inline-flex;
        align-items: center;
        gap: 4px;
        flex-wrap: nowrap;
        min-width: 0;
        max-width: 100%;
      }
      .limit-status-time {
        color: #0f172a;
        font-weight: 900;
        font-size: 11px;
        line-height: 1;
        font-variant-numeric: tabular-nums;
        font-family: "DIN Alternate", "Avenir Next", "SF Pro Display", "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
      }
      .limit-status-item {
        display: inline-flex;
        align-items: baseline;
        gap: 2px;
        font-weight: 800;
        line-height: 1;
      }
      .limit-status-item.is-up {
        color: #dc2626;
      }
      .limit-status-item.is-down {
        color: #2563eb;
      }
      .limit-status-key {
        font-size: 10px;
        opacity: 0.92;
      }
      .limit-status-num {
        font-size: 11.5px;
        font-weight: 900;
        font-variant-numeric: tabular-nums;
        font-family: "DIN Alternate", "Avenir Next", "SF Pro Display", "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
      }
      .limit-status-muted {
        color: #64748b;
        font-weight: 700;
        min-width: 0;
        overflow: hidden;
        text-overflow: ellipsis;
      }
      .limit-status-sep {
        color: #cbd5e1;
        font-weight: 800;
        flex: 0 0 auto;
      }
      .limit-tabs {
        display: inline-flex;
        align-items: center;
        gap: 5px;
        flex-shrink: 0;
        flex-wrap: wrap;
      }
      .limit-filters {
        display: inline-flex;
        align-items: center;
        gap: 8px;
        padding-left: 7px;
        margin-left: 2px;
        border-left: 1px solid #e2e8f0;
        flex-shrink: 0;
      }
      .limit-filter-line {
        display: inline-flex;
        align-items: center;
        gap: 6px;
        font-size: 11.5px;
        color: #334155;
        font-weight: 800;
        user-select: none;
        cursor: pointer;
        white-space: nowrap;
      }
      .limit-filter-line input[type="checkbox"] {
        width: 14px;
        height: 14px;
        accent-color: #2563eb;
        cursor: pointer;
      }
      .limit-filter-inline-text {
        font-size: 11.5px;
        color: #64748b;
        font-weight: 700;
        white-space: nowrap;
      }
      .limit-filter-number {
        width: 56px;
        height: 28px;
        padding: 4px 8px;
        border: 1px solid #dbe7f5;
        border-radius: 8px;
        background: #ffffff;
        color: #0f172a;
        font-size: 12px;
        font-weight: 800;
        font-variant-numeric: tabular-nums;
        font-family: "DIN Alternate", "Avenir Next", "SF Pro Display", "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
        outline: none;
      }
      .limit-filter-number:focus {
        border-color: #60a5fa;
        box-shadow: 0 0 0 3px rgba(96, 165, 250, 0.16);
      }
      .limit-filter-number:disabled {
        background: #f8fafc;
        color: #94a3b8;
        cursor: not-allowed;
      }
      .limit-filters.is-hidden {
        display: none;
      }
      .stock-quote-board-header {
        grid-template-columns: minmax(0, 1fr) max-content max-content !important;
      }
      .stock-quote-title-block {
        min-width: 0;
      }
      .stock-quote-title-row {
        display: flex;
        align-items: center;
        gap: 10px;
        flex-wrap: wrap;
        min-width: 0;
      }
      .stock-quote-title-meta {
        margin-top: 5px;
        display: flex;
        align-items: center;
        gap: 8px;
        flex-wrap: wrap;
        min-width: 0;
      }
      .stock-quote-title-meta-label {
        color: #6b7280;
        font-size: 12px;
      }
      .stock-quote-title-meta-value {
        color: #111827;
        font-weight: 700;
        font-size: 12px;
      }
      .stock-quote-title-meta-sep {
        color: #d1d5db;
      }
      .stock-quote-board-actions {
        gap: 12px;
        flex-wrap: wrap;
      }
      .stock-quote-pin-filters {
        display: inline-flex;
        align-items: center;
        gap: 10px;
        flex-wrap: wrap;
        min-height: 32px;
        padding: 4px 10px;
        border: 1px solid #dbe7f5;
        border-radius: 10px;
        background: linear-gradient(180deg, #ffffff 0%, #f8fbff 100%);
        box-shadow: inset 0 1px 0 rgba(255,255,255,0.92), 0 4px 14px rgba(148, 163, 184, 0.08);
      }
      .stock-quote-pin-filter-line {
        display: inline-flex;
        align-items: center;
        gap: 6px;
        color: #334155;
        font-size: 12px;
        font-weight: 700;
        user-select: none;
        cursor: pointer;
        white-space: nowrap;
      }
      .stock-quote-pin-filter-line input[type="checkbox"] {
        width: 14px;
        height: 14px;
        accent-color: #2563eb;
        cursor: pointer;
      }
      .stock-quote-industry-filter-bar {
        display: inline-flex;
        align-items: center;
        gap: 6px;
        flex-wrap: wrap;
        min-height: 32px;
        padding: 4px 8px 4px 10px;
        border: 1px solid #dbe7f5;
        border-radius: 999px;
        background: linear-gradient(180deg, #ffffff 0%, #f8fbff 100%);
        box-shadow: inset 0 1px 0 rgba(255,255,255,0.92), 0 4px 14px rgba(148, 163, 184, 0.12);
      }
      .stock-quote-industry-filter-label {
        color: #64748b;
        font-size: 11px;
        font-weight: 800;
        letter-spacing: .02em;
        white-space: nowrap;
      }
      .stock-quote-industry-filter-chip {
        display: inline-flex;
        align-items: center;
        min-height: 22px;
        padding: 2px 10px;
        border-radius: 999px;
        border: 1px solid rgba(59, 130, 246, 0.22);
        background: linear-gradient(180deg, #eff6ff 0%, #dbeafe 100%);
        color: #1d4ed8;
        font-size: 12px;
        font-weight: 800;
        box-shadow: 0 3px 10px rgba(37, 99, 235, 0.14);
      }
      .stock-quote-industry-filter-clear.btn-secondary {
        min-height: 22px;
        padding: 2px 9px;
        border-radius: 999px;
        border-color: #dbe7f5;
        background: #ffffff;
        color: #475569;
        font-size: 11.5px;
        font-weight: 700;
        box-shadow: none;
      }
      .stock-quote-industry-filter-clear.btn-secondary:hover {
        border-color: #93c5fd;
        color: #1d4ed8;
        background: #eff6ff;
      }
      .stock-quote-industry-link {
        color: #1d4ed8;
        font-weight: 800;
        text-decoration-line: underline;
        text-decoration-style: solid;
        text-decoration-thickness: 1.5px;
        text-decoration-color: currentColor;
        text-underline-offset: 2px;
        cursor: pointer;
        transition: color .15s ease, filter .15s ease, text-decoration-color .15s ease;
      }
      .stock-quote-industry-link:hover {
        color: #1e40af;
        filter: brightness(0.96);
      }
      .stock-quote-industry-link.is-active {
        color: #1e3a8a;
        text-decoration-thickness: 2px;
      }
      @media (max-width: 1280px) {
        .stock-quote-board-header {
          grid-template-columns: minmax(0, 1fr) !important;
        }
        .stock-quote-board-header .snapshot-controls {
          justify-self: start;
        }
        .stock-quote-board-header .stock-quote-board-actions {
          justify-content: flex-start;
        }
      }
      .limit-tab-btn {
        border: 1px solid #e2e8f0;
        background: #ffffff;
        color: #334155;
        font-size: 11.5px;
        font-weight: 800;
        padding: 4px 8px;
        border-radius: 999px;
        cursor: pointer;
        user-select: none;
        line-height: 1.15;
      }
      .limit-tab-btn.active {
        background: #2563eb;
        color: #ffffff;
        border-color: #2563eb;
      }
      .limit-card-body {
        padding: 4px 8px 6px;
        flex: 1;
        min-height: 0;
        overflow: hidden;
        display: flex;
        flex-direction: column;
        gap: 4px;
      }
      @media (max-width: 1500px) {
        .limit-tabs-head {
          align-items: flex-start;
        }
        .limit-tabs-title {
          flex-wrap: wrap;
          row-gap: 3px;
        }
        .limit-tabs-title .sub {
          white-space: normal;
        }
        .limit-status-rich {
          flex-wrap: wrap;
        }
      }
      .limit-tab-panel {
        flex: 1;
        min-height: 0;
        overflow: auto;
      }
      /* 昨日涨停追踪：目标尽量不出现纵向滚动条 */
      #limitPanelYday.limit-tab-panel {
        overflow-x: auto;
        overflow-y: hidden;
        overscroll-behavior-x: contain;
        padding-bottom: 2px;
      }
      #limitPanelYday.limit-tab-panel::-webkit-scrollbar {
        height: 8px;
      }
      #limitPanelYday.limit-tab-panel::-webkit-scrollbar-thumb {
        background: #cbd5e1;
        border-radius: 999px;
      }
      #limitPanelYday.limit-tab-panel::-webkit-scrollbar-track {
        background: #eef2f7;
        border-radius: 999px;
      }
      #limitPanelEmotion.limit-tab-panel {
        overflow: hidden;
      }
      .limit-tab-panel.hidden {
        display: none;
      }

      .limit-count-shell {
        height: 100%;
        min-height: 0;
        display: flex;
        flex-direction: column;
        gap: 8px;
        padding: 8px 4px 4px;
        box-sizing: border-box;
      }
      .limit-count-chart-card {
        flex: 1;
        min-height: 0;
        border-radius: 14px;
        border: 1px solid #dbe7f5;
        background: linear-gradient(180deg, #ffffff 0%, #f8fbff 100%);
        box-shadow: inset 0 1px 0 rgba(255,255,255,0.78);
        padding: 10px 10px 8px;
        display: flex;
        flex-direction: column;
        gap: 8px;
      }
      .limit-count-chart-head {
        display: flex;
        align-items: baseline;
        justify-content: space-between;
        gap: 8px;
        flex-wrap: wrap;
      }
      .limit-count-chart-title {
        font-size: 13px;
        font-weight: 900;
        color: #0f172a;
      }
      .limit-count-chart-sub {
        font-size: 11px;
        color: #64748b;
        font-weight: 700;
      }
      .limit-count-chart-wrap {
        flex: 1;
        min-height: 0;
        position: relative;
        overflow: hidden;
        border-radius: 12px;
        background:
          radial-gradient(circle at top left, rgba(37, 99, 235, 0.06), transparent 34%),
          linear-gradient(180deg, #fbfdff 0%, #f4f8fd 100%);
        border: 1px solid rgba(219, 231, 245, 0.86);
        cursor: crosshair;
        touch-action: none;
        padding: 2px 0 0;
        box-sizing: border-box;
      }
      .limit-count-chart-svg {
        width: 100%;
        height: 100%;
        display: block;
        shape-rendering: geometricPrecision;
        text-rendering: geometricPrecision;
        overflow: visible;
      }
      .limit-count-axis {
        stroke: #94a3b8;
        stroke-width: 1.15;
      }
      .limit-count-grid {
        stroke: rgba(148, 163, 184, 0.14);
        stroke-width: 1;
        stroke-dasharray: 2 6;
      }
      .limit-count-line-up {
        fill: none;
        stroke: #dc2626;
        stroke-width: 2.8;
        stroke-linecap: round;
        stroke-linejoin: round;
      }
      .limit-count-line-down {
        fill: none;
        stroke: #2563eb;
        stroke-width: 2.6;
        stroke-linecap: round;
        stroke-linejoin: round;
      }
      .limit-count-ref-line {
        stroke: rgba(15, 23, 42, 0.34);
        stroke-width: 1.1;
        stroke-dasharray: 4 5;
      }
      .limit-count-dot-up,
      .limit-count-dot-down {
        stroke: #fff;
        stroke-width: 2;
      }
      .limit-count-dot-up {
        fill: #dc2626;
      }
      .limit-count-dot-down {
        fill: #2563eb;
      }
      .limit-count-axis-text {
        font-size: 12px;
        fill: #475569;
        font-weight: 700;
        letter-spacing: 0;
        dominant-baseline: middle;
        font-variant-numeric: tabular-nums;
        font-family: inherit;
      }
      .limit-count-axis-text.is-active {
        fill: #0f172a;
        font-weight: 800;
      }
      .limit-count-axis-text.is-dim {
        fill: #64748b;
      }
      .limit-count-hover-band {
        fill: rgba(14, 165, 233, 0.08);
        transition: opacity 120ms ease;
      }
      .limit-count-hover-line {
        stroke: rgba(14, 165, 233, 0.5);
        stroke-width: 1.1;
        stroke-dasharray: 4 4;
        transition: opacity 120ms ease;
      }
      .limit-count-hover-dot-up,
      .limit-count-hover-dot-down {
        stroke: #ffffff;
        stroke-width: 2.2;
        transition: opacity 120ms ease;
      }
      .limit-count-hover-dot-up {
        fill: #dc2626;
      }
      .limit-count-hover-dot-down {
        fill: #2563eb;
      }
      .limit-count-hover-card {
        position: absolute;
        left: 12px;
        top: 12px;
        min-width: 164px;
        padding: 9px 11px;
        border-radius: 13px;
        border: 1px solid rgba(148, 163, 184, 0.22);
        background: rgba(15, 23, 42, 0.94);
        box-shadow: 0 16px 38px rgba(15, 23, 42, 0.24);
        backdrop-filter: blur(10px);
        pointer-events: none;
        transition: left 60ms linear, top 60ms linear;
        z-index: 2;
      }
      .limit-count-hover-time {
        font-size: 12px;
        font-weight: 900;
        color: #f8fafc;
        margin-bottom: 6px;
        font-family: "DIN Alternate", "Avenir Next", "SF Pro Display", "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
      }
      .limit-count-hover-row {
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 10px;
        font-size: 11px;
        font-weight: 800;
        color: #cbd5e1;
      }
      .limit-count-hover-row + .limit-count-hover-row {
        margin-top: 4px;
      }
      .limit-count-hover-row strong {
        font-size: 15px;
        line-height: 1;
        font-variant-numeric: tabular-nums;
        font-family: "DIN Alternate", "Avenir Next", "SF Pro Display", "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
      }
      .limit-count-hover-row.up strong {
        color: #dc2626;
      }
      .limit-count-hover-row.down strong {
        color: #2563eb;
      }
      .limit-count-hover-chip {
        display: inline-flex;
        width: 8px;
        height: 8px;
        border-radius: 999px;
        margin-right: 6px;
      }
      .limit-count-hover-chip.up {
        background: #dc2626;
      }
      .limit-count-hover-chip.down {
        background: #2563eb;
      }
      .limit-count-legend {
        display: flex;
        gap: 12px;
        align-items: center;
        flex-wrap: wrap;
        font-size: 11px;
        color: #475569;
        font-weight: 700;
      }
      .limit-count-legend-item {
        display: inline-flex;
        align-items: center;
        gap: 5px;
      }
      .limit-count-legend-swatch {
        width: 10px;
        height: 10px;
        border-radius: 999px;
      }
      .limit-count-legend-swatch.up {
        background: #dc2626;
      }
      .limit-count-legend-swatch.down {
        background: #2563eb;
      }
      .limit-count-legend-swatch.ref {
        width: 14px;
        height: 0;
        border-top: 2px dashed rgba(15, 23, 42, 0.46);
        border-radius: 0;
        background: transparent;
      }

      .industry-limit-shell {
        height: 100%;
        min-height: 0;
        display: flex;
        flex-direction: column;
        gap: 4px;
        padding: 4px 2px 2px;
        box-sizing: border-box;
      }
      .industry-limit-chart-card {
        flex: 1;
        min-height: 0;
        border-radius: 14px;
        border: 1px solid #dbe7f5;
        background: linear-gradient(180deg, #ffffff 0%, #f8fbff 100%);
        box-shadow: inset 0 1px 0 rgba(255,255,255,0.78);
        padding: 5px 7px 5px;
        display: flex;
        flex-direction: column;
        gap: 3px;
      }
      .industry-limit-chart-wrap {
        flex: 1;
        min-height: 0;
        position: relative;
        overflow: hidden;
        border-radius: 12px;
        background:
          radial-gradient(circle at top left, rgba(34, 197, 94, 0.06), transparent 34%),
          linear-gradient(180deg, #fbfdff 0%, #f4f8fd 100%);
        border: 1px solid rgba(219, 231, 245, 0.86);
        cursor: crosshair;
        touch-action: none;
        padding: 1px 0 0;
        box-sizing: border-box;
      }
      .industry-limit-chart-svg {
        width: 100%;
        height: 100%;
        display: block;
        shape-rendering: geometricPrecision;
        text-rendering: geometricPrecision;
        overflow: visible;
      }
      .industry-limit-axis {
        stroke: #94a3b8;
        stroke-width: 1.15;
      }
      .industry-limit-grid {
        stroke: rgba(148, 163, 184, 0.11);
        stroke-width: 0.9;
        stroke-dasharray: 2 7;
      }
      .industry-limit-axis-text {
        font-size: 12px;
        fill: #475569;
        font-weight: 700;
        letter-spacing: 0;
        dominant-baseline: middle;
        font-variant-numeric: tabular-nums;
        font-family: inherit;
      }
      .industry-limit-axis-text.is-active {
        fill: #0f172a;
        font-weight: 800;
      }
      .industry-limit-axis-text.is-dim {
        fill: #64748b;
      }
      .industry-limit-hover-line {
        stroke: rgba(30, 41, 59, 0.44);
        stroke-width: 1;
        stroke-dasharray: 3 5;
      }
      .industry-limit-hover-band {
        fill: rgba(30, 41, 59, 0.04);
      }
      .industry-limit-hover-card {
        position: absolute;
        left: 12px;
        top: 12px;
        min-width: 190px;
        max-width: 270px;
        padding: 9px 11px;
        border-radius: 13px;
        border: 1px solid rgba(148, 163, 184, 0.22);
        background: rgba(15, 23, 42, 0.94);
        box-shadow: 0 16px 38px rgba(15, 23, 42, 0.24);
        backdrop-filter: blur(10px);
        pointer-events: none;
        transition: left 60ms linear, top 60ms linear;
        z-index: 2;
      }
      .industry-limit-hover-time {
        font-size: 12px;
        font-weight: 900;
        color: #f8fafc;
        margin-bottom: 6px;
        font-family: "DIN Alternate", "Avenir Next", "SF Pro Display", "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
      }
      .industry-limit-hover-row {
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 10px;
        font-size: 11px;
        font-weight: 800;
        color: #cbd5e1;
      }
      .industry-limit-hover-row + .industry-limit-hover-row {
        margin-top: 4px;
      }
      .industry-limit-hover-row strong {
        font-size: 14px;
        line-height: 1;
        color: #f8fafc;
        font-variant-numeric: tabular-nums;
        font-family: "DIN Alternate", "Avenir Next", "SF Pro Display", "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
      }
      .industry-limit-hover-chip {
        display: inline-flex;
        width: 8px;
        height: 8px;
        border-radius: 999px;
        margin-right: 6px;
      }
      .industry-limit-legend {
        display: flex;
        gap: 6px 10px;
        align-items: center;
        flex-wrap: nowrap;
        overflow-x: auto;
        overflow-y: hidden;
        font-size: 11px;
        color: #475569;
        font-weight: 700;
        min-height: 28px;
        height: 28px;
        max-height: 28px;
        padding: 0 1px 1px;
        scrollbar-width: none;
        -ms-overflow-style: none;
        mask-image: linear-gradient(90deg, transparent 0, #000 12px, #000 calc(100% - 12px), transparent 100%);
      }
      .industry-limit-legend::-webkit-scrollbar {
        display: none;
      }
      .industry-limit-legend-empty {
        font-size: 11px;
        font-weight: 700;
        color: #94a3b8;
      }
      .industry-limit-legend-placeholder {
        display: inline-flex;
        align-items: center;
        gap: 7px;
        flex: 0 0 auto;
        height: 24px;
        padding: 0 10px;
        border-radius: 999px;
        border: 1px solid rgba(191, 219, 254, 0.88);
        background: linear-gradient(90deg, rgba(239, 246, 255, 0.96) 0%, rgba(248, 250, 252, 0.98) 100%);
        color: #64748b;
        animation: industryLegendPlaceholderPulse 1.2s ease-in-out infinite;
      }
      .industry-limit-legend-placeholder::before {
        content: "";
        width: 8px;
        height: 8px;
        border-radius: 999px;
        background: #60a5fa;
        box-shadow: 0 0 0 0 rgba(96, 165, 250, 0.34);
        animation: industryLegendPlaceholderDot 1.2s ease-in-out infinite;
      }
      .industry-limit-legend-item {
        display: inline-flex;
        align-items: center;
        gap: 5px;
        flex: 0 0 auto;
        white-space: nowrap;
        height: 24px;
        padding: 0 8px;
        border-radius: 999px;
        border: 1px solid rgba(203, 213, 225, 0.72);
        background: rgba(248, 250, 252, 0.92);
        cursor: pointer;
        user-select: none;
        transition: border-color .14s ease, background-color .14s ease, color .14s ease;
      }
      .industry-limit-legend-item:hover {
        border-color: rgba(96, 165, 250, 0.62);
        background: rgba(239, 246, 255, 0.94);
      }
      .industry-limit-legend-item.is-active {
        border-color: rgba(37, 99, 235, 0.72);
        background: rgba(219, 234, 254, 0.95);
        color: #1d4ed8;
      }
      .industry-limit-legend-swatch {
        width: 10px;
        height: 10px;
        border-radius: 999px;
      }
      @keyframes industryLegendPlaceholderPulse {
        0%, 100% {
          opacity: 0.88;
          transform: translateY(0);
        }
        50% {
          opacity: 1;
          transform: translateY(-0.5px);
        }
      }
      @keyframes industryLegendPlaceholderDot {
        0% {
          box-shadow: 0 0 0 0 rgba(96, 165, 250, 0.34);
        }
        70% {
          box-shadow: 0 0 0 6px rgba(96, 165, 250, 0);
        }
        100% {
          box-shadow: 0 0 0 0 rgba(96, 165, 250, 0);
        }
      }

      /* 昨日涨停追踪：预期晋级看板 */
      .yday-streak-board {
        display: grid;
        gap: 4px;
        align-items: stretch;
        width: max-content;
        min-width: 100%;
        height: 100%;
        min-height: 0;
        grid-auto-flow: column;
      }
      .yday-streak-lane {
        border: 1px solid #dbe4f0;
        border-radius: 10px;
        background: linear-gradient(180deg, #ffffff 0%, #f8fbff 100%);
        box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.7);
        overflow: hidden;
        display: flex;
        flex-direction: column;
        min-height: 0;
      }
      .yday-streak-lane-head {
        padding: 5px 6px;
        background: linear-gradient(180deg, #eff6ff 0%, #f8fafc 100%);
        border-bottom: 1px solid #dbeafe;
        display: flex;
        align-items: center;
        justify-content: center;
        gap: 6px;
        text-align: center;
      }
      .yday-streak-lane-title-wrap {
        display: flex;
        flex-direction: column;
        gap: 0;
        min-width: 0;
        align-items: center;
      }
      .yday-streak-lane-title {
        font-size: 10px;
        font-weight: 900;
        color: #0f172a;
        white-space: normal;
        letter-spacing: -0.1px;
        line-height: 1.12;
      }
      .yday-streak-lane-count {
        display: inline-flex;
        align-items: center;
        gap: 4px;
        font-size: 9px;
        color: #475569;
        font-weight: 800;
        font-variant-numeric: tabular-nums;
      }
      .yday-streak-lane-stats {
        display: none;
      }
      .yday-streak-stat {
        display: none;
      }
      .yday-streak-stat--hold {
        background: #fee2e2;
        border-color: #fecaca;
        color: #991b1b;
      }
      .yday-streak-stat--broke {
        background: #fef3c7;
        border-color: #fde68a;
        color: #92400e;
      }
      .yday-streak-stat--pending {
        background: #e2e8f0;
        border-color: #cbd5e1;
        color: #475569;
      }
      .yday-streak-lane-body {
        padding: 4px;
        column-gap: 2px;
        row-gap: 4px;
        display: grid;
        align-content: start;
        justify-content: center;
        justify-items: center;
        min-height: 0;
        overflow: hidden;
      }
      .yday-stock-tile {
        display: flex;
        flex-direction: column;
        gap: 2px;
        padding: 3px 2px;
        border-radius: 9px;
        border: 1px solid #e2e8f0;
        min-width: 0;
        width: fit-content;
        max-width: 100%;
        box-sizing: border-box;
        background: #ffffff;
        align-items: center;
        justify-self: center;
        text-align: center;
      }
      .yday-stock-tile-top,
      .yday-stock-tile-bottom {
        display: block;
        width: 100%;
        min-width: 0;
        max-width: 100%;
        text-align: center;
      }
      .yday-stock-name {
        display: block;
        font-size: 10px;
        font-weight: 900;
        line-height: 1.14;
        white-space: normal;
        overflow: visible;
        word-break: break-all;
        text-align: center;
      }
      .yday-stock-industry {
        display: block;
        font-size: 9px;
        font-weight: 700;
        line-height: 1.12;
        color: inherit;
        opacity: 0.92;
        white-space: normal;
        overflow: visible;
        word-break: break-all;
        text-align: center;
      }
      .yday-stock-metrics {
        display: flex;
        flex-direction: column;
        gap: 2px;
        width: 100%;
        margin-top: 2px;
      }
      .yday-stock-zdf,
      .yday-stock-flow {
        display: block;
        font-size: 8.5px;
        font-weight: 700;
        line-height: 1.12;
        white-space: nowrap;
        text-align: center;
        font-variant-numeric: tabular-nums;
      }
      .yday-stock-zdf.positive,
      .yday-stock-flow.positive {
        color: #dc2626;
      }
      .yday-stock-zdf.negative,
      .yday-stock-flow.negative {
        color: #16a34a;
      }
      .yday-stock-zdf.zero,
      .yday-stock-flow.zero {
        color: #94a3b8;
      }
      .yday-stock-tile--hold {
        background: linear-gradient(180deg, #fff1f2 0%, #ffe4e6 100%);
        border-color: #fda4af;
        color: #9f1239;
      }
      .yday-stock-tile--reclosed,
      .yday-stock-tile--broke {
        background: linear-gradient(180deg, #fff7ed 0%, #ffedd5 100%);
        border-color: #fdba74;
        color: #9a3412;
      }
      .yday-stock-tile--broken {
        background: linear-gradient(180deg, #fefce8 0%, #fef3c7 100%);
        border-color: #fcd34d;
        color: #92400e;
      }
      .yday-stock-tile--pending {
        background: linear-gradient(180deg, #f8fafc 0%, #eef2f7 100%);
        border-color: #dbe2ea;
        color: #475569;
      }

      @media (max-width: 980px) {
        .yday-streak-board { gap: 4px; }
        .yday-streak-lane-head { padding: 5px 6px; }
        .yday-streak-lane-body {
          padding: 4px;
          column-gap: 2px;
          row-gap: 4px;
        }
        .yday-stock-tile { padding: 4px 3px; }
        .yday-stock-name { font-size: 10px; }
        .yday-stock-industry,
        .yday-stock-zdf,
        .yday-stock-flow,
        .yday-streak-stat,
        .yday-streak-lane-count { font-size: 9px; }
      }
      /* 强制：涨跌停异动卡片内，名称/行业不得省略号（不换行；超出用跑马灯展示全量） */
      #stockQuoteLimitCard .stockQuoteLimitMoveTable thead th,
      #stockQuoteLimitCard .stockQuoteLimitMoveTable tbody td {
        text-overflow: clip !important;
      }
      #stockQuoteLimitCard .stockQuoteLimitMoveTable .stock-name-addable {
        white-space: nowrap !important;
        overflow: hidden !important;
        text-overflow: clip !important;
      }

      /* 单行完整展示：溢出时启用跑马灯（无省略号、无换行） */
      .marquee-box {
        position: relative;
        display: inline-block;
        max-width: 100%;
        overflow: hidden;
        white-space: nowrap;
        text-overflow: clip;
        vertical-align: bottom;
      }
      .marquee-inner {
        display: inline-block;
        padding-right: 10px;
        will-change: transform;
      }
      .marquee-on .marquee-inner {
        animation: marqueeSlide var(--marquee-dur, 10s) linear infinite;
      }
      @keyframes marqueeSlide {
        0% { transform: translateX(0); }
        100% { transform: translateX(calc(-1 * var(--marquee-dx, 0px))); }
      }
      .stock-quote-scan-filter-panel {
        padding: 10px 14px 12px;
        border-bottom: 1px solid #eef2f7;
        background: #f1f5f9;
        font-size: 12px;
        color: #334155;
      }
      .stock-quote-scan-filter-panel .scan-filter-section {
        margin-bottom: 2px;
      }
      .stock-quote-scan-filter-panel .scan-filter-title {
        font-weight: 600;
        margin: 0 0 4px 0;
        color: #0f172a;
        font-size: 12px;
      }
      .stock-quote-scan-filter-panel .scan-filter-hint {
        margin: 0 0 8px 0;
        font-size: 11px;
        line-height: 1.45;
        color: #64748b;
      }
      .stock-quote-scan-filter-panel .scan-filter-line {
        display: flex;
        align-items: flex-start;
        gap: 8px;
        margin: 6px 0;
        cursor: pointer;
        user-select: none;
        line-height: 1.35;
      }
      .stock-quote-scan-filter-panel .scan-filter-line input {
        width: 14px;
        height: 14px;
        margin-top: 1px;
        flex-shrink: 0;
        accent-color: #2563eb;
      }
      .stock-quote-scan-filter-panel .scan-filter-divider {
        height: 1px;
        background: #e2e8f0;
        margin: 10px 0;
      }
      #stockQuoteScanStatus {
        padding: 8px 12px;
        color: #64748b;
        font-size: 12px;
        border-bottom: 1px solid #eef2f7;
        background: #f8fafc;
      }
      #stockQuoteScanResults {
        padding: 10px 12px;
        font-size: 12px;
        line-height: 1.45;
        display: flex;
        flex-direction: column;
        gap: 10px;
        min-height: 0;
        height: 100%;
        box-sizing: border-box;
        overflow: hidden;
        -webkit-font-smoothing: antialiased;
      }
      #stockQuoteScanResults .scan-subsection {
        flex: 1 1 0;
        height: auto;
        min-height: 0;
        display: flex;
        flex-direction: column;
      }
      #stockQuoteScanResults .scan-subsection-body {
        flex: 1;
        min-height: 0;
        overflow-y: auto;
        overflow-x: auto;
      }
      /* 涨跌停异动：禁止横向滚动条，列宽在容器内自适应分配 */
      #stockQuoteScanResults .scan-subsection-body[data-scan-scroll="limit_mix"] {
        overflow-x: hidden;
        width: 100%;
        max-width: 100%;
      }
      #stockQuoteScanResults .scan-section-title {
        display: flex;
        align-items: baseline;
        justify-content: space-between;
        margin-bottom: 6px;
        color: #0f172a;
        font-size: 13px;
        font-weight: 600;
      }
      #stockQuoteScanResults .scan-section-title span.sub {
        font-size: 12px;
        color: #64748b;
        font-weight: 400;
      }
      #stockQuoteScanResults .scan-inline-filters {
        display: inline-flex;
        align-items: center;
        gap: 10px;
        margin-left: 10px;
        font-size: 12px;
        color: #475569;
        font-weight: 500;
        white-space: nowrap;
      }
      #stockQuoteScanResults .scan-inline-filters label {
        display: inline-flex;
        align-items: center;
        gap: 4px;
        cursor: pointer;
        user-select: none;
      }
      #stockQuoteScanResults .scan-inline-filters input {
        width: 13px;
        height: 13px;
        accent-color: #2563eb;
      }
      #stockQuoteScanResults .scan-status-badge {
        display: inline-flex;
        align-items: center;
        min-height: 20px;
        padding: 0 8px;
        border-radius: 999px;
        font-size: 11px;
        font-weight: 700;
        white-space: nowrap;
        border: 1px solid transparent;
      }
      #stockQuoteScanResults .scan-status-badge.is-live {
        color: #166534;
        background: #dcfce7;
        border-color: #bbf7d0;
      }
      #stockQuoteScanResults .scan-status-badge.is-warn {
        color: #9a3412;
        background: #ffedd5;
        border-color: #fed7aa;
      }
      #stockQuoteScanResults .scan-status-badge.is-error {
        color: #b91c1c;
        background: #fee2e2;
        border-color: #fecaca;
      }
      #stockQuoteScanResults .scan-empty,
      #stockQuoteLimitCard .scan-empty {
        padding: 6px 2px;
        color: #9ca3af;
        font-size: 11px;
      }
      #stockQuoteScanResults .scan-empty-card,
      #stockQuoteLimitCard .scan-empty-card {
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
        gap: 6px;
        min-height: 160px;
        border: 1px dashed #dbeafe;
        border-radius: 10px;
        background: linear-gradient(180deg, #f8fbff 0%, #f8fafc 100%);
        color: #64748b;
        text-align: center;
        padding: 16px 12px;
      }
      #stockQuoteScanResults .scan-empty-icon,
      #stockQuoteLimitCard .scan-empty-icon {
        font-size: 24px;
        line-height: 1;
        opacity: 0.65;
      }
      #stockQuoteScanResults .scan-empty-title,
      #stockQuoteLimitCard .scan-empty-title {
        font-size: 13px;
        font-weight: 600;
        color: #334155;
      }
      #stockQuoteScanResults .scan-empty-sub,
      #stockQuoteLimitCard .scan-empty-sub {
        font-size: 11px;
        color: #94a3b8;
      }
      /* 新闻策略：仅交易时段展示，时间轴（不展示级别/来源/标签） */
      #stockQuoteScanResults .scan-news-timeline {
        display: flex;
        flex-direction: column;
        gap: 0;
        padding: 4px 4px 8px;
      }
      #stockQuoteScanResults .scan-news-tl-row {
        display: flex;
        gap: 10px;
        align-items: flex-start;
        padding: 10px 0 10px 4px;
        border-bottom: 1px solid #f1f5f9;
      }
      #stockQuoteScanResults .scan-news-tl-row:last-child {
        border-bottom: none;
      }
      #stockQuoteScanResults .scan-news-tl-time {
        flex: 0 0 auto;
        width: 118px;
        font-size: 12px;
        font-weight: 600;
        color: #475569;
        line-height: 1.4;
        font-variant-numeric: tabular-nums;
      }
      #stockQuoteScanResults .scan-news-tl-main {
        flex: 1;
        min-width: 0;
        position: relative;
        padding-left: 12px;
        border-left: 2px solid #e2e8f0;
      }
      #stockQuoteScanResults .scan-news-tl-title {
        font-size: 13px;
        line-height: 1.45;
        font-weight: 600;
        word-break: break-word;
      }
      #stockQuoteScanResults .scan-news-tl-title--b {
        color: #dc2626;
      }
      #stockQuoteScanResults .scan-news-tl-title--c {
        color: #0f172a;
      }
      #stockQuoteScanResults .scan-news-tl-title--a {
        color: #334155;
      }
      #stockQuoteScanResults .scan-news-timeline-empty {
        padding: 20px 12px;
        text-align: center;
        font-size: 12px;
        color: #94a3b8;
        line-height: 1.5;
      }
      #stockQuoteScanResults .scan-empty-row td {
        padding: 10px 6px !important;
        color: #94a3b8;
        font-size: 12px;
        text-align: center;
      }
      #stockQuoteScanTable {
        width: 100%;
        table-layout: auto;
        font-size: 12px;
        font-variant-numeric: tabular-nums;
      }
      /* 扫描表必须覆盖全局 .data-table 的 min-width: 1800px，避免把右侧卡片撑出屏幕 */
      #stockQuoteScanTable.data-table {
        min-width: 0 !important;
        width: 100% !important;
        table-layout: auto;
      }
      #stockQuoteScanTable thead th,
      #stockQuoteScanTable tbody td {
        padding: 5px 4px;
        text-align: center;
        font-size: 12px;
        line-height: 1.35;
        white-space: nowrap !important;
        min-width: 0 !important;
      }
      /* 排名列：限窄，内边距更小 */
      #stockQuoteScanTable th:first-child,
      #stockQuoteScanTable td:first-child {
        width: 26px;
        max-width: 32px;
        padding-left: 2px;
        padding-right: 2px;
      }
      #stockQuoteScanTable thead th {
        color: #475569;
        font-weight: 600;
        font-size: 11.5px;
        background: #f1f5f9;
      }
      #stockQuoteScanTable tbody td {
        color: #1e293b;
      }
      /* 涨速% 分档（须压过上行默认字色；>2 为紫，与主表一致） */
      #stockQuoteScanTable tbody td.percent.speed-fast-up {
        color: #7c3aed;
        font-weight: 700;
      }
      #stockQuoteScanTable tbody td.percent.speed-up {
        color: #dc2626;
        font-weight: 700;
      }
      #stockQuoteScanTable tbody td.percent.speed-flat {
        color: #9ca3af;
        font-weight: 600;
      }
      #stockQuoteScanTable tbody td.percent.speed-down {
        color: #16a34a;
        font-weight: 700;
      }
      #stockQuoteScanTable tbody td.percent.speed-fast-down {
        color: #166534;
        font-weight: 700;
      }
      #stockQuoteScanTable tbody td.percent.positive {
        color: #dc2626;
        font-weight: 600;
      }
      #stockQuoteScanTable tbody td.percent.negative {
        color: #16a34a;
        font-weight: 600;
      }
      #stockQuoteScanTable tbody td.amount.positive {
        color: #dc2626;
        font-weight: 600;
      }
      #stockQuoteScanTable tbody td.amount.negative {
        color: #16a34a;
        font-weight: 600;
      }
      #stockQuoteScanTable tbody td.amount.zero {
        color: #9ca3af;
        font-weight: 500;
      }
      #stockQuoteScanTable .scan-speed-count {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        min-width: 42px;
        padding: 2px 8px;
        border-radius: 999px;
        font-size: 11px;
        font-weight: 700;
        line-height: 1.2;
        white-space: nowrap;
        color: #7c2d12;
        background: #ffedd5;
      }
      #stockQuoteScanTable .stock-name-addable {
        font-weight: 600;
        color: #1d4ed8;
      }
      #stockQuoteScanTable tbody tr:nth-child(even) {
        background: #f9fafb;
      }
      #stockQuoteScanTable tbody tr:hover {
        background: #e5f0ff;
      }
      #stockQuoteScanTable tbody tr:nth-child(even) td {
        background: #fbfdff;
      }
      #stockQuoteScanTable tbody tr:hover td {
        background: #eff6ff !important;
      }
      /* 涨跌停异动表格：覆盖全局 .data-table min-width；整表在侧栏内单列不换行 + 省略号 */
      .stockQuoteLimitMoveTable {
        min-width: 0 !important;
        width: 100% !important;
        max-width: 100%;
        table-layout: fixed;
        font-size: 11px;
        font-variant-numeric: tabular-nums;
      }
      .stockQuoteLimitMoveTable.data-table {
        min-width: 0 !important;
      }
      .stockQuoteLimitMoveTable thead th,
      .stockQuoteLimitMoveTable tbody td {
        padding: 4px 3px;
        text-align: center;
        font-size: 11px;
        line-height: 1.25;
        white-space: nowrap !important;
        overflow: hidden;
        text-overflow: ellipsis;
        word-break: normal;
        min-width: 0 !important;
        vertical-align: middle;
      }
      /* 列宽比例（合计 100%，随容器伸缩） */
      #stockQuoteLimitMoveMixTable thead th:nth-child(1),
      #stockQuoteLimitMoveMixTable tbody td:nth-child(1) {
        width: 6%;
      }
      #stockQuoteLimitMoveMixTable thead th:nth-child(2),
      #stockQuoteLimitMoveMixTable tbody td:nth-child(2) {
        width: 11%;
      }
      #stockQuoteLimitMoveMixTable thead th:nth-child(3),
      #stockQuoteLimitMoveMixTable tbody td:nth-child(3) {
        width: 18%;
      }
      #stockQuoteLimitMoveMixTable thead th:nth-child(4),
      #stockQuoteLimitMoveMixTable tbody td:nth-child(4) {
        width: 13%;
      }
      #stockQuoteLimitMoveMixTable thead th:nth-child(5),
      #stockQuoteLimitMoveMixTable tbody td:nth-child(5) {
        width: 13%;
      }
      #stockQuoteLimitMoveMixTable thead th:nth-child(6),
      #stockQuoteLimitMoveMixTable tbody td:nth-child(6) {
        width: 14%;
      }
      #stockQuoteLimitMoveMixTable thead th:nth-child(7),
      #stockQuoteLimitMoveMixTable tbody td:nth-child(7) {
        width: 25%;
      }
      #stockQuoteLimitMoveMixTable tbody tr.scan-empty-row td {
        white-space: normal !important;
        overflow: visible;
        text-overflow: clip;
        padding: 10px 8px 12px !important;
        vertical-align: middle;
        border-bottom: none !important;
        background: transparent !important;
      }
      #stockQuoteLimitMoveMixTable tbody tr.scan-empty-row:hover td {
        background: transparent !important;
      }
      #stockQuoteLimitMoveMixTable tbody tr.scan-empty-row .limit-mix-empty-card {
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
        gap: 8px;
        min-height: 132px;
        margin: 4px 2px 2px;
        border: 1px dashed #dbeafe;
        border-radius: 12px;
        background: linear-gradient(180deg, #f8fbff 0%, #f8fafc 100%);
        color: #64748b;
        text-align: center;
        padding: 22px 14px 20px;
        box-sizing: border-box;
      }
      #stockQuoteLimitMoveMixTable tbody tr.scan-empty-row .limit-mix-empty-icon {
        font-size: 36px;
        line-height: 1;
        opacity: 0.72;
        filter: grayscale(0.08);
      }
      #stockQuoteLimitMoveMixTable tbody tr.scan-empty-row .limit-mix-empty-title {
        font-size: 14px;
        font-weight: 700;
        color: #334155;
        letter-spacing: 0.01em;
      }
      #stockQuoteLimitMoveMixTable tbody tr.scan-empty-row .limit-mix-empty--market .limit-mix-empty-title {
        font-size: 16px;
        font-weight: 600;
        color: #9ca3af;
      }
      #stockQuoteLimitMoveMixTable tbody tr.scan-empty-row .limit-mix-empty-sub {
        font-size: 12px;
        font-weight: 500;
        color: #94a3b8;
        line-height: 1.5;
        max-width: 320px;
      }
      .stockQuoteLimitMoveTable thead th {
        color: #475569;
        font-weight: 600;
        font-size: 10.5px;
        background: #f1f5f9;
      }
      .stockQuoteLimitMoveTable tbody td {
        color: #1e293b;
      }
      .stockQuoteLimitMoveTable .stock-name-addable {
        display: block;
        max-width: 100%;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
        font-weight: 600;
        color: #1d4ed8;
      }
      .stockQuoteLimitMoveTable tbody tr:nth-child(even) {
        background: #f9fafb;
      }
      .stockQuoteLimitMoveTable tbody tr:hover {
        background: #e5f0ff;
      }
      .stockQuoteLimitMoveTable tbody tr:nth-child(even) td {
        background: #fbfdff;
      }
      .stockQuoteLimitMoveTable tbody tr:hover td {
        background: #eff6ff !important;
      }
      /* 已打开（原触及）行：只用文字样式区分（不使用背景高亮） */
      .stockQuoteLimitMoveTable tbody tr.row-broke td {
        color: #64748b;
        font-weight: 500;
      }
      /* 近 3 分钟行：必须写 td，否则会被全局 .data-table td 白底盖住 */
      .stockQuoteLimitMoveTable tbody tr.row-limit-recent td {
        background: #d6ecfc !important;
      }
      .stockQuoteLimitMoveTable tbody tr.row-limit-recent:nth-child(even) td {
        background: #c8e4fa !important;
      }
      .stockQuoteLimitMoveTable tbody tr.row-limit-recent:hover td {
        background: #b0daf8 !important;
      }
      .stockQuoteLimitMoveTable tbody tr.row-broke.row-limit-recent td {
        /* 允许叠加：仍然只有 row-limit-recent 负责背景；row-broke 只改文字样式 */
        color: #475569;
      }
      .stockQuoteLimitMoveTable .limit-type {
        font-weight: 600;
        color: #334155;
      }
      .stockQuoteLimitMoveTable td.limit-code-up {
        color: #dc2626;
        font-weight: 700;
      }
      .stockQuoteLimitMoveTable td.limit-code-down {
        color: #16a34a;
        font-weight: 700;
      }
      /* 打开涨/跌停（row-broke）时，代码列仍保持方向色，不被灰字规则覆盖 */
      .stockQuoteLimitMoveTable tbody tr.row-broke td.limit-code-up {
        color: #dc2626;
        font-weight: 700;
      }
      .stockQuoteLimitMoveTable tbody tr.row-broke td.limit-code-down {
        color: #16a34a;
        font-weight: 700;
      }
      /* 股票池浮动面板：紧贴按钮上方，无全屏遮罩（与板块暂存看板一致） */
      #stockQuotePoolFloat.stock-quote-pool-float {
        right: 24px;
        bottom: 74px;
        z-index: 8000;
      }
      /* fixed + JS 设置 left/top，与 stock-modal 一样可拖拽，不再相对悬浮条 absolute */
      #stockQuotePoolPanel.stock-quote-pool-panel.stored-modals-panel {
        position: fixed;
        bottom: auto !important;
        right: auto !important;
      }
      .stock-quote-pool-panel.stored-modals-panel {
        max-width: none;
        max-height: none;
        min-width: 0;
        width: max-content;
        /* 覆盖通用 stored-modals-panel 的 storedPanelIn，改用与 stock-modal 恢复一致的飞出动画 */
        animation: none;
        transform-origin: bottom right;
        border: 1px solid #dbe4ee;
        border-radius: 16px;
        background:
          linear-gradient(180deg, rgba(248, 250, 252, 0.96) 0%, rgba(255, 255, 255, 0.98) 36%, #ffffff 100%);
        box-shadow: 0 20px 46px rgba(15, 23, 42, 0.16), 0 6px 18px rgba(15, 23, 42, 0.08);
      }
      .stock-quote-pool-panel.modal-hidden {
        opacity: 0 !important;
        pointer-events: none;
      }
      .stock-quote-pool-panel.fly-from-btn {
        animation: modalFlyIn 0.38s cubic-bezier(0.34, 1.45, 0.64, 1) forwards !important;
      }
      .stock-quote-pool-panel.minimizing {
        animation: modalMinimize 0.3s cubic-bezier(0.4, 0, 1, 1) forwards !important;
      }
      .stock-quote-pool-panel {
        overflow: visible;
      }
      .stock-quote-pool-panel-head {
        display: flex;
        align-items: center;
        gap: 8px;
        padding: 9px 11px 6px;
        border-bottom: 1px solid rgba(226, 232, 240, 0.9);
        background: linear-gradient(180deg, rgba(248, 250, 252, 0.98) 0%, rgba(241, 245, 249, 0.92) 100%);
        flex-shrink: 0;
        cursor: move;
        user-select: none;
      }
      .stock-quote-pool-panel-title {
        flex: 1;
        margin: 0;
        padding: 0;
        border: none;
        background: transparent;
        font-size: 12.5px;
        font-weight: 800;
        letter-spacing: 0.01em;
        color: #1e293b;
      }
      .stock-quote-pool-panel-head .stock-modal-btn-minimize {
        flex-shrink: 0;
        cursor: pointer;
      }
      .stock-quote-pool-panel-hint {
        padding: 0 11px 7px;
        font-size: 10px;
        color: #64748b;
        line-height: 1.35;
        flex-shrink: 0;
      }
      #stockQuotePoolModalBody.stock-quote-pool-body {
        display: flex;
        flex-direction: column;
        min-height: 0;
        padding: 0 11px 11px;
        flex: 1;
        overflow: hidden;
      }
      .stock-quote-pool-table-wrap.data-table-container {
        flex: 1;
        min-height: 0;
        overflow: auto;
        padding: 0;
        border: 1px solid #e2e8f0;
        border-radius: 14px;
        background: linear-gradient(180deg, #ffffff 0%, #fbfdff 100%);
        box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.9);
      }
      .stock-quote-pool-table-wrap.data-table-container::-webkit-scrollbar {
        height: 6px;
        width: 6px;
      }
      .stock-quote-pool-table-wrap.data-table-container::-webkit-scrollbar-track {
        background: transparent;
      }
      .stock-quote-pool-table-wrap.data-table-container::-webkit-scrollbar-thumb {
        background: #cbd5e1;
        border-radius: 999px;
      }
      .stock-quote-pool-resize-handle {
        position: absolute;
        left: 8px;
        right: 8px;
        bottom: -2px;
        height: 10px;
        cursor: ns-resize;
        z-index: 2;
      }
      .stock-quote-pool-resize-handle::before {
        content: "";
        position: absolute;
        left: 50%;
        transform: translateX(-50%);
        bottom: 2px;
        width: 56px;
        height: 3px;
        border-radius: 999px;
        background: #cbd5e1;
        opacity: 0.9;
      }
      #stockQuotePoolTable {
        width: max-content;
        min-width: 0;
        table-layout: auto;
        font-size: clamp(10px, 1.2vw, 11px);
        border-collapse: separate;
        border-spacing: 0;
        background: transparent;
      }
      #stockQuotePoolTable thead {
        position: sticky;
        top: 0;
        z-index: 3;
      }
      #stockQuotePoolTable thead th {
        padding: 4px 3px !important;
        white-space: nowrap;
        text-align: center;
        background: linear-gradient(180deg, #f8fafc 0%, #f1f5f9 100%);
        color: #475569;
        font-size: 10px;
        font-weight: 800;
        border-bottom: 1px solid #dbe3ee;
        border-right: 1px solid #edf2f7;
        letter-spacing: 0;
      }
      #stockQuotePoolTable tbody td {
        padding: 4px 3px !important;
        white-space: nowrap;
        text-align: center;
        border-bottom: 1px solid #eef2f7;
        border-right: 1px solid #f6f8fb;
        background: rgba(255, 255, 255, 0.96);
        color: #334155;
      }
      #stockQuotePoolTable tbody tr.stock-quote-pool-row td {
        transition: background-color 0.15s ease, box-shadow 0.15s ease;
      }
      #stockQuotePoolTable thead th:last-child,
      #stockQuotePoolTable tbody td:last-child {
        border-right: none;
      }
      #stockQuotePoolTable tbody tr.stock-quote-pool-row:hover td {
        background: #f8fbff !important;
      }
      #stockQuotePoolTable tbody tr.stock-quote-pool-row:last-child td {
        border-bottom: none;
      }
      #stockQuotePoolTable td.group {
        min-width: 36px;
      }
      #stockQuotePoolTable .sq-pool-group-select {
        width: 34px;
        padding: 1px 6px 1px 2px;
        border-radius: 6px;
        border: 1px solid #d1d9e6;
        background: #fff;
        color: #334155;
        font-size: 9px;
        font-weight: 700;
        outline: none;
        cursor: pointer;
        appearance: none;
        -webkit-appearance: none;
      }
      #stockQuotePoolTable .sq-pool-group-select:focus {
        border-color: #60a5fa;
        box-shadow: 0 0 0 2px rgba(96, 165, 250, 0.18);
      }
      #stockQuotePoolTable tbody tr.stock-quote-pool-row.track-group-g1 td { background: #fef2f2 !important; }
      #stockQuotePoolTable tbody tr.stock-quote-pool-row.track-group-g2 td { background: #fff7ed !important; }
      #stockQuotePoolTable tbody tr.stock-quote-pool-row.track-group-g3 td { background: #f0fdf4 !important; }
      #stockQuotePoolTable tbody tr.stock-quote-pool-row.track-group-g4 td { background: #eff6ff !important; }
      #stockQuotePoolTable tbody tr.stock-quote-pool-row.track-group-g5 td { background: #f8fafc !important; }
      #stockQuotePoolEmpty.stock-quote-pool-empty {
        margin: 0 0 8px;
        padding: 12px 10px;
        border: 1px dashed #d7e0ea;
        border-radius: 14px;
        background: linear-gradient(180deg, #fbfdff 0%, #f8fafc 100%);
        color: #94a3b8;
        font-size: 10.5px;
        line-height: 1.45;
        text-align: center;
      }
      #stockQuotePoolTable td.name {
        text-align: center;
        white-space: nowrap;
        min-width: 56px;
        max-width: none;
        font-weight: 700;
        color: #0f172a;
        overflow: visible;
        line-height: 1.15;
      }
      #stockQuotePoolTable td.code {
        font-variant-numeric: tabular-nums;
        color: #64748b;
        font-size: 10px;
      }
      #stockQuotePoolTable th:nth-child(1),
      #stockQuotePoolTable td:nth-child(1) {
        min-width: 36px;
      }
      #stockQuotePoolTable th:nth-child(2),
      #stockQuotePoolTable td:nth-child(2) {
        min-width: 54px;
      }
      #stockQuotePoolTable th:nth-child(4),
      #stockQuotePoolTable td:nth-child(4),
      #stockQuotePoolTable th:nth-child(5),
      #stockQuotePoolTable td:nth-child(5),
      #stockQuotePoolTable th:nth-child(6),
      #stockQuotePoolTable td:nth-child(6),
      #stockQuotePoolTable th:nth-child(8),
      #stockQuotePoolTable td:nth-child(8) {
        min-width: 52px;
      }
      #stockQuotePoolTable th:nth-child(7),
      #stockQuotePoolTable td:nth-child(7) {
        min-width: 74px;
      }
      #stockQuotePoolTable th:nth-child(3),
      #stockQuotePoolTable td:nth-child(3) {
        min-width: 56px;
        text-align: center;
      }
      #stockQuotePoolTable th:nth-child(n+4),
      #stockQuotePoolTable td:nth-child(n+4) {
        text-align: center;
      }
      #stockQuotePoolTable td.percent.positive,
      #stockQuotePoolTable td.amount.positive {
        color: #dc2626;
        font-weight: 700;
      }
      #stockQuotePoolTable td.percent.negative,
      #stockQuotePoolTable td.amount.negative {
        color: #16a34a;
        font-weight: 700;
      }
      #stockQuotePoolTable td.amount.zero,
      #stockQuotePoolTable td.percent.speed-flat {
        color: #94a3b8;
        font-weight: 600;
      }
      #stockQuotePoolTable td.percent.speed-fast-up {
        color: #7c3aed;
        font-weight: 800;
      }
      #stockQuotePoolTable td.percent.speed-up {
        color: #dc2626;
        font-weight: 700;
      }
      #stockQuotePoolTable td.percent.speed-down,
      #stockQuotePoolTable td.percent.speed-fast-down {
        color: #16a34a;
        font-weight: 700;
      }
      #stockQuotePoolTable .name-main {
        display: inline-flex;
        flex-direction: row;
        align-items: center;
        justify-content: center;
        gap: 2px;
        white-space: nowrap;
        max-width: none;
      }
      #stockQuotePoolTable .name-text {
        display: inline-block;
        max-width: none;
        overflow: visible;
        white-space: nowrap;
        word-break: normal;
        line-height: 1.15;
        vertical-align: bottom;
      }
      #stockQuotePoolTable .name-tag {
        display: inline-flex;
        align-items: center;
        padding: 0 2px;
        border-radius: 999px;
        font-size: 8.5px;
        font-weight: 700;
        color: #1d4ed8;
        background: #dbeafe;
        border: 1px solid #bfdbfe;
        white-space: nowrap;
      }
      #stockQuotePoolTable .sq-pool-zljlr-cell {
        text-align: center;
        vertical-align: middle;
        line-height: 1.25;
        white-space: nowrap;
      }
      #stockQuotePoolTable .sq-pool-zljlr-row {
        display: inline-flex;
        flex-direction: row;
        flex-wrap: nowrap;
        align-items: center;
        justify-content: center;
        gap: 2px;
        white-space: nowrap;
        line-height: 1.15;
      }
      #stockQuotePoolTable .sq-pool-zljlr-amt {
        font-weight: 700;
        font-variant-numeric: tabular-nums;
        white-space: nowrap;
      }
      #stockQuotePoolTable .sq-pool-zljlr-rank {
        font-size: 9px;
        color: #64748b;
        font-weight: 600;
        white-space: nowrap;
        font-variant-numeric: tabular-nums;
      }
      #stockQuotePoolTable thead th.quote-sort-th {
        cursor: pointer;
        user-select: none;
        color: #475569;
      }
      #stockQuotePoolTable thead th.quote-sort-th:hover {
        color: #2563eb;
      }
      #stockQuotePoolTable thead th.quote-sort-th.active-desc,
      #stockQuotePoolTable thead th.quote-sort-th.active-asc {
        color: #1d4ed8;
        font-weight: 800;
      }

      /* 弹窗样式 */
      .column-toggle-overlay {
        position: fixed;
        top: 0;
        left: 0;
        right: 0;
        bottom: 0;
        background: rgba(15, 23, 42, 0.4);
        backdrop-filter: blur(4px);
        z-index: 999;
        animation: fadeIn 0.2s ease;
      }

      .column-toggle-panel {
        position: fixed;
        left: 50%; top: 50%;
        transform: translate(-50%, -50%);
        width: min(860px, calc(100vw - 32px));
        max-height: calc(100vh - 80px);
        display: flex; flex-direction: column;
        border-radius: 16px;
        border: 1px solid #e2e8f0;
        background: #ffffff;
        box-shadow: 0 8px 32px rgba(0,0,0,0.12);
        z-index: 9999; overflow: hidden;
        font-size: 13px; color: #1f2937;
        animation: panelIn 0.22s cubic-bezier(0.34,1.56,0.64,1);
      }
      @keyframes panelIn {
        from { opacity: 0; transform: translate(-50%,-48%) scale(0.96); }
        to   { opacity: 1; transform: translate(-50%,-50%) scale(1); }
      }

      /* ── 弹窗头部 ── */
      .column-toggle-header {
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 12px;
        padding: 18px 22px 16px;
        border-bottom: 1px solid #e5e7eb;
        background: #ffffff;
        flex-shrink: 0;
      }

      .column-toggle-title h3 {
        margin: 0 0 3px;
        font-size: 16px;
        font-weight: 700;
        color: #111827;
      }

      .column-toggle-title p {
        margin: 0;
        font-size: 12.5px;
        color: #9ca3af;
        line-height: 1.4;
      }

      .column-toggle-close {
        border: none;
        background: #f3f4f6;
        cursor: pointer;
        font-size: 18px;
        line-height: 1;
        color: #6b7280;
        padding: 0;
        width: 30px;
        height: 30px;
        border-radius: 7px;
        display: flex;
        align-items: center;
        justify-content: center;
        transition: background 0.15s, color 0.15s;
        flex-shrink: 0;
      }
      .column-toggle-close:hover {
        color: #111827;
        background: #e5e7eb;
      }

      /* ── 弹窗主体 ── */
      .column-toggle-body {
        padding: 16px 22px;
        display: flex;
        flex-direction: column;
        gap: 14px;
        overflow: auto;
        background: #f9fafb;
        flex: 1;
      }

      /* ── 设置卡片 ── */
      .column-toggle-card {
        border: 1px solid #e5e7eb;
        border-radius: 10px;
        background: #ffffff;
        overflow: hidden;
      }

      .column-toggle-card-header {
        padding: 11px 16px;
        border-bottom: 1px solid #f1f5f9;
        background: #f8fafc;
        display: flex;
        align-items: center;
        gap: 8px;
      }

      .column-toggle-card-title .t {
        font-size: 13.5px;
        font-weight: 700;
        color: #1e293b;
      }

      .column-toggle-card-title .d {
        font-size: 11.5px;
        color: #94a3b8;
        margin-top: 1px;
      }

      .column-toggle-card-body {
        padding: 14px 16px;
        background: #ffffff;
        color: #374151;
        display: flex;
        flex-direction: column;
        gap: 10px;
      }

      /* ── 开关标签 ── */
      .watchlist-option-label {
        display: flex;
        align-items: center;
        gap: 8px;
        cursor: pointer;
        font-size: 13.5px;
        color: #374151;
        font-weight: 500;
        transition: color 0.15s;
        user-select: none;
      }
      .watchlist-option-label:hover { color: #2563eb; }
      .watchlist-option-label input[type="checkbox"] {
        cursor: pointer;
        width: 15px;
        height: 15px;
        accent-color: #2563eb;
        flex-shrink: 0;
      }

      /* ── 字段 grid ── */
      .fields-grid {
        display: flex;
        flex-wrap: wrap;
        gap: 8px 16px;
      }
      .fields-grid label {
        display: flex;
        align-items: center;
        gap: 6px;
        font-size: 13px;
        color: #374151;
        cursor: pointer;
        font-weight: 500;
        user-select: none;
      }
      .fields-grid label input[type="checkbox"] {
        accent-color: #2563eb;
        width: 14px;
        height: 14px;
        cursor: pointer;
      }

      /* ── 模块列表 ── */
      .module-toggle-list {
        display: flex;
        flex-direction: column;
        gap: 4px;
      }

      /* ── 实时个股行情：列布局设置（多字段更友好） ── */
      .sq-col-toolbar {
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 10px;
        flex-wrap: wrap;
      }
      .sq-col-search {
        display: flex;
        align-items: center;
        gap: 8px;
        flex: 1;
        min-width: 220px;
      }
      .sq-col-search .hint {
        font-size: 12px;
        color: #94a3b8;
        white-space: nowrap;
      }
      .sq-col-actions {
        display: flex;
        align-items: center;
        gap: 8px;
      }
      .sq-col-actions .btn-secondary {
        padding: 6px 10px;
        font-size: 12px;
      }
      .sq-col-sections {
        display: flex;
        flex-direction: column;
        gap: 10px;
      }
      .sq-col-section {
        border: 1px solid #eef2f7;
        border-radius: 10px;
        padding: 10px;
        background: #fbfdff;
      }
      .sq-col-section-title {
        display: flex;
        align-items: baseline;
        justify-content: space-between;
        gap: 10px;
        margin-bottom: 8px;
      }
      .sq-col-section-title .t {
        font-weight: 800;
        font-size: 13px;
        color: #0f172a;
      }
      .sq-col-section-title .d {
        font-size: 12px;
        color: #94a3b8;
      }
      .sq-col-grid {
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: 6px 10px;
      }
      @media (max-width: 720px) {
        .sq-col-grid { grid-template-columns: 1fr; }
      }
      .sq-col-item {
        display: flex;
        align-items: center;
        gap: 8px;
        padding: 6px 8px;
        border: 1px solid #eef2f7;
        border-radius: 10px;
        background: #ffffff;
        cursor: grab;
      }
      .sq-col-item:active {
        cursor: grabbing;
      }
      .sq-col-item.drag-over {
        border-color: #2563eb;
        box-shadow: 0 0 0 1px rgba(37,99,235,0.25);
      }
      .sq-col-item label {
        display: flex;
        align-items: center;
        gap: 8px;
        cursor: pointer;
        user-select: none;
        flex: 1;
        min-width: 0;
      }
      .sq-col-item .label {
        font-size: 12.5px;
        color: #1f2937;
        font-weight: 600;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
      }
      .sq-col-item input[type="checkbox"] {
        width: 14px;
        height: 14px;
        accent-color: #2563eb;
      }
      .sq-col-order {
        display: flex;
        align-items: center;
        gap: 4px;
        flex-shrink: 0;
      }
      .sq-col-order .module-order-btn {
        width: 24px;
        height: 22px;
        border-radius: 7px;
      }

      /* 响应式 */
      @media (max-width: 1024px) {
        .tab-btn {
          min-width: 140px;
          padding: 7px 14px 9px;
        }
      }

      @media (max-width: 768px) {
        .container {
          padding: 0;
        }

        .tabs-nav {
          min-height: 48px;
          padding-left: 8px;
          padding-right: 8px;
        }

        .tab-btn {
          min-width: 112px;
          padding: 7px 10px 9px;
        }

        .tab-btn .tab-main {
          font-size: 12.5px;
        }

        .tab-btn .tab-sub {
          display: none;
        }

        .data-table {
          font-size: 12px;
        }

        .data-table th,
        .data-table td {
          padding: 10px 8px;
        }

        .column-toggle-panel {
          width: 95%;
          max-height: 90vh;
        }
      }

    
      /* ── 指标设置弹窗内部统一风格 ─────────────────── */
      .panel-desc {
        margin: 0;
        color: #6b7280;
        font-size: 12.5px;
        line-height: 1.65;
        padding: 8px 12px;
        background: #f8fafc;
        border-radius: 6px;
        border-left: 3px solid #e2e8f0;
      }
      .panel-input-row {
        display: flex;
        align-items: center;
        gap: 10px;
        flex-wrap: wrap;
        padding: 8px 0 0;
      }
      .panel-input-label {
        font-size: 12.5px;
        color: #374151;
        font-weight: 500;
        white-space: nowrap;
      }
      .panel-text-input {
        width: 200px;
        padding: 7px 10px;
        border: 1px solid #d1d5db;
        border-radius: 8px;
        font-size: 13px;
        color: #1f2937;
        background: #f9fafb;
        outline: none;
        transition: border-color 0.15s, box-shadow 0.15s;
      }
      .panel-text-input:focus {
        border-color: #2563eb;
        box-shadow: 0 0 0 3px rgba(37,99,235,0.12);
        background: #ffffff;
      }
      .panel-input-hint {
        font-size: 12px;
        color: #9ca3af;
      }
      /* watchlist-option-label 浅色 */
      .watchlist-option-label {
        display: flex;
        align-items: center;
        gap: 8px;
        cursor: pointer;
        font-size: 13.5px;
        color: #374151;
        padding: 6px 0;
        transition: color 0.15s;
        font-weight: 500;
      }
      .watchlist-option-label:hover { color: #2563eb; }
      .watchlist-option-label input[type="checkbox"] {
        width: 16px; height: 16px;
        accent-color: #2563eb;
        cursor: pointer;
      }
      /* compare-section 通用 */
      .compare-section-header {
        display: flex;
        justify-content: space-between;
        align-items: flex-start;
        gap: 16px;
        flex-wrap: wrap;
        padding: 20px 24px 16px;
        border-bottom: 1px solid #e5e7eb;
        background: #fff;
      }
      .compare-section-header h2 {
        margin: 0 0 4px;
        font-size: 18px;
        font-weight: 700;
        color: #111827;
      }
      .compare-section-desc {
        margin: 0;
        font-size: 13px;
        color: #6b7280;
        line-height: 1.6;
      }
      .compare-section-config-btns {
        display: flex;
        gap: 8px;
        flex-wrap: wrap;
        align-items: center;
      }
      /* auth-config */
      .auth-config-container {
        padding: 32px;
        flex: 1;
        background: #f5f7fa;
        overflow: auto;
      }
      /* compare-block */
      .compare-block {
        background: #fff;
        border: 1px solid #e5e7eb;
        border-radius: 12px;
        margin: 16px 20px;
        color: #1f2937;
        overflow: hidden;
      }

      /* ========== 板块暂存看板（全局固定弹窗）========== */
      .stored-modals-float {
        position: fixed;
        bottom: 24px;
        right: 24px;
        z-index: 8000;
        display: flex;
        flex-direction: column;
        align-items: flex-end;
        gap: 0;
      }

      .stored-modals-toggle {
        padding: 8px 16px;
        background: #1e293b;
        color: #f1f5f9;
        border: none;
        border-radius: 10px;
        font-size: 13px;
        font-weight: 600;
        cursor: pointer;
        box-shadow: 0 2px 12px rgba(0,0,0,0.18);
        transition: background 0.15s, transform 0.12s, box-shadow 0.15s;
        white-space: nowrap;
        letter-spacing: 0.01em;
      }
      .stored-modals-toggle:hover:not(:disabled) {
        background: #0f172a;
        transform: translateY(-1px);
        box-shadow: 0 4px 18px rgba(0,0,0,0.22);
      }
      .stored-modals-toggle:disabled {
        background: #94a3b8;
        cursor: not-allowed;
        box-shadow: none;
        transform: none;
      }
      /* 右下角浮动按钮：默认圆形仅图标，悬浮时展开标题，减少遮挡 */
      .compact-fab-toggle {
        width: 44px;
        min-width: 44px;
        height: 44px;
        padding: 0 12px;
        border-radius: 999px;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        gap: 0;
        overflow: hidden;
        transition: width 0.22s ease, border-radius 0.22s ease, gap 0.22s ease, background 0.15s, transform 0.12s, box-shadow 0.15s;
      }
      .compact-fab-toggle .fab-icon {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        font-size: 16px;
        line-height: 1;
        flex: 0 0 auto;
      }
      .compact-fab-toggle .fab-label {
        display: inline-block;
        max-width: 0;
        opacity: 0;
        overflow: hidden;
        white-space: nowrap;
        transform: translateX(-4px);
        transition: max-width 0.22s ease, opacity 0.18s ease, transform 0.22s ease, margin-left 0.22s ease;
        margin-left: 0;
      }
      .stored-modals-float:hover .compact-fab-toggle:not(:disabled),
      .stored-modals-float:focus-within .compact-fab-toggle:not(:disabled) {
        width: 196px;
        justify-content: flex-start;
        gap: 8px;
      }
      .stored-modals-float:hover .compact-fab-toggle:not(:disabled) .fab-label,
      .stored-modals-float:focus-within .compact-fab-toggle:not(:disabled) .fab-label {
        max-width: 150px;
        opacity: 1;
        transform: translateX(0);
        margin-left: 2px;
      }

      .stored-modals-lock-overlay {
        position: absolute;
        inset: 0;
        border-radius: 10px;
        background: rgba(0,0,0,0.08);
        pointer-events: none;
      }

      /* 面板：紧贴按钮上方，用 absolute 定位避免位置跳动 */
      .stored-modals-panel {
        position: absolute;
        bottom: calc(100% + 8px);
        right: 0;
        width: max-content;
        min-width: 260px;
        max-width: min(520px, 96vw);
        max-height: 480px;
        background: #ffffff;
        border: 1px solid #e5e7eb;
        border-radius: 12px;
        box-shadow: 0 4px 32px rgba(0,0,0,0.14), 0 1px 4px rgba(0,0,0,0.07);
        display: flex;
        flex-direction: column;
        overflow: hidden;
        z-index: 8100;
        transform-origin: bottom right;
        animation: storedPanelIn 0.2s cubic-bezier(0.34,1.4,0.64,1);
      }
      @keyframes storedPanelIn {
        from { opacity: 0; transform: scale(0.88) translateY(12px); }
        to   { opacity: 1; transform: scale(1) translateY(0); }
      }

      .stored-modals-panel-title {
        padding: 11px 14px 9px;
        font-size: 12.5px;
        font-weight: 700;
        color: #1e293b;
        border-bottom: 1px solid #f1f5f9;
        background: #f8fafc;
        border-radius: 12px 12px 0 0;
        flex-shrink: 0;
        letter-spacing: 0.01em;
      }

      .stored-modals-list {
        flex: 1;
        overflow-y: auto;
        padding: 4px 0;
      }
      .stored-modals-list::-webkit-scrollbar { width: 4px; }
      .stored-modals-list::-webkit-scrollbar-thumb { background: #e2e8f0; border-radius: 2px; }

      .stored-modals-empty {
        padding: 18px 14px;
        font-size: 12.5px;
        color: #94a3b8;
        text-align: center;
      }

      .stored-modals-item {
        padding: 8px 12px;
        border-bottom: 1px solid #f8fafc;
        display: flex;
        align-items: center;
        gap: 8px;
        transition: background 0.1s;
        cursor: default;
      }
      .stored-modals-item:last-child { border-bottom: none; }
      .stored-modals-item:hover { background: #f8fafc; }

      .stored-modals-item-main { flex: 1; min-width: 0; }

      .stored-modals-item-header {
        display: flex;
        align-items: center;
        gap: 5px;
        margin-bottom: 2px;
      }

      .stored-modals-item-status {
        font-size: 10px;
        font-weight: 600;
        padding: 1px 5px;
        border-radius: 999px;
        background: #f1f5f9;
        color: #94a3b8;
        flex-shrink: 0;
      }
      .stored-modals-item-status.active {
        background: #dbeafe;
        color: #1d4ed8;
      }
      .stored-modals-item-status.minimized {
        background: #fef9c3;
        color: #92400e;
      }

      .stored-modals-item-title {
        font-size: 12.5px;
        font-weight: 600;
        color: #1e293b;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
        flex: 1;
      }

      .stored-modals-item-actions {
        display: flex;
        gap: 4px;
        flex-shrink: 0;
      }

      .stored-modals-item-line {
        font-size: 11px;
        color: #94a3b8;
        white-space: nowrap;
      }

      .stored-modals-btn-restore,
      .stored-modals-btn-remove {
        padding: 3px 8px;
        border-radius: 5px;
        font-size: 11px;
        font-weight: 600;
        cursor: pointer;
        border: 1px solid transparent;
        transition: background 0.1s;
        white-space: nowrap;
      }
      .stored-modals-btn-restore {
        background: #eff6ff;
        color: #2563eb;
        border-color: #bfdbfe;
      }
      .stored-modals-btn-restore:hover { background: #dbeafe; }
      .stored-modals-btn-remove {
        background: #fef2f2;
        color: #dc2626;
        border-color: #fecaca;
      }
      .stored-modals-btn-remove:hover { background: #fee2e2; }

      .stored-modals-panel-actions {
        padding: 8px 12px;
        border-top: 1px solid #f1f5f9;
        background: #f8fafc;
        display: flex;
        flex-direction: column;
        gap: 4px;
        flex-shrink: 0;
      }

      .stored-modals-btn-restore-all,
      .stored-modals-btn-restore-autofill,
      .stored-modals-btn-restore-autofill-keep,
      .stored-modals-btn-minimize-all {
        width: 100%;
        padding: 6px 10px;
        border-radius: 7px;
        font-size: 11.5px;
        font-weight: 600;
        cursor: pointer;
        border: 1px solid #e5e7eb;
        background: #ffffff;
        color: #374151;
        transition: background 0.12s, border-color 0.12s;
        text-align: left;
      }
      .stored-modals-btn-restore-all:hover,
      .stored-modals-btn-restore-autofill:hover,
      .stored-modals-btn-restore-autofill-keep:hover {
        background: #eff6ff;
        border-color: #bfdbfe;
        color: #2563eb;
      }
      .stored-modals-btn-minimize-all:hover {
        background: #f9fafb;
        border-color: #9ca3af;
      }

      .stored-modals-float.locked .stored-modals-toggle {
        background: #94a3b8;
        cursor: not-allowed;
        box-shadow: none;
      }

      /* ========== 主页卡片布局 ========== */
      #homeSection {
        padding: 28px 24px 36px;
        overflow: auto;
        background:
          radial-gradient(circle at 14% 8%, rgba(14, 165, 233, 0.12), transparent 30%),
          linear-gradient(180deg, #f6f8fb 0%, #eef3f7 100%);
      }

      .home-shell {
        display: flex;
        flex-direction: column;
        gap: 18px;
        max-width: 1360px;
        margin: 0 auto;
      }

      .home-card {
        display: flex;
        flex-direction: column;
        height: 100%;
        background: #ffffff;
        border: 1px solid rgba(203, 213, 225, 0.85);
        border-radius: 22px;
        overflow: hidden;
        box-shadow: 0 22px 50px rgba(15, 23, 42, 0.06);
      }

      .home-grid {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 18px;
        align-items: stretch;
      }

      .home-grid.logged-in {
        grid-template-columns: 1fr;
        align-items: start;
      }

      .home-card-header {
        display: flex;
        align-items: flex-start;
        gap: 12px;
        padding: 22px 24px 18px;
        border-bottom: 1px solid #edf2f7;
        background: linear-gradient(180deg, rgba(248, 250, 252, 0.95) 0%, rgba(255, 255, 255, 0.95) 100%);
      }

      .home-card-icon {
        font-size: 22px;
        line-height: 1;
        margin-top: 2px;
      }

      .home-card-kicker {
        font-size: 11px;
        font-weight: 700;
        letter-spacing: 0.08em;
        text-transform: uppercase;
        color: #64748b;
        margin-bottom: 5px;
      }

      .home-card-title {
        margin: 0;
        font-size: 20px;
        font-weight: 800;
        color: #0f172a;
      }

      .home-card-body {
        display: flex;
        flex: 1;
        flex-direction: column;
        gap: 16px;
        padding: 22px 24px 24px;
      }

      .home-card-desc {
        margin: 0 0 16px;
        font-size: 14px;
        color: #475569;
        line-height: 1.75;
      }

      .home-anchor {
        scroll-margin-top: 24px;
      }

      .home-entry-card {
        position: relative;
        display: grid;
        grid-template-columns: minmax(0, 1.02fr) minmax(360px, 0.98fr);
        gap: 24px;
        padding: 30px;
        border-radius: 32px;
        overflow: hidden;
        background:
          radial-gradient(circle at 12% 8%, rgba(37, 99, 235, 0.12), transparent 34%),
          linear-gradient(135deg, #ffffff 0%, #f8fbff 54%, #edf4fb 100%);
        border: 1px solid rgba(203, 213, 225, 0.9);
        box-shadow: 0 30px 70px rgba(15, 23, 42, 0.10);
      }

      .home-entry-card::before {
        content: "";
        position: absolute;
        inset: 0;
        pointer-events: none;
        background-image:
          linear-gradient(rgba(148, 163, 184, 0.08) 1px, transparent 1px),
          linear-gradient(90deg, rgba(148, 163, 184, 0.08) 1px, transparent 1px);
        background-size: 36px 36px;
        mask-image: linear-gradient(120deg, transparent 0%, rgba(0,0,0,0.5) 46%, transparent 78%);
      }

      .home-entry-copy,
      .home-product-preview {
        position: relative;
        z-index: 1;
      }

      .home-entry-copy .home-eyebrow {
        background: #e0f2fe;
        color: #075985;
        border: 1px solid #bae6fd;
      }

      .home-entry-title {
        margin: 10px 0 12px;
        color: #0f172a;
        font-size: clamp(30px, 4vw, 48px);
        line-height: 1.12;
        letter-spacing: -0.04em;
      }

      .home-entry-desc {
        margin: 0;
        max-width: 760px;
        color: #334155;
        font-size: 15px;
        line-height: 1.8;
      }

      .home-entry-actions {
        display: flex;
        gap: 10px;
        flex-wrap: wrap;
        margin-top: 18px;
      }

      .home-entry-map {
        display: grid;
        gap: 10px;
      }

      .home-entry-node {
        padding: 14px 15px;
        border: 1px solid rgba(226, 232, 240, 0.78);
        border-radius: 17px;
        background: rgba(255, 255, 255, 0.78);
        backdrop-filter: blur(8px);
      }

      .home-entry-node strong {
        display: block;
        color: #0f172a;
        font-size: 14px;
        margin-bottom: 5px;
      }

      .home-entry-node span {
        display: block;
        color: #64748b;
        font-size: 13px;
        line-height: 1.6;
      }

      .home-hero-proof {
        display: grid;
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 10px;
        margin-top: 22px;
      }

      .home-hero-proof-item {
        padding: 12px 13px;
        border-radius: 16px;
        background: #ffffff;
        border: 1px solid #e2e8f0;
      }

      .home-hero-proof-item strong {
        display: block;
        color: #0f172a;
        font-size: 17px;
        margin-bottom: 4px;
      }

      .home-hero-proof-item span {
        color: #64748b;
        font-size: 11.5px;
        line-height: 1.45;
      }

      .home-product-preview {
        display: flex;
        flex-direction: column;
        gap: 12px;
        min-height: 360px;
        padding: 16px;
        border-radius: 26px;
        background: rgba(255, 255, 255, 0.92);
        border: 1px solid rgba(226, 232, 240, 0.88);
        box-shadow: 0 24px 60px rgba(15, 23, 42, 0.10);
        backdrop-filter: blur(14px);
      }

      .preview-topbar {
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 12px;
      }

      .preview-dots {
        display: inline-flex;
        gap: 6px;
      }

      .preview-dots span {
        width: 9px;
        height: 9px;
        border-radius: 50%;
        background: #cbd5e1;
      }

      .preview-dots span:nth-child(1) { background: #ef4444; }
      .preview-dots span:nth-child(2) { background: #f59e0b; }
      .preview-dots span:nth-child(3) { background: #22c55e; }

      .preview-status {
        display: inline-flex;
        align-items: center;
        gap: 7px;
        color: #0f172a;
        font-size: 12px;
        font-weight: 900;
      }

      .preview-status::before {
        content: "";
        width: 8px;
        height: 8px;
        border-radius: 50%;
        background: #22c55e;
        box-shadow: 0 0 0 6px rgba(34, 197, 94, 0.14);
      }

      .preview-tape {
        display: grid;
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 10px;
      }

      .preview-tile {
        padding: 13px;
        border-radius: 18px;
        background: #ffffff;
        border: 1px solid #e2e8f0;
        box-shadow: 0 12px 24px rgba(15, 23, 42, 0.05);
      }

      .preview-tile label {
        display: block;
        color: #64748b;
        font-size: 11px;
        margin-bottom: 6px;
      }

      .preview-tile strong {
        display: block;
        color: #0f172a;
        font-size: 18px;
        letter-spacing: -0.03em;
      }

      .preview-tile.up strong { color: #dc2626; }
      .preview-tile.down strong { color: #16a34a; }

      .preview-flow-board {
        display: grid;
        gap: 9px;
        padding: 14px;
        border-radius: 20px;
        background: #0f172a;
        color: #e2e8f0;
      }

      .preview-flow-row {
        display: grid;
        grid-template-columns: 78px minmax(0, 1fr) 58px;
        gap: 10px;
        align-items: center;
        font-size: 12px;
      }

      .preview-flow-name {
        font-weight: 900;
        color: #f8fafc;
      }

      .preview-flow-bar {
        height: 10px;
        border-radius: 999px;
        background: rgba(148, 163, 184, 0.18);
        overflow: hidden;
      }

      .preview-flow-bar span {
        display: block;
        height: 100%;
        width: var(--w, 50%);
        border-radius: inherit;
        background: linear-gradient(90deg, #f97316, #ef4444);
        animation: previewPulse 2.8s ease-in-out infinite;
      }

      .preview-flow-row:nth-child(2) .preview-flow-bar span {
        background: linear-gradient(90deg, #38bdf8, #2563eb);
        animation-delay: 0.3s;
      }

      .preview-flow-row:nth-child(3) .preview-flow-bar span {
        background: linear-gradient(90deg, #86efac, #16a34a);
        animation-delay: 0.6s;
      }

      .preview-flow-value {
        text-align: right;
        font-weight: 900;
      }

      .preview-mini-table {
        display: grid;
        gap: 8px;
      }

      .preview-mini-row {
        display: grid;
        grid-template-columns: 1fr 64px 64px;
        gap: 10px;
        align-items: center;
        padding: 10px 12px;
        border-radius: 14px;
        background: rgba(255,255,255,0.86);
        border: 1px solid rgba(226,232,240,0.9);
        font-size: 12px;
        animation: rowFloatIn 0.5s ease both;
      }

      .preview-mini-row:nth-child(2) { animation-delay: 0.08s; }
      .preview-mini-row:nth-child(3) { animation-delay: 0.16s; }

      .preview-mini-row strong { color: #0f172a; }
      .preview-mini-row .red { color: #dc2626; font-weight: 900; }
      .preview-mini-row .green { color: #16a34a; font-weight: 900; }

      @keyframes previewPulse {
        0%, 100% { filter: saturate(0.9); transform: scaleX(0.98); }
        50% { filter: saturate(1.25); transform: scaleX(1); }
      }

      @keyframes rowFloatIn {
        from { opacity: 0; transform: translateY(8px); }
        to { opacity: 1; transform: translateY(0); }
      }

      .home-workbench-grid {
        display: grid;
        grid-template-columns: repeat(4, minmax(0, 1fr));
        gap: 12px;
      }

      .home-workbench-card {
        display: flex;
        flex-direction: column;
        gap: 10px;
        min-height: 182px;
        padding: 16px 15px;
        border: 1px solid rgba(203, 213, 225, 0.9);
        border-radius: 20px;
        background:
          radial-gradient(circle at 10% 0%, rgba(14, 165, 233, 0.10), transparent 34%),
          linear-gradient(180deg, #ffffff 0%, #f8fbff 100%);
        box-shadow: 0 16px 34px rgba(15, 23, 42, 0.06);
        color: inherit;
        text-decoration: none;
        font: inherit;
        text-align: left;
        cursor: pointer;
        transition: transform 0.16s ease, box-shadow 0.16s ease, border-color 0.16s ease;
      }

      .home-workbench-card:hover {
        border-color: #93c5fd;
        box-shadow: 0 20px 44px rgba(37, 99, 235, 0.12);
        transform: translateY(-2px);
      }

      .home-workbench-card.is-account {
        background:
          radial-gradient(circle at 16% 0%, rgba(245, 158, 11, 0.14), transparent 36%),
          linear-gradient(180deg, #ffffff 0%, #fffaf0 100%);
      }

      .home-workbench-icon {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        width: 38px;
        height: 38px;
        border-radius: 14px;
        background: #eff6ff;
        font-size: 18px;
      }

      .home-workbench-title {
        color: #0f172a;
        font-size: 15px;
        font-weight: 900;
      }

      .home-workbench-desc {
        margin: 0;
        color: #64748b;
        font-size: 12.5px;
        line-height: 1.65;
        flex: 1;
      }

      .home-workbench-meta {
        display: inline-flex;
        width: fit-content;
        align-items: center;
        min-height: 26px;
        padding: 0 10px;
        border-radius: 999px;
        background: #f1f5f9;
        color: #475569;
        font-size: 11px;
        font-weight: 800;
      }

      .workbench-subnav {
        display: flex;
        align-items: center;
        gap: 8px;
        flex-wrap: wrap;
        margin: 14px 20px 0;
        padding: 10px 12px;
        border: 1px solid #dbeafe;
        border-radius: 16px;
        background:
          linear-gradient(180deg, rgba(255, 255, 255, 0.94), rgba(239, 246, 255, 0.86));
        box-shadow: 0 12px 26px rgba(15, 23, 42, 0.05);
      }

      #choiceConceptSection .workbench-subnav,
      #realtimeSection .workbench-subnav,
      #industrySectorSection .workbench-subnav,
      #stockQuoteSection .workbench-subnav {
        margin: 12px 16px 0;
        border-radius: 12px;
        box-shadow: none;
      }

      .workbench-subnav-label {
        color: #64748b;
        font-size: 11px;
        font-weight: 900;
        letter-spacing: 0.08em;
        text-transform: uppercase;
      }

      .workbench-chip {
        display: inline-flex;
        align-items: center;
        min-height: 30px;
        padding: 0 12px;
        border: 1px solid #cbd5e1;
        border-radius: 999px;
        background: #ffffff;
        color: #334155;
        font-size: 12px;
        font-weight: 800;
        text-decoration: none;
        cursor: pointer;
        transition: all 0.14s ease;
      }

      .workbench-chip:hover {
        border-color: #93c5fd;
        color: #1d4ed8;
        background: #eff6ff;
      }

      .workbench-chip.active {
        border-color: #2563eb;
        color: #1d4ed8;
        background: #dbeafe;
      }

      .data-service-section {
        background:
          radial-gradient(circle at 18% 0%, rgba(14, 165, 233, 0.18), transparent 28%),
          linear-gradient(180deg, #f4f7fb 0%, #eef3f8 100%);
        padding: 24px;
      }

      .data-service-shell {
        display: flex;
        flex-direction: column;
        gap: 16px;
        max-width: 1180px;
        width: 100%;
        margin: 0 auto;
      }

      .data-service-hero,
      .data-service-card {
        border: 1px solid rgba(203, 213, 225, 0.9);
        border-radius: 24px;
        background: rgba(255, 255, 255, 0.94);
        box-shadow: 0 22px 52px rgba(15, 23, 42, 0.07);
      }

      .data-service-hero {
        display: grid;
        grid-template-columns: minmax(0, 1.15fr) minmax(300px, 0.85fr);
        gap: 18px;
        padding: 24px;
      }

      .data-service-title {
        margin: 10px 0 12px;
        color: #0f172a;
        font-size: clamp(26px, 3vw, 38px);
        line-height: 1.12;
        letter-spacing: -0.035em;
      }

      .data-service-desc {
        margin: 0;
        color: #475569;
        font-size: 14.5px;
        line-height: 1.8;
      }

      .data-service-actions {
        display: flex;
        gap: 10px;
        flex-wrap: wrap;
        margin-top: 18px;
      }

      .data-service-policy {
        display: grid;
        gap: 10px;
      }

      .data-service-policy-item {
        padding: 13px 14px;
        border: 1px solid #dbeafe;
        border-radius: 16px;
        background: #f8fbff;
      }

      .data-service-policy-item strong {
        display: block;
        margin-bottom: 5px;
        color: #0f172a;
        font-size: 13px;
      }

      .data-service-policy-item span {
        color: #64748b;
        font-size: 12px;
        line-height: 1.6;
      }

      .data-service-grid {
        display: grid;
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 14px;
      }

      .data-service-card {
        padding: 18px 18px 16px;
      }

      .data-service-card h3 {
        margin: 0 0 8px;
        color: #0f172a;
        font-size: 15px;
      }

      .data-service-card p {
        margin: 0;
        color: #64748b;
        font-size: 12.5px;
        line-height: 1.7;
      }

      .data-service-code {
        margin: 12px 0 0;
        padding: 12px;
        border-radius: 14px;
        background: #0f172a;
        color: #dbeafe;
        font-family: "SF Mono", "Fira Code", "Menlo", monospace;
        font-size: 11.5px;
        line-height: 1.7;
        overflow-x: auto;
      }

      .task-subtabs {
        display: inline-flex;
        align-items: center;
        gap: 6px;
        flex-wrap: wrap;
      }

      .task-subtab {
        display: inline-flex !important;
        align-items: center !important;
        justify-content: center !important;
        min-height: 30px !important;
        padding: 0 13px !important;
        border: 1px solid #cbd5e1 !important;
        border-radius: 999px !important;
        background: #ffffff !important;
        color: #334155 !important;
        font-size: 12px !important;
        font-weight: 800 !important;
        text-decoration: none !important;
        cursor: pointer !important;
        box-shadow: none !important;
        transform: none !important;
        transition: background 0.14s ease, border-color 0.14s ease, color 0.14s ease, box-shadow 0.14s ease !important;
      }

      .task-subtab:hover {
        border-color: #93c5fd !important;
        color: #1d4ed8 !important;
        background: #eff6ff !important;
        box-shadow: 0 4px 14px rgba(37, 99, 235, 0.08) !important;
      }

      .task-subtab.active {
        border-color: #2563eb !important;
        color: #1d4ed8 !important;
        background: #dbeafe !important;
        box-shadow: 0 6px 18px rgba(37, 99, 235, 0.14) !important;
      }

      .task-panel[hidden] {
        display: none !important;
      }

      .task-panel {
        animation: taskPanelIn 0.22s ease both;
      }

      @keyframes taskPanelIn {
        from { opacity: 0; transform: translateY(8px); }
        to { opacity: 1; transform: translateY(0); }
      }

      .value-service-tabs {
        margin: 0;
      }

      .value-service-panel {
        display: flex;
        flex-direction: column;
        gap: 14px;
      }

      .board-service-showcase {
        display: grid;
        grid-template-columns: minmax(260px, 0.78fr) minmax(0, 1.22fr);
        gap: 14px;
        align-items: stretch;
      }

      .board-service-card,
      .demo-frame-card {
        border: 1px solid rgba(203, 213, 225, 0.9);
        border-radius: 24px;
        background: rgba(255, 255, 255, 0.95);
        box-shadow: 0 22px 52px rgba(15, 23, 42, 0.07);
        overflow: hidden;
      }

      .board-service-card {
        padding: 20px;
      }

      .board-service-card h3 {
        margin: 0 0 10px;
        color: #0f172a;
        font-size: 18px;
        letter-spacing: -0.02em;
      }

      .board-service-card p {
        margin: 0;
        color: #64748b;
        font-size: 13px;
        line-height: 1.75;
      }

      .board-service-price {
        display: flex;
        align-items: baseline;
        gap: 6px;
        margin: 16px 0 14px;
        color: #0f172a;
      }

      .board-service-price strong {
        font-size: 32px;
        line-height: 1;
        letter-spacing: -0.04em;
      }

      .board-service-price span {
        color: #64748b;
        font-size: 13px;
        font-weight: 700;
      }

      .board-service-list {
        margin: 14px 0 0;
        padding-left: 18px;
        color: #475569;
        font-size: 13px;
        line-height: 1.8;
      }

      .demo-frame-card {
        display: flex;
        flex-direction: column;
        min-height: 560px;
      }

      .demo-frame-head {
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 12px;
        padding: 14px 16px;
        border-bottom: 1px solid #e2e8f0;
        background: linear-gradient(180deg, #ffffff, #f8fbff);
      }

      .demo-frame-title {
        color: #0f172a;
        font-size: 14px;
        font-weight: 900;
      }

      .demo-frame-subtitle {
        margin-top: 3px;
        color: #64748b;
        font-size: 12px;
      }

      .demo-frame {
        width: 100%;
        min-height: 520px;
        flex: 1;
        border: 0;
        background: #f8fafc;
      }

      #value-services {
        scroll-margin-top: 96px;
      }

      .value-service-status {
        display: none;
        padding: 12px 14px;
        border-radius: 16px;
        border: 1px solid #dbeafe;
        background: #eff6ff;
        color: #1e3a8a;
        font-size: 13px;
        line-height: 1.6;
        font-weight: 800;
      }

      .value-service-status.error {
        border-color: #fecaca;
        background: #fff1f2;
        color: #991b1b;
      }

      .value-service-status.success {
        border-color: #bbf7d0;
        background: #f0fdf4;
        color: #166534;
      }

      .value-service-status.neutral {
        border-color: #e2e8f0;
        background: #f8fafc;
        color: #475569;
      }

      .value-product-grid {
        display: grid;
        grid-template-columns: minmax(0, 1.15fr) minmax(280px, 0.85fr);
        gap: 14px;
      }

      .value-product-card,
      .value-demo-card,
      .value-modal-card {
        border: 1px solid rgba(203, 213, 225, 0.9);
        border-radius: 24px;
        background: rgba(255, 255, 255, 0.96);
        box-shadow: 0 22px 52px rgba(15, 23, 42, 0.07);
      }

      .value-product-card {
        position: relative;
        overflow: hidden;
        padding: 22px;
      }

      .value-product-card.featured::before {
        content: "";
        position: absolute;
        inset: 0 0 auto;
        height: 5px;
        background: linear-gradient(90deg, #0ea5e9, #2563eb, #14b8a6);
      }

      .value-card-head {
        display: flex;
        align-items: flex-start;
        justify-content: space-between;
        gap: 14px;
        margin-bottom: 12px;
      }

      .value-kicker,
      .value-badge {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        min-height: 24px;
        padding: 0 10px;
        border-radius: 999px;
        border: 1px solid #bfdbfe;
        background: #eff6ff;
        color: #1d4ed8;
        font-size: 11px;
        font-weight: 900;
        letter-spacing: 0.04em;
      }

      .value-badge.hot {
        border-color: #fed7aa;
        background: #fff7ed;
        color: #c2410c;
      }

      .value-product-card h2,
      .value-product-card h3,
      .value-demo-card h3 {
        margin: 0;
        color: #0f172a;
        letter-spacing: -0.025em;
      }

      .value-product-card h2 {
        font-size: clamp(22px, 2.4vw, 30px);
        line-height: 1.16;
      }

      .value-product-card h3,
      .value-demo-card h3 {
        font-size: 18px;
      }

      .value-card-desc {
        margin: 10px 0 0;
        color: #475569;
        font-size: 13.5px;
        line-height: 1.8;
      }

      .value-price-line {
        display: flex;
        align-items: baseline;
        gap: 6px;
        margin: 16px 0 4px;
        color: #0f172a;
      }

      .value-price-line strong {
        font-size: 34px;
        line-height: 1;
        letter-spacing: -0.045em;
      }

      .value-price-line span {
        color: #64748b;
        font-size: 13px;
        font-weight: 800;
      }

      .value-feature-list {
        display: grid;
        gap: 8px;
        margin: 16px 0 0;
        padding: 0;
        list-style: none;
      }

      .value-feature-list li {
        position: relative;
        padding-left: 18px;
        color: #475569;
        font-size: 13px;
        line-height: 1.65;
      }

      .value-feature-list li::before {
        content: "";
        position: absolute;
        left: 0;
        top: 0.62em;
        width: 7px;
        height: 7px;
        border-radius: 50%;
        background: #0ea5e9;
        box-shadow: 0 0 0 4px rgba(14, 165, 233, 0.12);
      }

      .value-plan-strip,
      .value-plan-grid {
        display: grid;
        gap: 10px;
        margin-top: 16px;
      }

      .value-plan-strip {
        grid-template-columns: repeat(4, minmax(0, 1fr));
      }

      .value-plan-chip,
      .value-frequency-option {
        border: 1px solid #dbeafe;
        border-radius: 18px;
        background: #f8fbff;
        padding: 12px;
        text-align: left;
      }

      .value-plan-chip strong,
      .value-frequency-option strong {
        display: block;
        color: #0f172a;
        font-size: 14px;
        line-height: 1.2;
      }

      .value-plan-chip span,
      .value-frequency-option span {
        display: block;
        margin-top: 5px;
        color: #64748b;
        font-size: 12px;
        line-height: 1.45;
      }

      .value-frequency-option {
        position: relative;
        padding-top: 34px;
        cursor: pointer;
        transition: transform 0.16s ease, border-color 0.16s ease, box-shadow 0.16s ease, background 0.16s ease;
      }

      .value-frequency-option:hover {
        border-color: #2563eb;
        background: #eff6ff;
        box-shadow: 0 14px 30px rgba(37, 99, 235, 0.14);
        transform: translateY(-1px);
      }

      .value-frequency-option.selected {
        border-color: #0f172a;
        background:
          radial-gradient(circle at 12% 0%, rgba(14, 165, 233, 0.18), transparent 34%),
          #ffffff;
        box-shadow: 0 0 0 3px rgba(15, 23, 42, 0.08), 0 18px 36px rgba(15, 23, 42, 0.12);
        transform: translateY(-1px);
      }

      .value-frequency-option .value-frequency-price {
        margin-top: 10px;
        color: #1d4ed8;
        font-weight: 900;
      }

      .value-frequency-option.recommended {
        position: relative;
        border-color: #bfdbfe;
        background:
          radial-gradient(circle at 16% 0%, rgba(245, 158, 11, 0.12), transparent 36%),
          #fffaf0;
      }

      .value-frequency-option.recommended::after {
        content: "推荐";
        position: absolute;
        top: 10px;
        right: 10px;
        padding: 3px 8px;
        border-radius: 999px;
        background: #f97316;
        color: #fff;
        font-size: 11px;
        font-weight: 900;
      }

      .value-frequency-option.selected::before,
      .value-commitment-card.selected::before,
      .value-commitment-option.selected::before,
      .value-pay-mode-option.selected::before {
        content: "已选";
        position: absolute;
        top: 10px;
        left: 10px;
        padding: 3px 8px;
        border-radius: 999px;
        background: #0f172a;
        color: #ffffff;
        font-size: 11px;
        font-weight: 900;
      }

      .value-pay-mode-grid {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 10px;
        margin-bottom: 14px;
      }

      .value-pay-mode-option {
        position: relative;
        padding: 34px 15px 15px;
        border: 1px solid #dbeafe;
        border-radius: 18px;
        background: #f8fbff;
        text-align: left;
        cursor: pointer;
        transition: transform 0.16s ease, border-color 0.16s ease, box-shadow 0.16s ease, background 0.16s ease;
      }

      .value-pay-mode-option:hover {
        border-color: #2563eb;
        background: #eff6ff;
        box-shadow: 0 14px 30px rgba(37, 99, 235, 0.14);
        transform: translateY(-1px);
      }

      .value-pay-mode-option.selected {
        border-color: #0f172a;
        background: #ffffff;
        box-shadow: 0 0 0 3px rgba(15, 23, 42, 0.08), 0 14px 30px rgba(15, 23, 42, 0.12);
        transform: translateY(-1px);
      }

      .value-pay-mode-option strong,
      .value-pay-mode-option span {
        display: block;
      }

      .value-pay-mode-option strong {
        color: #0f172a;
        font-size: 15px;
      }

      .value-pay-mode-option span {
        margin-top: 6px;
        color: #64748b;
        font-size: 12px;
        line-height: 1.5;
      }

      .value-pay-mode-badge {
        display: inline-flex !important;
        width: fit-content;
        margin-top: 10px !important;
        min-height: 24px;
        align-items: center;
        padding: 0 9px;
        border-radius: 999px;
        background: #dcfce7;
        color: #166534 !important;
        font-size: 11px !important;
        font-weight: 900;
      }

      .value-commitment-selector {
        display: grid;
        grid-template-columns: repeat(4, minmax(0, 1fr));
        gap: 10px;
        margin: 0 0 14px;
      }

      .value-commitment-option {
        position: relative;
        padding: 34px 13px 13px;
        border: 1px solid #dbeafe;
        border-radius: 16px;
        background: #ffffff;
        color: #334155;
        text-align: left;
        cursor: pointer;
        transition: border-color 0.16s ease, background 0.16s ease, box-shadow 0.16s ease, transform 0.16s ease;
      }

      .value-commitment-option:hover {
        border-color: #2563eb;
        background: #eff6ff;
        box-shadow: 0 12px 28px rgba(37, 99, 235, 0.12);
        transform: translateY(-1px);
      }

      .value-commitment-option.selected {
        border-color: #0f172a;
        background: #ffffff;
        box-shadow: 0 0 0 3px rgba(15, 23, 42, 0.08), 0 12px 28px rgba(15, 23, 42, 0.10);
        transform: translateY(-1px);
      }

      .value-commitment-option strong,
      .value-commitment-option span,
      .value-commitment-option small {
        display: block;
      }

      .value-commitment-option strong {
        color: #0f172a;
        font-size: 13px;
      }

      .value-commitment-option span {
        margin-top: 5px;
        color: #1d4ed8;
        font-size: 12px;
        font-weight: 900;
      }

      .value-commitment-option small {
        margin-top: 5px;
        color: #64748b;
        font-size: 11px;
        line-height: 1.45;
      }

      .value-commitment-option[disabled] {
        opacity: 0.52;
        cursor: not-allowed;
        transform: none;
        box-shadow: none;
      }

      .value-payment-method-line {
        display: none;
        flex-wrap: wrap;
        gap: 8px;
        margin-top: 10px;
      }

      .value-payment-method-line span {
        display: inline-flex;
        align-items: center;
        min-height: 26px;
        padding: 0 10px;
        border-radius: 999px;
        border: 1px solid #bfdbfe;
        background: #eff6ff;
        color: #1d4ed8;
        font-size: 12px;
        font-weight: 900;
      }

      .value-commitment-note {
        margin-top: 14px;
        padding: 13px 14px;
        border: 1px solid #fed7aa;
        border-radius: 16px;
        background: #fff7ed;
        color: #92400e;
        font-size: 12.5px;
        line-height: 1.7;
      }

      .value-commitment-note strong {
        color: #9a3412;
      }

      .value-commitment-note.modal-note {
        margin: 0 0 14px;
      }

      .value-commitment-grid {
        display: grid;
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 10px;
        margin-top: 12px;
      }

      .value-commitment-card {
        position: relative;
        padding: 34px 13px 13px;
        border: 1px solid #dbeafe;
        border-radius: 18px;
        background: #f8fbff;
        text-align: left;
        cursor: pointer;
        transition: border-color 0.16s ease, background 0.16s ease, box-shadow 0.16s ease, transform 0.16s ease;
      }

      .value-commitment-card:hover {
        border-color: #2563eb;
        background: #eff6ff;
        box-shadow: 0 12px 28px rgba(37, 99, 235, 0.12);
        transform: translateY(-1px);
      }

      .value-commitment-card.selected {
        border-color: #0f172a;
        background: #ffffff;
        box-shadow: 0 0 0 3px rgba(15, 23, 42, 0.08), 0 14px 30px rgba(15, 23, 42, 0.10);
        transform: translateY(-1px);
      }

      .value-commitment-card strong,
      .value-commitment-card span,
      .value-commitment-card small {
        display: block;
      }

      .value-commitment-card strong {
        color: #0f172a;
        font-size: 14px;
      }

      .value-commitment-card span {
        margin-top: 6px;
        color: #1d4ed8;
        font-size: 13px;
        font-weight: 900;
      }

      .value-commitment-card small {
        margin-top: 5px;
        color: #64748b;
        font-size: 11.5px;
        line-height: 1.45;
      }

      .value-commitment-card.recommended {
        border-color: #bfdbfe;
        background:
          radial-gradient(circle at 12% 0%, rgba(245, 158, 11, 0.12), transparent 36%),
          #fffaf0;
      }

      .value-commitment-card.recommended::after {
        content: "推荐";
        position: absolute;
        top: 10px;
        right: 10px;
        padding: 3px 8px;
        border-radius: 999px;
        background: #f97316;
        color: #fff;
        font-size: 11px;
        font-weight: 900;
      }

      .value-plan-actions {
        display: flex;
        gap: 10px;
        flex-wrap: wrap;
        margin-top: 18px;
      }

      .value-side-card {
        display: grid;
        gap: 12px;
        align-content: start;
      }

      .value-side-metric {
        padding: 14px;
        border: 1px solid #e2e8f0;
        border-radius: 18px;
        background: linear-gradient(180deg, #ffffff 0%, #f8fafc 100%);
      }

      .value-side-metric strong {
        display: block;
        color: #0f172a;
        font-size: 15px;
        margin-bottom: 5px;
      }

      .value-side-metric span {
        color: #64748b;
        font-size: 12px;
        line-height: 1.6;
      }

      .value-demo-card {
        overflow: hidden;
      }

      .value-demo-layout {
        display: grid;
        grid-template-columns: minmax(0, 0.95fr) minmax(0, 1.05fr);
        gap: 14px;
        align-items: stretch;
      }

      .value-demo-copy,
      .value-demo-stage {
        padding: 20px;
      }

      .value-demo-stage {
        min-height: 320px;
        background:
          radial-gradient(circle at 20% 10%, rgba(14, 165, 233, 0.20), transparent 30%),
          radial-gradient(circle at 85% 25%, rgba(34, 197, 94, 0.12), transparent 28%),
          linear-gradient(135deg, #0f172a 0%, #172554 100%);
        color: #e0f2fe;
      }

      .demo-stage-toolbar {
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 10px;
        margin-bottom: 16px;
      }

      .demo-stage-pill {
        display: inline-flex;
        align-items: center;
        min-height: 24px;
        padding: 0 10px;
        border-radius: 999px;
        border: 1px solid rgba(191, 219, 254, 0.25);
        background: rgba(15, 23, 42, 0.32);
        color: #bfdbfe;
        font-size: 11px;
        font-weight: 900;
      }

      .demo-stage-grid {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 10px;
      }

      .demo-stage-tile {
        padding: 14px;
        border-radius: 18px;
        border: 1px solid rgba(191, 219, 254, 0.16);
        background: rgba(255, 255, 255, 0.08);
        backdrop-filter: blur(12px);
      }

      .demo-stage-tile label {
        display: block;
        color: #bfdbfe;
        font-size: 11px;
        font-weight: 800;
        margin-bottom: 8px;
      }

      .demo-stage-tile strong {
        color: #ffffff;
        font-size: 18px;
      }

      .demo-stage-flow {
        margin-top: 14px;
        display: grid;
        gap: 8px;
      }

      .demo-stage-row {
        display: grid;
        grid-template-columns: 64px minmax(0, 1fr) 58px;
        gap: 8px;
        align-items: center;
        color: #dbeafe;
        font-size: 12px;
      }

      .demo-stage-bar {
        height: 8px;
        border-radius: 999px;
        overflow: hidden;
        background: rgba(226, 232, 240, 0.14);
      }

      .demo-stage-bar span {
        display: block;
        width: var(--w, 50%);
        height: 100%;
        border-radius: inherit;
        background: linear-gradient(90deg, #38bdf8, #22c55e);
      }

      .value-frequency-grid {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 10px;
      }

      .value-modal-summary {
        margin: 0 0 14px;
        color: #475569;
        font-size: 13px;
        line-height: 1.7;
      }

      .review-flow-card {
        margin: 14px 20px 0;
        display: grid;
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 10px;
      }

      .review-flow-step {
        padding: 13px 14px;
        border: 1px solid #dbeafe;
        border-radius: 16px;
        background: #ffffff;
        box-shadow: 0 10px 24px rgba(15, 23, 42, 0.04);
      }

      .review-flow-step strong {
        display: block;
        margin-bottom: 5px;
        color: #0f172a;
        font-size: 13px;
      }

      .review-flow-step span {
        color: #64748b;
        font-size: 12px;
        line-height: 1.6;
      }

      .market-review-head {
        display: grid;
        grid-template-columns: minmax(0, 1fr) auto;
        gap: 16px;
        align-items: center;
        padding: 20px 22px 16px;
        border-bottom: 1px solid #e2e8f0;
        background:
          radial-gradient(circle at 2% 0%, rgba(37, 99, 235, 0.12), transparent 28%),
          linear-gradient(180deg, #ffffff 0%, #f8fbff 100%);
      }

      .market-review-kicker {
        display: inline-flex;
        width: fit-content;
        padding: 4px 9px;
        border-radius: 999px;
        background: #dbeafe;
        color: #1d4ed8;
        font-size: 10px;
        font-weight: 900;
        letter-spacing: 0.08em;
        text-transform: uppercase;
      }

      .market-review-title {
        margin: 8px 0 6px;
        color: #0f172a;
        font-size: 20px;
        line-height: 1.2;
        letter-spacing: -0.03em;
      }

      .market-review-desc {
        margin: 0;
        color: #64748b;
        font-size: 13px;
        line-height: 1.75;
      }

      .market-review-mode-switch {
        display: flex;
        gap: 8px;
        padding: 5px;
        border: 1px solid #dbeafe;
        border-radius: 999px;
        background: #eff6ff;
      }

      .market-mode-btn {
        display: inline-flex !important;
        align-items: center !important;
        justify-content: center !important;
        min-width: 86px;
        min-height: 34px !important;
        padding: 0 16px !important;
        border: 1px solid #cbd5e1 !important;
        border-radius: 999px !important;
        background: #ffffff !important;
        color: #334155 !important;
        font-size: 13px !important;
        font-weight: 900 !important;
        cursor: pointer !important;
        box-shadow: none !important;
        transform: none !important;
        transition: background 0.14s ease, border-color 0.14s ease, color 0.14s ease, box-shadow 0.14s ease !important;
      }

      .market-mode-btn:hover {
        border-color: #93c5fd !important;
        color: #1d4ed8 !important;
        background: #ffffff !important;
      }

      .market-mode-btn.active {
        background: #2563eb !important;
        color: #ffffff !important;
        border-color: #2563eb !important;
        box-shadow: 0 8px 18px rgba(37, 99, 235, 0.24) !important;
      }

      .market-review-guide {
        display: grid;
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 10px;
        padding: 14px 20px 0;
      }

      .market-review-guide-item {
        padding: 12px 13px;
        border: 1px solid #e2e8f0;
        border-radius: 15px;
        background: #f8fafc;
      }

      .market-review-guide-item strong {
        display: block;
        color: #0f172a;
        font-size: 13px;
        margin-bottom: 4px;
      }

      .market-review-guide-item span {
        color: #64748b;
        font-size: 12px;
        line-height: 1.55;
      }

      .market-review-panel {
        margin: 14px 20px 20px;
        border: 1px solid #e2e8f0;
        border-radius: 18px;
        background: #ffffff;
        overflow: hidden;
      }

      .market-review-panel[hidden] {
        display: none !important;
      }

      .market-panel-heading {
        padding: 14px 16px 0;
      }

      .market-panel-heading h4 {
        margin: 0 0 5px;
        color: #0f172a;
        font-size: 15px;
      }

      .market-panel-heading p {
        margin: 0;
        color: #64748b;
        font-size: 12px;
        line-height: 1.65;
      }

      .insight-drawer-shell {
        position: fixed;
        right: 18px;
        top: 78px;
        bottom: 18px;
        width: min(420px, calc(100vw - 36px));
        z-index: 900;
        display: none;
        border: 1px solid rgba(203, 213, 225, 0.95);
        border-radius: 22px;
        background: rgba(255, 255, 255, 0.98);
        box-shadow: 0 26px 70px rgba(15, 23, 42, 0.18);
        overflow: hidden;
      }

      .insight-drawer-shell.open {
        display: flex;
        flex-direction: column;
      }

      .insight-drawer-header {
        display: flex;
        align-items: flex-start;
        justify-content: space-between;
        gap: 12px;
        padding: 18px 18px 14px;
        border-bottom: 1px solid #e2e8f0;
        background: linear-gradient(180deg, #ffffff, #f8fbff);
      }

      .insight-drawer-title {
        margin: 0;
        color: #0f172a;
        font-size: 16px;
        font-weight: 900;
      }

      .insight-drawer-subtitle {
        margin-top: 4px;
        color: #64748b;
        font-size: 12px;
        line-height: 1.5;
      }

      .insight-drawer-close {
        border: 1px solid #cbd5e1;
        border-radius: 10px;
        background: #ffffff;
        color: #475569;
        cursor: pointer;
        width: 30px;
        height: 30px;
        font-size: 18px;
        line-height: 1;
      }

      .insight-drawer-body {
        padding: 16px 18px 18px;
        color: #475569;
        font-size: 13px;
        line-height: 1.75;
        overflow: auto;
      }

      .home-hero-card {
        display: grid;
        grid-template-columns: minmax(0, 1.35fr) minmax(320px, 0.9fr);
        gap: 18px;
        padding: 24px;
        border-radius: 28px;
        background:
          linear-gradient(135deg, rgba(255, 255, 255, 0.95), rgba(245, 250, 255, 0.92)),
          linear-gradient(180deg, #ffffff 0%, #f8fbff 100%);
        border: 1px solid rgba(191, 219, 254, 0.85);
        box-shadow: 0 30px 70px rgba(30, 41, 59, 0.10);
      }

      .home-hero-main,
      .home-hero-side {
        display: flex;
        flex-direction: column;
      }

      .home-hero-main {
        justify-content: center;
      }

      .home-eyebrow {
        display: inline-flex;
        align-items: center;
        width: fit-content;
        padding: 6px 12px;
        border-radius: 999px;
        background: rgba(219, 234, 254, 0.95);
        color: #1d4ed8;
        font-size: 12px;
        font-weight: 700;
        letter-spacing: 0.06em;
        text-transform: uppercase;
      }

      .home-hero-title {
        margin: 16px 0 14px;
        font-size: clamp(28px, 4vw, 40px);
        line-height: 1.15;
        letter-spacing: -0.03em;
        color: #0f172a;
      }

      .home-hero-lead {
        margin: 0 0 24px;
        max-width: 760px;
        font-size: 16px;
        line-height: 1.8;
        color: #334155;
      }

      .home-cta-row {
        display: flex;
        gap: 12px;
        flex-wrap: wrap;
        margin-top: 2px;
      }

      .home-process-band {
        display: grid;
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 12px;
        margin-top: 4px;
      }

      .home-process-node,
      .home-mode-card {
        padding: 16px 16px 14px;
        border-radius: 18px;
        border: 1px solid rgba(191, 219, 254, 0.9);
        background: linear-gradient(180deg, rgba(255, 255, 255, 0.98), rgba(239, 246, 255, 0.86));
      }

      .home-process-index {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        min-width: 40px;
        height: 28px;
        border-radius: 999px;
        background: #dbeafe;
        color: #1d4ed8;
        font-size: 12px;
        font-weight: 800;
        letter-spacing: 0.08em;
      }

      .home-process-node strong,
      .home-mode-card strong {
        display: block;
        margin: 12px 0 8px;
        font-size: 15px;
        color: #0f172a;
      }

      .home-process-node p,
      .home-mode-card span {
        margin: 0;
        font-size: 13px;
        line-height: 1.7;
        color: #475569;
      }

      .home-side-card {
        padding: 18px 18px 16px;
        border-radius: 18px;
        background: rgba(255, 255, 255, 0.88);
        border: 1px solid rgba(203, 213, 225, 0.9);
        box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.75);
      }

      .home-side-card + .home-side-card {
        margin-top: 14px;
      }

      .home-side-card.muted {
        background: rgba(248, 250, 252, 0.92);
      }

      .home-side-title {
        margin: 0 0 12px;
        font-size: 14px;
        font-weight: 800;
        color: #0f172a;
      }

      .home-step-list,
      .home-plain-list {
        margin: 0;
        padding-left: 18px;
        color: #475569;
        line-height: 1.75;
        font-size: 13.5px;
      }

      .home-step-list li + li,
      .home-plain-list li + li {
        margin-top: 8px;
      }

      .home-stat-grid {
        display: grid;
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 14px;
        margin: 0 0 22px;
      }

      .home-stat-item,
      .account-summary-item {
        padding: 16px 18px;
        border-radius: 16px;
        border: 1px solid #e2e8f0;
        background: linear-gradient(180deg, #ffffff 0%, #f8fbff 100%);
      }

      .home-stat-label,
      .account-summary-label {
        display: block;
        margin-bottom: 6px;
        font-size: 12px;
        color: #64748b;
      }

      .home-stat-value,
      .account-summary-value {
        font-size: 16px;
        font-weight: 800;
        color: #0f172a;
      }

      .home-inline-grid,
      .account-summary-grid {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 14px;
      }

      .account-summary-grid.compact {
        margin-bottom: 16px;
      }

      .home-login-badges {
        display: flex;
        gap: 10px;
        flex-wrap: wrap;
        margin: 14px 0 4px;
      }

      .home-login-mode-grid {
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
        gap: 12px;
        margin-top: 16px;
      }

      .home-public-info-card {
        background:
          radial-gradient(circle at 0% 0%, rgba(14, 165, 233, 0.10), transparent 34%),
          #ffffff;
      }

      .home-public-info-grid {
        display: grid;
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 12px;
      }

      .home-public-info-item {
        padding: 14px;
        border-radius: 16px;
        border: 1px solid #e2e8f0;
        background: #f8fafc;
      }

      .home-public-info-item strong {
        display: block;
        margin-bottom: 6px;
        color: #0f172a;
        font-size: 13px;
      }

      .home-public-info-item span {
        color: #64748b;
        font-size: 12px;
        line-height: 1.6;
      }

      .account-profile-editor {
        display: grid;
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 12px;
        align-items: end;
      }

      .account-secret-hint {
        padding: 13px 14px;
        border-radius: 14px;
        border: 1px solid #fed7aa;
        background: #fff7ed;
        color: #9a3412;
        font-size: 12.5px;
        line-height: 1.6;
      }

      .personal-space-shell {
        display: flex;
        flex-direction: column;
        gap: 16px;
      }

      .account-ops-stack {
        display: grid;
        grid-template-columns: minmax(0, 1.08fr) minmax(420px, 0.92fr);
        gap: 16px;
        align-items: start;
      }

      .home-card.account-card-wide {
        grid-column: 1 / -1;
      }

      .account-ops-stack {
        grid-column: 1 / -1;
      }

      .account-dashboard-grid {
        display: grid;
        grid-template-columns: minmax(0, 0.58fr) minmax(360px, 0.42fr);
        gap: 16px;
        align-items: start;
      }

      .account-dashboard-main,
      .account-dashboard-side {
        display: flex;
        flex-direction: column;
        gap: 16px;
        min-width: 0;
      }

      .entitlement-board {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 14px;
        align-items: stretch;
      }

      .entitlement-panel {
        position: relative;
        overflow: hidden;
        padding: 16px;
        border-radius: 18px;
        border: 1px solid #dbeafe;
        background:
          radial-gradient(circle at 0% 0%, rgba(37, 99, 235, 0.08), transparent 34%),
          linear-gradient(180deg, #ffffff, #f8fbff);
      }

      .entitlement-panel.api {
        border-color: #bae6fd;
        background:
          radial-gradient(circle at 100% 0%, rgba(14, 165, 233, 0.12), transparent 36%),
          linear-gradient(180deg, #ffffff, #f6fbff);
      }

      .entitlement-panel-head {
        display: flex;
        justify-content: space-between;
        gap: 12px;
        align-items: flex-start;
        margin-bottom: 12px;
      }

      .entitlement-title {
        margin: 0;
        color: #0f172a;
        font-size: 15px;
        font-weight: 900;
      }

      .entitlement-desc {
        margin: 5px 0 0;
        color: #64748b;
        font-size: 12px;
        line-height: 1.65;
      }

      .entitlement-status-pill {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        min-height: 26px;
        padding: 0 10px;
        border-radius: 999px;
        color: #166534;
        background: #dcfce7;
        border: 1px solid #bbf7d0;
        font-size: 12px;
        font-weight: 900;
        white-space: nowrap;
      }

      .entitlement-status-pill.pending {
        color: #92400e;
        background: #fef3c7;
        border-color: #fde68a;
      }

      .entitlement-status-pill.disabled {
        color: #991b1b;
        background: #fee2e2;
        border-color: #fecaca;
      }

      .entitlement-metrics {
        display: grid;
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 10px;
      }

      .entitlement-metric {
        padding: 12px;
        border-radius: 14px;
        border: 1px solid #e2e8f0;
        background: rgba(255, 255, 255, 0.82);
      }

      .entitlement-metric span {
        display: block;
        margin-bottom: 5px;
        color: #64748b;
        font-size: 11.5px;
        line-height: 1.4;
      }

      .entitlement-metric strong {
        color: #0f172a;
        font-size: 14px;
        font-weight: 900;
      }

      .api-token-box {
        margin-top: 12px;
        padding: 12px;
        border-radius: 14px;
        border: 1px solid #cbd5e1;
        background: #0f172a;
        color: #e2e8f0;
      }

      .api-token-box-head {
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 10px;
        margin-bottom: 8px;
      }

      .api-token-label {
        color: #93c5fd;
        font-size: 11px;
        font-weight: 900;
        letter-spacing: 0.08em;
        text-transform: uppercase;
      }

      .api-token-value {
        display: block;
        max-width: 100%;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
        font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
        font-size: 12px;
        color: #f8fafc;
      }

      .api-token-actions {
        display: flex;
        gap: 8px;
        flex-wrap: wrap;
        margin-top: 10px;
      }

      .api-token-copy {
        min-height: 28px;
        padding: 0 10px;
        border-radius: 999px;
        border: 1px solid rgba(147, 197, 253, 0.55);
        background: rgba(59, 130, 246, 0.18);
        color: #bfdbfe;
        font-size: 12px;
        font-weight: 900;
        cursor: pointer;
      }

      .api-token-copy:hover {
        background: rgba(59, 130, 246, 0.28);
      }

      .api-token-note {
        margin: 8px 0 0;
        color: #cbd5e1;
        font-size: 11.5px;
        line-height: 1.55;
      }

      .usage-board {
        display: grid;
        grid-template-columns: minmax(160px, 0.28fr) minmax(0, 0.72fr);
        gap: 14px;
      }

      .usage-totals {
        display: grid;
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 10px;
      }

      .usage-total-card {
        padding: 13px;
        border-radius: 15px;
        border: 1px solid #e2e8f0;
        background: #f8fafc;
      }

      .usage-total-card span {
        display: block;
        color: #64748b;
        font-size: 11.5px;
        margin-bottom: 6px;
      }

      .usage-total-card strong {
        color: #0f172a;
        font-size: 18px;
        font-weight: 950;
      }

      .usage-endpoint-list {
        display: grid;
        gap: 8px;
        max-height: 360px;
        overflow: auto;
        padding-right: 4px;
      }

      .usage-endpoint-row {
        display: grid;
        grid-template-columns: minmax(0, 1fr) auto;
        gap: 10px;
        align-items: center;
        padding: 10px 12px;
        border-radius: 14px;
        border: 1px solid #e2e8f0;
        background: linear-gradient(180deg, #ffffff, #f8fafc);
      }

      .usage-endpoint-name {
        color: #0f172a;
        font-size: 13px;
        font-weight: 900;
      }

      .usage-endpoint-method {
        margin-top: 3px;
        color: #64748b;
        font-size: 11.5px;
        font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
      }

      .usage-endpoint-counts {
        text-align: right;
        color: #0f172a;
        font-size: 12px;
        font-weight: 900;
        white-space: nowrap;
      }

      .usage-empty {
        padding: 14px;
        border-radius: 14px;
        border: 1px dashed #cbd5e1;
        background: #f8fafc;
        color: #64748b;
        font-size: 13px;
        line-height: 1.6;
      }

      .personal-hero-card {
        position: relative;
        overflow: hidden;
        border-radius: 24px;
        padding: 22px;
        border: 1px solid #dbeafe;
        background:
          radial-gradient(circle at 8% 8%, rgba(14, 165, 233, 0.16), transparent 30%),
          linear-gradient(135deg, #ffffff 0%, #f7fbff 58%, #eef6ff 100%);
      }

      .personal-hero-top {
        display: flex;
        align-items: flex-start;
        justify-content: space-between;
        gap: 14px;
        flex-wrap: wrap;
      }

      .personal-avatar {
        width: 54px;
        height: 54px;
        border-radius: 20px;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        background: linear-gradient(135deg, #0f172a, #1d4ed8);
        color: #ffffff;
        font-size: 22px;
        font-weight: 900;
        box-shadow: 0 14px 30px rgba(29, 78, 216, 0.20);
      }

      .personal-identity {
        display: flex;
        align-items: center;
        gap: 14px;
        min-width: 0;
      }

      .personal-name {
        margin: 0;
        font-size: 24px;
        line-height: 1.25;
        color: #0f172a;
      }

      .personal-email {
        margin-top: 4px;
        font-size: 13px;
        color: #64748b;
      }

      .personal-hero-actions {
        display: flex;
        gap: 8px;
        flex-wrap: wrap;
        justify-content: flex-end;
      }

      .personal-metrics-grid {
        display: grid;
        grid-template-columns: repeat(4, minmax(0, 1fr));
        gap: 12px;
        margin-top: 18px;
      }

      .personal-metric {
        padding: 14px;
        border-radius: 16px;
        border: 1px solid #e2e8f0;
        background: rgba(255, 255, 255, 0.78);
        box-shadow: 0 8px 24px rgba(15, 23, 42, 0.04);
      }

      .personal-metric span {
        display: block;
        margin-bottom: 6px;
        color: #64748b;
        font-size: 12px;
      }

      .personal-metric strong {
        color: #0f172a;
        font-size: 15px;
      }

      .personal-section-card {
        padding: 18px;
        border-radius: 20px;
        border: 1px solid #e2e8f0;
        background: #ffffff;
      }

      .personal-section-head {
        display: flex;
        align-items: flex-start;
        justify-content: space-between;
        gap: 12px;
        margin-bottom: 14px;
      }

      .personal-section-head h3 {
        margin: 0;
        font-size: 17px;
        color: #0f172a;
      }

      .personal-section-head p {
        margin: 4px 0 0;
        color: #64748b;
        font-size: 12.5px;
        line-height: 1.6;
      }

      .profile-edit-actions {
        display: flex;
        gap: 8px;
        flex-wrap: wrap;
        margin-top: 10px;
      }

      .profile-edit-panel {
        display: none;
        margin-top: 12px;
        padding: 14px;
        border-radius: 16px;
        border: 1px solid #dbeafe;
        background: #f8fbff;
      }

      .profile-edit-panel.open {
        display: block;
      }

      .profile-edit-status {
        display: none;
        margin-top: 12px;
      }

      .billing-list {
        display: flex;
        flex-direction: column;
        gap: 10px;
      }

      .billing-filter-controls {
        display: inline-flex;
        align-items: center;
        gap: 8px;
        padding: 7px 10px;
        border: 1px solid #dbeafe;
        border-radius: 999px;
        background: #eff6ff;
        color: #1e40af;
        font-size: 12px;
        font-weight: 800;
        white-space: nowrap;
        user-select: none;
      }

      .billing-filter-controls input {
        width: 14px;
        height: 14px;
        accent-color: #2563eb;
        cursor: pointer;
      }

      .billing-empty {
        padding: 14px;
        border-radius: 14px;
        border: 1px dashed #cbd5e1;
        color: #64748b;
        background: #f8fafc;
        font-size: 13px;
      }

      .billing-row {
        display: grid;
        grid-template-columns: minmax(0, 1fr) auto;
        gap: 12px;
        align-items: center;
        padding: 13px 14px;
        border: 1px solid #e2e8f0;
        border-radius: 14px;
        background: linear-gradient(180deg, #ffffff, #f8fafc);
      }

      .billing-row-title {
        font-size: 13.5px;
        font-weight: 800;
        color: #0f172a;
      }

      .billing-row-meta {
        margin-top: 4px;
        font-size: 12px;
        color: #64748b;
        line-height: 1.55;
      }

      .billing-row-amount {
        text-align: right;
        font-weight: 900;
        color: #0f172a;
        white-space: nowrap;
      }

      .billing-row-side {
        display: flex;
        flex-direction: column;
        align-items: flex-end;
        gap: 8px;
      }

      .billing-pay-link {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        min-height: 30px;
        padding: 0 12px;
        border-radius: 999px;
        border: 1px solid #2563eb;
        background: #2563eb;
        color: #ffffff;
        font-size: 12px;
        font-weight: 900;
        text-decoration: none;
        white-space: nowrap;
      }

      .billing-pay-link:hover {
        background: #1d4ed8;
        border-color: #1d4ed8;
      }

      .danger-zone {
        border-color: #fecaca;
        background: linear-gradient(180deg, #fff7f7, #ffffff);
      }

      .danger-zone .personal-section-head h3 {
        color: #991b1b;
      }

      .btn-danger {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        gap: 6px;
        min-height: 34px;
        padding: 0 14px;
        border-radius: 999px;
        border: 1px solid #fecaca;
        color: #991b1b;
        background: #fff1f2;
        font-size: 13px;
        font-weight: 800;
        cursor: pointer;
      }

      .btn-danger:hover {
        background: #fee2e2;
      }

      .auth-modal-wide .auth-modal-content {
        max-width: 780px;
      }

      .auth-modal-subtitle {
        margin: 7px 0 0;
        color: #64748b;
        font-size: 13px;
        line-height: 1.6;
      }

      .login-method-tabs {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 8px;
        padding: 5px;
        border-radius: 16px;
        background: #eff6ff;
        border: 1px solid #dbeafe;
        margin-bottom: 18px;
      }

      .login-method-tab {
        border: 0;
        border-radius: 12px;
        min-height: 38px;
        background: transparent;
        color: #475569;
        font-size: 13px;
        font-weight: 900;
        cursor: pointer;
      }

      .login-method-tab.active {
        background: #ffffff;
        color: #1d4ed8;
        box-shadow: 0 8px 18px rgba(37, 99, 235, 0.12);
      }

      .login-method-panel[hidden] {
        display: none !important;
      }

      .auth-entry-stack {
        display: grid;
        gap: 18px;
      }

      .auth-login-section {
        padding: 16px;
        border-radius: 20px;
        background: rgba(248, 250, 252, 0.82);
        border: 1px solid #e2e8f0;
      }

      .auth-provider-section {
        background:
          linear-gradient(135deg, rgba(239, 246, 255, 0.92), rgba(255, 251, 235, 0.70)),
          #ffffff;
        border-color: #bfdbfe;
      }

      .auth-login-section-head {
        display: flex;
        justify-content: space-between;
        gap: 12px;
        margin-bottom: 12px;
      }

      .auth-login-section-title {
        margin: 0;
        color: #0f172a;
        font-size: 14px;
        font-weight: 900;
      }

      .auth-login-section-desc {
        margin: 4px 0 0;
        color: #64748b;
        font-size: 12px;
        line-height: 1.6;
      }

      .auth-social-grid {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 10px;
      }

      .auth-social-btn {
        min-height: 42px;
        border-radius: 14px;
        border: 1px solid #cbd5e1;
        background: #ffffff;
        color: #0f172a;
        font-size: 13px;
        font-weight: 900;
        cursor: pointer;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        gap: 8px;
        transition: border-color 0.18s, background 0.18s, transform 0.18s, box-shadow 0.18s;
      }

      .auth-social-btn:hover {
        border-color: #93c5fd;
        background: #f8fbff;
        transform: translateY(-1px);
        box-shadow: 0 12px 24px rgba(37, 99, 235, 0.10);
      }

      .auth-social-mark {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        width: 22px;
        height: 22px;
        border-radius: 50%;
        background: #0f172a;
        color: #ffffff;
        font-size: 11px;
        font-weight: 900;
      }

      .auth-separator {
        display: flex;
        align-items: center;
        gap: 12px;
        margin: 0;
        color: #94a3b8;
        font-size: 12px;
        font-weight: 800;
        text-transform: uppercase;
        letter-spacing: 0.08em;
      }

      .auth-separator::before,
      .auth-separator::after {
        content: "";
        flex: 1;
        height: 1px;
        background: #e2e8f0;
      }

      .auth-agreement-stack {
        display: grid;
        gap: 8px;
        margin-top: 0;
        padding: 14px 16px;
        border-radius: 16px;
        background: #fff;
        border: 1px solid #e2e8f0;
      }

      .auth-terms-link {
        border: 0;
        background: transparent;
        color: #1d4ed8;
        padding: 0;
        font: inherit;
        font-weight: 800;
        cursor: pointer;
      }

      .terms-body {
        display: grid;
        gap: 14px;
        color: #475569;
        font-size: 13px;
        line-height: 1.75;
      }

      .terms-section {
        padding: 14px 16px;
        border-radius: 16px;
        background: #f8fafc;
        border: 1px solid #e2e8f0;
      }

      .terms-section h3 {
        margin: 0 0 7px;
        color: #0f172a;
        font-size: 14px;
      }

      .terms-section p {
        margin: 0;
      }

      .home-inline-note {
        padding: 14px 16px;
        border-radius: 14px;
        background: #f8fafc;
        border: 1px solid #e2e8f0;
        color: #475569;
        font-size: 13px;
        line-height: 1.7;
      }

      .home-inline-badge {
        display: inline-flex;
        align-items: center;
        min-height: 32px;
        padding: 0 12px;
        border-radius: 999px;
        background: #eff6ff;
        color: #1e40af;
        font-size: 12px;
        font-weight: 700;
      }

      .home-rule-grid {
        display: grid;
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 12px;
      }

      .home-rule-item {
        display: flex;
        flex-direction: column;
        gap: 8px;
        padding: 16px;
        border-radius: 16px;
        background: #f8fafc;
        border: 1px solid #e2e8f0;
      }

      .home-rule-item strong {
        font-size: 14px;
        color: #0f172a;
      }

      .home-rule-item span {
        font-size: 13px;
        line-height: 1.7;
        color: #475569;
      }

      .auth-action-row {
        display: flex;
        gap: 12px;
        flex-wrap: wrap;
        margin-top: 8px;
      }

      .auth-code-row {
        display: flex;
        gap: 10px;
        align-items: center;
      }

      .auth-token-row {
        display: flex;
        gap: 10px;
        align-items: center;
      }

      .auth-code-row .auth-form-input {
        flex: 1;
        margin: 0;
      }

      .auth-token-row .auth-form-input {
        flex: 1;
        margin: 0;
      }

      .auth-inline-btn {
        flex: 0 0 auto;
        min-width: 74px;
        padding-left: 14px;
        padding-right: 14px;
      }

      .auth-delivery-hint {
        margin-top: 14px;
        padding: 12px 14px;
        border-radius: 14px;
        background: #f8fafc;
        border: 1px solid #dbe4ee;
        color: #475569;
        font-size: 13px;
        line-height: 1.6;
      }

      .auth-code-text-input {
        letter-spacing: 1px;
        font-family: 'SF Mono', 'Fira Code', 'Monaco', monospace;
      }

      .auth-session-banner {
        display: flex;
        align-items: center;
        gap: 12px;
        padding: 12px 16px;
        border-radius: 12px;
        background: #eff6ff;
        border: 1px solid #bfdbfe;
        margin-bottom: 14px;
      }

      .auth-session-subtext {
        font-size: 12px;
        color: #475569;
        margin-top: 2px;
      }

      .auth-inline-value {
        display: inline-flex;
        align-items: center;
        gap: 10px;
        flex-wrap: wrap;
      }

      .auth-inline-muted {
        color: #64748b;
        font-size: 13px;
      }

      .auth-authorized-banner {
        display: flex;
        align-items: center;
        gap: 10px;
        padding: 12px 16px;
        background: #f0fdf4;
        border: 1px solid #bbf7d0;
        border-radius: 10px;
        margin-bottom: 16px;
      }

      .auth-authorized-icon { font-size: 18px; }

      .auth-authorized-text {
        font-size: 14px;
        font-weight: 600;
        color: #15803d;
      }

      .auth-authorized-text.neutral {
        color: #1d4ed8;
      }

      .auth-config-actions {
        display: flex;
        flex-direction: column;
        gap: 10px;
      }

      .auth-config-row {
        display: flex;
        align-items: center;
        gap: 12px;
        flex-wrap: wrap;
      }

      .auth-config-label {
        font-size: 13px;
        font-weight: 600;
        color: #6b7280;
        white-space: nowrap;
      }

      .auth-config-btns {
        display: flex;
        gap: 8px;
        flex-wrap: wrap;
      }

      .auth-inline-link {
        text-decoration: none;
      }

      .auth-config-hint {
        margin: 0;
        font-size: 12.5px;
        color: #9ca3af;
        line-height: 1.5;
      }

      .auth-card-section {
        margin-bottom: 16px;
      }

      .auth-status-strip {
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 10px;
        padding: 12px 14px;
        border-radius: 12px;
        background: #f8fafc;
        border: 1px solid #e2e8f0;
        margin-bottom: 14px;
        flex-wrap: wrap;
      }

      .status-pill {
        display: inline-flex;
        align-items: center;
        min-height: 28px;
        padding: 0 10px;
        border-radius: 999px;
        font-size: 12px;
        font-weight: 700;
        color: #0f172a;
        background: #e2e8f0;
      }

      .status-pill.active {
        color: #166534;
        background: #dcfce7;
      }

      .status-pill.pending {
        color: #92400e;
        background: #fef3c7;
      }

      .status-pill.banned,
      .status-pill.disabled,
      .status-pill.expired {
        color: #991b1b;
        background: #fee2e2;
      }

      .auth-reason-box {
        margin: 14px 0;
        padding: 14px 16px;
        border-radius: 12px;
        border: 1px solid #fecaca;
        background: #fff7ed;
      }

      .auth-reason-title {
        font-size: 13px;
        font-weight: 700;
        color: #9a3412;
        margin-bottom: 6px;
      }

      .auth-reason-text {
        font-size: 13px;
        color: #7c2d12;
        line-height: 1.6;
      }

      .auth-reason-hint {
        margin-top: 8px;
        font-size: 12px;
        color: #9a3412;
      }

      .policy-list {
        margin: 14px 0 0;
        padding-left: 18px;
        color: #475569;
        font-size: 13px;
        line-height: 1.7;
      }

      .policy-list-flush {
        margin-top: 0;
      }

      .policy-list li + li {
        margin-top: 4px;
      }

      .auth-checkbox-line {
        display: flex;
        gap: 10px;
        align-items: flex-start;
        font-size: 13px;
        color: #475569;
        line-height: 1.6;
      }

      @media (max-width: 900px) {
        .personal-metrics-grid {
          grid-template-columns: repeat(2, minmax(0, 1fr));
        }
        .personal-hero-actions {
          justify-content: flex-start;
        }
      }

      @media (max-width: 640px) {
        .personal-metrics-grid,
        .billing-row,
        .account-profile-editor {
          grid-template-columns: 1fr;
        }
        .billing-row-amount {
          text-align: left;
        }
      }

      .auth-checkbox-line input {
        margin-top: 3px;
      }

      @media (max-width: 900px) {
        .home-hero-card,
        .home-entry-card,
        .home-workbench-grid,
        .home-hero-proof,
        .preview-tape,
        .home-public-info-grid,
        .account-profile-editor,
        .account-dashboard-grid,
        .account-ops-stack,
        .entitlement-board,
        .entitlement-metrics,
        .usage-board,
        .usage-totals,
        .data-service-hero,
        .data-service-grid,
        .value-product-grid,
        .value-demo-layout,
        .value-plan-strip,
        .value-commitment-grid,
        .value-frequency-grid,
        .value-pay-mode-grid,
        .board-service-showcase,
        .review-flow-card,
        .market-review-guide,
        .home-grid,
        .home-stat-grid,
        .home-process-band,
        .home-login-mode-grid,
        .home-inline-grid,
        .market-overview-interaction-guide,
        .market-overview-guide-points,
        .account-summary-grid {
          grid-template-columns: 1fr;
        }
        .home-hero-card {
          padding: 20px;
        }
        .home-entry-card {
          padding: 20px;
        }
        .data-service-section {
          padding: 18px 14px 28px;
        }
        .home-rule-grid {
          grid-template-columns: 1fr;
        }
        .auth-code-row {
          flex-direction: column;
          align-items: stretch;
        }
        .auth-social-grid {
          grid-template-columns: 1fr;
        }
        .auth-token-row {
          flex-direction: column;
          align-items: stretch;
        }
        .market-review-head {
          grid-template-columns: 1fr;
          align-items: stretch;
        }
        .market-review-mode-switch {
          width: fit-content;
        }
      }

      @media (max-width: 640px) {
        #homeSection {
          padding: 18px 14px 28px;
        }
        .home-card-body,
        .home-card-header {
          padding-left: 18px;
          padding-right: 18px;
        }
        .home-hero-title {
          font-size: 30px;
        }
        .market-review-mode-switch,
        .task-subtabs {
          width: 100%;
        }
        .market-mode-btn,
        .task-subtab {
          flex: 1 1 auto;
        }
        .demo-frame-card {
          min-height: 480px;
        }
        .demo-frame {
          min-height: 440px;
        }
      }

      /* realtimeSection 卡片包装 */
      #realtimeSection {
        background: #f5f7fa;
      }
      #choiceConceptSection {
        background: #f5f7fa;
      }
      #industrySectorSection {
        background: #f5f7fa;
      }
      #stockQuoteSection {
        background: #f5f7fa;
      }

      .realtime-section-card {
        margin: 20px;
        background: #ffffff;
        border: 1px solid #e5e7eb;
        border-radius: 14px;
        overflow: hidden;
        box-shadow: 0 1px 4px rgba(0,0,0,0.06);
        display: flex;
        flex-direction: column;
        height: calc(100% - 40px);
      }

      /* ========== 各 Tab Section 通用布局 ========== */
      #realtimeSection,
      #choiceConceptSection,
      #industrySectorSection,
      #compareSection,
      #futureSection {
        background: #f5f7fa;
        overflow: visible;
      }

      /* realtimeSection 内的卡片：包含标题栏 + 工具栏 + 表格 */
      #realtimeSection,
      #choiceConceptSection,
      #industrySectorSection,
      #stockQuoteSection {
        display: flex;
        flex-direction: column;
        overflow: hidden;
      }

      #realtimeSection .realtime-card,
      #choiceConceptSection .realtime-card,
      #industrySectorSection .realtime-card,
      #stockQuoteSection .realtime-card {
        flex: 1;
        background: #ffffff;
        border: 1px solid #e5e7eb;
        border-radius: 10px;
        overflow: hidden;
        box-shadow: 0 1px 4px rgba(0,0,0,0.06);
        display: flex;
        flex-direction: column;
        min-height: 0;
      }

      #realtimeSection .realtime-card-header,
      #choiceConceptSection .realtime-card-header,
      #industrySectorSection .realtime-card-header,
      #stockQuoteSection .realtime-card-header {
        display: grid;
        grid-template-columns: max-content minmax(0, 1fr) max-content;
        align-items: center;
        padding: 12px 18px;
        border-bottom: 1px solid #e5e7eb;
        background: #f8fafc;
        flex-shrink: 0;
        gap: 12px;
      }

      #realtimeSection .realtime-card-header h2,
      #choiceConceptSection .realtime-card-header h2,
      #industrySectorSection .realtime-card-header h2,
      #stockQuoteSection .realtime-card-header h2,
      #stockQuoteSection .stock-quote-title-row h2 {
        margin: 0;
        font-size: 15px;
        font-weight: 700;
        color: #111827;
      }

      /* 实时看板：加载/错误提示 */
      #loading,
      #choiceConceptLoading,
      #industrySectorLoading,
      #stockQuoteLoading {
        padding: 12px 18px;
        color: #64748b;
        font-size: 12.5px;
        font-weight: 650;
      }
      #error,
      #choiceConceptError,
      #industrySectorError,
      #stockQuoteError {
        padding: 10px 16px;
        color: #dc2626;
        font-size: 12.5px;
      }

      .realtime-no-data {
        text-align: center;
        padding: 56px 20px;
        color: #9ca3af;
        font-size: 16px;
        font-weight: 600;
        min-height: 180px;
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
      }
      .realtime-no-data .no-data-icon {
        font-size: 40px;
        margin-bottom: 12px;
        display: block;
      }
      .realtime-no-data-title {
        color: #475569;
        font-size: 17px;
        font-weight: 700;
      }
      .realtime-no-data-sub {
        margin-top: 8px;
        color: #94a3b8;
        font-size: 13px;
        font-weight: 500;
        line-height: 1.7;
      }
      #realtimeSection[data-sync-loading="1"] .realtime-card,
      #choiceConceptSection[data-sync-loading="1"] .realtime-card,
      #industrySectorSection[data-sync-loading="1"] .realtime-card,
      #stockQuoteSection[data-sync-loading="1"] .realtime-card {
        position: relative;
      }
      #realtimeSection[data-sync-loading="1"] .realtime-card::after,
      #choiceConceptSection[data-sync-loading="1"] .realtime-card::after,
      #industrySectorSection[data-sync-loading="1"] .realtime-card::after,
      #stockQuoteSection[data-sync-loading="1"] .realtime-card::after {
        content: "";
        position: absolute;
        left: 0;
        right: 0;
        top: 0;
        height: 3px;
        background: linear-gradient(90deg, rgba(37,99,235,0.12) 0%, rgba(37,99,235,0.88) 36%, rgba(14,165,233,0.82) 68%, rgba(37,99,235,0.12) 100%);
        background-size: 200% 100%;
        animation: stockQuoteLoadingBar 1.2s linear infinite;
        pointer-events: none;
      }
      .stock-quote-sync-loading {
        display: flex;
        align-items: center;
        gap: 14px;
        padding: 16px 18px;
        border: 1px solid #dbeafe;
        border-radius: 16px;
        background:
          radial-gradient(circle at top right, rgba(125, 211, 252, 0.18), transparent 34%),
          linear-gradient(135deg, #f8fbff 0%, #eef6ff 55%, #f8fafc 100%);
        box-shadow: 0 14px 30px rgba(37, 99, 235, 0.08);
        overflow: hidden;
        position: relative;
      }
      .stock-quote-sync-loading::before {
        content: "";
        position: absolute;
        inset: 0;
        background: linear-gradient(110deg, rgba(255,255,255,0) 20%, rgba(255,255,255,0.6) 42%, rgba(255,255,255,0) 64%);
        transform: translateX(-100%);
        animation: stockQuoteLoadingShimmer 1.6s ease-in-out infinite;
        pointer-events: none;
      }
      .stock-quote-sync-loading--panel {
        margin: 12px 16px 16px;
      }
      .stock-quote-sync-loading--subpanel {
        margin: 14px;
        min-height: 148px;
      }
      .stock-quote-sync-loading--compact {
        margin: 0;
        padding: 12px 14px;
        border-radius: 14px;
        box-shadow: 0 10px 24px rgba(37, 99, 235, 0.07);
      }
      .stock-quote-sync-loading-spinner {
        width: 32px;
        height: 32px;
        flex: 0 0 32px;
        border-radius: 999px;
        border: 3px solid rgba(37, 99, 235, 0.16);
        border-top-color: #2563eb;
        border-right-color: #0ea5e9;
        animation: stockQuoteSpinner 0.9s linear infinite;
        box-shadow: 0 0 0 5px rgba(37, 99, 235, 0.07);
      }
      .stock-quote-sync-loading-main {
        min-width: 0;
        flex: 1 1 auto;
      }
      .stock-quote-sync-loading-title {
        color: #0f172a;
        font-size: 15px;
        font-weight: 800;
        letter-spacing: 0.01em;
      }
      .stock-quote-sync-loading-sub {
        margin-top: 5px;
        color: #64748b;
        font-size: 12px;
        line-height: 1.6;
      }
      .stock-quote-sync-loading-bars {
        margin-top: 10px;
        display: flex;
        gap: 8px;
      }
      .stock-quote-sync-loading-bar {
        display: block;
        height: 8px;
        border-radius: 999px;
        background: linear-gradient(90deg, rgba(191, 219, 254, 0.55), rgba(125, 211, 252, 0.95), rgba(191, 219, 254, 0.55));
        background-size: 200% 100%;
        animation: stockQuoteLoadingBar 1.5s ease-in-out infinite;
      }
      .stock-quote-sync-loading-bar:nth-child(1) { width: 30%; }
      .stock-quote-sync-loading-bar:nth-child(2) { width: 48%; animation-delay: 0.12s; }
      .stock-quote-sync-loading-bar:nth-child(3) { width: 22%; animation-delay: 0.24s; }
      @keyframes stockQuoteSpinner {
        to { transform: rotate(360deg); }
      }
      @keyframes stockQuoteLoadingBar {
        0% { background-position: 200% 0; }
        100% { background-position: -20% 0; }
      }
      @keyframes stockQuoteLoadingShimmer {
        0% { transform: translateX(-100%); }
        100% { transform: translateX(100%); }
      }

      .snapshot-controls {
        display: grid;
        grid-template-columns: max-content minmax(0, 1fr);
        grid-template-areas:
          "label times"
          "latest times";
        align-items: center;
        column-gap: 8px;
        row-gap: 4px;
        justify-self: center;
        min-width: 0;
        max-width: 100%;
      }

      .snapshot-label {
        grid-area: label;
        font-size: 13px;
        font-weight: 700;
        color: #374151;
        white-space: nowrap;
        align-self: end;
      }

      .snapshot-time-buttons {
        grid-area: times;
        display: flex;
        flex-direction: column;
        gap: 3px;
        align-items: center;
        min-width: 0;
        width: 100%;
      }

      .snapshot-time-row {
        display: flex;
        gap: 3px;
        justify-content: center;
        flex-wrap: wrap;
        min-width: 0;
        width: 100%;
      }

      .snapshot-latest-area {
        grid-area: latest;
        display: flex;
        flex-direction: row;
        align-items: center;
        gap: 4px;
        flex-shrink: 0;
        justify-self: center;
      }

      .realtime-actions {
        display: flex;
        align-items: center;
        justify-content: flex-end;
        gap: 10px;
        flex-shrink: 0;
      }

      .snapshot-time-btn {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        flex: 0 0 auto;
        width: auto;
        min-width: 0;
        padding: 2px 7px;
        min-height: 22px;
        font-size: 11px;
        line-height: 1.05;
        white-space: nowrap;
        border-radius: 6px;
      }

      .snapshot-latest-btn {
        padding: 2px 8px !important;
        min-height: 22px;
        font-size: 11px !important;
        line-height: 1.05;
        white-space: nowrap;
        border-radius: 6px !important;
      }

      #sectorFundFlowSnapshotControls,
      #industrySectorSnapshotControls,
      #choiceConceptSnapshotControls,
      #stockQuoteSnapshotControls {
        align-items: flex-start;
        gap: 12px;
        max-width: min(100%, 620px);
        margin-inline: auto;
      }

      #sectorFundFlowSnapshotButtons,
      #industrySectorSnapshotButtons,
      #choiceConceptSnapshotButtons,
      #stockQuoteSnapshotButtons {
        align-items: center;
        gap: 6px;
        min-width: 0;
      }

      #sectorFundFlowSnapshotButtons .snapshot-time-row,
      #industrySectorSnapshotButtons .snapshot-time-row,
      #choiceConceptSnapshotButtons .snapshot-time-row,
      #stockQuoteSnapshotButtons .snapshot-time-row {
        display: flex;
        flex-wrap: wrap;
        gap: 4px;
        width: 100%;
      }

      #sectorFundFlowSnapshotButtons .snapshot-time-btn,
      #industrySectorSnapshotButtons .snapshot-time-btn,
      #choiceConceptSnapshotButtons .snapshot-time-btn,
      #stockQuoteSnapshotButtons .snapshot-time-btn {
        width: auto;
      }

      #sectorFundFlowSnapshotControls .snapshot-latest-area,
      #industrySectorSnapshotControls .snapshot-latest-area,
      #choiceConceptSnapshotControls .snapshot-latest-area,
      #stockQuoteSnapshotControls .snapshot-latest-area {
        align-items: flex-start;
      }

      .snapshot-time-btn.active {
        background: #2563eb;
        color: #fff;
        border-color: #2563eb;
      }

      .snapshot-latest-btn.active {
        background: #2563eb;
        color: #fff;
        border-color: #2563eb;
      }

      .snapshot-time-btn:disabled {
        opacity: 0.45;
        cursor: not-allowed;
        transform: none;
      }

      .snapshot-latest-btn:disabled {
        opacity: 0.45;
        cursor: not-allowed;
        transform: none;
      }

      .snapshot-loading {
        font-size: 12px;
        color: #64748b;
        white-space: nowrap;
      }

      @media (max-width: 1400px) {
        #sectorFundFlowSnapshotButtons .snapshot-time-row,
        #industrySectorSnapshotButtons .snapshot-time-row,
        #choiceConceptSnapshotButtons .snapshot-time-row,
        #stockQuoteSnapshotButtons .snapshot-time-row {
          gap: 4px;
        }
      }

      @media (max-width: 980px) {
        #sectorFundFlowSnapshotControls,
        #industrySectorSnapshotControls,
        #choiceConceptSnapshotControls,
        #stockQuoteSnapshotControls {
          gap: 10px;
        }

        #sectorFundFlowSnapshotButtons .snapshot-time-row,
        #industrySectorSnapshotButtons .snapshot-time-row,
        #choiceConceptSnapshotButtons .snapshot-time-row,
        #stockQuoteSnapshotButtons .snapshot-time-row {
          gap: 4px;
        }

        #sectorFundFlowSnapshotControls .snapshot-latest-area,
        #industrySectorSnapshotControls .snapshot-latest-area,
        #choiceConceptSnapshotControls .snapshot-latest-area,
        #stockQuoteSnapshotControls .snapshot-latest-area {
          align-items: flex-start;
        }
      }

      #realtimeSection .data-table-container {
        flex: 1;
        min-height: 0;
        overflow: auto;
      }

      #choiceConceptSection .data-table-container {
        flex: 1;
        min-height: 0;
        overflow: auto;
      }

      #industrySectorSection .data-table-container {
        flex: 1;
        min-height: 0;
        overflow: auto;
      }

      #industrySectorTable {
        min-width: 1120px;
      }

      #choiceConceptTable {
        min-width: 1160px;
      }

      #industrySectorTable th,
      #industrySectorTable td,
      #choiceConceptTable th,
      #choiceConceptTable td {
        padding: 6px 8px;
        line-height: 1.2;
      }

      #industrySectorTable th[data-industry-sort],
      #choiceConceptTable th[data-choice-concept-sort] {
        position: relative;
        padding-right: 18px;
        cursor: pointer;
        user-select: none;
        transition: background-color 0.16s ease, color 0.16s ease;
      }

      #industrySectorTable th[data-industry-sort]::after,
      #choiceConceptTable th[data-choice-concept-sort]::after {
        content: "↕";
        position: absolute;
        right: 6px;
        top: 50%;
        transform: translateY(-50%);
        color: #94a3b8;
        font-size: 10px;
        font-weight: 800;
      }

      #industrySectorTable th[data-industry-sort]:hover {
        background: #e8eef7;
        color: #0f172a;
      }

      #choiceConceptTable th[data-choice-concept-sort]:hover {
        background: #e8eef7;
        color: #0f172a;
      }

      #industrySectorTable th[data-industry-sort].industry-sort-active {
        background: #dbe7f6;
        color: #0f172a;
      }

      #choiceConceptTable th[data-choice-concept-sort].choice-concept-sort-active {
        background: #dbe7f6;
        color: #0f172a;
      }

      #industrySectorTable th[data-industry-sort].industry-sort-active[data-sort-dir="desc"]::after {
        content: "↓";
        color: #334155;
      }

      #choiceConceptTable th[data-choice-concept-sort].choice-concept-sort-active[data-sort-dir="desc"]::after {
        content: "↓";
        color: #334155;
      }

      #industrySectorTable th[data-industry-sort].industry-sort-active[data-sort-dir="asc"]::after {
        content: "↑";
        color: #334155;
      }

      #choiceConceptTable th[data-choice-concept-sort].choice-concept-sort-active[data-sort-dir="asc"]::after {
        content: "↑";
        color: #334155;
      }

      #industrySectorTable td.industry-name-cell,
      #choiceConceptTable td.choice-concept-name-cell {
        text-align: left;
        min-width: 108px;
        font-weight: 800;
        color: #0f172a;
      }

      #industrySectorTable .industry-cell-main,
      #choiceConceptTable .industry-cell-main {
        display: block;
        font-weight: 800;
        color: inherit;
        line-height: 1.15;
      }

      #industrySectorTable .industry-cell-sub,
      #choiceConceptTable .industry-cell-sub {
        display: block;
        margin-top: 2px;
        color: #64748b;
        font-size: 10.5px;
        font-weight: 650;
        line-height: 1.15;
      }

      #industrySectorTable .industry-cell-sub.positive,
      #choiceConceptTable .industry-cell-sub.positive,
      #industrySectorTable .industry-updown-diff.positive {
        color: #dc2626;
      }

      #industrySectorTable .industry-cell-sub.negative,
      #choiceConceptTable .industry-cell-sub.negative,
      #industrySectorTable .industry-updown-diff.negative {
        color: #16a34a;
      }

      #industrySectorTable .industry-updown-diff {
        display: block;
        margin-top: 2px;
        color: #64748b;
        font-size: 10.5px;
        font-weight: 750;
        line-height: 1.15;
      }

      #industrySectorTable .leader-stock {
        color: #1d4ed8;
        font-weight: 800;
      }

      #industrySectorTable .leader-stock-sub {
        display: block;
        margin-top: 2px;
        color: #64748b;
        font-size: 10.5px;
        font-weight: 650;
        line-height: 1.15;
      }

      #industrySectorTable td.positive .industry-cell-main,
      #industrySectorTable td.positive,
      #choiceConceptTable td.positive .industry-cell-main,
      #choiceConceptTable td.positive {
        color: #dc2626;
      }

      #industrySectorTable td.negative .industry-cell-main,
      #industrySectorTable td.negative,
      #choiceConceptTable td.negative .industry-cell-main,
      #choiceConceptTable td.negative {
        color: #16a34a;
      }

      #industrySectorMeta,
      #choiceConceptMeta {
        color: #64748b;
        font-size: 12px;
        font-weight: 700;
      }

      /* ═══════════════════════════════════════════════════════════
         历史对比看板 — 全新设计系统 (Dark Financial Theme)
         ═══════════════════════════════════════════════════════════ */

      /* CSS 变量 */
      

      /* compareSection/futureSection: use default light theme */

      /* 子块标题栏 */
      #compareSection .compare-block-header,
      #futureSection .compare-block-header {
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 12px;
        padding: 16px 20px 14px;
        border-bottom: 1px solid var(--cs-border);
        background: var(--cs-surface-2);
      }

      /* compare-subtitle 统一 */
      .compare-subtitle {
        margin: 0 0 0 0;
        font-size: 13px;
        font-weight: 700;
        color: var(--cs-text-primary);
        letter-spacing: 0.1px;
        display: flex;
        align-items: center;
        gap: 6px;
      }

      /* ── 工具栏 ── */
      .compare-toolbar {
        display: flex;
        flex-wrap: wrap;
        align-items: center;
        gap: 10px;
        margin-bottom: 16px;
        padding: 12px 16px;
        background: var(--cs-surface-2);
        border-radius: var(--cs-radius);
        border: 1px solid var(--cs-border);
      }
      .compare-toolbar label {
        font-weight: 600;
        color: var(--cs-text-secondary);
        font-size: 13px;
        white-space: nowrap;
      }
      .compare-toolbar select {
        padding: 7px 28px 7px 10px;
        border-radius: var(--cs-radius-sm);
        border: 1px solid var(--cs-border-md);
        font-size: 13px;
        background: var(--cs-surface-3);
        color: var(--cs-text-primary);
        min-width: 100px;
        outline: none;
        cursor: pointer;
        transition: border-color var(--cs-transition), box-shadow var(--cs-transition);
        appearance: none;
        -webkit-appearance: none;
        background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%238896b0' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
        background-repeat: no-repeat;
        background-position: right 10px center;
      }
      .compare-toolbar select:focus {
        border-color: var(--cs-accent);
        box-shadow: 0 0 0 3px var(--cs-accent-glow);
      }
      .compare-toolbar select option {
        background: var(--cs-surface-3, #fff);
        color: var(--cs-text-primary, #1f2937);
      }
      .compare-toolbar input[type="text"] {
        padding: 7px 10px;
        border-radius: var(--cs-radius-sm);
        border: 1px solid var(--cs-border-md);
        font-size: 13px;
        background: var(--cs-surface-3);
        color: var(--cs-text-primary);
        min-width: 140px;
        outline: none;
        transition: border-color var(--cs-transition), box-shadow var(--cs-transition);
      }
      .compare-toolbar input[type="text"]:focus {
        border-color: var(--cs-accent);
        box-shadow: 0 0 0 3px var(--cs-accent-glow);
      }
      .compare-toolbar input[type="text"]::placeholder { color: var(--cs-text-muted); }

      /* ── compareSection 内部按钮覆写 ── */
      #compareSection button:not(.days-pill):not(.task-subtab):not(.market-mode-btn):not(.watchlist-cleanup-btn):not(.btn-secondary):not(.btn-mini-danger):not(.remove):not(.edit-group):not(.remove-group):not([class*="stored-"]),
      #futureSection button:not(.days-pill):not(.task-subtab):not(.market-mode-btn):not(.watchlist-cleanup-btn):not(.btn-secondary):not(.btn-mini-danger):not(.remove):not(.edit-group):not(.remove-group) {
        background: linear-gradient(135deg, #1d4ed8 0%, #3b82f6 100%) !important;
        color: #fff !important;
        border: none !important;
        border-radius: var(--cs-radius-sm) !important;
        padding: 8px 16px !important;
        font-size: 13px !important;
        font-weight: 600 !important;
        cursor: pointer !important;
        transition: transform var(--cs-transition), box-shadow var(--cs-transition) !important;
        box-shadow: 0 2px 10px rgba(37,99,235,0.4) !important;
        white-space: nowrap !important;
        letter-spacing: 0.1px !important;
      }
      #compareSection button:not(.days-pill):not(.task-subtab):not(.market-mode-btn):not(.watchlist-cleanup-btn):not(.btn-secondary):not(.btn-mini-danger):not(.remove):not(.edit-group):not(.remove-group):not([class*="stored-"]):hover:not(:disabled),
      #futureSection button:not(.days-pill):not(.task-subtab):not(.market-mode-btn):not(.watchlist-cleanup-btn):not(.btn-secondary):not(.btn-mini-danger):not(.remove):not(.edit-group):not(.remove-group):hover:not(:disabled) {
        transform: translateY(-1px) !important;
        box-shadow: 0 6px 20px rgba(37,99,235,0.5) !important;
      }
      #compareSection button:not(.days-pill):not(.task-subtab):not(.market-mode-btn):not(.watchlist-cleanup-btn):not(.btn-secondary):not(.btn-mini-danger):not(.remove):not(.edit-group):not(.remove-group):not([class*="stored-"]):active:not(:disabled),
      #futureSection button:not(.days-pill):not(.task-subtab):not(.market-mode-btn):not(.watchlist-cleanup-btn):not(.btn-secondary):not(.btn-mini-danger):not(.remove):not(.edit-group):not(.remove-group):active:not(:disabled) {
        transform: translateY(0) !important;
        box-shadow: 0 2px 6px rgba(37,99,235,0.3) !important;
      }

      #compareSection .btn-secondary,
      #futureSection .btn-secondary {
        background: var(--cs-surface-3) !important;
        color: var(--cs-text-secondary) !important;
        border: 1px solid var(--cs-border-md) !important;
        box-shadow: none !important;
        transform: none !important;
      }
      #compareSection .btn-secondary:hover:not(:disabled),
      #futureSection .btn-secondary:hover:not(:disabled) {
        background: var(--cs-surface-2) !important;
        color: var(--cs-text-primary) !important;
        border-color: var(--cs-accent) !important;
      }

      /* ── 卡片网格 ── */
      .compare-grid {
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: 14px;
        margin-top: 4px;
      }
      @media (max-width: 900px) { .compare-grid { grid-template-columns: 1fr; } }

      .compare-card {
        background: var(--cs-surface-2);
        border-radius: var(--cs-radius);
        overflow: hidden;
        border: 1px solid var(--cs-border);
        transition: border-color var(--cs-transition), box-shadow var(--cs-transition);
      }
      .compare-card:hover {
        border-color: var(--cs-border-strong);
        box-shadow: var(--cs-shadow-sm);
      }
      .compare-card.inflow-card > h3 {
        margin: 0;
        padding: 12px 16px;
        font-size: 13px;
        font-weight: 700;
        background: var(--cs-inflow-bg);
        color: var(--cs-inflow);
        border-bottom: 1px solid rgba(244,63,94,0.2);
        letter-spacing: 0.1px;
      }
      .compare-card.outflow-card > h3 {
        margin: 0;
        padding: 12px 16px;
        font-size: 13px;
        font-weight: 700;
        background: var(--cs-outflow-bg);
        color: var(--cs-outflow);
        border-bottom: 1px solid rgba(16,185,129,0.2);
        letter-spacing: 0.1px;
      }

      /* ── 数据表格 ── */
      .compare-table {
        width: 100%;
        border-collapse: collapse;
        font-size: 13px;
      }
      .compare-table th {
        padding: 10px 14px;
        text-align: left;
        font-weight: 600;
        color: var(--cs-text-secondary);
        background: var(--cs-surface-2);
        border-bottom: 1px solid var(--cs-border-md);
        font-size: 12px;
        letter-spacing: 0.3px;
        text-transform: uppercase;
        white-space: nowrap;
      }
      .compare-table td {
        padding: 10px 14px;
        border-bottom: 1px solid var(--cs-border);
        color: var(--cs-text-primary);
        font-size: 13px;
        transition: background var(--cs-transition);
      }
      .compare-table tbody tr:hover td { background: var(--cs-surface-3); }
      .compare-table tbody tr.watchlist-row td {
        font-weight: 500;
        box-shadow: inset 3px 0 0 var(--cs-gold);
        background: var(--cs-gold-bg);
      }
      .compare-table .col-rank {
        width: 46px;
        text-align: center;
        color: var(--cs-text-muted);
        font-weight: 700;
        font-size: 12px;
        font-variant-numeric: tabular-nums;
      }
      .compare-table .col-name { min-width: 100px; font-weight: 600; color: var(--cs-text-primary); }
      .compare-table .cell-inflow { color: var(--cs-inflow) !important; font-weight: 700; }
      .compare-table .cell-outflow { color: var(--cs-outflow) !important; font-weight: 700; }

      /* ── singleDayRankingBlock ── */
      #singleDayRankingBlock {
        margin-top: 0;
        padding: 20px 20px 22px;
        background: var(--cs-surface);
        border-radius: var(--cs-radius-lg);
        border: 1px solid var(--cs-border-md);
        box-shadow: var(--cs-shadow-sm);
      }
      #singleDayRankingBlock .compare-table th,
      #singleDayRankingBlock .compare-table td { text-align: center; vertical-align: middle; }
      #singleDayRankingBlock .compare-table .col-name { text-align: center; }
      #singleDayRankingBlock .compare-table td.col-name.market-watched {
        background: var(--cs-gold-bg) !important;
        box-shadow: inset 2px 0 0 var(--cs-gold);
      }
      #singleDayRankingBlock h3.compare-subtitle {
        margin: 0 0 16px 0;
        font-size: 14px;
        font-weight: 700;
        color: var(--cs-text-primary);
        display: flex;
        align-items: center;
        gap: 8px;
      }

      #stockOpportunityBlock {
        margin-top: 0;
        padding: 22px;
        border: 1px solid #d7e3ee;
        border-radius: 24px;
        background:
          radial-gradient(circle at 12% 10%, rgba(16, 185, 129, 0.10), transparent 26%),
          radial-gradient(circle at 88% 0%, rgba(14, 165, 233, 0.10), transparent 24%),
          linear-gradient(145deg, #fdfefe 0%, #f7fbfa 48%, #eef6f8 100%);
        box-shadow: 0 18px 44px rgba(15, 23, 42, 0.07);
      }
      .stock-opportunity-state {
        padding: 9px 14px;
        border: 1px solid rgba(15, 118, 110, 0.18);
        border-radius: 999px;
        background: rgba(240, 253, 250, 0.92);
        color: #0f766e;
        font-size: 12px;
        font-weight: 800;
        white-space: nowrap;
      }
      .stock-opportunity-state.stock-opportunity-state-inline {
        margin-left: auto;
        flex-shrink: 0;
      }
      .stock-opportunity-coverage {
        min-width: 0;
      }
      .stock-opportunity-coverage.stock-opportunity-coverage-inline {
        flex: 0 1 360px;
      }
      .stock-opportunity-coverage-chip {
        display: grid;
        grid-template-columns: auto auto;
        align-items: center;
        gap: 3px 8px;
        min-width: 0;
        padding: 7px 10px;
        border: 1px solid rgba(148, 163, 184, 0.22);
        border-radius: 14px;
        background: linear-gradient(180deg, rgba(255,255,255,0.96) 0%, rgba(247,250,252,0.96) 100%);
        color: #334155;
        box-shadow: inset 0 1px 0 rgba(255,255,255,0.82);
      }
      .stock-opportunity-coverage-chip b {
        color: #64748b;
        font-size: 10px;
        font-weight: 900;
        letter-spacing: 0.02em;
      }
      .stock-opportunity-coverage-chip strong {
        justify-self: end;
        color: #475569;
        font-size: 11px;
        font-weight: 950;
      }
      .stock-opportunity-coverage-chip span {
        grid-column: 1 / -1;
        min-width: 0;
        color: #64748b;
        font-size: 10px;
        font-weight: 800;
        line-height: 1.35;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
      }
      .stock-opportunity-coverage-chip.complete {
        border-color: rgba(16, 185, 129, 0.24);
        background: linear-gradient(180deg, rgba(236,253,245,0.96) 0%, rgba(248,250,252,0.96) 100%);
      }
      .stock-opportunity-coverage-chip.complete strong {
        color: #047857;
      }
      .stock-opportunity-coverage-chip.missing {
        border-color: rgba(245, 158, 11, 0.28);
        background: linear-gradient(180deg, rgba(255,251,235,0.96) 0%, rgba(255,255,255,0.96) 100%);
      }
      .stock-opportunity-coverage-chip.missing strong {
        color: #b45309;
      }
      .stock-opportunity-coverage-chip.unknown strong {
        color: #64748b;
      }
      .stock-opportunity-guide {
        display: grid;
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 12px;
        margin-bottom: 16px;
      }
      .stock-opportunity-guide span {
        padding: 13px 15px;
        border: 1px solid rgba(148, 163, 184, 0.22);
        border-radius: 16px;
        background: rgba(255, 255, 255, 0.78);
        color: #475569;
        font-size: 12px;
        line-height: 1.68;
        box-shadow: inset 0 1px 0 rgba(255,255,255,0.85);
      }
      .stock-opportunity-guide strong {
        color: #0f172a;
      }
      .stock-opportunity-toolbar {
        display: flex;
        align-items: center;
        flex-wrap: wrap;
        gap: 9px;
        margin-bottom: 16px;
        padding: 13px 14px;
        border: 1px solid rgba(148, 163, 184, 0.2);
        border-radius: 18px;
        background: rgba(255, 255, 255, 0.84);
        box-shadow: inset 0 1px 0 rgba(255,255,255,0.9);
      }
      .stock-opportunity-toolbar label {
        color: #475569;
        font-size: 12px;
        font-weight: 800;
      }
      .stock-opportunity-toolbar select {
        min-height: 34px;
        padding: 6px 10px;
        border: 1px solid #cfd8e3;
        border-radius: 12px;
        background: linear-gradient(180deg, #ffffff 0%, #f8fafc 100%);
        color: #0f172a;
        font-size: 12px;
        font-weight: 700;
      }
      .stock-opportunity-layout {
        display: grid;
        grid-template-columns: minmax(0, 0.78fr) minmax(420px, 0.52fr);
        gap: 16px;
        align-items: stretch;
      }
      .stock-opportunity-main,
      .stock-opportunity-side {
        min-width: 0;
        border: 1px solid rgba(148, 163, 184, 0.2);
        border-radius: 20px;
        background: rgba(255, 255, 255, 0.92);
        overflow: hidden;
        height: min(1060px, calc(100vh - 72px));
        box-sizing: border-box;
      }
      .stock-opportunity-main {
        display: flex;
        flex-direction: column;
      }
      .stock-opportunity-table-wrap {
        flex: 1 1 auto;
        min-height: 0;
        overflow: auto;
      }
      #stockOpportunityTable {
        min-width: 940px;
        table-layout: fixed;
      }
      #stockOpportunityTable th:nth-child(1),
      #stockOpportunityTable td:nth-child(1) {
        width: 58px;
      }
      #stockOpportunityTable th:nth-child(2),
      #stockOpportunityTable td:nth-child(2) {
        width: 138px;
      }
      #stockOpportunityTable th:nth-child(3),
      #stockOpportunityTable td:nth-child(3) {
        width: 108px;
      }
      #stockOpportunityTable th:nth-child(4),
      #stockOpportunityTable td:nth-child(4),
      #stockOpportunityTable th:nth-child(5),
      #stockOpportunityTable td:nth-child(5),
      #stockOpportunityTable th:nth-child(6),
      #stockOpportunityTable td:nth-child(6),
      #stockOpportunityTable th:nth-child(7),
      #stockOpportunityTable td:nth-child(7) {
        width: 146px;
      }
      #stockOpportunityTable th:nth-child(8),
      #stockOpportunityTable td:nth-child(8) {
        width: 168px;
      }
      #stockOpportunityTable th {
        position: sticky;
        top: 0;
        z-index: 2;
        background: linear-gradient(180deg, #d9efeb 0%, #c9e5e1 100%);
        color: #184e47;
        font-size: 12px;
        font-weight: 900;
        text-align: center;
        border-bottom: 1px solid rgba(15, 23, 42, 0.08);
      }
      #stockOpportunityTable td {
        text-align: center;
        vertical-align: middle;
      }
      #stockOpportunityTable tr.is-strategy-hit td {
        background: linear-gradient(180deg, rgba(255,247,237,0.92) 0%, rgba(255,251,235,0.92) 100%);
      }
      #stockOpportunityTable tr.row-flash td {
        animation: stockOpportunityFlash 1.3s ease;
      }
      @keyframes stockOpportunityFlash {
        0%, 100% { box-shadow: none; }
        20% { box-shadow: inset 0 0 0 999px rgba(59, 130, 246, 0.16); }
      }
      .stock-opportunity-name {
        color: #0f4c81;
        font-weight: 900;
        cursor: pointer;
      }
      .stock-opportunity-name:hover {
        color: #0b3b65;
      }
      .stock-opportunity-rank-sub {
        margin-top: 3px;
        color: #7b8ba0;
        font-size: 10px;
        font-weight: 700;
      }
      .stock-opportunity-chip {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        gap: 4px;
        padding: 4px 9px;
        border: 1px solid rgba(245, 158, 11, 0.26);
        border-radius: 999px;
        background: linear-gradient(180deg, #fff8e6 0%, #fff2d9 100%);
        color: #b45309;
        font-size: 11px;
        font-weight: 900;
        margin: 2px 4px 2px 0;
        white-space: nowrap;
      }
      .stock-opportunity-side {
        padding: 18px;
        position: sticky;
        top: 18px;
        background:
          radial-gradient(circle at top right, rgba(180, 148, 92, 0.08), transparent 28%),
          linear-gradient(180deg, rgba(255,255,255,0.97) 0%, rgba(246,250,251,0.99) 100%);
        display: flex;
        flex-direction: column;
        gap: 14px;
      }
      .stock-opportunity-side-summary {
        padding: 15px 16px;
        border: 1px solid rgba(148, 163, 184, 0.18);
        border-radius: 18px;
        background: linear-gradient(180deg, rgba(255,255,255,0.96) 0%, rgba(241,248,247,0.96) 100%);
      }
      .stock-opportunity-side-head {
        display: flex;
        justify-content: space-between;
        align-items: center;
        gap: 10px;
      }
      .stock-opportunity-side-head strong {
        font-size: 16px;
        color: #0f172a;
      }
      .stock-opportunity-side-head span {
        color: #b45309;
        font-size: 12px;
        font-weight: 900;
      }
      .stock-opportunity-side-summary p {
        margin: 10px 0 0;
        color: #5f6f82;
        font-size: 12px;
        line-height: 1.7;
      }
      .stock-opportunity-side-selector {
        margin-top: 12px;
        position: relative;
      }
      .stock-opportunity-strategy-picker-btn {
        width: 100%;
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 10px;
        min-height: 42px;
        padding: 0 14px;
        border: 1px solid rgba(191, 167, 124, 0.24);
        border-radius: 14px;
        background: linear-gradient(180deg, #fffdf8 0%, #f7f3ea 100%);
        color: #1f2937;
        font-size: 12px;
        font-weight: 800;
        cursor: pointer;
        transition: border-color 0.16s ease, box-shadow 0.16s ease, transform 0.16s ease;
        user-select: none;
      }
      .stock-opportunity-strategy-picker-btn:hover {
        transform: translateY(-1px);
        border-color: rgba(146, 116, 72, 0.32);
        box-shadow: 0 10px 20px rgba(15, 23, 42, 0.06);
      }
      .stock-opportunity-strategy-picker-btn b {
        color: #8b5e34;
        font-size: 11px;
        font-weight: 900;
      }
      .stock-opportunity-strategy-picker-menu {
        position: static;
        margin-top: 8px;
        padding: 8px;
        border: 1px solid rgba(191, 167, 124, 0.22);
        border-radius: 16px;
        background: rgba(255,251,243,0.98);
        box-shadow: 0 10px 24px rgba(15, 23, 42, 0.08);
        display: grid;
        gap: 6px;
      }
      .stock-opportunity-strategy-picker-menu[hidden] {
        display: none !important;
      }
      .stock-opportunity-strategy-picker-option {
        display: grid;
        gap: 2px;
        padding: 10px 12px;
        border: 1px solid rgba(191, 167, 124, 0.16);
        border-radius: 12px;
        background: linear-gradient(180deg, rgba(255,255,255,0.98) 0%, rgba(249,245,236,0.98) 100%);
        color: #1f2937;
        cursor: pointer;
        transition: border-color 0.16s ease, box-shadow 0.16s ease, background 0.16s ease;
      }
      .stock-opportunity-strategy-picker-option:hover {
        border-color: rgba(146, 116, 72, 0.24);
        box-shadow: 0 10px 20px rgba(120, 98, 70, 0.08);
      }
      .stock-opportunity-strategy-picker-option.is-active {
        border-color: rgba(146, 116, 72, 0.32);
        background: linear-gradient(180deg, rgba(250,244,231,0.98) 0%, rgba(246,239,226,0.98) 100%);
      }
      .stock-opportunity-strategy-picker-option strong {
        font-size: 12px;
        color: #0f172a;
      }
      .stock-opportunity-strategy-picker-option span {
        font-size: 10px;
        color: #64748b;
        font-weight: 800;
      }
      .stock-opportunity-strategy-board {
        display: grid;
        gap: 12px;
        flex: 1;
        min-height: 0;
        overflow: auto;
        padding-right: 3px;
      }
      .stock-opportunity-strategy-card {
        border: 1px solid rgba(148, 163, 184, 0.18);
        border-radius: 22px;
        background:
          radial-gradient(circle at top right, rgba(16, 185, 129, 0.09), transparent 24%),
          linear-gradient(180deg, #ffffff 0%, #f7fbfb 44%, #edf4f6 100%);
        box-shadow: 0 14px 34px rgba(15, 23, 42, 0.065);
        overflow: hidden;
        display: flex;
        flex-direction: column;
        max-height: 100%;
        min-height: 0;
      }
      .stock-opportunity-strategy-card.is-active {
        border-color: rgba(15, 118, 110, 0.34);
        box-shadow: 0 18px 38px rgba(15, 118, 110, 0.14);
      }
      .stock-opportunity-strategy-card-head {
        padding: 16px 16px 14px;
        display: grid;
        gap: 12px;
        flex: 0 0 auto;
      }
      .stock-opportunity-strategy-card-scroll {
        flex: 1 1 auto;
        min-height: 0;
        overflow-y: auto;
      }
      .stock-opportunity-strategy-overview {
        display: grid;
        gap: 10px;
      }
      .stock-opportunity-strategy-overview-grid {
        display: grid;
        grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.45fr) minmax(0, 0.9fr);
        gap: 8px;
      }
      .stock-opportunity-overview-metric.is-wide {
        grid-column: span 1;
      }
      .stock-opportunity-overview-metric {
        padding: 11px 12px;
        border: 1px solid rgba(148, 163, 184, 0.16);
        border-radius: 16px;
        background: linear-gradient(180deg, rgba(255,255,255,0.98) 0%, rgba(243,248,247,0.98) 100%);
        box-shadow: inset 0 1px 0 rgba(255,255,255,0.82);
      }
      .stock-opportunity-overview-metric b {
        display: block;
        color: #6b7280;
        font-size: 10px;
        font-weight: 900;
        letter-spacing: 0.02em;
        margin-bottom: 5px;
      }
      .stock-opportunity-overview-metric strong {
        display: block;
        color: #0f172a;
        font-size: 17px;
        line-height: 1.1;
        font-weight: 900;
      }
      .stock-opportunity-overview-metric span {
        display: block;
        margin-top: 4px;
        color: #64748b;
        font-size: 10px;
        font-weight: 800;
        line-height: 1.45;
      }
      .stock-opportunity-horizon-grid {
        display: grid;
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 6px;
      }
      .stock-opportunity-horizon-pill {
        padding: 8px 8px;
        border: 1px solid rgba(148, 163, 184, 0.15);
        border-radius: 12px;
        background: linear-gradient(180deg, rgba(255,255,255,0.96) 0%, rgba(245,248,249,0.98) 100%);
      }
      .stock-opportunity-horizon-pill b {
        display: block;
        margin-bottom: 4px;
        color: #334155;
        font-size: 10px;
        font-weight: 900;
      }
      .stock-opportunity-horizon-pill strong {
        display: block;
        color: #0f172a;
        font-size: 13px;
        line-height: 1.2;
      }
      .stock-opportunity-horizon-pill span {
        display: block;
        margin-top: 3px;
        color: #64748b;
        font-size: 9px;
        font-weight: 800;
      }
      .stock-opportunity-strategy-overview-hint {
        padding: 10px 12px;
        border-radius: 15px;
        background: linear-gradient(180deg, rgba(236, 253, 245, 0.96) 0%, rgba(243, 250, 249, 0.98) 100%);
        border: 1px solid rgba(16, 185, 129, 0.16);
        color: #3f5569;
        font-size: 11px;
        line-height: 1.68;
      }
      .stock-opportunity-strategy-overview-hint strong {
        color: #0f172a;
      }
      .stock-opportunity-strategy-card-top {
        display: flex;
        align-items: flex-start;
        justify-content: space-between;
        gap: 12px;
      }
      .stock-opportunity-strategy-card-top strong {
        display: block;
        color: #0f172a;
        font-size: 16px;
        letter-spacing: -0.01em;
      }
      .stock-opportunity-strategy-card-top span {
        display: block;
        margin-top: 4px;
        color: #617487;
        font-size: 11px;
        line-height: 1.62;
      }
      .stock-opportunity-strategy-badge {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        min-width: 60px;
        height: 32px;
        padding: 0 11px;
        border-radius: 999px;
        background: linear-gradient(180deg, #fff3cd 0%, #ffebb8 100%);
        color: #975400;
        font-size: 12px;
        font-weight: 900;
        border: 1px solid rgba(245, 158, 11, 0.24);
        box-shadow: inset 0 1px 0 rgba(255,255,255,0.7);
      }
      .stock-opportunity-strategy-top-actions {
        display: grid;
        justify-items: end;
        gap: 8px;
        min-width: 150px;
      }
      .stock-opportunity-strategy-top-actions .stock-opportunity-coverage-chip {
        width: 100%;
        box-sizing: border-box;
      }
      .stock-opportunity-strategy-activity {
        padding: 0 16px 14px;
      }
      .stock-opportunity-strategy-activity-head {
        display: flex;
        justify-content: space-between;
        align-items: center;
        gap: 8px;
        margin-bottom: 10px;
      }
      .stock-opportunity-strategy-activity-head strong {
        color: #0f172a;
        font-size: 12px;
        font-weight: 900;
      }
      .stock-opportunity-strategy-activity-head span {
        color: #64748b;
        font-size: 10px;
        font-weight: 800;
      }
      .stock-opportunity-strategy-months {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 6px;
        margin-bottom: 8px;
      }
      .stock-opportunity-strategy-month {
        display: grid;
        grid-template-rows: auto auto auto;
        align-content: start;
        gap: 2px;
        padding: 9px 10px;
        border: 1px solid rgba(148, 163, 184, 0.14);
        border-radius: 13px;
        background: linear-gradient(180deg, rgba(255,255,255,0.98) 0%, rgba(245,248,250,0.98) 100%);
        text-align: left;
        cursor: pointer;
        transition: transform 0.16s ease, border-color 0.16s ease, box-shadow 0.16s ease, background 0.16s ease;
        box-shadow: inset 0 1px 0 rgba(255,255,255,0.75);
        user-select: none;
      }
      .stock-opportunity-strategy-month:hover {
        transform: translateY(-1px);
        border-color: rgba(15, 118, 110, 0.22);
        box-shadow: 0 10px 18px rgba(15, 118, 110, 0.08);
      }
      .stock-opportunity-strategy-month.is-active {
        border-color: rgba(15, 118, 110, 0.34);
        background: linear-gradient(180deg, rgba(231,245,241,0.98) 0%, rgba(243,251,248,0.98) 100%);
        box-shadow: 0 10px 22px rgba(15, 118, 110, 0.10);
      }
      .stock-opportunity-strategy-month b {
        color: #0f172a;
        font-size: 11px;
        font-weight: 900;
        line-height: 1.2;
      }
      .stock-opportunity-strategy-month strong {
        display: block;
        color: #0f172a;
        font-size: 15px;
        line-height: 1.05;
        font-weight: 900;
        margin: 0;
      }
      .stock-opportunity-strategy-month small {
        color: #607285;
        font-size: 9px;
        font-weight: 800;
        line-height: 1.3;
        min-height: 0;
        display: block;
      }
      .stock-opportunity-month-horizons {
        display: grid;
        gap: 2px;
        margin-top: 4px;
      }
      .stock-opportunity-month-horizons span {
        display: flex;
        justify-content: space-between;
        gap: 6px;
        color: #64748b;
        font-size: 9px;
        font-weight: 850;
        line-height: 1.25;
      }
      .stock-opportunity-month-horizons em {
        font-style: normal;
        color: #0f172a;
      }
      .stock-opportunity-strategy-days {
        display: grid;
        gap: 8px;
      }
      .stock-opportunity-strategy-days-head {
        display: flex;
        justify-content: space-between;
        align-items: center;
        gap: 8px;
      }
      .stock-opportunity-strategy-days-head strong {
        color: #0f172a;
        font-size: 12px;
        font-weight: 900;
      }
      .stock-opportunity-strategy-days-head span {
        color: #64748b;
        font-size: 10px;
        font-weight: 800;
      }
      .stock-opportunity-strategy-day-list {
        display: flex;
        flex-wrap: wrap;
        gap: 6px;
      }
      .stock-opportunity-strategy-date {
        display: inline-grid;
        grid-template-columns: auto auto;
        align-items: center;
        justify-content: start;
        column-gap: 7px;
        min-width: 92px;
        padding: 8px 11px;
        border: 1px solid rgba(148, 163, 184, 0.16);
        border-radius: 999px;
        background: linear-gradient(180deg, rgba(255,255,255,0.98) 0%, rgba(245,248,250,0.98) 100%);
        color: #37516a;
        cursor: pointer;
        transition: transform 0.16s ease, border-color 0.16s ease, background 0.16s ease, box-shadow 0.16s ease;
        box-shadow: inset 0 1px 0 rgba(255,255,255,0.72);
        user-select: none;
      }
      .stock-opportunity-strategy-date.is-disabled {
        cursor: default;
        opacity: 0.48;
        border-style: dashed;
        color: #8b9aad;
        box-shadow: none;
      }
      .stock-opportunity-strategy-date:hover {
        transform: translateY(-1px);
        border-color: rgba(15, 118, 110, 0.32);
        box-shadow: 0 10px 20px rgba(15, 118, 110, 0.10);
      }
      .stock-opportunity-strategy-date.is-disabled:hover {
        transform: none;
        border-color: rgba(148, 163, 184, 0.16);
        box-shadow: none;
      }
      .stock-opportunity-strategy-date.is-active {
        border-color: rgba(15, 118, 110, 0.36);
        background: linear-gradient(180deg, rgba(230,245,240,0.98) 0%, rgba(241,251,247,0.98) 100%);
        color: #14532d;
        box-shadow: 0 10px 22px rgba(15, 118, 110, 0.10);
      }
      .stock-opportunity-strategy-date b {
        font-size: 11px;
        font-weight: 900;
        line-height: 1;
      }
      .stock-opportunity-strategy-date small {
        font-size: 10px;
        font-weight: 900;
        color: inherit;
        line-height: 1;
        justify-self: end;
      }
      .stock-opportunity-strategy-candidates {
        padding: 0 16px 16px;
        display: grid;
        gap: 8px;
        border-top: 1px solid rgba(148, 163, 184, 0.14);
        background: linear-gradient(180deg, rgba(247,250,252,0.55) 0%, rgba(255,255,255,0.2) 100%);
        padding-top: 14px;
      }
      .stock-opportunity-strategy-candidates-head {
        display: flex;
        justify-content: space-between;
        align-items: center;
        gap: 8px;
      }
      .stock-opportunity-strategy-candidates-head strong {
        color: #0f172a;
        font-size: 12px;
        font-weight: 900;
      }
      .stock-opportunity-strategy-candidates-head span {
        color: #64748b;
        font-size: 10px;
        font-weight: 800;
      }
      .stock-opportunity-strategy-list {
        display: grid;
        gap: 8px;
      }
      .stock-opportunity-strategy-item {
        display: grid;
        gap: 8px;
        width: 100%;
        padding: 13px 14px;
        border: 1px solid rgba(148, 163, 184, 0.16);
        border-radius: 18px;
        text-align: left;
        background: linear-gradient(180deg, rgba(255,255,255,0.96) 0%, rgba(247,250,252,0.98) 100%);
        cursor: pointer;
        transition: transform 0.16s ease, box-shadow 0.16s ease, border-color 0.16s ease;
        position: relative;
        user-select: none;
      }
      .stock-opportunity-strategy-item::before {
        content: "";
        position: absolute;
        left: 0;
        top: 10px;
        bottom: 10px;
        width: 3px;
        border-radius: 999px;
        background: linear-gradient(180deg, #0f766e 0%, #38bdf8 100%);
        opacity: 0.55;
      }
      .stock-opportunity-strategy-item:hover {
        transform: translateY(-1px);
        border-color: rgba(15, 118, 110, 0.26);
        box-shadow: 0 12px 24px rgba(15, 118, 110, 0.10);
      }
      .stock-opportunity-strategy-item.is-focused {
        border-color: rgba(15, 118, 110, 0.32);
        background: linear-gradient(180deg, rgba(239,247,245,0.98) 0%, rgba(247,251,250,0.98) 100%);
        box-shadow: 0 12px 26px rgba(15, 118, 110, 0.10);
      }
      .stock-opportunity-strategy-item strong {
        color: #0f172a;
        font-size: 14px;
        padding-left: 6px;
      }
      .stock-opportunity-strategy-item-head {
        display: flex;
        justify-content: space-between;
        align-items: flex-start;
        gap: 10px;
        padding-left: 6px;
      }
      .stock-opportunity-strategy-item-head strong {
        padding-left: 0;
      }
      .stock-opportunity-strategy-item-title {
        display: grid;
        gap: 2px;
      }
      .stock-opportunity-strategy-item-subline {
        color: #6b7d90;
        font-size: 11px;
        font-weight: 800;
        line-height: 1.35;
      }
      .stock-opportunity-signal-row {
        display: flex;
        flex-wrap: wrap;
        align-items: center;
        gap: 8px;
        padding-left: 6px;
      }
      .stock-opportunity-signal-chip {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        min-height: 24px;
        padding: 0 10px;
        border-radius: 999px;
        background: linear-gradient(180deg, rgba(239,246,255,0.98) 0%, rgba(226,240,253,0.98) 100%);
        border: 1px solid rgba(59, 130, 246, 0.14);
        color: #1d4ed8;
        font-size: 10px;
        font-weight: 900;
        font-family: inherit;
      }
      .stock-opportunity-signal-chip.level {
        background: linear-gradient(180deg, rgba(236,253,245,0.98) 0%, rgba(220,252,231,0.98) 100%);
        border-color: rgba(22, 163, 74, 0.18);
        color: #166534;
      }
      .stock-opportunity-signal-chip.repeat {
        min-height: auto;
        padding: 0 2px;
        border: 0;
        border-radius: 0;
        background: transparent;
        color: #b45309;
        cursor: pointer;
        gap: 4px;
        line-height: 1.5;
        text-decoration: none;
        text-underline-offset: 3px;
        transition: color 0.16s ease, text-decoration-color 0.16s ease;
      }
      .stock-opportunity-signal-chip.repeat:hover {
        color: #92400e;
        text-decoration: underline;
        text-decoration-color: rgba(180, 83, 9, 0.55);
      }
      .stock-opportunity-signal-chip.repeat[aria-expanded="true"] {
        color: #78350f;
        text-decoration: underline;
        text-decoration-color: rgba(120, 53, 15, 0.45);
      }
      .stock-opportunity-signal-chip.repeat::after {
        content: "";
        width: 6px;
        height: 6px;
        border-right: 1.6px solid currentColor;
        border-bottom: 1.6px solid currentColor;
        transform: rotate(45deg) translateY(-1px);
        transition: transform 0.16s ease;
        opacity: 0.86;
      }
      .stock-opportunity-signal-chip.repeat[aria-expanded="true"]::after {
        transform: rotate(225deg) translateY(-1px);
      }
      .stock-opportunity-score-badge {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        min-width: 52px;
        height: 24px;
        padding: 0 8px;
        border-radius: 999px;
        background: linear-gradient(180deg, rgba(255,248,230,0.98) 0%, rgba(255,238,201,0.98) 100%);
        border: 1px solid rgba(245, 158, 11, 0.24);
        color: #9a5800;
        font-size: 10px;
        font-weight: 900;
        white-space: nowrap;
      }
      .stock-opportunity-metrics {
        display: grid;
        grid-template-columns: repeat(4, minmax(0, 1fr));
        gap: 6px;
        padding-left: 6px;
      }
      .stock-opportunity-metric {
        padding: 7px 8px;
        border: 1px solid rgba(148, 163, 184, 0.14);
        border-radius: 12px;
        background: linear-gradient(180deg, rgba(255,255,255,0.94) 0%, rgba(244,247,249,0.98) 100%);
      }
      .stock-opportunity-metric b {
        display: block;
        color: #607285;
        font-size: 9px;
        font-weight: 900;
        letter-spacing: 0.02em;
        text-transform: uppercase;
      }
      .stock-opportunity-metric strong {
        display: block;
        margin-top: 3px;
        color: #0f172a;
        font-size: 11px;
        font-weight: 900;
        padding-left: 0;
      }
      .stock-opportunity-repeat-history {
        display: none;
        flex-basis: calc(100% - 6px);
        margin-left: 6px;
        margin-top: -1px;
        padding: 8px 10px;
        border: 1px solid rgba(217, 119, 6, 0.18);
        border-radius: 12px;
        background: linear-gradient(180deg, rgba(255,251,235,0.82) 0%, rgba(255,255,255,0.96) 100%);
        box-shadow: inset 0 1px 0 rgba(255,255,255,0.7);
        gap: 5px;
      }
      .stock-opportunity-repeat-history.is-open {
        display: grid;
      }
      .stock-opportunity-repeat-history-row {
        display: flex;
        flex-wrap: wrap;
        gap: 8px;
        align-items: center;
        color: #475569;
        font-size: 10px;
        font-weight: 800;
        line-height: 1.35;
      }
      .stock-opportunity-repeat-history-row b,
      .stock-opportunity-repeat-history-row strong,
      .stock-opportunity-repeat-history-row span {
        padding-left: 0 !important;
        font-size: 10px !important;
        line-height: 1.35 !important;
      }
      .stock-opportunity-repeat-history-row b {
        color: #334155;
        font-weight: 900;
      }
      .stock-opportunity-repeat-history-row strong {
        color: #78350f;
        font-weight: 900;
      }
      .stock-opportunity-repeat-history-row span {
        color: #475569 !important;
      }
      .stock-opportunity-metric strong.cell-inflow,
      .stock-opportunity-horizon-pill strong.cell-inflow,
      .stock-opportunity-horizon-pill em.cell-inflow,
      .stock-opportunity-month-horizons em.cell-inflow {
        color: #dc2626 !important;
      }
      .stock-opportunity-metric strong.cell-outflow,
      .stock-opportunity-horizon-pill strong.cell-outflow,
      .stock-opportunity-horizon-pill em.cell-outflow,
      .stock-opportunity-month-horizons em.cell-outflow {
        color: #16a34a !important;
      }
      .stock-opportunity-strategy-item span,
      .stock-opportunity-strategy-item small {
        color: #64748b;
        font-size: 11px;
        line-height: 1.5;
        padding-left: 6px;
      }
      .stock-opportunity-strategy-month:focus-visible,
      .stock-opportunity-strategy-date:focus-visible,
      .stock-opportunity-strategy-item:focus-visible {
        outline: 2px solid rgba(15, 118, 110, 0.34);
        outline-offset: 2px;
      }
      .stock-opportunity-reasons {
        display: flex;
        flex-wrap: wrap;
        gap: 5px;
        padding-left: 6px;
      }
      .stock-opportunity-reasons i {
        padding: 3px 7px;
        border-radius: 999px;
        background: rgba(220, 252, 231, 0.9);
        color: #166534;
        font-style: normal;
        font-size: 10px;
        font-weight: 800;
      }
      .stock-opportunity-empty {
        padding: 18px;
        border: 1px dashed #cbd5e1;
        border-radius: 14px;
        color: #94a3b8;
        text-align: center;
        font-size: 12px;
      }
      @media (max-width: 1580px) {
        .stock-opportunity-layout {
          grid-template-columns: minmax(0, 0.72fr) minmax(380px, 0.58fr);
        }
        .stock-opportunity-strategy-overview-grid {
          grid-template-columns: repeat(2, minmax(0, 1fr));
        }
      }
      @media (max-width: 1180px) {
        .stock-opportunity-layout,
        .stock-opportunity-guide {
          grid-template-columns: 1fr;
        }
        .stock-opportunity-side {
          position: static;
        }
        .stock-opportunity-strategy-months {
          grid-template-columns: repeat(2, minmax(0, 1fr));
        }
        .stock-opportunity-strategy-overview-grid {
          grid-template-columns: repeat(2, minmax(0, 1fr));
        }
        .stock-opportunity-metrics {
          grid-template-columns: repeat(2, minmax(0, 1fr));
        }
      }

      .column-toggle-footer {
        display: flex;
        justify-content: flex-end;
        gap: 8px;
        padding: 14px 22px;
        border-top: 1px solid #e5e7eb;
        background: #ffffff;
        flex-shrink: 0;
      }

      /* ── 实时资金强度颜色 ── */
      .strength-value {
        display: inline-block;
        padding: 1px 5px;
        border-radius: 4px;
        font-size: 11px;
        font-weight: 700;
        margin-right: 4px;
        font-variant-numeric: tabular-nums;
        vertical-align: middle;
        letter-spacing: 0;
      }
      /* S >= 0.6  强势异动 -> 深红 */
      .strength-value.strength-very-strong {
        background: #fee2e2;
        color: #b91c1c;
        border: 1px solid #fca5a5;
      }
      /* 0.2 <= S < 0.6  偏强 -> 浅红 */
      .strength-value.strength-strong {
        background: #fff1f2;
        color: #e11d48;
        border: 1px solid #fecdd3;
      }
      /* -0.2 < S < 0.2  中性 -> 灰 */
      .strength-value.strength-neutral {
        background: #f3f4f6;
        color: #9ca3af;
        border: 1px solid #e5e7eb;
      }
      /* -0.6 < S <= -0.2  偏弱 -> 浅绿 */
      .strength-value.strength-weak {
        background: #f0fdf4;
        color: #16a34a;
        border: 1px solid #bbf7d0;
      }
      /* S <= -0.6  明显偏弱 -> 深绿 */
      .strength-value.strength-very-weak {
        background: #dcfce7;
        color: #15803d;
        border: 1px solid #86efac;
      }
      /* 近期资金强度 good/bad */
      .recent-strength-lines { font-size: 10px; color: #9ca3af; line-height: 1.4; margin-top: 2px; }
      .recent-strength-lines .line { white-space: nowrap; }
      .recent-strength-lines .v { font-weight: 700; }
      .recent-strength-lines .v.good { color: #dc2626; }
      .recent-strength-lines .v.bad  { color: #16a34a; }

      /* ── 布局设置弹窗：两列布局 ── */
      #columnTogglePanel .column-toggle-body {
        display: grid;
        grid-template-columns: 1fr 1fr;
        grid-template-rows: auto auto;
        gap: 14px;
        align-items: start;
      }
      /* 字体大小卡片横跨两列 */
      #columnTogglePanel .font-size-card {
        grid-column: 1 / -1;
      }
      /* 字体大小三档按钮 */
      .table-font-size-btns {
        display: flex;
        gap: 8px;
        align-items: center;
        flex-wrap: wrap;
      }
      .table-font-size-btn {
        padding: 6px 18px;
        border: 1.5px solid #e5e7eb;
        border-radius: 8px;
        background: #ffffff;
        color: #374151;
        font-size: 13px;
        font-weight: 600;
        cursor: pointer;
        transition: all 0.15s;
      }
      .table-font-size-btn:hover {
        border-color: #93c5fd;
        background: #eff6ff;
        color: #1d4ed8;
      }
      .table-font-size-btn.active {
        border-color: #2563eb;
        background: #2563eb;
        color: #ffffff;
        box-shadow: 0 2px 8px rgba(37,99,235,0.25);
      }
      /* 字体大小三档应用到表格 */
      #dataTable.font-sm { font-size: 11px; }
      #dataTable.font-sm td, #dataTable.font-sm th { padding: 5px 4px; }
      #dataTable.font-md { font-size: 12.5px; }
      #dataTable.font-md td, #dataTable.font-md th { padding: 8px 6px; }
      #dataTable.font-lg { font-size: 14.5px; }
      #dataTable.font-lg td, #dataTable.font-lg th { padding: 11px 8px; }

      /* ========== stock-modal 浮动弹窗 ========== */
      .stock-modal {
        position: fixed;
        top: 80px;
        left: 80px;
        width: 680px;
        min-width: 420px;
        min-height: 200px;
        max-width: 96vw;
        max-height: 86vh;
        background: #f1f5f9;
        border: 1px solid #cbd5e1;
        border-radius: 12px;
        box-shadow: 0 8px 32px rgba(0,0,0,0.13), 0 2px 8px rgba(0,0,0,0.07);
        display: flex;
        flex-direction: column;
        overflow: hidden;
        z-index: 7000;
        resize: both;
        transform-origin: bottom right;
      }
      .stock-modal.modal-hidden {
        opacity: 0 !important;
        pointer-events: none;
      }
      .stock-modal.fly-from-btn {
        animation: modalFlyIn 0.38s cubic-bezier(0.34,1.45,0.64,1) forwards;
      }
      @keyframes modalFlyIn {
        0%   { opacity: 0; transform: scale(0.06); }
        55%  { opacity: 1; }
        100% { opacity: 1; transform: scale(1); }
      }
      .stock-modal.minimizing {
        animation: modalMinimize 0.3s cubic-bezier(0.4,0,1,1) forwards;
      }
      @keyframes modalMinimize {
        0%   { opacity: 1; transform: scale(1); }
        100% { opacity: 0; transform: scale(0.05); }
      }
      .stock-modal-focused {
        box-shadow: 0 12px 40px rgba(37,99,235,0.13), 0 4px 16px rgba(0,0,0,0.09);
        border-color: #93c5fd;
      }
      .stock-modal-header {
        display: flex;
        align-items: center;
        gap: 6px;
        padding: 8px 12px 7px;
        background: #e2e8f0;
        border-bottom: 1px solid #cbd5e1;
        cursor: move;
        flex-shrink: 0;
        border-radius: 12px 12px 0 0;
        user-select: none;
      }
      .stock-modal-title {
        flex: 1;
        font-size: 12.5px;
        font-weight: 700;
        color: #1e293b;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
        min-width: 0;
        cursor: text;
        border-radius: 4px;
        padding: 2px 5px;
        transition: background 0.15s;
      }
      .stock-modal-title:hover { background: rgba(0,0,0,0.05); }
      .stock-modal-title-editing {
        background: #dbeafe !important;
        outline: 1.5px solid #3b82f6;
        color: #1d4ed8;
      }
      .stock-modal-close {
        width: 22px; height: 22px; border-radius: 5px; border: none;
        background: transparent; color: #94a3b8; font-size: 15px; cursor: pointer;
        display: flex; align-items: center; justify-content: center;
        transition: background 0.12s, color 0.12s; padding: 0; flex-shrink: 0;
      }
      .stock-modal-close:hover { background: #fee2e2; color: #dc2626; }
      .stock-modal-btn-minimize {
        padding: 2px 9px; border-radius: 5px; border: 1px solid #cbd5e1;
        background: #ffffff; color: #475569; font-size: 11px; font-weight: 600;
        cursor: pointer; white-space: nowrap; transition: all 0.12s; flex-shrink: 0;
      }
      .stock-modal-btn-minimize:hover { background: #dbeafe; border-color: #93c5fd; color: #1d4ed8; }
      .stock-modal-btn-clear {
        padding: 2px 9px; border-radius: 5px; border: 1px solid #fecaca;
        background: #fff5f5; color: #dc2626; font-size: 11px; font-weight: 600;
        cursor: pointer; white-space: nowrap; transition: all 0.12s; flex-shrink: 0;
      }
      .stock-modal-btn-clear:hover { background: #fee2e2; border-color: #f87171; }
      .stock-modal-body {
        flex: 1; overflow: hidden; display: flex; flex-direction: column;
        background: #f8fafc; min-height: 0;
      }
      .stock-modal-body-inner {
        display: flex; flex: 1; min-height: 0; overflow: hidden;
      }
      .stock-modal-stats {
        flex-shrink: 0; width: 210px; min-width: 210px;
        background: #f1f5f9; border-right: 1px solid #e2e8f0;
        display: flex; flex-direction: column; overflow: hidden;
      }
      .stock-modal-stats-title {
        font-size: 10.5px; font-weight: 700; color: #64748b;
        letter-spacing: 0.03em; padding: 7px 10px 5px;
        border-bottom: 1px solid #e2e8f0; white-space: nowrap;
        flex-shrink: 0; background: #e9eef5;
      }
      .stock-modal-stats > .stock-modal-stats-table-scroll {
        flex: 1; overflow-y: auto;
        scrollbar-width: thin; scrollbar-color: #cbd5e1 #f1f5f9;
      }
      .stock-modal-stats-table {
        width: 100%; border-collapse: collapse; font-size: 11.5px;
      }
      .stock-modal-stats-table th {
        padding: 5px 8px; text-align: left; border-bottom: 1px solid #e2e8f0;
        font-weight: 600; color: #64748b; font-size: 10.5px; white-space: nowrap;
        background: #edf2f7;
      }
      .stock-modal-stats-table td {
        padding: 5px 8px; border-bottom: 1px solid #f1f5f9;
        color: #334155; white-space: nowrap;
      }
      .stock-modal-stats-table tbody tr:hover { background: #e8f0fe; }
      .stock-modal-stats-table tbody tr.is-selected td {
        background: #dbeafe; color: #1d4ed8; font-weight: 600;
      }
      .stock-modal-stats-table .col-add { width: 22px; padding: 4px; text-align: center; }
      .stock-modal-stats-table .col-name { text-align: left; }
      .stock-modal-stats-table .col-count { text-align: center; color: #64748b; }
      .stock-modal-stats-table .col-amount { text-align: right; font-variant-numeric: tabular-nums; }
      .stats-stock-name {
        background: none; border: none; padding: 0; cursor: pointer;
        color: #2563eb; font-size: 11.5px; font-weight: 600; text-align: left;
        white-space: nowrap; transition: color 0.1s;
        text-decoration: underline; text-decoration-color: rgba(37,99,235,0.35);
        text-underline-offset: 2px;
      }
      .stats-stock-name:hover { color: #1d4ed8; }
      .stats-add-inline {
        width: 18px; height: 18px; border-radius: 4px; border: 1px solid #cbd5e1;
        background: #ffffff; color: #64748b; font-size: 12px; cursor: pointer;
        display: flex; align-items: center; justify-content: center;
        padding: 0; transition: all 0.1s; line-height: 1;
      }
      .stats-add-inline:hover { background: #f0fdf4; border-color: #86efac; color: #16a34a; }
      .stock-modal-table-wrap {
        flex: 1; min-width: 0; overflow: auto; background: #f8fafc;
        scrollbar-width: thin; scrollbar-color: #cbd5e1 #f1f5f9;
      }
      .stock-modal-table-wrap::-webkit-scrollbar { width: 5px; height: 5px; }
      .stock-modal-table-wrap::-webkit-scrollbar-thumb { background: #cbd5e1; border-radius: 3px; }
      .stock-modal-table {
        border-collapse: collapse; font-size: 11.5px;
        font-variant-numeric: tabular-nums; white-space: nowrap; min-width: 100%;
      }
      .stock-modal-table th, .stock-modal-table td {
        border: 1px solid #e2e8f0; padding: 5px 9px;
        text-align: center; white-space: nowrap; color: #334155;
      }
      .stock-modal-table thead th {
        font-weight: 600; color: #64748b; font-size: 10.5px; background: #edf2f7;
      }
      .stock-modal-table .date-header {
        font-weight: 700; font-size: 11px; color: #1e293b !important;
        padding: 6px 12px; background: #e2e8f0 !important;
      }
      .stock-modal-table .col-rank { width: 28px; color: #94a3b8; padding: 5px 6px; }
      .stock-modal-table .col-name {
        text-align: left; font-weight: 600; color: #1e293b;
        min-width: 56px; cursor: pointer; transition: background 0.1s;
      }
      .stock-modal-table .col-name:hover { color: #2563eb; background: #eff6ff; }
      .stock-modal-table td.stock-cell-highlight {
        background: #dbeafe !important; color: #1d4ed8 !important; font-weight: 700;
      }
      .stock-modal-table th.combined-sectors-header {
        text-align: left; padding-left: 12px; font-size: 11px;
        color: #475569; white-space: nowrap; background: #e9eef5;
      }
      .date-remove, .date-remove-combined {
        border: none; background: transparent; cursor: pointer;
        font-size: 13px; color: #94a3b8; padding: 0 2px;
        line-height: 1; transition: color 0.1s; vertical-align: middle;
      }
      .date-remove:hover, .date-remove-combined:hover { color: #dc2626; }
      .sector-remove-combined {
        border: none; background: transparent; cursor: pointer;
        font-size: 12px; color: #94a3b8; padding: 0 2px;
        line-height: 1; transition: color 0.1s;
      }
      .sector-remove-combined:hover { color: #dc2626; }
      .combined-sector-tag {
        display: inline-flex; align-items: center; gap: 2px;
        background: #eff6ff; border: 1px solid #bfdbfe;
        border-radius: 4px; padding: 1px 5px; font-size: 11px;
        color: #2563eb; white-space: nowrap;
      }
      /* 正值红，负值绿 */
      .cell-inflow { color: #dc2626 !important; font-weight: 600; }
      .cell-outflow { color: #16a34a !important; font-weight: 600; }
      .stock-modal-lock {
        padding: 2px 8px; border-radius: 5px; border: 1px solid #cbd5e1;
        background: #ffffff; color: #475569; font-size: 11px;
        cursor: pointer; transition: all 0.12s; flex-shrink: 0; white-space: nowrap;
      }
      .stock-modal-lock:hover { background: #f1f5f9; }

      .stock-modal-resize-handle {
        position: absolute;
        bottom: 0;
        right: 0;
        width: 16px;
        height: 16px;
        cursor: nwse-resize;
        z-index: 10;
        background: linear-gradient(135deg, transparent 50%, #cbd5e1 50%, #94a3b8 100%);
        border-radius: 0 0 12px 0;
        opacity: 0.6;
        transition: opacity 0.15s;
      }
      .stock-modal-resize-handle:hover { opacity: 1; }
      .stock-modal { overflow: visible; }
      .stock-modal-body { overflow: hidden; }

      
      /* compareSection / futureSection: 可垂直滚动 */
      #compareSection.tab-pane.active,
      #futureSection.tab-pane.active {
        display: block !important;
        overflow-y: auto !important;
        overflow-x: hidden;
        flex: 1;
        padding: 0;
      }

    
      /* ==========================================================
         历史板块/个股数据看板 — 浅色设计系统 (Light Theme)
         与实时资金流看板/首页风格保持一致
         ========================================================== */

      /* 区块容器 */
      #compareSection,
      #futureSection {
        background: #f5f7fa;
        padding: 0;
      }

      /* section header */
      #compareSection .compare-section-header,
      #futureSection .compare-section-header {
        padding: 20px 24px 16px;
        background: #fff;
        border-bottom: 1px solid #e5e7eb;
        position: sticky;
        top: 0;
        z-index: 10;
        display: flex;
        align-items: flex-start;
        justify-content: space-between;
        flex-wrap: wrap;
        gap: 12px;
      }
      #compareSection .compare-section-header h2,
      #futureSection .compare-section-header h2 {
        margin: 0 0 4px;
        font-size: 17px;
        font-weight: 700;
        color: #111827;
      }

      /* compare-block 卡片 */
      #compareSection .compare-block,
      #futureSection .compare-block {
        margin: 16px 20px;
        background: #fff;
        border: 1px solid #e5e7eb;
        border-radius: 14px;
        overflow: hidden;
        box-shadow: 0 1px 4px rgba(0,0,0,0.06);
        transition: box-shadow 0.18s ease;
      }
      #compareSection .compare-block:hover,
      #futureSection .compare-block:hover {
        box-shadow: 0 4px 16px rgba(0,0,0,0.1);
      }

      /* compare-subtitle 标题 */
      .compare-subtitle {
        font-size: 14px;
        font-weight: 700;
        color: #111827;
        display: flex;
        align-items: center;
        gap: 6px;
        margin: 0;
      }

      /* 工具栏 */
      .compare-toolbar {
        display: flex;
        flex-wrap: wrap;
        align-items: center;
        gap: 10px;
        padding: 12px 16px;
        background: #f8fafc;
        border-bottom: 1px solid #f1f5f9;
      }
      .compare-toolbar label {
        font-weight: 600;
        color: #475569;
        font-size: 13px;
        white-space: nowrap;
      }
      .compare-toolbar select {
        padding: 7px 28px 7px 10px;
        border-radius: 8px;
        border: 1px solid #cbd5e1;
        font-size: 13px;
        background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%2394a3b8' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat right 10px center;
        color: #1f2937;
        outline: none;
        appearance: none;
        -webkit-appearance: none;
        cursor: pointer;
        transition: border-color 0.15s, box-shadow 0.15s;
      }
      .compare-toolbar select:focus {
        border-color: #667eea;
        box-shadow: 0 0 0 3px rgba(102,126,234,0.15);
      }
      .compare-toolbar input[type="text"] {
        padding: 7px 10px;
        border-radius: 8px;
        border: 1px solid #cbd5e1;
        font-size: 13px;
        background: #fff;
        color: #1f2937;
        outline: none;
        transition: border-color 0.15s, box-shadow 0.15s;
      }
      .compare-toolbar input[type="text"]:focus {
        border-color: #667eea;
        box-shadow: 0 0 0 3px rgba(102,126,234,0.15);
      }

      /* 卡片网格 */
      .compare-grid {
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: 0;
      }
      @media (max-width: 900px) { .compare-grid { grid-template-columns: 1fr; } }

      .compare-card {
        background: #fff;
        overflow: hidden;
        border-right: 1px solid #f1f5f9;
      }
      .compare-card:last-child { border-right: none; }
      .compare-card.inflow-card > h3 {
        margin: 0;
        padding: 12px 16px;
        font-size: 13px;
        font-weight: 700;
        background: linear-gradient(135deg, #fff1f2 0%, #ffe4e6 100%);
        color: #be123c;
        border-bottom: 1px solid #fecdd3;
      }
      .compare-card.outflow-card > h3 {
        margin: 0;
        padding: 12px 16px;
        font-size: 13px;
        font-weight: 700;
        background: linear-gradient(135deg, #f0fdf4 0%, #dcfce7 100%);
        color: #15803d;
        border-bottom: 1px solid #bbf7d0;
      }

      /* 数据表格 */
      .compare-table {
        width: 100%;
        border-collapse: collapse;
        font-size: 13px;
      }
      .compare-table th {
        padding: 9px 12px;
        text-align: left;
        font-weight: 600;
        color: #64748b;
        background: #f8fafc;
        border-bottom: 1px solid #e5e7eb;
        font-size: 12px;
        white-space: nowrap;
        letter-spacing: 0.2px;
      }
      .compare-table td {
        padding: 9px 12px;
        border-bottom: 1px solid #f1f5f9;
        color: #1f2937;
        font-size: 13px;
      }
      .compare-table tbody tr:hover td { background: #f8fafc; }
      .compare-table tbody tr:nth-child(even) td { background: #fafafa; }
      .compare-table tbody tr:nth-child(even):hover td { background: #f1f5f9; }
      .compare-table tr.watchlist-row td {
        font-weight: 600;
        background: #fffbeb !important;
        box-shadow: inset 3px 0 0 #f59e0b;
      }
      .compare-table .col-rank { width: 46px; text-align: center; color: #94a3b8; font-weight: 700; font-size: 12px; }
      .compare-table .col-name { min-width: 100px; font-weight: 600; color: #111827; }
      .compare-table .cell-inflow { color: #dc2626 !important; font-weight: 700; }
      .compare-table .cell-outflow { color: #16a34a !important; font-weight: 700; }

      /* singleDayRankingBlock */
      #singleDayRankingBlock {
        padding: 0;
        margin-bottom: 8px;
      }
      #singleDayRankingBlock > div:first-child {
        padding: 16px 20px 12px;
        border-bottom: 1px solid #f1f5f9;
      }
      #singleDayRankingBlock .compare-table th,
      #singleDayRankingBlock .compare-table td { text-align: center; vertical-align: middle; }
      #singleDayRankingBlock .compare-table .col-name { text-align: center; }
      #singleDayRankingBlock .compare-table td.col-name.market-watched {
        background: #fffbeb !important;
        box-shadow: inset 2px 0 0 #f59e0b;
      }
      #singleDayRankingBlock h3.compare-subtitle { margin: 0; }
      #singleDayRankingBlock .compare-table th,
      #singleDayRankingBlock .compare-table td {
        padding: 4px 8px;
        font-size: 12px;
      }
      #singleDayRankingBlock .compare-table th {
        font-size: 11px;
      }
      #singleDayRankingBlock .compare-table .col-rank {
        font-size: 11px;
      }

      /* watchlistBlock */
      #watchlistBlock { margin-bottom: 8px; }
      .watchlist-box { padding: 20px; }
      .watchlist-box > h3 { display: none; }
      .watchlist-box > .watchlist-desc { display: none; }

    
      /* 关注名单步骤卡片 light */
      .watchlist-step { margin:0 0 1px; padding:18px 20px 16px; background:#fff; border:none; border-bottom:1px solid #f1f5f9; border-radius:0; transition:background 0.15s; }
      .watchlist-step:last-child { border-bottom:none; }
      .watchlist-step:hover { background:#fafbff; }
      .watchlist-step-title-row { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-bottom:8px; }
      .watchlist-step-title {
        margin: 0;
        display: flex;
        align-items: center;
        gap: 8px;
        font-size: 14px;
        font-weight: 800;
        color: #111827;
        letter-spacing: -0.01em;
      }
      .watchlist-step-title .step-num {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        width: 22px;
        height: 22px;
        border-radius: 7px;
        background: linear-gradient(135deg, #667eea, #4f46e5);
        color: #fff;
        font-size: 11px;
        font-weight: 800;
        flex-shrink: 0;
      }
      .watchlist-step-title .step-num.step-num--2 { background: linear-gradient(135deg,#10b981,#059669); }
      .watchlist-step-title .step-num.step-num--3 { background: linear-gradient(135deg,#f59e0b,#d97706); }
      .watchlist-step-title .step-badge-opt {
        font-size: 10px;
        font-weight: 600;
        padding: 1px 7px;
        border-radius: 999px;
        background: #f1f5f9;
        color: #64748b;
        margin-left: 2px;
      }
      .watchlist-step-desc { margin:4px 0 10px 30px; font-size:12px; color:#6b7280; line-height:1.6; }
      .watchlist-cleanup-btn { padding:5px 12px !important; border-radius:999px !important; border:1px solid #fca5a5 !important; font-size:12px !important; font-weight:600 !important; background:#fff1f2 !important; color:#dc2626 !important; box-shadow:none !important; white-space:nowrap; cursor:pointer; transition:background 0.15s, transform 0.12s !important; }
      .watchlist-cleanup-btn:hover:not(:disabled) { background:#fee2e2 !important; transform:translateY(-1px) !important; }
      .watchlist-add { display:flex; gap:8px; padding:8px 0; flex-wrap:wrap; align-items:center; }
      .watchlist-add label { font-weight:600; color:#475569; font-size:13px; white-space:nowrap; }
      .watchlist-add input[type="text"] { flex:1; min-width:200px; padding:8px 12px; border-radius:8px; border:1px solid #cbd5e1; font-size:13px; background:#fff; color:#1f2937; outline:none; font-family:inherit; transition:border-color 0.15s, box-shadow 0.15s; }
      .watchlist-add input[type="text"]:focus { border-color:#667eea; box-shadow:0 0 0 3px rgba(102,126,234,0.15); }
      .watchlist-add input[type="text"]::placeholder { color:#94a3b8; }
      .watchlist-search-results { margin-top:6px; background:#f8fafc; border-radius:8px; border:1px solid #e2e8f0; max-height:200px; overflow-y:auto; font-size:13px; }
      .watchlist-search-item { display:flex; align-items:center; justify-content:space-between; padding:8px 12px; cursor:pointer; border-bottom:1px solid #f1f5f9; transition:background 0.12s; }
      .watchlist-search-item:last-child { border-bottom:none; }
      .watchlist-search-item:hover { background:#eef2ff; }
      .watchlist-search-item.is-added { background:#f0fdf4; cursor:default; }
      .watchlist-search-item.no-history { cursor:not-allowed; opacity:0.55; }
      .watchlist-search-item .name { font-weight:600; color:#111827; font-size:13px; }
      .watchlist-search-item.no-history .name { color:#9ca3af; text-decoration:line-through; }
      .watchlist-search-item .type-badge { margin-left:6px; padding:2px 6px; border-radius:999px; font-size:10px; font-weight:700; }
      .watchlist-search-item .no-history-badge { display:inline-flex; align-items:center; padding:2px 6px; margin-left:6px; border-radius:6px; font-size:10px; font-weight:600; background:#fff1f2; color:#dc2626; border:1px solid #fca5a5; }
      .watchlist-search-item .add-text { font-size:12px; color:#6b7280; }
      .watchlist-search-item .added-text { font-size:12px; color:#16a34a; font-weight:600; }
      .watchlist-search-item .no-add-text { font-size:12px; color:#dc2626; font-weight:600; }
      .watchlist-search-empty,.watchlist-search-loading { padding:12px 16px; font-size:12px; color:#9ca3af; text-align:center; }
      .watchlist-quick-add-row { margin-top:8px; display:flex; flex-wrap:wrap; gap:8px; align-items:center; font-size:13px; color:#64748b; }

      /* ── 添加方式分区（A/B 宽屏一行，约 6.5 : 3.5） ── */
      .wl-add-methods-row {
        display: flex;
        flex-wrap: wrap;
        gap: 12px;
        margin-top: 10px;
        align-items: stretch;
      }
      .wl-add-methods-row > .wl-add-method {
        margin-top: 0;
        min-width: 0;
        box-sizing: border-box;
      }
      @media (min-width: 768px) {
        .wl-add-methods-row > .wl-add-method--search {
          flex: 6.5 1 0;
        }
        .wl-add-methods-row > .wl-add-method--batch {
          flex: 3.5 1 0;
        }
      }
      @media (max-width: 767px) {
        .wl-add-methods-row > .wl-add-method {
          flex: 1 1 100%;
        }
      }
      .wl-add-method {
        margin-top: 10px;
        border: 1px solid #e5e7eb;
        border-radius: 10px;
        overflow: hidden;
        transition: box-shadow 0.18s;
      }
      .wl-add-methods-row .wl-add-method {
        margin-top: 0;
      }
      .wl-add-method:hover { box-shadow: 0 2px 8px rgba(102,126,234,0.10); }
      .wl-add-method-label {
        display: flex;
        align-items: center;
        gap: 8px;
        padding: 8px 14px;
        background: #f8fafc;
        border-bottom: 1px solid #e5e7eb;
        font-size: 12px;
        font-weight: 700;
        color: #374151;
        letter-spacing: 0.02em;
      }
      .wl-method-badge {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        width: 18px;
        height: 18px;
        border-radius: 50%;
        background: #667eea;
        color: #fff;
        font-size: 10px;
        font-weight: 800;
        flex-shrink: 0;
      }
      .wl-method-badge--b { background: #10b981; }
      .wl-add-method .watchlist-add { padding: 10px 14px 6px; }
      .wl-add-method .watchlist-search-results { margin: 0; }
      .wl-add-method .watchlist-quick-add-row { margin: 0; padding: 10px 14px 12px; }
      .wl-quick-label { font-size: 12px; font-weight: 600; color: #64748b; white-space: nowrap; }
      .wl-quick-select {
        padding: 6px 28px 6px 10px;
        border-radius: 7px;
        border: 1px solid #cbd5e1;
        font-size: 12px;
        background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='5' viewBox='0 0 8 5'%3E%3Cpath d='M1 1l3 3 3-3' stroke='%2394a3b8' stroke-width='1.2' fill='none' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat right 8px center;
        color: #1f2937;
        outline: none;
        appearance: none;
        -webkit-appearance: none;
        cursor: pointer;
        transition: border-color 0.15s, box-shadow 0.15s;
      }
      .wl-quick-select:focus { border-color: #667eea; box-shadow: 0 0 0 3px rgba(102,126,234,0.15); }

      /* ── Top Inflow Picker Modal ── */
      .tip-modal-backdrop {
        position: fixed;
        inset: 0;
        background: rgba(15, 23, 42, 0.45);
        z-index: 9998;
        display: flex;
        align-items: center;
        justify-content: center;
        padding: 20px;
        opacity: 0;
        transition: opacity 0.22s ease;
      }
      .tip-modal-backdrop.visible { opacity: 1; }
      .tip-modal {
        background: #fff;
        border-radius: 16px;
        box-shadow: 0 20px 60px rgba(0,0,0,0.18), 0 4px 16px rgba(0,0,0,0.10);
        width: 100%;
        max-width: 680px;
        max-height: 80vh;
        display: flex;
        flex-direction: column;
        transform: translateY(24px) scale(0.97);
        transition: transform 0.25s cubic-bezier(0.34, 1.56, 0.64, 1), opacity 0.22s ease;
        opacity: 0;
        overflow: hidden;
      }
      .tip-modal-backdrop.visible .tip-modal { transform: translateY(0) scale(1); opacity: 1; }
      .tip-modal-header {
        display: flex;
        align-items: center;
        gap: 12px;
        padding: 18px 20px 14px;
        border-bottom: 1px solid #f1f5f9;
        flex-shrink: 0;
      }
      .tip-modal-icon {
        width: 36px;
        height: 36px;
        border-radius: 10px;
        background: linear-gradient(135deg, #10b981, #059669);
        display: flex;
        align-items: center;
        justify-content: center;
        font-size: 18px;
        flex-shrink: 0;
      }
      .tip-modal-title-wrap { flex: 1; min-width: 0; }
      .tip-modal-title {
        font-size: 15px;
        font-weight: 700;
        color: #111827;
        margin: 0;
      }
      .tip-modal-subtitle {
        font-size: 12px;
        color: #64748b;
        margin: 2px 0 0;
      }
      .tip-modal-close {
        width: 30px;
        height: 30px;
        border-radius: 8px;
        border: none;
        background: #f1f5f9;
        color: #64748b;
        font-size: 16px;
        cursor: pointer;
        display: flex;
        align-items: center;
        justify-content: center;
        transition: background 0.15s, color 0.15s;
        flex-shrink: 0;
      }
      .tip-modal-close:hover { background: #fee2e2; color: #dc2626; }
      .tip-modal-body {
        flex: 1;
        overflow-y: auto;
        padding: 10px 14px;
        scrollbar-width: thin;
        scrollbar-color: #e2e8f0 transparent;
      }
      .tip-modal-body::-webkit-scrollbar { width: 5px; }
      .tip-modal-body::-webkit-scrollbar-thumb { background: #e2e8f0; border-radius: 3px; }
      .tip-modal-footer {
        display: flex;
        align-items: center;
        justify-content: space-between;
        padding: 12px 20px;
        border-top: 1px solid #f1f5f9;
        background: #f8fafc;
        flex-shrink: 0;
        gap: 10px;
      }
      .tip-modal-footer-hint {
        font-size: 12px;
        color: #94a3b8;
        flex: 1;
      }
      .tip-btn-cancel {
        padding: 8px 18px;
        border-radius: 8px;
        border: 1.5px solid #d1d5db;
        background: #fff;
        color: #374151;
        font-size: 13px;
        font-weight: 600;
        cursor: pointer;
        transition: background 0.15s, border-color 0.15s, color 0.15s;
        white-space: nowrap;
        font-family: inherit;
      }
      .tip-btn-cancel:hover { background: #f9fafb; border-color: #9ca3af; color: #111827; }
      .tip-btn-confirm {
        padding: 8px 20px;
        border-radius: 8px;
        border: none;
        background: linear-gradient(135deg, #667eea 0%, #4f46e5 100%);
        color: #fff;
        font-size: 13px;
        font-weight: 700;
        cursor: pointer;
        transition: opacity 0.15s, transform 0.12s, box-shadow 0.15s;
        white-space: nowrap;
        font-family: inherit;
        box-shadow: 0 2px 8px rgba(102,126,234,0.35);
      }
      .tip-btn-confirm:hover { opacity: 0.92; transform: translateY(-1px); box-shadow: 0 4px 14px rgba(102,126,234,0.45); }
      .tip-btn-confirm:active { transform: translateY(0); opacity: 1; }
      .tip-sector-list { display: flex; flex-direction: column; gap: 4px; }
      .tip-sector-card {
        display: flex;
        align-items: center;
        gap: 8px;
        padding: 5px 10px;
        border: 1.5px solid #e5e7eb;
        border-radius: 8px;
        background: #fff;
        cursor: pointer;
        transition: border-color 0.15s, background 0.15s, box-shadow 0.15s, transform 0.12s;
        user-select: none;
      }
      .tip-sector-card:hover { border-color: #a5b4fc; background: #f5f3ff; box-shadow: 0 2px 8px rgba(102,126,234,0.10); }
      .tip-sector-card.selected { border-color: #667eea; background: #eef2ff; box-shadow: 0 0 0 3px rgba(102,126,234,0.15); }
      .tip-sector-card.disabled { opacity: 0.5; cursor: not-allowed; pointer-events: none; }
      .tip-sector-card.selected:active { transform: scale(0.98); }
      .tip-sector-rank {
        width: 22px;
        height: 22px;
        border-radius: 6px;
        display: flex;
        align-items: center;
        justify-content: center;
        font-size: 11px;
        font-weight: 800;
        flex-shrink: 0;
        background: #f1f5f9;
        color: #64748b;
      }
      .tip-sector-rank.rank-1 { background: linear-gradient(135deg,#fbbf24,#f59e0b); color: #fff; }
      .tip-sector-rank.rank-2 { background: linear-gradient(135deg,#94a3b8,#64748b); color: #fff; }
      .tip-sector-rank.rank-3 { background: linear-gradient(135deg,#f97316,#ea580c); color: #fff; }
      .tip-sector-info { flex: 1; min-width: 0; line-height: 1.2; }
      .tip-sector-name {
        font-size: 12px;
        font-weight: 700;
        color: #111827;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
        line-height: 1.25;
      }
      .tip-sector-meta {
        display: flex;
        gap: 4px;
        margin-top: 1px;
        flex-wrap: wrap;
        align-items: center;
      }
      .tip-sector-type-badge {
        font-size: 10px;
        font-weight: 700;
        padding: 1px 6px;
        border-radius: 999px;
        white-space: nowrap;
      }
      .tip-sector-type-badge.t-hangye { background: #fef2f2; color: #b91c1c; }
      .tip-sector-type-badge.t-gainian { background: #eff6ff; color: #1d4ed8; }
      .tip-sector-type-badge.t-diyu { background: #f5f3ff; color: #5b21b6; }
      .tip-sector-days { display: flex; gap: 3px; align-items: center; }
      .tip-day-chip {
        font-size: 10px;
        padding: 1px 5px;
        border-radius: 4px;
        background: #f1f5f9;
        color: #64748b;
        white-space: nowrap;
      }
      .tip-day-chip.positive { background: #fef2f2; color: #dc2626; font-weight: 700; }
      .tip-day-chip.negative { background: #f0fdf4; color: #16a34a; font-weight: 700; }
      .tip-sector-amount {
        font-size: 12px;
        font-weight: 700;
        white-space: nowrap;
        flex-shrink: 0;
      }
      .tip-sector-amount.positive { color: #dc2626; }
      .tip-sector-amount.negative { color: #16a34a; }
      .tip-sector-check {
        width: 18px;
        height: 18px;
        border-radius: 5px;
        border: 1.5px solid #d1d5db;
        display: flex;
        align-items: center;
        justify-content: center;
        flex-shrink: 0;
        transition: border-color 0.15s, background 0.15s;
        color: transparent;
        font-size: 11px;
        font-weight: 800;
      }
      .tip-sector-card.selected .tip-sector-check {
        border-color: #667eea;
        background: #667eea;
        color: #fff;
      }
      .tip-select-all-row {
        display: flex;
        align-items: center;
        gap: 6px;
        margin-bottom: 6px;
        padding: 4px 8px;
        background: #f8fafc;
        border-radius: 6px;
        border: 1px solid #e5e7eb;
      }
      .tip-select-all-row span { font-size: 12px; color: #64748b; flex: 1; }
      .tip-btn-sm {
        padding: 4px 10px;
        border-radius: 6px;
        border: 1px solid #cbd5e1;
        background: #fff;
        color: #374151;
        font-size: 11px;
        font-weight: 600;
        cursor: pointer;
        transition: background 0.12s, border-color 0.12s;
        white-space: nowrap;
      }
      .tip-btn-sm:hover { background: #eef2ff; border-color: #a5b4fc; color: #4f46e5; }
      /* 分组管理 - 分组列表 */
      .watchlist-groups-row { display:flex; flex-direction:column; gap:0; padding:10px 0 4px; }
      .watchlist-groups-row .groups-label { font-weight:700; color:#16a34a; font-size:11px; text-transform:uppercase; letter-spacing:0.06em; margin-bottom:8px; }
      .watchlist-groups-list { display:flex; flex-wrap:wrap; gap:8px; }
      /* 分组卡片 */
      .watchlist-group-badge {
        display:inline-flex; align-items:center; gap:6px;
        padding:5px 10px 5px 8px;
        border-radius:10px; font-size:12px; font-weight:600;
        border:1px solid rgba(0,0,0,0.08);
        transition:transform 0.14s, box-shadow 0.14s;
        position:relative;
      }
      .watchlist-group-badge:hover { transform:translateY(-1px); box-shadow:0 3px 10px rgba(0,0,0,0.12); }
      .watchlist-group-badge.is-editing {
        outline:2px solid #667eea;
        outline-offset:1px;
        box-shadow:0 0 0 4px rgba(102,126,234,0.15);
      }
      .watchlist-group-badge .group-color-dot { width:9px; height:9px; border-radius:50%; flex-shrink:0; }
      .watchlist-group-badge .group-badge-name { flex:1; min-width:0; }
      .watchlist-group-badge .group-badge-count {
        font-size:10px; font-weight:700; opacity:0.65;
        background:rgba(0,0,0,0.08); border-radius:999px;
        padding:1px 5px; margin-left:2px;
      }
      .watchlist-group-badge .group-badge-actions {
        display:flex; align-items:center; gap:3px; margin-left:4px;
      }
      .watchlist-group-badge .edit-group,
      .watchlist-group-badge .remove-group {
        display:inline-flex; align-items:center; justify-content:center;
        width:18px; height:18px; border-radius:5px;
        cursor:pointer; font-size:11px; opacity:0;
        transition:opacity 0.14s, background 0.14s;
        flex-shrink:0;
      }
      .watchlist-group-badge:hover .edit-group,
      .watchlist-group-badge:hover .remove-group { opacity:0.7; }
      .watchlist-group-badge .edit-group:hover { opacity:1; background:rgba(102,126,234,0.18); }
      .watchlist-group-badge .remove-group:hover { opacity:1; background:rgba(239,68,68,0.15); color:#ef4444; }

      /* 分组编辑面板 */
      .group-edit-panel {
        background: #f8faff;
        border: 1.5px solid #c7d7fb;
        border-radius: 12px;
        padding: 14px 16px;
        margin-top: 10px;
        display: none;
      }
      .group-edit-panel.is-visible { display: block; }
      .group-edit-panel-title {
        font-size: 12px; font-weight: 700; color: #4f46e5;
        margin-bottom: 10px; display:flex; align-items:center; gap:6px;
      }
      .group-edit-panel-title .edit-panel-mode-create { color: #16a34a; }
      .group-edit-panel-title .edit-panel-mode-edit { color: #d97706; }
      .watchlist-add-group .group-name-row { display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
      .watchlist-add-group input[type="text"] {
        padding:7px 10px; border-radius:8px; border:1.5px solid #cbd5e1;
        font-size:13px; background:#fff; color:#1f2937; min-width:160px; outline:none;
        transition:border-color 0.15s, box-shadow 0.15s;
      }
      .watchlist-add-group input[type="text"]:focus { border-color:#667eea; box-shadow:0 0 0 3px rgba(102,126,234,0.12); }
      .watchlist-add-group input[type="color"] { width:32px; height:30px; padding:2px; border:1.5px solid #cbd5e1; border-radius:7px; cursor:pointer; }
      .group-edit-hint {
        font-size:11px; color:#94a3b8; margin-top:8px; line-height:1.6;
      }

    
      /* Days Picker + toolbar + series light */
      .days-picker { display:inline-flex; align-items:center; gap:3px; padding:3px; border-radius:999px; background:#f1f5f9; border:1px solid #e2e8f0; }
      .days-pill { border:1px solid transparent; background:transparent; color:#64748b; font-size:12px; padding:4px 9px; border-radius:999px; cursor:pointer; font-weight:600; min-width:28px; text-align:center; transition:background 0.12s,color 0.12s; }
      .days-pill:hover { background:#e2e8f0; color:#334155; }
      .days-pill.active { background:#667eea; color:#fff; border-color:#667eea; box-shadow:0 2px 6px rgba(102,126,234,0.35); }
      .days-input-wrap { display:inline-flex; align-items:center; gap:4px; padding:0 8px 0 10px; height:26px; border-radius:999px; background:#fff; border:1px solid #e2e8f0; }
      .days-input { width:40px; border:none; outline:none; font-size:12px; font-weight:700; color:#374151; background:transparent; text-align:right; }
      .days-suffix { font-size:12px; color:#94a3b8; font-weight:600; }
      .watchlist-toolbar { display:flex; flex-wrap:wrap; align-items:center; gap:8px; }
      .watchlist-toolbar label { font-weight:600; color:#475569; font-size:13px; }
      .watchlist-toolbar select { padding:5px 20px 5px 8px; border-radius:7px; border:1px solid #cbd5e1; font-size:13px; background:#fff; color:#1f2937; min-width:70px; outline:none; appearance:none; -webkit-appearance:none; }
      .watchlist-result-header { display:flex; align-items:center; flex-wrap:wrap; gap:12px; justify-content:space-between; margin-bottom:10px; }
      .watchlist-result-subtitle { margin:0; font-size:13px; font-weight:700; color:#111827; }
      .watchlist-result-options { display:flex; flex-wrap:wrap; align-items:center; gap:12px; margin-bottom:10px; padding:8px 12px; background:#f8fafc; border-radius:8px; border:1px solid #e2e8f0; }
      .watchlist-option-label { display:inline-flex; align-items:center; gap:6px; font-size:12px; color:#64748b; cursor:pointer; font-weight:500; user-select:none; }
      .watchlist-option-label:hover { color:#667eea; }
      .watchlist-option-label input[type="checkbox"] { width:14px; height:14px; accent-color:#667eea; cursor:pointer; }
      .watchlist-mode-toggle { display:flex; gap:6px; align-items:center; }
      .btn-disabled { opacity: 0.4 !important; cursor: not-allowed !important; pointer-events: none !important; }
      .watchlist-series-placeholder { padding:32px 20px; text-align:center; color:#94a3b8; font-size:13px; background:#f8fafc; border-radius:8px; border:1px dashed #e2e8f0; margin:4px 0; }
      .watchlist-series-wrap { margin-top:0; }
      .watchlist-series { overflow-x:auto; background:#fff; border-radius:0; border:none; border-top:1px solid #f1f5f9; scrollbar-width:thin; scrollbar-color:#e2e8f0 transparent; transition: opacity 0.22s ease, transform 0.22s ease; }
      .watchlist-series.hidden { display:none; }
      .watchlist-series-split {
        display: grid;
        grid-template-columns: minmax(460px, 0.92fr) minmax(520px, 1.08fr);
        align-items: stretch;
        height: min(78vh, 980px);
        min-height: 540px;
        overflow: hidden;
        background: #fff;
        border-top: 1px solid #f1f5f9;
      }
      .watchlist-series-split.hidden { display: none; }
      .watchlist-series-fixed {
        min-height: 0;
        height: 100%;
        overflow: auto;
        scrollbar-width: none;
        border-right: 1px solid #e2e8f0;
      }
      .watchlist-series-fixed::-webkit-scrollbar {
        width: 0;
        height: 0;
      }
      .watchlist-series-split .watchlist-series {
        border-top: none;
        min-width: 0;
        min-height: 0;
        height: 100%;
        overflow: auto;
      }
      .watchlist-series.mode-entering { opacity:0; transform:translateY(6px); }
      .watchlist-series.mode-entered { opacity:1; transform:translateY(0); }
      .watchlist-series::-webkit-scrollbar { height:4px; }
      .watchlist-series::-webkit-scrollbar-thumb { background:#e2e8f0; border-radius:2px; }
      .watchlist-series table { width:100%; min-width:500px; border-collapse:collapse; font-size:12px; }
      .watchlist-series-fixed .watchlist-series table {
        min-width: 0;
        table-layout: fixed;
      }
      .watchlist-series thead th {
        padding:7px 8px;
        text-align:center;
        background:#e8edf4;
        font-weight:800;
        color:#334155;
        border-bottom:1px solid #cbd5e1;
        font-size:12px;
        white-space:nowrap;
        letter-spacing:0.3px;
        position:sticky;
        top:0;
        z-index:4;
        box-shadow:0 1px 0 rgba(15,23,42,0.06);
      }
      .watchlist-series thead th:not(.name-col):not(.group-col) { min-width:100px; }
      .watchlist-series thead th.group-col {
        left:0;
        z-index:7;
        background:#e2e8f0;
        box-shadow:1px 1px 0 rgba(15,23,42,0.08);
      }
      .watchlist-series thead th.name-col {
        left:100px;
        z-index:6;
        background:#e8edf4;
        box-shadow:1px 1px 0 rgba(15,23,42,0.08);
      }
      .watchlist-series tbody td { padding:4px 8px; text-align:center; border-bottom:1px solid #f1f5f9; white-space:nowrap; color:#1f2937; font-size:11px; transition:background 0.12s; line-height:1.35; }
      .watchlist-series tbody td:not(.name-col):not(.group-col) { min-width:100px; }
      .watchlist-series tbody tr:nth-child(even) td { background:#fafafa; }
      .watchlist-series tbody tr:hover td { background:#f1f5f9 !important; }
      .watchlist-series .name-col { text-align:left; font-weight:600; position:sticky; left:100px; background:#fff; z-index:3; min-width:120px; padding:4px 8px 4px 10px; color:#111827; }
      .watchlist-series tbody tr:hover .name-col { background:#f1f5f9; }
      .watchlist-series tbody tr:nth-child(even) .name-col { background:#fafafa; }
      .watchlist-series .group-col { position:sticky; left:0; background:#f1f5f9; z-index:4; min-width:100px; text-align:left; font-size:10px; color:#475569; font-weight:600; border-right:1px solid #e2e8f0; padding:4px 8px; }
      .watchlist-series-fixed .watchlist-series tbody .group-col,
      .watchlist-series-fixed .watchlist-series tbody .name-col {
        position: static;
        left: auto;
      }
      .watchlist-series-fixed .watchlist-series thead th.group-col,
      .watchlist-series-fixed .watchlist-series thead th.name-col,
      .watchlist-series-fixed .watchlist-series thead th.summary-col {
        position: sticky;
        top: 0;
        z-index: 5;
      }
      .watchlist-series-fixed .watchlist-series .group-col {
        min-width: 54px;
        width: 54px;
        max-width: 54px;
      }
      .watchlist-series-fixed .watchlist-series .name-col {
        min-width: 118px;
        width: 118px;
        max-width: 118px;
      }
      .watchlist-series-fixed .watchlist-series .summary-col {
        min-width: 92px;
        width: 92px;
        max-width: 92px;
        text-align: center;
      }
      .watchlist-series-fixed .watchlist-series th[data-col="netSum"],
      .watchlist-series-fixed .watchlist-series td:nth-child(4) {
        min-width: 132px;
        width: 132px;
        max-width: 132px;
      }
      .watchlist-series-fixed .watchlist-series th[data-col="intervalPct"],
      .watchlist-series-fixed .watchlist-series td:nth-child(5) {
        min-width: 122px;
        width: 122px;
        max-width: 122px;
      }
      .watchlist-series-fixed .head-range-hint {
        display: grid;
        gap: 2px;
        margin-top: 4px;
        white-space: normal;
        line-height: 1.25;
      }
      .watchlist-series-fixed .head-range-hint .pill {
        display: block;
        width: max-content;
        max-width: none;
        margin: 0 auto;
        padding: 1px 6px;
        text-align: center;
        white-space: nowrap;
      }
      .watchlist-series-fixed .head-range-hint .pill span:last-child {
        margin-left: 3px !important;
      }
      .watchlist-series .flow-in { color:#dc2626 !important; font-weight:700; }
      .watchlist-series .flow-out { color:#16a34a !important; font-weight:700; }
      .watchlist-series .rank-cell { font-weight:600; color:#94a3b8; font-size:11px; }
      .watchlist-series td[data-date] { cursor:pointer; }
      .watchlist-series td[data-date]:hover { background:#eff6ff !important; }
      .head-range-hint { display:block; margin-top:2px; font-size:10px; color:#94a3b8; line-height:1.4; }
      .head-range-hint .pill { display:inline-block; padding:1px 5px; border-radius:999px; background:#e5e7eb; color:#64748b; margin:0 2px 2px 0; font-size:10px; }
      .wl-group-cell { display:inline-flex; align-items:center; gap:6px; user-select:none; cursor:grab; }
      .wl-group-cell:active { cursor:grabbing; }
      .wl-drag { display:inline-block; width:14px; text-align:center; color:#cbd5e1; font-weight:900; }
      .wl-group-drop-target { outline:2px dashed #667eea; outline-offset:2px; border-radius:6px; }
      .group-sep td { height:6px !important; padding:0 !important; background:transparent !important; border:none !important; }
      .daily-strength { display:inline-block; min-width:38px; text-align:right; margin-right:3px; font-size:11px; font-weight:700; font-variant-numeric:tabular-nums; }
      .flow-top-badge { display:inline-block; padding:2px 5px; border-radius:999px; font-size:10px; font-weight:700; line-height:1; margin-left:4px; border:1px solid transparent; }
      .flow-top-badge.count { background:#f0fdf4; color:#15803d; border-color:#bbf7d0; }
      .flow-top-badge.net { background:#eff6ff; color:#1d4ed8; border-color:#bfdbfe; }
      .flow-top-badge.pct { background:#faf5ff; color:#7c3aed; border-color:#ddd6fe; }
      .flow-top-badge.r1 { border-width:1.5px; }
      .flow-top-badge.r2 { opacity:0.85; }
      .flow-top-badge.r3 { opacity:0.7; }
      .watchlist-series .flow-top-badge { padding:1px 4px; font-size:9px; margin-top:1px; }
      .hidden { display:none !important; }

    
      /* 关注列表管理面板 — 新设计 */
      .wl-panel {
        border: 1px solid #e5e7eb;
        border-radius: 12px;
        overflow: hidden;
        background: #fff;
        box-shadow: 0 1px 3px rgba(0,0,0,0.06);
      }
      .wl-panel-header {
        display: flex;
        align-items: center;
        gap: 10px;
        padding: 12px 16px;
        background: #f8fafc;
        border-bottom: 1px solid #e5e7eb;
        cursor: pointer;
        user-select: none;
        transition: background 0.15s;
      }
      .wl-panel-header:hover { background: #f1f5f9; }
      .wl-panel-header.open { background: #eef2ff; border-bottom-color: #c7d2fe; }
      .wl-panel-title {
        font-size: 13px;
        font-weight: 700;
        color: #374151;
        flex: 1;
      }
      .wl-panel-count {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        min-width: 22px;
        height: 22px;
        padding: 0 7px;
        border-radius: 999px;
        background: #667eea;
        color: #fff;
        font-size: 11px;
        font-weight: 700;
      }
      .wl-panel-arrow {
        font-size: 11px;
        color: #94a3b8;
        transition: transform 0.2s ease;
      }
      .wl-panel-header.open .wl-panel-arrow { transform: rotate(180deg); }
      .wl-panel-body {
        display: flex;
        flex-direction: column;
        max-height: 0;
        overflow: hidden;
        transition: max-height 0.28s cubic-bezier(0.4, 0, 0.2, 1);
        background: #fff;
      }
      .wl-panel-body.open { max-height: none; }

      /* 搜索栏 */
      .wl-search-bar {
        display: flex;
        gap: 8px;
        padding: 10px 12px;
        border-bottom: 1px solid #f1f5f9;
        background: #fff;
        align-items: center;
        position: sticky;
        top: 0;
        z-index: 3;
      }
      .wl-search-input-wrap {
        position: relative;
        flex: 1;
      }
      .wl-search-icon {
        position: absolute;
        left: 9px;
        top: 50%;
        transform: translateY(-50%);
        color: #94a3b8;
        font-size: 13px;
        pointer-events: none;
      }
      .wl-search-bar input[type="text"] {
        width: 100%;
        padding: 7px 10px 7px 30px;
        border-radius: 8px;
        border: 1px solid #e2e8f0;
        font-size: 13px;
        background: #f8fafc;
        color: #1f2937;
        outline: none;
        transition: border-color 0.15s, box-shadow 0.15s;
        font-family: inherit;
      }
      .wl-search-bar input[type="text"]:focus {
        border-color: #667eea;
        background: #fff;
        box-shadow: 0 0 0 3px rgba(102,126,234,0.15);
      }
      .wl-search-bar input[type="text"]::placeholder { color: #94a3b8; }

      /* 列表容器 - 双列网格 */
      .wl-list-container {
        max-height: 260px;
        overflow-y: auto;
        scrollbar-width: thin;
        scrollbar-color: #e2e8f0 transparent;
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: 0;
        padding: 6px 8px 8px;
        background: #fff;
      }
      .wl-list-container::-webkit-scrollbar { width: 4px; }
      .wl-list-container::-webkit-scrollbar-thumb { background: #e2e8f0; border-radius: 2px; }
      /* 空状态占满整行 */
      .wl-list-container .wl-list-empty { grid-column: 1 / -1; }

      /* 列表项 - 卡片式 */
      .wl-item {
        display: flex;
        align-items: center;
        gap: 6px;
        padding: 6px 8px;
        border-radius: 8px;
        border: 1.5px solid transparent;
        margin: 3px;
        transition: background 0.12s, border-color 0.12s, box-shadow 0.12s;
        cursor: default;
        background: #f8fafc;
        min-width: 0;
      }
      .wl-item:hover {
        background: #eef2ff;
        border-color: #c7d2fe;
        box-shadow: 0 1px 4px rgba(102,126,234,0.10);
      }
      .wl-item-check {
        width: 14px;
        height: 14px;
        accent-color: #667eea;
        cursor: pointer;
        flex-shrink: 0;
      }
      .wl-item-name {
        flex: 1;
        font-size: 12px;
        font-weight: 700;
        color: #111827;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
        min-width: 0;
      }
      .wl-item-type {
        font-size: 9px;
        font-weight: 700;
        padding: 1px 5px;
        border-radius: 999px;
        white-space: nowrap;
        flex-shrink: 0;
      }
      .wl-item-group {
        font-size: 9px;
        font-weight: 600;
        padding: 1px 5px;
        border-radius: 4px;
        white-space: nowrap;
        flex-shrink: 0;
        max-width: 60px;
        overflow: hidden;
        text-overflow: ellipsis;
      }
      .wl-item-remove {
        width: 16px;
        height: 16px;
        display: flex;
        align-items: center;
        justify-content: center;
        border-radius: 50%;
        border: none;
        background: transparent;
        color: #cbd5e1;
        font-size: 13px;
        cursor: pointer;
        flex-shrink: 0;
        padding: 0;
        transition: background 0.12s, color 0.12s;
        line-height: 1;
        box-shadow: none !important;
        transform: none !important;
        opacity: 0;
      }
      .wl-item:hover .wl-item-remove { opacity: 1; }
      .wl-item-remove:hover { background: #fee2e2; color: #dc2626; opacity: 1; }

      /* 空状态 */
      .wl-list-empty {
        padding: 24px 16px;
        text-align: center;
        color: #94a3b8;
        font-size: 13px;
      }

      /* 底部操作栏 */
      /* 密度切换按钮组 */
      .wl-density-toggle {
        display: flex;
        gap: 2px;
        background: #f1f5f9;
        border-radius: 7px;
        padding: 3px;
        flex-shrink: 0;
      }
      .wl-density-btn {
        width: 26px;
        height: 26px;
        border-radius: 5px;
        border: none;
        background: transparent;
        color: #94a3b8;
        font-size: 14px;
        cursor: pointer;
        display: flex;
        align-items: center;
        justify-content: center;
        transition: background 0.15s, color 0.15s;
        padding: 0;
        box-shadow: none !important;
        transform: none !important;
        line-height: 1;
      }
      .wl-density-btn:hover { background: #e2e8f0; color: #475569; }
      .wl-density-btn.active {
        background: #fff;
        color: #4f46e5;
        box-shadow: 0 1px 3px rgba(0,0,0,0.12) !important;
      }

      /* 列数变体 */
      .wl-list-container.density-compact  { grid-template-columns: repeat(4, 1fr); }
      .wl-list-container.density-medium   { grid-template-columns: repeat(3, 1fr); }
      .wl-list-container.density-loose    { grid-template-columns: repeat(2, 1fr); }

      /* 紧凑模式字号再缩小一点 */
      .wl-list-container.density-compact .wl-item-name { font-size: 11px; }
      .wl-list-container.density-compact .wl-item { padding: 5px 6px; gap: 4px; }

      .wl-panel-footer {
        display: flex;
        align-items: center;
        gap: 8px;
        padding: 8px 12px;
        border-top: 1px solid #f1f5f9;
        background: #f8fafc;
        flex-wrap: wrap;
      }
      .wl-footer-hint {
        font-size: 11px;
        color: #94a3b8;
        flex: 1;
      }

      /* ══════════════════════════════════════
         历史个股看板 - 备选股票池（重设计）
      ══════════════════════════════════════ */

      /* 卡片头部 Banner 区域 */
      #stockPoolBlock .compare-subtitle {
        font-size: 15px;
        font-weight: 800;
        letter-spacing: 0.01em;
      }
      .stock-pool-card-header {
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 12px;
        padding: 18px 20px 14px;
        border-bottom: 1px solid #f1f5f9;
        background: linear-gradient(135deg, #f8faff 0%, #eff6ff 100%);
      }
      .stock-pool-card-header-left {
        display: flex;
        align-items: center;
        gap: 10px;
        flex: 1;
        min-width: 0;
      }
      .stock-pool-card-title {
        font-size: 15px;
        font-weight: 800;
        color: #1e3a5f;
        white-space: nowrap;
      }
      .stock-pool-count-badge {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        min-width: 22px;
        height: 20px;
        padding: 0 7px;
        background: linear-gradient(135deg, #3b82f6, #2563eb);
        color: #fff;
        border-radius: 999px;
        font-size: 11px;
        font-weight: 700;
        flex-shrink: 0;
      }
      .stock-pool-card-header-right {
        display: flex;
        align-items: center;
        gap: 8px;
        flex-shrink: 0;
      }

      /* 搜索区域 */
      .stock-pool-search-bar {
        display: flex;
        align-items: center;
        gap: 10px;
        padding: 12px 20px 8px;
        background: #fff;
        border-bottom: 1px solid #f1f5f9;
      }
      .stock-pool-search {
        position: relative;
        flex: 1;
        min-width: 200px;
      }
      .stock-pool-search-icon {
        position: absolute;
        left: 10px;
        top: 50%;
        transform: translateY(-50%);
        color: #94a3b8;
        font-size: 14px;
        pointer-events: none;
      }
      .stock-pool-search input[type="text"] {
        width: 100%;
        padding: 8px 12px 8px 32px;
        border-radius: 8px;
        border: 1.5px solid #e2e8f0;
        font-size: 13px;
        background: #f8fafc;
        color: #1f2937;
        outline: none;
        font-family: inherit;
        transition: border-color 0.18s, box-shadow 0.18s, background 0.18s;
        box-sizing: border-box;
      }
      .stock-pool-search input[type="text"]:focus {
        border-color: #3b82f6;
        background: #fff;
        box-shadow: 0 0 0 3px rgba(59,130,246,0.12);
      }
      .stock-pool-search input[type="text"]::placeholder { color: #b0b9c8; }
      .stock-pool-search-results {
        position: absolute;
        top: calc(100% + 6px);
        left: 0;
        right: 0;
        background: #fff;
        border: 1px solid #e2e8f0;
        border-radius: 12px;
        box-shadow: 0 12px 32px rgba(30,58,95,0.13);
        z-index: 200;
        max-height: 360px;
        overflow-y: auto;
      }
      .stock-pool-search-item {
        display: flex;
        align-items: center;
        justify-content: space-between;
        padding: 10px 14px;
        cursor: pointer;
        border-bottom: 1px solid #f1f5f9;
        transition: background 0.12s;
        gap: 10px;
      }
      .stock-pool-search-item:last-child { border-bottom: none; }
      .stock-pool-search-item:hover { background: #eff6ff; }
      .stock-pool-search-item .meta { flex: 1; min-width: 0; }
      .stock-pool-search-item .meta .name { font-weight: 700; font-size: 13px; color: #111827; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
      .stock-pool-search-item .meta .code-line {
        margin-top: 3px;
        display: flex;
        flex-wrap: wrap;
        align-items: baseline;
        gap: 4px 8px;
        min-width: 0;
        line-height: 1.35;
      }
      .stock-pool-search-item .meta .code-line .code {
        font-size: 11px;
        color: #64748b;
        flex-shrink: 0;
        font-variant-numeric: tabular-nums;
      }
      .stock-pool-search-tags {
        display: inline;
        font-size: 10px;
        color: #475569;
        word-break: break-word;
      }
      .stock-pool-search-tags .sps-k {
        color: #94a3b8;
        font-weight: 600;
        margin-right: 3px;
      }
      .stock-pool-search-tags .sps-sep {
        color: #cbd5e1;
        margin: 0 5px;
        font-weight: 400;
      }
      .stock-pool-search-item .act {
        font-size: 11px;
        font-weight: 700;
        color: #2563eb;
        padding: 3px 10px;
        border-radius: 6px;
        background: #eff6ff;
        border: 1px solid #bfdbfe;
        white-space: nowrap;
        flex-shrink: 0;
        transition: background 0.12s;
      }
      .stock-pool-search-item:hover .act { background: #dbeafe; }

      /* 空状态 */
      .stock-pool-empty {
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
        padding: 40px 20px;
        gap: 10px;
      }
      .stock-pool-empty-icon { font-size: 36px; opacity: 0.35; }
      .stock-pool-empty-text { font-size: 13px; color: #94a3b8; text-align: center; line-height: 1.6; }

      /* 股票池表格容器 */
      .stock-pool-table-wrap {
        overflow-x: auto;
        scrollbar-width: thin;
        scrollbar-color: #e2e8f0 transparent;
      }
      .stock-pool-table-wrap::-webkit-scrollbar { height: 4px; }
      .stock-pool-table-wrap::-webkit-scrollbar-thumb { background: #e2e8f0; border-radius: 2px; }

      /* 股票池表格 */
      #stockPoolTable {
        width: 100%;
        min-width: 1260px;
        border-collapse: collapse;
        font-size: 13px;
      }
      #stockPoolTable thead th {
        background: #f8fafc;
        color: #64748b;
        font-size: 10px;
        font-weight: 700;
        text-transform: uppercase;
        letter-spacing: 0.05em;
        padding: 5px 8px;
        border-bottom: 1px solid #e5e7eb;
        white-space: nowrap;
        text-align: left;
      }
      #stockPoolTable tbody td {
        padding: 4px 8px;
        border-bottom: 1px solid #f1f5f9;
        vertical-align: middle;
        color: #1f2937;
        font-size: 12px;
      }
      .stock-pool-drag-cell {
        width: 36px;
        text-align: center;
        cursor: grab;
        user-select: none;
        color: #94a3b8;
        font-size: 14px;
        line-height: 1;
      }
      .stock-pool-drag-cell:active {
        cursor: grabbing;
      }
      #stockPoolTableBody tr.stock-pool-row-dragging {
        opacity: 0.45;
      }
      #stockPoolTableBody tr.stock-pool-row-dragover {
        outline: 2px dashed #2563eb;
        outline-offset: -2px;
      }
      .stock-pool-track-cell {
        text-align: center;
      }
      .stock-pool-track-cell input[type="checkbox"] {
        width: 15px;
        height: 15px;
        cursor: pointer;
        accent-color: #2563eb;
      }
      #stockPoolTable tbody tr:last-child td { border-bottom: none; }
      #stockPoolTable tbody tr:hover td { background: #f8fbff; }
      .stock-pool-code-cell {
        font-family: "SF Mono", "Fira Code", monospace;
        font-size: 12px;
        color: #64748b;
        font-weight: 600;
      }
      .stock-pool-name-cell {
        font-weight: 700;
        color: #111827;
      }
      .stock-pool-date-cell {
        font-size: 12px;
        color: #94a3b8;
      }
      .stock-pool-note-cell {
        color: #374151;
        font-size: 12px;
        max-width: 180px;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
        cursor: default;
      }
      .stock-pool-source-cell {
        color: #6366f1;
        font-size: 11px;
        font-weight: 600;
        max-width: 130px;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
        cursor: default;
      }
      .stock-pool-tag-cell {
        color: #374151;
        font-size: 12px;
        width: 240px;
        min-width: 240px;
        max-width: 240px;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
        cursor: default;
      }
      .stock-pool-tag-cell.is-editing {
        overflow: visible;
        text-overflow: clip;
      }
      .stock-pool-inline-editor {
        display: inline-flex;
        align-items: center;
        gap: 4px;
        max-width: 100%;
        flex-wrap: nowrap;
        animation: stockPoolInlineFade 0.18s ease;
      }
      .stock-pool-inline-editor input {
        height: 22px;
        min-width: 70px;
        max-width: 150px;
        padding: 0 6px;
        border: 1px solid #bfdbfe;
        border-radius: 6px;
        font-size: 12px;
        color: #1f2937;
      }
      .stock-pool-inline-editor input:focus {
        outline: none;
        border-color: #2563eb;
        box-shadow: 0 0 0 2px rgba(37, 99, 235, 0.14);
      }
      .stock-pool-inline-editor button {
        min-width: 36px;
        height: 22px;
        padding: 0 6px;
        border: 1px solid #cbd5e1;
        border-radius: 5px;
        background: #fff;
        color: #334155;
        font-size: 10px;
        font-weight: 700;
        line-height: 1;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        cursor: pointer;
        transition: transform 0.12s ease, background 0.15s ease;
      }
      .stock-pool-inline-editor button:hover {
        transform: translateY(-1px);
      }
      .stock-pool-inline-editor button[data-inline-save] {
        color: #166534;
        border-color: #86efac;
        background: #f0fdf4;
      }
      .stock-pool-inline-editor button[data-inline-save]:hover {
        background: #dcfce7;
      }
      .stock-pool-inline-editor button[data-inline-cancel] {
        color: #b91c1c;
        border-color: #fecaca;
        background: #fff1f2;
      }
      .stock-pool-inline-editor button[data-inline-cancel]:hover {
        background: #ffe4e6;
      }
      .stock-pool-inline-editor select {
        height: 22px;
        min-width: 48px;
        border: 1px solid #bfdbfe;
        border-radius: 6px;
        font-size: 11px;
        color: #334155;
        background: #fff;
      }
      .stock-pool-inline-editor[data-inline-wrap="tag"] input {
        min-width: 78px;
        max-width: 92px;
      }
      .stock-pool-tag-pill {
        display: inline-flex;
        align-items: center;
        gap: 4px;
      }
      .stock-pool-tag-dot {
        width: 8px;
        height: 8px;
        border-radius: 50%;
        display: inline-block;
      }
      @keyframes stockPoolInlineFade {
        from { opacity: 0; transform: translateY(-2px); }
        to { opacity: 1; transform: translateY(0); }
      }

      /* 提示栏 */
      .stock-pool-hint {
        display: flex;
        align-items: center;
        gap: 8px;
        padding: 10px 20px 14px;
        font-size: 12px;
        color: #94a3b8;
        line-height: 1.6;
        border-top: 1px solid #f1f5f9;
        background: #fafbff;
      }
      .stock-pool-hint::before {
        content: "💡";
        font-size: 13px;
        flex-shrink: 0;
      }

      /* ══════════════════════════════════════
         股票池/全市场 - 合并分屏布局
      ══════════════════════════════════════ */
      .pool-flow-split {
        display: flex;
        margin: 8px 20px 20px;
        border: 1px solid #e5e7eb;
        border-radius: 10px;
        overflow: hidden;
        background: #fff;
        box-shadow: 0 1px 4px rgba(0,0,0,0.06);
      }
      .pool-flow-fixed {
        flex-shrink: 0;
        overflow: hidden;
        border-right: 2px solid #e5e7eb;
        background: #fff;
        z-index: 2;
        box-shadow: 2px 0 8px rgba(0,0,0,0.06);
      }
      .pool-flow-fixed .compare-table {
        margin: 0;
        border-radius: 0;
      }
      .pool-flow-scroll {
        flex: 1;
        overflow-x: auto;
        overflow-y: auto;
        max-height: 480px;
        scrollbar-width: thin;
        scrollbar-color: #e2e8f0 transparent;
      }
      .pool-flow-scroll::-webkit-scrollbar { height: 5px; width: 5px; }
      .pool-flow-scroll::-webkit-scrollbar-thumb { background: #e2e8f0; border-radius: 3px; }
      .pool-flow-fixed {
        max-height: 480px;
        overflow-y: hidden;
      }
      .pool-flow-scroll .compare-table {
        margin: 0;
        border-radius: 0;
        min-width: max-content;
      }
      /* 列宽 */
      .pool-flow-fixed .w-name { min-width: 160px; max-width: 200px; text-align: left; padding-left: 14px; }
      .pool-flow-fixed .w-pos  { min-width: 90px; text-align: center; }
      .pool-flow-fixed .w-net  { min-width: 120px; text-align: right; }
      .pool-flow-fixed .w-pct  { min-width: 90px; text-align: right; }
      .pool-flow-fixed .w-dir  { min-width: 70px; text-align: center; }
      .pool-flow-fixed .w-type { min-width: 64px; text-align: center; }
      .pool-flow-fixed .w-rank { min-width: 82px; text-align: center; }
      .pool-flow-fixed .w-type-rank { min-width: 92px; text-align: center; }
      /* 每日列 */
      .pool-flow-scroll .flow-cell { min-width: 90px; text-align: right; font-size: 12px; }
      .pool-flow-scroll .flow-cell .amt { font-weight: 600; }
      .pool-flow-scroll .flow-cell .rk { font-size: 10px; color: #94a3b8; margin-top: 1px; }
      .pool-flow-scroll .pct { min-width: 70px; text-align: right; font-size: 12px; }
      .pool-flow-scroll .day-sep { border-left: 1px solid #e5e7eb; }
      /* 表头 */
      .pool-flow-split .compare-table thead th {
        position: sticky;
        top: 0;
        z-index: 3;
        background: #f8fafc;
        white-space: nowrap;
        font-size: 10px;
        padding: 4px 7px;
      }
      .pool-flow-fixed thead th { z-index: 4; }
      #stockPoolFlowBlock .pool-flow-split .compare-table tbody td,
      #marketFlowBlock .pool-flow-split .compare-table tbody td,
      #marketOverviewPanel .pool-flow-split .compare-table tbody td {
        padding: 3px 7px;
        font-size: 11px;
        line-height: 1.35;
      }
      #stockPoolFlowBlock .pool-flow-split .compare-table thead th,
      #marketFlowBlock .pool-flow-split .compare-table thead th,
      #marketOverviewPanel .pool-flow-split .compare-table thead th {
        padding: 4px 7px;
        font-size: 10px;
      }
      #stockPoolFlowBlock .pool-flow-scroll .flow-cell,
      #marketFlowBlock .pool-flow-scroll .flow-cell,
      #marketOverviewPanel .pool-flow-scroll .flow-cell {
        font-size: 11px;
      }
      #stockPoolFlowBlock .pool-flow-scroll .flow-cell .rk,
      #marketFlowBlock .pool-flow-scroll .flow-cell .rk,
      #marketOverviewPanel .pool-flow-scroll .flow-cell .rk {
        font-size: 9px;
        margin-top: 0;
      }
      #stockPoolFlowBlock .pool-flow-fixed .w-name,
      #marketFlowBlock .pool-flow-fixed .w-name,
      #marketOverviewPanel .pool-flow-fixed .w-name {
        padding: 3px 7px 3px 10px;
      }

      .market-overview-type-filter {
        display: inline-flex;
        align-items: center;
        gap: 6px;
        padding: 4px 7px;
        border: 1px solid #e2e8f0;
        border-radius: 999px;
        background: #f8fafc;
        color: #475569;
        font-size: 12px;
        font-weight: 700;
        cursor: pointer;
        user-select: none;
      }
      .market-overview-type-filter input {
        width: 14px;
        height: 14px;
        accent-color: #667eea;
        cursor: pointer;
      }
      .market-overview-sort-switch {
        display: inline-flex;
        align-items: center;
        gap: 3px;
        padding: 3px;
        border: 1px solid #e2e8f0;
        border-radius: 999px;
        background: #f8fafc;
        box-shadow: inset 0 1px 0 rgba(255,255,255,0.8);
      }
      .market-overview-sort-btn {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        min-width: 82px;
        padding: 5px 10px;
        border: 0;
        border-radius: 999px;
        background: transparent;
        color: #64748b;
        font-size: 12px;
        font-weight: 900;
        cursor: pointer;
        transition: background 0.18s ease, color 0.18s ease, box-shadow 0.18s ease, transform 0.18s ease;
      }
      .market-overview-sort-btn:hover {
        color: #0f172a;
        transform: translateY(-1px);
      }
      .market-overview-sort-btn.active {
        background: #0f172a;
        color: #ffffff;
        box-shadow: 0 8px 18px rgba(15, 23, 42, 0.18);
      }
      .market-overview-rank-sub {
        margin-top: 2px;
        color: #94a3b8;
        font-size: 9px;
        font-weight: 700;
      }
      #marketOverviewPanel .pool-flow-split {
        margin: 12px 16px 16px;
        height: min(92vh, 1160px);
        min-height: 900px;
        align-items: stretch;
        --market-overview-head-row1-h: 34px;
        --market-overview-head-row2-h: 40px;
        --market-overview-head-total-h: 74px;
      }
      #marketOverviewPanel .pool-flow-split.has-reference {
        --market-overview-head-row2-h: 74px;
        --market-overview-head-total-h: 108px;
      }
      #marketOverviewPanel .pool-flow-split .compare-table {
        border-collapse: separate;
        border-spacing: 0;
      }
      #marketOverviewPanel .pool-flow-fixed {
        height: 100%;
        max-height: none;
        overflow-x: hidden;
        overflow-y: auto;
        scrollbar-width: none;
      }
      #marketOverviewPanel .pool-flow-fixed::-webkit-scrollbar {
        width: 0;
        height: 0;
      }
      #marketOverviewPanel .pool-flow-scroll {
        height: 100%;
        max-height: none;
      }
      #marketOverviewPanel .pool-flow-fixed .w-name {
        min-width: 168px;
        max-width: 188px;
      }
      #marketOverviewPanel .pool-flow-fixed .w-rank {
        min-width: 74px;
      }
      #marketOverviewPanel .pool-flow-fixed .w-type-rank {
        min-width: 88px;
      }
      #marketOverviewPanel .pool-flow-fixed .w-pos {
        min-width: 118px;
      }
      #marketOverviewPanel .pool-flow-fixed .w-net {
        min-width: 152px;
      }
      #marketOverviewPanel .pool-flow-fixed .w-pct {
        min-width: 132px;
      }
      #marketOverviewPanel .pool-flow-split .compare-table tbody td {
        height: 24px;
        padding-top: 2px !important;
        padding-bottom: 2px !important;
        line-height: 1.15;
        vertical-align: middle;
      }
      #marketOverviewPanel .pool-flow-split .compare-table thead th {
        padding-top: 5px !important;
        padding-bottom: 5px !important;
        line-height: 1.22;
        vertical-align: middle;
        color: #334155;
        font-weight: 900;
        font-size: 12px;
      }
      #marketOverviewPanel .compare-table thead {
        position: relative;
        z-index: 20;
      }
      #marketOverviewPanel .compare-table thead th {
        position: sticky;
        background: #f1f5f9;
        box-shadow: inset 0 -1px 0 rgba(15, 23, 42, 0.14);
      }
      #marketOverviewPanel .compare-table thead tr:first-child th {
        top: 0;
        height: var(--market-overview-head-row1-h, 34px);
        z-index: 22;
      }
      #marketOverviewPanel .compare-table thead tr:nth-child(2) th {
        top: var(--market-overview-head-row1-h, 34px);
        height: var(--market-overview-head-row2-h, 40px);
        z-index: 21;
      }
      #marketOverviewPanel .compare-table thead tr:first-child th:first-child,
      #marketOverviewPanel .compare-table thead tr:first-child th:nth-child(2),
      #marketOverviewPanel .compare-table thead tr:first-child th:nth-child(3) {
        background: #eaf0f7;
      }
      #marketOverviewPanel .compare-table thead .head-muted {
        color: #475569;
        font-size: 11px;
        font-weight: 900;
        letter-spacing: 0;
        text-transform: none;
        white-space: normal;
      }
      #marketOverviewPanel .compare-table thead .head-group {
        color: #0f172a;
        font-size: 13px;
        font-weight: 900;
      }
      #marketOverviewPanel .pool-flow-fixed .compare-table thead {
        z-index: 24;
      }
      #marketOverviewPanel .pool-flow-fixed .compare-table thead tr:first-child th {
        z-index: 26;
      }
      #marketOverviewPanel .pool-flow-fixed .compare-table thead tr:nth-child(2) th {
        z-index: 25;
      }
      #marketOverviewPanel .market-overview-rank-sub {
        display: inline;
        margin: 0 0 0 3px;
        font-size: 8px;
        white-space: nowrap;
      }
      #marketOverviewPanel .market-overview-name-main {
        display: inline-block;
        max-width: 92px;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
        vertical-align: bottom;
        font-weight: 800;
      }
      #marketOverviewPanel .market-overview-add-track {
        display: inline;
        max-width: 116px;
        padding: 0;
        border: 0;
        background: transparent;
        color: #2563eb;
        font: inherit;
        font-weight: 800;
        cursor: pointer;
        text-align: left;
        text-decoration: none;
        transition: color 0.15s ease;
      }
      #marketOverviewPanel .market-overview-add-track:hover {
        color: #1d4ed8;
      }
      #marketOverviewPanel .market-overview-add-track.is-added {
        color: #64748b;
        cursor: default;
      }
      #marketOverviewPanel .market-overview-add-track.is-loading {
        cursor: progress;
        opacity: 0.72;
      }
      #marketOverviewPanel .market-overview-add-track .market-overview-name-main {
        padding-bottom: 1px;
      }
      .market-overview-interaction-guide {
        display: grid;
        grid-template-columns: minmax(260px, 0.85fr) minmax(320px, 1.15fr);
        gap: 12px;
        margin: 10px 16px 0;
        padding: 12px 14px;
        border: 1px solid #cbd5e1;
        border-radius: 16px;
        background:
          linear-gradient(135deg, rgba(239, 246, 255, 0.88), rgba(248, 250, 252, 0.98));
        color: #334155;
        font-size: 12px;
        line-height: 1.5;
      }
      .market-overview-guide-lead {
        min-width: 0;
      }
      .market-overview-guide-label {
        display: inline-flex;
        align-items: center;
        width: fit-content;
        margin-bottom: 6px;
        padding: 2px 8px;
        border-radius: 999px;
        background: #dbeafe;
        color: #1d4ed8;
        font-size: 10px;
        font-weight: 900;
        letter-spacing: 0.08em;
      }
      .market-overview-interaction-guide strong {
        display: block;
        margin-bottom: 4px;
        color: #0f172a;
        font-weight: 900;
      }
      .market-overview-guide-desc {
        display: block;
        color: #475569;
        font-weight: 700;
      }
      .market-overview-guide-points {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 8px;
      }
      .market-overview-guide-points span {
        padding: 8px 9px;
        border: 1px solid #dbeafe;
        border-radius: 12px;
        background: rgba(255, 255, 255, 0.78);
        color: #475569;
        font-weight: 700;
      }
      .market-overview-guide-points b {
        display: block;
        margin-bottom: 2px;
        color: #1d4ed8;
        font-weight: 900;
      }
      .market-overview-action-status {
        display: none;
        margin: 8px 16px 0;
        padding: 8px 12px;
        border-radius: 12px;
        border: 1px solid #bbf7d0;
        background: #f0fdf4;
        color: #166534;
        font-size: 12px;
        font-weight: 800;
        line-height: 1.5;
      }
      .market-overview-action-status.visible {
        display: inline-flex;
      }
      .market-overview-action-status.error {
        border-color: #fecaca;
        background: #fff1f2;
        color: #be123c;
      }
      #marketOverviewPanel .market-overview-badges {
        display: inline-flex;
        align-items: center;
        gap: 2px;
        margin-left: 3px;
        vertical-align: middle;
        white-space: nowrap;
      }
      #marketOverviewPanel .flow-top-badge {
        margin-left: 0;
        padding: 1px 3px;
        font-size: 8px;
        line-height: 1.1;
      }
      #marketOverviewPanel .pool-flow-scroll .flow-cell .amt {
        display: inline;
      }
      #marketOverviewPanel .pool-flow-scroll .flow-cell .rk {
        display: inline;
        margin: 0 0 0 3px;
        font-size: 8px;
      }
      .market-overview-reference-note {
        display: none;
        grid-column: 1 / -1;
        margin: 0;
        padding: 10px 12px;
        border: 1px solid #dbeafe;
        border-radius: 12px;
        background: rgba(239, 246, 255, 0.92);
        color: #1e3a8a;
        font-size: 12px;
        line-height: 1.6;
      }
      .market-overview-reference-note.visible {
        display: block;
      }
      .market-overview-reference-list {
        display: grid;
        gap: 2px;
        margin-top: 3px;
        text-align: left;
        min-width: 132px;
      }
      .market-overview-reference-item {
        display: block;
        white-space: nowrap;
        font-size: 10px;
        line-height: 1.25;
        color: #64748b;
        font-weight: 700;
      }
      .market-overview-reference-item .ref-type {
        color: #475569;
      }
      .market-overview-reference-item .ref-value {
        color: #94a3b8;
      }
      .market-overview-query-btn {
        position: relative;
        display: inline-flex !important;
        align-items: center;
        justify-content: center;
        min-width: 88px;
        padding: 8px 18px !important;
        border: 1px solid rgba(37, 99, 235, 0.38) !important;
        border-radius: 999px !important;
        background:
          linear-gradient(135deg, rgba(37, 99, 235, 0.96), rgba(14, 165, 233, 0.92)) !important;
        color: #ffffff !important;
        font-size: 13px !important;
        font-weight: 900 !important;
        letter-spacing: 0.03em;
        box-shadow: 0 10px 24px rgba(37, 99, 235, 0.20), inset 0 1px 0 rgba(255,255,255,0.25) !important;
        overflow: hidden;
        transform: translateY(0);
        transition: transform 0.18s ease, box-shadow 0.18s ease, border-color 0.18s ease, filter 0.18s ease;
      }
      .market-overview-query-btn::before {
        content: "";
        position: absolute;
        inset: 0;
        background: linear-gradient(120deg, transparent 0%, rgba(255,255,255,0.34) 42%, transparent 70%);
        transform: translateX(-120%);
        transition: transform 0.55s ease;
      }
      .market-overview-query-btn:hover:not(:disabled) {
        transform: translateY(-1px) !important;
        border-color: rgba(14, 165, 233, 0.7) !important;
        box-shadow: 0 14px 30px rgba(37, 99, 235, 0.28), inset 0 1px 0 rgba(255,255,255,0.28) !important;
        filter: saturate(1.06);
      }
      .market-overview-query-btn:hover:not(:disabled)::before {
        transform: translateX(120%);
      }
      .market-overview-query-btn:active:not(:disabled) {
        transform: translateY(0) scale(0.99) !important;
      }
      .market-overview-query-btn:disabled {
        cursor: wait;
        opacity: 0.78;
        filter: grayscale(0.12);
      }
      .market-overview-query-btn .btn-label {
        position: relative;
        z-index: 1;
      }
      .market-overview-loading {
        align-items: center;
        gap: 8px;
        margin: 8px 16px 0;
        padding: 9px 12px;
        border: 1px solid #bfdbfe;
        border-radius: 14px;
        background: linear-gradient(135deg, #eff6ff, #f8fafc);
        color: #1d4ed8;
        font-size: 12px;
        font-weight: 800;
      }
      .market-overview-loading.is-visible {
        display: inline-flex !important;
        animation: marketOverviewLoadingIn 0.18s ease both;
      }
      .market-overview-loading-spinner {
        width: 13px;
        height: 13px;
        border-radius: 50%;
        border: 2px solid rgba(37, 99, 235, 0.18);
        border-top-color: #2563eb;
        animation: marketOverviewSpin 0.8s linear infinite;
      }
      @keyframes marketOverviewSpin {
        to { transform: rotate(360deg); }
      }
      @keyframes marketOverviewLoadingIn {
        from { opacity: 0; transform: translateY(-3px); }
        to { opacity: 1; transform: translateY(0); }
      }


      /* ===== 分组弹窗 ===== */
      @keyframes groupModalIn {
        from { opacity:0; transform:scale(.93) translateY(20px); }
        to   { opacity:1; transform:scale(1) translateY(0); }
      }
      #groupModal { display:none; position:fixed; inset:0; z-index:9999;
        background:rgba(15,23,42,.6); backdrop-filter:blur(6px);
        align-items:center; justify-content:center; }
      #groupModal.open { display:flex !important; }
      #groupModalBox {
        background:#fff; border-radius:20px;
        box-shadow:0 30px 90px rgba(15,23,42,.32);
        width:min(620px,96vw); max-height:90vh;
        display:flex; flex-direction:column; overflow:hidden;
        animation:groupModalIn .24s cubic-bezier(.34,1.56,.64,1);
      }
      .gm-header { display:flex; align-items:center; gap:10px;
        padding:18px 22px 14px; border-bottom:1px solid #f1f5f9; }
      .gm-icon { font-size:17px; }
      .gm-title { font-size:15px; font-weight:700; color:#0f172a; flex:1; }
      .gm-close { background:none; border:none; font-size:22px; cursor:pointer;
        color:#94a3b8; padding:0 6px; border-radius:7px; line-height:1;
        transition:background .15s,color .15s; }
      .gm-close:hover { background:#f1f5f9; color:#334155; }
      .gm-meta { display:flex; align-items:center; gap:10px;
        padding:12px 22px 10px; border-bottom:1px solid #f8fafc; flex-wrap:wrap; }
      .gm-meta-label { font-size:12px; color:#64748b; white-space:nowrap; }
      #gmNameInput { flex:1; min-width:110px; padding:7px 11px;
        border:1.5px solid #e2e8f0; border-radius:9px;
        font-size:13.5px; color:#0f172a; outline:none;
        transition:border-color .15s; }
      #gmNameInput:focus { border-color:#6366f1; }
      #gmColorInput { width:34px; height:30px; border:1.5px solid #e2e8f0;
        border-radius:8px; padding:2px; cursor:pointer; background:#fff; }
      .gm-search { padding:9px 22px 7px; border-bottom:1px solid #f1f5f9; }
      #gmSearchInput { width:100%; padding:8px 13px;
        border:1.5px solid #e2e8f0; border-radius:10px;
        font-size:13px; color:#0f172a; outline:none;
        background:#f8fafc; box-sizing:border-box;
        transition:border-color .15s,background .15s; }
      #gmSearchInput:focus { border-color:#6366f1; background:#fff; }
      .gm-body { flex:1; overflow-y:auto; padding:4px 10px 10px; }
      .gm-section-hd { font-size:10.5px; font-weight:700; letter-spacing:.07em;
        color:#94a3b8; padding:10px 10px 3px; text-transform:uppercase; }
      .gm-item { display:flex; align-items:center; gap:8px;
        padding:7px 10px; border-radius:9px; cursor:pointer;
        transition:background .12s; user-select:none; }
      .gm-item:hover { background:#f8fafc; }
      .gm-item.gm-checked { background:#eef2ff; }
      .gm-item.gm-checked:hover { background:#e0e7ff; }
      .gm-item input[type=checkbox] { width:15px; height:15px;
        cursor:pointer; accent-color:#6366f1; flex-shrink:0; }
      .gm-item-name { flex:1; font-size:13.5px; color:#0f172a; }
      .gm-item-badge { font-size:10.5px; padding:1px 6px; border-radius:5px;
        font-weight:600; white-space:nowrap; }
      .gm-badge-行业 { background:#fef2f2; color:#b91c1c; }
      .gm-badge-概念 { background:#eff6ff; color:#1d4ed8; }
      .gm-badge-地域 { background:#f5f3ff; color:#5b21b6; }
      .gm-empty { text-align:center; color:#94a3b8; font-size:13px; padding:28px 0; }
      .gm-footer { display:flex; align-items:center; justify-content:space-between;
        gap:10px; padding:13px 22px; border-top:1px solid #f1f5f9; }
      .gm-sel-count { font-size:12px; color:#64748b; }
      .gm-footer-btns { display:flex; gap:8px; }
      .gm-btn-cancel { padding:8px 18px; border-radius:9px;
        border:1.5px solid #e2e8f0; background:#fff;
        color:#64748b; font-size:13px; cursor:pointer;
        transition:background .15s; }
      .gm-btn-cancel:hover { background:#f8fafc; }
      .gm-btn-save { padding:8px 22px; border-radius:9px; border:none;
        background:linear-gradient(135deg,#6366f1,#4f46e5);
        color:#fff; font-size:13px; font-weight:600; cursor:pointer;
        box-shadow:0 2px 8px rgba(99,102,241,.3);
        transition:opacity .15s,box-shadow .15s; }
      .gm-btn-save:hover { opacity:.9; box-shadow:0 4px 16px rgba(99,102,241,.4); }

/* ========== 情绪复盘 v3（浅色商业风） ========== */
      #limitUpReviewBlock{border:1px solid #e6ebf2;border-radius:14px;background:#ffffff;overflow:hidden;box-shadow:0 8px 26px rgba(15,23,42,.05);display:flex;flex-direction:column;max-height:min(980px,calc(100vh - 96px));}
      .lur-header{display:flex;align-items:flex-start;justify-content:space-between;flex-wrap:wrap;gap:10px 16px;padding:14px 18px;border-bottom:1px solid #edf2f7;background:linear-gradient(180deg,#ffffff 0%,#f8fbff 100%);}
      .lur-title-row{display:flex;align-items:center;gap:8px;}
      .lur-icon{font-size:16px;line-height:1;}
      .lur-title{font-size:15px;font-weight:800;color:#1e293b;letter-spacing:.02em;}
      .lur-badge{display:inline-flex;align-items:center;padding:3px 10px;border-radius:999px;font-size:11px;font-weight:700;color:#334155;background:#eef4ff;border:1px solid #dbe7ff;}
      .lur-stats-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
      .lur-stat{display:inline-flex;align-items:baseline;gap:4px;padding:4px 10px;border-radius:8px;font-size:12px;font-weight:800;transition:transform .15s,box-shadow .18s,filter .15s;}
      .lur-stat.up{background:#fff1f2;color:#be123c;}
      .lur-stat.down{background:#f0fdf4;color:#166534;}
      .lur-stat.neutral{background:#f1f5f9;color:#334155;}
      .lur-stat-num{font-size:17px;font-weight:900;line-height:1;font-variant-numeric:tabular-nums;}
      .lur-stat-label{font-size:10.5px;opacity:.85;}
      .lur-controls{padding:11px 16px;background:linear-gradient(180deg,#fcfdff 0%,#f5f9ff 100%);border-bottom:1px solid #edf2f7;display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;flex-shrink:0;}
      .lur-ctrl-group{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
      .lur-ctrl-sep{width:1px;height:24px;background:#dbe3f1;}
      .lur-date-control{height:36px;min-width:205px;padding:0 12px 0 10px;border-radius:12px;background:linear-gradient(180deg,#ffffff 0%,#f4f8ff 100%);border:1px solid #d3e0f5;display:inline-flex;align-items:center;gap:8px;position:relative;box-shadow:0 4px 12px rgba(30,41,59,.07);}
      .lur-date-cal{font-size:13px;opacity:.82;}
      .lur-date-input{appearance:none;-webkit-appearance:none;border:none;background:transparent;padding:0 20px 0 0;font-size:12px;font-weight:800;color:#1e293b;outline:none;line-height:1;min-height:auto;cursor:pointer;width:100%;}
      .lur-date-caret{position:absolute;right:9px;top:50%;transform:translateY(-50%);font-size:10px;color:#64748b;pointer-events:none;}
      .lur-btn-ghost{height:36px;padding:0 14px;border-radius:12px;border:1px solid #d3e0f5;background:linear-gradient(180deg,#ffffff 0%,#f4f8ff 100%);color:#334155;font-size:11px;font-weight:800;cursor:pointer;transition:all .2s ease;box-shadow:0 4px 12px rgba(30,41,59,.06);}
      .lur-btn-ghost:hover{background:#ebf3ff;border-color:#b8cdfa;color:#1d4ed8;}
      .lur-btn-ghost:disabled{opacity:.55;cursor:not-allowed;}
      .lur-chip-group{display:flex;gap:6px;flex-wrap:wrap;}
      .lur-chip{height:28px;padding:0 11px;border-radius:999px;border:1px solid #dbe3ee;background:#fff;color:#475569;font-size:11px;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;transition:all .2s ease;}
      .lur-chip:hover{background:#f8fbff;border-color:#cbd8ef;transform:translateY(-1px);}
      .lur-chip.active{background:#1d4ed8;border-color:#1d4ed8;color:#fff;box-shadow:0 4px 10px rgba(29,78,216,.25);}
      .lur-body.lur-body-loading .lur-panel{opacity:.45;filter:saturate(.88);transform:translateY(2px);transition:all .2s ease;}
      .lur-panel-body.lur-panel-loading{position:relative;overflow:hidden;}
      .lur-panel-body.lur-panel-loading::after{content:'';position:absolute;inset:0;background:linear-gradient(110deg,rgba(248,250,252,.05) 15%,rgba(148,163,184,.18) 38%,rgba(248,250,252,.05) 60%);animation:lurShimmer 1s linear infinite;}
      @keyframes lurShimmer{0%{transform:translateX(-100%);}100%{transform:translateX(100%);}}
      .lur-body{padding:12px;background:#f8fafc;display:grid;grid-template-columns:minmax(0,0.78fr) minmax(0,1.7fr) minmax(0,0.78fr);gap:12px;min-height:250px;position:relative;overflow:hidden;flex:1;align-items:stretch;}
      @media(max-width:1200px){.lur-body{grid-template-columns:1fr;}}
      .lur-panel{border:1px solid #e8eef6;background:#fff;border-radius:12px;display:flex;flex-direction:column;min-height:220px;min-width:0;overflow:hidden;transition:height .18s ease;}
      .lur-panel-head{padding:9px 11px;border-bottom:1px solid #edf2f7;font-size:12px;font-weight:800;color:#334155;background:#fbfdff;display:flex;align-items:center;justify-content:space-between;}
      .lur-panel-body{padding:8px;overflow:auto;min-height:0;}
      .lur-loading{display:flex;align-items:center;justify-content:center;gap:8px;padding:48px 0;color:#94a3b8;font-size:13px;}
      .lur-spinner{display:inline-block;width:16px;height:16px;border:2px solid #e2e8f0;border-top-color:#3b82f6;border-radius:50%;animation:lurSpin .7s linear infinite;}
      @keyframes lurSpin{to{transform:rotate(360deg);}}
      .lur-empty{text-align:center;padding:44px 16px;color:#94a3b8;font-size:13px;}
      .lur-empty-icon{font-size:28px;margin-bottom:8px;opacity:.45;}
      .lur-empty-sub{font-size:11px;color:#cbd5e1;margin-top:6px;}
      .lur-ladder{display:flex;flex-direction:column;gap:10px;}
      .lur-zone{border-radius:10px;overflow:hidden;border:1px solid #e7edf5;}
      .lur-zone--up .lur-zone-head{background:#fff1f2;color:#9f1239;}
      .lur-zone--down .lur-zone-head{background:#f0fdf4;color:#166534;}
      .lur-zone-head{display:flex;align-items:center;justify-content:space-between;padding:6px 9px;font-size:11px;font-weight:800;}
      .lur-zone-title{font-size:12px;}
      .lur-zone-count{font-size:10px;opacity:.7;}
      .lur-zone-body{padding:6px;display:flex;flex-direction:column;gap:4px;background:#fff;}
      .lur-card{display:grid;grid-template-columns:22px 1fr auto;gap:6px;align-items:start;padding:6px;border-radius:8px;border:1px solid #eef2f7;background:#fff;}
      .lur-card--up{background:#fffafb;}
      .lur-card--down{background:#f8fffb;}
      .lur-card-rank{font-size:10px;font-weight:900;color:#64748b;text-align:center;padding-top:2px;}
      .lur-card-info{min-width:0;display:flex;flex-direction:column;gap:2px;}
      .lur-card-row1{display:flex;align-items:center;gap:4px;min-width:0;}
      .lur-card-name{font-size:12px;font-weight:800;color:#1f2937;max-width:8.8em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
      /* 情绪复盘：名称可双击加入股票池，样式接近超链接便于发现 */
      #limitUpReviewBlock .lur-card-name.stock-name-addable{
        cursor:pointer;
        color:#2563eb !important;
        font-weight:800;
        text-decoration:underline;
        text-decoration-color:#93c5fd;
        text-underline-offset:3px;
        text-decoration-thickness:1px;
        transition:color .15s,text-decoration-color .15s,filter .15s;
      }
      #limitUpReviewBlock .lur-card-name.stock-name-addable:hover{
        color:#1d4ed8 !important;
        text-decoration-color:#3b82f6;
        filter:brightness(1.02);
      }
      .lur-card-code{font-size:9.5px;color:#94a3b8;font-family:'SF Mono',ui-monospace,monospace;}
      .lur-card-consec{font-size:9px;font-weight:800;padding:1px 5px;border-radius:999px;background:#f1f5f9;color:#334155;white-space:nowrap;}
      .lur-card-fund{font-size:10px;font-weight:800;white-space:nowrap;font-variant-numeric:tabular-nums;padding-top:2px;display:flex;flex-direction:column;align-items:flex-end;line-height:1.15;}
      .lur-card-fund-sub{font-size:9px;font-weight:700;opacity:.72;}
      .lur-card-fund.pos{color:#dc2626;}
      .lur-card-fund.neg{color:#16a34a;}
      .lur-card-fund.zero{color:#94a3b8;}
      .lur-card-tags{display:flex;flex-wrap:wrap;gap:3px;}
      .lur-card-industry,.lur-card-concept{font-size:9px;font-weight:700;padding:1px 5px;border-radius:4px;white-space:nowrap;}
      .lur-card-industry{background:#eef2ff;color:#4338ca;}
      .lur-card-concept{background:#fff7ed;color:#9a3412;}
      .lur-hmap-wrap{display:flex;flex-direction:column;gap:8px;}
      .lur-hmap-sec-label{font-size:10px;font-weight:800;color:#64748b;letter-spacing:.04em;padding-bottom:4px;border-bottom:1px solid #edf2f7;}
      /* old hmap styles removed - see new styles below */
      /* ===== stats 2行 + tooltip ===== */
      .lur-stats-block{display:flex;flex-direction:column;gap:7px;align-items:flex-end;}
      .lur-stats-row{display:flex;align-items:center;gap:7px;}
      .lur-stats-row-label{font-size:9.5px;font-weight:700;color:#94a3b8;letter-spacing:.03em;white-space:nowrap;}
      .lur-stat-sep{display:inline-block;width:1px;height:14px;background:#dde4ef;margin:0 2px;}
      .lur-stat.dimup{background:#fff5f5;color:#e11d48;opacity:.82;}
      .lur-stat.dimdown{background:#f0fdf4;color:#15803d;opacity:.82;}
      .lur-stat-tip-wrap{position:relative;display:inline-flex;}
      .lur-stat-hoverable{cursor:default;transition:all .15s;}
      .lur-stat-hoverable:hover{transform:translateY(-1px);box-shadow:0 5px 14px rgba(15,23,42,.14);filter:brightness(.97);}
      .lur-stat-tip{display:none;position:absolute;top:calc(100% + 8px);right:0;background:#0f172a;color:#f1f5f9;border-radius:10px;padding:10px 12px;min-width:150px;z-index:999;box-shadow:0 10px 30px rgba(15,23,42,.30);pointer-events:none;border:1px solid rgba(148,163,184,.26);white-space:nowrap;}
      .lur-stat-tip::before{content:'';position:absolute;bottom:100%;right:12px;border:5px solid transparent;border-bottom-color:#1e293b;}
      .lur-stat-tip-wrap:hover .lur-stat-tip{display:block;animation:lurTipIn .12s ease;}
      @keyframes lurTipIn{from{opacity:0;transform:translateY(-4px);}to{opacity:1;transform:none;}}
      .lur-tip-row{display:flex;align-items:center;gap:6px;padding:2.5px 0;}
      .lur-tip-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0;}
      .lur-tip-k{font-size:11px;font-weight:600;color:#cbd5e1;flex:1;}
      .lur-tip-v{font-size:13px;font-weight:800;color:#f8fafc;font-variant-numeric:tabular-nums;}
      .lur-interact-flash{animation:lurInteractFlash .22s ease;}
      @keyframes lurInteractFlash{0%{background-color:rgba(59,130,246,.00);}50%{background-color:rgba(59,130,246,.06);}100%{background-color:rgba(59,130,246,.00);}}
      /* ===== checkbox 板块筛选 ===== */
      .lur-filter-wrap{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
      .lur-filter-label{font-size:10px;font-weight:800;color:#64748b;letter-spacing:.04em;white-space:nowrap;}
      .lur-cb-group{display:flex;gap:6px;flex-wrap:wrap;}
      .lur-cb-item{display:inline-flex;align-items:center;gap:4px;cursor:pointer;user-select:none;}
      .lur-cb-item input[type=checkbox]{appearance:none;-webkit-appearance:none;width:14px;height:14px;border:1.5px solid #c8d6ea;border-radius:4px;background:#fff;cursor:pointer;position:relative;flex-shrink:0;transition:all .15s ease;}
      .lur-cb-item input[type=checkbox]:checked{background:#1d4ed8;border-color:#1d4ed8;}
      .lur-cb-item input[type=checkbox]:checked::after{content:'';position:absolute;left:3px;top:0px;width:5px;height:8px;border:1.5px solid #fff;border-top:none;border-left:none;transform:rotate(43deg);}
      .lur-cb-item input[type=checkbox]:hover{border-color:#93b4de;}
      .lur-cb-text{font-size:11px;font-weight:700;color:#475569;transition:color .15s;}
      .lur-cb-item:has(input:checked) .lur-cb-text{color:#1d4ed8;}
      .lur-cb-item.lur-cb-st input[type=checkbox]:checked{background:#dc2626;border-color:#dc2626;}
      .lur-cb-item.lur-cb-st:has(input:checked) .lur-cb-text{color:#dc2626;}
      /* ===== 热力图新设计 ===== */
      .lur-heat-outer{display:flex;flex-direction:column;height:100%;min-height:0;overflow:hidden;}
      .lur-heat-header{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid #edf2f7;background:linear-gradient(180deg,#ffffff 0%,#f8fbff 100%);flex-shrink:0;overflow:hidden;}
      .lur-heat-title{font-size:13px;font-weight:900;color:#334155;letter-spacing:.02em;}
      .lur-heat-switcher{position:relative;display:inline-flex;align-items:center;background:#eaf0f8;border:1px solid #d9e3f2;border-radius:10px;padding:2px;overflow:hidden;}
      .lur-heat-sw-btn{position:relative;z-index:1;padding:5px 13px;border:none;background:transparent;font-size:11.5px;font-weight:800;color:#64748b;cursor:pointer;border-radius:8px;transition:color .22s;white-space:nowrap;}
      .lur-heat-sw-btn.active{color:#1d4ed8;}
      .lur-heat-sw-pill{position:absolute;top:2px;left:2px;height:calc(100% - 4px);border-radius:8px;background:#ffffff;box-shadow:0 4px 10px rgba(15,23,42,.12);transition:transform .28s cubic-bezier(.2,.8,.2,1),width .28s cubic-bezier(.2,.8,.2,1);pointer-events:none;z-index:0;}
      .lur-heat-slide-wrap{flex:1;min-height:0;overflow:hidden;}
      .lur-heat-slide-track{display:block;height:100%;}
      .lur-heat-slide{display:none;min-width:0;height:100%;overflow-y:auto;padding:12px;box-sizing:border-box;}
      .lur-heat-slide.active{display:block;}
      .lur-heat-sec-title{font-size:12px;font-weight:900;color:#334155;letter-spacing:.02em;padding:5px 0 8px;border-bottom:1.5px solid #e8eef6;display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;}
      .lur-heat-sec-title span{font-size:10.5px;font-weight:600;color:#94a3b8;}
      .lur-hmap-row{display:grid;grid-template-columns:minmax(128px,1.15fr) minmax(120px,1fr) minmax(120px,1fr) 70px minmax(124px,.85fr);align-items:center;gap:10px;min-height:30px;padding:3px 0;border-bottom:1px dashed #edf2f7;}
      .lur-hmap-row:last-child{border-bottom:none;}
      .lur-hmap-label{font-size:12px;font-weight:800;color:#334155;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
      .lur-hmap-label-count{font-size:11px;font-weight:700;color:#64748b;margin-left:4px;}
      .lur-hmap-bar-wrap{height:12px;border-radius:999px;background:#e7edf5;overflow:hidden;}
      .lur-hmap-bar{height:100%;border-radius:999px;min-width:2px;transition:width .35s ease;}
      .lur-hmap-cell-bar{display:grid;grid-template-columns:26px minmax(0,1fr);align-items:center;gap:6px;}
      .lur-hmap-cell-bar .lur-hmap-bar-wrap{height:8px;background:#edf2f7;}
      .lur-hmap-cell-bar .lur-hmap-v{font-size:10px;font-weight:800;color:#475569;text-align:right;font-variant-numeric:tabular-nums;}
      .lur-hmap-bar--up{background:linear-gradient(90deg,#fca5a5,#ef4444);}
      .lur-hmap-bar--down{background:linear-gradient(90deg,#86efac,#22c55e);}
      .lur-hmap-bar--ind{background:linear-gradient(90deg,#fca5a5,#ef4444);}
      .lur-hmap-bar--con{background:linear-gradient(90deg,#93c5fd,#3b82f6);}
      .lur-type-badge{display:inline-flex;align-items:center;padding:1px 5px;border-radius:999px;font-size:9px;font-weight:800;line-height:1;vertical-align:middle;}
      .lur-type-badge--ind{background:#fee2e2;color:#b91c1c;border:1px solid #fecaca;}
      .lur-type-badge--con{background:#dbeafe;color:#1d4ed8;border:1px solid #bfdbfe;}
      .lur-hmap-label-main{display:inline-flex;align-items:center;gap:5px;min-width:0;max-width:100%;}
      .lur-hmap-side{display:flex;align-items:center;justify-content:flex-end;gap:6px;font-size:12px;line-height:1.2;font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap;color:#334155;}
      .lur-hmap-side-sep{color:#94a3b8;font-weight:600;}
      .lur-hmap-rank{color:#334155;}
      .lur-hmap-meta{color:#334155;}
      .lur-hmap-meta--in{color:#dc2626;}
      .lur-hmap-meta--out{color:#16a34a;}
      .lur-hmap-empty{font-size:11px;color:#94a3b8;padding:10px 0;text-align:center;}
      .lur-hmap-sort{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap;}
      .lur-hmap-sort-label{display:inline-flex;align-items:center;gap:3px;font-size:10px;font-weight:800;color:#94a3b8;letter-spacing:.04em;text-transform:uppercase;}
      .lur-hmap-sort-btn{
        border:1px solid #cfd9e8;
        background:linear-gradient(180deg,#ffffff,#f8fbff);
        border-radius:999px;
        padding:2px 9px;
        font-size:10.5px;
        font-weight:800;
        color:#475569;
        cursor:pointer;
        line-height:1.55;
        box-shadow:0 1px 2px rgba(15,23,42,.06);
        transition:all .16s ease;
      }
      .lur-hmap-sort-btn:hover{
        border-color:#93c5fd;
        color:#1e3a8a;
        background:#eff6ff;
        transform:translateY(-1px);
      }
      .lur-hmap-sort-btn.active{
        background:linear-gradient(180deg,#dbeafe,#bfdbfe);
        border-color:#60a5fa;
        color:#1d4ed8;
        box-shadow:0 2px 6px rgba(37,99,235,.22);
      }
      .lur-hmap-strength{font-size:12px;font-weight:800;color:#0f172a;text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;}
      .lur-hmap-head{display:grid;grid-template-columns:minmax(128px,1.15fr) minmax(120px,1fr) minmax(120px,1fr) 70px minmax(124px,.85fr);align-items:center;gap:10px;padding:3px 0 6px;border-bottom:1px solid #e5edf8;margin-bottom:6px;}
      .lur-hmap-th{font-size:10px;font-weight:800;color:#64748b;letter-spacing:.02em;white-space:nowrap;}
      .lur-hmap-th.sortable{cursor:pointer;user-select:none;padding:2px 6px;border-radius:8px;display:inline-flex;align-items:center;gap:4px;justify-self:start;}
      .lur-hmap-th.sortable:hover{background:#eef2ff;color:#1e3a8a;}
      .lur-hmap-th.sortable.active{background:#dbeafe;color:#1d4ed8;}
      .lur-hmap-th .arrow{font-size:9px;opacity:.75;}
      /* 连板内部热力图 */
      .lur-streak-list{display:flex;flex-direction:column;gap:14px;}
      .lur-streak-block{border:1px solid #e8eef6;border-radius:10px;overflow:hidden;box-shadow:0 1px 4px rgba(15,23,42,.04);}
      .lur-streak-head{display:flex;align-items:center;justify-content:space-between;padding:7px 12px;font-size:13px;font-weight:900;}
      .lur-streak-head--up{background:linear-gradient(90deg,#fff1f2,#ffe4e6);color:#9f1239;}
      .lur-streak-head--down{background:linear-gradient(90deg,#f0fdf4,#dcfce7);color:#166534;}
      .lur-streak-head-cnt{font-size:11.5px;font-weight:700;opacity:.85;}
      .lur-streak-body{padding:8px;display:flex;flex-direction:column;gap:4px;background:#fff;}
      .lur-streak-sub-label{font-size:9.5px;font-weight:700;color:#94a3b8;letter-spacing:.05em;text-transform:uppercase;margin:5px 0 3px;padding-bottom:3px;border-bottom:1px dashed #edf2f7;}
      .lur-streak-mini-row{display:grid;grid-template-columns:minmax(56px,0.85fr) minmax(0,1fr) 40px;align-items:center;gap:6px;min-height:22px;}
      .lur-streak-mini-label{font-size:12px;font-weight:800;color:#334155;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
      .lur-streak-mini-bar-wrap{height:9px;border-radius:999px;background:#f1f5f9;overflow:hidden;}
      .lur-streak-mini-bar{height:100%;border-radius:999px;min-width:2px;transition:width .32s ease;}
      .lur-streak-mini-bar--up{background:linear-gradient(90deg,#fca5a5,#ef4444);}
      .lur-streak-mini-bar--down{background:linear-gradient(90deg,#86efac,#22c55e);}
      .lur-streak-mini-cnt{font-size:11px;font-weight:800;color:#64748b;text-align:right;font-variant-numeric:tabular-nums;}
