/* ============================================================
   masters.css — 「大师持仓」模块样式
   版式以 portfolio-zh-phone.pdf 电子册为准（和纸 / 朱印 / 衬线）
   「模板」文件 — 更新数据时请勿修改
   ============================================================ */

.masters-main {
  max-width: 1080px;
  margin: 0 auto;
  padding: 36px var(--pad) 72px;
  position: relative;
  z-index: 2;
  min-height: 60vh;
}

/* ============ 模块头 (模拟电子册页眉) ============ */
.masthead {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 16px;
  border-bottom: 1px solid var(--line);
  padding-bottom: 10px;
  font-family: var(--font-mono);
  font-size: 10px;
  letter-spacing: 2px;
  color: var(--ink-fade);
}
.masthead .mh-brand { color: var(--ink-soft); }
.masthead .mh-right { text-align: right; }

.mast-tabs-row {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 18px;
  margin: 26px 0 34px;
  border-bottom: 1px solid var(--line);
  flex-wrap: wrap;
}
.mast-tabs {
  display: flex;
  gap: 2px;
}
.mast-tabs a {
  font-family: var(--font-serif);
  font-size: 14px;
  letter-spacing: 4px;
  color: var(--ink-soft);
  padding: 10px 22px 12px;
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
  transition: color .2s, border-color .2s;
  white-space: nowrap;
}

