/* Page-specific arrangements. Theme, shell, controls, panels and dialogs live in app.css. */
.fund-ranking-list { background:var(--color-surface); border-radius:var(--radius-12); padding:0 10px; box-shadow:var(--shadow-card); overflow:hidden; }
.fund-ranking-list>.skeleton { margin:12px 0; }
.fund-result { padding:12px 0; border-bottom:1px solid var(--color-border-light); }
.fund-result:last-child { border-bottom:0; }
.fund-result-head { display:flex; align-items:center; gap:6px; min-width:0; }
.fund-result .rank-badge { border-radius:50%; width:24px; height:24px; font-size:11px; flex-shrink:0; }
.fund-result-main { flex:1; min-width:0; }
.fund-title-line { display:flex; align-items:center; gap:4px; min-width:0; }
.fund-favorite { width:16px; height:22px; color:var(--color-text-tertiary); }
.fund-favorite .icon { width:14px; height:14px; }
.fund-favorite.selected { color:var(--color-primary); }
.fund-title-button { display:flex; align-items:center; gap:5px; min-width:0; padding:3px 0; border:0; background:none; font-size:13px; color:var(--color-text); font-weight:600; text-align:left; }
.fund-title-text { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.fund-title-button>.icon { width:12px; height:12px; color:var(--color-text-tertiary); }
.fund-title-button[aria-expanded='true']>.icon { transform:rotate(180deg); }
.fund-external { color:var(--color-text-tertiary); }
.fund-external .icon { width:12px; height:12px; }
.fund-tags { display:flex; flex-wrap:wrap; gap:4px; margin-top:5px; }
.fund-tag { font-size:10px; padding:1px 5px; border-radius:3px; line-height:1.5; }
.fund-tag.blue { color:var(--color-primary); background:var(--color-primary-1); }
.fund-tag.purple { color:var(--color-purple); background:var(--color-purple-bg); }
.fund-tag.gray { color:var(--color-text-tertiary); background:var(--color-surface-sunken); }
.fund-tag.green { color:var(--color-down); background:var(--color-down-bg); }
.fund-tag.red { color:var(--color-up); background:var(--color-up-bg); }
.fund-tag.orange { color:var(--color-warning); background:var(--color-warning-bg); }
.fund-result-value { text-align:right; align-self:flex-start; white-space:nowrap; min-width:70px; }
.fund-result-value strong { font-size:14px; font-weight:600; }
.fund-result-value small { display:block; color:var(--color-text-tertiary); font-size:10px; margin-top:2px; }
.fund-periods { display:flex; gap:5px; flex-wrap:wrap; font-size:11px; border-top:1px solid var(--color-border-light); margin-top:8px; padding-top:6px; font-variant-numeric:tabular-nums; }
.fund-periods>span { white-space:nowrap; }
.fund-detail-dialog { max-width:900px; }
.fund-inspector { margin-top:12px; border-top:1px dashed var(--color-border); padding-top:12px; }
.detail-shares { display:flex; gap:6px; overflow:auto; margin-bottom:10px; }
.detail-shares:empty { display:none; }
.detail-facts { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); background:var(--color-surface-alt); border-radius:8px; padding:8px 10px; }
.detail-fact { display:flex; justify-content:space-between; gap:12px; border-bottom:1px dashed var(--color-border); padding:7px; font-size:11px; }
.detail-fact strong { font-weight:500; text-align:right; overflow-wrap:anywhere; }
.detail-heading { display:flex; align-items:center; gap:6px; font-size:12px; font-weight:600; margin:18px 0 10px; flex-wrap:wrap; }
.detail-heading>.muted { margin-left:auto; font-size:10px; font-weight:400; }
.chart-wrap { width:100%; min-width:0; margin-top:10px; }
.nav-chart { display:block; width:100%; }
.chart-tip { font-size:11px; text-align:center; color:var(--color-text-tertiary); min-height:20px; }
.detail-note { font-size:11px; color:var(--color-text-tertiary); line-height:1.8; }
.look-through-intro, .look-through-fund-heading { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:12px; }
.look-through-intro { margin:10px 0; padding:12px; }
.look-through-intro .detail-note { flex:1 1 260px; margin:0; }
.look-through-intro .btn { margin:0; }
.look-through-intro h2 { font-size:14px; margin:0; }
.look-through-controls { display:flex; flex-wrap:wrap; align-items:center; gap:8px; }
.look-through-controls .auth-input { width:min(100%,320px); }
.look-through-funds { display:grid; gap:10px; }
.look-through-funds .card { padding:12px; }
.look-through-fund { color:var(--color-primary); font:inherit; font-weight:600; background:none; border:0; padding:0; text-align:left; cursor:pointer; }
.more-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; }
.more-link { box-shadow:var(--shadow-card); display:flex; align-items:center; gap:12px; padding:12px; border:0; border-radius:var(--radius-12); background:var(--color-surface); color:var(--color-text); text-decoration:none; text-align:left; }
.more-link>.icon { color:var(--color-primary); width:22px; height:22px; }
.more-link>span { min-width:0; overflow-wrap:anywhere; }
.more-link strong { font-size:14px; }
.more-link small { display:block; font-size:11px; color:var(--color-text-tertiary); margin-top:5px; line-height:1.5; }
.more-section { margin:14px 0 8px; font-size:13px; color:var(--color-text-secondary); }
.account-card { flex-wrap:wrap; padding:14px; margin-bottom:15px; display:flex; align-items:center; gap:16px; }
.account-card>div { min-width:0; overflow-wrap:anywhere; }
.account-card .icon { width:30px; height:30px; color:var(--color-primary); }
.account-card h2 { margin:0 0 5px; font-size:14px; }
.account-card p { margin:0; font-size:12px; color:var(--color-text-tertiary); }
.account-card .btn { margin:0 0 0 auto; }
.theme-buttons { display:flex; gap:8px; }
.fav-actions { display:flex; gap:8px; align-items:center; }
.fav-open { border:0; background:none; color:var(--color-text); text-align:left; padding:0; }
.fav-toolbar { display:flex; gap:10px; align-items:center; margin-bottom:12px; }
.fav-toolbar input { flex:1; min-width:0; height:36px; padding:0 11px; border:1px solid var(--color-border); border-radius:var(--radius-10); background:var(--color-surface); color:var(--color-text); }
.fav-toolbar select { flex:1; min-width:0; }
.limit-item { padding:14px; }
.limit-numbers { display:flex; flex-wrap:wrap; gap:8px 20px; font-size:12px; margin-top:10px; }
@media(max-width:768px) {
  .more-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .more-link { padding:12px 10px; gap:8px; }
  .detail-facts { grid-template-columns:1fr; }
  .fund-periods { font-size:10px; gap:4px; }.fund-result { padding:10px 0; }
  .fund-ranking-list { padding:0 8px; }.fund-title-button { font-size:12px; }
}

