@charset "UTF-8";
/* ============================================================
   灵犀Quant v3.0 — 全局样式（湖蓝 + 蓝白渐变 + 毛玻璃卡片）
   改全站样式只改这一个文件
============================================================ */

:root {
  /* 品牌色 */
  --brand:          #4a8bc2;
  --brand-dark:     #3a6fa0;
  --brand-light:    #d0e3f2;
  /* 背景 */
  --bg-start:       #dce8f5;
  --bg-end:         #f4f7fc;
  --bg-gradient:    linear-gradient(180deg, #dce8f5 0%, #f4f7fc 100%);
  /* 卡片（毛玻璃） */
  --card-bg:        rgba(255, 255, 255, 0.92);
  --card-blur:      blur(12px);
  --card-border:    1px solid rgba(255, 255, 255, 0.75);
  --card-shadow:    0 2px 10px rgba(0, 0, 0, 0.06);
  /* 文字（[2026-08-21] 调大+加深对比，面向中老年用户视力友好） */
  --text-primary:   #0f172a;
  --text-secondary: #1e293b;
  --text-muted:     #334155;
  /* 数据色 */
  /* 行情色（A股习惯：涨红跌绿，勿与状态色混用） */
  --up:             #dc2626;
  --down:           #0d9488;
  /* 状态色（与行情色分离，避免"跌绿=成功绿/涨红=错误红"误读） */
  --success:        #16a34a;
  --warning:        #d97706;
  --danger:         #b91c1c;
  --info:           #4a8bc2;
  /* 形状 */
  --radius-card:    12px;
  --radius-btn:     8px;
  --radius-input:   8px;
  --radius-tag:     4px;
  /* 尺寸 */
  --nav-height:     48px;
  --topbar-height:  44px;
  /* 字体（[2026-08-21] 全站放大一档） */
  --font-sans:      'PingFang SC', 'Microsoft YaHei', -apple-system, sans-serif;
  --font-mono:      'SF Mono', 'Consolas', 'Courier New', monospace;
  --font-xs:        12px;
  --font-sm:        13px;
  --font-base:      15px;
  --font-md:        17px;
  --font-lg:        19px;
  --font-xl:        23px;
  --transition:     0.2s ease;
  /* [2026-08-21] 字号缩放档位：fs-lg=大(默认) fs-xl=特大 */
  --fs-scale:       1;
}
html.fs-lg { --font-xs: 13px; --font-sm: 14px; --font-base: 16px; --font-md: 18px; --font-lg: 20px; --font-xl: 24px; }
html.fs-xl { --font-xs: 14px; --font-sm: 15px; --font-base: 17px; --font-md: 19px; --font-lg: 22px; --font-xl: 26px; }

*,*::before,*::after { box-sizing: border-box; margin: 0; padding: 0; }

html, body {
  font-family: var(--font-sans);
  background: linear-gradient(135deg, #4a8bc2 0%, #7eaad6 20%, #b8d4ee 45%, #dce4f0 68%, #ffffff 100%); background-attachment: fixed;
  color: var(--text-primary);
  min-height: 100vh;
}

::-webkit-scrollbar { width: 6px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: rgba(0,0,0,0.12); border-radius: 999px; }
::-webkit-scrollbar-thumb:hover { background: rgba(0,0,0,0.2); }

/* ========== 毛玻璃卡片 ========== */
.glass-card {
  position: relative;
  background: var(--card-bg);
  backdrop-filter: var(--card-blur);
  border: var(--card-border);
  border-radius: var(--radius-card);
  box-shadow: var(--card-shadow);
  padding: 18px;
  transition: var(--transition);
  overflow: hidden;
}
.glass-card:hover { box-shadow: 0 6px 20px rgba(0, 0, 0, 0.1); transform: translateY(-2px); }

/* ========== 导航栏 ========== */
/* ========== Top Bar V3.0 品牌蓝渐变 ========== */
#top-bar { display: flex; align-items: center; justify-content: space-between; padding: 0 28px; height: 38px; flex-shrink: 0; z-index: 100;
  /* [2026-08-22] 回归最早品牌蓝 + 半透明玻璃感 */
  background: linear-gradient(90deg, rgba(28,83,134,0.88) 0%, rgba(47,111,168,0.88) 45%, rgba(74,139,194,0.88) 100%);
  backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);
  color: #ffffff; position: sticky; top: 0; border-radius: 0;
  border-bottom: none;   /* [2026-08-22] 取消名称与菜单栏之间的横线 */
  box-shadow: 0 2px 14px rgba(28,83,134,0.30); }
/* [2026-08-22] 顶部细线改蓝色系（保留轻微科技感） */
#top-bar::before { content: ""; position: absolute; top: 0; left: 0; right: 0; height: 1px;
  background: linear-gradient(90deg, transparent, rgba(191,219,254,0.90) 30%, rgba(147,197,253,0.90) 70%, transparent);
  box-shadow: 0 0 8px rgba(96,165,250,0.55); }
.top-left { display: flex; align-items: center; gap: 0; flex-shrink: 0; }
.site-logo { display: flex; align-items: center; }
.site-name { font-size: 20px; font-weight: 700; white-space: nowrap;
  color: #1e293b; text-shadow: 0 0 1px rgba(255,255,255,0.35); background: none;
  -webkit-text-fill-color: currentColor; filter: none; }
