
/* ══ dossier v6 ═══════════════════════════════════════════════════════════
   One voice: Inter (--font-ui) everywhere; numbers are tabular Inter, never
   monospace. The page is tinted by the engine stance (--stance): aurora,
   hero ribbon and ladder all derive from the same verdict. */
*{box-sizing:border-box;}
:root{--stance:var(--muted);
      --hair:color-mix(in srgb,var(--line) 60%,transparent);
      --v6-radius:18px;}
body.st-pos{--stance:var(--up);}
body.st-warn{--stance:var(--warn);}
body.st-neg{--stance:var(--down);}
html body{font:400 13.5px/1.55 var(--font-ui);background:var(--bg);color:var(--text);margin:0;padding:24px 0 0;-webkit-font-smoothing:antialiased;}  /* 24px top gap = check_nav_gap contract */
html,body{overflow-x:clip;}  /* safety net — offenders are also fixed at the source */
a{text-decoration:none;color:inherit;}
.num{font-variant-numeric:tabular-nums;letter-spacing:-.01em;}
.pos{color:var(--up);}.neg{color:var(--down);}.wrn{color:var(--warn);}.mut{color:var(--muted);}
.sm{font-size:12px;}

/* aurora — stance-tinted room light (plain gradients: no filter cost) */
.aurora{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden;}
.aurora::before{content:"";position:absolute;width:1100px;height:780px;top:-260px;left:-180px;
  background:radial-gradient(closest-side,color-mix(in srgb,var(--stance) 9%,transparent) 0%,transparent 78%);}
.aurora::after{content:"";position:absolute;width:820px;height:640px;bottom:-160px;right:-140px;
  background:radial-gradient(closest-side,color-mix(in srgb,var(--info) 6%,transparent) 0%,transparent 78%);}

/* sticky jump strip */
.strip{position:fixed;top:0;left:0;right:0;z-index:220;display:flex;align-items:center;gap:12px;height:48px;overflow:hidden;
  padding:0 22px;background:color-mix(in srgb,var(--bg) 86%,transparent);
  backdrop-filter:blur(18px) saturate(150%);-webkit-backdrop-filter:blur(18px) saturate(150%);
  border-bottom:1px solid var(--hair);transform:translateY(-100%);transition:transform .3s cubic-bezier(.22,.9,.26,1.02);}
.strip.vis{transform:translateY(0);}
.strip .stk{font-size:14.5px;font-weight:800;}
.strip .stp{font-size:13.5px;font-weight:650;}
.schip{font-size:11px;font-weight:700;padding:3px 10px;border-radius:999px;white-space:nowrap;
  color:var(--stance);background:color-mix(in srgb,var(--stance) 12%,transparent);
  border:1px solid color-mix(in srgb,var(--stance) 30%,transparent);}
.strip nav{display:flex;gap:2px;margin-left:6px;overflow-x:auto;scrollbar-width:none;flex:1;}
.strip nav::-webkit-scrollbar{display:none;}
.strip nav a{font-size:12px;color:var(--muted);padding:5px 10px;border-radius:8px;white-space:nowrap;}
.strip nav a:hover{color:var(--text);background:var(--gbtn-bg);}
.strip nav a.is-on{color:var(--text);background:color-mix(in srgb,var(--link) 14%,transparent);}
@media(max-width:760px){.strip nav{display:none;}.strip .sname{display:none;}}
@media(max-width:480px){.strip .schip{display:none;}}

/* layout */
.page-wrap{position:relative;z-index:1;max-width:1240px;margin:0 auto;padding:0 26px 60px;}
.crumb{font-size:11.5px;font-weight:550;color:var(--muted);padding:18px 2px 0;letter-spacing:.02em;}
.crumb a:hover{color:var(--link);}
.crumb b{color:var(--text);font-weight:600;}

/* module chrome */
.mod{background:var(--glass-bg);border:1px solid var(--glass-brd);border-radius:var(--v6-radius);
  box-shadow:var(--glass-shadow);backdrop-filter:blur(22px) saturate(150%);-webkit-backdrop-filter:blur(22px) saturate(150%);
  padding:20px 24px 22px;min-width:0;}
.mod-hd{display:flex;align-items:baseline;gap:10px;margin:0 0 16px;padding-bottom:12px;border-bottom:1px solid var(--hair);}
.mod-hd h2{display:flex;align-items:center;gap:10px;margin:0;font-size:15.5px;font-weight:650;letter-spacing:-.01em;}
.mod-hd h2::before{content:"";width:3px;height:15px;border-radius:2px;flex-shrink:0;
  background:linear-gradient(180deg,var(--link),color-mix(in srgb,var(--link) 30%,transparent));}
.mod-hd .hint{margin-left:auto;font-size:11.5px;color:var(--muted);font-weight:500;white-space:nowrap;display:flex;align-items:center;gap:8px;}
.mod-ft{margin-top:14px;padding-top:10px;border-top:1px solid var(--hair);font-size:11.5px;color:var(--muted);line-height:1.5;}

/* reveal-on-scroll (html.js gated; reduced-motion opts out; no-JS shows all) */
html.has-js .rv{opacity:0;transform:translateY(16px);}
html.has-js .rv.in{opacity:1;transform:none;transition:opacity .55s ease,transform .55s cubic-bezier(.22,.9,.26,1.02);transition-delay:var(--d,0ms);}
@media(prefers-reduced-motion:reduce){html.has-js .rv{opacity:1;transform:none;transition:none;}}

/* hero */
.hero{position:relative;margin-top:14px;padding:26px 30px 0;overflow:hidden;}
.hero::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;
  background:linear-gradient(180deg,var(--stance),color-mix(in srgb,var(--stance) 12%,transparent));}
.hero-grid{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:16px 48px;align-items:start;}
.eyebrow{font-size:10.5px;font-weight:650;letter-spacing:.09em;text-transform:uppercase;color:var(--muted);}
.hero h1{display:flex;align-items:baseline;flex-wrap:wrap;gap:6px 16px;margin:6px 0 0;
  font-size:clamp(38px,4.8vw,54px);font-weight:900;letter-spacing:-.04em;line-height:.95;}
.hero h1 a:hover{color:var(--link);}
.hero h1 .co{font-size:15px;font-weight:550;letter-spacing:0;color:var(--muted);}
.hero-desc{margin:12px 0 0;max-width:66ch;font-size:13px;line-height:1.6;color:var(--muted);}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin:14px 0 0;}
.chip6{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:600;padding:3px 10px;
  border-radius:999px;background:var(--gbtn-bg);border:1px solid var(--gbtn-brd);color:var(--muted);}