/* 持仓账本 */
.holding-summary { display:grid; grid-template-columns:minmax(0,1.3fr) repeat(3,minmax(0,1fr)); gap:14px; background:var(--color-surface); padding:16px; border-radius:var(--radius-12); margin:0 0 12px; box-shadow:var(--shadow-card); }
.notice-bar + .holding-summary { margin-top:10px; }
.holding-total>div { display:flex; align-items:center; gap:10px; color:var(--color-text-secondary); }
.holding-total .icon-button { color:var(--color-text-secondary); background:var(--color-bg); }
.holding-total>strong { display:block; font-size:24px; margin-top:7px; font-variant-numeric:tabular-nums; }
.holding-stat { display:flex; flex-direction:column; justify-content:center; gap:10px; }
.holding-stat>span { color:var(--color-text-secondary); font-size:12px; }
.holding-stat>strong { overflow-wrap:anywhere; font-size:18px; font-variant-numeric:tabular-nums; }
.holding-incomplete { grid-column:1/-1; color:var(--color-text-secondary); font-size:12px; }
.holding-controls { display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
.holding-controls select { width:auto; padding:8px 10px; }
.holding-card { padding:12px; margin-bottom:12px; }
.holding-watch { margin-top:10px; padding:10px 12px; border-radius:10px; background:var(--color-surface-sunken); }
.holding-watch .detail-note { margin:6px 0 0; }
.holding-watch .load-more { justify-content:flex-start; }
.holding-card-heading { display:flex; align-items:center; justify-content:space-between; gap:15px; }
.holding-card-heading>strong { font-size:18px; font-variant-numeric:tabular-nums; }
.holding-card .fav-open { flex:1; }
.holding-card .fund-meta,.holdings-table .fund-meta { display:block; margin-top:4px; }
.holding-metrics { display:grid; grid-template-columns:repeat(4,1fr); gap:14px; margin:16px 0; }
.holding-metrics>div { display:flex; flex-direction:column; gap:5px; }
.holding-metrics strong { font-size:15px; font-variant-numeric:tabular-nums; }
.holding-row-actions { display:flex; flex-wrap:wrap; gap:8px; }
.holdings-table { min-width:1100px; }
.holdings-table td { vertical-align:middle; white-space:nowrap; }
.holdings-table .holding-row-actions { min-width:240px; }
.holding-form { display:flex; flex-direction:column; gap:12px; }
.holding-field { display:flex; flex-direction:column; gap:6px; font-size:13px; }
.holding-field input { width:100%; box-sizing:border-box; }
.holding-preview { background:var(--color-bg); border-radius:8px; padding:12px; font-size:13px; line-height:1.7; }
.form-error { color:var(--color-up); font-size:13px; line-height:1.6; }
.transaction-item { border-bottom:1px solid var(--color-border); padding:14px 0; }
.transaction-item p { margin:8px 0; font-size:13px; overflow-wrap:anywhere; }
.transaction-heading { display:flex; gap:10px; align-items:center; font-size:13px; }
.transaction-item.is-voided { color:var(--color-text-secondary); }
.fund-search-result { display:flex; flex-wrap:wrap; align-items:center; gap:8px; border-bottom:1px solid var(--color-border); padding:13px 0; }
.fund-search-result>div { flex:1; min-width:180px; }
@media(max-width:640px) {
  .holding-summary { grid-template-columns:repeat(2,1fr); padding:16px; gap:20px 12px; }
  .holding-total>strong { font-size:23px; }
  .holding-metrics { grid-template-columns:repeat(2,1fr); }
  .holding-card-heading { align-items:flex-start; }
  .holding-card-heading>strong { font-size:14px; }
}

/* ---------- 个股详情 ---------- */
.kline-chart { width: 100%; display: block; }
.value-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(84px, 1fr)); gap: 6px; }
.value-cell { display: flex; flex-direction: column; padding: 4px 6px;
  background: var(--color-surface-alt); border: 1px solid var(--color-border);
  border-radius: var(--radius-6); }
.value-cell small { font-size: var(--fs-11); color: var(--color-text-tertiary); }
.quant-tags { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 8px; }
.quant-tag { font-size: var(--fs-11); padding: 1px 6px; border-radius: var(--radius-10);
  background: var(--color-surface-alt); color: var(--color-text-secondary); }

/* ---------- 股票量化 ---------- */
.quant-list { display: flex; flex-direction: column; gap: 8px; }
.quant-card { padding: 10px 12px; border-radius: var(--radius-10);
  background:var(--color-surface); box-shadow:var(--shadow-card); border:1px solid transparent; cursor:pointer; }
.quant-card:hover { border-color: var(--color-primary); }
.quant-card-head { display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; }
.quant-code, .quant-board { font-size: var(--fs-12); color: var(--color-text-tertiary); }
.quant-change { margin-left: auto; font-weight: 600; }
.quant-change.up { color: var(--color-up); }
.quant-change.down { color: var(--color-down); }
.quant-change.flat { color: var(--color-flat); }
.quant-card-metrics { display: grid; grid-template-columns: repeat(auto-fit, minmax(72px, 1fr));
  gap: 6px; margin-top: 8px; }