.index-scroll { display: flex; align-items: center; gap: 0; overflow: hidden; flex: 1; justify-content: center; font-size: 13px; color: rgba(255,255,255,0.85); white-space: nowrap; }
.index-scroll .item { white-space: nowrap; margin: 0 4px; }
.index-scroll .dot { color: rgba(255,255,255,0.35); margin: 0 2px; }
.index-scroll .name { color: rgba(255,255,255,0.65); margin-right: 2px; }
.index-scroll .up { color: #ffd9d9; font-weight: 400; }
.index-scroll .down { color: #a8e6da; font-weight: 400; }
.top-right { display: flex; align-items: center; gap: 12px; flex-shrink: 0; }
.status-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--success); box-shadow: 0 0 6px rgba(22,163,74,0.8); }
/* [v3.6.1] QMT 离线红灯闪烁 */
@keyframes qmt-blink { 0%,100% { opacity: 1; } 50% { opacity: 0.15; } }
.status-dot.offline-blink { animation: qmt-blink 1.1s ease-in-out infinite; box-shadow: 0 0 6px rgba(220,38,38,0.8); }
.toggle-switch { position: relative; width: 38px; height: 20px; cursor: pointer; display: inline-block; vertical-align: middle; flex-shrink: 0; }
.toggle-switch .track { width: 100%; height: 100%; border-radius: 10px; background: linear-gradient(90deg, #8b5cf6, #4f46e5); transition: var(--transition); box-shadow: inset 0 1px 2px rgba(0,0,0,0.18), 0 0 8px rgba(139,92,246,0.45); }
.toggle-switch.off .track { background: rgba(255,255,255,0.32); box-shadow: inset 0 1px 2px rgba(0,0,0,0.15); }
.toggle-switch .thumb { position: absolute; top: 2px; left: 2px; width: 16px; height: 16px; border-radius: 50%; background: #fff; transition: var(--transition); box-shadow: 0 1px 3px rgba(0,0,0,0.3); }
.toggle-switch.off .thumb { left: 20px; }
.icon-btn { background: none; border: none; color: rgba(15,23,42,0.85); font-size: 16px; cursor: pointer; padding: 2px 4px; border-radius: 6px; transition: var(--transition); }
.icon-btn:hover { color: #0f172a; background: rgba(0,0,0,0.08); }
.top-avatar { display: flex; align-items: center; gap: 6px; cursor: pointer; padding: 2px 8px; border-radius: 8px; transition: var(--transition); }
.top-avatar:hover { background: rgba(0,0,0,0.08); }
.top-avatar span { font-size: 13px; color: #1e293b; font-weight: 500; }

#nav-tabs { width: 100%; max-width: none; margin: 0;
  display: flex; align-items: center; justify-content: center; gap: 4px;
  padding: 8px 28px 10px;
  flex-shrink: 0; z-index: 99; overflow-x: auto;
  /* [2026-08-22] 与 #top-bar 完全一致的品牌蓝渐变（无微光/无边框/无阴影，之间零分割） */
  background: linear-gradient(90deg, rgba(28,83,134,0.88) 0%, rgba(47,111,168,0.88) 45%, rgba(74,139,194,0.88) 100%);
  backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);
  color: rgba(255,255,255,0.88);
  border-bottom: none;
  box-shadow: none;
  position: sticky; top: 38px; border-radius: 0;
}
/* [2026-08-26] 菜单栏上下两条信号流动线：柔和蓝光点从左到右循环（象征信号传输流动） */
#nav-tabs::before { content: ""; position: absolute; top: 0; left: 0; right: 0; height: 2px;
  background: linear-gradient(90deg, transparent, rgba(147,197,253,0.32) 18%, rgba(96,165,250,0.60) 50%, rgba(147,197,253,0.32) 82%, transparent);
  background-size: 320px 100%; background-repeat: no-repeat;
  animation: lingxiFlowX 3.8s linear infinite;
  pointer-events: none; z-index: 2; }
#nav-tabs::after { content: ""; position: absolute; bottom: 0; left: 0; right: 0; height: 2px;
  background: linear-gradient(90deg, transparent, rgba(147,197,253,0.32) 18%, rgba(96,165,250,0.60) 50%, rgba(147,197,253,0.32) 82%, transparent);
  background-size: 320px 100%; background-repeat: no-repeat;
  animation: lingxiFlowX 3.8s linear infinite;
  animation-delay: 1.9s;
  pointer-events: none; z-index: 2; }
@keyframes lingxiFlowX { from { background-position: -320px 0; } to { background-position: calc(100% + 320px) 0; } }
#nav-tabs .nav-tab { text-decoration: none;
  padding: 8px 16px; font-size: var(--font-base);
  color: rgba(255,255,255,0.88); cursor: pointer;
  transition: var(--transition); white-space: nowrap;
  background: transparent; border: none; border-radius: 14px;
  font-family: var(--font-sans);
}
#nav-tabs .nav-tab:hover { color: #ffffff; background: rgba(255,255,255,0.16); border-radius: 14px; }
#nav-tabs .nav-tab.active { color: #1c5386; background: rgba(255,255,255,0.80); border-radius: 14px; font-weight: 600; box-shadow: 0 2px 10px rgba(28,83,134,0.35); }

/* ========== 页面容器 ========== */
#page-container { flex: 1; overflow-y: auto; overflow-x: hidden; padding: 20px 24px; }
.page { display: none; }
.page.active { display: block; }

/* ========== 区块标题 ========== */
.section-title {
  font-size: var(--font-md); font-weight: 400;
  color: var(--text-primary); margin-bottom: 14px;
}