.px-block{text-align:right;min-width:230px;}
.px-big{font-size:clamp(32px,3.6vw,44px);font-weight:750;letter-spacing:-.025em;line-height:1;}
.px-chg{display:inline-flex;align-items:center;gap:6px;margin-top:8px;font-size:13.5px;font-weight:650;}
.px-chg .pill6{padding:2px 9px;border-radius:8px;}
.px-chg.pos .pill6{background:color-mix(in srgb,var(--up) 13%,transparent);border:1px solid color-mix(in srgb,var(--up) 30%,transparent);}
.px-chg.neg .pill6{background:color-mix(in srgb,var(--down) 13%,transparent);border:1px solid color-mix(in srgb,var(--down) 30%,transparent);}
/* The live pip: one dot, used beside the price AND on the stance stamp so the
   two read as the same "this is current" signal. The glow is a box-shadow
   pulse rather than an opacity blink — the dot never disappears, so a glance
   that lands mid-cycle still sees it. Base state carries the glow, which is
   what reduced-motion falls back to. */
/* --ok, not --up: a live pip is a STATUS read, and the standing zh colour law
   (红涨绿跌) names "live/feed dots" in the list that must NOT flip. Painting it
   from --up made it turn red in Chinese, where red means "rising" — a
   directional claim from an indicator that only ever meant "this is current".
   --ok is the non-flipping status green and is theme-aware in both modes. */
.live-dot{width:6px;height:6px;border-radius:50%;background:var(--ok);display:inline-block;
  box-shadow:0 0 7px 1px color-mix(in srgb,var(--ok) 60%,transparent);animation:v6lp 2.6s ease-in-out infinite;}
@keyframes v6lp{
  0%,100%{opacity:1;box-shadow:0 0 7px 1px color-mix(in srgb,var(--ok) 62%,transparent);}
  50%{opacity:.62;box-shadow:0 0 2px 0 color-mix(in srgb,var(--ok) 14%,transparent);}}
/* stance stamp — replaces the old "Engine read · <date>" line */
.livestamp{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:700;
  letter-spacing:.06em;text-transform:uppercase;color:var(--ok);white-space:nowrap;}
[data-lang="zh"] .livestamp{letter-spacing:0;text-transform:none;}
.wk52{margin-top:16px;}
.wk52 .lbls{display:flex;justify-content:space-between;gap:14px;font-size:10.5px;color:var(--muted);margin-bottom:5px;}
.wk52 .lbls b{color:var(--text);font-weight:650;}
.wk52 .track{position:relative;height:4px;border-radius:3px;background:var(--line);}
.wk52 .fill{position:absolute;top:0;bottom:0;left:0;border-radius:3px;
  background:linear-gradient(90deg,color-mix(in srgb,var(--link) 40%,transparent),var(--link));}
.wk52 .dotp{position:absolute;top:50%;transform:translate(-50%,-50%);
  width:10px;height:10px;border-radius:50%;background:var(--text);box-shadow:0 0 0 3px color-mix(in srgb,var(--link) 35%,transparent);}
.stance-row{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:22px -30px 0;padding:13px 30px;
  border-top:1px solid var(--hair);background:color-mix(in srgb,var(--stance) 5%,transparent);}
.stance-big{display:inline-flex;align-items:center;gap:8px;font-size:13px;font-weight:750;padding:6px 14px;border-radius:10px;
  color:var(--stance);background:color-mix(in srgb,var(--stance) 13%,transparent);
  border:1px solid color-mix(in srgb,var(--stance) 32%,transparent);}
.stance-line{flex:1;min-width:260px;font-size:12.5px;color:var(--muted);line-height:1.5;}
.asof{font-size:11px;color:var(--muted);white-space:nowrap;}
@media(prefers-reduced-motion:no-preference){
  html.has-js .hi{opacity:0;transform:translateY(12px);animation:v6hin .6s cubic-bezier(.22,.9,.26,1.02) forwards;}
  html.has-js .hi2{animation-delay:.08s;}html.has-js .hi3{animation-delay:.16s;}html.has-js .hi4{animation-delay:.24s;}
  @keyframes v6hin{to{opacity:1;transform:none;}}
}

/* Company Intelligence — dynamic context plane, never a trading signal. */
.ci-mod{position:relative;margin-top:20px;padding:0;overflow:hidden;
  background:
    radial-gradient(900px 360px at 7% -34%,color-mix(in srgb,var(--link) 19%,transparent),transparent 58%),
    radial-gradient(560px 320px at 95% 8%,color-mix(in srgb,var(--info) 11%,transparent),transparent 66%),
    var(--glass-bg);}
.ci-mod::before{content:"";position:absolute;inset:0 0 auto;height:1px;pointer-events:none;
  background:linear-gradient(90deg,transparent,var(--link),color-mix(in srgb,var(--info) 65%,transparent),transparent);}