.quant-metric { display: flex; flex-direction: column; }
.quant-metric small { font-size: var(--fs-11); color: var(--color-text-tertiary); }
.quant-header-row { display:flex; align-items:center; justify-content:space-between; gap:12px; width:100%; min-width:0; }
.quant-header-row>.glass-tabs { min-width:0; }
.quant-snapshot-time { display:flex; flex-direction:column; align-items:flex-end; flex-shrink:0; font-variant-numeric:tabular-nums; line-height:1.6; }
.quant-snapshot-time small { font-size:10px; color:var(--header-muted); }
.quant-snapshot-time strong { font-size:12px; font-weight:500; white-space:nowrap; }
.quant-sort-note { font-size:11px; color:var(--header-muted); }
.quant-model-note:empty { display:none; }
.quant-model-details { margin-top:10px; padding:10px 12px; border:1px solid var(--color-border); border-radius:var(--radius-10); background:var(--color-surface); font-size:12px; line-height:1.7; }
.quant-model-details summary,.quant-factor-details summary { cursor:pointer; color:var(--color-text-secondary); }
.quant-model-details p { margin:8px 0; color:var(--color-text-tertiary); }
.quant-model-rule { display:flex; gap:12px; margin:5px 0; }
.quant-model-rule>strong { min-width:95px; }
.quant-model-rule>span,.quant-model-details>small { color:var(--color-text-tertiary); }
.quant-analysis-list { gap:12px; }
.quant-analysis-card { padding:16px; cursor:default; color:var(--color-text); border-color:var(--color-border-light); overflow:hidden; }
.quant-analysis-card:hover { border-color:var(--color-border); }
.quant-analysis-card .quant-card-head { align-items:center; gap:12px; }
.quant-stock-identity { min-width:0; }
.quant-stock-identity>div { display:flex; align-items:center; gap:8px; }
.quant-stock-title { padding:0; border:0; background:none; color:var(--color-text); font-size:16px; font-weight:600; text-align:left; }
.quant-stock-title:not(:disabled):hover { color:var(--color-primary); }
.quant-stock-title:disabled { opacity:1; cursor:default; }
.quant-analysis-card .quant-change { font-size:18px; font-variant-numeric:tabular-nums; }
.quant-composite { padding-left:13px; border-left:1px solid var(--color-border); display:flex; flex-direction:column; align-items:flex-end; line-height:1.3; }
.quant-composite strong { font-size:26px; color:var(--color-primary); font-variant-numeric:tabular-nums; }
.quant-composite small { font-size:10px; color:var(--color-text-tertiary); }
.quant-analysis-card .quant-card-metrics { grid-template-columns:repeat(6,minmax(0,1fr)); margin:14px 0; gap:8px; }
.quant-analysis-card .quant-metric { min-width:0; gap:2px; font-size:13px; font-variant-numeric:tabular-nums; }
.quant-factor-heading { display:flex; justify-content:space-between; gap:8px; padding-top:12px; border-top:1px solid var(--color-border-light); font-size:12px; }
.quant-factor-heading>span { color:var(--color-text-tertiary); font-size:11px; }
.quant-factor-layout { display:grid; grid-template-columns:minmax(0,1fr) 180px; gap:28px; align-items:center; margin:12px 0; }
.quant-factor-bars { display:flex; flex-direction:column; gap:10px; min-width:0; }
.quant-factor-label { display:flex; align-items:baseline; gap:8px; font-size:12px; }
.quant-factor-label>small { color:var(--color-text-tertiary); font-size:10px; }
.quant-factor-label>strong { margin-left:auto; font-size:12px; font-variant-numeric:tabular-nums; }
.quant-factor-track { height:5px; border-radius:4px; background:var(--color-surface-alt); margin-top:5px; overflow:hidden; }
.quant-factor-track>span { display:block; height:100%; border-radius:inherit; background:var(--color-primary); }
.quant-factor-track.missing { background:repeating-linear-gradient(135deg,var(--color-border) 0,var(--color-border) 2px,transparent 2px,transparent 5px); }
.quant-factor-missing { display:block; font-size:10px; color:var(--color-text-tertiary); margin-top:3px; }
.quant-radar-wrap { margin:0; text-align:center; }
.quant-radar { display:block; width:100%; max-width:200px; margin:auto; overflow:visible; }
.quant-radar-grid { fill:none; stroke:var(--color-border); stroke-width:1; }
.quant-radar text { fill:var(--color-text-secondary); font-size:10px; }
.quant-radar-shape { fill:var(--color-primary); fill-opacity:.12; stroke:var(--color-primary); stroke-width:1.6; }
.quant-radar-point { fill:var(--color-primary); }
.quant-radar-grid.is-missing { stroke-dasharray:3 3; }
.quant-radar text.is-missing { fill:var(--color-text-tertiary); }
.quant-radar-wrap figcaption,.quant-radar-empty { font-size:10px; color:var(--color-text-tertiary); }
.quant-analysis-card .quant-tags { gap:6px; margin:12px 0; }
.quant-tag-direction { margin-right:4px; font-size:10px; opacity:.8; }
.quant-tag.bearish { color:var(--color-down); background:var(--color-down-bg); }
.quant-tag.neutral { color:var(--color-text-secondary); background:var(--color-surface-alt); }
.quant-no-signal { display:block; margin:12px 0; color:var(--color-text-tertiary); font-size:12px; }
.quant-factor-details { margin:10px 0; font-size:11px; line-height:1.7; }
.quant-volatility { display:flex; flex-wrap:wrap; align-items:center; gap:4px 10px; margin:2px 0 10px; padding:8px 10px;
  border-radius:8px; background:var(--color-surface-alt); font-size:12px; color:var(--color-text-secondary); }
.quant-volatility-label { color:var(--color-text-tertiary); }
.quant-volatility strong { color:var(--color-text); font-weight:600; font-variant-numeric:tabular-nums; }
.quant-volatility .fund-tag { font-size:11px; }
.quant-volatility small { flex-basis:100%; color:var(--color-text-tertiary); font-size:11px; }
.quant-factor-evidence { display:flex; flex-direction:column; margin:7px 0; color:var(--color-text-tertiary); }
.quant-factor-evidence strong { color:var(--color-text-secondary); font-weight:500; }
.quant-indicators { display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:10px 8px; padding:12px; margin:12px 0; background:var(--color-surface-alt); border-radius:var(--radius-6); }
.quant-interpretation { padding:11px 12px; background:var(--color-surface-alt); border-left:3px solid var(--color-primary); border-radius:var(--radius-6); font-size:12px; line-height:1.7; }
.quant-interpretation>strong { font-weight:500; color:var(--color-primary); }
.quant-interpretation p { margin:4px 0 0; color:var(--color-text-secondary); }
.quant-ai-button { display:inline-flex; align-items:center; gap:3px; height:22px; margin-left:6px; padding:0 8px 0 6px;
  border:0; border-radius:999px; background:var(--color-purple-bg); color:var(--color-purple); font-size:11px; font-weight:600;
  vertical-align:middle; }
.quant-ai-button .icon { width:14px; height:14px; }
.quant-ai-button:hover,.quant-ai-button.is-open { background:var(--color-purple); color:var(--color-surface); }
.quant-ai-button.is-busy .icon { animation:quant-ai-pulse 1s ease-in-out infinite; }
@keyframes quant-ai-pulse { 50% { opacity:.35; } }
.quant-ai { margin-top:10px; padding:11px 12px; border-left:3px solid var(--color-purple); border-radius:var(--radius-6);
  background:var(--color-purple-bg); font-size:12px; line-height:1.75; }
