
/* === Mobile responsive v20260628 === */
@media (max-width: 768px) {
  .bull-nav-group { display:flex; overflow-x:auto; -webkit-overflow-scrolling:touch; white-space:nowrap; gap:4px; }
  .bull-nav-item { font-size:14px !important; padding:6px 12px !important; flex-shrink:0; }
  .bull-main { display:flex; flex-direction:column; }
  .bull-results { order:-1; }
  .bull-hero { order:0; }
  .bull-left { order:1; }
}/* ============ 小牛人选股 - 样式 ============ */
@keyframes fadeIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }
* { margin:0; padding:0; box-sizing:border-box; }
:root {
  --bg-deep: #f5f6f8;
  --bg-base: #eef0f4;
  --bg-surface: #ffffff;
  --bg-elevated: #f8f9fb;
  --bg-overlay: #eaecf0;
  --border-subtle: #e5e7eb;
  --border-default: #d1d5db;
  --border-strong: #9ca3af;
  --text-primary: #1f2937;
  --text-secondary: #6b7280;
  --text-muted: #9ca3af;
  --accent-amber: #d97706;
  --accent-amber-dim: #b45309;
  --accent-amber-glow: rgba(217,119,6,0.08);
  --accent-green: #16a34a;
  --accent-red: #dc2626;
  --accent-blue: #2563eb;
  --accent-purple: #7c3aed;
  --accent-cyan: #0d9488;
  --accent-orange: #ea580c;
  --glow-amber: rgba(217,119,6,0.1);
  --glow-green: rgba(22,163,74,0.1);
  --glow-red: rgba(220,38,38,0.1);
  --radius-sm: 6px;
  --radius-md: 10px;
  --radius-lg: 14px;
  --shadow-md: 0 4px 16px rgba(0,0,0,0.08);
  --shadow-lg: 0 8px 30px rgba(0,0,0,0.1);
  --transition-fast: .15s ease;
  --transition-normal: .25s ease;
}
body { font-family:'Microsoft YaHei','PingFang SC',-apple-system,sans-serif; background:var(--bg-deep); color:var(--text-primary); overflow-x:hidden; -webkit-tap-highlight-color:transparent; }
body.drag-active, body.drag-active * { -webkit-user-select:none !important; user-select:none !important; }
button, a, select, .bull-wl-group-tab, .hot-item, .bull-result-item { touch-action:manipulation; }