/* ============ 股票搜索框（引擎式联想） ============ */
.stock-search {
  position: relative;
  flex: 0 1 360px;
  min-width: 220px;
  margin-bottom: 6px;
}
.stock-search input {
  width: 100%;
  background: var(--paper-light);
  border: 1px solid var(--line-strong);
  padding: 9px 14px;
  font: inherit;
  font-size: 13.5px;
  color: var(--ink);
  outline: none;
  transition: border-color .2s, box-shadow .2s;
}
.stock-search input:focus {
  border-color: var(--vermilion);
  box-shadow: 0 2px 10px rgba(168,50,45,0.10);
}
.stock-search input::placeholder { color: var(--ink-fade); font-size: 12.5px; letter-spacing: 1px; }
.ss-dropdown {
  position: absolute;
  top: calc(100% + 4px);
  left: 0; right: 0;
  background: var(--paper-light);
  border: 1px solid var(--line-strong);
  box-shadow: 0 10px 28px rgba(31,27,23,0.14);
  z-index: 80;
  max-height: 320px;
  overflow-y: auto;
  display: none;
}
.ss-dropdown.open { display: block; }
.ss-item {
  display: flex;
  align-items: baseline;
  gap: 10px;
  padding: 10px 14px;
  cursor: pointer;
  border-bottom: 1px dashed var(--line);
}
.ss-item:last-child { border-bottom: none; }
.ss-item:hover, .ss-item.active { background: var(--vermilion-bg); }
.ss-item .s-sym {
  font-family: var(--font-mono);
  font-weight: 600;
  font-size: 13px;
  color: var(--ink);
  min-width: 52px;
}
.ss-item .s-zh {
  font-size: 13px;
  color: var(--ink);
  letter-spacing: 0.5px;
  flex: 1;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.ss-item .s-n {
  font-family: var(--font-mono);
  font-size: 10px;
  color: var(--ink-fade);
  white-space: nowrap;
}
.ss-item .s-n b { color: var(--vermilion); font-size: 12px; }

/* ============ 股票结果页 ============ */
.stock-sub {
  font-family: var(--font-mono);
  font-size: 10px;
  letter-spacing: 2px;
  color: var(--ink-fade);
  margin-top: 6px;
}
.stock-holders-note {
  margin-top: 16px;
  font-size: 12.5px;
  color: var(--ink-soft);
  letter-spacing: 0.5px;
  line-height: 1.9;
}
.stock-holders-note a {
  border-bottom: 1px dotted var(--line-strong);
  transition: color .15s, border-color .15s;
}
.stock-holders-note a:hover { color: var(--vermilion); border-bottom-color: var(--vermilion); }
.mast-tabs a .en {
  font-family: var(--font-mono);
  font-size: 9px;
  letter-spacing: 1px;
  color: var(--ink-fade);
  margin-left: 8px;
}
.mast-tabs a:hover { color: var(--ink); }
.mast-tabs a.active {
  color: var(--vermilion);
  border-bottom-color: var(--vermilion);
}
.mast-tabs a.active .en { color: var(--vermilion); }

/* ============ 页面大标题区 ============ */
.page-title {
  font-family: var(--font-serif);
  font-weight: 500;
  font-size: 38px;
  letter-spacing: 8px;
  color: var(--ink);
  line-height: 1.15;
}
.page-title .slash {
  color: var(--line-strong);
  font-weight: 400;
  margin: 0 6px;
}
.page-sub {
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: 3px;
  color: var(--ink-fade);
  margin-top: 10px;
}
.page-blurb {
  font-size: 12px;
  color: var(--ink-soft);
  letter-spacing: 1px;
  margin-top: 16px;
}
.page-meta-row {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 14px;
  border-top: 1px solid var(--line);
  margin-top: 20px;
  padding-top: 10px;
  font-family: var(--font-mono);
  font-size: 10px;
  letter-spacing: 2px;
  color: var(--ink-fade);
}

/* ============ 共识榜 ============ */
.consensus-list { margin-top: 30px; }
.consensus-row {
  display: grid;
  grid-template-columns: 44px 150px 90px 1fr 74px;
  gap: 18px;
  align-items: start;
  padding: 20px 0;
  border-bottom: 1px solid var(--line);
}
.consensus-row:last-child { border-bottom: none; }
.c-rank {
  font-family: var(--font-serif);
  font-size: 24px;
  color: var(--ink-fade);
  letter-spacing: 1px;
  padding-top: 2px;
}
.c-stock { min-width: 0; }
.c-sym {
  font-family: var(--font-mono);
  font-weight: 600;
  font-size: 16px;
  letter-spacing: 0.5px;
  color: var(--ink);
}
.c-name {
  font-size: 11px;
  color: var(--ink-soft);
  margin-top: 4px;
  letter-spacing: 0.5px;
}
.c-bar {
  height: 3px;
  background: var(--paper-shade);
  position: relative;
  overflow: hidden;
  margin-top: 12px;
}
.c-bar-fill {
  position: absolute;
  inset: 0 auto 0 0;
  background: var(--vermilion);
  transform-origin: left;
  animation: fillIn .8s ease-out;
}
@keyframes fillIn {
  from { transform: scaleX(0); }
  to   { transform: scaleX(1); }
}
.c-holders {
  font-size: 11.5px;
  color: var(--ink-soft);
  line-height: 2;
  letter-spacing: 0.5px;
}
.c-holders .holder {
  display: inline;
  border-bottom: 1px dotted transparent;
}
.c-holders a.holder {
  cursor: pointer;
  transition: color .15s, border-color .15s;
}
.c-holders a.holder:hover {
  color: var(--vermilion);
  border-bottom-color: var(--vermilion);
}
.c-holders .holder + .holder::before {
  content: " · ";
  color: var(--line-strong);
}
.c-count {
  text-align: right;
  font-family: var(--font-serif);
  white-space: nowrap;
}
.c-count .lbl {
  font-family: var(--font-serif);
  font-size: 9.5px;
  letter-spacing: 2px;
  color: var(--ink-fade);
  margin-bottom: 3px;
}
.c-count .n {
  font-size: 26px;
  color: var(--ink);
  letter-spacing: 1px;
}
.c-count .total {
  font-family: var(--font-mono);
  font-size: 10px;
  color: var(--ink-fade);
  letter-spacing: 1px;
  display: block;
  margin-top: 2px;
}

.consensus-note {
  margin-top: 16px;
  font-size: 10.5px;
  color: var(--ink-fade);
  letter-spacing: 0.3px;
  line-height: 1.9;
}

/* ============ 名録 ============ */
.dir-controls {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  margin: 26px 0 6px;
}
.dir-search {
  position: relative;
  flex: 0 1 320px;
}
.dir-search input {
  width: 100%;
  background: transparent;
  border: none;
  border-bottom: 1px solid var(--line);
  padding: 8px 26px 8px 4px;
  font: inherit;
  font-size: 13px;
  color: var(--ink);
  outline: none;
  transition: border-color .2s;
}
.dir-search input:focus { border-bottom-color: var(--ink-soft); }
.dir-search input::placeholder { color: var(--ink-fade); font-size: 12px; }
.dir-search::after {
  content: "⌕";
  position: absolute;
  right: 4px; top: 7px;
  color: var(--ink-fade);
  font-size: 15px;
  pointer-events: none;
}
.dir-count {
  font-family: var(--font-mono);
  font-size: 10px;
  letter-spacing: 2px;
  color: var(--ink-fade);
  white-space: nowrap;
}
.dir-list { margin-top: 14px; }
.dir-row {
  display: grid;
  grid-template-columns: 46px 1fr auto;
  gap: 18px;
  align-items: center;
  padding: 15px 6px;
  border-bottom: 1px dashed var(--line);
  cursor: pointer;
  transition: background-color .2s, padding-left .2s;
  position: relative;
}
.dir-row:hover {
  background: linear-gradient(to right, var(--paper-light), transparent);
  padding-left: 16px;
}
.dir-row .d-rank {
  font-family: var(--font-serif);
  font-size: 15px;
  color: var(--ink-fade);
  letter-spacing: 1px;
}
.dir-row .d-zh {
  font-family: var(--font-zh);
  font-size: 16px;
  font-weight: 500;
  letter-spacing: 2px;
  color: var(--ink);
}
.dir-row .d-en {
  font-family: var(--font-mono);
  font-size: 10px;
  color: var(--ink-fade);
  letter-spacing: 0.5px;
  margin-top: 3px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  max-width: 520px;
}
.dir-row .d-right { text-align: right; white-space: nowrap; }
.dir-row .d-value {
  font-family: var(--font-mono);
  font-size: 16px;
  color: var(--ink);
  letter-spacing: 0.3px;
}
.dir-row .d-stocks {
  font-family: var(--font-mono);
  font-size: 10px;
  color: var(--ink-fade);
  letter-spacing: 1px;
  margin-top: 3px;
}
.dir-row .d-go {
  color: var(--ink-fade);
  font-family: var(--font-mono);
  font-size: 12px;
  margin-left: 14px;
  transition: transform .2s, color .2s;
}
.dir-row:hover .d-go { transform: translateX(3px); color: var(--vermilion); }

/* stale 标记 */
.stale-badge {
  display: inline-block;
  margin-left: 8px;
  color: var(--gold);
  font-size: 0.85em;
  vertical-align: middle;
  cursor: help;
}
.stale-banner {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 18px 0 4px;
  padding: 10px 14px;
  background: var(--gold-bg);
  border-left: 3px solid var(--gold);
  color: var(--ink-soft);
  font-size: 13px;
  line-height: 1.6;
}
.stale-banner .stale-icon { color: var(--gold); font-size: 15px; }
.stale-banner .stale-text { flex: 1; }

/* ============ 投资者详情（顺位连续滚动） ============ */
.inv-sec { min-width: 0; }

/* 后续大师区块分隔栏 — 模拟电子册每页页眉 */
.sec-divider {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 14px;
  border-top: 1px solid var(--line-strong);
  border-bottom: 1px solid var(--line);
  padding: 9px 0;
  margin: 52px 0 34px;
  font-family: var(--font-mono);
  font-size: 10px;
  letter-spacing: 2px;
  color: var(--ink-fade);
}
.sec-divider .sd-brand { color: var(--ink-soft); transition: color .2s; }
.sec-divider a.sd-brand:hover { color: var(--vermilion); }
.sec-divider .sd-right { text-align: right; }

/* 区块底部「下一位」预告 */
.next-teaser {
  display: flex;
  align-items: center;
  gap: 18px;
  margin-top: 46px;
  padding-top: 20px;
  border-top: 1px dashed var(--line);
}
.next-teaser .nt-line { flex: 1; height: 1px; background: var(--line); }
.next-teaser .nt-text {
  font-family: var(--font-serif);
  font-size: 11px;
  letter-spacing: 3px;
  color: var(--ink-fade);
  white-space: nowrap;
}

/* 顺位加载完 */
.chain-end { padding: 48px 0 10px; text-align: center; }
.chain-end .ce-text {
  font-family: var(--font-serif);
  font-size: 12px;
  letter-spacing: 4px;
  color: var(--ink-fade);
}
.chain-end a { border-bottom: 1px solid var(--line-strong); transition: color .2s, border-color .2s; }
.chain-end a:hover { color: var(--vermilion); border-bottom-color: var(--vermilion); }

.back-link {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-family: var(--font-serif);
  font-size: 12px;
  letter-spacing: 3px;
  color: var(--ink-soft);
  border: 1px solid var(--line-strong);
  padding: 7px 16px;
  margin-bottom: 30px;
  transition: color .2s, border-color .2s, background-color .2s;
}
.back-link:hover {
  color: var(--vermilion);
  border-color: var(--vermilion);
  background: var(--paper-light);
}

.inv-header {
  display: flex;
  gap: 22px;
  align-items: flex-start;
  margin-bottom: 8px;
}
.inv-header .hanko { width: 64px; height: 64px; font-size: 30px; }
.inv-rank {
  font-family: var(--font-mono);
  font-size: 10px;
  letter-spacing: 2px;
  color: var(--vermilion);
  margin-bottom: 10px;
}
.inv-name {
  font-family: var(--font-serif);
  font-size: 40px;
  font-weight: 500;
  letter-spacing: 6px;
  color: var(--ink);
  line-height: 1.15;
}
.inv-name-en {
  font-size: 12px;
  color: var(--ink-soft);
  letter-spacing: 0.5px;
  margin-top: 10px;
}

.stats-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 24px;
  margin-top: 26px;
  padding: 22px 0 8px;
  border-top: 1px solid var(--line);
}
.stats-grid.three { grid-template-columns: repeat(3, 1fr); }
.stat-item { min-width: 0; }
.stat-item .stat-label {
  font-size: 10px;
  color: var(--ink-fade);
  letter-spacing: 4px;
  font-family: var(--font-serif);
  margin-bottom: 9px;
  font-weight: 500;
}
.stat-item .stat-value {
  font-size: 18px;
  color: var(--ink);
  font-family: var(--font-mono);
  font-weight: 500;
  letter-spacing: 0.3px;
  word-break: break-all;
  overflow-wrap: anywhere;
}
.stat-item .stat-sub {
  font-size: 10px;
  color: var(--ink-fade);
  margin-top: 5px;
  font-family: var(--font-mono);
  letter-spacing: 0.5px;
}
.stat-item .stat-value.rank { color: var(--vermilion); }