.quant-ai-head { display:flex; align-items:center; gap:5px; color:var(--color-purple); }
.quant-ai-head .icon { width:15px; height:15px; }
.quant-ai-head strong { font-weight:600; }
.quant-ai-meta { margin-left:auto; color:var(--color-text-tertiary); font-size:11px; }
.quant-ai-body p { margin:6px 0 0; color:var(--color-text); }
.quant-ai-body strong { color:var(--color-purple); font-weight:600; }
.quant-ai-body .btn-secondary { margin-top:6px; }
.quant-ai-loading { color:var(--color-text-tertiary)!important; }
.quant-ai-error { color:var(--color-up)!important; }
.quant-ai-upsell { color:var(--color-warning)!important; }
.quant-ai-note { margin:8px 0 0; color:var(--color-text-tertiary); font-size:11px; }
.quant-risks { padding-left:17px; margin:6px 0 0; color:var(--color-text-secondary); }
.quant-card-provenance { display:flex; flex-wrap:wrap; justify-content:space-between; gap:4px 12px; margin-top:12px; color:var(--color-text-tertiary); font-size:10px; }
.quant-analysis-missing { display:flex; flex-direction:column; gap:4px; padding:14px 12px; background:var(--color-surface-alt); border-radius:var(--radius-6); font-size:12px; color:var(--color-text-tertiary); line-height:1.7; }
.quant-stale-analysis { display:flex; flex-direction:column; gap:3px; margin-bottom:12px; padding:9px 11px; border:1px solid var(--color-border); border-radius:var(--radius-6); color:var(--color-text-secondary); background:var(--color-surface-alt); font-size:11px; line-height:1.6; }
.quant-stale-analysis>strong { font-weight:500; }
.quant-stale-analysis>span { color:var(--color-text-tertiary); }
.quant-chanlun-heading { display:flex; align-items:center; flex-wrap:wrap; gap:8px; font-size:12px; border-top:1px solid var(--color-border-light); padding-top:12px; }
.quant-chanlun-heading>small { color:var(--color-text-tertiary); margin-left:auto; font-size:10px; }
.quant-chanlun-counts { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; margin:12px 0; }
.quant-chanlun-counts .quant-metric>span { font-size:17px; font-weight:500; }
.quant-chanlun-notice { font-size:12px; color:var(--color-text-secondary); padding:8px 10px; background:var(--color-surface-alt); border-radius:var(--radius-6); line-height:1.7; }
.quant-chanlun-figure { margin:12px 0; padding:6px; background:var(--color-surface-alt); border-radius:var(--radius-6); }
.quant-chanlun-chart { display:block; width:100%; max-height:220px; }
.quant-chanlun-chart text { fill:var(--color-text-tertiary); font-size:10px; }
.quant-chanlun-stroke { stroke-width:2; stroke-linecap:round; fill:none; }
.quant-chanlun-stroke.rising { stroke:var(--color-up); }
.quant-chanlun-stroke.falling { stroke:var(--color-down); }
.quant-chanlun-stroke.provisional { stroke-dasharray:5 4; opacity:.75; }
.quant-chanlun-center { fill:var(--color-primary); fill-opacity:.12; stroke:var(--color-primary); stroke-opacity:.35; }
.quant-chanlun-active-center { fill:var(--color-primary); fill-opacity:.055; stroke:var(--color-primary); stroke-opacity:.8; stroke-dasharray:5 4; }
.quant-chanlun-score-guide { margin:6px 0; color:var(--color-text-secondary); font-size:11px; line-height:1.6; }
.quant-chanlun-scope { font-size:10px; color:var(--color-text-secondary); }
.quant-chanlun-scope.current-window { color:var(--color-primary); }
.quant-chanlun-figure figcaption { font-size:10px; color:var(--color-text-tertiary); text-align:center; }
.quant-chanlun-signal { border-bottom:1px solid var(--color-border-light); padding:11px 0; font-size:12px; }
.quant-chanlun-signal>div { display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
.quant-confirmed-label { font-size:10px; color:var(--color-text-tertiary); }
.quant-chanlun-signal dl,.quant-data-quality dl { display:grid; grid-template-columns:auto minmax(0,1fr) auto minmax(0,1fr); gap:4px 8px; margin:9px 0; font-size:11px; }
.quant-chanlun-signal dt,.quant-data-quality dt { color:var(--color-text-tertiary); }
.quant-chanlun-signal dd,.quant-data-quality dd { margin:0; overflow-wrap:anywhere; }
.quant-chanlun-signal p { margin:6px 0 0; color:var(--color-text-secondary); line-height:1.7; }
.quant-chanlun-details,.quant-data-quality { margin-top:12px; font-size:11px; line-height:1.7; color:var(--color-text-secondary); }
.quant-chanlun-details summary,.quant-data-quality summary { cursor:pointer; overflow-wrap:anywhere; }
.quant-structure-row { display:grid; grid-template-columns:55px minmax(0,1fr) auto; gap:4px 8px; padding:8px 0; border-bottom:1px solid var(--color-border-light); }
.quant-structure-row>strong { font-weight:500; }
.quant-structure-row>small { grid-column:2 / -1; color:var(--color-text-tertiary); }
.quant-card-provenance>span { overflow-wrap:anywhere; min-width:0; }
@media (max-width:480px) {
  .quant-chanlun-signal dl,.quant-data-quality dl { grid-template-columns:65px minmax(0,1fr); }
  .quant-structure-row { grid-template-columns:50px minmax(0,1fr); }
  .quant-structure-row>span:nth-of-type(2),.quant-structure-row>small { grid-column:2; }
  .quant-chanlun-heading>small { margin-left:0; }
}
@media (max-width:600px) {
  .quant-header-row { align-items:flex-start; flex-wrap:wrap; gap:6px; }
  .quant-header-row>.glass-tabs { width:100%; }
  .quant-snapshot-time { margin-left:auto; }
  .quant-snapshot-time strong { font-size:11px; }
  .quant-analysis-card { padding:12px; }
  .quant-analysis-card .quant-card-head { gap:8px; }
  .quant-stock-title { font-size:14px; }
  .quant-analysis-card .quant-change { font-size:16px; }
  .quant-composite { padding-left:8px; }
  .quant-composite strong { font-size:23px; }
  .quant-composite small { font-size:9px; }
  .quant-analysis-card .quant-card-metrics { grid-template-columns:repeat(3,minmax(0,1fr)); gap:9px; }
  .quant-factor-layout { grid-template-columns:minmax(0,1fr) 140px; gap:12px; }
  .quant-factor-label { gap:4px; }
  .quant-factor-label>small { display:none; }
  .quant-indicators { grid-template-columns:repeat(3,minmax(0,1fr)); }
  .quant-model-rule { flex-direction:column; gap:0; }
}
@media (max-width:360px) {
  .quant-factor-layout { grid-template-columns:minmax(0,1fr) 118px; gap:6px; }
  .quant-stock-identity .quant-board { display:none; }
  .quant-snapshot-time { gap:4px; }
}
.range-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 6px; }
.range-row { display: flex; align-items: center; gap: 4px; }
.range-label { font-size: var(--fs-12); color: var(--color-text-tertiary); min-width: 58px; }
.range-input { width: 68px; padding: 3px 6px; border: 1px solid var(--color-border);
  border-radius: var(--radius-6); background: var(--color-surface); color: inherit; }