.ci-top{position:relative;display:flex;align-items:flex-start;justify-content:space-between;gap:24px;padding:22px 26px 18px;border-bottom:1px solid var(--hair);}
.ci-kicker{display:flex;align-items:center;gap:8px;margin-bottom:5px;font-size:10px;font-weight:780;letter-spacing:.12em;text-transform:uppercase;color:var(--link);}
.ci-orbit{position:relative;width:8px;height:8px;border-radius:50%;background:var(--link);box-shadow:0 0 0 4px color-mix(in srgb,var(--link) 11%,transparent);}
.ci-orbit::after{content:"";position:absolute;inset:-5px;border:1px solid color-mix(in srgb,var(--link) 36%,transparent);border-radius:50%;animation:ci-pulse 2.8s ease-out infinite;}
@keyframes ci-pulse{0%{transform:scale(.65);opacity:.8}70%,100%{transform:scale(1.55);opacity:0}}
.ci-top h2{margin:0;font-size:clamp(21px,2vw,27px);line-height:1.06;letter-spacing:-.035em;font-weight:780;}
.ci-top p{max-width:67ch;margin:8px 0 0;color:var(--muted);font-size:12.5px;line-height:1.55;}
.ci-mod{--ci-ok:#37c89a;--ci-caution:#e3a34b;}
[data-theme="light"] .ci-mod{--ci-ok:#126b51;--ci-caution:#8a5600;}
.ci-state{display:inline-flex;align-items:center;gap:7px;flex:0 0 auto;max-width:240px;padding:5px 10px;border-radius:999px;border:1px solid var(--gbtn-brd);background:var(--gbtn-bg);color:var(--muted);font-size:10.5px;font-weight:700;line-height:1.35;}
.ci-state::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;}
.ci-state.ready{color:var(--ci-ok);border-color:color-mix(in srgb,var(--ci-ok) 32%,transparent);background:color-mix(in srgb,var(--ci-ok) 9%,transparent);}
.ci-state.partial{color:var(--ci-caution);border-color:color-mix(in srgb,var(--ci-caution) 34%,transparent);background:color-mix(in srgb,var(--ci-caution) 10%,transparent);}
.ci-state.unavailable{color:var(--muted);}
.ci-loading[hidden],.ci-empty[hidden],#ci-content[hidden]{display:none!important;}
.ci-loading{display:grid;grid-template-columns:minmax(0,1fr) minmax(260px,.48fr);gap:18px;min-height:330px;padding:24px 26px 25px;}
.ci-skel{height:16px;border-radius:7px;background:linear-gradient(100deg,var(--gbtn-bg) 20%,color-mix(in srgb,var(--text) 7%,transparent) 48%,var(--gbtn-bg) 76%);background-size:220% 100%;animation:ci-shimmer 1.45s linear infinite;}
.ci-skel.big{height:86px}.ci-skel.med{width:72%;margin-top:12px}.ci-skel.sm{width:43%;margin-top:12px}
@keyframes ci-shimmer{to{background-position:-220% 0}}
.ci-empty{padding:25px 26px 27px;}
.ci-empty h3{margin:0 0 6px;font-size:16px}.ci-empty p{max-width:72ch;margin:0 0 15px;color:var(--muted);}
.ci-grid{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(270px,.62fr);}
.ci-story{min-width:0;padding:24px 26px 22px;border-right:1px solid var(--hair);}
.ci-period{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:12px;color:var(--muted);font-size:11px;font-weight:600;letter-spacing:.025em;}
.ci-period strong{color:var(--text);font-size:11.5px;}
.ci-period .ci-source-lang{display:inline-flex;padding:2px 7px;border:1px solid var(--hair);border-radius:999px;font-size:9.5px;letter-spacing:.04em;text-transform:uppercase;}
.ci-summary{max-width:840px;margin:0;font-size:clamp(18px,2.2vw,25px);line-height:1.28;letter-spacing:-.025em;font-weight:665;}
.ci-summary.is-empty{color:var(--muted);font-weight:560;}
.ci-lenses{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:20px;}
.ci-lens{position:relative;padding:14px 15px 15px;border:1px solid var(--hair);border-radius:13px;background:color-mix(in srgb,var(--panel2) 62%,transparent);min-width:0;}
.ci-lens::before{content:"";position:absolute;left:0;top:13px;bottom:13px;width:2px;border-radius:2px;background:var(--muted);}
.ci-lens.strength::before{background:var(--up)}.ci-lens.pressure::before{background:var(--warn)}
.ci-lens-label{display:flex;align-items:center;gap:7px;margin:0 0 7px;font-size:10px;font-weight:780;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);}
.ci-lens p{margin:0;color:var(--text);font-size:12.5px;line-height:1.55;}
.ci-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:14px;}
.ci-tag{padding:3px 8px;border:1px solid color-mix(in srgb,var(--link) 18%,var(--hair));border-radius:999px;background:color-mix(in srgb,var(--link) 6%,transparent);color:var(--muted);font-size:10px;font-weight:620;}
.ci-side{display:flex;flex-direction:column;min-width:0;padding:22px 22px 20px;background:color-mix(in srgb,var(--panel2) 38%,transparent);}
.ci-side-label{margin:0 0 10px;font-size:10px;font-weight:780;letter-spacing:.09em;text-transform:uppercase;color:var(--muted);}
.ci-metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;}
.ci-metric{min-height:76px;padding:10px 11px;border:1px solid var(--hair);border-radius:12px;background:color-mix(in srgb,var(--panel) 70%,transparent);}
.ci-metric span{display:block;color:var(--muted);font-size:10.5px;line-height:1.3;}
.ci-metric strong{display:block;margin-top:5px;font-size:19px;line-height:1;font-weight:760;font-variant-numeric:tabular-nums;}
.ci-metric small{display:block;margin-top:5px;color:var(--muted);font-size:10.5px;font-variant-numeric:tabular-nums;}
.ci-metric small.up{color:var(--up)}.ci-metric small.down{color:var(--down)}
.ci-metric em{display:block;margin-top:5px;color:var(--muted);font:650 9px/1.2 var(--font-ui);font-style:normal;letter-spacing:.04em;text-transform:uppercase;}
.ci-next{margin-top:15px;padding-top:14px;border-top:1px solid var(--hair);}
.ci-next p{margin:0;color:var(--muted);font-size:11.5px;line-height:1.55;}
.ci-actions{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-top:auto;padding-top:16px;}
.ci-actions .gbtn{justify-content:center;}
/* Company Intelligence action row — house .gbtn motion, nothing bespoke.
   The previous treatment defined its own ::after, which has the same
   specificity as .gbtn::after and lands later in the cascade, so it REPLACED
   the house sheen sweep with a static washed overlay at z-index:-1. It also
   left .gbtn:hover free to overwrite background and color, so hovering the
   primary swapped its gradient for grey glass and its dark ink for near-white.
   Both are gone: the buttons now take .gbtn / .gbtn-cta wholesale — the same
   sweep, lift and breathing halo as every other CTA on the site — and these
   rules only size them and lift the sweep to a strength that is actually
   visible against a tinted surface (the shared 13% white reads as nothing). */