/* 行业分布: donut + 图例 */
.holder-block {
  display: grid;
  grid-template-columns: 240px 1fr;
  gap: 44px;
  align-items: center;
  margin: 34px 0 10px;
  padding: 30px 0;
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
}
.donut-wrap {
  position: relative;
  width: 220px;
  height: 220px;
  margin: 0 auto;
}
.donut-wrap svg { width: 100%; height: 100%; display: block; }
.donut-center {
  position: absolute;
  left: 50%; top: 50%;
  transform: translate(-50%, -50%);
  width: 88px; height: 88px;
  border-radius: 50%;
  overflow: hidden;
  border: 3px solid var(--paper);
  box-shadow: 0 0 0 1px var(--line);
  background: var(--paper-light);
  display: flex;
  align-items: center;
  justify-content: center;
}
.donut-center img {
  width: 100%; height: 100%;
  object-fit: cover;
  filter: saturate(0.88) contrast(1.02);
}
.donut-center.mono {
  font-family: var(--font-serif);
  font-size: 30px;
  color: var(--ink-fade);
}
.sector-legend { min-width: 0; }
.sector-row {
  display: grid;
  grid-template-columns: 130px 1fr 64px;
  gap: 16px;
  align-items: center;
  padding: 8px 0;
  font-size: 13px;
}
.sector-row .s-name {
  color: var(--ink);
  letter-spacing: 1.5px;
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 12.5px;
}
.sector-row .s-dot {
  width: 8px; height: 8px;
  flex-shrink: 0;
}
.sector-row .s-bar {
  height: 4px;
  background: var(--paper-shade);
  position: relative;
  overflow: hidden;
}
.sector-row .s-fill {
  position: absolute;
  inset: 0 auto 0 0;
  transform-origin: left;
  animation: fillIn .8s ease-out;
}
.sector-row .s-pct {
  color: var(--ink-soft);
  font-family: var(--font-mono);
  font-size: 12px;
  text-align: right;
}