.chip-label { font-size: var(--fs-12); color: var(--color-text-tertiary); align-self: center; }
.chip-scroll { overflow-x: auto; flex-wrap: nowrap; }
.pager-info { margin: 0 10px; font-size: var(--fs-13); color: var(--color-text-tertiary); }

/* ---------- 板块异动：涨跌两段之间的分隔 ---------- */
.sector-item.surge-divider { border-top: 2px solid var(--color-border); margin-top: 8px; padding-top: 12px; }
.profit-curve { margin: 12px 0; padding: 14px; border-radius:var(--radius-12); background: var(--color-surface); box-shadow: var(--shadow-card); }
.profit-curve-head { display: flex; gap: 28px; margin-bottom: 8px; }
.profit-curve-head strong { display: block; font-size: 18px; font-variant-numeric: tabular-nums; }
.profit-curve .chip-row { margin-bottom: 8px; }
.profit-curve .updated-tip { padding: 6px 0 0; }
.ranking-conditions { margin: 10px 0 2px; }
.condition-card { padding: 12px; }
.condition-note { display: flex; gap: 8px; font-size: 12px; line-height: 1.7; margin-top: 4px; }
.condition-note strong { flex: 0 0 auto; color: var(--color-text); }
.condition-note span { color: var(--color-text-tertiary); }
.signal-rule-list { display: flex; flex-direction: column; gap: 6px; margin: 6px 0; }
.signal-rule { display: flex; gap: 8px; align-items: baseline; font-size: 12px; line-height: 1.7; }
.signal-rule > span:last-child { color: var(--color-text-tertiary); }
.quant-tag.bullish { color:var(--color-up); background:var(--color-up-bg); }
.compare-line { font-size: 13px; line-height: 1.8; margin: 4px 0; }
.compare-line span { color: var(--color-text-tertiary); }