/* === 顶栏 === */
.bull-topbar { background:linear-gradient(180deg, #fffdf7 0%, #fff9eb 100%); border-bottom:2px solid rgba(217,119,6,0.15); padding:0 20px; display:flex; flex-direction:column; position:relative; box-shadow:0 1px 6px rgba(217,119,6,0.06); }
.bull-topbar::after { content:''; position:absolute; bottom:-2px; left:0; right:0; height:2px; background:linear-gradient(90deg, transparent, var(--accent-amber), var(--accent-orange), transparent); opacity:0.5; }
.bull-topbar-row1 { display:flex; align-items:center; gap:8px; padding:6px 0 2px; }
.bull-topbar-row2 { display:flex; align-items:center; gap:8px; padding:2px 0 6px; }
.bull-brand { display:flex; align-items:center; gap:6px; flex-shrink:0; }
.bull-logo { font-size:20px; filter:drop-shadow(0 0 4px rgba(217,119,6,0.3)); }
.bull-topbar h1 { font-size: 17px; background:linear-gradient(135deg, var(--accent-amber), var(--accent-orange)); -webkit-background-clip:text; -webkit-text-fill-color:transparent; background-clip:text; white-space:nowrap; letter-spacing:0.5px; font-weight:700; line-height:1.2; }
.bull-phase-tag { background:linear-gradient(135deg, var(--accent-cyan), #22d3ee); -webkit-background-clip:text; -webkit-text-fill-color:transparent; background-clip:text; font-size: 10px; font-weight:800; letter-spacing:0.5px; border:1px solid rgba(13,148,136,0.3); border-radius:3px; padding:0 4px; margin-left:2px; }
.bull-nav-group { display:flex; align-items:center; gap:0; }
.bull-nav-item { background:transparent; border:none; border-radius:8px; padding:6px 16px; min-height:32px; color:var(--text-secondary); font-size: 13px; cursor:pointer; transition:all var(--transition-fast); white-space:nowrap; text-decoration:none; font-weight:400; display:inline-flex; align-items:center; }
.bull-nav-item:hover { color:var(--accent-amber); background:rgba(217,119,6,0.06); }
.bull-nav-item.active { background:linear-gradient(135deg, #c2410c, var(--accent-amber)); color:#fff; font-weight:600; box-shadow:0 2px 8px rgba(217,119,6,0.3); }

/* 顶栏搜索已隐藏，主搜索在中间空状态 */
.bull-search-box { display:none; }
.bull-search-input { flex:1; background:var(--bg-deep); border:1px solid var(--border-default); border-radius:var(--radius-sm); padding:7px 12px; color:var(--text-primary); font-size: 16px; outline:none; transition:border var(--transition-fast), box-shadow var(--transition-fast); }
.bull-search-input:focus { border-color:var(--accent-amber); box-shadow:0 0 0 3px var(--glow-amber); }
.bull-search-btn { background:linear-gradient(135deg, var(--accent-amber-dim), var(--accent-amber)); border:none; border-radius:var(--radius-sm); padding:7px 16px; color:#fff; font-size: 15px; cursor:pointer; white-space:nowrap; transition:all var(--transition-fast); font-weight:500; }
.bull-search-btn:hover { box-shadow:0 0 12px var(--glow-amber); transform:translateY(-1px); }
.bull-search-btn:disabled { background:var(--bg-overlay); cursor:not-allowed; box-shadow:none; transform:none; }
.bull-dropdown { position:absolute; top:42px; left:0; width:100%; background:var(--bg-surface); border:1px solid var(--border-default); border-radius:var(--radius-sm); max-height:260px; overflow-y:auto; z-index:999; display:none; box-shadow:var(--shadow-lg); }
.bull-dropdown.show { display:block; }
.bull-dropdown .search-item { padding:8px 14px; cursor:pointer; font-size: 15px; display:flex; justify-content:space-between; transition:background var(--transition-fast); }
.bull-dropdown .search-item:hover { background:var(--bg-elevated); }
.bull-dropdown .code { color:var(--accent-blue); }
.bull-dropdown .name { color:var(--text-primary); }

/* 中间空状态搜索框 */
.bull-empty-search { display:flex; gap:8px; margin-top:4px; margin-bottom:16px; width:100%; max-width:440px; position:relative; }
.bull-empty-input { flex:1; background:var(--bg-surface); border:1.5px solid var(--border-default); border-radius:var(--radius-sm); padding:10px 14px; color:var(--text-primary); font-size: 16px; outline:none; transition:border var(--transition-fast), box-shadow var(--transition-fast); }
.bull-empty-input:focus { border-color:var(--accent-amber); box-shadow:0 0 0 3px var(--glow-amber); }
.bull-empty-input::placeholder { color:var(--text-muted); font-size: 14px; }
.bull-empty-btn { background:linear-gradient(135deg, var(--accent-amber-dim), var(--accent-amber)); border:none; border-radius:var(--radius-sm); padding:10px 24px; color:#fff; font-size: 15px; font-weight:600; cursor:pointer; white-space:nowrap; transition:all var(--transition-fast); }
.bull-empty-btn:hover { box-shadow:0 0 12px var(--glow-amber); transform:translateY(-1px); }
.bull-empty-btn:active { transform:translateY(0); }
.bull-empty-btn:disabled { background:var(--bg-overlay); cursor:not-allowed; box-shadow:none; transform:none; }
#bullEmptyDropdown { top:44px; }

/* 空状态快速标签 */
.bull-empty-tags { display:flex; flex-wrap:wrap; gap:8px; justify-content:center; margin-bottom:12px; }
.bull-empty-tag { background:var(--bg-elevated); border:1px solid var(--border-subtle); border-radius:14px; padding:4px 14px; font-size: 13px; color:var(--text-secondary); cursor:pointer; transition:all var(--transition-fast); }
.bull-empty-tag:hover { border-color:var(--accent-amber); color:var(--accent-amber); background:var(--glow-amber); }

/* 重新搜索按钮 */
.bull-research-btn { background:var(--bg-elevated); border:1px solid var(--border-default); border-radius:var(--radius-sm); padding:3px 10px; color:var(--accent-amber); font-size: 12px; cursor:pointer; white-space:nowrap; transition:all var(--transition-fast); margin-left:6px; }
.bull-research-btn:hover { background:var(--accent-amber); color:#fff; border-color:var(--accent-amber); }

.bull-logout-link { color:var(--text-muted); font-size: 13px; cursor:pointer; transition:color var(--transition-fast); }
.bull-logout-link:hover { color:var(--accent-red); }
.bull-topbar-right { margin-left:auto; display:flex; align-items:center; gap:10px; }

/* === 主体 === */
.bull-main { display:flex; min-height:calc(100dvh - 42px); }
.bull-left { width:420px; background:var(--bg-surface); border-right:1px solid var(--border-subtle); overflow-y:auto; flex-shrink:0; padding:16px; }
.bull-left::-webkit-scrollbar { width:4px; }
.bull-left::-webkit-scrollbar-thumb { background:var(--border-default); border-radius:2px; }
.bull-right { flex:1; display:flex; flex-direction:column; overflow:hidden; background:var(--bg-deep); }

/* 空状态全宽 */
.bull-main:has(.bull-empty:not([style*="display: none"])) .bull-left { display:none; }
.bull-main:has(.bull-empty:not([style*="display: none"])) .bull-right { width:100%; }

/* 单股分析模式：左栏全宽，右栏隐藏 */
.bull-main.detail-mode .bull-left { width:100%; flex:1; flex-shrink:1; border-right:none; max-width:960px; margin:0 auto; }
.bull-main.detail-mode .bull-right { display:none; }

/* === 市场情绪卡片 === */
.bull-sentiment-card { background:var(--bg-elevated); border-radius:var(--radius-md); padding:14px 16px; margin-bottom:14px; border:1px solid var(--border-subtle); }
.bull-sentiment-card h3 { font-size: 14px; color:var(--text-secondary); margin-bottom:10px; font-weight:500; }
.sentiment-body { display:flex; align-items:center; gap:16px; }
.sentiment-gauge { width:120px; height:80px; }
.sentiment-info { display:flex; flex-direction:column; gap:4px; }
.sentiment-level { font-size: 24px; font-weight:700; }
.sentiment-signal { font-size: 13px; color:var(--text-secondary); }

/* === 牛人指数英雄卡 === */
.bull-hero { background:var(--bg-elevated); border-radius:var(--radius-md); padding:18px 16px; margin-bottom:14px; border:1px solid var(--border-subtle); display:flex; flex-direction:column; align-items:center; gap:10px; position:relative; }
.bull-back-to-results-btn { position:absolute; top:12px; left:12px; background:var(--bg-surface); border:1px solid var(--border-default); border-radius:6px; padding:6px 14px; font-size:13px; color:var(--text-secondary); cursor:pointer; transition:all var(--transition-fast); z-index:2; }
.bull-back-to-results-btn:hover { background:var(--accent-amber); color:#fff; border-color:var(--accent-amber); }
.bull-wl-back-btn { display:none; background:none; border:none; font-size:14px; color:var(--text-secondary); cursor:pointer; padding:4px 8px; margin-right:4px; white-space:nowrap; }
.bull-index-circle { width:110px; height:110px; border-radius:50%; display:flex; flex-direction:column; align-items:center; justify-content:center; border:4px solid var(--accent-amber); background:var(--bg-surface); box-shadow:0 0 20px var(--glow-amber); }
.bull-index-num { font-size: 32px; font-weight:800; color:var(--accent-amber); line-height:1; }
.bull-index-label { font-size: 11px; color:var(--text-muted); margin-top:2px; }
.bull-hero-meta { display:flex; flex-wrap:wrap; align-items:center; gap:8px; }
.bull-stock-title { font-size: 18px; font-weight:600; }
.bull-stock-price { font-size: 18px; font-weight:600; }
.bull-stock-change { font-size: 14px; font-weight:500; }
.bull-action-badge { font-size: 13px; padding:3px 10px; border-radius:20px; font-weight:500; background:var(--bg-overlay); color:var(--text-secondary); }
.bull-action-badge.positive { background:var(--glow-green); color:var(--accent-green); }
.bull-action-badge.cautious { background:rgba(217,119,6,0.1); color:var(--accent-amber); }
.bull-action-badge.negative { background:var(--glow-red); color:var(--accent-red); }
.bull-highlights, .bull-warnings { display:flex; flex-wrap:wrap; gap:6px; margin-top:4px; }
.bull-highlights span { background:var(--glow-green); color:var(--accent-green); padding:3px 10px; border-radius:20px; font-size: 12px; font-weight:500; }
.bull-warnings span { background:var(--glow-red); color:var(--accent-red); padding:3px 10px; border-radius:20px; font-size: 12px; font-weight:500; }

/* === 雷达图 === */
.bull-radar-card { background:var(--bg-elevated); border-radius:var(--radius-md); padding:14px 16px; margin-bottom:14px; border:1px solid var(--border-subtle); }
.bull-radar-card h3 { font-size: 14px; color:var(--text-secondary); margin-bottom:10px; font-weight:500; }
.bull-radar-chart { width:100%; height:300px; }

/* === 维度详情 === */
.bull-dims-card { background:var(--bg-elevated); border-radius:var(--radius-md); padding:14px 16px; margin-bottom:14px; border:1px solid var(--border-subtle); }
.bull-dims-card h3 { font-size: 14px; color:var(--text-secondary); margin-bottom:10px; font-weight:500; }
.bull-dim-item { margin-bottom:12px; }
.bull-dim-header { display:flex; justify-content:space-between; align-items:center; margin-bottom:4px; }
.bull-dim-name { font-size: 14px; font-weight:500; }
.bull-dim-score { font-size: 14px; font-weight:600; }
.bull-dim-bar-bg { width:100%; height:6px; background:var(--bg-overlay); border-radius:3px; overflow:hidden; }
.bull-dim-bar-fill { height:100%; border-radius:3px; transition:width .6s ease; }
.bull-dim-signal { font-size: 12px; color:var(--text-muted); margin-top:2px; }

/* === 技术指标详情 === */
.bull-tech-detail-card { background:var(--bg-elevated); border-radius:var(--radius-md); padding:14px 16px; margin-bottom:14px; border:1px solid var(--border-subtle); }
.bull-tech-detail-card h3 { font-size: 14px; color:var(--text-secondary); margin-bottom:10px; font-weight:500; }
.bull-tech-indicator { margin-bottom:12px; padding-bottom:10px; border-bottom:1px solid var(--border-subtle); }
.bull-tech-indicator:last-child { border-bottom:none; margin-bottom:0; padding-bottom:0; }
.bull-tech-ind-name { font-size: 14px; font-weight:600; margin-bottom:4px; display:flex; justify-content:space-between; }
.bull-tech-ind-score { font-size: 13px; color:var(--accent-amber); }
.bull-tech-ind-signal { font-size: 12px; color:var(--text-secondary); margin-top:2px; }
.bull-tech-ind-values { font-size: 12px; color:var(--text-muted); margin-top:2px; font-family: monospace; }

/* === 空状态 === */
.bull-empty { display:flex; flex-direction:column; align-items:center; justify-content:center; padding:60px 20px; color:var(--text-secondary); }
.bull-empty-icon { font-size: 60px; margin-bottom:16px; }
.bull-empty h2 { font-size: 22px; color:var(--text-primary); margin-bottom:8px; }
.bull-empty p { font-size: 15px; margin-bottom:20px; }
.bull-dims-intro { display:grid; grid-template-columns:1fr 1fr; gap:8px 20px; margin-bottom:20px; }
.dim-intro-item { font-size: 14px; display:flex; align-items:center; gap:6px; }
.dim-dot { width:8px; height:8px; border-radius:50%; display:inline-block; }
.dim-dot.tech { background:var(--accent-amber); }
.dim-dot.chip { background:var(--accent-cyan); }
.dim-dot.fund { background:var(--accent-blue); }
.dim-dot.cap { background:var(--accent-purple); }
.dim-dot.event { background:#7c3aed; }
.dim-dot.chan { background:var(--accent-green); }
.dim-dot.mkt { background:var(--accent-orange); }
.bull-empty-hint { font-size: 13px; color:var(--text-muted); text-align:center; }

/* === 扫描结果列表 === */
.bull-results { padding:16px; }
.bull-results-header { display:flex; justify-content:space-between; align-items:center; margin-bottom:12px; }
.results-count { font-size: 15px; font-weight:600; color:var(--text-primary); }
.results-sentiment { font-size: 13px; color:var(--text-secondary); }
.bull-results-list { display:flex; flex-direction:column; gap:8px; overflow-y:auto; max-height:calc(100dvh - 120px); }
.bull-result-item { background:var(--bg-surface); border:1px solid var(--border-subtle); border-radius:var(--radius-md); padding:12px 16px; cursor:pointer; transition:all var(--transition-fast); display:flex; align-items:center; gap:14px; }
.bull-result-item:hover { border-color:var(--accent-amber); box-shadow:0 0 10px var(--glow-amber); transform:translateX(2px); }
.bull-result-rank { width:28px; height:28px; border-radius:50%; display:flex; align-items:center; justify-content:center; font-size: 13px; font-weight:700; background:var(--bg-overlay); color:var(--text-secondary); flex-shrink:0; }
.bull-result-rank.top3 { background:linear-gradient(135deg, var(--accent-amber), var(--accent-orange)); color:#fff; }
.bull-result-info { flex:1; min-width:0; }
.bull-result-name { font-size: 15px; font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.bull-result-code { font-size: 12px; color:var(--text-muted); }
.bull-result-badges { display:flex; gap:4px; flex-wrap:wrap; margin-top:4px; }
.bull-result-badges span { font-size: 11px; padding:1px 6px; border-radius:10px; }
.bull-result-price { display:flex; flex-direction:column; align-items:flex-end; min-width:70px; flex-shrink:0; }
.bull-result-price-val { font-size: 15px; font-weight:600; color:var(--text-primary); }
.bull-result-change { font-size: 12px; font-weight:500; }
.bull-result-change.text-green { color:var(--accent-green); }
.bull-result-change.text-red { color:var(--accent-red); }
.bull-result-index { font-size: 22px; font-weight:800; min-width:55px; text-align:right; }
.bull-result-grade { font-size: 14px; font-weight:600; min-width:30px; text-align:right; }

/* === 扫描进度 === */
.bull-progress { padding:16px; }
.progress-bar-bg { width:100%; height:6px; background:var(--bg-overlay); border-radius:3px; overflow:hidden; margin-bottom:8px; }
.progress-bar-fill { height:100%; background:linear-gradient(90deg, var(--accent-amber), var(--accent-orange)); border-radius:3px; transition:width .3s ease; width:0; }
.progress-text { font-size: 13px; color:var(--text-secondary); }

/* === 扫描弹窗 === */
.bull-scan-overlay { position:fixed; inset:0; background:rgba(0,0,0,0.4); z-index:1000; display:flex; align-items:center; justify-content:center; }
.bull-scan-panel { background:var(--bg-surface); border-radius:var(--radius-lg); padding:24px; width:440px; max-width:calc(100vw - 24px); max-height:80vh; overflow-y:auto; box-shadow:var(--shadow-lg); }
.bull-scan-panel h3 { font-size: 18px; margin-bottom:4px; }
.scan-header { margin-bottom:16px; }
.scan-desc { font-size: 13px; color:var(--text-secondary); margin-top:2px; }
.scan-step { margin-bottom:16px; padding-bottom:14px; border-bottom:1px solid var(--border-subtle); }
.scan-step:last-of-type { border-bottom:none; margin-bottom:16px; padding-bottom:0; }
.scan-step-label { font-size: 13px; font-weight:600; color:var(--accent-amber); margin-bottom:10px; }
.scan-field { margin-bottom:14px; }
.scan-field label { display:block; font-size: 13px; color:var(--text-secondary); margin-bottom:4px; }
.scan-label-hint { font-size: 11px; color:var(--text-muted); font-weight:400; }
.scan-field select, .scan-field input, .scan-field textarea { width:100%; padding:8px 10px; border:1px solid var(--border-default); border-radius:var(--radius-sm); font-size: 14px; outline:none; background:var(--bg-elevated); }
.scan-field textarea { resize:vertical; font-family:monospace; }
.scan-slider-row { display:flex; align-items:center; gap:10px; }
.scan-slider { flex:1; height:6px; -webkit-appearance:none; appearance:none; background:var(--bg-overlay); border-radius:3px; outline:none; cursor:pointer; }
.scan-slider::-webkit-slider-thumb { -webkit-appearance:none; appearance:none; width:18px; height:18px; border-radius:50%; background:var(--accent-amber); border:2px solid #fff; box-shadow:0 0 4px rgba(0,0,0,0.2); cursor:pointer; }
.scan-slider::-moz-range-thumb { width:18px; height:18px; border-radius:50%; background:var(--accent-amber); border:2px solid #fff; box-shadow:0 0 4px rgba(0,0,0,0.2); cursor:pointer; }
.scan-slider-num { width:58px !important; text-align:center; padding:5px 4px !important; font-size:14px !important; flex-shrink:0; }
.scan-slider-labels { display:flex; justify-content:space-between; font-size: 10px; color:var(--text-muted); margin-top:3px; padding:0 2px; }
.scan-hint { font-size: 11px; color:var(--accent-amber); margin-top:4px; background:rgba(217,119,6,0.06); padding:5px 8px; border-radius:var(--radius-sm); line-height:1.4; }
.scan-price-row { display:flex; align-items:center; gap:6px; }
.scan-price-input { flex:1; padding:7px 10px !important; min-width:0; }
.scan-price-sep { color:var(--text-muted); font-size:14px; flex-shrink:0; }
.scan-price-unit { color:var(--text-secondary); font-size:13px; flex-shrink:0; white-space:nowrap; }
.scan-actions { display:flex; gap:10px; justify-content:flex-end; margin-top:18px; }
.scan-cancel { padding:8px 18px; border:1px solid var(--border-default); border-radius:var(--radius-sm); background:var(--bg-elevated); cursor:pointer; font-size: 14px; }
.scan-start { padding:8px 18px; border:none; border-radius:var(--radius-sm); background:linear-gradient(135deg, var(--accent-amber-dim), var(--accent-amber)); color:#fff; font-size: 14px; cursor:pointer; font-weight:500; }
.scan-start:hover { box-shadow:0 0 10px var(--glow-amber); }
.scan-start:disabled { opacity:0.5; cursor:not-allowed; }

/* === 修改密码弹窗 === */
.bull-modal-overlay { position:fixed; inset:0; background:rgba(0,0,0,0.4); z-index:1100; display:flex; align-items:center; justify-content:center; }
.bull-modal { background:var(--bg-surface); border-radius:var(--radius-lg); padding:24px; width:380px; max-width:calc(100vw - 24px); box-shadow:var(--shadow-lg); }
.bull-modal h3 { font-size: 18px; margin-bottom:16px; }
.modal-field { margin-bottom:12px; }
.modal-field label { display:block; font-size: 13px; color:var(--text-secondary); margin-bottom:4px; }
.modal-field input { width:100%; padding:8px 10px; border:1px solid var(--border-default); border-radius:var(--radius-sm); font-size: 14px; outline:none; }
.modal-actions { display:flex; gap:10px; justify-content:flex-end; margin-top:18px; }
.modal-actions button { padding:8px 18px; border-radius:var(--radius-sm); font-size: 14px; cursor:pointer; }
.modal-actions button:first-child { border:1px solid var(--border-default); background:var(--bg-elevated); }
.modal-actions button:last-child { border:none; background:linear-gradient(135deg, var(--accent-amber-dim), var(--accent-amber)); color:#fff; font-weight:500; }

/* === 登录守卫 === */
.bull-login-guard { position:fixed; inset:0; background:var(--bg-deep); z-index:5000; display:flex; align-items:center; justify-content:center; }
.login-box { background:var(--bg-surface); border-radius:var(--radius-lg); padding:32px; width:340px; max-width:calc(100vw - 24px); display:flex; flex-direction:column; gap:12px; box-shadow:var(--shadow-lg); }
.login-box h2 { font-size: 18px; text-align:center; margin-bottom:8px; }
.login-box input { padding:10px 12px; border:1px solid var(--border-default); border-radius:var(--radius-sm); font-size: 15px; outline:none; }
.login-box input:focus { border-color:var(--accent-amber); box-shadow:0 0 0 3px var(--glow-amber); }
.login-box button { padding:10px; border:none; border-radius:var(--radius-sm); background:linear-gradient(135deg, var(--accent-amber-dim), var(--accent-amber)); color:#fff; font-size: 16px; cursor:pointer; font-weight:500; }
.login-hint { font-size: 13px; color:var(--text-muted); text-align:center; }

/* === Toast === */
.bull-toast { position:fixed; bottom:30px; left:50%; transform:translateX(-50%); background:#333; color:#fff; padding:10px 24px; border-radius:var(--radius-sm); font-size: 14px; z-index:9999; opacity:0; transition:opacity .3s; pointer-events:none; bottom:calc(30px + env(safe-area-inset-bottom, 0px)); }
.bull-toast.show { opacity:1; }

/* === 颜色工具 === */
.text-green { color:var(--accent-green); }
.text-red { color:var(--accent-red); }
.text-amber { color:var(--accent-amber); }

/* === 层级标签 === */
.dim-layer-tag { font-size:10px; padding:1px 4px; border-radius:3px; margin-left:4px; font-weight:600; letter-spacing:0.5px; }
.dim-layer-tag.a-layer { background:rgba(217,119,6,0.15); color:#b45309; }
.dim-layer-tag.b-layer { background:rgba(37,99,235,0.12); color:#2563eb; }
.dim-layer-tag.c-layer { background:rgba(124,58,237,0.12); color:#7c3aed; }
.dim-layer-tag.env-layer { background:rgba(234,88,12,0.12); color:#ea580c; }
.dim-layer-tag.ref-layer { background:rgba(107,114,128,0.1); color:#6b7280; }

/* === 热搜区域 === */
.sentiment-hot { margin-top:12px; border-top:1px solid var(--border-subtle); padding-top:10px; }
.hot-title { font-size:12px; color:var(--text-secondary); margin-bottom:6px; font-weight:500; }
.hot-list { display:flex; flex-direction:column; gap:3px; }
.hot-item { display:flex; align-items:center; gap:8px; font-size:12px; padding:2px 0; cursor:pointer; }
.hot-item:hover { background:var(--bg-elevated); }
.hot-rank { width:16px; height:16px; border-radius:3px; display:flex; align-items:center; justify-content:center; font-size:10px; font-weight:700; background:var(--bg-overlay); color:var(--text-secondary); flex-shrink:0; }
.hot-rank.top3 { background:linear-gradient(135deg, var(--accent-amber-dim), var(--accent-amber)); color:#fff; }
.hot-name { flex:1; color:var(--text-primary); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.hot-change { font-weight:500; flex-shrink:0; }
.hot-change.positive { color:var(--accent-red); }
.hot-change.negative { color:var(--accent-green); }

/* === 时政信号详情 === */
.bull-event-highlight { background:rgba(124,58,237,0.08); border:1px solid rgba(124,58,237,0.2); border-radius:var(--radius-sm); padding:8px 10px; margin-bottom:10px; font-size:12px; }
.bull-event-highlight .policy-level { font-weight:600; margin-bottom:4px; }
.bull-event-highlight .policy-level.national { color:#dc2626; }
.bull-event-highlight .policy-level.ministry { color:#7c3aed; }
.bull-event-highlight .policy-level.industry { color:#2563eb; }
.bull-event-highlight .policy-title { color:var(--text-secondary); }

/* === 择时框架卡片 === */
.bull-timing-card { background:var(--bg-elevated); border-radius:var(--radius-md); padding:14px 16px; margin-bottom:14px; border:1px solid var(--border-subtle); }
.bull-timing-card h3 { font-size:14px; color:var(--text-secondary); margin-bottom:10px; font-weight:500; }
.bull-timing-layers { display:flex; flex-direction:column; gap:8px; margin-bottom:12px; }
.bull-timing-layer { display:flex; align-items:center; gap:8px; padding:6px 10px; border-radius:var(--radius-sm); background:var(--bg-surface); border:1px solid var(--border-subtle); }
.bull-timing-layer.active { border-color:var(--accent-amber); background:rgba(217,119,6,0.05); }
.bull-timing-layer-icon { width:24px; height:24px; border-radius:50%; display:flex; align-items:center; justify-content:center; font-size:12px; font-weight:700; flex-shrink:0; }
.bull-timing-layer-icon.a { background:rgba(217,119,6,0.15); color:#b45309; }
.bull-timing-layer-icon.b { background:rgba(37,99,235,0.12); color:#2563eb; }
.bull-timing-layer-icon.c { background:rgba(124,58,237,0.12); color:#7c3aed; }
.bull-timing-layer-icon.env { background:rgba(234,88,12,0.12); color:#ea580c; }
.bull-timing-layer-name { font-size:13px; font-weight:500; width:60px; flex-shrink:0; }
.bull-timing-layer-signal { font-size:12px; font-weight:600; flex:1; }
.bull-timing-layer-signal.buy { color:var(--accent-green); }
.bull-timing-layer-signal.neutral { color:var(--text-secondary); }
.bull-timing-layer-signal.sell { color:var(--accent-red); }
.bull-timing-layer-score { font-size:12px; color:var(--text-muted); }
.bull-timing-layer-detail { font-size:11px; color:var(--text-muted); max-width:140px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.bull-timing-summary { font-size:13px; color:var(--text-primary); padding:10px; background:var(--bg-surface); border-radius:var(--radius-sm); border:1px solid var(--border-subtle); font-weight:500; line-height:1.5; }
.bull-resonance-bar { margin-top:8px; padding:8px 10px; border-radius:var(--radius-sm); font-size:12px; font-weight:600; text-align:center; }
.bull-resonance-bar.triple { background:linear-gradient(135deg, rgba(217,119,6,0.15), rgba(124,58,237,0.15)); color:var(--accent-amber); border:1px solid rgba(217,119,6,0.3); }
.bull-resonance-bar.double { background:rgba(37,99,235,0.08); color:#2563eb; border:1px solid rgba(37,99,235,0.2); }
.bull-resonance-bar.single { background:var(--bg-surface); color:var(--text-secondary); border:1px solid var(--border-subtle); }
.bull-resonance-bar.none { background:var(--bg-surface); color:var(--text-muted); border:1px solid var(--border-subtle); }

/* === 研报精华补充样式 === */
.bull-report-item { margin-bottom:8px; padding-bottom:8px; border-bottom:1px solid var(--border-subtle); }
.bull-report-item:last-child { border-bottom:none; margin-bottom:0; padding-bottom:0; }
.bull-report-title { font-size:12px; color:var(--text-primary); line-height:1.4; }
.bull-report-meta { font-size:11px; color:var(--text-muted); margin-top:2px; }
.bull-report-rating { font-size:11px; font-weight:600; }

/* === 顶栏自选股按钮 === */
.bull-watchlist-btn { background:rgba(217,119,6,0.06); border:1px solid var(--accent-amber-dim); border-radius:var(--radius-sm); padding:5px 14px; font-size: 14px; color:var(--accent-amber); cursor:pointer; transition:all var(--transition-fast); white-space:nowrap; }
.bull-watchlist-btn:hover { background:linear-gradient(135deg, var(--accent-amber-dim), var(--accent-amber)); color:#fff; box-shadow:0 0 10px var(--glow-amber); }

/* 顶栏加入自选按钮 */
.bull-add-wl-topbar { background:rgba(22,163,74,0.06); border:1px solid rgba(22,163,74,0.4); border-radius:var(--radius-sm); padding:5px 14px; font-size: 14px; color:var(--accent-green); cursor:pointer; transition:all var(--transition-fast); white-space:nowrap; }
.bull-add-wl-topbar:hover { background:linear-gradient(135deg, rgba(22,163,74,0.3), #2ea043); color:#fff; box-shadow:0 0 10px var(--glow-green); }

/* 英雄卡 +自选 按钮 */
.bull-add-wl-btn { background:rgba(22,163,74,0.08); border:1px solid rgba(22,163,74,0.3); border-radius:20px; padding:4px 14px; font-size: 13px; color:var(--accent-green); cursor:pointer; transition:all var(--transition-fast); white-space:nowrap; font-weight:500; }
.bull-add-wl-btn:hover { background:var(--accent-green); color:#fff; box-shadow:0 0 8px var(--glow-green); }

/* 扫描结果 +自选 按钮 */
.bull-result-wl-btn { background:none; border:1px solid rgba(22,163,74,0.3); border-radius:var(--radius-sm); padding:3px 8px; font-size: 11px; color:var(--accent-green); cursor:pointer; transition:all var(--transition-fast); white-space:nowrap; flex-shrink:0; }
.bull-result-wl-btn:hover { background:var(--accent-green); color:#fff; box-shadow:0 0 6px var(--glow-green); }

/* === 自选股下拉面板 === */
.bull-wl-overlay { position:fixed; inset:0; z-index:8000; background:rgba(0,0,0,0.25); display:none; backdrop-filter:blur(2px); }
.bull-wl-overlay.show { display:block; }
.bull-wl-panel { position:fixed; top:0; right:-460px; width:420px; max-width:100vw; height:100dvh; background:var(--bg-surface); border-left:1px solid var(--border-subtle); z-index:8001; transition:right .3s ease; overflow-y:auto; box-shadow:-4px 0 20px rgba(0,0,0,0.08); -webkit-overflow-scrolling:touch; padding-bottom:env(safe-area-inset-bottom, 0px); }
.bull-wl-panel.open { right:0; }

.bull-wl-header { display:flex; justify-content:space-between; align-items:center; padding:14px 16px; border-bottom:1px solid var(--border-default); }
.bull-wl-header h3 { margin:0; font-size: 16px; color:var(--text-primary); }
.bull-wl-header-actions { display:flex; align-items:center; gap:8px; }
.bull-wl-header-actions .close-btn { background:none; border:none; color:var(--text-secondary); font-size:15px; cursor:pointer; padding:0 2px; border-radius:3px; transition:all var(--transition-fast); }
.bull-wl-header-actions .close-btn:hover { color:var(--accent-red); }
.bull-wl-add-group-btn { background:none; border:1px dashed var(--accent-amber-dim); border-radius:4px; padding:3px 8px; font-size: 12px; color:var(--accent-amber); cursor:pointer; transition:all var(--transition-fast); }
.bull-wl-add-group-btn:hover { background:var(--accent-amber); color:#fff; }
.bull-wl-analysis-btn { background:var(--bg-elevated); border:1px solid var(--accent-amber-dim); border-radius:4px; padding:4px 10px; font-size: 13px; color:var(--accent-amber); cursor:pointer; transition:all var(--transition-fast); }
.bull-wl-analysis-btn:hover { background:var(--accent-amber); color:#fff; box-shadow:0 0 6px var(--glow-amber); }
.bull-wl-analysis-btn.loading { opacity:0.6; pointer-events:none; }

/* 分组Tab */
.bull-wl-groups { display:flex; align-items:center; gap:2px; padding:8px 12px 8px; border-bottom:1px solid var(--border-subtle); overflow-x:auto; flex-shrink:0; -webkit-overflow-scrolling:touch; }
.bull-wl-groups::-webkit-scrollbar { display:none; }
.bull-wl-group-tab { white-space:nowrap; padding:3px 10px; border-radius:14px; font-size:12px; cursor:pointer; background:var(--card); color:var(--text-muted); border:1px solid var(--border); transition:all var(--transition-fast); user-select:none; display:flex; align-items:center; gap:4px; }
.bull-wl-group-tab:hover { border-color:var(--accent-amber); color:var(--accent-amber); }
.bull-wl-group-tab.active { background:var(--accent-amber); color:#fff; border-color:var(--accent-amber); }
.bull-wl-group-tab .group-count { font-size:10px; opacity:0.7; }
.bull-wl-group-tab .group-more { font-size:12px; opacity:0.5; margin-left:2px; }
.bull-wl-group-add { white-space:nowrap; padding:3px 8px; border-radius:14px; font-size:12px; cursor:pointer; background:transparent; color:var(--accent-amber); border:1px dashed var(--accent-amber); opacity:0.6; transition:all var(--transition-fast); }
.bull-wl-group-add:hover { opacity:1; background:var(--glow-amber); }

/* 搜索过滤 */
.bull-wl-filter { padding:4px 12px; }
.bull-wl-filter-input { width:100%; padding:5px 10px; border:1px solid var(--border); border-radius:8px; font-size:12px; background:var(--card); color:var(--text-primary); outline:none; transition:border var(--transition-fast); }
.bull-wl-filter-input:focus { border-color:var(--accent-amber); }

/* 列表头 */
.bull-wl-list-header { display:flex; align-items:center; padding:6px 12px; background:var(--bg-elevated); border-bottom:1px solid var(--border-subtle); font-size: 11px; color:var(--text-muted); }
.bull-wl-list-header .bull-wl-h-left { flex:1; min-width:70px; }
.bull-wl-list-header .bull-wl-h-price { width:68px; text-align:right; }
.bull-wl-list-header .bull-wl-h-change { width:76px; text-align:right; }
.bull-wl-list-header .bull-wl-h-extra { width:80px; text-align:right; padding-right:32px; white-space:nowrap; }

/* 自选股列表 */
.bull-wl-list { padding:0; }
.bull-wl-empty { padding:30px; text-align:center; color:var(--text-secondary); font-size: 15px; }
.bull-wl-item { padding:8px 12px; cursor:pointer; transition:background var(--transition-fast); border-bottom:1px solid var(--border-subtle); }
.bull-wl-item:hover { background:var(--bg-elevated); }
.bull-wl-item.has-analysis:hover { background:transparent; }
.bull-wl-item-main { display:flex; align-items:center; gap:0; }
.bull-wl-left { flex:1; min-width:0; padding-right:6px; }
.bull-wl-name { display:block; font-size: 14px; color:var(--text-primary); font-weight:600; line-height:1.35; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.bull-wl-item-code { display:block; font-size: 11px; color:var(--text-muted); line-height:1.3; }
.bull-wl-price-col { width:68px; text-align:right; flex-shrink:0; }
.bull-wl-price { font-size: 14px; font-weight:700; color:var(--text-primary); }
.bull-wl-price.up { color:var(--accent-red); }
.bull-wl-price.down { color:var(--accent-green); }
.bull-wl-change-col { width:76px; text-align:right; flex-shrink:0; display:flex; flex-direction:column; align-items:flex-end; gap:1px; }
.bull-wl-change { font-size: 11px; font-weight:500; color:var(--text-primary); }
.bull-wl-change.up { color:var(--accent-red); }
.bull-wl-change.down { color:var(--accent-green); }
.bull-wl-pct { display:inline-block; min-width:56px; padding:1px 5px; border-radius:3px; font-size: 12px; font-weight:600; text-align:center; line-height:1.5; }
.bull-wl-pct.up { background:rgba(220,38,38,0.08); color:var(--accent-red); }
.bull-wl-pct.down { background:rgba(22,163,74,0.08); color:var(--accent-green); }
.bull-wl-extra-col { width:80px; text-align:right; flex-shrink:0; display:flex; flex-direction:column; align-items:flex-end; gap:1px; }
.bull-wl-turnover, .bull-wl-amount { font-size: 11px; color:var(--text-secondary); }
.bull-wl-actions { flex-shrink:0; display:flex; align-items:center; gap:0; margin-left:4px; opacity:0; pointer-events:none; transition:opacity 0.15s ease; }
.bull-wl-del { background:none; border:none; color:var(--text-muted); font-size:15px; cursor:pointer; padding:0 2px; border-radius:3px; transition:all var(--transition-fast); line-height:1; }
.bull-wl-del:hover { color:var(--accent-red); background:var(--glow-red); }
/* hover / .show-actions */
bull-wl-item-main:hover bull-wl-item-actions,
bull-wl-item.show-actions bull-wl-item-actions { opacity:1; pointer-events:auto; }
bull-wl-item.show-actions bull-wl-item-del { color:var(--accent-red); }

.bull-wl-move { background:none; border:none; color:var(--text-muted); font-size:13px; cursor:pointer; padding:0 3px; border-radius:3px; transition:all var(--transition-fast); line-height:1; letter-spacing:-2px; }
.bull-wl-move:hover { color:var(--accent-amber); background:var(--glow-amber); }
.bull-wl-ctx-item.active { color:var(--text-muted); pointer-events:none; font-weight:400; }

/* 第二行指标 */
.bull-wl-item-sub { display:flex; flex-wrap:wrap; gap:2px 8px; padding-top:3px; }
.bull-wl-sub-item { font-size: 10px; color:var(--text-muted); white-space:nowrap; }
.bull-wl-sub-item b { color:var(--text-secondary); font-weight:500; }

/* 分析结果 */
.bull-wl-item-analysis { display:none; padding:6px 0 2px 0; }
.bull-wl-item.has-analysis .bull-wl-item-analysis { display:block; }
.bull-wl-analysis-row { display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-bottom:4px; }
.bull-wl-signal-tag { display:inline-block; padding:1px 6px; border-radius:3px; font-size: 11px; font-weight:600; line-height:1.6; }
.bull-wl-signal-tag.buy { background:rgba(220,38,38,0.10); color:#dc2626; }
.bull-wl-signal-tag.strong-buy { background:rgba(220,38,38,0.18); color:#b91c1c; }
.bull-wl-signal-tag.sell { background:rgba(22,163,74,0.10); color:#16a34a; }
.bull-wl-signal-tag.strong-sell { background:rgba(22,163,74,0.18); color:#15803d; }
.bull-wl-signal-tag.hold { background:rgba(107,114,128,0.10); color:#6b7280; }
.bull-wl-signal-tag.safe { background:rgba(37,99,235,0.10); color:#2563eb; }
.bull-wl-signal-tag.danger { background:rgba(234,88,12,0.10); color:#ea580c; }
.bull-wl-ref-price { font-size: 11px; color:var(--text-secondary); white-space:nowrap; }
.bull-wl-ref-price span { font-weight:600; }
.bull-wl-ref-price .buy-ref { color:var(--accent-red); }
.bull-wl-ref-price .sell-ref { color:var(--accent-green); }
.bull-wl-score-bar { display:flex; align-items:center; gap:3px; margin-left:auto; }
.bull-wl-score-track { width:50px; height:5px; background:var(--border-default); border-radius:3px; overflow:hidden; }
.bull-wl-score-fill { height:100%; border-radius:3px; transition:width .4s ease; }
.bull-wl-score-fill.high { background:var(--accent-red); }
.bull-wl-score-fill.mid { background:#f59e0b; }
.bull-wl-score-fill.low { background:var(--accent-green); }
.bull-wl-score-text { font-size: 10px; font-weight:600; color:var(--text-muted); min-width:22px; text-align:right; }

/* 展开详情 */
.bull-wl-item-detail { display:none; padding:6px 0 4px 0; border-top:1px dashed var(--border-subtle); margin-top:4px; }
.bull-wl-item.expanded .bull-wl-item-detail { display:block; }
.bull-wl-detail-row { font-size: 11px; color:var(--text-secondary); line-height:1.7; }
.bull-wl-detail-row .label { color:var(--text-muted); }
.bull-wl-detail-row .val { color:var(--text-primary); font-weight:500; }
.bull-wl-detail-row .buy-val { color:var(--accent-red); }
.bull-wl-detail-row .sell-val { color:var(--accent-green); }

/* 拖拽排序 */
.bull-wl-item.drag-source { opacity:0.3 !important; }
.bull-wl-item.drag-clone { background:var(--bg-surface); border-radius:var(--radius-md); box-shadow:0 4px 12px rgba(0,0,0,0.15); }

/* 自选股分页 */
.bull-wl-pagination { display:flex; align-items:center; justify-content:center; gap:12px; padding:10px 16px; border-top:1px solid var(--border-subtle); }
.bull-wl-page-btn { background:var(--bg-elevated); border:1px solid var(--border-default); border-radius:4px; padding:4px 12px; font-size: 13px; color:var(--text-primary); cursor:pointer; transition:all var(--transition-fast); }
.bull-wl-page-btn:hover:not(:disabled) { border-color:var(--accent-amber); color:var(--accent-amber); }
.bull-wl-page-btn:disabled { opacity:0.4; cursor:not-allowed; }
.bull-wl-page-info { font-size: 13px; color:var(--text-muted); min-width:50px; text-align:center; }

/* 新建分组弹窗 */
.bull-modal-input { width:100%; padding:8px 12px; border:1px solid var(--border-default); border-radius:8px; font-size: 14px; background:var(--bg-elevated); color:var(--text-primary); outline:none; margin-bottom:16px; }
.bull-modal-input:focus { border-color:var(--accent-amber); }
.modal-cancel { padding:6px 16px; border:1px solid var(--border-default); border-radius:6px; background:none; color:var(--text-secondary); cursor:pointer; font-size: 13px; }
.modal-cancel:hover { background:var(--bg-elevated); }
.modal-confirm { padding:6px 16px; border:none; border-radius:6px; background:var(--accent-amber); color:#fff; cursor:pointer; font-size: 13px; font-weight:600; }
.modal-confirm:hover { opacity:0.9; }

/* 分组右键菜单 */
.bull-wl-ctx-menu { position:fixed; z-index:10001; background:#fff; border:1px solid var(--border-default); border-radius:8px; padding:4px 0; box-shadow:0 4px 16px rgba(0,0,0,0.12); min-width:120px; }
.bull-wl-ctx-item { padding:7px 14px; font-size:13px; cursor:pointer; color:var(--text-primary); transition:background var(--transition-fast); }
.bull-wl-ctx-item:hover { background:var(--glow-amber); }
.bull-wl-ctx-item.danger { color:var(--accent-red); }
.bull-wl-ctx-item.danger:hover { background:var(--glow-red); }

/* === 响应式 === */
@media (max-width:768px) {
  .bull-main { flex-direction:column; min-height:auto; }
  .bull-left { width:100%; border-right:none; max-height:50vh; }
  .bull-right { height:50vh; }
  .bull-main:has(.bull-empty:not([style*="display: none"])) .bull-left { display:none; }
  .bull-main:has(.bull-empty:not([style*="display: none"])) .bull-right { height:100%; }
  .bull-main.detail-mode .bull-left { width:100%; flex:1; flex-shrink:1; max-width:100%; max-height:none; }
  .bull-main.detail-mode .bull-right { display:none; }
  /* 顶栏两行布局 */
  .bull-topbar-row1 { padding: 4px 0 2px; gap: 4px; }
  .bull-topbar-row2 { flex-wrap: wrap; padding: 2px 0 6px; gap: 4px; }
  /* 顶栏第一行：标题 + 用户区 */
  .bull-brand { flex:1 1 auto; min-width:0; }
  .bull-topbar h1 { font-size:15px; }
  .bull-phase-tag { font-size:9px; }
  .bull-logo { font-size:18px; }
  .bull-topbar-right { gap:4px; flex-shrink:0; }
  /* 导航组 */
  .bull-nav-group { flex:1 1 100%; }
  .bull-nav-item { padding:4px 8px; font-size:12px; }
  .bull-add-wl-topbar, .bull-user-btn { padding:4px 8px; font-size:12px; min-height:32px; }
  .bull-search-btn { min-height:36px; }
  /* 弹窗全宽适配 */
  .bull-scan-panel { width:calc(100vw - 16px); max-height:85dvh; padding:16px; }
  .bull-modal { width:calc(100vw - 16px); padding:16px; }
  .login-box { width:calc(100vw - 16px); padding:20px; }
  /* 自选面板全屏 */
  .bull-wl-panel { width:100%; max-width:100vw; }
  .bull-wl-back-btn { display:inline-block; }
  /* 间距缩小 */
  .bull-left { padding:10px; }
  .bull-hero { padding:14px 10px; }
  .bull-index-circle { width:90px; height:90px; }
  .bull-index-num { font-size:26px; }
  .bull-stock-title { font-size:16px; }
  .bull-stock-price { font-size:16px; }
  /* 维度区紧凑 */
  .bull-dims-card, .bull-radar-card, .bull-tech-detail-card, .bull-timing-card { padding:10px; margin-bottom:10px; }
  .bull-dim-item { margin-bottom:8px; }
  .bull-dims-intro { grid-template-columns:1fr; gap:4px; }
  /* 择时层flex换行 */
  .bull-timing-layer { flex-wrap:wrap; gap:4px; }
  .bull-timing-layer-detail { max-width:none; white-space:normal; }
  /* iOS 防缩放：输入框字号≥16px */
  .bull-wl-filter-input { font-size:16px; }
  .scan-field select, .scan-field input, .scan-field textarea { font-size:16px; }
  .modal-field input { font-size:16px; }
  .bull-modal-input { font-size:16px; }
  .login-box input { font-size:16px; }
  /* 小字体兜底12px */
  .bull-wl-signal-tag, .bull-wl-score-text { font-size:12px; min-height:18px; line-height:1.5; }
  .bull-wl-ref-price { font-size:12px; }
  .bull-wl-detail-row { font-size:12px; }
  .scan-hint { font-size:12px; }
  .scan-slider-labels { font-size:12px; }
  .scan-label-hint { font-size:12px; }
  .dim-layer-tag { font-size:11px; }
  /* 扫描结果紧凑 */
  .bull-result-item { padding:10px 12px; gap:10px; }
  .bull-result-index { font-size:18px; min-width:44px; }
  .bull-result-badge span { font-size:12px; }
}
@media (max-width:480px) {
  .bull-wl-panel { right:-100%; }
  .bull-wl-item { padding:8px 10px; }
  .bull-wl-item-name { font-size: 13px; }
  .bull-wl-item-price { font-size: 13px; }
  .bull-wl-item-price-col { width:60px; }
  .bull-wl-item-change-col { width:68px; }
  .bull-wl-item-extra-col { width:68px; }
  .bull-wl-item-pct { min-width:48px; font-size: 11px; padding:1px 4px; }
  .bull-wl-analysis-row { gap:5px; }
  .bull-wl-score-track { width:36px; }
  .bull-wl-sub-item { font-size: 9px; }
  .bull-topbar-row1 { padding: 4px 0 2px; gap: 3px; }
  .bull-topbar-row2 { padding: 2px 0 4px; gap: 3px; }
  .bull-topbar h1 { font-size:14px; }
  .bull-phase-tag { display:none; }
  /* 导航组缩为极简 */
  .bull-nav-group { flex:1 1 100%; }
  .bull-nav-item { padding:3px 6px; font-size:11px; }
  .bull-user-btn { padding:3px 6px; font-size:11px; min-height:28px; }
  .bull-logout-link { font-size:11px; }
  /* 搜索在中间，顶栏输入框不再需要适配 */
  .bull-empty-input { font-size:16px; }
  .bull-left { padding:8px; max-height:none; }
  .bull-right { height:auto; min-height:40vh; }
  .bull-hero { padding:10px 8px; }
  .bull-index-circle { width:80px; height:80px; }
  .bull-index-num { font-size:22px; }
  .bull-index-label { font-size:10px; }
  /* 英雄卡超紧凑 */
  .bull-stock-title, .bull-stock-price { font-size:15px; }
  .bull-action-badge { font-size:12px; padding:2px 8px; }
  /* 扫描弹窗超紧凑 */
  .bull-scan-panel { padding:12px; }
  .bull-scan-panel h3 { font-size:16px; }
  .scan-step { margin-bottom:10px; padding-bottom:10px; }
  .scan-field { margin-bottom:10px; }
  .scan-slider-row { gap:6px; }
  .scan-slider-num { width:50px !important; }
  /* 登录超紧凑 */
  .login-box { padding:16px; gap:8px; }
  .login-box h2 { font-size:16px; }
  /* Toast抬升 */
  .bull-toast { font-size:13px; padding:8px 16px; }
}

.wl-mobile-turnover { display:none; }
@media (max-width: 768px) {
  .wl-mobile-turnover { display:block; font-size:10px; color:#8b949e; margin-top:2px; }
}.watchlist-tags { display:none; }

/* ============ 个股详情面板 ============ */
#stockDetailPanel { margin-top: 12px; }
.sd-tabs { display:flex; gap:2px; border-bottom:1px solid var(--border-subtle); margin-bottom:12px; flex-wrap:wrap; }
.sd-tab { padding:8px 12px; font-size:13px; color:var(--text-muted); cursor:pointer; border-bottom:2px solid transparent; transition:all .2s; white-space:nowrap; }
.sd-tab:hover { color:var(--text-primary); }
.sd-tab.active { color:var(--accent-purple); border-bottom-color:var(--accent-purple); font-weight:600; }
.sd-panel { padding:4px 0; }
.sd-empty { text-align:center; color:var(--text-tertiary,#888); padding:30px 0; font-size:14px; }
.sd-profile h3 { margin:0 0 12px 0; font-size:18px; color:var(--text-primary); }
.sd-row { display:flex; padding:6px 0; border-bottom:1px solid var(--border-subtle); font-size:14px; }
.sd-label { width:80px; color:var(--text-muted); flex-shrink:0; }
.sd-val { color:var(--text-primary); flex:1; }
.sd-business { line-height:1.6; }
.sd-rating-section { margin-top:16px; }
.sd-rating-section h4 { margin:0 0 8px 0; font-size:14px; color:var(--text-secondary); }
.sd-rating-bar { display:flex; border-radius:4px; overflow:hidden; height:24px; font-size:12px; color:#fff; }
.sd-rb-buy { background:#e74c3c; display:flex; align-items:center; justify-content:center; min-width:0; }
.sd-rb-hold { background:#f39c12; display:flex; align-items:center; justify-content:center; min-width:0; }
.sd-rb-sell { background:#27ae60; display:flex; align-items:center; justify-content:center; min-width:0; }
.sd-table { width:100%; border-collapse:collapse; font-size:13px; margin:8px 0; }
.sd-table th { text-align:left; padding:6px 8px; background:var(--bg-elevated); color:var(--text-muted); font-weight:600; border-bottom:1px solid var(--border-default); }
.sd-table td { padding:6px 8px; border-bottom:1px solid var(--border-subtle); color:var(--text-primary); }
.sd-table tr:hover td { background:var(--bg-elevated); }
.sd-up { color:#e74c3c !important; }
.sd-down { color:#27ae60 !important; }
.sd-news-list, .sd-notice-list { display:flex; flex-direction:column; gap:8px; }
.sd-news-item, .sd-notice-item { display:block; padding:8px 10px; border-radius:6px; background:var(--bg-elevated); text-decoration:none; transition:background .2s; }
.sd-news-item:hover, .sd-notice-item:hover { background:var(--bg-subtle); }
.sd-news-time, .sd-notice-time { font-size:12px; color:var(--text-muted); margin-bottom:2px; }
.sd-news-title, .sd-notice-title { font-size:14px; color:var(--text-primary); line-height:1.4; }
.sd-news-source, .sd-notice-type { font-size:12px; color:var(--text-tertiary,#888); margin-top:2px; }
.sd-imp { display:inline-block; padding:1px 6px; border-radius:3px; font-size:11px; margin-left:6px; color:#fff; }
.sd-imp-1 { background:#27ae60; }
.sd-imp-2 { background:#f39c12; }
.sd-imp-3 { background:#e74c3c; }
.sd-risk h4 { margin:12px 0 8px 0; font-size:14px; color:var(--text-secondary); }
.sd-risk-list { list-style:none; padding:0; margin:0; }
.sd-risk-list li { padding:6px 10px; border-radius:4px; background:var(--glow-red,#fde8e8); color:#e74c3c; margin-bottom:4px; font-size:13px; }
.sd-risk-high { color:#e74c3c !important; font-weight:600; }
.sd-risk-mid { color:#f39c12 !important; }
.sd-risk-low { color:#27ae60 !important; }
.sd-finance h4 { margin:12px 0 8px 0; font-size:14px; color:var(--text-secondary); }