/* 区块标题 */
.section-title {
  font-family: var(--font-serif);
  font-size: 15px;
  letter-spacing: 5px;
  color: var(--ink);
  margin: 40px 0 20px;
  display: flex;
  align-items: baseline;
  gap: 14px;
  font-weight: 500;
}
.section-title .en {
  font-family: var(--font-mono);
  font-size: 10px;
  letter-spacing: 1.5px;
  color: var(--ink-fade);
  font-weight: 400;
}
.section-title::after {
  content: "";
  flex: 1;
  height: 1px;
  background: var(--line);
  margin-left: 12px;
  align-self: center;
}

/* 持仓表工具行 */
.holdings-controls {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  margin-bottom: 14px;
  flex-wrap: wrap;
}
.holdings-controls .filter-input {
  background: transparent;
  border: none;
  border-bottom: 1px solid var(--line);
  padding: 6px 24px 6px 4px;
  font: inherit;
  color: var(--ink);
  outline: none;
  width: 220px;
  font-size: 13px;
}
.holdings-controls .filter-input:focus { border-bottom-color: var(--ink-soft); }
.holdings-controls .filter-input::placeholder { color: var(--ink-fade); font-size: 12px; }
.holdings-controls .right-tools {
  display: flex;
  align-items: center;
  gap: 16px;
}
.holdings-controls .counts {
  font-size: 11px;
  color: var(--ink-fade);
  font-family: var(--font-mono);
  letter-spacing: 0.5px;
  white-space: nowrap;
}
.minpct-toggle {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  font-family: var(--font-mono);
  font-size: 10px;
  letter-spacing: 1px;
  color: var(--ink-soft);
  cursor: pointer;
  user-select: none;
  white-space: nowrap;
}
.minpct-toggle .tgl {
  width: 26px; height: 14px;
  border: 1px solid var(--line-strong);
  position: relative;
  transition: background-color .2s, border-color .2s;
}
.minpct-toggle .tgl::after {
  content: "";
  position: absolute;
  top: 2px; left: 2px;
  width: 8px; height: 8px;
  background: var(--ink-fade);
  transition: left .2s, background-color .2s;
}
.minpct-toggle.on .tgl { background: var(--vermilion); border-color: var(--vermilion); }
.minpct-toggle.on .tgl::after { left: 14px; background: var(--paper); }