/* ---------- 龙虎榜席位明细 ---------- */
.longhu-item.tappable { cursor: pointer; }
.longhu-item.tappable:hover { box-shadow: 0 2px 10px rgba(0, 0, 0, 0.12); }
.longhu-item.tappable:focus-visible { outline: 2px solid var(--color-primary); outline-offset: 2px; }
.seat-modal { min-width: 0; width: 100%; }
.seat-warning {
  font-size: 12px; line-height: 1.7; padding: 8px 10px; margin-bottom: 10px;
  border-radius: 8px; background: var(--color-surface-sunken); color: var(--color-text-secondary);
}
/* 每张榜自成一块，边框是在视觉上挡住「跨榜相加」的第一道提示 */
.seat-board { border: 1px solid var(--color-border); border-radius: 10px; padding: 10px; margin-bottom: 12px; }
.seat-board-head { display: flex; align-items: center; gap: 8px; font-size: 12px; margin-bottom: 6px; }
.seat-chip {
  font-size: 11px; padding: 2px 7px; border-radius: 999px;
  background: var(--color-surface-sunken); color: var(--color-text-secondary);
}
.seat-reasons { display: flex; flex-direction: column; gap: 4px; }
.seat-reasons .longhu-reason { margin-top: 0; white-space: normal; }
.seat-total {
  display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap;
  margin: 8px 0; font-size: 13px; font-variant-numeric: tabular-nums;
}
.seat-flows { display: flex; flex-wrap: wrap; gap: 6px 14px; font-size: 12px; margin-bottom: 8px; }
.seat-flow { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; font-variant-numeric: tabular-nums; }
.seat-side { margin-top: 8px; }
.seat-side-head { display: flex; flex-wrap: wrap; gap: 8px; align-items: baseline; font-size: 12px; margin-bottom: 4px; }
.seat-side-head .muted { margin-left: auto; }
.seat-row {
  display: grid; grid-template-columns: auto minmax(0, 1fr) auto 52px;
  gap: 8px; align-items: baseline; padding: 3px 0;
  font-size: 12px; font-variant-numeric: tabular-nums;
}
.seat-name { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.seat-pct, .seat-amt { text-align: right; }
.seat-pct { color: var(--color-text-tertiary); }
.seat-kind { font-size: 10px; padding: 1px 5px; border-radius: 4px; white-space: nowrap; }
.seat-kind.k-inst { color:var(--color-warning); background:var(--color-warning-bg); }
.seat-kind.k-north { color:var(--color-primary); background:var(--color-primary-1); }
.seat-kind.k-branch { color: var(--color-text-tertiary); background: var(--color-surface-sunken); }
.seat-empty { font-size: 12px; color: var(--color-text-tertiary); padding: 3px 0; }
.seat-note { font-size: 11px; line-height: 1.6; color: var(--color-text-tertiary); margin-bottom: 8px; }

/* ---------- 板块资金历史 ---------- */
.sector-item.tappable { cursor: pointer; }
.sector-item.tappable:hover { box-shadow: 0 2px 10px rgba(0, 0, 0, 0.12); }
.sector-item.tappable:focus-visible { outline: 2px solid var(--color-primary); outline-offset: 2px; }
.flow-modal { min-width: 0; width: 100%; }
.flow-summary {
  display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap;
  margin-bottom: 10px; font-size: 13px; font-variant-numeric: tabular-nums;
}
.flow-streak { font-size: 11px; padding: 1px 6px; border-radius: 4px; background: var(--color-surface-sunken); }
.flow-day {
  display: grid; grid-template-columns: 78px 1fr auto auto; gap: 8px;
  align-items: center; padding: 4px 0; font-size: 12px; font-variant-numeric: tabular-nums;
}
.flow-date { color: var(--color-text-tertiary); }
.flow-bar { display: block; height: 6px; background: var(--color-surface-sunken); border-radius: 3px; }
.flow-bar i { display: block; height: 6px; border-radius: 3px; }
.flow-bar i.up { background: var(--color-up); }
.flow-bar i.down { background: var(--color-down); }
.flow-amt { text-align: right; }
/* 盘中采到的只是日内累计值，不是当日结果 —— 必须看得见 */
.flow-partial {
  font-size: 10px; padding: 1px 5px; border-radius: 4px;
  color: var(--color-text-tertiary); background: var(--color-surface-sunken);
}

/* ---------- 汇率 ---------- */
.fx-item {
  display: flex; align-items: center; gap: 12px; padding: 12px;
  background: var(--color-surface); border-radius: var(--radius-12); box-shadow: var(--shadow-card);
}
.fx-main { min-width: 0; flex: 1; }
.fx-name { font-size: var(--fs-14); font-weight: 600; }
.fx-pair { font-size: var(--fs-11); color: var(--color-text-tertiary); margin-top: 2px; }
.fx-nums { text-align: right; font-variant-numeric: tabular-nums; }
.fx-price { font-size: var(--fs-15); font-weight: 700; }
.fx-chg { font-size: var(--fs-12); margin-top: 2px; }

/* ---------- 持仓市场构成 ---------- */
.market-mix { display: flex; flex-wrap: wrap; gap: 8px; margin: 6px 0 8px; }
.market-chip { display: inline-flex; align-items: center; gap: 5px; font-size: 12px; font-variant-numeric: tabular-nums; }
.market-tag { font-size: 10px; padding: 1px 5px; border-radius: 4px; margin-left: 4px; white-space: nowrap; }
.market-tag.m-a { color: var(--color-text-tertiary); background: var(--color-surface-sunken); }
.market-tag.m-hk { color:var(--color-primary); background:var(--color-primary-1); }
.market-tag.m-overseas { color:var(--color-warning); background:var(--color-warning-bg); }
.market-tag.m-unknown { color: var(--color-text-tertiary); background: var(--color-surface-sunken); }

/* ---------- 财经新闻 ---------- */
.news-list { display: flex; flex-direction: column; gap: 8px; }
.news-item {
  display: block; padding: 12px; background: var(--color-surface);
  border-radius: var(--radius-12); box-shadow: var(--shadow-card);
  color: inherit; text-decoration: none;
}
.news-item:hover { box-shadow: 0 2px 10px rgba(0, 0, 0, 0.12); }
.news-title { font-size: var(--fs-14); line-height: 1.5; font-weight: 600; }
.news-meta { margin-top: 6px; display: flex; flex-wrap: wrap; gap: 4px 10px; font-size: var(--fs-11); color: var(--color-text-tertiary); }
.news-tag { color:var(--color-warning); background:var(--color-warning-bg); padding: 1px 6px; border-radius: 4px; }

/* ---------- 持有页的新闻旁注 ---------- */
.news-strip { margin: 12px 0; padding: 12px; background: var(--color-surface); border-radius: var(--radius-12); box-shadow: var(--shadow-card); }
.news-strip-head { display: flex; align-items: baseline; gap: 8px; font-size: var(--fs-12); margin-bottom: 2px; }
.news-strip-more { margin-left: auto; color: var(--color-primary); text-decoration: none; font-size: var(--fs-11); }
.news-strip-item { display: flex; align-items: baseline; gap: 8px; padding: 5px 0; color: inherit; text-decoration: none; font-size: var(--fs-12); }
.news-strip-item:hover .news-strip-title { text-decoration: underline; }
.news-strip-title { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* ---------- 账号资料 ---------- */
.account-actions { display: flex; flex-wrap: wrap; gap: 6px; margin-left: auto; }
.account-actions .btn, .account-actions .btn-secondary { flex: 0 0 auto; }
.auth-form { display: flex; flex-direction: column; gap: 10px; min-width: min(78vw, 320px); }
.auth-field { display: flex; flex-direction: column; gap: 4px; font-size: var(--fs-12); }

/* ---------- 日报 ---------- */
.report { display: flex; flex-direction: column; gap: 10px; }
.report-head { display: flex; align-items: baseline; gap: 8px; }
.report-head strong { font-size: var(--fs-15); }
.report-highlights { margin: 0; padding-left: 18px; font-size: var(--fs-13); line-height: 1.9; }
.report-block { padding: 12px; background: var(--color-surface); border-radius: var(--radius-12); box-shadow: var(--shadow-card); }
.report-title { font-size: var(--fs-13); font-weight: 600; margin-bottom: 8px; }
.report-empty { margin: 0; font-size: var(--fs-12); color: var(--color-text-tertiary); line-height: 1.7; }
.report-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px; font-size: var(--fs-13); font-variant-numeric: tabular-nums; }
.report-note { grid-column: 1 / -1; font-size: var(--fs-11); color: var(--color-text-tertiary); }
.report-row { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px; padding: 4px 0; font-size: var(--fs-12); }
.report-chip { font-size: 10px; padding: 1px 6px; border-radius: 4px; background: var(--color-surface-sunken); color: var(--color-text-secondary); }
.report-news { display: flex; gap: 8px; align-items: baseline; padding: 4px 0; font-size: var(--fs-12); color: inherit; text-decoration: none; }
.report-news > span:first-child { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.report-news:hover > span:first-child { text-decoration: underline; }

/* ---------- 跟踪误差 ---------- */
.track-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px; margin: 6px 0; font-variant-numeric: tabular-nums; }
.track-grid > div { display: flex; flex-direction: column; gap: 2px; font-size: var(--fs-12); }
.track-grid strong { font-size: var(--fs-15); }

/* ---------- 未读角标 ---------- */
.badge {
  display: inline-block; margin-left: 5px; min-width: 16px; padding: 0 5px;
  font-size: 10px; line-height: 16px; text-align: center; border-radius: 999px;
  background:var(--color-primary-6); color:#fff; font-weight:600; vertical-align: middle;
}

/* ---------- 信号回测 ---------- */
.signal-chips { display: flex; flex-wrap: wrap; gap: 6px; margin: 4px 0 8px; }
.signal-chips .fund-tag { cursor: pointer; border: none; font: inherit; }
.backtest-panel { min-height: 4px; }
.backtest-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; margin: 6px 0; }
.backtest-grid > div { display: flex; flex-direction: column; gap: 2px; font-size: var(--fs-12); }
.backtest-grid strong { font-size: var(--fs-15); }
.backtest-grid small { color: var(--color-text-tertiary); font-size: var(--fs-11); }

/* 过期横幅 —— 上游全挂时展示「上次完好」的快照，必须一眼看得出不是实时数据。
   用琥珀色而不是红色：数据本身没错，只是旧了；红色会被当成加载失败。 */
.stale-bar { display:flex; align-items:flex-start; gap:6px; margin:0 0 8px; padding:8px 10px;
  font-size:11px; line-height:1.6; border-radius:var(--radius-12);
  color:var(--color-warning); background:var(--color-warning-bg); border:1px solid var(--color-warning-border); }
.stale-bar .stale-mark { flex-shrink:0; }
/* 基金经理变更：日期筛选只作用于当前显式读取的批次。 */
.manager-pagination { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin: 16px 0; }
.manager-events { display: grid; gap: 12px; }
.manager-event { padding:12px; }
.manager-transition { margin: 12px 0; line-height: 1.8; overflow-wrap: anywhere; }
.manager-changes .look-through-controls select { flex: 0 1 210px; }
.manager-changes .look-through-funds p { overflow-wrap: anywhere; }