/* ========== 按钮 ========== */
.btn-primary {
  background: linear-gradient(90deg, #4a8bc2 0%, #6c5ce7 50%, #8b5cf6 100%); border: none; color: #fff;
  padding: 10px 22px; border-radius: var(--radius-btn);
  font-size: var(--font-base); cursor: pointer;
  font-family: var(--font-sans); font-weight: 400;
  transition: var(--transition);
}
.btn-primary:hover { background: var(--brand-dark); }
.btn-primary:active { transform: scale(0.97); }

/* ========== 输入框 ========== */
input[type="text"], input[type="password"], input[type="number"], input[type="date"],
textarea, select {
  width: 100%; padding: 9px 12px;
  background: rgba(255,255,255,0.82); border: 1px solid rgba(0,0,0,0.12);
  border-radius: var(--radius-input); color: var(--text-primary);
  font-size: var(--font-base); font-family: var(--font-sans);
  outline: none; transition: var(--transition);
}
input:focus, textarea:focus, select:focus {
  border-color: var(--brand); box-shadow: 0 0 0 3px rgba(74,139,194,0.12);
}

/* ========== 数据表 ========== */
table { width: 100%; border-collapse: collapse; }
table th {
  text-align: left; padding: 8px 10px;
  font-size: var(--font-sm); color: var(--text-muted);
  font-weight: 400; border-bottom: none;
}
table td {
  padding: 8px 10px; font-size: var(--font-base);
  border-bottom: 1px solid rgba(0,0,0,0.04);
}
table tr:hover td { background: var(--brand-light); }

/* ========== 状态标签 ========== */
.tag {
  display: inline-block; padding: 2px 8px;
  border-radius: var(--radius-tag); font-size: var(--font-xs);
}
.tag-pending  { background: rgba(74,139,194,0.12); color: var(--brand); }
.tag-executed { background: rgba(22,163,74,0.12);   color: var(--success); }
.tag-failed   { background: rgba(185,28,28,0.12);  color: var(--danger); }
.tag-read     { background: rgba(217,119,6,0.12);  color: var(--warning); }

/* ========== 底部 ========== */
.footer-links {
  text-align: center; padding: 14px 20px 10px;
  color: var(--text-muted); font-size: var(--font-sm);
  border-top: 1px solid rgba(0,0,0,0.06); margin-top: 16px;
}
.footer-links a { color: var(--text-secondary); margin: 0 6px; text-decoration: none; }
.footer-links a:hover { color: var(--brand); }

/* ========== 移动端 ========== */
@media (max-width: 768px) {
  #page-container { padding: 12px; }
  .glass-card { padding: 14px; }
  #nav-tabs { border-radius: 24px; padding: 6px 8px; }
  #nav-tabs .nav-tab { text-decoration: none; padding: 6px 10px; font-size: var(--font-sm); }
}

/* === 移动端适配 === */
@media (max-width: 768px) {
  main {
  max-width: 1400px;
  margin: 0 auto; padding: 12px !important; }
  [style*="grid-template-columns:repeat(6"] { grid-template-columns: repeat(3,1fr) !important; }
  [style*="grid-template-columns:repeat(8"] { grid-template-columns: repeat(4,1fr) !important; }
  [style*="grid-template-columns:repeat(4"] { grid-template-columns: repeat(2,1fr) !important; }
  [style*="grid-template-columns:1fr 1fr"] { grid-template-columns: 1fr !important; }
  [style*="grid-template-columns:repeat(3"] { grid-template-columns: 1fr !important; }
  .glass-card { padding: 14px; }
  #nav-tabs { border-radius: 24px; padding: 6px 8px; overflow-x: auto; }
  #nav-tabs .nav-tab { text-decoration: none; padding: 6px 10px; font-size: 12px; }
  table { font-size: 11px; }
  table th, table td { padding: 6px 4px; }
}
@media (max-width: 480px) {
  #top-bar { padding: 0 8px; height: 40px; }
  #top-bar .index-scroll { font-size: 11px; gap: 10px; }
  #top-bar .top-right { gap: 8px; }
  main {
  max-width: 1400px;
  margin: 0 auto; padding: 8px !important; }
}

/* === 冻结表头 === */
/* v3.9 移动端：指数条窄屏可横向滑动查看全部（原 overflow:hidden 会硬裁切） */
@media (max-width: 768px) {
  #top-bar .index-scroll { overflow-x: auto; justify-content: flex-start; min-width: 0; scrollbar-width: none; -webkit-overflow-scrolling: touch; }
  #top-bar .index-scroll::-webkit-scrollbar { display: none; }
}
table { position: relative; }
table thead { position: sticky; top: 0; z-index: 1; background: var(--card-bg); }
table th { background: var(--card-bg); }

/* === 深色主题 === */
[data-theme="dark"] body { background: #0f172a; }
[data-theme="dark"] .glass-card { background: rgba(30,41,59,0.85); border-color: rgba(255,255,255,0.08); color: #e2e8f0; }
[data-theme="dark"] .glass-card:hover { box-shadow: 0 6px 20px rgba(0,0,0,0.4); transform: translateY(-2px); }
[data-theme="dark"] input,[data-theme="dark"] textarea,[data-theme="dark"] select { background: rgba(30,41,59,0.6); border-color: rgba(255,255,255,0.1); color: #e2e8f0; }
[data-theme="dark"] table th { color: #94a3b8; border-bottom-color: rgba(255,255,255,0.08); }
[data-theme="dark"] table td { border-bottom-color: rgba(255,255,255,0.04); }
[data-theme="dark"] table tr:hover td { background: rgba(74,139,194,0.08); }
[data-theme="dark"] #nav-tabs { border-radius: 24px; background: rgba(15,23,42,0.6); backdrop-filter: blur(8px); border-bottom-color: rgba(255,255,255,0.08); }
[data-theme="dark"] #nav-tabs .nav-tab { text-decoration: none; color: #94a3b8; }
[data-theme="dark"] #nav-tabs .nav-tab:hover { background: rgba(74,139,194,0.22); color: #ffffff; }
[data-theme="dark"] .footer-links { border-top-color: rgba(255,255,255,0.06); }

/* === 表格移动端横向滚动 === */
@media (max-width: 768px) { .table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; } }




/* ========== V3 Dashboard Styles ========== */
.cards-row{display:grid;grid-template-columns:repeat(6,1fr);gap:10px;margin-bottom:14px}
@media (max-width:900px){.cards-row{grid-template-columns:repeat(3,1fr)}}
@media (max-width:500px){.cards-row{grid-template-columns:repeat(2,1fr)}}
.overview-card{text-align:center;padding:18px 10px;cursor:pointer;transition:var(--transition);background:rgba(255,255,255,0.55);border:1px solid rgba(74,139,194,0.12);border-radius:12px}
.overview-card:hover{transform:translateY(-2px);box-shadow:0 4px 16px rgba(74,139,194,0.15)}
.overview-card .label{font-size:13px;color:var(--text-secondary);margin-bottom:8px}
.glass-card .overview-card .value{font-size:24px;font-weight:700;color:var(--text-primary);letter-spacing:-0.3px}
.overview-card .value.negative{color:var(--danger)}
.overview-card .desc{font-size:11px;color:var(--text-muted);margin-top:6px;opacity:0.85}

.pos-cards{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-bottom:16px}
.pos-cards .glass-card{min-width:0;padding:16px 12px}
/* [2026-08-22] 持仓分析顶部卡文字与个人中心资产概况一致（24px 加粗） */
.pos-cards .overview-card .label{font-size:13px;color:var(--text-secondary);margin-bottom:8px}
.pos-cards .overview-card .value{font-size:24px;font-weight:700;color:var(--text-primary);letter-spacing:-0.3px}
.pos-cards .overview-card .desc{font-size:11px;color:var(--text-muted);margin-top:6px;opacity:0.85}
.stats-row{display:grid;grid-template-columns:repeat(8,1fr);gap:8px;margin-bottom:14px}
@media (max-width:1100px){.pos-cards{grid-template-columns:repeat(3,1fr)}}
@media (max-width:640px){.pos-cards{grid-template-columns:repeat(2,1fr)}}
@media (max-width:900px){.stats-row{grid-template-columns:repeat(4,1fr)}}
@media (max-width:500px){.stats-row{grid-template-columns:repeat(2,1fr)}}
.stat-card{text-align:center;padding:10px 8px;cursor:pointer;transition:var(--transition)}
.stat-card:hover{transform:translateY(-1px);box-shadow:0 2px 10px rgba(74,139,194,0.12)}
.stat-card .s-label{font-size:11px;color:var(--text-muted);margin-bottom:4px}
.stat-card .s-value{font-size:14px;font-weight:400}
.s-value.c-green{color:var(--success)}
.s-value.c-red{color:var(--danger)}
.s-value.c-blue{color:var(--info)}
.s-value.c-yellow{color:var(--warning)}
.s-value.c-gray{color:var(--text-muted)}
.s-value.c-white{color:var(--text-primary)}
.s-value.c-up{color:var(--up)}
.s-value.c-down{color:var(--down)}
.stat-card.round{display:flex;flex-direction:column;align-items:center;gap:8px;padding:12px 6px;background:transparent;box-shadow:none;text-align:center}
.stat-card.round .ring{width:64px;height:64px;border-radius:50%;display:flex;align-items:center;justify-content:center;border:4px solid var(--brand);background:rgba(24,95,165,0.06);flex:none;box-shadow:inset 0 2px 8px rgba(0,0,0,0.06),0 3px 10px rgba(24,95,165,0.18)}
.stat-card.round .s-label{font-size:11px;color:var(--text-muted)}
.stat-card.round .s-value{font-size:15px;font-weight:600}

.today-pl-card{text-align:center;display:flex;flex-direction:column;justify-content:center;padding:20px 16px}
.today-pl-card .big-pl{font-size:30px;font-weight:400;color:var(--up);line-height:1.2;overflow-wrap:break-word;word-break:break-all}
.today-pl-card .big-pl.negative{color:var(--down)}
.today-pl-card .pl-pct{font-size:16px;color:var(--up);margin-top:4px}
.today-pl-card .pl-pct.negative{color:var(--down)}
.today-pl-card .trade-info{font-size:12px;color:var(--text-muted);margin-top:8px;line-height:1.6}

.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);grid-template-rows:repeat(6,1fr);gap:4px;flex:1;min-height:0}
.calendar-grid .day-cell{display:flex;align-items:center;justify-content:center;flex-direction:column;border-radius:8px;font-size:12px;background:rgba(0,0,0,0.02);cursor:default;position:relative;transition:var(--transition);min-height:34px}
.calendar-grid .day-cell:hover{background:rgba(74,139,194,0.08)}
.calendar-grid .day-cell.today{background:var(--brand-light);font-weight:400}
.calendar-grid .day-cell .date{font-size:11px;color:var(--text-secondary)}
.calendar-grid .day-cell .amount{font-size:10px;margin-top:1px;font-weight:400}
.calendar-grid .day-cell .amount.profit{color:var(--up)}
.calendar-grid .day-cell .amount.loss{color:var(--down)}
.calendar-grid .day-header{text-align:center;font-size:11px;color:var(--text-muted);padding:4px 0;font-weight:400}

.charts-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}
@media (max-width:768px){.charts-row{grid-template-columns:1fr}}
.chart-card{padding:14px;position:relative}
.chart-card canvas{max-height:240px}

.dashboard-bottom-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:14px;margin-bottom:14px}
@media (max-width:768px){.dashboard-bottom-grid{grid-template-columns:1fr}}