/* 持仓表 */
.table-wrap {
  border-top: 1px solid var(--line-strong);
  border-bottom: 1px solid var(--line);
  overflow-x: auto;
}
table.holdings {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
}
table.holdings thead th {
  text-align: left;
  font-weight: 500;
  font-size: 11px;
  color: var(--ink-soft);
  letter-spacing: 2px;
  padding: 14px 10px;
  border-bottom: 1px solid var(--line-strong);
  font-family: var(--font-serif);
  background: var(--paper-light);
  cursor: pointer;
  user-select: none;
  white-space: nowrap;
}
table.holdings thead th:hover { color: var(--ink); }
table.holdings thead th .sort-ind {
  display: inline-block;
  width: 12px;
  color: var(--ink-fade);
  margin-left: 4px;
  font-size: 9px;
  font-family: var(--font-mono);
}
table.holdings thead th.sorted { color: var(--ink); }
table.holdings thead th.sorted .sort-ind { color: var(--vermilion); }
table.holdings thead th.num, table.holdings td.num { text-align: right; }

table.holdings tbody td {
  padding: 12px 10px;
  border-bottom: 1px solid var(--line);
  color: var(--ink);
  vertical-align: middle;
}
table.holdings tbody tr:last-child td { border-bottom: none; }
table.holdings tbody tr:hover td { background: var(--paper-light); }