/* 股票反查：沿用披露卡片，长基金名和代码在窄屏内换行。 */
.stock-search-collection { padding:12px; margin-top:12px; }
.stock-search-collection > summary { cursor: pointer; font-weight: 600; }
.stock-search-collection .look-through-controls { margin-top: 12px; }
.stock-search-collection .look-through-funds { margin-top: 12px; overflow-wrap: anywhere; }

/* ETF: dates stay beside each denominator/numerator at narrow widths. */
.etf-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr)); gap:10px; }
.etf-card h2 { font-size:14px; margin:0; }
.etf-heading { display:flex; justify-content:space-between; gap:12px; }
.etf-heading .tag { white-space:nowrap; align-self:flex-start; }
.etf-premium { font-size:24px; font-weight:700; font-variant-numeric:tabular-nums; }
.etf-values { display:grid; grid-template-columns:1fr 1fr; gap:10px; margin:12px 0; }
.etf-values dt, .etf-values small { color:var(--color-text-secondary); font-size:12px; }
.etf-values dd { font-size:18px; margin:5px 0; font-variant-numeric:tabular-nums; }
.etf-values small { display:block; line-height:1.6; overflow-wrap:anywhere; }
.etf-warning { padding:8px 10px; background:var(--color-surface-alt); border-left:3px solid var(--color-warning); font-size:12px; line-height:1.7; }
.etf-links { display:flex; gap:18px; font-size:13px; }
.etf-help { margin-top:20px; font-size:13px; line-height:1.8; }
.etf-help summary { cursor:pointer; font-weight:600; }

.etf-notice { display:block; padding:10px 12px; font-size:12px; }
.etf-notice p { margin:6px 0 0; line-height:1.7; }
.etf-card, .etf-help { padding:12px; }
.etf-card .detail-note { margin:6px 0; }

/* 基金重仓股 */
.lookthrough-note { margin-bottom:4px; }
.lookthrough-item { width:100%; border:0; font:inherit; color:inherit; text-align:left; cursor:pointer; }
.lookthrough-main { min-width:0; }
.lookthrough-main .sector-name { display:block; }
.lookthrough-hk { margin-left:6px; vertical-align:1px; }
.lookthrough-item .sector-pct { font-size:15px; }
.lookthrough-detail { display:flex; flex-direction:column; gap:8px; }
.lookthrough-detail>.detail-note { margin:0 0 4px; }
.lookthrough-fund { display:flex; justify-content:space-between; align-items:center; gap:10px; padding:9px 0;
  border-bottom:1px solid var(--color-border-light); font-size:12px; }
.lookthrough-fund strong { display:block; font-size:13px; font-weight:600; }
.lookthrough-fund small { color:var(--color-text-tertiary); font-size:11px; }
.lookthrough-fund-nums { display:flex; flex-direction:column; align-items:flex-end; gap:2px; flex-shrink:0;
  font-variant-numeric:tabular-nums; color:var(--color-text-secondary); }
.lookthrough-exit-title { margin:12px 0 0; font-size:13px; color:var(--color-text-secondary); }

/* 持仓体检 */
.checkup-page { max-width:980px; }
.checkup-status:empty { display:none; }
.checkup-status { color:var(--color-up); font-size:12px; }
.checkup-intro { padding:16px; display:grid; gap:10px; }
.checkup-intro h2 { margin:0; font-size:17px; line-height:1.4; }
.checkup-intro .detail-note { margin:0; font-size:12px; color:var(--color-text-secondary); }
.checkup-modes { display:inline-flex; gap:2px; padding:2px; border-radius:999px; background:var(--color-surface-sunken); justify-self:start; }
.checkup-modes button { border:0; background:none; color:var(--color-text-secondary); border-radius:999px; padding:5px 14px; font-size:12px; cursor:pointer; }
.checkup-modes button[aria-pressed='true'] { background:var(--color-surface); color:var(--color-text); font-weight:600; box-shadow:var(--shadow-card); }
/* 宽屏上名称和金额框别隔太远：挑选区像表单一样收窄，结果区仍用整宽。 */
.checkup-mode-body { display:grid; gap:10px; max-width:640px; }
.checkup-mode-body .checkup-hint .text-link { margin-left:6px; }
.checkup-search { display:flex; align-items:center; gap:8px; height:40px; padding:0 12px; border:1px solid var(--color-border);
  border-radius:var(--radius-10); background:var(--color-surface-alt); color:var(--color-text-tertiary); }
.checkup-search:focus-within { border-color:var(--color-primary-5); background:var(--color-surface); }
.checkup-search input { flex:1; min-width:0; border:0; outline:0; background:none; color:var(--color-text); font-size:14px; }
.checkup-suggest { list-style:none; margin:-4px 0 0; padding:4px; border:1px solid var(--color-border); border-radius:var(--radius-10);
  background:var(--color-surface); box-shadow:var(--shadow-card); max-height:320px; overflow:auto; }
.checkup-suggest:empty { display:none; }
.checkup-suggest button { display:grid; grid-template-columns:1fr auto; gap:0 8px; width:100%; padding:8px 10px; border:0; border-radius:8px;
  background:none; color:var(--color-text); text-align:left; cursor:pointer; }
