
.inst-card{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:14px 16px;cursor:pointer;transition:transform .12s,border-color .12s;position:relative}
.inst-card:hover{transform:translateY(-2px);border-color:var(--accent)}
.badge{display:inline-block;padding:1px 8px;border-radius:10px;font-size:11px;font-weight:600;white-space:nowrap}
.act-new{background:rgba(59,130,246,.15);color:#3b82f6}
.act-up{background:rgba(29,158,108,.14);color:#1d9e6c}
.act-down{background:rgba(224,83,61,.14);color:#e0533d}
.act-exit{background:rgba(128,128,128,.15);color:#8a8f98}
.act-none{background:rgba(128,128,128,.10);color:#8a8f98}
.act-na{background:rgba(128,128,128,.08);color:#9aa3b2}
.breadcrumb{font-size:13px;color:var(--muted);margin:14px 0 4px;display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap;background:var(--panel2);border:1px solid var(--border);border-radius:8px;padding:6px 12px;width:fit-content}
.breadcrumb a{color:var(--accent);text-decoration:none;font-weight:600}
.breadcrumb a:hover{text-decoration:underline}
.breadcrumb .crumb-cur{color:var(--text);font-weight:700}
.page-head{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin:6px 0 2px}
.page-head h1{font-size:26px;margin:0}
.page-head .en{color:var(--muted);font-size:15px}
.page-head .stock-head-logo,.page-head .stock-head-letter{align-self:center}
.rank-chip{background:var(--accent);color:#fff;border-radius:8px;padding:2px 10px;font-size:13px;font-weight:700}
.ticker-chip{background:var(--accent);color:#fff;border-radius:8px;padding:2px 10px;font-size:13px;font-weight:700;letter-spacing:.5px}
.ticker-chip:empty{display:none}
.stat-row{display:flex;gap:12px;flex-wrap:wrap;margin:14px 0}
.stat-card{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:10px 16px;min-width:110px}
.stat-card .lbl{font-size:11px;color:var(--muted)}
.stat-card .val{font-size:17px;font-weight:700;margin-top:2px}
.filter-btn{cursor:pointer;user-select:none;transition:border-color .12s}
.filter-btn:hover{border-color:var(--accent)}
.filter-btn.active{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}
.table-wrap{overflow-x:auto;background:var(--panel);border:1px solid var(--border);border-radius:12px}
table{width:100%;border-collapse:collapse;font-size:13.5px}
th{position:relative;text-align:left;padding:10px 12px;background:var(--panel2);color:var(--muted);font-weight:600;border-bottom:1px solid var(--border)}
td{padding:8px 12px;border-bottom:1px solid var(--border);vertical-align:middle}
tr:last-child td{border-bottom:none}
td.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
th.num{text-align:right;white-space:nowrap}
td:first-child{white-space:normal}
.tick-link{color:var(--accent);text-decoration:none;font-weight:600}
.tick-link:hover{text-decoration:none}
.tick{color:var(--muted);font-size:12px}
.footer{margin:26px 0 40px;color:var(--muted);font-size:12px;line-height:1.8}
.chart-box{background:var(--panel);border:1px solid var(--border);border-radius:12px;margin:14px 0;overflow:hidden;width:100%;max-width:none;display:block}
.chart-box #chartBody svg{display:block}
.range-bar{display:flex;gap:8px;padding:12px 16px 0;margin-bottom:8px}
.range-btn{border:1px solid var(--border);background:var(--panel2);color:var(--text);border-radius:8px;padding:4px 14px;font-size:13px;cursor:pointer}
.range-btn.active{background:var(--accent);color:#fff;border-color:var(--accent)}
.chart-loading,.chart-err{color:var(--muted);padding:40px;text-align:center}
#e0533d
.scope-btn{border:1px solid var(--border);background:var(--panel2);color:var(--text);border-radius:8px;padding:5px 12px;font-size:12.5px;cursor:pointer;white-space:nowrap}
.scope-btn:hover{border-color:var(--accent)}
.scope-btn.active{background:var(--accent);color:#fff;border-color:var(--accent)}
.flow-summary{display:flex;gap:12px;flex-wrap:wrap;margin:14px 0}
.flow-card{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:10px 16px;min-width:150px;flex:1 1 180px}
.flow-card .lbl{font-size:11px;color:var(--muted)}
.flow-card .val{font-size:17px;font-weight:700;margin-top:2px}
.flow-card .sub{font-size:10px;color:var(--muted);margin-top:1px}
.flow-in .val{color:var(--up,#1d9e6c)}
.flow-out .val{color:var(--down,#e0533d)}
.flow-net.pos .val{color:var(--up,#1d9e6c)}
.flow-net.neg .val{color:var(--down,#e0533d)}
.chg-up{color:var(--up,#1d9e6c)}
.chg-down{color:var(--down,#e0533d)}
.chg-new{color:var(--new,#c084fc)}
.chg-exit{color:var(--exit,#fbbf24)}
.chg-none{color:var(--muted)}
/* 股数变动列：合并“操作”标签（2026-09-07 Jason）：股数变动额 / 环比% / 操作标签 */
.chgcell{display:inline-flex;flex-direction:column;align-items:flex-end;gap:1px;line-height:1.25;white-space:nowrap;font-variant-numeric:tabular-nums}
.chgcell .chgcell-amt{font-weight:700}
.chgcell .chgcell-p{font-size:11px;font-weight:600}
.chgcell .badge{margin-top:2px;font-weight:700}
tr.inst-highlight{background:rgba(56,189,248,.12);box-shadow:inset 3px 0 0 var(--accent)}
tr.inst-highlight td{background:transparent}

.inst-view-bar{display:flex;align-items:stretch;margin:14px 0;background:var(--panel);border:1px solid var(--border);border-radius:12px;overflow:hidden;flex-wrap:wrap}
.inst-view-banner{display:flex;align-items:center;gap:10px;margin:14px 0 0;padding:10px 16px;background:linear-gradient(90deg,rgba(56,189,248,.18),rgba(56,189,248,.05));border:1px solid rgba(56,189,248,.45);border-radius:10px;font-size:14px;color:var(--text);flex-wrap:wrap;font-weight:600}
.inst-view-banner .ivb-ico{font-size:18px}
.inst-view-banner .ivb-title{font-weight:800;color:#fff;font-size:15px}
.inst-view-banner .ivb-sub{font-size:12px;color:var(--muted);font-weight:400}
.holder-view-btn.active{background:var(--accent)!important;color:#fff!important;border-color:var(--accent)!important;font-weight:700}
.inst-fav-btn{font-size:18px;background:transparent;border:1px solid var(--border);border-radius:8px;padding:4px 12px;cursor:pointer;color:var(--muted)}
.inst-fav-btn.on{color:#f59e0b;border-color:rgba(245,158,11,.5)}
.iv-item{flex:1;min-width:130px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:12px 10px;border-right:1px solid var(--border)}
.iv-item:last-child{border-right:none}
.iv-lbl{font-size:11px;color:var(--muted)}
.iv-val{font-size:16px;font-weight:700;white-space:nowrap}
.iv-up{color:#1d9e6c}
.iv-down{color:#e0533d}
.card-row-4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:14px 0;align-items:stretch}
.card-row-7{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:12px;margin:14px 0;align-items:stretch}
@media (max-width:900px){.card-row-7{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:560px){.card-row-7{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* 机构页: 8 卡统计行（最新持仓市值 + 环比季度变动 + 6 筛选卡） */
.card-row-8{display:grid;grid-template-columns:1.35fr 1.35fr repeat(6,1fr);gap:12px;margin:14px 0;align-items:stretch}
.card-row-8 .stat-card{display:flex;flex-direction:column;justify-content:center}
@media (max-width:1100px){.card-row-8{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media (max-width:620px){.card-row-8{grid-template-columns:repeat(2,minmax(0,1fr))}}
.qoq-card .val{font-size:14px;white-space:nowrap}
.qoq-card .qoq-pct{font-size:10.5px;font-weight:700;margin-left:4px}
.qoq-card .qoq-vs{opacity:.85;font-weight:400}
/* 操作判定卡(仅管理员) + 走势图行: 独立排版 */
/* 判定卡在左 + 持仓市值走势图/股价vsSPY 在右（同排） */
.vwrap{display:flex;gap:12px;margin:0 0 14px;align-items:stretch;flex-wrap:wrap}
.vwrap .verdict-card{flex:0 0 auto;width:max-content;max-width:100%}
.vwrap .charts-row{flex:1 1 0;min-width:340px;margin:0}
.charts-row{display:flex;gap:12px;margin:0 0 14px;align-items:stretch}
.verdict-card{min-width:200px;padding:10px 12px;width:max-content;max-width:100%}
.verdict-card .lbl{font-size:11.5px;color:var(--muted);margin-bottom:4px;display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap}
.amt-seg{display:inline-flex;gap:4px}
.vt-btn{border:1px solid var(--border,#334155);background:var(--panel,#0f172a);color:var(--muted);border-radius:5px;padding:2px 8px;font-size:11px;cursor:pointer;line-height:1.4}
.vt-btn.active{border-color:var(--accent,#38bdf8);color:var(--accent,#38bdf8);font-weight:600}
.vstat{width:auto;border-collapse:collapse;margin-top:2px;table-layout:fixed}
.vstat th{font-size:11px;color:var(--muted);padding:4px 8px;text-align:right;font-weight:600}
.vstat th:first-child{text-align:left}
.vstat th:nth-child(1),.vstat td:nth-child(1){width:120px}
.vstat th:nth-child(n+2),.vstat td:nth-child(n+2){width:78px}
.vstat td{font-size:12.5px;padding:4px 8px;text-align:right;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.vstat td:first-child{text-align:left;font-weight:400}
.vstat .vt-amt{font-size:11.5px;white-space:nowrap}
.vstat .v-good{color:#1d9e6c}
.vstat .v-bad{color:#e0533d}
.vstat tr.vsum td{border-top:1px dashed var(--border);padding-top:7px;font-weight:700;font-size:13px}
.vstat tr.vsum td:first-child{font-weight:600}
/* 操作判定卡: 内容上下均匀分布（与右侧走势图卡等高, 不露底白） */
.verdict-card{display:flex;flex-direction:column}
.verdict-card .vstat{flex:1}
/* 走势图卡（左右独立；持仓市值 / 股价vsSPY; 1/3/5年/所有, hover 显示数值） */
.mv-chart-card{flex:1 1 0;min-width:320px;padding:10px 14px 8px;position:relative}
.px-chart-card{flex:1 1 0;min-width:320px;padding:10px 14px 8px;position:relative}
.mv-chart-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:6px;min-height:21px}
.mv-chart-title{display:inline-flex;align-items:center;height:21px;font-size:11.5px;color:var(--muted);font-weight:600;white-space:nowrap}
/* 图例: 蓝=机构股票, 橙=S&P 500 (SPY) */
.mv-legend{display:inline-flex;gap:8px;align-items:center;height:21px;font-size:10px;color:var(--muted);white-space:nowrap;flex-wrap:wrap}
.mv-legend .lg{display:inline-flex;align-items:center;gap:4px}
.mv-legend .dot{display:inline-block;width:8px;height:8px;border-radius:50%;flex:none}
.mv-legend .lg-stock .dot{background:#3b82f6}
.mv-legend .lg-spy .dot{background:#f59e0b}
.mv-range{display:inline-flex;gap:4px;flex-wrap:wrap}
.mv-range .range-btn{padding:2px 9px;font-size:11px;line-height:1}
.mv-chart-body{position:relative}
.mv-chart-body svg{display:block;width:100%}
.mv-tip{position:absolute;pointer-events:none;background:rgba(15,23,42,.94);border:1px solid var(--border);border-radius:8px;padding:6px 10px;font-size:12px;color:var(--text);z-index:60;white-space:nowrap;box-shadow:0 4px 16px rgba(0,0,0,.4);display:none;line-height:1.5}
.mv-tip .mv-tip-v{font-weight:700}
.mv-tip .mv-tip-v2{font-weight:700}
.mv-tip .mv-tip-q{color:var(--muted)}
.mv-tip .mv-tip-sep{color:var(--muted)}
[data-theme="light"] .mv-tip{background:rgba(255,255,255,.96);border-color:#d4dbe5}
/* 机构页: 走势图卡 持仓市值/持仓板块 同卡切换 + 板块构成堆叠图（每季一根, 分段=板块占该季组合%; 灰=未分类余量; 拖动看更早季度） */
.mv-tabs{display:inline-flex;gap:4px;flex-wrap:wrap;margin-right:auto;min-width:0}
.mv-tabs .range-btn{padding:2px 10px;font-size:11px;line-height:1}
.mv-tabs .range-btn.active{color:#fff}
.sec-wrap{position:relative}
.sec-legend{display:flex;flex-wrap:wrap;gap:3px 10px;font-size:10px;color:var(--muted);margin:2px 0 5px;max-width:100%}
.sec-legend .sw{display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:4px;vertical-align:-1px}
.sec-body{position:relative;cursor:grab;touch-action:pan-y}
.sec-body.dragging{cursor:grabbing;user-select:none}
.sec-body svg{display:block;width:100%}
.sec-hint{font-size:10.5px;color:var(--muted);text-align:center;margin-top:3px;display:none;line-height:1.5}
.sec-reset{margin-left:10px;padding:0 8px;line-height:16px;border:1px solid var(--border);background:var(--panel2);border-radius:9px;font-size:10.5px;color:var(--muted);cursor:pointer;vertical-align:1px}
.sec-reset:hover{border-color:var(--accent);color:var(--text)}
/* 板块图「放大显示」按钮 + 放大弹窗（2026-09-06 Jason） */
.sec-zoom{margin-left:auto;padding:2px 10px;font-size:11px;line-height:1;border:1px solid var(--border);background:var(--panel2);color:var(--text);border-radius:8px;cursor:pointer}
.sec-zoom:hover{border-color:var(--accent)}
.sec-modal{position:fixed;inset:0;background:rgba(10,15,25,.55);z-index:120;display:none;align-items:center;justify-content:center;padding:20px}
[data-theme="light"] .sec-modal{background:rgba(30,41,59,.35)}
.sec-modal-box{background:var(--panel);border:1px solid var(--border);border-radius:14px;width:min(1240px,96vw);max-height:94vh;overflow:auto;padding:12px 16px 10px;box-shadow:0 18px 50px rgba(0,0,0,.45)}
.sec-modal-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:6px}
.sec-modal-title{font-size:13.5px;font-weight:700;color:var(--text)}
.sec-modal-close{width:26px;height:26px;line-height:1;font-size:19px;color:var(--muted);background:transparent;border:none;border-radius:6px;cursor:pointer}
.sec-modal-close:hover{color:var(--text)}
/* 操作判定：右下角浮窗（仅管理员；点「操作判定」按钮展开/收起；非管理员整块不渲染；2026-09-06 Jason 拍板取代左排同排布局） */
.verdict-fab{position:fixed;right:16px;bottom:16px;z-index:85;padding:9px 16px;border-radius:999px;border:1px solid var(--border);background:var(--panel2);color:var(--text);font-size:13px;cursor:pointer;box-shadow:0 6px 18px rgba(0,0,0,.28);white-space:nowrap}
.verdict-fab:hover{border-color:var(--accent)}
.verdict-fab.active{background:var(--accent);color:#fff;border-color:var(--accent)}
.vwrap .verdict-card{position:fixed;right:16px;bottom:64px;z-index:85;display:none;width:max-content;max-width:min(560px,calc(100vw - 40px));max-height:72vh;overflow-y:auto;box-shadow:0 10px 30px rgba(0,0,0,.35)}
body.verdict-open .vwrap .verdict-card{display:flex}
@media (max-width:640px){.verdict-fab{bottom:12px;right:12px;padding:8px 12px;font-size:12px}.vwrap .verdict-card{right:12px;bottom:56px;max-width:calc(100vw - 24px)}}
/* 窄屏: 走势图行换行, 每卡独占一行 */
@media (max-width:1100px){.charts-row{flex-wrap:wrap}.mv-chart-card,.px-chart-card{flex:1 1 100%}}
.data-note{font-size:11px;color:var(--muted,#94a3b8);margin:2px 0 14px;line-height:1.5}
.holdings-title{font-size:13px;font-weight:700;color:var(--text);padding:12px 16px 0}
.lang-wrap{position:relative;display:inline-block}
.lang-menu{position:absolute;right:0;top:100%;margin-top:6px;background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:6px;z-index:99;min-width:140px;box-shadow:0 8px 24px rgba(0,0,0,.35)}
.lang-menu a{display:block;padding:7px 12px;border-radius:7px;color:var(--text);text-decoration:none;font-size:13px;white-space:nowrap}
.lang-menu a:hover{background:var(--panel2)}
.lang-menu a.cur{font-weight:700;color:var(--accent)}
/* ── RTL（阿拉伯语）适配 ── */
html[dir="rtl"] .stock-suggest .sg-tick,
html[dir="rtl"] .list-count,
html[dir="rtl"] .chart-close,
html[dir="rtl"] #stockFavBtn,
html[dir="rtl"] #aggViewBtn{margin-left:0!important;margin-right:auto!important}
html[dir="rtl"] thead th:first-child,
html[dir="rtl"] td:first-child,
html[dir="rtl"] .holders-scroll thead th:first-child,
html[dir="rtl"] .holders-scroll tbody td:first-child{text-align:right}
html[dir="rtl"] .chart-tab .cnt{margin-left:0;margin-right:4px}
html[dir="rtl"] .range-bar .lbl{margin-right:0;margin-left:4px}
html[dir="rtl"] .sort-btn .arr{margin-left:0;margin-right:3px}
/* 股票页 持仓机构列表：机构名下方英文 / 历史所有权迷你阶梯图 / 组合占比 / 排名 */
.tick-link .tick.nm-below{display:block;margin-top:1px;font-weight:400;line-height:1.3}
.ow-th{font-size:11.5px}
.ow-cell{min-width:118px;width:118px;padding:4px 6px}
.ow-spark{display:flex;align-items:flex-end;gap:2px;height:30px;padding:0 2px}
.ow-step{position:relative;flex:1 1 0;min-width:0;background:linear-gradient(180deg,var(--accent,#38bdf8),rgba(56,189,248,.45));border-radius:2px 2px 0 0;cursor:pointer;transition:filter .1s}
.ow-step.zero{background:rgba(148,163,184,.28)}
.ow-step.ow-exit::after{content:'✕';position:absolute;top:-11px;left:50%;transform:translateX(-50%);font-size:12px;line-height:1;color:#e0533d;font-weight:800}
.ow-step:hover{filter:brightness(1.3)}
.ow-rank{font-weight:700;color:var(--text)}
thead th.sorted{color:var(--accent,#38bdf8)}
html[dir="rtl"] .inst-zh{padding-right:0;padding-left:40px}