.sym {
  font-family: var(--font-mono);
  font-weight: 600;
  font-size: 13px;
  letter-spacing: 0.5px;
  color: var(--ink);
}
.stock-name {
  color: var(--ink-soft);
  font-size: 12px;
  letter-spacing: 0.3px;
}
.stock-cell { white-space: nowrap; }

.pct-cell {
  font-family: var(--font-mono);
  font-size: 13px;
  text-align: right;
  color: var(--ink);
  white-space: nowrap;
}
.pct-bar {
  display: inline-block;
  height: 2px;
  background: var(--ink);
  vertical-align: middle;
  margin-right: 6px;
  max-width: 40px;
}

.num {
  font-family: var(--font-mono);
  font-size: 12px;
  color: var(--ink);
  white-space: nowrap;
}

.activity {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: 11px;
  font-family: var(--font-mono);
  padding: 2px 8px;
  border-radius: var(--radius);
  letter-spacing: 0.3px;
  font-weight: 500;
  white-space: nowrap;
}
.activity.add { background: var(--moss-bg); color: var(--moss); }
.activity.add::before { content: "+"; font-weight: 600; }
.activity.reduce { background: var(--vermilion-bg); color: var(--vermilion); }
.activity.reduce::before { content: "−"; font-weight: 600; }
.activity.hold { background: transparent; color: var(--ink-fade); padding: 2px 0; }
.activity.hold::before { content: "·"; font-weight: 700; }

/* 涨跌 — 与电子册一致：涨=苔绿 / 跌=朱红 */
.change {
  font-family: var(--font-mono);
  text-align: right;
  font-size: 13px;
  font-weight: 500;
  white-space: nowrap;
}
.change.up   { color: var(--moss); }
.change.down { color: var(--vermilion); }
.change.flat { color: var(--ink-fade); }
.change.up::before   { content: "▲ "; font-size: 9px; }
.change.down::before { content: "▼ "; font-size: 9px; }

.filter-note {
  margin-top: 14px;
  font-size: 11px;
  color: var(--ink-fade);
  letter-spacing: 1px;
  font-family: var(--font-mono);
}

.loading, .empty {
  padding: 80px 20px;
  text-align: center;
  color: var(--ink-fade);
  font-family: var(--font-serif);
  letter-spacing: 4px;
  font-size: 12px;
}
.empty { padding: 40px 20px; }