/* Dark theme overrides for dashboard */
[data-theme="dark"] .calendar-grid .day-cell{background:rgba(255,255,255,0.03)}
[data-theme="dark"] .calendar-grid .day-cell:hover{background:rgba(255,255,255,0.08)}
[data-theme="dark"] .calendar-grid .day-cell.today{background:rgba(74,139,194,0.15);border-color:var(--brand)!important}


/* ========== Service Page Styles ========== */
.checkin-section .checkin-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}
.checkin-section .checkin-streak{font-size:13px;color:var(--text-secondary)}
.checkin-section .checkin-week{display:grid;grid-template-columns:repeat(7,1fr);gap:8px;margin-bottom:14px}
.checkin-section .checkin-day{text-align:center;padding:10px 6px;border-radius:10px;background:rgba(0,0,0,0.03);font-size:12px;transition:var(--transition)}
.checkin-section .checkin-day .day-name{color:var(--text-muted);font-size:11px;margin-bottom:4px}
.checkin-section .checkin-day .day-icon{font-size:16px}
.checkin-section .checkin-day .day-reward{color:var(--warning);font-size:11px}
.checkin-section .checkin-day.checked{background:rgba(13,148,136,0.1)}
.checkin-section .checkin-day.checked .day-icon{color:var(--success)}
.checkin-section .checkin-day.today{border:2px solid var(--brand)}
.checkin-btn{width:100%;padding:12px;background:var(--brand);border:none;border-radius:10px;color:#fff;font-size:15px;cursor:pointer;font-weight:600;font-family:var(--font-sans);transition:var(--transition)}
.checkin-btn:hover{background:var(--brand-dark)}
.checkin-btn.done{background:rgba(0,0,0,0.06);color:var(--text-muted);cursor:default}
.exec-lamp{width:12px;height:12px;border-radius:50%;display:inline-block;flex:none}
.exec-lamp[data-blink="1"]{animation:execBlink 1.2s ease-in-out infinite}
@keyframes execBlink{0%,100%{opacity:1}50%{opacity:0.25}}
.service-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:16px;max-width:100%;margin-left:auto;margin-right:auto}
@media (max-width:768px){.service-grid{grid-template-columns:repeat(2,1fr)}}
@media (max-width:480px){.service-grid{grid-template-columns:repeat(2,1fr)}}

