/* StockSeer Web v2 — Dark Financial Theme */

/* ── 基础 reset ──────────────────────────────────────────────── */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{font-size:14px;-webkit-text-size-adjust:100%}
body{background:#060d1a;color:#cbd5e1;font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;min-height:100vh;line-height:1.5}
a{color:#3b82f6;text-decoration:none}
a:hover{text-decoration:underline}

/* ── 滚动条 ──────────────────────────────────────────────────── */
::-webkit-scrollbar{width:6px;height:6px}
::-webkit-scrollbar-track{background:#0f172a}
::-webkit-scrollbar-thumb{background:#334155;border-radius:3px}

/* ── Header ─────────────────────────────────────────────────── */
header{
  position:sticky;top:0;z-index:100;
  background:rgba(6,13,26,0.95);
  border-bottom:1px solid #1e293b;
  backdrop-filter:blur(8px);
}
.header-inner{
  display:flex;align-items:center;flex-wrap:wrap;gap:8px;
  padding:10px 20px;max-width:1600px;margin:0 auto;
}
.logo{font-size:1.1rem;font-weight:700;color:#f8fafc;white-space:nowrap}
.site-link{
  color:#f59e0b;font-size:.85rem;font-weight:700;white-space:nowrap;
  background:rgba(245,158,11,.12);border:1px solid rgba(245,158,11,.4);
  padding:4px 12px;border-radius:6px;letter-spacing:.02em;
  text-shadow:0 0 8px rgba(245,158,11,.35);
  transition:background .2s,border-color .2s;
}
.site-link:hover{background:rgba(245,158,11,.22);border-color:rgba(245,158,11,.7);text-decoration:none}
.stock-badge{
  background:#1e293b;border:1px solid #334155;
  color:#94a3b8;font-size:.75rem;padding:2px 8px;border-radius:4px;
  font-family:'JetBrains Mono',monospace;letter-spacing:.05em;
}
.market-chip{
  background:#0f172a;color:#64748b;font-size:.7rem;
  padding:2px 6px;border-radius:3px;border:1px solid #1e293b;
}
.sh-name{font-weight:600;color:#e2e8f0;font-size:.95rem}
.header-tip{color:#475569;font-size:.75rem;margin-left:auto}
.header-marquee{
  background:#0c1524;border-top:1px solid #1e293b;
  overflow:hidden;padding:4px 0;
}
.marquee-text{
  display:inline-block;white-space:nowrap;color:#64748b;font-size:.75rem;padding:0 20px;
  animation:marquee var(--marquee-dur,20s) linear infinite;
}
@keyframes marquee{from{transform:translateX(100vw)}to{transform:translateX(-100%)}}

/* ── Signal & Rating chips ───────────────────────────────────── */
.sig-chip{
  display:inline-flex;align-items:center;gap:4px;
  font-size:.75rem;padding:3px 10px;border-radius:999px;font-weight:600;
  border:1px solid transparent;white-space:nowrap;
}
.sig-bull{background:rgba(239,68,68,.15);color:#f87171;border-color:rgba(239,68,68,.3)}
.sig-bear{background:rgba(34,197,94,.15);color:#4ade80;border-color:rgba(34,197,94,.3)}
.sig-neutral{background:rgba(100,116,139,.15);color:#94a3b8;border-color:rgba(100,116,139,.25)}
.rating-chip{font-size:.72rem;padding:2px 8px;border-radius:4px;background:#1e293b;color:#94a3b8}

/* ── Analyst vote bar ────────────────────────────────────────── */
.vote-bar{display:flex;height:4px;border-radius:2px;overflow:hidden;background:#1e293b;gap:1px;margin:8px 0 2px}
.vb-bull{background:#ef4444;border-radius:2px 0 0 2px}
.vb-bear{background:#22c55e;border-radius:0 2px 2px 0}
.vb-neutral{background:#475569}
.vote-labels{display:flex;gap:12px;font-size:.7rem}
.vl-bull{color:#ef4444}.vl-bear{color:#22c55e}.vl-neutral{color:#64748b}

/* ── 首页 ────────────────────────────────────────────────────── */
main{max-width:1600px;margin:0 auto;padding:24px 20px 60px}
.home-head{margin-bottom:24px}
.home-head h1{font-size:1.5rem;font-weight:700;color:#f8fafc;margin-bottom:4px}
.home-sub{color:#64748b;font-size:.85rem;margin-bottom:16px}

.overview-stats{
  display:flex;align-items:center;gap:20px;flex-wrap:wrap;
  background:#0a1428;border:1px solid #1e293b;border-radius:10px;
  padding:12px 20px;margin-bottom:8px;
}
.os-item{display:flex;align-items:center;gap:6px}
.os-icon{font-size:1.1rem}
.os-num{font-size:1.3rem;font-weight:700;color:#f8fafc;line-height:1}
.os-lbl{font-size:.75rem;color:#64748b}
.os-bull .os-num{color:#f87171}
.os-bear .os-num{color:#4ade80}
.os-sep{width:1px;height:30px;background:#1e293b}

.cards-grid{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(280px,1fr));
  gap:16px;
}
.empty-state{
  grid-column:1/-1;text-align:center;
  padding:60px 20px;color:#475569;font-size:.95rem;
}

/* ── Stock Card ──────────────────────────────────────────────── */
.stock-card{
  display:flex;flex-direction:column;gap:8px;
  background:#0a1428;border:1px solid #1e293b;border-radius:12px;
  padding:16px;transition:border-color .2s,box-shadow .2s;
  color:#cbd5e1;cursor:pointer;
}
.stock-card:hover{border-color:#3b82f6;box-shadow:0 0 0 1px #3b82f640,0 8px 24px rgba(0,0,0,.4);text-decoration:none}
.sc-bull{border-left:3px solid #ef4444}
.sc-bear{border-left:3px solid #22c55e}
.sc-neutral{border-left:3px solid #475569}
.sc-head{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}
.sc-title{display:flex;flex-direction:column;gap:2px;min-width:0}
.sc-name{font-size:.95rem;font-weight:600;color:#f8fafc;line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sc-code{font-size:.75rem;color:#64748b;font-family:'JetBrains Mono',monospace}
.sc-sig{font-size:.72rem}
.sc-meta{display:flex;align-items:center;gap:8px;margin-top:2px}
.sc-industry{font-size:.75rem;color:#64748b;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}
.sc-market{font-size:.68rem;color:#475569;background:#0f172a;padding:1px 5px;border-radius:3px;flex-shrink:0}
.sc-prices{display:flex;flex-direction:column;gap:3px;margin-top:2px}
.sc-price-row{display:flex;align-items:center;gap:6px}
.sp-label{font-size:.72rem;color:#64748b;width:26px;flex-shrink:0}
.sp-val{font-size:.85rem;font-weight:600;color:#e2e8f0;font-family:'JetBrains Mono',monospace}
.sp-stop{color:#4ade80}
.sp-chg{font-size:.72rem;margin-left:auto}
.sc-pred{
  background:#0f172a;border:1px solid #1e293b;border-radius:6px;
  padding:6px 10px;display:flex;align-items:center;gap:8px;flex-wrap:wrap;
}
.pred-label{font-size:.7rem;color:#64748b}
.pred-range{font-size:.78rem;font-weight:600;color:#94a3b8;font-family:'JetBrains Mono',monospace}
.pred-conf{font-size:.68rem;color:#475569;margin-left:auto}
.sc-footer{display:flex;align-items:center;gap:8px;margin-top:4px}
.sc-date{font-size:.7rem;color:#475569}
.sc-badge{font-size:.68rem;color:#64748b;background:#0f172a;padding:1px 6px;border-radius:3px}

/* ── 价格颜色 ────────────────────────────────────────────────── */
.chg-up{color:#f87171}
.chg-down{color:#4ade80}
.chg-neutral{color:#64748b}

/* ── Footer ──────────────────────────────────────────────────── */
footer{text-align:center;padding:24px;color:#334155;font-size:.78rem;border-top:1px solid #1e293b;margin-top:40px}
footer a{color:#475569}

/* ═══════════════════════════════════════════════════════════════
   股票详情页
═══════════════════════════════════════════════════════════════ */

body.stock-body{display:flex;flex-direction:column;height:100vh;overflow:hidden}

.stock-header{
  flex-shrink:0;
  background:rgba(6,13,26,0.98);border-bottom:1px solid #1e293b;
  padding:0 20px;
}
.sh-row1{
  display:flex;align-items:center;flex-wrap:wrap;gap:8px;
  padding:10px 0;
}
.sh-votes{display:flex;flex-direction:column;gap:2px;min-width:120px}
.sh-row2{
  display:flex;align-items:center;flex-wrap:wrap;gap:12px;
  padding:8px 0;border-top:1px solid #0f172a;
}

/* 预测价格 strip */
.preds-strip{display:flex;gap:8px;flex-wrap:wrap}
.pred-chip{
  background:#0f172a;border:1px solid #1e293b;border-radius:6px;
  padding:4px 10px;display:flex;align-items:center;gap:6px;
}
.pc-label{font-size:.7rem;color:#64748b}
.pc-range{font-size:.78rem;font-weight:600;color:#94a3b8;font-family:'JetBrains Mono',monospace}
.pc-conf{font-size:.68rem;color:#475569}

/* 现价 strip */
.price-strip{display:flex;gap:16px;flex-wrap:wrap}
.ps-item{display:flex;align-items:center;gap:4px}
.ps-label{font-size:.72rem;color:#64748b}
.ps-val{font-size:.88rem;font-weight:600;color:#e2e8f0;font-family:'JetBrains Mono',monospace}
.ps-stop{color:#f87171}

/* 主要风险 box */
.risks-box{
  background:rgba(239,68,68,.05);border:1px solid rgba(239,68,68,.2);
  border-radius:6px;padding:6px 12px;max-width:400px;
}
.risks-title{font-size:.72rem;color:#f87171;margin-bottom:4px;font-weight:600}
.risks-list{list-style:none;display:flex;flex-direction:column;gap:2px}
.risks-list li{font-size:.72rem;color:#94a3b8;padding-left:10px;position:relative}
.risks-list li::before{content:'▸';position:absolute;left:0;color:#ef4444}

/* ── 主体：左图谱 + 右报告 ────────────────────────────────── */
.main-body{display:flex;flex:1;overflow:hidden;min-height:0}

/* 图谱面板 */
.graph-panel{
  width:33.333%;flex-shrink:0;
  display:flex;flex-direction:column;
  border-right:1px solid #1e293b;
  background:#060d1a;
  min-width:200px;
}
.graph-panel-head{
  padding:10px 16px;
  border-bottom:1px solid #1e293b;
  display:flex;align-items:center;gap:10px;flex-shrink:0;background:#060d1a;
}
.gp-title{font-weight:600;color:#94a3b8;font-size:.85rem}
.gp-sub{color:#64748b;font-size:.75rem;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gp-stats{display:flex;gap:6px}
.stat-pill{font-size:.68rem;background:#0f172a;color:#64748b;padding:2px 6px;border-radius:10px;border:1px solid #1e293b}

.graph-canvas-wrap{position:relative;flex:1;overflow:hidden;background:#040b16}
.graph-svg{display:block;width:100%;height:100%}

/* 无图谱时占位 */
.graph-overlay{
  position:absolute;inset:0;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:12px;
  background:#040b16;color:#1e293b;pointer-events:none;z-index:5;
}
.go-title{font-size:.85rem;color:#1e293b}

/* 图例 */
.legend-box{
  position:absolute;bottom:12px;left:12px;
  background:rgba(6,13,26,.88);border:1px solid #1e293b;border-radius:8px;
  padding:8px;display:flex;flex-direction:column;gap:4px;
  max-height:50%;overflow-y:auto;z-index:10;
}
.legend-item{
  display:flex;align-items:center;gap:5px;cursor:pointer;
  padding:3px 6px;border-radius:4px;font-size:.72rem;color:#94a3b8;
  transition:background .15s;white-space:nowrap;
}
.legend-item:hover{background:#1e293b}
.legend-item.li-active{background:#1e3a5f;color:#93c5fd}
.legend-item.li-dimmed{opacity:.25}
.ldot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.lcount{color:#475569;font-size:.68rem;margin-left:2px}

/* hint bar */
.hint-bar{
  position:absolute;top:10px;left:50%;transform:translateX(-50%);
  background:rgba(15,23,42,.9);border:1px solid #1e293b;border-radius:6px;
  padding:4px 12px;display:flex;align-items:center;gap:10px;
  font-size:.72rem;color:#64748b;z-index:11;white-space:nowrap;pointer-events:none;
}
.hint-bar button{pointer-events:all;background:#1e293b;border:none;color:#94a3b8;cursor:pointer;padding:2px 8px;border-radius:4px;font-size:.7rem}

/* 节点详情浮层 */
.node-detail-overlay{
  position:absolute;top:12px;right:12px;
  width:min(280px,calc(100% - 24px));
  background:#0a1428;border:1px solid #1e293b;border-radius:10px;
  z-index:20;overflow:hidden;max-height:calc(100% - 24px);overflow-y:auto;
  box-shadow:0 8px 32px rgba(0,0,0,.5);
}
.nd-head{display:flex;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid #1e293b}
.nd-type{font-size:.68rem;padding:2px 8px;border-radius:10px;color:#f8fafc;font-weight:600}
.nd-close{margin-left:auto;background:transparent;border:none;color:#64748b;cursor:pointer;font-size:1rem;padding:0 4px}
.nd-title{padding:10px 12px 8px;font-size:.9rem;font-weight:600;color:#f8fafc;border-bottom:1px solid #0f172a}
.nd-section{padding:6px 0}
.nd-sh{padding:4px 12px;font-size:.7rem;color:#64748b;font-weight:600;text-transform:uppercase;letter-spacing:.05em}
.nd-sh .nd-cc{background:#1e293b;color:#94a3b8;padding:1px 5px;border-radius:8px;margin-left:4px;font-size:.68rem}
.nd-row{display:flex;gap:8px;padding:3px 12px;font-size:.75rem}
.nd-key{color:#64748b;width:60px;flex-shrink:0}
.nd-val{color:#e2e8f0;word-break:break-all}
.nd-conn{display:flex;align-items:center;gap:8px;padding:5px 12px;border-radius:0;transition:background .12s;font-size:.75rem}
.nd-conn:hover{background:#1e293b}
.nd-cdot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.nd-cinfo{display:flex;flex-direction:column;flex:1;min-width:0}
.nd-clabel{color:#e2e8f0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nd-crel{color:#64748b;font-size:.68rem}

/* 分隔条 */
.panel-divider{
  width:5px;flex-shrink:0;cursor:col-resize;
  background:repeating-linear-gradient(transparent,transparent 4px,#1e293b 4px,#1e293b 5px);
  transition:background .15s;z-index:5;
}
.panel-divider:hover,.panel-divider:active{background:#3b82f6}

/* 报告面板 */
.report-panel{
  flex:1;min-width:200px;overflow:hidden;
  display:flex;flex-direction:column;background:#060d1a;
}
.report-scroll{
  flex:1;overflow-y:auto;overflow-x:hidden;padding:24px 32px;
  width:100%;box-sizing:border-box;
}

/* ── 报告 Markdown 样式 ──────────────────────────────────────── */
.report-scroll h1{font-size:1.4rem;font-weight:700;color:#f8fafc;border-bottom:1px solid #1e293b;padding-bottom:8px;margin:0 0 20px}
.report-scroll h2{font-size:1.15rem;font-weight:600;color:#e2e8f0;margin:24px 0 10px;padding-left:10px;border-left:3px solid #3b82f6}
.report-scroll h3{font-size:1rem;font-weight:600;color:#94a3b8;margin:16px 0 8px}
.report-scroll p{color:#94a3b8;line-height:1.7;margin-bottom:12px;font-size:.88rem}
.report-scroll ul,.report-scroll ol{padding-left:18px;margin-bottom:12px}
.report-scroll li{color:#94a3b8;font-size:.88rem;line-height:1.7;margin-bottom:4px}
.report-scroll strong{color:#e2e8f0}
.report-scroll em{color:#64748b;font-style:italic}
.report-scroll code{background:#0f172a;border:1px solid #1e293b;color:#93c5fd;font-size:.8rem;padding:1px 5px;border-radius:3px;font-family:'JetBrains Mono',monospace}
.report-scroll pre{background:#0f172a;border:1px solid #1e293b;border-radius:6px;padding:14px 16px;overflow-x:auto;margin-bottom:14px;max-width:100%}
.report-scroll table{width:100%;max-width:100%;table-layout:auto;border-collapse:collapse;margin-bottom:14px;font-size:.82rem}
.report-scroll td,.report-scroll th{overflow-wrap:break-word;word-break:break-word}
.report-scroll pre code{background:none;border:none;padding:0;font-size:.8rem}
.report-scroll blockquote{border-left:3px solid #334155;padding-left:14px;margin:12px 0;color:#64748b}
.report-scroll th{background:#0f172a;color:#94a3b8;padding:8px 12px;text-align:left;border-bottom:1px solid #1e293b;font-weight:600}
.report-scroll td{padding:7px 12px;border-bottom:1px solid #0f172a;color:#94a3b8}
.report-scroll tr:hover td{background:#0a1428}
.report-scroll a{color:#3b82f6}
.report-scroll hr{border:none;border-top:1px solid #1e293b;margin:20px 0}

/* 暂无报告 */
.not-found{padding:60px 20px;text-align:center;color:#475569}
.not-found h2{font-size:1.2rem;margin-bottom:12px;color:#64748b}
.not-found a{color:#3b82f6}

/* ── 响应式 ──────────────────────────────────────────────────── */
@media (max-width:768px){
  .main-body{flex-direction:column}
  .graph-panel{width:100%!important;height:40vh;border-right:none;border-bottom:1px solid #1e293b}
  .panel-divider{display:none}
  .report-panel{flex:1}
  .report-scroll{padding:16px}
  .cards-grid{grid-template-columns:1fr}
  .header-inner{gap:6px}
}