/* 进入动画 */
.fade-in { animation: fadeIn .35s ease-out; }
@keyframes fadeIn {
  from { opacity: 0; transform: translateY(6px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* ============ 响应式 ============ */
@media (max-width: 900px) {
  .masters-main { padding-top: 22px; }
  .masthead .mh-right { display: none; }
  .page-title { font-size: 27px; letter-spacing: 5px; }
  .mast-tabs-row { margin: 22px 0 26px; gap: 12px; }
  .mast-tabs a { padding: 8px 12px 10px; font-size: 13px; letter-spacing: 2px; }
  .mast-tabs a .en { display: none; }
  /* 手机端: 搜索框与标签同一行, 占据右侧剩余空间, 加大触控面积 */
  .stock-search {
    flex: 1 1 auto;
    order: 0;
    min-width: 150px;
    margin-bottom: 0;
  }
  .stock-search input {
    padding: 11px 12px;
    font-size: 13px;
  }

  .consensus-row {
    grid-template-columns: 34px 1fr 60px;
    gap: 10px;
  }
  .consensus-row .c-bar { display: none; }
  .consensus-row .c-holders { grid-column: 2 / 3; font-size: 11px; }
  .consensus-row .c-count { grid-row: 1 / 3; grid-column: 3 / 4; }
  .c-rank { font-size: 18px; }

  .dir-row { grid-template-columns: 34px 1fr auto; gap: 10px; }
  .dir-row .d-en { max-width: 200px; }

  .inv-header .hanko { width: 50px; height: 50px; font-size: 22px; }
  .inv-name { font-size: 26px; letter-spacing: 3px; }
  .stats-grid { grid-template-columns: repeat(2, 1fr); gap: 16px; }
  .stat-item .stat-value { font-size: 14px; letter-spacing: 0; }
  .holder-block { grid-template-columns: 1fr; gap: 24px; }
  .sector-row { grid-template-columns: 104px 1fr 52px; }
  table.holdings { font-size: 12px; min-width: 820px; }
  table.holdings thead th, table.holdings tbody td { padding: 10px 6px; }
}

/* ============================================================
   详情页「返回名录」入口
   ============================================================ */
.chain-back {
  position: sticky; top: 54px; z-index: 40;
  display: flex; align-items: center; gap: 14px; flex-wrap: wrap;
  padding: 10px 0 12px;
  background: linear-gradient(to bottom, rgba(244,241,232,0.98) 72%, rgba(244,241,232,0));
}
.cb-btn {
  display: inline-flex; align-items: center; gap: 7px;
  font-family: var(--font-serif); font-size: 12.5px; letter-spacing: 1.5px;
  color: var(--ink); text-decoration: none;
  background: var(--paper-light); border: 1px solid var(--line-strong);
  border-radius: 16px; padding: 5px 15px;
  transition: color .18s, border-color .18s, background-color .18s;
}
.cb-btn:hover { color: var(--vermilion); border-color: var(--vermilion); background: var(--vermilion-bg); }
.cb-ar { font-size: 13px; line-height: 1; }
.cb-who { font-family: var(--font-serif); font-size: 13px; color: var(--ink); letter-spacing: 1px; min-width: 0; }
.cb-who i { font-style: normal; font-family: var(--font-mono); font-size: 10px; color: var(--ink-fade); margin-left: 9px; letter-spacing: .5px; }
.cb-pos { margin-left: auto; font-family: var(--font-mono); font-size: 10.5px; color: var(--ink-fade); letter-spacing: .5px; white-space: nowrap; }

.sec-back { margin: 24px 0 6px; text-align: center; }
.sec-back a {
  display: inline-block; font-family: var(--font-serif); font-size: 12px; letter-spacing: 2px;
  color: var(--ink-soft); text-decoration: none;
  border: 1px solid var(--line); border-radius: 16px; padding: 7px 20px;
  transition: color .18s, border-color .18s, background-color .18s;
}
.sec-back a:hover { color: var(--vermilion); border-color: var(--vermilion); background: var(--vermilion-bg); }

@media (max-width: 560px) {
  .chain-back { top: 48px; gap: 10px; padding: 8px 0 10px; }
  .cb-btn { font-size: 11.5px; padding: 5px 12px; }
  .cb-who { font-size: 12px; }
  .cb-who i { display: none; }
  .sec-back a { font-size: 11.5px; padding: 6px 16px; }
}
