:root {
  --bg:#fff;
  --surface:#fff;
  --ink:#1b1b1b;
  --muted:#555;
  --line:#e9e9e9;
  --header:#0f0f0f;
  --blue:#0f69ff;
  --green:#00a83e;
  --red:#e12525;
  --amber:#9a6700;
  --fill:#f6f7f8;
  --radius:2px;
  --radius-sm:2px;
}
* { box-sizing:border-box; }
html { scroll-behavior:smooth; }
body {
  margin:0;
  color:var(--ink);
  background:var(--bg);
  font:15px/1.5 "Segoe UI","PingFang SC","Microsoft YaHei",Arial,sans-serif;
  font-variant-numeric:tabular-nums;
}
button,input,textarea { font:inherit; }
button { cursor:pointer; }

.app-shell { min-height:100vh; background:var(--bg); }
.page-wrap { width:min(1440px,calc(100% - 48px)); margin:0 auto; }
.masthead { position:sticky; top:0; z-index:20; background:var(--header); color:#fff; }
.masthead-inner {
  display:flex; align-items:center; gap:16px; min-height:52px; min-width:0;
}
.brand { display:flex; align-items:center; gap:10px; color:#fff; text-decoration:none; flex:0 0 auto; }
.brand-mark {
  width:22px; height:22px; display:grid; place-items:center; border-radius:2px;
  background:#fff; color:#111; font-size:11px; font-weight:800; letter-spacing:.02em;
}
.brand strong { font-size:16px; font-weight:650; letter-spacing:.01em; }
.masthead nav {
  display:flex; align-items:stretch; gap:0; height:52px;
  flex:1 1 0; min-width:0; overflow-x:auto; flex-wrap:nowrap; scrollbar-width:none;
}
.masthead nav::-webkit-scrollbar { display:none; }
.nav-item {
  display:flex; align-items:center; padding:0 10px; color:#bdbdbd; text-decoration:none;
  font-size:15px; font-weight:500; white-space:nowrap; flex-shrink:0;
}
.nav-item:hover { color:#fff; }
.nav-item.active { color:#fff; box-shadow:inset 0 -2px 0 #fff; }
.masthead-search { position:relative; flex:0 0 auto; width:clamp(140px, 16vw, 220px); min-width:140px; max-width:220px; }
.masthead-search-wrap { display:block; position:relative; }
.masthead-search-wrap::before {
  content:'⌕'; position:absolute; left:10px; top:50%; transform:translateY(-50%);
  color:#888; font-size:14px; pointer-events:none; line-height:1;
}
.masthead-search input {
  width:100%; height:32px; padding:0 10px 0 28px; color:#fff; background:#1a1a1a;
  border:1px solid #3a3a3a; border-radius:var(--radius-sm); font-size:13px;
}
.masthead-search input::placeholder { color:#888; }
.masthead-search input:hover { border-color:#666; }
.masthead-search input:focus { outline:none; border-color:#888; box-shadow:0 0 0 2px rgba(255,255,255,.08); }
.masthead-search-results {
  position:absolute; top:calc(100% + 4px); left:0; right:0; min-width:min(320px, calc(100vw - 32px));
  max-height:min(320px, 50vh); overflow:auto; background:#fff; color:var(--ink);
  border:1px solid var(--line); border-radius:var(--radius-sm); box-shadow:0 10px 28px rgba(0,0,0,.28); z-index:40;
}
.masthead-search-results:not([hidden]) { display:block; }
.masthead-search-results .stock-result { width:100%; text-align:left; cursor:pointer; }
.masthead-search-results .stock-result.is-active { background:#f7faff; }
.masthead-search-results .stock-result em { color:var(--muted); font-size:12px; }
.masthead-search-results .search-empty { padding:12px; color:var(--muted); font-size:13px; text-align:center; }
.masthead-search-results .search-status { padding:10px 12px; color:var(--muted); font-size:13px; }
.visually-hidden {
  position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden;
  clip:rect(0,0,0,0); white-space:nowrap; border:0;
}
.masthead-tools {
  margin-left:auto; flex:0 0 auto; min-width:0; display:flex; align-items:center; gap:10px;
  color:#a3a3a3; font-size:14px;
}
/* 行情带已有延迟说明，此处与 updatedAt 重复 */
.masthead-tools .feed-tag { display:none; }
.locale-select-wrap { flex:0 0 auto; }
.legal-masthead { margin-bottom:8px; }
.legal-masthead .masthead-inner { min-height:48px; }
.locale-select-wrap select,
#localeSelect {
  height:32px; max-width:132px; padding:0 28px 0 10px; color:#fff; background:#1a1a1a;
  border:1px solid #3a3a3a; border-radius:var(--radius-sm); font-size:13px; font-weight:500;
  cursor:pointer;
}
.locale-select-wrap select:hover,
#localeSelect:hover { border-color:#666; }
body.is-rtl { direction:rtl; }
body.is-rtl .masthead-inner,
body.is-rtl .quote-tape-inner,
body.is-rtl .page-wrap { direction:rtl; }
body.is-rtl .masthead nav,
body.is-rtl .masthead-tools,
body.is-rtl .section-heading,
body.is-rtl .watchlist-table,
body.is-rtl .table-wrap { direction:rtl; }
body.is-rtl .num,
body.is-rtl .ticker-price,
body.is-rtl .valuation-cell.num,
body.is-rtl .period-cell.num { direction:ltr; unicode-bidi:embed; }
body.is-rtl .masthead-tools { margin-left:0; margin-right:auto; }
body.is-rtl .brand { flex-direction:row-reverse; }
body.is-rtl .auth-user { flex-direction:row-reverse; }
body.is-rtl .locale-select-wrap select,
body.is-rtl #localeSelect { padding:0 10px 0 28px; }
.market-status {
  flex:0 1 auto; min-width:0; max-width:9em; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
  color:#9be7a3; font-weight:600;
}
.market-status:not(.is-open) { color:#d8d8d8; }
.market-status:not(.is-open) i { background:#d8d8d8; }
.auth-slot { display:flex; align-items:center; flex:0 1 auto; min-width:0; }
.auth-user { display:flex; align-items:center; gap:8px; min-width:0; }
.auth-name {
  max-width:140px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
  color:#fff; font-size:14px; font-weight:600;
}
.auth-avatar { width:22px; height:22px; border-radius:50%; object-fit:cover; background:#2a2a2a; }
.auth-avatar.logo-failed { display:none; }
.auth-logout {
  margin:0; padding:0 0 0 8px; color:#a3a3a3; background:transparent;
  border:0; border-left:1px solid #3a3a3a; font-size:14px; font-weight:500;
}
.auth-logout:hover { color:#fff; }
.google-btn {
  display:inline-flex; align-items:center; height:32px; padding:0 12px;
  color:#111; background:#fff; border-radius:var(--radius-sm);
  text-decoration:none; font-size:14px; font-weight:650;
}
.google-btn:hover { background:#e8e8e8; }
.market-status i {
  display:inline-block; width:6px; height:6px; margin-right:6px;
  border-radius:50%; background:#9be7a3; vertical-align:middle;
}
.feed-tag,.updated,#refreshCountdown { white-space:nowrap; }
/* 倒计时占用横向空间，刷新按钮保留 */
#refreshCountdown { display:none; }
.feed-tag,#refreshCountdown { flex:0 1 auto; min-width:0; overflow:hidden; text-overflow:ellipsis; }
.updated { flex:0 1 auto; min-width:0; max-width:11em; overflow:hidden; text-overflow:ellipsis; }
.masthead-tools .icon-btn { flex:0 0 auto; }
.primary-btn,.secondary-btn,.icon-btn,.text-btn,.close-btn { border:0; border-radius:var(--radius-sm); }
.primary-btn { padding:6px 11px; color:#fff; background:#fff; color:#111; font-size:14px; font-weight:650; }
.primary-btn:hover { background:#e8e8e8; }
.secondary-btn { padding:6px 11px; color:#111; background:#eee; }
.icon-btn { width:32px; height:32px; color:#fff; background:transparent; border:1px solid #3a3a3a; border-radius:var(--radius-sm); font-size:17px; }
.icon-btn:hover { background:#1f1f1f; }
.text-btn { padding:0; background:transparent; color:var(--blue); font-size:14px; font-weight:650; }
.text-btn:hover { text-decoration:underline; }
.close-btn { background:transparent; color:var(--muted); font-size:26px; }

.quote-tape {
  margin-top:0; border:0; border-bottom:1px solid var(--line); background:#fff; border-radius:0;
}
.quote-tape-inner { display:flex; align-items:center; gap:0; min-height:56px; padding:8px 0; }
.module-nav { position:sticky; top:52px; z-index:18; background:rgba(255,255,255,.97); border-bottom:1px solid var(--line); backdrop-filter:blur(10px); }
.module-nav-inner { min-height:44px; display:flex; align-items:center; gap:2px; overflow:visible; }
.module-group { position:relative; flex:0 0 auto; }
.module-group summary { list-style:none; padding:13px 14px 11px; color:#555; font-size:13px; font-weight:700; cursor:pointer; border-bottom:2px solid transparent; }
.module-group summary::-webkit-details-marker { display:none; }
.module-group summary::after { content:'⌄'; margin-left:5px; color:#999; }
.module-group.active summary,.module-group[open] summary { color:#111; border-bottom-color:#111; }
.module-group>div { position:absolute; top:calc(100% + 1px); left:0; min-width:190px; padding:7px; background:#fff; border:1px solid var(--line); box-shadow:0 12px 32px rgba(0,0,0,.14); }
.module-group>div a { display:block; padding:9px 10px; color:#333; text-decoration:none; font-size:13px; white-space:nowrap; }
.module-group>div a:hover,.module-group>div a:focus-visible { color:#0057d9; background:#f4f7fb; }
.module-source-link { margin-left:auto; color:var(--blue); text-decoration:none; font-size:12px; font-weight:650; white-space:nowrap; }
.tape-note {
  flex:none; display:flex; align-items:center; gap:8px; margin:0 0 0 8px; padding-left:12px;
  color:var(--muted); font-size:12px; white-space:nowrap; border-left:1px solid var(--line);
}
.tape-note a { color:var(--blue); text-decoration:none; }
.tape-note a:hover { text-decoration:underline; }
.tape-market { flex:none; padding-right:4px; }
.tape-market select {
  max-width:118px; height:32px; padding:0 8px; color:#111; background:transparent;
  border:0; border-radius:0; font-size:14px; font-weight:650;
}
.tape-nav {
  flex:none; width:28px; height:40px; color:#111; background:transparent;
  border:0; border-radius:0; font-size:24px; line-height:1;
}
.tape-nav:hover:not(:disabled) { color:var(--blue); }
.tape-nav:disabled { color:#d1d1d6; cursor:default; }
.ticker-grid { display:flex; flex:1; min-width:0; gap:0; overflow-x:auto; scrollbar-width:none; }
.ticker-grid::-webkit-scrollbar { display:none; }
.ticker-grid.is-marquee { overflow:hidden; }
.ticker-track { display:flex; align-items:center; width:max-content; }
.ticker-copy { display:flex; align-items:center; flex:none; }
.ticker-grid.is-marquee .ticker-track { animation:tapeMarquee 48s linear infinite; }
.ticker-grid.is-marquee:hover .ticker-track { animation-play-state:paused; }
@keyframes tapeMarquee { to { transform:translateX(-50%); } }
.ticker {
  display:flex; align-items:center; gap:8px;
  flex:0 0 auto; min-width:0; padding:8px 16px; background:transparent; border:0;
  border-right:1px solid var(--line);
}
.ticker-name {
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
  color:var(--ink); font-size:15px; font-weight:600;
}
.ticker-price { color:#111; font-size:15px; font-weight:700; letter-spacing:-.01em; }
.ticker-change { font-size:15px; font-weight:600; white-space:nowrap; }
.ticker-change.flat { color:var(--muted); }
.tv-chart-link { cursor:pointer; text-decoration:none; color:inherit; }
.tv-chart-link:focus-visible { outline:2px solid var(--blue); outline-offset:2px; }
.tv-chart-symbol { text-decoration:underline; text-decoration-color:transparent; }
.tv-chart-symbol:hover, .tv-chart-symbol:focus-visible { text-decoration-color:currentColor; }
.ticker.tv-chart-link:hover { background:rgba(15,23,42,.04); border-radius:6px; }
.instrument-row.tv-chart-link:hover { background:#fafafa; }
.watchlist-card.tv-chart-link:hover { border-color:#c7d7fe; background:#f7faff; }
.brief-stat.tv-chart-link:hover strong { text-decoration:underline; text-decoration-thickness:2px; text-underline-offset:3px; }
.agenda-item.tv-chart-link:hover { background:#f7faff; }
.valuation-metric.tv-chart-link:hover { background:#f7faff; }
.sector-tile.tv-chart-link:hover { filter:brightness(1.06); }
.watchlist-table tbody tr.tv-chart-link:hover td { background:#fafafa; }
.watchlist-table tbody tr.tv-chart-link:hover td:first-child { background:#fafafa; }
.brief-theme-item .tv-chart-symbol { font-style:inherit; }
.up { color:var(--green); }
.down { color:var(--red); }
.sparkline { width:56px; height:22px; flex:none; overflow:visible; }
.sparkline .spark-line { fill:none; stroke:currentColor; stroke-width:1.7; stroke-linecap:round; stroke-linejoin:round; vector-effect:non-scaling-stroke; }
.sparkline .spark-fill { fill:currentColor; opacity:.16; stroke:none; }
.sparkline .spark-end { fill:currentColor; stroke:#fff; stroke-width:1; vector-effect:non-scaling-stroke; }
.ticker .sparkline { width:72px; height:28px; margin-left:2px; }
.ticker .sparkline .spark-fill { opacity:.10; }
.ticker .sparkline .spark-line { stroke-width:1.8; }
.up-line { color:var(--green); }
.down-line { color:var(--red); }
.micro-bar { width:42px; height:1px; margin-bottom:8px; background:var(--line); }

main { padding:24px 0 56px; }
.card { background:#fff; border:0; border-radius:0; overflow:visible; }
.hero-grid {
  display:grid; grid-template-columns:minmax(0,1.2fr) minmax(320px,.8fr); gap:40px;
  align-items:start; margin-bottom:4px;
}
.briefing,.fear-panel,.section-card,.asset-panel { padding:0; min-width:0; }
.briefing-content { margin-top:4px; display:flex; flex-direction:column; gap:0; }
.briefing .valuation-footnote,.fear-panel .valuation-footnote {
  margin-top:14px; padding-top:12px; border-top:1px solid var(--line);
}
.brief-stat { padding:10px 0; border-bottom:1px solid var(--line); }
.brief-stat:last-child { border-bottom:0; }
.brief-stat-news { padding-bottom:0; }
.brief-stat-themes { padding-bottom:0; }
.brief-news-list,.brief-theme-list { display:flex; flex-direction:column; gap:10px; margin-top:6px; }
.brief-theme-item { display:flex; align-items:baseline; justify-content:space-between; gap:12px; font-size:14px; font-weight:650; line-height:1.4; }
.brief-theme-item em { color:var(--muted); font-size:12px; font-style:normal; font-weight:600; white-space:nowrap; }
.brief-news-item { display:flex; align-items:flex-start; gap:10px; font-size:14px; font-weight:650; line-height:1.42; letter-spacing:-.01em; }
.brief-news-copy { min-width:0; flex:1; }
.brief-news-item a { color:var(--ink); text-decoration:none; }
.brief-news-item a:hover { color:var(--blue); }
.brief-news-item em { display:block; margin-top:2px; color:var(--muted); font-size:12px; font-style:normal; font-weight:500; }
.news-thumb { flex:0 0 auto; overflow:hidden; border-radius:var(--radius-sm); background:#eef2ef; }
.news-thumb-brief { width:56px; height:56px; }
.news-thumb-list { width:72px; height:72px; }
.news-thumb img { display:block; width:100%; height:100%; object-fit:cover; }
.section-card,.asset-grid { margin-top:28px; padding-top:20px; border-top:1px solid var(--line); }
.official-data-grid { display:grid; grid-template-columns:minmax(0,1.35fr) minmax(320px,.65fr); gap:32px; }
.official-data-grid h3 { margin:0 0 12px; font-size:16px; }
.source-grade { padding:4px 8px; color:#18794e; background:#ecfdf3; border:1px solid #abefc6; border-radius:999px; font-size:12px; font-weight:700; }
.positioning-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:1px; background:var(--line); border:1px solid var(--line); }
.position-card { min-width:0; padding:13px; background:#fff; }
.position-card-head { display:flex; align-items:center; justify-content:space-between; gap:8px; }
.position-card-head strong { font-size:14px; }
.position-card-head span { color:var(--muted); font-size:11px; white-space:nowrap; }
.position-card-value { margin-top:7px; font-size:20px; font-weight:750; letter-spacing:-.02em; }
.position-card-meta { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-top:3px; color:var(--muted); font-size:11px; }
.fiscal-grid { display:grid; gap:1px; background:var(--line); border:1px solid var(--line); }
.fiscal-metric { padding:14px; background:#fff; }
.fiscal-metric small { display:block; color:var(--muted); font-size:12px; }
.fiscal-metric strong { display:block; margin-top:3px; font-size:21px; }
.fiscal-metric em { display:block; margin-top:2px; color:var(--muted); font-size:11px; font-style:normal; }
.source-page { max-width:1120px; padding-top:36px; padding-bottom:64px; }
.source-page-hero { max-width:780px; margin-bottom:28px; }
.source-page-hero h1 { margin:6px 0 10px; font-size:38px; line-height:1.15; letter-spacing:-.035em; }
.source-page-hero p { margin:0; color:var(--muted); font-size:16px; }
.source-summary { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); margin:0 0 28px; border:1px solid var(--line); }
.source-summary article { padding:18px; border-right:1px solid var(--line); }
.source-summary article:last-child { border-right:0; }
.source-summary strong { display:block; font-size:26px; }
.source-summary span { color:var(--muted); font-size:12px; }
.source-policy { margin:28px 0 36px; padding:22px; background:#f7f8fa; border-left:4px solid #111; }
.source-policy h2 { margin:0 0 14px; font-size:18px; }
.source-policy-grid { display:grid; grid-template-columns:1fr 1fr; gap:24px; }
.source-policy-grid article { padding:0; }
.source-policy-grid strong { font-size:15px; }
.source-policy-grid p { margin:5px 0 0; color:var(--muted); font-size:13px; }
.source-register { border-top:1px solid var(--line); }
.source-row { display:grid; grid-template-columns:minmax(220px,.9fr) minmax(160px,.35fr) minmax(280px,1.1fr); gap:12px 20px; align-items:start; padding:17px 0; border-bottom:1px solid var(--line); }
.source-row>div a { color:var(--ink); text-decoration:none; }
.source-row>div span { display:block; margin-top:3px; color:var(--muted); font-size:11px; }
.source-row p { margin:0; color:#333; font-size:13px; }
.source-row small { grid-column:3; color:var(--muted); }
.source-status { justify-self:start; padding:4px 8px; border-radius:999px; font-size:11px; font-weight:750; white-space:nowrap; }
.source-status-official-open { color:#067647; background:#ecfdf3; }
.source-status-attribution-required { color:#175cd3; background:#eff8ff; }
.source-status-license-required { color:#b54708; background:#fffaeb; }
.source-status-review-required { color:#b42318; background:#fef3f2; }
.section-heading {
  display:flex; align-items:baseline; justify-content:space-between; gap:8px 24px;
  margin-bottom:16px; flex-wrap:wrap; position:relative; z-index:1;
}
.section-heading h1,.section-heading h2,.briefing h2,.dialog-head h2 {
  margin:0; color:#111; font-size:26px; font-weight:700; letter-spacing:-.02em;
  flex:0 1 auto; min-width:0; line-height:1.25;
}
.section-heading .subtle { flex:0 0 auto; margin-left:auto; white-space:nowrap; line-height:1.4; }
.kicker,.eyebrow {
  display:block; margin:0 0 4px; color:var(--muted);
  font-size:13px; font-weight:650; letter-spacing:0; text-transform:none;
}
.subtle,.hint { color:var(--muted); font-size:14px; }
.brief-stat small { display:block; margin-bottom:4px; color:var(--muted); font-size:13px; }
.brief-stat strong { font-size:17px; font-weight:700; line-height:1.35; }
.brief-stat em { display:block; margin-top:4px; color:var(--muted); font-size:14px; font-style:normal; }
.brief-stat a { color:inherit; text-decoration:none; }
.brief-stat a:hover { color:var(--blue); }

.fear-gauge-grid { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.fear-gauge-card { min-width:0; padding:8px 4px 4px; }
.fear-gauge-head { display:flex; justify-content:space-between; gap:8px; margin-bottom:4px; }
.fear-gauge-head strong { font-size:15px; }
.fear-gauge-head span { color:var(--muted); font-size:13px; }
.fear-meter { display:block; width:min(100%,280px); height:auto; margin:0 auto; overflow:visible; }
.fear-meter text { fill:var(--muted); font-size:12px; }
.fear-needle-group {
  transform-box: view-box;
  transform-origin: 120px 122px;
  transform: rotate(calc(var(--needle-deg, 0) * 1deg));
}
.fear-needle-group.is-entering { animation: fearNeedleSwing 1.2s cubic-bezier(.18,.72,.22,1) both; }
.fear-gauge-card:nth-child(2) .fear-needle-group.is-entering { animation-delay: .12s; }
.fear-gauge-card:nth-child(3) .fear-needle-group.is-entering { animation-delay: .24s; }
.fear-gauge-card:nth-child(4) .fear-needle-group.is-entering { animation-delay: .36s; }
.fear-needle { stroke:#111; stroke-width:3; stroke-linecap:round; }
.fear-hub { fill:#111; }
.fear-gauge-readout { margin-top:-4px; text-align:center; }
.fear-gauge-readout strong,.fear-gauge-readout b,.fear-gauge-readout em { display:block; }
.fear-gauge-readout strong { font-size:28px; font-weight:700; letter-spacing:-.03em; }
.fear-gauge-readout b { margin-top:2px; font-size:15px; }
.fear-gauge-readout em { margin-top:2px; font-size:14px; font-style:normal; font-weight:650; }
.fear-gauge-card>small { display:block; margin-top:8px; color:var(--muted); font-size:13px; text-align:center; }
.tone-fear { color:var(--red); }
.tone-greed { color:var(--green); }
.tone-neutral,.tone-flat { color:var(--muted); }

.valuation-grid { display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:12px; }
.valuation-loading { padding:24px; color:var(--muted); text-align:center; grid-column:1/-1; }
.valuation-index { grid-column:span 3; border:1px solid var(--line); border-radius:var(--radius-sm); overflow:hidden; }
.valuation-index.is-mainland { grid-column:span 2; }
.valuation-index-head { padding:10px 12px; display:flex; justify-content:space-between; border-bottom:1px solid var(--line); background:var(--fill); }
.valuation-index-head strong,.valuation-index-head span { display:block; }
.valuation-index-head strong { font-size:15px; }
.valuation-index-head span,.valuation-index-head small { color:var(--muted); font-size:13px; }
.valuation-metrics { display:grid; grid-template-columns:repeat(3,1fr); }
.valuation-metrics.cols-1 { grid-template-columns:1fr; }
.valuation-metrics.cols-2 { grid-template-columns:repeat(2,1fr); }
.valuation-metric {
  min-width:0; padding:12px; text-align:left; color:var(--ink);
  background:#fff; border:0; border-right:1px solid var(--line);
}
.valuation-metric:last-child { border-right:0; }
.valuation-metric:hover,.valuation-metric:focus-visible { background:#f7faff; outline:none; box-shadow:inset 0 -2px 0 var(--blue); }
.valuation-metric>span,.valuation-metric>small,.valuation-metric>em { display:block; }
.valuation-metric>span { color:var(--muted); font-size:13px; font-weight:700; }
.valuation-metric>strong { display:block; margin:6px 0 4px; font-size:24px; font-weight:700; }
.valuation-metric>strong i { margin-left:2px; color:var(--muted); font-size:13px; font-style:normal; font-weight:500; }
.valuation-metric>small { min-height:36px; color:var(--muted); font-size:13px; line-height:1.5; }
.valuation-metric>em { margin-top:8px; color:var(--muted); font-size:13px; font-style:normal; }
.valuation-metric>em b { float:right; color:var(--blue); font-weight:650; }
.valuation-footnote { margin-top:10px; display:flex; justify-content:space-between; gap:12px; flex-wrap:wrap; color:var(--muted); font-size:13px; }
.valuation-footnote a,.heat-source a,.fear-gauge-head a { color:var(--blue); text-decoration:none; }
.valuation-footnote a:hover,.heat-source a:hover,.fear-gauge-head a:hover { text-decoration:underline; }
.source-links { display:flex; flex-wrap:wrap; gap:8px 14px; justify-content:flex-end; }

.btc-cycle-grid { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); border:1px solid var(--line); border-radius:var(--radius-sm); overflow:hidden; }
.crypto-dashboard { display:grid; gap:18px; }
.crypto-group { min-width:0; }
.crypto-group-head { display:flex; align-items:flex-end; justify-content:space-between; gap:12px; margin-bottom:8px; }
.crypto-group-head h3 { margin:0 0 2px; font-size:16px; letter-spacing:-.01em; }
.crypto-group-head div>span { color:var(--muted); font-size:12px; line-height:1.4; }
.crypto-source-meta { display:flex; align-items:center; justify-content:flex-end; gap:6px; }
.crypto-source-badge { flex:none; padding:3px 7px; color:var(--muted); background:var(--fill); border:1px solid var(--line); border-radius:999px; font-size:11px; font-weight:650; }
.crypto-group-head .crypto-status-badge { flex:none; padding:3px 7px; border:1px solid #b9d7c8; border-radius:999px; color:#087f5b; background:#eef8f3; font-size:11px; font-weight:700; }
.crypto-group-head .crypto-status-badge.status-degraded { color:#9a5b00; background:#fff7e8; border-color:#ead09b; }
.crypto-metric-grid {
  display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:1px;
  overflow:hidden; background:var(--line); border:1px solid var(--line); border-radius:var(--radius-sm);
}
.crypto-metric-grid>.valuation-metric,.crypto-metric-grid>.btc-cycle-card { border:0; }
.crypto-metric-grid>.valuation-loading,.crypto-metric-grid>.empty { background:#fff; }
.btc-cycle-card {
  min-width:0; padding:12px; text-align:left; color:var(--ink);
  background:#fff; border:0; border-right:1px solid var(--line); font:inherit;
}
button.btc-cycle-card { cursor:pointer; }
button.btc-cycle-card:hover,button.btc-cycle-card:focus-visible { background:#f7faff; outline:none; box-shadow:inset 0 -2px 0 var(--blue); }
.btc-cycle-card:last-child { border-right:0; }
.btc-cycle-card>span,.btc-cycle-card>small,.btc-cycle-card>em { display:block; }
.btc-cycle-card>span { color:var(--muted); font-size:13px; font-weight:700; }
.btc-cycle-card>strong { display:block; margin:6px 0 4px; font-size:24px; font-weight:700; letter-spacing:-.03em; }
.btc-cycle-card>small { min-height:36px; color:var(--muted); font-size:13px; line-height:1.5; }
.btc-cycle-card>em { margin-top:8px; color:var(--muted); font-size:13px; font-style:normal; }
.btc-cycle-card>em b { float:right; color:var(--blue); font-weight:650; }
.btc-cycle-card .sparkline { width:100%; height:28px; margin-top:8px; pointer-events:none; }
.btc-price-card>strong { font-size:28px; }
.btc-price-card>small { color:var(--ink); font-weight:650; }
.earnings-grid {
  display:grid; grid-template-columns:repeat(auto-fill,minmax(240px,1fr)); gap:12px;
}
.earnings-grid .btc-cycle-card,
.earnings-grid .btc-cycle-card:last-child {
  border:1px solid var(--line); border-radius:var(--radius-sm);
}
.earnings-card-head { display:flex; align-items:center; gap:8px; min-width:0; }
.earnings-card-head b { color:var(--ink); font-weight:700; flex-shrink:0; }
.earnings-metrics { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; margin-top:10px; }
.earnings-metric>span,.earnings-metric>strong,.earnings-metric>small { display:block; }
.earnings-metric>span { color:var(--muted); font-size:12px; font-weight:700; }
.earnings-metric>strong { margin-top:4px; font-size:16px; font-weight:700; letter-spacing:-.02em; color:var(--ink); }
.earnings-metric>small { margin-top:2px; color:var(--muted); font-size:11px; line-height:1.35; }
.earnings-metric>strong.earnings-beat,.earnings-result-label.earnings-beat { color:var(--green); }
.earnings-metric>strong.earnings-miss,.earnings-result-label.earnings-miss { color:var(--red); }
.earnings-metric>strong.earnings-met,.earnings-result-label.earnings-met { color:var(--muted); }
.earnings-result-label { display:inline-block; margin-left:5px; font-weight:750; white-space:nowrap; }
.earnings-grid .up,.earnings-history-table .up,.valuation-stats .up { color:var(--green); }
.earnings-grid .down,.earnings-history-table .down,.valuation-stats .down { color:var(--red); }
.earnings-history-table { min-width:700px; table-layout:fixed; }
.earnings-history-table th:first-child { width:112px; }
.earnings-history-table th:nth-child(2),.earnings-history-table th:nth-child(4) { width:210px; }
.earnings-history-table th:nth-child(3),.earnings-history-table th:nth-child(5) { width:84px; }
.earnings-history-table .num { text-align:right; }
.earnings-history-table td:first-child strong,.earnings-history-table td:first-child small { display:block; }
.earnings-history-table td:first-child small { margin-top:3px; color:var(--muted); font-size:11px; }
.valuation-dialog.is-earnings .range-tabs { display:none; }
.valuation-dialog.is-earnings .valuation-chart { min-height:0; }
.cycle-bar { margin-top:10px; height:6px; overflow:hidden; background:var(--fill); border:1px solid var(--line); border-radius:99px; }
.cycle-bar i { display:block; height:100%; background:var(--blue); }

.macro-metrics { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); border:1px solid var(--line); border-radius:var(--radius-sm); overflow:hidden; }
.macro-metrics .valuation-metric { border-bottom:1px solid var(--line); }
.macro-metrics .valuation-metric:nth-child(5n) { border-right:0; }
.macro-metrics .valuation-metric:nth-last-child(-n+5) { border-bottom:0; }
.macro-metrics.cols-2 { grid-template-columns:repeat(2,minmax(0,1fr)); }
.macro-metrics.cols-3 { grid-template-columns:repeat(3,minmax(0,1fr)); }
.macro-metrics.cols-2 .valuation-metric:nth-child(5n),
.macro-metrics.cols-3 .valuation-metric:nth-child(5n) { border-right:1px solid var(--line); }
.macro-metrics.cols-2 .valuation-metric:nth-child(2n),
.macro-metrics.cols-3 .valuation-metric:nth-child(3n) { border-right:0; }
.macro-metrics.cols-2 .valuation-metric:nth-last-child(-n+2),
.macro-metrics.cols-3 .valuation-metric:nth-last-child(-n+3) { border-bottom:0; }
.macro-metrics .valuation-metric .sparkline { width:100%; height:28px; margin-top:8px; pointer-events:none; }
#dollarFxGrid { margin-top:12px; }
.btc-treasury-panel { margin-top:20px; padding-top:18px; border-top:1px solid var(--line); }
.btc-treasury-head { display:flex; align-items:flex-end; justify-content:space-between; gap:16px; margin-bottom:12px; }
.btc-treasury-head h3 { margin:0 0 3px; font-size:17px; letter-spacing:-.01em; }
.btc-treasury-summary { margin-bottom:8px; color:var(--muted); font-size:13px; font-weight:650; }
.btc-treasury-table { min-width:820px; }
.btc-treasury-table .num { text-align:right; }
.btc-treasury-entity { display:flex; align-items:center; gap:8px; min-width:0; }
.btc-treasury-entity strong { max-width:300px; overflow:hidden; text-overflow:ellipsis; color:var(--ink); font-size:14px; }
.btc-treasury-table .btc-holdings { color:#9b5d00; font-weight:700; }

.market-board {
  display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:1px;
  overflow:hidden; background:var(--line); border:1px solid var(--line); border-radius:var(--radius-sm);
}
.market-board-panel { scroll-margin-top:112px; }
.real-estate-panel { scroll-margin-top:112px; }
.real-estate-regions { display:grid; gap:18px; }
.real-estate-region { min-width:0; overflow:hidden; border:1px solid var(--line); border-radius:var(--radius-sm); background:#fff; }
.real-estate-region-head { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; padding:12px 14px; border-bottom:1px solid var(--line); background:var(--fill); }
.real-estate-region-head h3 { margin:0 0 3px; font-size:16px; letter-spacing:-.01em; }
.real-estate-region-head div>span,.real-estate-region-head>span { color:var(--muted); font-size:12px; line-height:1.45; }
.real-estate-region-head>span { flex:none; max-width:38%; text-align:right; }
.real-estate-region .macro-metrics { border:0; border-radius:0; }
.metric-context { display:block; margin-top:4px; color:var(--ink); font-size:12px; font-style:normal; font-weight:650; }
.market-board.fx-board { grid-template-columns:repeat(3,minmax(0,1fr)); }
.market-board .valuation-loading,.market-board .empty { grid-column:1/-1; background:#fff; }
.market-quote-card {
  min-width:0; padding:12px; color:var(--ink); background:#fff; cursor:pointer;
}
.market-quote-card:hover,.market-quote-card:focus-visible { background:#f7faff; outline:none; box-shadow:inset 0 -2px 0 var(--blue); }
.market-quote-head { display:flex; align-items:baseline; justify-content:space-between; gap:8px; }
.market-quote-head span { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:var(--muted); font-size:13px; font-weight:700; }
.market-quote-head small { flex:none; color:var(--muted); font-size:11px; }
.market-quote-card>strong { display:block; margin:7px 0 5px; font-size:24px; font-weight:700; letter-spacing:-.03em; }
.market-quote-move { min-height:30px; display:flex; align-items:center; justify-content:space-between; gap:8px; font-size:14px; font-weight:700; }
.market-quote-move .sparkline { width:84px; height:28px; }
.market-quote-card>em { display:block; margin-top:7px; color:var(--muted); font-size:12px; font-style:normal; }

.treasury-curve { position:relative; margin-bottom:12px; min-height:280px; border:1px solid var(--line); background:#fff; border-radius:var(--radius-sm); overflow:hidden; }
.treasury-curve .empty,.treasury-curve .valuation-loading { padding:28px 12px; text-align:center; }
.treasury-curve-chart { width:100%; height:280px; }

.calendar-layout { display:grid; grid-template-columns:minmax(0,1.4fr) minmax(300px,.86fr); gap:24px; align-items:start; }
.calendar-board { display:flex; flex-direction:column; min-height:0; align-self:start; }
.calendar-month-head { margin-bottom:8px; display:flex; align-items:center; justify-content:space-between; gap:8px; }
.calendar-month-head strong { font-size:17px; letter-spacing:-.02em; }
.calendar-weekdays,.calendar-grid { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:6px; }
.calendar-weekdays {
  margin-bottom:6px; color:var(--muted); font-size:13px; font-weight:700; text-align:center;
  /* 中文字体靠前，避免 Segoe UI 把「一」「二」画成短横和等号 */
  font-family:"Microsoft YaHei","PingFang SC","Noto Sans SC",sans-serif;
}
.calendar-weekdays span {
  display:grid; place-items:center; min-height:24px; padding:3px 0; line-height:1;
  overflow:hidden; white-space:nowrap;
  background:var(--fill); border-radius:4px;
}
.calendar-grid { border:0; background:transparent; overflow:visible; }
.calendar-cell {
  min-width:0; min-height:86px; padding:7px 6px 6px; display:flex; flex-direction:column; gap:6px;
  color:var(--ink); background:transparent; border:0; border-radius:8px; text-align:left;
}
.calendar-cell.is-weekend { background:#fafbfc; }
.calendar-cell.is-muted,.calendar-cell.is-muted.is-weekend { color:#d0d0d0; background:transparent; }
.calendar-cell strong {
  width:24px; height:24px; display:grid; place-items:center;
  font-size:13px; font-weight:700; border-radius:50%;
}
.calendar-cell.is-today strong { color:#fff; background:var(--blue); }
.calendar-cell.is-selected { background:#eef4ff; box-shadow:inset 0 0 0 1px #c9dcff; }
.calendar-cell.is-selected strong { color:var(--ink); background:transparent; }
.calendar-cell.is-selected.is-today strong { color:#fff; background:var(--blue); }
.calendar-cell.has-events { background:transparent; box-shadow:none; }
.calendar-cell.has-events.is-weekend { background:#fafbfc; }
.calendar-cell.is-selected.has-events,.calendar-cell.is-selected.is-weekend { background:#eef4ff; box-shadow:inset 0 0 0 1px #c9dcff; }
.calendar-cell:hover:not(:disabled):not(.is-selected) { background:#f7faff; }
.calendar-cell:focus-visible { outline:none; box-shadow:inset 0 0 0 1px var(--blue); }
.calendar-cell.is-selected:focus-visible { box-shadow:inset 0 0 0 1px var(--blue); }
.calendar-cell small { display:flex; flex-direction:column; align-items:stretch; gap:4px; min-width:0; }
.cal-ico { width:12px; height:12px; flex:none; fill:none; stroke:currentColor; stroke-width:1.4; stroke-linecap:round; stroke-linejoin:round; }
#calendarFilters .heat-tab { display:inline-flex; align-items:center; gap:5px; }
#calendarFilters .cal-ico { width:12px; height:12px; }
.cal-mark {
  display:inline-flex; align-items:center; gap:4px;
  color:var(--muted); font-size:12px; font-weight:650; line-height:1.2;
}
.cal-mark b { font-weight:700; }
.cal-mark em { font-style:normal; }
.cal-mark.earnings { color:var(--blue); }
.cal-mark.macro { color:var(--amber); }
.calendar-cell .cal-mark {
  max-width:100%; padding:2px 5px; border-radius:4px; font-size:11px;
}
.calendar-cell .cal-mark.earnings { background:#eef4ff; }
.calendar-cell .cal-mark.macro { background:#fbf6e8; }
.calendar-cell .cal-mark em { display:none; }
.calendar-legend { margin-top:12px; display:flex; flex-wrap:wrap; gap:8px 16px; color:var(--muted); font-size:13px; }
.calendar-legend .cal-mark { gap:6px; font-weight:650; }
.calendar-legend .cal-mark em { display:inline; }
.calendar-agenda { display:flex; flex-direction:column; min-height:0; padding:2px 2px 0 20px; border-left:1px solid var(--line); overflow:hidden; }
.calendar-agenda .empty { padding:16px 0; text-align:left; }
.agenda-head { flex:0 0 auto; margin-bottom:10px; padding-bottom:10px; border-bottom:1px solid var(--line); }
.agenda-list { flex:1 1 auto; min-height:0; overflow-y:auto; padding-right:4px; scrollbar-gutter:stable; }
.agenda-list::-webkit-scrollbar { width:6px; }
.agenda-list::-webkit-scrollbar-thumb { background:#d8e0db; border-radius:999px; }
.agenda-list::-webkit-scrollbar-track { background:transparent; }
.agenda-head strong { font-size:17px; letter-spacing:-.02em; }
.agenda-item { padding:10px 4px; display:grid; grid-template-columns:44px minmax(0,1fr) auto; gap:10px; align-items:center; border-bottom:1px solid var(--line); }
.agenda-item.is-watchlist,.agenda-item.is-pin { background:#f7faff; border-radius:8px; border-bottom-color:transparent; margin:4px 0; padding:10px 8px; }
.agenda-item strong,.agenda-item small { display:block; }
.agenda-item small { margin-top:2px; color:var(--muted); font-size:13px; }
.agenda-kind { display:flex; flex-direction:column; align-items:center; gap:3px; }
.agenda-kind em { color:var(--muted); font-size:12px; font-style:normal; font-weight:700; }
.agenda-kind em.earnings { color:var(--blue); }
.agenda-kind em.macro,.agenda-kind em.fomc { color:var(--amber); }
.agenda-face {
  width:32px; height:32px; display:grid; place-items:center;
  color:var(--muted); background:var(--fill); border:1px solid var(--line); border-radius:8px;
}
.agenda-face .cal-ico { width:15px; height:15px; }
.agenda-face.earnings { color:var(--blue); background:#eef4ff; border-color:#d7e4ff; }
.agenda-face.macro { color:var(--amber); background:#fbf6e8; border-color:#ead9a8; }
.agenda-face.fomc { color:#6b4f12; background:#fbf6e8; border-color:#ead9a8; }
.agenda-face .company-logo { width:32px; height:32px; border:0; }
.agenda-session {
  padding:3px 7px; color:var(--muted); background:var(--fill);
  font-size:13px; font-weight:650; white-space:nowrap;
}

.asset-rank-table { width:100%; border-collapse:collapse; }
.asset-rank-table th,.asset-rank-table td { padding:8px 10px; border-bottom:1px solid var(--line); text-align:left; }
.asset-rank-table th { color:var(--muted); background:var(--fill); font-size:13px; font-weight:650; }
.asset-rank-table .num { text-align:right; }
.asset-rank-table .up { color:var(--green); }
.asset-rank-table .down { color:var(--red); }

.instrument-list {
  display:grid; grid-template-columns:repeat(3,1fr);
  border-top:1px solid var(--line);
}
.instrument-row {
  min-width:0; min-height:58px; padding:10px 12px;
  display:grid; grid-template-columns:minmax(90px,1fr) 64px auto;
  align-items:center; gap:10px; border-bottom:1px solid var(--line); border-right:1px solid var(--line);
}
.instrument-row:hover { background:#fafafa; }
.instrument-row>div:first-child strong,.instrument-row>div:first-child small { display:block; }
.instrument-row>div:first-child strong { color:var(--blue); font-size:15px; font-weight:700; }
.instrument-row>div:first-child small { margin-top:2px; color:var(--muted); font-size:13px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.instrument-price { text-align:right; }
.instrument-price strong,.instrument-price span { display:block; }
.instrument-price strong { font-size:15px; font-weight:700; }
.instrument-price span { margin-top:2px; font-size:14px; font-weight:700; }
.instrument-price.up strong,.instrument-price.up span,.ticker .quote-value.up,.brief-stat strong.up { color:var(--green); }
.instrument-price.down strong,.instrument-price.down span,.ticker .quote-value.down,.brief-stat strong.down { color:var(--red); }

.table-wrap { overflow-x:auto; margin:0; border:1px solid var(--line); }
table { width:100%; border-collapse:collapse; font-size:15px; }
th {
  height:40px; padding:0 12px; color:var(--muted); background:var(--fill);
  text-align:left; font-size:14px; font-weight:600; letter-spacing:0; text-transform:none;
}
th,td { padding:11px 12px; border-bottom:1px solid var(--line); white-space:nowrap; }
tbody tr:hover { background:#fafafa; }
.watchlist-table { min-width:1810px; }
.quote-price small { display:block; margin-top:1px; font-size:12px; font-weight:600; }
.watchlist-table .num,.period-cell,.valuation-cell,.quote-price { text-align:right; }
.spark-cell { width:84px; padding-left:8px; padding-right:8px; }
.spark-cell .sparkline { width:72px; height:20px; }
.volume-cell { font-variant-numeric:tabular-nums; }
.cap-cell { color:#3a3a3c; font-weight:650; }
.watchlist-table th:first-child,.watchlist-table td:first-child { position:sticky; left:0; z-index:1; min-width:188px; background:#fff; box-shadow:1px 0 0 var(--line); }
.watchlist-table thead th:first-child { z-index:2; background:var(--fill); }
.watchlist-table tbody tr:hover td:first-child { background:#fafafa; }
.company-identity { display:flex; align-items:center; gap:8px; min-width:0; }
.company-logo {
  position:relative; width:24px; height:24px; flex:0 0 24px;
  display:grid; place-items:center; overflow:hidden;
  color:#111; background:var(--fill); border:1px solid var(--line); border-radius:8px; font-size:10px; font-weight:800;
}
.company-logo img { position:absolute; inset:0; width:100%; height:100%; padding:2px; object-fit:contain; background:#fff; }
.company-logo img.logo-failed { display:none; }
.symbol-cell strong { display:block; color:var(--ink); font-size:15px; font-weight:700; }
.symbol-cell small { display:block; max-width:142px; margin-top:1px; overflow:hidden; text-overflow:ellipsis; color:var(--muted); font-size:13px; }
.quote-price,.period-cell,.valuation-cell { font-size:14px; font-weight:650; }
.valuation-cell { color:#3a3a3c; }
.valuation-cell.down { color:var(--red); }
.data-time { color:var(--muted); font-size:13px; }
.muted-value { color:#b0b0b5; }
.earnings-date-cell { color:#3a3a3c; font-size:14px; font-weight:650; font-variant-numeric:tabular-nums; }
.watchlist-table td.period-cell.up { color:var(--green); background:rgba(0,135,90,var(--heat,0)); }
.watchlist-table td.period-cell.down { color:var(--red); background:rgba(217,45,32,var(--heat,0)); }
.watchlist-table td.period-cell.flat { color:var(--muted); background:transparent; }

.institution-heading { align-items:flex-end; }
#institutions { scroll-margin-top:112px; }
.institution-heading>div:first-child h2 { margin-bottom:3px; }
.institution-tabs { display:flex; flex-wrap:wrap; justify-content:flex-end; border:1px solid var(--line); border-radius:var(--radius-sm); overflow:hidden; }
.institution-tab { min-height:34px; padding:6px 12px; color:#3a3a3c; background:#fff; border:0; border-right:1px solid var(--line); font-size:13px; font-weight:650; cursor:pointer; }
.institution-tab:last-child { border-right:0; }
.institution-tab:hover { color:var(--blue); background:#f7faff; }
.institution-tab.active { color:#fff; background:#111; }
.institution-summary { display:grid; grid-template-columns:minmax(220px,.7fr) minmax(0,1.3fr); gap:28px; align-items:stretch; margin-bottom:14px; }
.institution-profile { min-width:0; padding:16px 18px; color:#fff; background:#111; }
.institution-profile span { display:inline-block; padding:2px 7px; border:1px solid rgba(255,255,255,.28); border-radius:999px; color:#d7d7d7; font-size:11px; font-weight:750; letter-spacing:.06em; }
.institution-profile strong { display:block; margin-top:18px; overflow:hidden; text-overflow:ellipsis; font-size:21px; line-height:1.25; white-space:nowrap; }
.institution-profile small { display:block; margin-top:5px; color:#bdbdbd; font-size:13px; }
.institution-metrics { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); border-top:1px solid var(--line); border-left:1px solid var(--line); }
.institution-metrics>div { min-width:0; padding:14px 16px; border-right:1px solid var(--line); border-bottom:1px solid var(--line); }
.institution-metrics span,.institution-metrics strong { display:block; }
.institution-metrics span { color:var(--muted); font-size:12px; }
.institution-metrics strong { margin-top:8px; overflow:hidden; text-overflow:ellipsis; color:var(--ink); font-size:18px; white-space:nowrap; }
.institution-table { min-width:1040px; }
.institution-table .num { text-align:right; }
.institution-name strong,.institution-name small { display:block; }
.institution-name strong { max-width:360px; overflow:hidden; text-overflow:ellipsis; font-size:14px; }
.institution-name small { margin-top:2px; color:var(--muted); font-size:11px; letter-spacing:.04em; }
.institution-value { font-weight:650; }
.institution-weight { position:relative; width:142px; height:22px; margin-left:auto; overflow:hidden; background:var(--fill); }
.institution-weight i { position:absolute; inset:0 auto 0 0; width:var(--weight); background:rgba(0,135,90,.16); }
.institution-weight b { position:relative; z-index:1; display:block; padding:2px 7px; color:var(--green); font-size:12px; line-height:18px; text-align:right; }
.institution-comparison { grid-column:1/-1; display:flex; align-items:center; justify-content:space-between; gap:16px; padding:10px 14px; border:1px solid var(--line); background:#fafafa; }
.institution-comparison>strong { color:var(--ink); font-size:13px; }
.institution-comparison>div { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:7px; }
.institution-comparison span { padding:3px 8px; color:var(--muted); background:#fff; border:1px solid var(--line); border-radius:999px; font-size:11px; }
.institution-comparison span b { color:var(--ink); }
.institution-change { min-width:132px; }
.institution-change small { display:block; margin-top:3px; color:var(--muted); font-size:11px; white-space:nowrap; }
.institution-change-badge { display:inline-block; padding:3px 8px; border-radius:999px; font-size:11px; font-weight:700; white-space:nowrap; }
.institution-change-badge.new,.institution-change-badge.increased { color:var(--green); background:rgba(0,135,90,.1); }
.institution-change-badge.reduced,.institution-change-badge.exited { color:var(--red); background:rgba(217,45,32,.09); }
.institution-change-badge.unchanged,.institution-change-badge.unavailable { color:var(--muted); background:var(--fill); }
.institution-row-exited { background:#fffafa; }
.institution-row-exited .institution-name strong,.institution-row-exited .institution-value { color:var(--muted); }

.news-list { display:grid; grid-template-columns:1fr 1fr; column-gap:32px; }
.news-list .empty { grid-column:1/-1; }
.news-item {
  display:grid; grid-template-columns:auto 1fr auto; gap:10px; align-items:start;
  padding:12px 0; border-bottom:1px solid var(--line);
}
.news-main { display:flex; align-items:flex-start; gap:12px; min-width:0; }
.news-main .news-copy { min-width:0; flex:1; }
.news-item:last-child { border-bottom:0; }
.news-category {
  min-width:40px; padding:0; color:var(--muted); background:transparent;
  border-radius:0; font-size:13px; font-weight:650; text-align:left;
}
.news-copy a { color:inherit; text-decoration:none; }
.news-copy a:hover strong { color:var(--blue); }
.news-copy strong { display:block; font-size:18px; font-weight:650; line-height:1.45; }
.news-original { display:block; margin-top:3px; color:var(--muted); font-size:13px; line-height:1.4; }
.news-copy p { margin:4px 0 0; color:var(--muted); font-size:13px; }
.news-item time { color:var(--muted); font-size:13px; white-space:nowrap; }

.heat-heading { align-items:center; }
.heat-controls { display:flex; align-items:center; }
.heat-tabs { display:flex; border:1px solid var(--line); background:#fff; border-radius:var(--radius-sm); overflow:hidden; }
.heat-tab { min-width:52px; padding:6px 12px; color:#3a3a3c; background:transparent; border:0; font-size:14px; font-weight:650; }
.heat-tab:hover { color:var(--blue); }
.heat-tab.active { color:#fff; background:#111; }
.heat-source { margin:-6px 0 12px; color:var(--muted); font-size:14px; }
.tradingview-heatmap { position:relative; height:520px; overflow:hidden; border:1px solid var(--line); background:#fff; border-radius:var(--radius-sm); }
.tradingview-heatmap .tradingview-widget-container,
.tradingview-heatmap .tradingview-widget-container__widget { width:100%; height:100%; }
.tradingview-heatmap iframe { display:block; width:100%!important; height:100%!important; border:0!important; }
.tradingview-heatmap .tradingview-widget-copyright { position:absolute; right:8px; bottom:3px; z-index:2; font-size:12px; }
.tradingview-heatmap .tradingview-widget-copyright a { color:var(--muted); text-decoration:none; }
.heatmap-loading { position:absolute; inset:0; display:grid; place-items:center; color:var(--muted); background:#fff; font-size:14px; }
.sector-heatmap { display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:6px; }
.sector-tile { min-width:0; min-height:82px; padding:10px; border-radius:var(--radius-sm); display:flex; flex-direction:column; justify-content:space-between; color:#fff; }
.sector-tile div { display:flex; justify-content:space-between; gap:5px; }
.sector-tile strong { min-width:0; font-size:14px; overflow-wrap:anywhere; }
.sector-tile span,.sector-tile small { color:rgba(255,255,255,.8); font-size:12px; }
.sector-tile b { font-size:18px; font-weight:700; }
.sector-tile .sector-leader { margin:6px -4px -4px; padding:6px 4px 2px; align-items:center; border-top:1px solid rgba(255,255,255,.2); }
.sector-leader span { max-width:72%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.sector-leader strong { padding:2px 6px; background:rgba(0,0,0,.2); border-radius:2px; font-size:12px; }

.system-strip {
  margin-top:20px; padding:12px 0 0;
  display:flex; justify-content:space-between; gap:16px;
  border-top:1px solid var(--line); color:var(--muted); font-size:14px;
}
.system-strip>div:first-child { display:flex; align-items:center; gap:8px; }
.system-strip strong { color:#111; }
.system-strip small { color:var(--muted); }
.system-meta { display:flex; gap:20px; }
.system-meta strong { color:#111; margin-left:4px; }
.status-dot { width:8px; height:8px; border-radius:50%; background:#34c759; flex:none; }

.banner { padding:10px 12px; margin-bottom:16px; color:#7d5a1e; background:#fff7e3; border:1px solid #e3cf9d; border-radius:var(--radius); font-size:14px; }
.hidden { display:none!important; }
.empty { padding:28px; color:var(--muted); text-align:center; font-size:15px; }
.skeleton { height:10px; width:60%; margin:14px 0; border-radius:2px; background:linear-gradient(90deg,#eee,#f6f6f6,#eee); background-size:200%; animation:shimmer 1.2s infinite; }
.skeleton.wide { width:90%; }
@keyframes shimmer { to { background-position:-200% 0; } }

dialog { width:min(480px,calc(100% - 32px)); border:1px solid var(--line); border-radius:16px; padding:0; background:#fff; color:var(--ink); box-shadow:0 16px 48px rgba(0,0,0,.18); }
dialog::backdrop { background:rgba(13,13,13,.45); }
.dialog-head { display:flex; justify-content:space-between; align-items:flex-start; margin-bottom:16px; }
dialog form { padding:20px; }
dialog label { display:block; margin-bottom:8px; font-size:14px; font-weight:700; }
textarea,.stock-search input { width:100%; border:1px solid #ccc; border-radius:var(--radius-sm); }
textarea { padding:10px; resize:vertical; line-height:1.6; }
textarea:focus,.stock-search input:focus { outline:2px solid rgba(18,95,212,.2); border-color:var(--blue); }
.dialog-actions { display:flex; justify-content:flex-end; gap:8px; margin-top:16px; }
.watchlist-dialog { width:min(620px,calc(100% - 32px)); }
.stock-search { position:relative; }
.stock-search input { height:40px; padding:0 88px 0 10px; background:#fff; }
.stock-search span { position:absolute; right:12px; top:50%; color:var(--muted); font-size:13px; transform:translateY(-50%); }
.stock-search-results { max-height:230px; margin-top:6px; overflow:auto; border:1px solid var(--line); border-radius:var(--radius-sm); }
.stock-search-results:empty { display:none; }
.stock-result,.watchlist-editor-item {
  width:100%; display:flex; align-items:center; justify-content:space-between; gap:12px;
  min-height:52px; padding:8px 10px; border:0; border-bottom:1px solid var(--line);
  background:#fff; text-align:left;
}
.stock-result:hover,.stock-result:focus-visible,.watchlist-editor-item:hover { background:#f7faff; outline:none; }
.stock-result strong,.watchlist-editor-item strong { display:block; font-size:15px; }
.stock-result small,.watchlist-editor-item small { display:block; margin-top:2px; color:var(--muted); font-size:13px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.stock-result em { color:var(--blue); font-size:14px; font-style:normal; }
.stock-result.is-added { cursor:default; background:var(--fill); }
.stock-result.is-added em { color:var(--muted); }
.watchlist-editor-head { display:flex; justify-content:space-between; margin:18px 0 6px; color:var(--muted); font-size:14px; }
.watchlist-editor-items { max-height:250px; overflow:auto; border:1px solid var(--line); border-radius:var(--radius-sm); }
.watchlist-order-actions { display:flex; align-items:center; gap:6px; flex:none; }
.order-stock { width:28px; height:28px; padding:0; color:#111; background:var(--fill); border:1px solid var(--line); border-radius:8px; font-size:16px; }
.order-stock:hover:not(:disabled) { color:var(--blue); background:#eef4ff; }
.order-stock:disabled { color:#c7c7cc; cursor:not-allowed; }
.remove-stock { padding:4px 8px; color:var(--red); background:#fff; border:1px solid #f2c9c6; border-radius:var(--radius-sm); font-size:13px; }
.remove-stock:hover { background:#fff5f5; }
.editor-empty,.search-empty { padding:16px; color:var(--muted); font-size:14px; text-align:center; }

.valuation-dialog { width:min(900px,calc(100% - 32px)); }
.valuation-dialog-body { padding:20px; }
.chart-toolbar { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:12px; }
.chart-toolbar a { color:var(--blue); font-size:14px; text-decoration:none; }
.range-tabs { display:flex; border:1px solid var(--line); border-radius:var(--radius-sm); overflow:hidden; }
.range-tabs button { padding:6px 12px; color:#3a3a3c; background:#fff; border:0; font-size:14px; }
.range-tabs button.active { color:#fff; background:#111; }
.range-tabs button:disabled { color:#c7c7cc; cursor:not-allowed; text-decoration:line-through; }
.valuation-stats { display:grid; grid-template-columns:repeat(5,1fr); gap:1px; margin-bottom:12px; background:var(--line); border:1px solid var(--line); border-radius:var(--radius-sm); overflow:hidden; }
.valuation-stats>div { padding:10px 12px; background:var(--fill); }
.valuation-stats>div>span,.valuation-stats>div>strong { display:block; }
.valuation-stats>div>span { color:var(--muted); font-size:13px; }
.valuation-stats>div>strong { margin-top:4px; font-size:18px; }
.valuation-dialog.is-earnings { width:min(940px,calc(100% - 32px)); max-height:calc(100vh - 32px); overflow:hidden; }
.valuation-dialog.is-earnings .valuation-dialog-body { max-height:calc(100vh - 32px); overflow-y:auto; }
.valuation-dialog.is-earnings .chart-toolbar { justify-content:flex-end; }
.valuation-dialog.is-earnings .valuation-stats { display:block; margin-bottom:14px; background:transparent; border:0; border-radius:0; overflow:visible; }
.earnings-verdict { display:flex!important; align-items:center; justify-content:space-between; gap:16px; padding:14px 16px!important; border:1px solid var(--line); border-left:4px solid var(--muted); background:var(--fill)!important; }
.earnings-verdict.positive { border-left-color:var(--green); background:rgba(0,135,90,.055)!important; }
.earnings-verdict.negative { border-left-color:var(--red); background:rgba(217,45,32,.05)!important; }
.earnings-verdict>div { padding:0!important; background:transparent!important; }
.earnings-verdict span,.earnings-verdict strong,.earnings-verdict small { display:block; }
.earnings-verdict span { color:var(--muted); font-size:12px; }
.earnings-verdict strong { margin-top:5px; color:var(--ink); font-size:20px; line-height:1.25; }
.earnings-verdict small { margin-top:5px; color:var(--green); font-size:12px; font-weight:650; }
.earnings-verdict>i { display:grid; width:38px; height:38px; flex:0 0 38px; place-items:center; color:#fff; background:var(--muted); border-radius:50%; font-size:20px; font-style:normal; font-weight:800; }
.earnings-verdict.positive>i { background:var(--green); }
.earnings-verdict.negative>i { background:var(--red); }
.earnings-comparison-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; margin-top:12px; }
.earnings-metric-card { min-width:0; padding:14px 16px; border:1px solid var(--line); background:#fff; }
.earnings-metric-head { display:flex; align-items:center; justify-content:space-between; gap:10px; }
.earnings-metric-head>span { color:var(--muted); font-size:12px; font-weight:650; }
.earnings-metric-card>strong { display:block; margin-top:7px; color:var(--ink); font-size:26px; line-height:1; }
.earnings-surprise-badge { display:inline-block; padding:3px 7px; border-radius:999px; color:var(--muted); background:var(--fill); font-size:11px; font-weight:750; white-space:nowrap; }
.earnings-surprise-badge.up { color:var(--green); background:rgba(0,135,90,.1); }
.earnings-surprise-badge.down { color:var(--red); background:rgba(217,45,32,.09); }
.earnings-comparison-bars { margin-top:14px; }
.earnings-comparison-bars>div { display:grid; grid-template-columns:52px minmax(70px,1fr) auto; align-items:center; gap:8px; margin-top:7px; }
.earnings-comparison-bars span,.earnings-comparison-bars em { color:var(--muted); font-size:11px; font-style:normal; }
.earnings-comparison-bars em { min-width:60px; color:var(--ink); text-align:right; }
.earnings-comparison-bars i { height:6px; overflow:hidden; background:#e9edf1; border-radius:999px; }
.earnings-comparison-bars i b { display:block; height:100%; background:var(--blue); border-radius:inherit; }
.earnings-comparison-bars .estimate i b { background:#aeb7c2; }
.earnings-secondary-stats { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); margin-top:12px; border:1px solid var(--line); }
.earnings-secondary-stats>div { padding:10px 14px!important; background:var(--fill)!important; border-right:1px solid var(--line); }
.earnings-secondary-stats>div:last-child { border-right:0; }
.earnings-secondary-stats span,.earnings-secondary-stats strong { display:block; }
.earnings-secondary-stats span { color:var(--muted); font-size:11px; }
.earnings-secondary-stats strong { margin-top:4px; color:var(--ink); font-size:16px; }
.earnings-history-head { display:flex; align-items:flex-end; justify-content:space-between; gap:12px; padding:14px 0 8px; }
.earnings-history-head strong { font-size:15px; }
.earnings-history-head span { color:var(--muted); font-size:11px; }
.earnings-history-metric strong,.earnings-history-metric small { display:block; }
.earnings-history-metric strong { color:var(--ink); font-size:14px; }
.earnings-history-metric small { margin-top:3px; color:var(--muted); font-size:11px; }
.earnings-history-inline-surprise { display:none; }
.valuation-chart { position:relative; min-height:300px; border:1px solid var(--line); background:#fff; border-radius:var(--radius-sm); }
.valuation-chart svg { display:block; width:100%; height:auto; touch-action:none; }
.chart-grid line { stroke:#eee; }
.chart-grid text,.chart-dates text { fill:var(--muted); font-size:12px; }
.chart-area { fill:rgba(18,95,212,.08); }
.chart-line { fill:none; stroke:var(--blue); stroke-width:2; vector-effect:non-scaling-stroke; }
.chart-overlay { stroke:#8b95a1; stroke-width:1.6; stroke-dasharray:5 4; }
.chart-dca { stroke:var(--amber); stroke-width:1.6; stroke-dasharray:5 4; }
.chart-bottom { stroke:var(--green); stroke-width:1.6; stroke-dasharray:5 4; }
.chart-last,.chart-hover circle { fill:var(--blue); stroke:#fff; stroke-width:2; }
.chart-hover line { stroke:#999; stroke-dasharray:3 3; }
.chart-tooltip { position:absolute; z-index:2; min-width:84px; padding:7px 9px; color:#fff; background:#111; border-radius:var(--radius-sm); transform:translate(-50%,calc(-100% - 10px)); pointer-events:none; }
.chart-tooltip strong,.chart-tooltip span,.chart-tooltip em { display:block; }
.chart-tooltip em { margin-top:2px; color:#d2d6dc; font-size:13px; font-style:normal; }
.chart-tooltip em:empty { display:none; }
.chart-tooltip span { margin-top:2px; color:#c7c7cc; font-size:13px; }
.chart-legend { display:flex; flex-wrap:wrap; gap:14px; padding:0 12px 10px; color:var(--muted); font-size:13px; }
.chart-legend i { display:inline-block; width:14px; height:2px; margin:0 6px 3px 0; vertical-align:middle; background:var(--blue); }
.chart-legend .chart-legend-ma { height:0; background:transparent; border-top:2px dashed #8b95a1; }
.chart-legend .chart-legend-dca { height:0; background:transparent; border-top:2px dashed var(--amber); }
.chart-legend .chart-legend-bottom { height:0; background:transparent; border-top:2px dashed var(--green); }
.valuation-methodology { margin:12px 0 0; color:var(--muted); font-size:13px; line-height:1.6; }

.toast { position:fixed; right:20px; bottom:20px; padding:10px 14px; color:#fff; background:#111; border-radius:var(--radius); font-size:14px; opacity:0; transform:translateY(8px); pointer-events:none; transition:.2s; }
.toast.show { opacity:1; transform:none; }

.icon-btn span { display:inline-block; }
.icon-btn.is-loading span { animation:buttonSpin .8s linear infinite; }
.market-status i { animation:statusPulse 2s ease-out infinite; }
@keyframes statusPulse { 0% { box-shadow:0 0 0 0 rgba(52,199,89,.5); } 70% { box-shadow:0 0 0 5px rgba(52,199,89,0); } 100% { box-shadow:0 0 0 0 rgba(52,199,89,0); } }
@keyframes trendFlashUp { 0%,100% { background-color:transparent; box-shadow:none; } 42% { background-color:rgba(0,168,62,.22); box-shadow:0 0 0 2px rgba(0,168,62,.14); } }
@keyframes trendFlashDown { 0%,100% { background-color:transparent; box-shadow:none; } 42% { background-color:rgba(225,37,37,.18); box-shadow:0 0 0 2px rgba(225,37,37,.12); } }
.flash-up { animation:trendFlashUp .7s ease; border-radius:var(--radius-sm); }
.flash-down { animation:trendFlashDown .7s ease; border-radius:var(--radius-sm); }
.ticker-price.flash-up,.ticker-price.flash-down,.ticker-change.flash-up,.ticker-change.flash-down { padding:0 2px; margin:0 -2px; }
.watchlist-card-price.flash-up,.watchlist-card-price.flash-down { display:inline-block; padding:0 4px; margin:0 -4px; }
@keyframes buttonSpin { to { transform:rotate(360deg); } }
@keyframes fearNeedleSwing {
  0% { transform: rotate(0deg); }
  42% { transform: rotate(calc(var(--needle-deg) * 1.12 * 1deg)); }
  62% { transform: rotate(calc(var(--needle-deg) * .94 * 1deg)); }
  78% { transform: rotate(calc(var(--needle-deg) * 1.04 * 1deg)); }
  100% { transform: rotate(calc(var(--needle-deg) * 1deg)); }
}

@media (min-width:1101px) {
  /* 桌面端工具栏一行、导航独占下一行，避免多语言菜单被搜索框裁切 */
  .masthead-inner { flex-wrap:wrap; gap:8px 12px; padding:6px 0; }
  .brand { order:1; }
  .nav-toggle { order:2; }
  .masthead-search { order:3; flex:1 1 160px; width:auto; max-width:280px; margin-left:auto; }
  .masthead-tools { order:4; margin-left:0; gap:8px; }
  .masthead nav { order:5; width:100%; flex:unset; height:44px; border-top:1px solid #2a2a2a; }
  .auth-name { max-width:112px; }
  .module-nav { top:100px; }
}
@media (max-width:1200px) {
  .brand strong { display:none; }
}
@media (max-width:1100px) {
  .hero-grid,.instrument-list,.calendar-layout,.earnings-grid { grid-template-columns:1fr; }
  .official-data-grid { grid-template-columns:1fr; }
  .calendar-agenda { border-left:0; border-top:1px solid var(--line); padding-left:0; padding-top:16px; max-height:none; overflow:visible; }
  .agenda-list { max-height:420px; }
}
@media (max-width:900px) {
  .valuation-grid { grid-template-columns:1fr; }
  .valuation-index,.valuation-index.is-mainland { grid-column:1/-1; }
  .valuation-metrics,.valuation-metrics.cols-2,.btc-cycle-grid,.macro-metrics,.macro-metrics.cols-2,.macro-metrics.cols-3 { grid-template-columns:1fr; }
  .valuation-metric,.btc-cycle-card,.macro-metrics .valuation-metric { border-right:0; border-bottom:1px solid var(--line); }
  .crypto-metric-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .macro-metrics .valuation-metric:nth-child(5n),.macro-metrics .valuation-metric:nth-last-child(-n+5),
  .macro-metrics.cols-2 .valuation-metric:nth-last-child(-n+2),
  .macro-metrics.cols-3 .valuation-metric:nth-last-child(-n+3) { border-bottom:1px solid var(--line); }
  .macro-metrics .valuation-metric:last-child { border-bottom:0; }
  .valuation-stats { grid-template-columns:repeat(2,1fr); }
  .sector-heatmap { grid-template-columns:repeat(3,1fr); }
  .market-board,.market-board.fx-board { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width:680px) {
  .masthead { overflow-x:clip; }
  .masthead-tools { width:100%; flex:1 1 100%; margin-left:0; overflow-x:auto; scrollbar-width:none; }
  .masthead-tools::-webkit-scrollbar { display:none; }
  .real-estate-panel { scroll-margin-top:148px; }
  .real-estate-region-head { flex-direction:column; gap:5px; }
  .real-estate-region-head>span { max-width:none; text-align:left; }
  .crypto-metric-grid { grid-template-columns:1fr; }
  .crypto-group-head { align-items:flex-start; }
  .crypto-group-head div>span { display:block; max-width:260px; }
  .crypto-source-meta { align-items:flex-end; flex-direction:column; }
  .masthead-tools .feed-tag,.masthead-tools .updated,.header-actions .primary-btn { display:none; }
  .section-heading .subtle { flex:1 1 100%; margin-left:0; white-space:normal; }
  .quote-tape .tape-note { display:none; }
  .news-list,.hero-grid { grid-template-columns:1fr; }
  .system-strip,.system-meta { flex-direction:column; }
  .tradingview-heatmap { height:420px; }
  .sector-heatmap { grid-template-columns:repeat(2,1fr); }
  .valuation-dialog-body { padding:16px; }
  .valuation-dialog.is-earnings { width:calc(100% - 16px); }
  .valuation-dialog.is-earnings .dialog-head { margin-bottom:12px; }
  .valuation-dialog.is-earnings .chart-toolbar { margin-bottom:10px; }
  .earnings-verdict { padding:12px!important; }
  .earnings-verdict strong { font-size:17px; }
  .earnings-comparison-grid { grid-template-columns:1fr; gap:8px; margin-top:8px; }
  .earnings-metric-card { padding:12px; }
  .earnings-metric-card>strong { font-size:23px; }
  .earnings-secondary-stats { margin-top:8px; }
  .earnings-secondary-stats>div { padding:9px 8px!important; }
  .earnings-secondary-stats strong { font-size:14px; }
  .earnings-history-head { padding-top:12px; }
  .earnings-history-table { min-width:0; font-size:12px; }
  .earnings-history-table th,.earnings-history-table td { padding:9px 7px; }
  .earnings-history-table th:first-child { width:78px; }
  .earnings-history-table th:nth-child(2),.earnings-history-table th:nth-child(4) { width:auto; }
  .earnings-history-surprise-col { display:none; }
  .earnings-history-inline-surprise { display:block; margin-top:5px; }
  .earnings-history-metric strong { font-size:13px; }
  .earnings-history-metric small { font-size:10px; }
  .valuation-chart { min-height:190px; }
  .calendar-weekdays,.calendar-grid { gap:3px; }
  .calendar-cell { min-height:68px; padding:5px 3px 4px; gap:4px; }
  .calendar-cell strong { width:22px; height:22px; font-size:12px; }
  .calendar-cell .cal-mark { padding:1px 4px; font-size:10px; gap:2px; }
  .calendar-cell .cal-ico { width:10px; height:10px; }
  .market-board,.market-board.fx-board { grid-template-columns:1fr; }
  .btc-treasury-head { align-items:flex-start; flex-direction:column; }
  .btc-treasury-head .institution-tabs { width:100%; }
  .btc-treasury-head .institution-tab { flex:1; }
  .module-nav { top:88px; }
  .module-nav-inner { width:100%; padding:0 12px; overflow-x:auto; scrollbar-width:none; }
  .module-group { position:static; }
  .module-group summary { padding-left:10px; padding-right:10px; }
  .module-group>div { position:absolute; top:100%; left:12px; right:12px; min-width:0; max-height:50vh; overflow:auto; }
  .module-source-link { padding-left:12px; padding-right:4px; }
  .positioning-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .source-page { padding-top:24px; }
  .source-page-hero h1 { font-size:30px; }
  .source-summary { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .source-summary article:nth-child(2) { border-right:0; }
  .source-summary article:nth-child(-n+2) { border-bottom:1px solid var(--line); }
  .source-policy-grid,.source-row { grid-template-columns:1fr; }
  .source-row small { grid-column:auto; }
}
@media (prefers-reduced-motion:reduce) {
  .market-status i,.flash-up,.flash-down,.icon-btn.is-loading span,.ticker-grid.is-marquee .ticker-track,.fear-needle-group.is-entering { animation:none; }
  .ai-analysis-panel { --ai-border-angle:135deg; animation:none; }
}

.promo-banner { background:#111; color:#fff; border-bottom:1px solid #2a2a2a; }
.promo-inner { width:min(1440px,calc(100% - 48px)); margin:0 auto; padding:10px 0; display:flex; align-items:center; gap:12px; flex-wrap:wrap; }
.promo-inner strong { font-size:15px; }
.promo-inner span { color:#bdbdbd; font-size:14px; }
.promo-price { color:#9be7a3; font-weight:700; }
.promo-cta { margin-left:auto; }
.promo-inner.is-paywall strong { color:#ffb4b4; }
.paywall-hint { margin-bottom:12px; padding:10px 12px; background:#fff6df; border:1px solid #f0dfaa; color:#7a5b00; border-radius:var(--radius); }
.nav-toggle { display:none; width:36px; height:36px; margin-right:4px; color:#fff; background:transparent; border:1px solid #3a3a3a; border-radius:var(--radius-sm); }
.watchlist-cards { display:none; gap:12px; margin-bottom:12px; }
.watchlist-card { padding:12px; border:1px solid var(--line); border-radius:var(--radius); background:#fff; }
.watchlist-card-head { display:flex; justify-content:space-between; align-items:center; margin-bottom:4px; }
.watchlist-card-price { font-size:20px; font-weight:700; margin-top:6px; }
.watchlist-card-market-cap,.watchlist-card-next-earnings { display:flex; align-items:baseline; justify-content:space-between; gap:6px; margin-top:4px; }
.watchlist-card-market-cap small,.watchlist-card-next-earnings small { color:var(--muted); }
.watchlist-card-market-cap strong,.watchlist-card-next-earnings strong { font-size:13px; }
.settings-block { margin-bottom:16px; padding:12px; background:var(--fill); border-radius:var(--radius); }
.checkbox-row { display:flex; align-items:center; gap:8px; margin:8px 0; }
.onboarding-symbols { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; margin:0; border:0; padding:0; min-inline-size:0; }
.settings-block .hint { color:var(--muted); font-size:13px; }

.onboarding-dialog {
  width:min(560px,calc(100% - 24px)); padding:0; border:0; border-radius:18px; overflow:hidden;
  background:#fff; color:var(--ink); box-shadow:0 24px 64px rgba(0,0,0,.28);
}
.onboarding-dialog form { padding:0; }
.onboarding-hero {
  padding:22px 24px 20px; color:#fff;
  background:
    radial-gradient(circle at 100% 0%, rgba(15,105,255,.35), transparent 42%),
    linear-gradient(145deg, #101010 0%, #1a1a1a 55%, #0f0f0f 100%);
  border-bottom:1px solid rgba(255,255,255,.08);
}
.onboarding-brand { display:flex; align-items:center; gap:12px; margin-bottom:14px; }
.onboarding-brand .brand-mark {
  width:34px; height:34px; display:grid; place-items:center; border-radius:8px;
  background:#fff; color:#111; font-size:12px; font-weight:800;
}
.onboarding-kicker { display:block; color:#9a9a9a; font-size:12px; letter-spacing:.08em; text-transform:uppercase; }
.onboarding-hero h2 { margin:4px 0 0; font-size:24px; font-weight:700; letter-spacing:-.02em; line-height:1.2; }
.onboarding-hero p { margin:0; color:#bdbdbd; font-size:14px; line-height:1.55; max-width:46ch; }
.onboarding-body { padding:20px 24px 8px; background:#fafbfc; }
.onboarding-section + .onboarding-section { margin-top:16px; }
.onboarding-section-head { display:flex; align-items:baseline; justify-content:space-between; margin-bottom:10px; }
.onboarding-section-head strong { font-size:15px; color:#111; }
.onboarding-section-head span { color:var(--muted); font-size:12px; }
.onboarding-label { display:block; margin-bottom:8px; font-size:13px; font-weight:700; color:#333; }
.onboarding-input-wrap input {
  width:100%; height:44px; padding:0 12px; border:1px solid #d5dbe3; border-radius:10px;
  background:#fff; font-size:15px;
}
.onboarding-input-wrap input:focus { outline:2px solid rgba(15,105,255,.18); border-color:var(--blue); }
.onboarding-chip {
  position:relative; display:flex; flex-direction:column; align-items:flex-start; gap:8px;
  min-height:92px; padding:12px; border:1px solid #dfe3ea; border-radius:12px; background:#fff;
  cursor:pointer; transition:border-color .15s ease, box-shadow .15s ease, transform .15s ease;
}
.onboarding-chip:hover { border-color:#b8c4d9; box-shadow:0 6px 18px rgba(15,23,42,.06); transform:translateY(-1px); }
.onboarding-chip:has(input:checked) {
  border-color:#0f69ff; background:linear-gradient(180deg,#f5f9ff 0%,#fff 100%);
  box-shadow:inset 0 0 0 1px rgba(15,105,255,.25);
}
.onboarding-chip input { position:absolute; opacity:0; pointer-events:none; }
.onboarding-chip-mark {
  width:28px; height:28px; display:grid; place-items:center; border-radius:8px;
  background:#f3f5f7; overflow:hidden;
}
.onboarding-chip-mark img { width:18px; height:18px; object-fit:contain; }
.onboarding-chip-mark em { display:none; color:#667085; font-size:11px; font-style:normal; font-weight:700; }
.onboarding-chip-mark:has(img.logo-failed) img { display:none; }
.onboarding-chip-mark:has(img.logo-failed) em { display:grid; place-items:center; width:18px; height:18px; }
.onboarding-chip strong { font-size:15px; letter-spacing:.02em; }
.onboarding-chip small { color:var(--muted); font-size:12px; line-height:1.2; }
.onboarding-chip-check {
  position:absolute; top:10px; right:10px; width:18px; height:18px; border-radius:50%;
  border:1px solid #cfd6df; background:#fff;
}
.onboarding-chip:has(input:checked) .onboarding-chip-check {
  border-color:#0f69ff; background:#0f69ff; box-shadow:inset 0 0 0 3px #fff;
}
.onboarding-toggles { display:grid; gap:10px; }
.onboarding-toggle {
  display:grid; grid-template-columns:1fr auto; align-items:center; gap:12px;
  padding:12px 14px; border:1px solid #dfe3ea; border-radius:12px; background:#fff; cursor:pointer;
}
.onboarding-toggle input { position:absolute; opacity:0; pointer-events:none; }
.onboarding-toggle-copy strong { display:block; font-size:14px; color:#111; }
.onboarding-toggle-copy small { display:block; margin-top:2px; color:var(--muted); font-size:12px; line-height:1.35; }
.onboarding-toggle-ui {
  width:42px; height:24px; border-radius:999px; background:#d7dce3; position:relative; transition:background .15s ease;
}
.onboarding-toggle-ui::after {
  content:""; position:absolute; top:3px; left:3px; width:18px; height:18px; border-radius:50%;
  background:#fff; box-shadow:0 1px 3px rgba(0,0,0,.18); transition:transform .15s ease;
}
.onboarding-toggle:has(input:checked) .onboarding-toggle-ui { background:#0f69ff; }
.onboarding-toggle:has(input:checked) .onboarding-toggle-ui::after { transform:translateX(18px); }
.onboarding-footer { padding:8px 24px 22px; background:#fafbfc; }
.onboarding-submit {
  width:100%; height:46px; border:0; border-radius:12px; color:#fff; background:#111;
  font-size:15px; font-weight:700; letter-spacing:.01em; cursor:pointer;
  transition:background .15s ease, transform .15s ease;
}
.onboarding-submit:hover { background:#000; transform:translateY(-1px); }
.onboarding-footnote { margin:10px 0 0; text-align:center; color:var(--muted); font-size:12px; }

.settings-dialog {
  width:min(680px,calc(100% - 24px)); max-height:calc(100vh - 32px); padding:0; border:0; border-radius:18px; overflow-y:auto;
  background:#fff; color:var(--ink); box-shadow:0 24px 64px rgba(0,0,0,.28);
}
.settings-dialog form { padding:0; }
.settings-hero {
  padding:20px 22px 18px; color:#fff;
  background:
    radial-gradient(circle at 0% 0%, rgba(15,105,255,.28), transparent 45%),
    linear-gradient(145deg, #101010 0%, #1a1a1a 55%, #0f0f0f 100%);
  border-bottom:1px solid rgba(255,255,255,.08);
}
.settings-hero-top { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; margin-bottom:14px; }
.settings-brand { display:flex; align-items:center; gap:12px; }
.settings-brand .brand-mark {
  width:34px; height:34px; display:grid; place-items:center; border-radius:8px;
  background:#fff; color:#111; font-size:12px; font-weight:800;
}
.settings-kicker { display:block; color:#9a9a9a; font-size:12px; letter-spacing:.08em; text-transform:uppercase; }
.settings-hero h2 { margin:4px 0 0; font-size:22px; font-weight:700; letter-spacing:-.02em; }
.settings-close {
  width:32px; height:32px; border:1px solid rgba(255,255,255,.18); border-radius:10px;
  background:rgba(255,255,255,.06); color:#fff; font-size:22px; line-height:1; cursor:pointer;
}
.settings-close:hover { background:rgba(255,255,255,.12); }
.settings-plan-card {
  padding:14px 16px; border-radius:12px; border:1px solid rgba(255,255,255,.12);
  background:rgba(255,255,255,.06); backdrop-filter:blur(8px);
}
.settings-plan-card strong { display:block; margin-top:6px; font-size:16px; }
.settings-plan-card p { margin:6px 0 12px; color:#bdbdbd; font-size:13px; line-height:1.45; }
.settings-plan-badge {
  display:inline-flex; padding:3px 10px; border-radius:999px; font-size:11px; font-weight:700;
}
.settings-plan-card.is-active .settings-plan-badge { color:#b8f0c4; background:rgba(0,168,62,.18); border:1px solid rgba(0,168,62,.35); }
.settings-plan-card.is-trial .settings-plan-badge { color:#ffe6a8; background:rgba(255,193,7,.14); border:1px solid rgba(255,193,7,.35); }
.settings-plan-card.is-expired .settings-plan-badge { color:#ffc9c9; background:rgba(225,37,37,.14); border:1px solid rgba(225,37,37,.35); }
.settings-plan-btn {
  height:34px; padding:0 14px; border:1px solid rgba(255,255,255,.22); border-radius:999px;
  background:transparent; color:#fff; font-size:13px; font-weight:650; cursor:pointer;
}
.settings-plan-btn:hover { background:rgba(255,255,255,.1); }
.settings-plan-btn.is-primary { border-color:transparent; background:#fff; color:#111; }
.settings-plan-btn.is-primary:hover { background:#e8e8e8; }

@property --ai-border-angle {
  syntax:'<angle>';
  initial-value:0deg;
  inherits:false;
}
@keyframes aiBorderOrbit { to { --ai-border-angle:360deg; } }
@keyframes aiBorderPulse {
  0%,100% { box-shadow:0 0 0 1px rgba(15,105,255,.12),0 0 18px rgba(15,105,255,.16); }
  50% { box-shadow:0 0 0 1px rgba(90,74,255,.28),0 0 32px rgba(15,105,255,.32); }
}
.ai-analysis-panel {
  --ai-border-angle:0deg;
  padding:20px;
  border:3px solid transparent;
  background:
    linear-gradient(var(--surface),var(--surface)) padding-box,
    conic-gradient(from var(--ai-border-angle),
      rgba(15,105,255,.2) 0deg 185deg,
      #0f69ff 225deg,
      #00d4ff 255deg,
      #7657ff 282deg,
      #d34bd1 307deg,
      rgba(15,105,255,.2) 345deg 360deg) border-box;
  box-shadow:0 0 0 1px rgba(15,105,255,.12),0 0 18px rgba(15,105,255,.16);
  animation:aiBorderOrbit 4.5s linear infinite,aiBorderPulse 2.25s ease-in-out infinite;
}
.ai-analysis-head { display:flex; align-items:flex-start; justify-content:space-between; gap:24px; }
.ai-analysis-head h2 { margin:3px 0 5px; font-size:22px; }
.ai-analysis-head p { margin:0; color:#666; font-size:14px; }
.premium-kicker { color:#087a32; font-size:11px; font-weight:800; letter-spacing:.12em; }
.ai-analysis-content { min-height:128px; margin-top:18px; background:#fff; border:1px solid #dedede; }
.ai-analysis-empty { min-height:86px; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:7px; text-align:center; color:#777; }
.ai-analysis-empty strong { color:#222; font-size:16px; }
.ai-analysis-result { margin:0; padding:20px; color:#202020; font:14px/1.75 var(--font-sans,Arial,sans-serif); white-space:pre-wrap; }
.ai-analysis-loading { color:#666; }
.ai-report { color:#202020; }
.ai-risk-hero { position:relative; display:grid; grid-template-columns:auto minmax(0,1fr) auto; align-items:center; gap:18px; padding:22px 24px 25px; border-bottom:1px solid var(--line); background:#f7f8f8; overflow:hidden; }
.ai-risk-hero.risk-low { background:#f2faf5; }
.ai-risk-hero.risk-medium { background:#fffaeb; }
.ai-risk-hero.risk-high,.ai-risk-hero.risk-critical { background:#fff3f2; }
.ai-risk-score { min-width:78px; display:flex; align-items:baseline; color:#111; }
.ai-risk-score strong { font-size:38px; line-height:1; letter-spacing:-.05em; }
.ai-risk-score span { margin-left:3px; color:var(--muted); font-size:12px; }
.ai-risk-copy>span { color:var(--muted); font-size:11px; font-weight:800; letter-spacing:.08em; text-transform:uppercase; }
.ai-risk-copy h3 { margin:3px 0 4px; font-size:20px; line-height:1.3; }
.ai-risk-copy p { margin:0; color:#4f4f4f; font-size:13px; line-height:1.6; }
.ai-risk-badge,.ai-risk-pill { border:1px solid currentColor; border-radius:999px; font-weight:750; white-space:nowrap; }
.ai-risk-badge { padding:7px 11px; font-size:12px; }
.ai-risk-pill { padding:2px 7px; font-size:10px; }
.ai-risk-badge.risk-low,.ai-risk-pill.risk-low { color:#087a32; background:#eaf7ef; }
.ai-risk-badge.risk-medium,.ai-risk-pill.risk-medium { color:#8a5b00; background:#fff5cc; }
.ai-risk-badge.risk-high,.ai-risk-pill.risk-high { color:#c5221f; background:#ffe8e6; }
.ai-risk-badge.risk-critical,.ai-risk-pill.risk-critical { color:#fff; background:#b42318; border-color:#b42318; }
.ai-risk-meter { position:absolute; left:0; right:0; bottom:0; height:4px; background:rgba(0,0,0,.08); }
.ai-risk-meter i { display:block; height:100%; background:#9a6700; }
.ai-risk-hero.risk-low .ai-risk-meter i { background:var(--green); }
.ai-risk-hero.risk-high .ai-risk-meter i,.ai-risk-hero.risk-critical .ai-risk-meter i { background:var(--red); }
.ai-market-summary { margin:0; padding:18px 24px; border-bottom:1px solid var(--line); font-size:14px; font-weight:550; line-height:1.75; }
.ai-report-section { padding:20px 24px; }
.ai-report-section>h3 { margin:0 0 12px; font-size:15px; }
.ai-indicator-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; }
.ai-indicator { min-width:0; padding:13px 14px; border:1px solid var(--line); border-left:3px solid #999; background:#fff; }
.ai-indicator.risk-low { border-left-color:var(--green); }
.ai-indicator.risk-medium { border-left-color:#d99a00; }
.ai-indicator.risk-high,.ai-indicator.risk-critical { border-left-color:var(--red); }
.ai-indicator-head { display:flex; align-items:center; justify-content:space-between; gap:8px; color:var(--muted); font-size:12px; font-weight:700; }
.ai-indicator-head>span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.ai-indicator-value { display:flex; align-items:baseline; gap:8px; margin:8px 0 5px; }
.ai-indicator-value strong { font-size:19px; line-height:1.2; }
.ai-indicator-value em { font-size:12px; font-style:normal; font-weight:700; }
.signal-positive { color:var(--green); }
.signal-negative { color:var(--red); }
.signal-neutral { color:var(--muted); }
.ai-indicator p { margin:0; color:var(--muted); font-size:12px; line-height:1.55; }
.ai-two-column { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); border-top:1px solid var(--line); border-bottom:1px solid var(--line); }
.ai-two-column .ai-report-section+section { border-left:1px solid var(--line); }
.ai-report-section ul { margin:0; padding:0; list-style:none; }
.ai-opportunities li,.ai-risks li { position:relative; padding:9px 0 9px 15px; }
.ai-opportunities li+li,.ai-risks li+li { border-top:1px solid var(--line); }
.ai-opportunities li::before,.ai-risks li::before { content:''; position:absolute; left:0; top:17px; width:6px; height:6px; border-radius:50%; background:var(--green); }
.ai-risks li::before { background:var(--red); }
.ai-report-section li strong,.ai-report-section li span { display:block; }
.ai-report-section li strong { font-size:13px; }
.ai-report-section li span { margin-top:3px; color:var(--muted); font-size:12px; line-height:1.55; }
.ai-conclusion { margin:20px 24px 0; padding:15px 17px; border-left:3px solid #111; background:var(--fill); }
.ai-conclusion strong { font-size:13px; }
.ai-conclusion p { margin:5px 0 0; font-size:13px; line-height:1.65; }
.ai-report-disclaimer { margin:14px 24px 20px; color:#777; font-size:11px; }
.payment-dialog { width:min(680px,calc(100% - 32px)); max-height:calc(100vh - 32px); overflow-y:auto; padding:24px; border:0; box-shadow:0 24px 80px rgba(0,0,0,.32); }
.payment-dialog::backdrop { background:rgba(0,0,0,.5); }
.payment-intro { margin:10px 0 18px; color:#555; line-height:1.55; }
.support-no-perks { margin:0 0 18px; padding:10px 12px; border-left:3px solid #161616; background:#f5f5f3; color:#555; font-size:13px; line-height:1.55; }
.payment-methods { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
.payment-method { min-width:0; padding:14px; border:1px solid #d7d7d7; background:#fff; }
.donation-wallet { border-top:3px solid var(--wallet-color); }
.donation-wallet-head { display:flex; align-items:center; gap:11px; }
.payment-method-icon { width:36px; height:36px; display:grid; place-items:center; flex:0 0 auto; border-radius:50%; background:var(--wallet-color); color:#fff; }
.payment-crypto-icon { display:block; width:24px; height:24px; }
.payment-method-copy { display:flex; flex-direction:column; gap:3px; }
.donation-wallet .payment-method-copy strong { color:var(--wallet-color); }
.payment-method-copy small { color:#888; }
.donation-wallet-qr { display:block; width:152px; height:152px; margin:14px auto; border:8px solid #fff; background:#fff; image-rendering:pixelated; }
.donation-wallet-address { display:block; min-height:46px; margin:12px 0 10px; padding:9px 10px; border:1px solid var(--line); background:var(--fill); color:var(--ink); font-family:ui-monospace,SFMono-Regular,Consolas,monospace; font-size:12px; line-height:1.45; overflow-wrap:anywhere; user-select:all; }
.donation-copy-btn { width:100%; min-height:36px; border:1px solid var(--wallet-color); background:var(--wallet-color); color:#fff; font-size:13px; font-weight:700; cursor:pointer; }
.donation-copy-btn:hover,.donation-copy-btn:focus-visible { filter:brightness(.9); outline:2px solid rgba(15,105,255,.22); outline-offset:1px; }
.settings-donations { padding:18px 22px 4px; background:#fafbfc; }
.settings-donation-section { padding:16px; border:1px solid var(--line); background:#fff; }
.settings-donation-section + .settings-donation-section { margin-top:12px; }
.settings-donation-heading,.donation-summary-head { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; }
.settings-donation-heading h3,.donation-summary-head h3 { margin:0; font-size:16px; }
.settings-donation-heading p,.donation-summary-head p { margin:5px 0 0; color:var(--muted); font-size:12px; line-height:1.45; }
.donation-summary-head > span { flex:0 0 auto; color:var(--muted); font-size:12px; font-weight:650; }
.donation-register-form { display:grid; grid-template-columns:132px minmax(0,1fr) auto; gap:8px; align-items:end; margin-top:14px; }
.donation-register-form label { display:grid; gap:5px; min-width:0; }
.donation-register-form label > span { color:#444; font-size:12px; font-weight:700; }
.donation-register-form select,.donation-register-form input { width:100%; height:38px; padding:0 10px; border:1px solid #d5dbe3; border-radius:8px; background:#fff; color:var(--ink); }
.donation-register-form input { font-family:ui-monospace,SFMono-Regular,Consolas,monospace; font-size:12px; }
.donation-register-form select:focus,.donation-register-form input:focus { outline:2px solid rgba(15,105,255,.16); border-color:var(--blue); }
.donation-register-form button { height:38px; padding:0 14px; border:0; border-radius:8px; background:#111; color:#fff; font-weight:700; cursor:pointer; white-space:nowrap; }
.donation-register-form button:disabled { cursor:wait; opacity:.55; }
.donation-register-hint { margin:8px 0 0; color:var(--muted); font-size:11px; line-height:1.45; }
.donation-personal-list,.donation-recent ul { margin:12px 0 0; padding:0; list-style:none; }
.donation-personal-row { display:grid; grid-template-columns:160px minmax(0,1fr); gap:12px; align-items:center; padding:9px 0; border-top:1px solid var(--line); }
.donation-personal-asset { display:flex; flex-direction:column; gap:3px; }
.donation-personal-asset small { color:var(--muted); }
.donation-personal-row code { overflow:hidden; color:#555; font-size:11px; text-overflow:ellipsis; white-space:nowrap; user-select:all; }
.donation-record-empty { margin-top:12px; padding:14px; background:var(--fill); color:var(--muted); font-size:12px; text-align:center; }
.donation-public-summary { margin-top:18px; padding:16px; border:1px solid var(--line); background:#fafbfc; }
.donation-total-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:8px; margin-top:12px; }
.donation-total-card { min-width:0; padding:10px; border-top:3px solid var(--blue); background:#fff; }
.donation-total-card strong { display:block; overflow:hidden; font-size:14px; text-overflow:ellipsis; white-space:nowrap; }
.donation-total-card span { display:block; margin-top:4px; color:var(--muted); font-size:11px; }
.donation-recent { margin-top:14px; }
.donation-recent > strong { font-size:12px; }
.donation-recent li { display:flex; align-items:center; justify-content:space-between; gap:10px; padding:8px 0; border-top:1px solid var(--line); }
.donation-recent li span { display:flex; align-items:baseline; gap:8px; }
.donation-recent li small,.donation-recent li em { color:var(--muted); font-size:11px; font-style:normal; }
.settings-body { padding:18px 22px 8px; background:#fafbfc; }
.settings-section + .settings-section { margin-top:14px; }
.settings-label { display:block; margin-bottom:8px; font-size:13px; font-weight:700; color:#333; }
.settings-input-wrap input {
  width:100%; height:44px; padding:0 12px; border:1px solid #d5dbe3; border-radius:10px;
  background:#fff; font-size:15px;
}
.settings-input-wrap input:focus { outline:2px solid rgba(15,105,255,.18); border-color:var(--blue); }
.settings-grid { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.settings-hint { display:block; margin-top:4px; color:var(--muted); font-size:12px; }
.settings-toggles { display:grid; gap:10px; }
.settings-footer {
  display:flex; align-items:center; justify-content:space-between; gap:12px;
  padding:8px 22px 20px; background:#fafbfc;
}
.settings-submit {
  min-width:132px; height:42px; padding:0 18px; border:0; border-radius:12px;
  color:#fff; background:#111; font-size:14px; font-weight:700; cursor:pointer;
}
.settings-submit:hover { background:#000; }
.settings-danger {
  height:42px; padding:0 4px; border:0; background:transparent; color:#b42318;
  font-size:14px; font-weight:600; cursor:pointer;
}
.settings-danger:hover { text-decoration:underline; }

@media (max-width:1100px) {
  .ai-indicator-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .nav-toggle { display:inline-flex; align-items:center; justify-content:center; }
  .masthead-search { flex:1 1 140px; max-width:none; min-width:0; margin-left:0; }
  .masthead nav { display:none; width:100%; flex:unset; overflow-x:visible; height:auto; padding-bottom:8px; border-top:0; }
  .masthead nav.is-open { display:flex; flex-wrap:wrap; gap:4px 0; }
  .masthead nav.is-open .nav-item { padding:8px 12px; box-shadow:none; }
  .masthead nav.is-open .nav-item.active { box-shadow:inset 0 -2px 0 #fff; }
  .watchlist-table-wrap { display:none; }
  .watchlist-cards { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); }
  .watchlist-col-optional { display:none; }
  .institution-heading { align-items:flex-start; }
  .institution-tabs { justify-content:flex-start; }
  .institution-summary { grid-template-columns:1fr; gap:12px; }
}
@media (max-width:680px) {
  .ai-analysis-panel { padding:16px; }
  .ai-analysis-head { flex-direction:column; }
  .ai-risk-hero { grid-template-columns:auto minmax(0,1fr); gap:12px; padding:18px 16px 21px; }
  .ai-risk-score { min-width:64px; }
  .ai-risk-score strong { font-size:32px; }
  .ai-risk-badge { grid-column:1/-1; justify-self:start; }
  .ai-market-summary,.ai-report-section { padding-left:16px; padding-right:16px; }
  .ai-indicator-grid,.ai-two-column { grid-template-columns:1fr; }
  .ai-two-column .ai-report-section+section { border-left:0; border-top:1px solid var(--line); }
  .ai-conclusion { margin-left:16px; margin-right:16px; }
  .ai-report-disclaimer { margin-left:16px; margin-right:16px; }
  .payment-methods { grid-template-columns:1fr; }
  .donation-register-form { grid-template-columns:1fr; }
  .donation-total-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .donation-personal-row { grid-template-columns:1fr; gap:5px; }
  .watchlist-cards { grid-template-columns:1fr; }
  .promo-inner { gap:8px; }
  .promo-cta { width:100%; margin-left:0; justify-content:center; }
  .auth-name { max-width:88px; }
  .onboarding-symbols { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .onboarding-body,.onboarding-footer { padding-left:16px; padding-right:16px; }
  .onboarding-hero { padding:18px 16px 16px; }
  .settings-grid { grid-template-columns:1fr; }
  .settings-body,.settings-footer { padding-left:16px; padding-right:16px; }
  .settings-hero { padding-left:16px; padding-right:16px; }
  .institution-tabs { width:100%; border:0; gap:6px; overflow:visible; }
  .institution-tab { flex:1 1 calc(50% - 6px); border:1px solid var(--line); border-radius:var(--radius-sm); }
  .institution-metrics { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .institution-comparison { align-items:flex-start; flex-direction:column; }
  .institution-comparison>div { justify-content:flex-start; }
  .institution-table { width:100%; min-width:0; table-layout:fixed; }
  .institution-table .institution-col-detail { display:none; }
  .institution-table th,.institution-table td { padding-left:8px; padding-right:8px; }
  .institution-table th:first-child,.institution-table td:first-child { width:42px; padding-left:8px; padding-right:8px; }
  .institution-table th:last-child,.institution-table td:last-child { width:130px; overflow:hidden; }
  .institution-name strong { max-width:150px; }
  .institution-change { min-width:112px; }
}
/* Standalone asset detail and comparison pages */
.standalone-page{background:var(--page,#f7f7f5);color:var(--ink,#171717)}
.detail-masthead{background:#101010;color:#fff;border-bottom:1px solid #2d2d2d}.detail-masthead .page-wrap{min-height:64px;display:flex;align-items:center;justify-content:space-between;gap:24px}.detail-masthead nav{display:flex;gap:22px}.detail-masthead a{color:inherit;text-decoration:none}
.detail-page,.compare-page{padding-top:38px;padding-bottom:80px}.detail-hero{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:24px;border-bottom:1px solid var(--line,#ddd);padding-bottom:24px}.detail-hero h1{font-size:clamp(2rem,5vw,4.5rem);letter-spacing:-.045em;margin:6px 0}.detail-hero h1 small{font-size:.34em;color:var(--muted,#666);letter-spacing:0}.detail-hero p{color:var(--muted,#666);margin:0}.detail-type{font-size:.72rem;letter-spacing:.16em;font-weight:800;text-transform:uppercase;color:#197a3d}.detail-action,.compare-form button{background:#111;color:#fff;padding:13px 18px;text-decoration:none;border:0;font-weight:750}
.detail-metric-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));border:1px solid var(--line,#ddd);margin-bottom:18px}.detail-metric-grid.compact{grid-template-columns:repeat(3,minmax(0,1fr));border:0;margin:0}.detail-metric{padding:18px;border-right:1px solid var(--line,#ddd)}.detail-metric:last-child{border-right:0}.detail-metric span{display:block;color:var(--muted,#666);font-size:.78rem;margin-bottom:9px}.detail-metric strong{font-size:1.35rem}.detail-metric strong.up,.up{color:#159447}.detail-metric strong.down,.down{color:#d92929}
.detail-section{margin-top:18px;padding:20px}.detail-chart{display:block;width:100%;height:280px;color:#1a9b4a;background:linear-gradient(to bottom,rgba(28,160,78,.06),transparent)}.detail-loading,.detail-error{padding:64px 0;font-size:1.15rem;color:var(--muted,#666)}
.compare-form{display:grid;grid-template-columns:auto minmax(260px,1fr) 130px auto;gap:12px;align-items:center;background:#fff;border:1px solid var(--line,#ddd);padding:16px;margin-bottom:18px}.compare-form input,.compare-form select{height:44px;border:1px solid #bbb;background:#fff;padding:0 12px}.compare-table,.correlation-table{width:100%;border-collapse:collapse}.compare-table th,.compare-table td,.correlation-table th,.correlation-table td{padding:13px;border-bottom:1px solid var(--line,#ddd);text-align:right}.compare-table th:first-child,.compare-table td:first-child,.correlation-table th:first-child{text-align:left}.compare-table a{color:inherit;text-decoration:none}.compare-table small{display:block;color:var(--muted,#666);margin-top:3px}.correlation-table td{font-variant-numeric:tabular-nums}
@media(max-width:760px){.detail-masthead nav{display:none}.detail-page,.compare-page{padding-top:22px}.detail-hero{align-items:flex-start;flex-direction:column}.detail-action{width:100%;text-align:center}.detail-metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.detail-metric-grid.compact{grid-template-columns:1fr}.detail-metric{border-bottom:1px solid var(--line,#ddd)}.compare-form{grid-template-columns:1fr}.detail-chart{height:210px}.compare-table{min-width:720px}}

.section-collapse-btn{width:30px;height:30px;border:1px solid var(--line,#ddd);background:transparent;color:inherit;font-size:18px;line-height:1;flex:0 0 auto}.section-card.is-collapsed{padding-bottom:12px}.section-card.is-collapsed>:not(:first-child){display:none!important}.section-card[data-lazy-state="loading"]{opacity:.92}
.asset-rank-controls{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 0;border-bottom:1px solid var(--line,#ddd)}.asset-heading>div{display:flex;align-items:baseline;gap:10px}.asset-detail-link{cursor:pointer}.asset-detail-link:hover{background:rgba(35,142,72,.055)}
.data-health-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border:1px solid var(--line,#ddd)}.data-health-item{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;padding:14px;border-right:1px solid var(--line,#ddd);border-bottom:1px solid var(--line,#ddd)}.data-health-item small{display:block;color:var(--muted,#666);margin-top:3px}.data-health-item b{font-size:.72rem;text-transform:uppercase}.health-status-dot{width:9px;height:9px;border-radius:50%;background:#159447}.status-delayed .health-status-dot{background:#dd8b11}.status-degraded .health-status-dot{background:#d92929}.status-unknown .health-status-dot{background:#999}
.watchlist-group-row th{text-align:left!important;background:#f4f4f1;color:var(--muted,#666);font-size:.72rem;letter-spacing:.08em;text-transform:uppercase}.watchlist-group-field{display:flex;align-items:center;gap:7px;color:var(--muted,#666);font-size:.72rem}.watchlist-group-field input{width:110px;height:32px;border:1px solid var(--line,#ddd);padding:0 7px}.watchlist-column-settings{display:flex;flex-wrap:wrap;gap:12px;border:1px solid var(--line,#ddd);padding:12px;margin:14px 0}.watchlist-column-settings legend{padding:0 6px;font-weight:700}.watchlist-transfer{display:flex;gap:10px;margin-bottom:12px}.watchlist-transfer a{text-decoration:none}
#watchlist:not([data-visible-columns~="price"]) table tr>*:nth-child(3),#watchlist:not([data-visible-columns~="marketCap"]) table tr>*:nth-child(4),#watchlist:not([data-visible-columns~="earnings"]) table tr>*:nth-child(5),#watchlist:not([data-visible-columns~="target"]) table tr>*:nth-child(6),#watchlist:not([data-visible-columns~="distance"]) table tr>*:nth-child(7),#watchlist:not([data-visible-columns~="change"]) table tr>*:nth-child(13){display:none}.watchlist-group-row th{display:table-cell!important}
.ai-history{margin-top:14px;border-top:1px solid var(--line,#ddd);padding-top:12px}.ai-history summary{cursor:pointer;font-weight:750}.ai-history ul{display:grid;gap:7px;padding:10px 0;margin:0;list-style:none}.ai-history li{display:flex;justify-content:space-between;gap:14px;color:var(--muted,#666)}.ai-history label{display:flex;align-items:center;gap:10px}.ai-history select{height:36px}.ai-source-jump{display:block;margin-top:9px;color:#176b39;font-size:.72rem}.ai-indicator{text-decoration:none;color:inherit}
.donation-wallet-tabs{display:none}
@media(max-width:760px){.data-health-grid{grid-template-columns:1fr}.asset-rank-controls{align-items:flex-start;flex-direction:column}.asset-rank-controls .heat-tabs{max-width:100%;overflow:auto}.section-collapse-btn{margin-left:auto}.watchlist-editor-item{align-items:flex-start;flex-wrap:wrap}.watchlist-group-field{order:3;width:100%}.watchlist-group-field input{flex:1}.payment-methods{display:block}.donation-wallet-tabs{display:flex;gap:6px;overflow:auto;margin-bottom:12px}.donation-wallet-tab{border:1px solid var(--line,#ddd);background:#fff;padding:9px 13px;font-weight:700}.donation-wallet-tab.active{background:#111;color:#fff}.payment-methods .donation-wallet{display:none}.payment-methods .donation-wallet.active{display:flex}}