.checkup-suggest button:hover, .checkup-suggest button:focus-visible { background:var(--color-primary-1); outline:none; }
.checkup-suggest-name { font-size:13px; font-weight:600; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.checkup-suggest small { grid-column:1; color:var(--color-text-tertiary); font-size:11px; }
.checkup-suggest .checkup-suggest-added { grid-column:2; grid-row:1 / span 2; align-self:center; color:var(--color-primary); }
.checkup-suggest-empty { padding:8px 10px; font-size:12px; color:var(--color-text-tertiary); }
.checkup-picks { list-style:none; margin:0; padding:0; }
.checkup-picks:empty { display:none; }
.checkup-pick { display:grid; grid-template-columns:minmax(0,1fr) 7.5em 28px; gap:8px; align-items:center; padding:8px 0;
  border-bottom:1px solid var(--color-border-light); }
.checkup-pick-name strong { display:block; font-size:13px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.checkup-pick-name small { color:var(--color-text-tertiary); font-size:11px; }
.checkup-amount { width:100%; height:32px; padding:0 8px; border:1px solid var(--color-border); border-radius:8px; background:var(--color-surface-alt);
  color:var(--color-text); text-align:right; font-size:13px; font-variant-numeric:tabular-nums; outline:none; }
.checkup-amount:focus { border-color:var(--color-primary-5); background:var(--color-surface); }
.checkup-pick-remove { width:28px; height:28px; border:0; border-radius:50%; background:none; color:var(--color-text-tertiary); font-size:18px; line-height:1; cursor:pointer; }
.checkup-pick-remove:hover { background:var(--color-surface-sunken); color:var(--color-text); }
.checkup-actions { align-items:center; }
.checkup-actions .text-link { margin-right:auto; font-size:12px; cursor:pointer; }
.checkup-lead { margin:0; font-size:12px; color:var(--color-text-secondary); }
.checkup-bridge { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-top:12px; padding:14px 16px; }
.checkup-bridge:empty { display:none; }
.checkup-bridge strong { font-size:14px; }
.checkup-bridge .detail-note { margin:2px 0 0; font-size:12px; }
.checkup-bridge .btn, .checkup-bridge .btn-secondary { margin:0; flex-shrink:0; }
.checkup-bridge p { margin:0; }
.checkup-empty .checkup-actions { justify-content:center; flex-wrap:wrap; }
.checkup-empty .btn { margin:0; }
.checkup-summary-slot:empty { display:none; }
.checkup-summary { display:grid; gap:4px; margin:10px 0; padding:12px 14px; color:inherit; text-decoration:none; }
.checkup-summary:hover { box-shadow:0 2px 8px #1f243018; }
.checkup-summary-head { display:flex; align-items:center; gap:6px; }
.checkup-summary-head .icon { color:var(--color-primary); }
.checkup-summary-head strong { font-size:13px; }
.checkup-summary p { margin:0; font-size:13px; line-height:1.6; }
.checkup-summary small { color:var(--color-text-tertiary); font-size:11px; }
.checkup-actions { display:flex; justify-content:flex-end; gap:8px; }
.checkup-actions .btn { margin:0; min-width:96px; }
.checkup-actions .btn:disabled { opacity:.6; cursor:default; }
.checkup-hint { margin:0; font-size:11px; color:var(--color-text-tertiary); line-height:1.7; }
.checkup-results { display:grid; gap:10px; margin-top:12px; }
.checkup-results .more-section { margin:6px 0 8px; }
.checkup-results:empty { display:none; }
.checkup-notes ul { margin:0; padding-left:16px; }
.checkup-verdict { padding:16px; border-top:3px solid var(--color-primary); }
.checkup-verdict-head { display:flex; align-items:center; justify-content:space-between; gap:10px; }
.checkup-verdict-head h2 { margin:0; font-size:14px; }
.checkup-verdict-head .fund-tag { font-size:12px; padding:2px 8px; }
.checkup-findings { list-style:none; margin:12px 0 6px; padding:0; display:grid; gap:10px; }
.checkup-findings li { display:flex; align-items:baseline; gap:8px; flex-wrap:wrap; font-size:13px; color:var(--color-text-secondary); }
.checkup-findings strong { font-size:26px; line-height:1.1; font-weight:700; color:var(--color-text);
  font-variant-numeric:tabular-nums; letter-spacing:-.5px; }
.checkup-verdict .detail-note { margin:0; }
.checkup-list { padding:4px 14px; }
.checkup-list > .detail-note { margin:8px 0; }
.checkup-row { display:grid; grid-template-columns:minmax(80px,auto) 1fr auto; gap:4px 12px; align-items:center;
  padding:10px 0; border-bottom:1px solid var(--color-border-light); }
.checkup-row:last-child { border-bottom:0; }
.checkup-row-main strong { display:block; font-size:13px; }
.checkup-row-main small, .checkup-row-side small { color:var(--color-text-tertiary); font-size:11px; }
.checkup-row-funds { display:flex; flex-wrap:wrap; gap:4px; }
.checkup-chip { font-size:11px; padding:1px 6px; border-radius:4px; background:var(--color-surface-sunken);
  color:var(--color-text-secondary); white-space:nowrap; font-variant-numeric:tabular-nums; }
.checkup-row-side { text-align:right; white-space:nowrap; }
.checkup-row-side b { display:block; font-size:14px; }
.checkup-bar { display:grid; grid-template-columns:5.5em 1fr 3.6em; gap:10px; align-items:center; padding:6px 0; font-size:12px; }
.checkup-bar-name { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.checkup-bar-track { height:8px; border-radius:4px; background:var(--color-surface-sunken); overflow:hidden; }
.checkup-bar-track span { display:block; height:100%; border-radius:4px; background:var(--color-primary-5); }
.checkup-bar-value { text-align:right; font-variant-numeric:tabular-nums; color:var(--color-text-secondary); }
.checkup-funds { display:grid; gap:10px; grid-template-columns:repeat(auto-fill,minmax(300px,1fr)); }
.checkup-fund { padding:12px 14px; display:grid; gap:6px; align-content:start; }
.checkup-fund-head { display:flex; justify-content:space-between; align-items:flex-start; gap:8px; }
.checkup-fund-head strong { display:block; font-size:13px; }
.checkup-fund-head small, .checkup-fund-date { color:var(--color-text-tertiary); font-size:11px; }
.checkup-fund-head .fund-tags { margin:0; flex-shrink:0; justify-content:flex-end; max-width:55%; }
.checkup-fund-top, .checkup-changes p { margin:0; font-size:12px; line-height:1.7; }
.checkup-changes { display:grid; gap:2px; margin:0; font-size:12px; }
.checkup-cta { margin-top:14px; padding:16px; border:1px solid var(--color-primary-2); }
.checkup-cta:empty { display:none; }
.checkup-cta h2 { margin:0 0 4px; font-size:15px; }
.checkup-cta .detail-note { margin:0; font-size:12px; color:var(--color-text-secondary); }
.checkup-label { margin:12px 0 6px; font-size:12px; font-weight:600; }
.checkup-options { display:flex; flex-wrap:wrap; gap:6px; }
.checkup-option { border:1px solid var(--color-border); background:var(--color-surface); color:var(--color-text);
  border-radius:999px; padding:5px 12px; font-size:12px; cursor:pointer; }
.checkup-option[aria-pressed='true'], .checkup-option[aria-checked='true'] { border-color:var(--color-primary);
  color:var(--color-primary); background:var(--color-primary-1); }
.checkup-contact { display:flex; gap:8px; margin-top:14px; }
.checkup-contact .auth-input { flex:1 1 auto; }
.checkup-contact .btn { margin:0; flex-shrink:0; }
.checkup-cta .auth-error { margin-top:6px; }
.checkup-privacy { margin-top:8px; }
.checkup-disclaimer { margin:14px 2px 24px; }
@media (max-width:768px) {
  .checkup-pick { grid-template-columns:minmax(0,1fr) 6.5em 28px; }
  .checkup-bridge { flex-direction:column; align-items:stretch; }
  .checkup-row { grid-template-columns:1fr auto; }
  .checkup-row-funds { grid-column:1 / -1; grid-row:2; }
  .checkup-funds { grid-template-columns:1fr; }
}