.ci-upgrade{min-height:36px;padding:9px 15px;font-weight:770;color:#fff;border-color:rgba(255,255,255,.22);
  background:linear-gradient(112deg,#3b82f6,#6366f1 54%,#7c5cff);}
/* .gbtn:hover repaints background AND color, and it out-specifies a plain
   class — so a tinted button MUST restate both or it turns into grey glass
   with near-white ink on hover (which is what it used to do). */
.ci-upgrade:hover,.ci-upgrade:focus-visible{color:#fff;border-color:rgba(255,255,255,.4);
  background:linear-gradient(112deg,#4a8dff,#7076f5 54%,#8b6dff);}
/* Same house sweep, two inks: the secondaries sweep in the text colour so it
   reads in both themes, the tinted CTA sweeps in white because its surface is
   saturated blue in both. The shared 13% white is invisible on either. */
.ci-actions .gbtn:not(.ci-upgrade)::after{
  background:linear-gradient(105deg,transparent 38%,color-mix(in srgb,var(--text) 26%,transparent) 50%,transparent 62%);}
.ci-upgrade::after{background:linear-gradient(105deg,transparent 36%,rgba(255,255,255,.5) 50%,transparent 64%);}
.ci-history{display:flex;align-items:center;gap:10px;min-width:0;padding:13px 18px 14px;border-top:1px solid var(--hair);background:color-mix(in srgb,var(--bg) 14%,transparent);}
.ci-history-label{flex:0 0 auto;color:var(--muted);font-size:10px;font-weight:760;letter-spacing:.08em;text-transform:uppercase;}
.ci-history-tabs{display:flex;gap:6px;min-width:0;overflow-x:auto;scrollbar-width:none;}
.ci-history-tabs::-webkit-scrollbar{display:none;}
.ci-history-tab{appearance:none;min-height:34px;border:1px solid var(--hair);border-radius:9px;background:var(--gbtn-bg);color:var(--muted);padding:7px 10px;font:650 11px/1.2 var(--font-ui);white-space:nowrap;cursor:pointer;}
.ci-history-tab:hover,.ci-history-tab:focus-visible{color:var(--text);border-color:color-mix(in srgb,var(--link) 42%,var(--hair));outline:none;}
.ci-history-tab[aria-pressed="true"]{color:var(--link);background:color-mix(in srgb,var(--link) 10%,transparent);border-color:color-mix(in srgb,var(--link) 32%,transparent);}
.ci-receipt{margin-left:auto;flex:0 0 auto;color:var(--muted);font-size:10px;white-space:nowrap;}
.ci-foot{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 22px 12px;border-top:1px solid var(--hair);color:var(--muted);font-size:11px;line-height:1.5;}
.ci-foot b{color:var(--text);font-weight:650;}.ci-foot .ci-note{margin-left:auto;text-align:right;}
.ci-sr{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important;}
[data-lang="zh"] .ci-kicker,[data-lang="zh"] .ci-lens-label,[data-lang="zh"] .ci-side-label,[data-lang="zh"] .ci-history-label,[data-lang="zh"] .ci-source-lang,[data-lang="zh"] .ci-metric em{letter-spacing:0;text-transform:none;}
/* Reduced motion: name the pseudo-elements explicitly — a bare element
   selector does not reach ::after. .live-dot keeps its resting glow, so
   stopping the pulse leaves a visible dot rather than a blank slot. */
@media(prefers-reduced-motion:reduce){.ci-orbit::after,.ci-skel,.live-dot{animation:none;}
  .fcard .fb[data-v]::after,.fcard .fb[data-v]:hover::after{transition:none;transform:translateX(-50%);}}
@media(max-width:900px){.ci-grid{grid-template-columns:1fr}.ci-story{border-right:0;border-bottom:1px solid var(--hair)}.ci-side{display:grid;grid-template-columns:minmax(0,1fr) minmax(220px,.65fr);gap:18px}.ci-actions{grid-column:1/-1;padding-top:0}.ci-next{margin-top:0;padding-top:0;border-top:0;border-left:1px solid var(--hair);padding-left:18px}}
@media(max-width:640px){.ci-top{padding:18px 16px 15px;gap:12px}.ci-top p{font-size:12px}.ci-state{max-width:152px;padding:5px 8px}.ci-loading{grid-template-columns:1fr;min-height:560px;padding:19px 16px}.ci-story{padding:19px 16px 17px}.ci-lenses{grid-template-columns:1fr}.ci-side{display:flex;padding:17px 16px}.ci-next{margin-top:14px;padding:13px 0 0;border-left:0;border-top:1px solid var(--hair)}.ci-actions{padding-top:15px}.ci-actions .ci-upgrade{width:100%;order:-1}.ci-history{align-items:flex-start;flex-wrap:wrap;padding:12px 16px}.ci-history-tabs{order:3;flex-basis:100%;padding-right:18px}.ci-receipt{margin-left:auto}.ci-foot{padding:10px 16px}.ci-foot .ci-note{margin-left:0;text-align:left}.ci-summary{font-size:18px}}

/* chart module */
.chart-mod{margin-top:20px;padding:0;overflow:hidden;}
.chart-mod .mod-hd{padding:16px 24px 12px;margin:0;border-bottom:1px solid var(--hair);}
.chart-frame{position:relative;height:clamp(360px,42vw,520px);background:color-mix(in srgb,#0b0d11 40%,transparent);}
[data-theme="light"] .chart-frame{background:color-mix(in srgb,var(--panel2) 55%,transparent);}
.chart-frame iframe{position:absolute;inset:0;width:100%;height:100%;border:0;opacity:0;transition:opacity .45s ease;}
.chart-frame.loaded iframe{opacity:1;}
.chart-skel{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:12px;overflow:hidden;}
.chart-skel::before{content:"";position:absolute;inset:0;
  background:linear-gradient(100deg,transparent 30%,color-mix(in srgb,var(--text) 4%,transparent) 50%,transparent 70%);
  transform:translateX(-100%);animation:v6sk 1.6s ease-in-out infinite;}
@media(prefers-reduced-motion:reduce){.chart-skel::before{animation:none;}}
@keyframes v6sk{to{transform:translateX(100%);}}
.chart-frame.loaded .chart-skel,.chart-frame.failed .chart-skel{display:none;}
.chart-fallback{position:absolute;inset:0;display:none;flex-direction:column;align-items:center;justify-content:center;gap:12px;color:var(--muted);font-size:13px;text-align:center;padding:20px;}
.chart-frame.failed .chart-fallback{display:flex;}
.chart-ft{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:10px 24px 14px;border-top:1px solid var(--hair);}
.powered{margin-left:auto;display:inline-flex;align-items:center;gap:7px;font-size:11.5px;font-weight:650;color:var(--muted);}
.powered:hover{color:var(--link);}
.powered .bolt{width:16px;height:16px;border-radius:5px;display:inline-flex;align-items:center;justify-content:center;
  background:linear-gradient(135deg,var(--link),var(--info));color:#0f1115;font-size:10px;font-weight:900;}

/* two-column zone */
.cols{display:grid;grid-template-columns:minmax(0,1fr) 322px;gap:20px;margin-top:20px;align-items:start;}
.main-col,.rail-col{display:flex;flex-direction:column;gap:20px;min-width:0;}

/* ladder */
.lrow{position:relative;display:grid;grid-template-columns:84px 18px minmax(0,1fr) auto;gap:0 10px;align-items:center;
  padding:9px 6px;border-radius:12px;transition:background .18s;}
.lrow:hover{background:color-mix(in srgb,var(--panel2) 55%,transparent);}
.lrow .lpx{font-size:13.5px;font-weight:700;text-align:right;}
.lrow .lnode{position:relative;display:flex;align-items:center;justify-content:center;height:100%;}
.lrow .lnode::before{content:"";position:absolute;top:-10px;bottom:-10px;width:2px;background:var(--hair);}
.lrow:first-child .lnode::before{top:50%;}
.lrow.llast .lnode::before{bottom:50%;}
.ldot{position:relative;z-index:1;width:9px;height:9px;border-radius:50%;background:var(--muted);box-shadow:0 0 0 3px var(--panel);}
.ldot.wall{background:transparent;border:2px solid var(--muted);width:8px;height:8px;}
.ldot.chase{background:var(--warn);}
.ldot.buy{background:var(--up);}
.ldot.stop{background:var(--down);}
.lrow .lk{font-size:12.5px;font-weight:600;line-height:1.25;}
.lrow .lk small{display:block;font-size:11px;font-weight:500;color:var(--muted);margin-top:1px;}
.lrow .ld{font-size:11.5px;font-weight:650;color:var(--muted);}
.lrow.now{background:color-mix(in srgb,var(--stance) 8%,var(--panel2));
  border:1px solid color-mix(in srgb,var(--stance) 26%,transparent);box-shadow:0 8px 22px -12px rgba(3,7,18,.8);
  margin:3px -2px;padding:11px 8px;}
.lrow.now .lpx{font-size:15px;color:var(--text);}
.lrow.now .ldot{background:var(--stance);box-shadow:0 0 0 3px var(--panel),0 0 10px color-mix(in srgb,var(--stance) 60%,transparent);}
.lband{position:relative;margin:2px 0 2px 102px;padding:7px 12px;border-radius:10px;
  background:color-mix(in srgb,var(--up) 8%,transparent);border:1px dashed color-mix(in srgb,var(--up) 35%,transparent);
  font-size:11.5px;color:var(--up);font-weight:600;line-height:1.4;}

/* key-value rows */
.kv6 .r6{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:7px 0;border-bottom:1px solid var(--hair);font-size:12.5px;}
.kv6 .r6:last-child{border-bottom:0;}
.kv6 .k6{color:var(--muted);}
.kv6 .v6{font-weight:650;text-align:right;}

/* technicals */
.trow{display:flex;align-items:center;gap:12px;padding:8px 0;border-bottom:1px solid var(--hair);font-size:12.5px;flex-wrap:wrap;}
.trow:last-child{border-bottom:0;}
.trow .tk{color:var(--muted);flex:0 0 130px;}
.trow .tv6{font-weight:650;}
.minitrack{position:relative;flex:1;max-width:150px;min-width:90px;height:5px;border-radius:3px;background:var(--line);}
.minitrack .zone{position:absolute;top:0;bottom:0;left:30%;right:30%;background:color-mix(in srgb,var(--muted) 22%,transparent);border-radius:3px;}
.minitrack .mk{position:absolute;top:50%;transform:translate(-50%,-50%);width:2.5px;height:13px;border-radius:2px;background:var(--warn);}
.okx{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:700;padding:2px 9px;border-radius:999px;}
.okx.y{color:var(--up);background:color-mix(in srgb,var(--up) 12%,transparent);}
.okx.n{color:var(--down);background:color-mix(in srgb,var(--down) 12%,transparent);}
.okx.w{color:var(--warn);background:color-mix(in srgb,var(--warn) 12%,transparent);}
.okx.q{color:var(--muted);background:color-mix(in srgb,var(--muted) 12%,transparent);}
.sigchips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px;}

/* earnings */
.earn-top{display:grid;grid-template-columns:auto minmax(0,1fr);gap:20px;align-items:center;}
/* Countdown ring. "DAYS TO GO" is 10 uppercase characters — it does not fit
   inside a 78px inner disc, and used to sit on the ring stroke. The ring now
   holds the number alone (which can therefore be bigger) and the label sits
   under it, outside the circle. */
.cring-wrap{display:flex;flex-direction:column;align-items:center;gap:9px;flex-shrink:0;}
.cring-lbl{font-size:10px;font-weight:680;letter-spacing:.07em;text-transform:uppercase;color:var(--muted);white-space:nowrap;}
[data-lang="zh"] .cring-lbl{letter-spacing:0;text-transform:none;font-size:11px;}
.cring{position:relative;width:92px;height:92px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;
  background:conic-gradient(var(--link) calc(var(--p)*1%),color-mix(in srgb,var(--line) 60%,transparent) 0);}
.cring::before{content:"";position:absolute;inset:7px;border-radius:50%;background:var(--panel);}
.cring .cd{position:relative;text-align:center;line-height:1.05;}
.cring .cd b{font-size:31px;font-weight:800;letter-spacing:-.03em;}
/* Surprise bars. The old fixed 78px height was smaller than the column it
   contained (a 56px bar plus two label lines is ~89px), and because the row
   bottom-aligns, the overflow went UPWARD — the tallest bar drew straight over
   the post-earnings-drift line above it. No fixed height: the row grows to fit
   its tallest bar, and bottom-alignment still puts every bar on one baseline. */
.sbars{display:flex;align-items:flex-end;gap:10px;margin-top:15px;}
.sbar{flex:1;max-width:64px;display:flex;flex-direction:column;align-items:center;gap:5px;}
.sbar i{width:100%;max-width:44px;border-radius:5px 5px 2px 2px;background:linear-gradient(180deg,var(--up),color-mix(in srgb,var(--up) 45%,transparent));}
.sbar i.m{background:linear-gradient(180deg,var(--down),color-mix(in srgb,var(--down) 45%,transparent));}
.sbar b{font-size:11px;font-weight:700;}
.sbar span{font-size:10px;color:var(--muted);}

/* tables */
.vt-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0 -2px;padding:0 2px;}
.vt{width:100%;border-collapse:collapse;font-size:12.5px;}
.vt th{font-size:10.5px;font-weight:650;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;text-align:left;padding:2px 8px 8px;border-bottom:1px solid var(--hair);}
.vt td{padding:8px;border-bottom:1px solid var(--hair);}
.vt tr:last-child td{border-bottom:0;}
.vt td:nth-child(n+2){text-align:right;}
.vt td.b{font-weight:700;}
.cheapbar{display:inline-flex;align-items:center;gap:8px;justify-content:flex-end;}
.cheapbar .cb{width:74px;height:5px;border-radius:3px;background:var(--line);overflow:hidden;}
.cheapbar .cb i{display:block;height:100%;border-radius:3px;}

/* financials */
/* Financial history cards. Six per-bar value labels at 8.5px never fit a
   third-width card: they overlapped each other AND punched up through the
   card's own eyebrow, because .fbars was 70px tall while the column inside it
   (label + 50px bar + year) needed ~79px and the row bottom-aligns. The card
   now leads with the figure that actually carries the story — the latest year,
   at a readable size — and the bars became the shape of the trend. Per-year
   numbers are still there, one hover away, which is where six of them belong. */
.fin3{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;}
.fcard{background:color-mix(in srgb,var(--panel2) 55%,transparent);border:1px solid var(--hair);border-radius:13px;padding:13px 14px;min-width:0;}
.fcard .fhd{display:flex;align-items:baseline;justify-content:space-between;gap:9px;min-width:0;}
.fcard .ft{min-width:0;font-size:10.5px;font-weight:650;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
[data-lang="zh"] .fcard .ft{letter-spacing:0;text-transform:none;font-size:11.5px;}
.fcard .flast{flex:0 0 auto;display:inline-flex;align-items:baseline;gap:5px;}
.fcard .flast b{font-size:15.5px;font-weight:750;letter-spacing:-.02em;font-variant-numeric:tabular-nums;}
.fcard .flast em{font-style:normal;font-size:10px;color:var(--muted);font-variant-numeric:tabular-nums;}
.fcard .fbars{display:flex;align-items:flex-end;gap:5px;height:54px;margin-top:13px;}
.fcard .fb{position:relative;flex:1;min-width:0;display:flex;align-items:flex-end;}
.fcard .fb i{display:block;width:100%;border-radius:4px 4px 2px 2px;background:linear-gradient(180deg,var(--link),color-mix(in srgb,var(--link) 35%,transparent));}
.fcard .fb i.dn6{background:linear-gradient(180deg,var(--down),color-mix(in srgb,var(--down) 35%,transparent));}
.fcard .fb[data-v]::after{content:attr(data-y) " · " attr(data-v);position:absolute;left:50%;bottom:calc(100% + 7px);
  transform:translateX(-50%) translateY(3px);padding:3px 8px;border-radius:8px;
  background:var(--panel);border:1px solid var(--gbtn-brd);box-shadow:0 6px 18px -10px rgba(3,7,18,.7);
  font:650 10.5px/1 var(--font-ui);color:var(--text);white-space:nowrap;font-variant-numeric:tabular-nums;
  opacity:0;pointer-events:none;z-index:3;transition:opacity .16s ease,transform .16s ease;}
.fcard .fb[data-v]:hover::after{opacity:1;transform:translateX(-50%) translateY(0);}
.fcard .fspan{display:flex;justify-content:space-between;gap:8px;margin-top:8px;font-size:10px;color:var(--muted);font-variant-numeric:tabular-nums;}
.fcard .fcagr{margin-top:9px;padding-top:9px;border-top:1px solid var(--hair);font-size:11px;color:var(--muted);}
.fcard .fcagr b{color:var(--text);}
.mrow{display:flex;align-items:center;gap:10px;padding:5px 0;font-size:12px;}
.mrow .mk{color:var(--muted);flex:0 0 130px;}
.mrow .mtr{flex:1;height:5px;border-radius:3px;background:var(--line);overflow:hidden;}
.mrow .mtr i{display:block;height:100%;border-radius:3px;background:linear-gradient(90deg,color-mix(in srgb,var(--link) 50%,transparent),var(--link));}
.mrow .mv{width:52px;text-align:right;font-weight:650;font-size:12px;}
.hchips{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px;}
.pio{display:inline-flex;align-items:center;gap:2.5px;padding:5px 10px;border-radius:9px;background:var(--gbtn-bg);border:1px solid var(--gbtn-brd);}
.pio b{font-size:11px;margin-right:5px;}
.pio i{width:9px;height:5px;border-radius:1.5px;background:var(--line);}
.pio i.on6{background:var(--up);}
.kv2{display:grid;grid-template-columns:1fr 1fr;gap:4px 26px;margin-top:14px;}
.kv2 .r6{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:6px 0;border-bottom:1px solid var(--hair);font-size:12.5px;}
.kv2 .k6{color:var(--muted);}
.kv2 .v6{font-weight:650;text-align:right;}
.kv2 h4{grid-column:1/-1;margin:6px 0 2px;font-size:11px;font-weight:650;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;}

/* why moving */
.why .wr{display:flex;gap:12px;align-items:flex-start;padding:8px 10px;border-radius:11px;font-size:12.5px;margin:2px -10px;}
.why .wr.wr-on{background:color-mix(in srgb,var(--up) 6%,transparent);}
.why .wd{width:8px;height:8px;border-radius:50%;background:var(--line);flex-shrink:0;margin-top:5px;}
.why .wr.wr-on .wd{background:var(--up);box-shadow:0 0 8px color-mix(in srgb,var(--up) 55%,transparent);}
.why .wc{flex:0 0 90px;color:var(--muted);font-size:11.5px;padding-top:1px;}
.why .wl{flex:1;line-height:1.5;min-width:200px;}

/* options tiles */
.otiles{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;}
.otile{background:color-mix(in srgb,var(--panel2) 55%,transparent);border:1px solid var(--hair);border-radius:12px;padding:11px 13px;min-width:0;}
.otile .ok6{font-size:10.5px;font-weight:650;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;}
.otile .ov{font-size:16.5px;font-weight:720;margin-top:4px;}
.otile .ob{position:relative;height:4px;border-radius:3px;background:var(--line);margin-top:8px;overflow:hidden;}
.otile .ob i{position:absolute;top:0;bottom:0;left:0;background:linear-gradient(90deg,color-mix(in srgb,var(--warn) 50%,transparent),var(--warn));border-radius:3px;}

/* holders */
.gchip{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:7px;font-size:11px;font-weight:800;background:var(--panel2);color:var(--muted);}
.gchip.A{background:color-mix(in srgb,var(--up) 16%,transparent);color:var(--up);}
.gchip.B{background:color-mix(in srgb,var(--warn) 16%,transparent);color:var(--warn);}

/* timeline */
.tl{position:relative;padding-left:20px;}
.tl::before{content:"";position:absolute;left:5px;top:8px;bottom:8px;width:2px;background:var(--hair);}
.tev{position:relative;padding:7px 0 7px 6px;}
.tev::before{content:"";position:absolute;left:-19px;top:13px;width:8px;height:8px;border-radius:50%;background:var(--muted);box-shadow:0 0 0 3px var(--panel);}
.tev.up::before{background:var(--up);}
.tev.down::before{background:var(--down);}
.tev.caution::before{background:var(--warn);}
.tev .td{font-size:11px;color:var(--muted);font-weight:600;}
.tev .th{font-size:12.5px;font-weight:600;margin-top:1px;}
.tev .tx{font-size:11.5px;color:var(--muted);margin-top:1px;line-height:1.45;}
.pinned6{background:color-mix(in srgb,var(--warn) 7%,transparent);border:1px solid color-mix(in srgb,var(--warn) 26%,transparent);
  border-radius:12px;padding:11px 14px;margin-bottom:12px;font-size:12.5px;}
.pinned6 .ph{display:block;font-weight:700;}
.pinned6 .pd{color:var(--muted);font-size:11.5px;}

/* style DNA + watch items */
.dna .dr{display:flex;align-items:center;gap:12px;padding:6px 0;font-size:12.5px;}
.dna .dk{flex:0 0 118px;color:var(--muted);}
.dna .dtr{position:relative;flex:1;height:6px;border-radius:4px;background:var(--line);}
.dna .dtr::before{content:"";position:absolute;left:50%;top:-3px;bottom:-3px;width:1.5px;background:color-mix(in srgb,var(--muted) 45%,transparent);}
.dna .dtr i{position:absolute;top:0;bottom:0;border-radius:4px;}
.dna .dtr i.p{left:50%;background:linear-gradient(90deg,color-mix(in srgb,var(--up) 45%,transparent),var(--up));}
.dna .dtr i.n{right:50%;background:linear-gradient(270deg,color-mix(in srgb,var(--down) 45%,transparent),var(--down));}
.dna .dw{flex:0 0 96px;text-align:right;font-size:11.5px;font-weight:650;}
.watch{list-style:none;padding:0;margin:8px 0 0;}
.watch li{margin:5px 0;font-size:12.5px;color:var(--muted);line-height:1.5;padding-left:18px;position:relative;}
.watch li::before{content:"⚠";position:absolute;left:0;font-size:11px;color:var(--warn);}
.subhd{font-size:11px;font-weight:650;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin:14px 0 6px;}

/* seasonality */
.seas{display:grid;grid-template-columns:repeat(6,1fr);gap:5px;}
.seas .sc{aspect-ratio:1.25/1;border-radius:9px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;
  background:var(--panel2);font-size:11px;font-weight:700;}
.seas .sc span{font-size:9px;font-weight:600;color:var(--muted);}
.seas .sc.cur{outline:2px solid var(--link);outline-offset:1px;}

/* news / themes / peers */
.nrow{padding:9px 0;border-bottom:1px solid var(--hair);font-size:12.5px;line-height:1.45;}
.nrow:last-child{border-bottom:0;}
.nrow a{font-weight:550;}
.nrow a:hover{color:var(--link);}
.nrow .nm{display:block;font-size:11px;color:var(--muted);margin-top:2px;}
.throw{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--hair);font-size:12.5px;flex-wrap:wrap;}
.throw:last-child{border-bottom:0;}
.throw a{font-weight:650;color:var(--link);}
.throw a:hover{text-decoration:underline;}
.throw .tm{flex:1;color:var(--muted);font-size:11.5px;min-width:120px;}
.peers{display:grid;grid-template-columns:repeat(2,1fr);gap:9px;}
.pcard{background:color-mix(in srgb,var(--panel2) 55%,transparent);border:1px solid var(--hair);border-radius:12px;padding:10px 12px;min-width:0;
  transition:transform .16s,border-color .16s,background .16s;}
.pcard:hover{transform:translateY(-2px);border-color:color-mix(in srgb,var(--link) 40%,var(--hair));background:color-mix(in srgb,var(--panel2) 80%,transparent);}
.pcard b{font-size:13.5px;font-weight:750;color:var(--link);}
.pcard span{display:block;font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.pcard small{display:block;font-size:10.5px;color:var(--muted);margin-top:3px;}
/* Peers come from factors.json, a WIDER universe than the pages we render, so a
   real same-sector name can have no dossier to open. It keeps its card — the
   name and the market cap are the point of the grid — but must not advertise a
   click it cannot honour: no link colour, no hover lift, no pointer. */
.pcard-off{cursor:default;}
.pcard-off:hover{transform:none;border-color:var(--hair);background:color-mix(in srgb,var(--panel2) 55%,transparent);}
.pcard-off b{color:var(--text);}

/* rail CTA + band */
.railcta{background:linear-gradient(150deg,color-mix(in srgb,var(--link) 14%,var(--panel)),color-mix(in srgb,var(--info) 7%,var(--panel)));
  border:1px solid color-mix(in srgb,var(--link) 30%,transparent);}
.railcta h3{margin:0 0 6px;font-size:14.5px;font-weight:750;}
.railcta p{margin:0 0 14px;font-size:12px;color:var(--muted);line-height:1.55;}
.cta-band{margin-top:26px;padding:30px 34px;display:flex;align-items:center;gap:26px;flex-wrap:wrap;
  background:linear-gradient(120deg,color-mix(in srgb,var(--link) 12%,var(--panel)) 0%,var(--glass-bg) 60%);
  border:1px solid color-mix(in srgb,var(--link) 26%,var(--glass-brd));}
.cta-band .cc{flex:1;min-width:250px;}
.cta-band h2{margin:0 0 6px;font-size:19px;font-weight:800;letter-spacing:-.02em;}
.cta-band p{margin:0;font-size:12.5px;color:var(--muted);line-height:1.55;}
.brief-list{margin:4px 0 0;padding-left:18px;}
.brief-list li{margin:3px 0;font-size:12.5px;line-height:1.5;}

/* footer */
.site-footer6{margin-top:34px;padding-top:18px;border-top:1px solid var(--hair);color:var(--muted);font-size:11.5px;line-height:1.7;}
.site-footer6 a{color:var(--link);}
.site-footer6 a:hover{text-decoration:underline;}


/* ── popup dashboards (dsr-dlg — macro.html mx5 mechanics) ── */
html.dsr-dlg-lock{overflow:hidden;}
html.dsr-dlg-lock .strip{visibility:hidden;}
html.dsr-dlg-lock body{overflow:hidden;position:fixed;width:100%;}
.dsr-dlg{display:none;position:fixed;inset:0;z-index:300;align-items:center;justify-content:center;}
.dsr-dlg.open{display:flex;}
.dsr-dlg-backdrop{position:absolute;inset:0;background:rgba(3,6,10,.58);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);}
.dsr-dlg-panel{position:relative;z-index:1;max-width:880px;width:calc(100% - 48px);max-height:84vh;
  background:color-mix(in srgb,var(--panel) 94%,transparent);border:1px solid var(--glass-brd);border-radius:var(--v6-radius);
  backdrop-filter:blur(28px) saturate(1.4);-webkit-backdrop-filter:blur(28px) saturate(1.4);
  box-shadow:0 40px 120px rgba(0,0,0,.72),0 2px 0 rgba(255,255,255,.06) inset;overflow-y:auto;display:flex;flex-direction:column;}
.dsr-dlg-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 22px 13px;position:sticky;top:0;z-index:2;
  background:color-mix(in srgb,var(--panel) 96%,transparent);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-bottom:1px solid var(--hair);}
.dsr-dlg-title{font-size:15px;font-weight:700;letter-spacing:-.01em;display:flex;align-items:center;gap:10px;}
.dsr-dlg-title::before{content:"";width:3px;height:15px;border-radius:2px;background:linear-gradient(180deg,var(--stance),color-mix(in srgb,var(--stance) 25%,transparent));}
.dsr-dlg-close{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;
  background:var(--gbtn-bg);border:1px solid var(--gbtn-brd);cursor:pointer;color:var(--muted);font-size:17px;line-height:1;font-family:inherit;flex-shrink:0;transition:background .15s,color .15s;}
.dsr-dlg-close:hover{background:var(--gbtn-bg-hover);color:var(--text);}
.dsr-dlg-body{padding:18px 22px 24px;flex:1;overflow-y:auto;overflow-x:hidden;}
.dpanel{margin:0 0 20px;}
.dpanel:last-child{margin-bottom:0;}
.dpanel h3{margin:0 0 10px;font-size:12px;font-weight:650;color:var(--muted);text-transform:uppercase;letter-spacing:.07em;}
.dpanel .dfoot{margin-top:8px;font-size:11.5px;color:var(--muted);line-height:1.5;}
.dcards{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;}
.dcard{background:color-mix(in srgb,var(--panel2) 55%,transparent);border:1px solid var(--hair);border-radius:12px;padding:11px 13px;}
.dcard .dk{font-size:10.5px;font-weight:650;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;}
.dcard .dv{font-size:16px;font-weight:750;margin-top:4px;}
.dkv .r6d{display:flex;justify-content:space-between;align-items:baseline;gap:14px;padding:7px 0;border-bottom:1px solid var(--hair);font-size:12.5px;}
.dkv .r6d:last-child{border-bottom:0;}
.dkv .r6d .k{color:var(--muted);}
.dkv .r6d .vv{font-weight:650;text-align:right;}
.dtable{width:100%;border-collapse:collapse;font-size:12.5px;}
.dtable th{font-size:10.5px;font-weight:650;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;text-align:right;padding:2px 8px 7px;border-bottom:1px solid var(--hair);white-space:nowrap;}
.dtable th:first-child{text-align:left;}
.dtable td{padding:7px 8px;border-bottom:1px solid var(--hair);text-align:right;font-variant-numeric:tabular-nums;}
.dtable td:first-child{text-align:left;color:var(--muted);}
.dtable tr:last-child td{border-bottom:0;}
.dtable-wrap{overflow-x:auto;margin:0 -4px;padding:0 4px;}
.dnotes{list-style:none;margin:0;padding:0;}
.dnotes li{font-size:12.5px;line-height:1.55;padding:5px 0 5px 16px;position:relative;}
.dnotes li::before{content:"·";position:absolute;left:2px;font-weight:900;}
@media(prefers-reduced-motion:no-preference){
  .dsr-dlg-backdrop{opacity:0;transition:opacity 240ms ease-out;}
  .dsr-dlg.dsr-in .dsr-dlg-backdrop{opacity:1;}
  .dsr-dlg-panel{opacity:0;transform:translateY(14px) scale(.965);transition:opacity 320ms cubic-bezier(.22,.9,.26,1.02),transform 320ms cubic-bezier(.22,.9,.26,1.02);}
  .dsr-dlg.dsr-in .dsr-dlg-panel{opacity:1;transform:translateY(0) scale(1);}
  .dsr-dlg.dsr-closing .dsr-dlg-backdrop,.dsr-dlg.dsr-closing .dsr-dlg-panel{transition-duration:180ms;}
  .dsr-dlg-body > .dpanel{opacity:0;transform:translateY(10px);transition:opacity 300ms ease-out,transform 300ms cubic-bezier(.22,.9,.26,1.02);}
  .dsr-dlg.dsr-in .dsr-dlg-body > .dpanel{opacity:1;transform:translateY(0);}
  .dsr-dlg.dsr-in .dsr-dlg-body > .dpanel:nth-child(1){transition-delay:60ms;}
  .dsr-dlg.dsr-in .dsr-dlg-body > .dpanel:nth-child(2){transition-delay:100ms;}
  .dsr-dlg.dsr-in .dsr-dlg-body > .dpanel:nth-child(n+3){transition-delay:140ms;}
  .dsr-closing .dsr-dlg-body > .dpanel{transition-delay:0ms!important;}
}
@media(max-width:700px){
  .dsr-dlg{align-items:flex-end;}
  .dsr-dlg-panel{width:calc(100% - 20px);max-width:none;max-height:88vh;border-radius:var(--v6-radius) var(--v6-radius) 0 0;margin:0 10px;}
  .dsr-dlg-close{width:42px;height:42px;font-size:21px;}
  .dsr-dlg-body{padding:15px 15px 24px;}
}

/* ── responsive (media queries AFTER base rules, always) ── */
@media(max-width:980px){.cols{grid-template-columns:1fr;}}
@media(max-width:860px){.hero-grid{grid-template-columns:1fr;gap:12px;}.px-block{text-align:left;}}
@media(max-width:760px){.chart-mod .mod-hd{flex-wrap:wrap;}}
@media(max-width:700px){
  .mod-hd{flex-wrap:wrap;row-gap:8px;}
  .mod-hd .hint{white-space:normal;flex-wrap:wrap;justify-content:flex-end;row-gap:6px;}
}
@media(max-width:480px){
  .why .wr{flex-wrap:wrap;}
  .why .wc{flex-basis:calc(100% - 20px);padding-top:0;}
  .why .wl{min-width:0;}
}
@media(max-width:640px){
  .page-wrap{padding:0 14px 44px;}
  .mod{padding:16px 15px 17px;border-radius:15px;}
  .hero{padding:20px 18px 0;}
  .stance-row{margin:18px -18px 0;padding:12px 18px;}
  .chart-mod .mod-hd{padding:13px 15px 10px;}
  .chart-ft{padding:9px 15px 12px;}
  .fin3{grid-template-columns:1fr;}
  .earn-top{grid-template-columns:1fr;}
  .kv2{grid-template-columns:1fr;}
  .otiles{grid-template-columns:repeat(2,1fr);}
}