/* ========== View Tabs (折叠卡片式) ========== */
.view-tabs{display:flex;gap:8px;margin-bottom:16px;flex-wrap:wrap}
.view-tab{padding:8px 18px;border-radius:14px;border:1px solid rgba(0,0,0,0.08);background:rgba(255,255,255,0.3);color:var(--text-secondary);cursor:pointer;font-size:13px;font-weight:400;transition:var(--transition);font-family:var(--font-sans)}
.view-tab:hover{background:rgba(255,255,255,0.6);color:#0f172a;border-color:var(--brand-light)}
.view-tab.active{background:var(--brand);color:#fff;border-color:var(--brand)}

/* Tab content card */
.tab-card{display:block}
.tab-card.hidden{display:none}

/* Strategy card grid */
.strategy-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
@media (max-width:1200px){.strategy-grid{grid-template-columns:repeat(2,1fr)}}
@media (max-width:768px){.strategy-grid{grid-template-columns:1fr}}
.strategy-card{cursor:pointer;transition:var(--transition);padding:18px;width:100%;box-sizing:border-box;border:none !important;box-shadow:0 4px 16px rgba(15,23,42,0.08)}
.strategy-card:hover{transform:translateY(-3px);box-shadow:0 8px 24px rgba(15,23,42,0.14)}
.strategy-card .sc-name{font-size:16px;font-weight:500;margin-bottom:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.strategy-card .sc-author{font-size:12px;color:var(--text-muted);margin-bottom:12px}
.strategy-card .sc-stats{display:flex;flex-wrap:wrap;gap:8px}
.strategy-card .sc-stat{flex:1;min-width:80px;text-align:center;padding:8px 4px;background:rgba(0,0,0,0.02);border-radius:6px}
.strategy-card .sc-stat .v{font-size:18px;font-weight:500}
.strategy-card .sc-stat .l{font-size:11px;color:var(--text-muted);margin-top:2px}
.strategy-card .sc-action{margin-top:12px;text-align:center}

/* [v3.6.1] 策略卡片 v2 排版：状态徽章+主指标+次级指标+底部栏 */
.sc-head{display:flex;align-items:center;gap:8px;padding:14px 16px 0}
.sc-badge{display:inline-flex;align-items:center;gap:5px;font-size:11px;padding:3px 10px;border-radius:999px;background:rgba(0,0,0,0.05);color:var(--text-secondary);flex:none;white-space:nowrap;font-weight:600}
.sc-badge .dot{width:6px;height:6px;border-radius:50%}
.sc-badge.run{background:rgba(13,148,136,0.14);color:#0d9488}
.sc-badge.run .dot{background:#0d9488}
.sc-badge.stop{background:rgba(148,163,184,0.18);color:#475569}
.sc-badge.stop .dot{background:#64748b}
.sc-main{display:flex;align-items:flex-end;justify-content:space-between;gap:10px;padding:12px 16px 0}
.sc-annual-label{font-size:11px;color:var(--text-muted);margin-bottom:2px}
.sc-annual{font-size:26px;font-weight:500;line-height:1;letter-spacing:-0.5px}
.sc-chip{font-size:12px;font-weight:500;padding:4px 10px;border-radius:8px;flex:none;white-space:nowrap}
.sc-cells{display:flex;gap:6px;padding:12px 16px 0}
.sc-cell{flex:1;min-width:0;background:rgba(0,0,0,0.03);border-radius:8px;padding:8px 4px;text-align:center}
.sc-cell .v{font-size:15px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sc-cell .l{font-size:11px;color:var(--text-muted);margin-top:2px}
.sc-foot{display:flex;justify-content:space-between;align-items:center;margin-top:12px;padding:8px 16px 12px;border-top:1px solid rgba(0,0,0,0.05);font-size:11px;color:var(--text-muted)}
.sc-tag{font-size:11px;background:rgba(24,95,165,0.08);color:var(--brand);border-radius:6px;padding:1px 7px;flex:none}
[data-theme="dark"] .sc-cell{background:rgba(255,255,255,0.05)}
[data-theme="dark"] .sc-badge{background:rgba(255,255,255,0.08)}
[data-theme="dark"] .sc-foot{border-top-color:rgba(255,255,255,0.08)}
[data-theme="dark"] .sc-tag{background:rgba(74,139,194,0.15)}

/* QMT toggle on strategy card */
.qmt-toggle-wrapper{position:absolute;top:12px;right:12px;z-index:2}
.qmt-toggle{position:relative;width:36px;height:20px;cursor:pointer;border-radius:10px;background:rgba(74,139,194,0.32);transition:var(--transition)}
.qmt-toggle.off{background:rgba(0,0,0,0.08)}
.qmt-toggle .thumb{position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,0.18);transition:var(--transition)}
.qmt-toggle.off .thumb{left:18px;background:#cbd5e1;box-shadow:none}

/* Community post card */
.post-card{margin-bottom:12px}
.post-card .pc-header{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.post-card .pc-avatar{width:32px;height:32px;border-radius:50%;background:var(--brand);color:#fff;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:400;flex-shrink:0}
.post-card .pc-author{font-weight:400;font-size:13px}
.post-card .pc-time{font-size:11px;color:var(--text-muted);margin-left:auto}
.post-card .pc-body{line-height:1.7;margin-bottom:10px;font-size:13px}
.post-card .pc-actions{display:flex;gap:16px;font-size:12px;color:var(--text-muted)}
.post-card .pc-actions span{cursor:pointer;padding:4px 8px;border-radius:6px;transition:var(--transition)}
.post-card .pc-actions span:hover{background:rgba(0,0,0,0.04)}

/* Community compose */
.compose-card textarea{width:100%;min-height:100px;border:1px solid rgba(0,0,0,0.1);border-radius:8px;padding:10px;font-family:var(--font-sans);font-size:13px;resize:vertical}
.compose-card textarea:focus{border-color:var(--brand);outline:none}.service-entry{text-align:center;padding:24px 16px;cursor:pointer;transition:var(--transition);display:flex;flex-direction:column;align-items:center;gap:12px;margin:0;border-radius:14px}
.service-entry:hover{transform:translateY(-2px);box-shadow:0 4px 16px rgba(74,139,194,0.2);background:rgba(255,255,255,0.8)}
.service-entry .s-icon{font-size:28px}
.service-entry .s-name{font-size:14px;color:#1e293b;font-weight:400}
.service-entry .s-desc{font-size:11px;color:var(--text-muted)}

/* ========== Service Detail V2.0 ========== */
.service-detail{padding:12px 0}
.service-detail .back-btn{background:none;border:none;color:var(--brand);font-size:13px;cursor:pointer;margin-bottom:12px;font-family:var(--font-sans);padding:0}
.service-detail .back-btn:hover{color:var(--brand-dark)}
.vip-plans{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
@media (max-width:768px){.vip-plans{grid-template-columns:1fr}}
.vip-plan{text-align:center;padding:20px 14px;border:2px solid transparent}
.vip-plan.featured{border-color:var(--brand);box-shadow:0 2px 12px rgba(74,139,194,0.15)}
.vip-plan .plan-name{font-size:16px;font-weight:400;margin-bottom:6px;color:var(--text-primary)}
.vip-plan .plan-price{font-size:24px;font-weight:400;color:var(--brand);margin:8px 0}
.vip-plan .plan-desc{font-size:12px;color:var(--text-muted);line-height:1.6}
.vip-plan .buy-plan-btn{margin-top:12px;background:var(--brand);border:none;color:#fff;padding:8px 24px;border-radius:8px;font-size:13px;cursor:pointer;font-family:var(--font-sans);transition:var(--transition)}
.vip-plan .buy-plan-btn:hover{background:var(--brand-dark)}
.query-btn{background:var(--brand);border:none;color:#fff;padding:6px 16px;border-radius:8px;font-size:13px;cursor:pointer;font-family:var(--font-sans)}
.query-btn:hover{background:var(--brand-dark)}
.cancel-btn{background:rgba(0,0,0,0.06);border:1px solid rgba(0,0,0,0.12);color:var(--text-secondary);padding:8px 18px;border-radius:8px;cursor:pointer;font-family:var(--font-sans);font-size:13px}
.cancel-btn:hover{background:rgba(0,0,0,0.1)}
.confirm-btn{background:var(--brand);border:none;color:#fff;padding:8px 18px;border-radius:8px;cursor:pointer;font-family:var(--font-sans);font-size:13px}
.confirm-btn:hover{background:var(--brand-dark)}

/* ========== Service Entry V2.0 ========== */


/* ========== Alert Ticker V2.0 ========== */
.ticker-item{height:28px;line-height:28px;padding:0 10px;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ticker-item.normal{color:rgba(255,255,255,0.88);font-weight:400}
.ticker-item.warn{color:#fbbf24;font-weight:400}
.ticker-item.danger{color:#f87171;font-weight:400}
.ticker-item .ticker-time{color:rgba(255,255,255,0.6);font-weight:400;margin-right:6px}
#tickerTrack{position:absolute;width:100%;transition:transform 0.4s ease,opacity 0.3s ease}


/* ========== Golden Ratio Layout ========== */
.section-white {
  background: rgba(255,255,255,0.65);
  border-radius: 16px;
  padding: 18px;
  margin-bottom: 0;
}
.charts-row {
  display: grid;
  grid-template-columns: 3fr 2fr;
  gap: 18px;
}
@media (max-width: 768px) {
  .charts-row { grid-template-columns: 1fr; }
}
.chart-card, .cal-card {
  position: relative;
}
.chart-card canvas, .cal-card canvas {
  max-height: 240px;
}
.cal-card {
  padding: 0;
}
main {
  max-width: 1400px;
  margin: 0 auto;
}

/* ========== Blue Gradient Chart Card ========== */
.chart-blue {
  background: linear-gradient(135deg, #4a90d9 0%, #6ba3e0 20%, #8eb8e8 40%, #a8c0e0 65%, #f8faff 100%) !important;
  color: #fff !important;
  border: none !important;
}
.chart-blue .section-title {
  color: #fff !important;
}

.glass-card table th { background: transparent; }

.glass-card table thead { background: transparent; }




/* Card text sizing */
.glass-card .label{font-size:12px;font-weight:400;color:var(--text-muted)}
.glass-card .value{font-size:16px;font-weight:400}
.glass-card .desc{font-size:11px;font-weight:400;color:var(--text-muted)}
/* ========== 信号页美化 ========== */
/* 方向指示灯 */
.arrow-buy,.arrow-sell{display:inline-flex;align-items:center;gap:4px;font-weight:700;padding:2px 10px;border-radius:100px;font-size:12px;line-height:1.5}
.arrow-buy{color:#0d9488;background:rgba(13,148,136,0.10)}
.arrow-sell{color:#dc2626;background:rgba(220,38,38,0.10)}
.arrow-buy::before{content:'\25B2';font-size:10px}
.arrow-sell::before{content:'\25BC';font-size:10px}
.status-dot{display:inline-flex;align-items:center;gap:5px;padding:2px 10px 2px 6px;border-radius:100px;font-size:11px;line-height:1.5}
.status-dot::before{content:'';width:7px;height:7px;border-radius:50%;flex-shrink:0}
.status-dot.pending{background:rgba(59,130,246,0.10);color:#3b82f6}
.status-dot.pending::before{background:#3b82f6}
.status-dot.executed{background:rgba(22,163,74,0.10);color:var(--success)}
.status-dot.executed::before{background:var(--success)}
.status-dot.failed{background:rgba(220,38,38,0.10);color:#dc2626}
.status-dot.failed::before{background:#dc2626}
.status-dot.ignored,.status-dot.read{background:rgba(148,163,184,0.15);color:#64748b}
.status-dot.ignored::before,.status-dot.read::before{background:#94a3b8}

/* ============================================================
   v3.6.1 全局样式统一：折叠卡片 / 日历导航 / 通用空状态
============================================================ */
.dash-section-head{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;cursor:pointer;user-select:none;-webkit-user-select:none}
.dash-section-head:hover{background:rgba(0,0,0,0.02);border-radius:12px 12px 0 0}
.dash-section-head .collapse-arrow{color:var(--text-muted);font-size:12px;transition:transform 0.2s}
.dash-section-body{padding:4px 18px 16px}
.cal-nav{background:var(--brand);color:#fff;border:none;padding:4px 10px;border-radius:6px;cursor:pointer;font-size:13px}
[data-theme="dark"] .dash-section-head:hover{background:rgba(255,255,255,0.04)}
/* 通用空状态提示 */
.empty-state{display:flex;align-items:center;justify-content:center;padding:32px;color:var(--text-muted);font-size:12px;min-height:100px}
/* 卡片统一 hover 提升（全站） */
.glass-card{transition:box-shadow 0.2s, transform 0.2s}

/* 卡片与话题标签 */
.cat-chip{font-size:12px;padding:4px 12px;border-radius:14px;border:1px solid rgba(0,0,0,0.08);background:rgba(255,255,255,0.3);color:var(--text-secondary);cursor:pointer;transition:all .15s}
.cat-chip.active{background:var(--brand);color:#fff;border-color:var(--brand)}
/* [v4.0] 策略类型标签 chips */
.tag-chip{font-size:12px;padding:4px 12px;border-radius:14px;border:1px solid rgba(139,92,246,0.25);background:rgba(139,92,246,0.06);color:#7c3aed;cursor:pointer;transition:all .15s;font-family:var(--font-sans)}
.tag-chip:hover{background:rgba(139,92,246,0.14)}
.tag-chip.active{background:#7c3aed;color:#fff;border-color:#7c3aed}
.t-chip{font-size:12px;padding:4px 12px;border-radius:14px;border:1px solid rgba(0,0,0,0.1);background:rgba(255,255,255,0.4);color:var(--text-secondary);cursor:pointer;transition:all .15s}
.t-chip:hover{border-color:#7c3aed;color:#7c3aed}
.t-chip.sel{background:#7c3aed;color:#fff;border-color:#7c3aed}
.cat-tag{font-size:10px;background:var(--brand-light);color:var(--brand-dark);padding:2px 8px;border-radius:10px}
.post-card .pc-expand{white-space:nowrap}

/* v3.6.1 资金流向 流入/流出 tab */
.flow-tab{font-size:11px;padding:3px 12px;border-radius:12px;background:rgba(0,0,0,0.05);color:var(--text-secondary);cursor:pointer;transition:all .15s;user-select:none;-webkit-user-select:none}
.flow-tab.active{background:var(--brand);color:#fff}
.flow-tab:hover{opacity:.85}
[data-theme="dark"] .flow-tab{background:rgba(255,255,255,0.08);color:#94a3b8}
[data-theme="dark"] .flow-tab.active{background:var(--brand);color:#fff}

/* ================= v3.9 增量：设计 token 族（纯新增，不影响既有渲染） ================= */
:root{
  /* 间距 4px 基数 */
  --sp-1:4px; --sp-2:8px; --sp-3:12px; --sp-4:16px;
  --sp-5:24px; --sp-6:32px; --sp-7:48px; --sp-8:64px;
  /* 阴影三级 */
  --shadow-sm:0 1px 3px rgba(15,23,42,.10);
  --shadow-md:0 4px 12px rgba(15,23,42,.12);
  --shadow-lg:0 12px 32px rgba(15,23,42,.16);
  /* 动效时长与缓动（仅 transform/opacity） */
  --dur-fast:.15s; --dur-base:.2s; --dur-slow:.3s;
  --ease-out:cubic-bezier(.25,.8,.25,1);
  /* 键盘焦点环（无障碍） */
  --focus-ring:0 0 0 3px rgba(74,139,194,.45);
}

/* 键盘可达：焦点可见增强（不削减浏览器默认 outline，仅叠加品牌焦点环） */
:focus-visible{outline:2px solid var(--brand);outline-offset:2px;box-shadow:var(--focus-ring);border-radius:4px}

/* 动效降级：尊重系统"减少动态效果"偏好 */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms !important;animation-iteration-count:1 !important;
    transition-duration:.01ms !important;scroll-behavior:auto !important}
}

/* 触控友好：移动端可点元素最小命中区（仅增强，不改变既有布局尺寸） */
@media (max-width:576px){
  .icon-btn,.clickable,.nav-tab,.flow-tab,.t-chip,button,input[type="button"]{min-height:40px}
}

/* [2026-09-11] 折叠卡变体：信号监控/持有分析等页面的卡片自带 padding，折叠头不再额外缩进 */
.lx-fold .dash-section-head{padding:0 0 10px}
.lx-fold .dash-section-head:hover{background:transparent;border-radius:0}
.lx-fold .dash-section-body{padding:0}
.lx-fold[data-fold-open="0"] .dash-section-head{padding-bottom:0}
.lx-fold .dash-section-head .collapse-arrow{font-size:13px;color:var(--text-muted)}

/* [2026-09-11] 策略卡片右上角「下单设置」入口（直达 signal-exec.html?obj=策略名） */
.sc-set{flex:none;width:28px;height:28px;border-radius:8px;border:1px solid rgba(15,23,42,0.12);
  background:rgba(255,255,255,0.72);color:var(--text-secondary);font-size:14px;line-height:1;
  cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;transition:all .15s}
.sc-set:hover{border-color:var(--brand);color:var(--brand);background:rgba(74,139,194,0.12)}
.sc-set:active{transform:scale(0.94)}
.sc-del{flex:none;width:28px;height:28px;border-radius:8px;border:1px solid rgba(15,23,42,0.12);
  background:rgba(255,255,255,0.72);color:var(--text-secondary);font-size:13px;line-height:1;
  cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;transition:all .15s}
.sc-del:hover{border-color:#dc2626;color:#dc2626;background:rgba(220,38,38,0.10)}
.sc-del:active{transform:scale(0.94)}

/* [2026-09-11] 全站统一 SVG 线性图标类
   规范与菜单栏 header.js 完全一致：viewBox 0 0 24 24 / fill none /
   stroke currentColor / stroke-width 2.4 / linecap+linejoin round。
   用法：<svg class="ico" viewBox="0 0 24 24"><path d="..."/></svg>
   尺寸可用内联 style 覆盖；颜色继承父级 color（或内联 style="color:..."）。*/
.ico{width:17px;height:17px;flex:none;fill:none;stroke:currentColor;stroke-width:2.4;
  stroke-linecap:round;stroke-linejoin:round;display:block}
.ico-lg{width:40px;height:40px;stroke-width:1.8}
