
  /* ---------- shared Research-Reports chrome ---------- */
  * { box-sizing:border-box; }
  body { background:var(--bg); color:var(--text); font:14px/1.6 -apple-system,"Segoe UI",Roboto,Helvetica,sans-serif; margin:0; padding:18px 18px 60px; }
  @media(min-width:1100px){ body{ padding-left:max(18px,calc((100vw - 1096px)/2)); padding-right:max(18px,calc((100vw - 1096px)/2)); } }
  a { color:var(--ink-link, var(--link)); text-decoration:none; }
  .wrap { max-width:1060px; margin:0 auto; }
  /* unambiguous move colours (NOT tied to the zh red=up swap) */
  .r-neg { color:#d23f3f; font-weight:600; }
  .r-pos { color:#1f9a55; font-weight:600; }
  html[data-theme="dark"] .r-neg { color:#ef6a6a; }
  html[data-theme="dark"] .r-pos { color:#3fc07e; }
  .mut { color:var(--muted); }
  /* tags / chips */
  .chip { display:inline-flex; align-items:center; gap:5px; font-size:11.5px; line-height:1; padding:5px 10px; border-radius:999px;
          background:var(--panel2); border:1px solid var(--line); color:var(--muted); white-space:nowrap; }
  .chip.tag-macro   { color:#5b8def; border-color:#5b8def55; }
  .chip.tag-fed     { color:#c77dff; border-color:#c77dff55; }
  .chip.tag-rates   { color:#3fb6c0; border-color:#3fb6c055; }
  .chip.tag-equities{ color:#46b87a; border-color:#46b87a55; }
  .chip.tag-crypto  { color:#e0973a; border-color:#e0973a55; }
  .chip.tag-energy  { color:#cf7b3a; border-color:#cf7b3a55; }
  .chip.tag-event   { color:#e0607a; border-color:#e0607a55; }
  .chip.tag-ai      { color:#b48ead; border-color:#b48ead55; }
  .chip.tag-china   { color:#d0554f; border-color:#d0554f55; }
  .chip.tag-credit  { color:#d08770; border-color:#d0877055; }
  footer.rfoot { color:var(--muted); font-size:11.5px; margin:46px auto 0; max-width:1060px; border-top:1px solid var(--line); padding-top:14px; }
  /* XG-W7 follow line — its own row, never appended to the disclaimer sentence:
     a legal notice and a marketing CTA must not read as one thought. */
  footer.rfoot .rf-x { display:inline-flex; align-items:center; gap:6px; margin-top:11px; padding:4px 10px;
    border-radius:100px; border:1px solid var(--line); color:var(--muted); font-size:11px; font-weight:600;
    transition:color .16s, border-color .16s; }
  footer.rfoot .rf-x:hover { color:var(--text); border-color:color-mix(in srgb,var(--text) 26%,transparent); }
  
  /* ============================================================================
     FORESIGHT DESK — dawn palette + lead-time motion system
     Built on theme.css tokens (light / dark / zh aware). Signature = the relay.
     ============================================================================ */
  :root{
    --fx-dawn1:#8a6bff; --fx-dawn2:#3ad7ec;         /* violet → cyan "first light" brand */
    --fx-early:#8f7dff;                              /* PRECIPICE — the pre-dawn edge */
    --fx-confirm:var(--up); --fx-late:var(--warn); --fx-fade:var(--down);
    --fx-ink: color-mix(in srgb, var(--text) 78%, var(--bg));
  }
  html[data-theme="light"]{
    --fx-dawn1:#6a45e0; --fx-dawn2:#0aa9cf;
    --fx-early:#6a54e6;
  }
  .fx-wrap{ max-width:1080px; margin:0 auto; }
  .fx-wrap :focus-visible{ outline:2px solid var(--fx-dawn1); outline-offset:2px; border-radius:6px; }

  /* ---------- hero ---------- */
  .fx-hero{ padding:24px 0 4px; animation:fxUp .55s cubic-bezier(.2,.7,.3,1) both; }
  .fx-eyebrow{ display:inline-flex; align-items:center; gap:7px; font-size:11px; font-weight:800;
               letter-spacing:.14em; text-transform:uppercase; color:var(--muted); }
  .fx-brand{ font-size:28px; font-weight:800; letter-spacing:-.022em; margin:6px 0 0; color:var(--text); }
  .fx-brand .gn{ background:linear-gradient(96deg,var(--fx-dawn1),var(--fx-dawn2));
                 -webkit-background-clip:text; background-clip:text; color:transparent; }
  .fx-tag{ color:var(--muted); font-size:13.5px; margin:5px 0 0; max-width:640px; line-height:1.5; }
  .fx-verdict{ font-size:clamp(20px,2.9vw,28px); font-weight:800; color:var(--text); letter-spacing:-.02em;
               line-height:1.32; margin:16px 0 4px; max-width:880px; }
  .fx-verdict b{ background:linear-gradient(96deg,var(--fx-dawn1),var(--fx-dawn2));
                 -webkit-background-clip:text; background-clip:text; color:transparent; }
  .fx-asof{ display:inline-flex; align-items:center; gap:7px; font-size:12px; color:var(--muted); margin-top:6px; }
  .fx-asof .fxdot{ width:7px; height:7px; border-radius:var(--r-pill, 999px); background:var(--ok);
                   animation:fxBreathe 2.8s ease-in-out infinite; flex:none; }
  .fx-mode{ display:inline-flex; align-items:center; gap:7px; margin-top:11px; padding:7px 14px; border-radius:10px;
            font-size:12.5px; font-weight:600; line-height:1.4;
            color:var(--ink-warn, var(--warn)); border:1px solid color-mix(in srgb,var(--warn) 35%,transparent);
            background:color-mix(in srgb,var(--warn) 9%,var(--panel)); }
  .fx-mode .fxdot{ background:var(--warn); }

  /* ---------- the lead-time relay (signature) ---------- */
  .fx-relay{ position:relative; display:grid; grid-template-columns:repeat(5,1fr);
             align-items:start; margin:12px 0 2px; --st:var(--muted); }
  .fx-rail{ position:absolute; left:10%; right:10%; top:9px; height:3px; border-radius:3px;
            background:repeating-linear-gradient(90deg,color-mix(in srgb,var(--line) 90%,transparent) 0 7px,transparent 7px 13px); }
  .fx-rail-fill{ position:absolute; left:0; top:0; bottom:0; width:var(--reach,0%); border-radius:3px;
                 background:linear-gradient(90deg,color-mix(in srgb,var(--st) 65%,transparent),var(--st));
                 animation:fxGrow .8s cubic-bezier(.2,.7,.3,1) both; transform-origin:left; }
  .fx-rail-pulse{ position:absolute; top:50%; left:0; width:22px; height:3px; transform:translateY(-50%);
                  border-radius:3px; background:linear-gradient(90deg,transparent,var(--st),transparent);
                  filter:drop-shadow(0 0 4px var(--st));
                  animation:fxTravel 3.4s cubic-bezier(.5,0,.5,1) infinite; opacity:.9; }
  .fx-stop{ position:relative; display:flex; flex-direction:column; align-items:center; gap:6px; z-index:1; }
  .fx-node{ width:15px; height:15px; border-radius:50%; background:var(--panel);
            border:2px solid color-mix(in srgb,var(--line) 92%,var(--muted)); transition:.2s; }
  .fx-stop.lit .fx-node{ background:var(--st); border-color:var(--st);
                         box-shadow:0 0 0 4px color-mix(in srgb,var(--st) 16%,transparent); }
  .fx-stop-entry .fx-node{ border-radius:4px; }
  .fx-stop.fx-stop-entry.lit .fx-node{ background:var(--up); border-color:var(--up);
                         box-shadow:0 0 0 4px color-mix(in srgb,var(--up) 18%,transparent); }
  .fx-slbl{ font-size:10px; font-weight:700; letter-spacing:.03em; color:var(--muted); text-align:center; }
  .fx-stop.lit .fx-slbl{ color:var(--text); }
  .fx-relay.big{ margin:6px 0 0; }
  .fx-relay.big .fx-rail{ top:11px; height:4px; }
  .fx-relay.big .fx-node{ width:19px; height:19px; }
  .fx-relay.big .fx-slbl{ font-size:12px; }
  .fx-t-PRECIPICE{ --st:var(--fx-early); } .fx-t-BROADENING{ --st:var(--fx-confirm); }
  .fx-t-RE-RATING{ --st:var(--fx-late); }  .fx-t-GLUT-RISK{ --st:var(--fx-fade); }
  .fx-t-WATCH,.fx-t-UNKNOWN{ --st:var(--muted); }

  /* hero concept-relay card + entry gate */
  .fx-concept{ margin:20px 0 6px; border:1px solid var(--line); border-radius:16px; background:var(--panel);
               padding:17px 20px 14px; overflow:hidden; animation:fxUp .55s cubic-bezier(.2,.7,.3,1) .06s both; }
  .fx-concept::before{ content:""; position:absolute; }
  .fx-concept-h{ display:flex; align-items:baseline; gap:10px; flex-wrap:wrap; margin-bottom:2px; }
  .fx-concept-t{ font-size:12px; font-weight:800; text-transform:uppercase; letter-spacing:.06em; color:var(--text); }
  .fx-concept-sub{ font-size:12px; color:var(--muted); }
  .fx-concept .fx-relay{ margin-top:14px; }
  .fx-legend-row{ display:flex; flex-wrap:wrap; gap:7px 9px; margin-top:16px; padding-top:13px;
                  border-top:1px solid color-mix(in srgb,var(--line) 60%,transparent); }
  .fx-lchip{ display:inline-flex; align-items:center; gap:6px; font-size:11.5px; color:var(--muted); }
  .fx-lchip i{ width:9px; height:9px; border-radius:3px; background:var(--c,var(--muted)); flex:none; }
  .fx-lchip b{ color:var(--text); font-weight:700; }
  .fx-lchip.e i{ --c:var(--fx-early); } .fx-lchip.c i{ --c:var(--fx-confirm); }
  .fx-lchip.l i{ --c:var(--fx-late); }  .fx-lchip.f i{ --c:var(--fx-fade); }

  /* entry-gate banner */
  .fx-gate{ display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin:14px 0 2px; padding:12px 17px;
            border-radius:13px; border:1px solid var(--line); background:var(--panel);
            border-left:4px solid var(--muted); animation:fxUp .55s cubic-bezier(.2,.7,.3,1) .1s both; }
  .fx-gate.open{ border-left-color:var(--up); background:color-mix(in srgb,var(--up) 6%,var(--panel)); }
  .fx-gate-ic{ font-size:17px; }
  .fx-gate-k{ font-size:10.5px; font-weight:800; letter-spacing:.07em; text-transform:uppercase; color:var(--muted); }
  .fx-gate-v{ font-size:15px; font-weight:800; color:var(--text); }
  .fx-gate.open .fx-gate-v{ color:var(--ink-up, var(--up)); }
  .fx-gate-d{ font-size:12px; color:var(--muted); flex:1 1 260px; line-height:1.4; }

  /* ---------- section chrome (shared, matches transmission) ---------- */
  .fx-sec{ display:flex; align-items:baseline; gap:10px; flex-wrap:wrap; margin:34px 0 3px; }
  .fx-sec .sh-dot{ width:9px; height:9px; border-radius:3px; background:var(--sh-c,var(--fx-dawn1)); align-self:center; flex:none; }
  .fx-sec h2{ font-size:13px; font-weight:800; text-transform:uppercase; letter-spacing:.06em; color:var(--text); margin:0; }
  .fx-sec .n{ font-size:12px; font-weight:700; color:var(--muted); }
  .fx-ssub{ font-size:13px; color:var(--muted); margin:0 0 14px; line-height:1.5; }

  /* ---------- heating-up board ---------- */
  .fx-heat-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(232px,1fr)); gap:12px; }
  .fx-heat{ position:relative; border:1px solid var(--line); border-radius:14px; background:var(--panel);
            padding:14px 15px 13px; overflow:hidden; animation:fxUp .5s cubic-bezier(.2,.7,.3,1) both; }
  .fx-heat::before{ content:""; position:absolute; inset:0 0 auto 0; height:3px; background:var(--st,var(--fx-dawn1)); }
  .fx-heat-top{ display:flex; align-items:flex-start; justify-content:space-between; gap:10px; }
  .fx-heat-nm{ font-size:14.5px; font-weight:800; color:var(--text); line-height:1.2; }
  .fx-heat-badge{ font-size:9.5px; font-weight:800; letter-spacing:.05em; text-transform:uppercase; padding:3px 8px;
                  border-radius:7px; white-space:nowrap; color:var(--st,var(--muted));
                  background:color-mix(in srgb,var(--st,var(--muted)) 14%,var(--panel));
                  border:1px solid color-mix(in srgb,var(--st,var(--muted)) 30%,transparent); }
  .fx-heat-meter{ height:6px; border-radius:3px; background:color-mix(in srgb,var(--line) 60%,transparent);
                  overflow:hidden; margin:11px 0 8px; }
  .fx-heat-meter i{ display:block; height:100%; border-radius:3px; background:linear-gradient(90deg,var(--fx-dawn1),var(--fx-dawn2));
                    animation:fxGrow .8s cubic-bezier(.2,.7,.3,1) both; transform-origin:left; }
  .fx-heat-src{ display:flex; flex-wrap:wrap; gap:4px; margin-bottom:8px; }
  .fx-src{ font-size:10px; font-weight:700; padding:2px 7px; border-radius:6px; color:var(--fx-dawn1);
           background:color-mix(in srgb,var(--fx-dawn1) 11%,transparent); text-transform:capitalize; }
  .fx-heat-meta{ font-size:11px; color:var(--muted); line-height:1.4; }
  .fx-heat-meta b{ color:var(--text); font-weight:700; }
  .fx-heat-conf{ color:var(--ink-up, var(--up)); font-weight:700; }
  .fx-meta-card{ grid-column:1/-1; border-left:4px solid var(--warn); background:color-mix(in srgb,var(--warn) 6%,var(--panel)); }
  .fx-meta-card::before{ background:var(--warn); }
  .fx-empty{ border:1px dashed var(--line); border-radius:14px; background:var(--panel); padding:16px 18px;
             font-size:13px; color:var(--muted); line-height:1.55; }
  .fx-empty b{ color:var(--text); }
  .fx-partial{ display:flex; flex-wrap:wrap; gap:7px; margin-top:12px; }
  .fx-pc{ font-size:11px; padding:5px 11px; border-radius:8px; background:var(--panel); border:1px solid var(--line);
          color:var(--muted); cursor:help; } .fx-pc b{ color:var(--text); }

  /* ---------- theme cards ---------- */
  .fx-cards{ display:flex; flex-direction:column; gap:12px; margin-top:6px; }
  .fx-card{ position:relative; border:1px solid var(--line); border-radius:16px; background:var(--panel);
            padding:17px 19px 15px; overflow:hidden; animation:fxUp .5s cubic-bezier(.2,.7,.3,1) both;
            transition:transform .18s ease, box-shadow .2s ease, border-color .2s ease; }
  .fx-card::before{ content:""; position:absolute; inset:0 0 auto 0; height:3px; background:var(--st,var(--muted)); }
  .fx-card:hover{ transform:translateY(-2px); box-shadow:0 12px 30px -18px rgba(10,15,40,.4);
                  border-color:color-mix(in srgb,var(--st,var(--line)) 30%,var(--line)); }
  .fx-card.fx-t-PRECIPICE{ --st:var(--fx-early); } .fx-card.fx-t-BROADENING{ --st:var(--fx-confirm); }
  .fx-card.fx-t-RE-RATING{ --st:var(--fx-late); }  .fx-card.fx-t-GLUT-RISK{ --st:var(--fx-fade); }
  .fx-card.fx-t-WATCH,.fx-card.fx-t-UNKNOWN{ --st:var(--muted); }
  .fx-crow{ display:flex; align-items:center; gap:12px; flex-wrap:wrap; }
  .fx-score{ display:inline-flex; flex-direction:column; align-items:center; justify-content:center; min-width:48px;
             padding:5px 9px; border-radius:11px; cursor:help; flex:none;
             border:1px solid color-mix(in srgb,var(--st,var(--muted)) 34%,transparent);
             background:color-mix(in srgb,var(--st,var(--muted)) 11%,var(--panel)); }
  .fx-score .s{ font-size:21px; font-weight:800; line-height:1; color:var(--st,var(--text)); font-variant-numeric:tabular-nums; }
  .fx-score .l{ font-size:8px; font-weight:700; letter-spacing:.05em; text-transform:uppercase; color:var(--muted); margin-top:2px; }
  .fx-nm{ font-size:17px; font-weight:800; color:var(--text); letter-spacing:-.01em; line-height:1.15; }
  .fx-badge{ display:inline-flex; align-items:center; gap:5px; font-size:11px; font-weight:800; letter-spacing:.04em;
             text-transform:uppercase; padding:4px 11px; border-radius:999px; white-space:nowrap; color:var(--st,var(--muted));
             background:color-mix(in srgb,var(--st,var(--muted)) 13%,var(--panel));
             border:1px solid color-mix(in srgb,var(--st,var(--muted)) 30%,transparent); }
  .fx-badge .fxdot{ width:6px; height:6px; border-radius:50%; background:currentColor;
                    animation:fxBreathe 2.4s ease-in-out infinite; flex:none; }
  .fx-prov{ font-size:9.5px; font-weight:700; color:var(--muted); padding:2px 6px; border-radius:5px;
            background:var(--panel2); border:1px dashed var(--line); cursor:help; position:relative; text-transform:none; letter-spacing:0; }
  .fx-tagline{ font-size:11.5px; color:var(--muted); margin-left:auto; }
  .fx-stance-line{ font-size:12.5px; color:var(--st,var(--muted)); font-weight:600; margin:11px 0 2px; line-height:1.45; }
  .fx-why{ font-size:12.5px; color:var(--text); line-height:1.5; margin:8px 0 0; }
  .fx-chips{ display:flex; flex-wrap:wrap; gap:7px; align-items:center; margin-top:11px; }
  .fx-chip{ display:inline-flex; align-items:center; gap:5px; font-size:11px; font-weight:700; padding:5px 11px;
            border-radius:8px; border:1px solid var(--line); background:var(--panel2); color:var(--muted); cursor:default; }
  .fx-chip.entry.ready{ color:var(--ink-up, var(--up)); border-color:color-mix(in srgb,var(--up) 38%,transparent);
                        background:color-mix(in srgb,var(--up) 10%,var(--panel)); }
  .fx-chip.size-add,.fx-chip.size-core{ color:var(--ink-up, var(--up)); border-color:color-mix(in srgb,var(--up) 34%,transparent); background:color-mix(in srgb,var(--up) 9%,var(--panel)); }
  .fx-chip.size-starter{ color:var(--ink-info, var(--info)); border-color:color-mix(in srgb,var(--info) 34%,transparent); background:color-mix(in srgb,var(--info) 9%,var(--panel)); }
  .fx-chip.size-trim,.fx-chip.size-exit,.fx-chip.exit{ color:var(--ink-down, var(--down)); border-color:color-mix(in srgb,var(--down) 38%,transparent); background:color-mix(in srgb,var(--down) 10%,var(--panel)); }
  .fx-chip.conf.lit{ color:var(--ink-info, var(--info)); border-color:color-mix(in srgb,var(--info) 34%,transparent); background:color-mix(in srgb,var(--info) 9%,var(--panel)); }
  .fx-chip.feed-warn{ color:var(--ink-warn, var(--warn)); border-color:color-mix(in srgb,var(--warn) 36%,transparent); background:color-mix(in srgb,var(--warn) 9%,var(--panel)); }
  .fx-chip.feed-cool{ color:var(--ink-down, var(--down)); border-color:color-mix(in srgb,var(--down) 36%,transparent); background:color-mix(in srgb,var(--down) 9%,var(--panel)); }
  .fx-cap{ font-size:10.5px; color:var(--muted); margin-top:8px; font-style:italic; }

  /* ---------- inline stance legend (themes header) ---------- */
  .fx-legend-inline{ display:flex; flex-wrap:wrap; gap:6px 12px; margin:0 0 14px; }

  /* ---------- watch shelf ---------- */
  .fx-watch-shelf{ margin-top:14px; border:1px solid var(--line); border-radius:16px; background:var(--panel); padding:15px 18px; }
  .fx-watch-shelf-h{ display:flex; align-items:baseline; gap:10px; flex-wrap:wrap; margin-bottom:5px; }
  .fx-watch-shelf-t{ font-size:13px; font-weight:800; color:var(--text); }
  .fx-watch-shelf-n{ font-size:11.5px; font-weight:700; color:var(--muted); margin-left:auto; }
  .fx-watch-shelf-sub{ font-size:12px; color:var(--muted); line-height:1.45; margin-bottom:11px; }
  .fx-wrow{ display:grid; grid-template-columns:minmax(150px,1.1fr) auto auto 2fr; align-items:center; gap:11px;
            padding:9px 0; border-top:1px solid color-mix(in srgb,var(--line) 55%,transparent); }
  .fx-wrow:first-of-type{ border-top:none; }
  @media(max-width:620px){ .fx-wrow{ grid-template-columns:1fr auto; } .fx-wrow .wwhy{ grid-column:1/-1; } }
  .fx-wrow .wname{ font-size:13.5px; font-weight:700; color:var(--text); }
  .fx-wrow .wbadge{ font-size:10px; font-weight:800; text-transform:uppercase; letter-spacing:.03em; padding:3px 9px;
                    border-radius:7px; white-space:nowrap; color:var(--st,var(--muted));
                    background:color-mix(in srgb,var(--st,var(--muted)) 13%,var(--panel)); }
  .fx-wrow.fx-t-PRECIPICE{ --st:var(--fx-early); } .fx-wrow.fx-t-BROADENING{ --st:var(--fx-confirm); }
  .fx-wrow.fx-t-RE-RATING{ --st:var(--fx-late); } .fx-wrow.fx-t-GLUT-RISK{ --st:var(--fx-fade); }
  .fx-wrow.fx-t-WATCH,.fx-wrow.fx-t-UNKNOWN{ --st:var(--muted); }
  .fx-wrow .wbreadth{ font-size:11.5px; color:var(--muted); font-variant-numeric:tabular-nums; white-space:nowrap; }
  .fx-wrow .wwhy{ font-size:11.5px; color:var(--muted); line-height:1.4; }

  /* ---------- market backdrop ---------- */
  .fx-backdrop{ display:grid; grid-template-columns:1fr 1fr; gap:12px; }
  @media(max-width:640px){ .fx-backdrop{ grid-template-columns:1fr; } }
  .fx-bd{ border:1px solid var(--line); border-radius:14px; background:var(--panel); padding:14px 17px;
          border-left:4px solid var(--c,var(--muted)); }
  .fx-bd .k{ font-size:10.5px; font-weight:800; letter-spacing:.06em; text-transform:uppercase; color:var(--muted); }
  .fx-bd .v{ font-size:21px; font-weight:800; margin:4px 0 2px; color:var(--c,var(--text)); font-variant-numeric:tabular-nums; }
  .fx-bd .d{ font-size:12px; color:var(--muted); line-height:1.45; }
  .fx-bd .d b{ color:var(--text); }
  .fx-bd.pool{ --c:var(--fx-dawn2); } .fx-bd.tight{ --c:var(--warn); } .fx-bd.loose{ --c:var(--muted); }

  /* ---------- discover ---------- */
  .fx-disco-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(250px,1fr)); gap:12px; }
  .fx-cand{ border:1px solid var(--line); border-radius:13px; background:var(--panel); padding:13px 15px; }
  .fx-cand-h{ display:flex; align-items:baseline; gap:8px; flex-wrap:wrap; }
  .fx-cand-nm{ font-size:14px; font-weight:800; color:var(--text); line-height:1.2; }
  .fx-cand-sic{ font-size:10px; font-weight:700; color:var(--muted); }
  .fx-cand-vel{ font-size:10.5px; font-weight:800; color:var(--ink-up, var(--up)); margin-left:auto; }
  .fx-cand-meta{ font-size:11.5px; color:var(--muted); margin:7px 0; } .fx-cand-meta b{ color:var(--fx-dawn1); }
  .fx-cand-tk{ display:flex; flex-wrap:wrap; gap:4px; margin-bottom:7px; }
  .fx-tk{ font-size:10.5px; font-weight:700; padding:2px 7px; border-radius:6px; background:var(--panel2);
          border:1px solid var(--line); color:var(--text); }
  .fx-cand-ph{ display:flex; flex-wrap:wrap; gap:4px; }
  .fx-ph{ font-size:10px; font-style:italic; color:var(--fx-dawn1); padding:2px 6px; border-radius:6px;
          background:color-mix(in srgb,var(--fx-dawn1) 9%,transparent); }

  /* ---------- study shelf (Tier 3 — everything with the machinery showing) ---------- */
  .fx-study{ margin-top:16px; }
  .fx-study details{ border:1px solid var(--line); border-radius:14px; background:var(--panel); margin-bottom:11px; overflow:hidden; }
  .fx-study summary{ list-style:none; cursor:pointer; padding:15px 19px; display:flex; align-items:center; gap:12px;
                     font-size:14px; font-weight:700; color:var(--text); transition:background .18s; }
  .fx-study summary::-webkit-details-marker{ display:none; }
  .fx-study summary:hover{ background:color-mix(in srgb,var(--fx-dawn1) 5%,var(--panel)); }
  .fx-study summary .sh-ic{ flex:none; width:28px; height:28px; border-radius:9px; display:flex; align-items:center;
                            justify-content:center; font-size:14px; background:color-mix(in srgb,var(--fx-dawn1) 10%,var(--panel)); }
  .fx-study summary .sh-hint{ margin-left:auto; font-size:11px; font-weight:600; color:var(--muted); }
  .fx-study summary .sh-car{ flex:none; font-size:11px; color:var(--muted); transition:transform .25s; }
  .fx-study details[open] summary .sh-car{ transform:rotate(90deg); }
  .fx-study .sh-body{ padding:8px 19px 19px; border-top:1px solid var(--line); font-size:12.5px; color:var(--text); line-height:1.6; }
  .fx-study .sh-body p{ margin:0 0 10px; color:var(--muted); } .fx-study .sh-body p b{ color:var(--text); }
  .fx-note{ font-size:12.5px; color:var(--muted); line-height:1.6; } .fx-note b{ color:var(--text); }
  .fx-recgrid{ display:flex; flex-wrap:wrap; gap:7px; margin-top:4px; }
  .fx-rchip{ font-size:11px; padding:5px 11px; border-radius:8px; background:var(--panel2); border:1px solid var(--line); color:var(--muted); }
  .fx-rchip b{ color:var(--text); }
  .fx-ai-th{ border-left:3px solid var(--fx-dawn1); padding:2px 0 2px 12px; margin:10px 0; }
  .fx-ai-mech{ font-size:12.5px; line-height:1.5; color:var(--text); } .fx-ai-mech b{ color:var(--text); }
  .fx-ai-conf{ font-size:8.5px; font-weight:800; text-transform:uppercase; padding:1px 6px; border-radius:5px;
               background:color-mix(in srgb,var(--cc,var(--muted)) 16%,transparent); color:var(--cc,var(--muted)); }
  .c-high{ --cc:var(--up); } .c-medium{ --cc:var(--info); } .c-low{ --cc:var(--muted); }
  .fx-ai-no{ font-size:11.5px; color:var(--ink-info, var(--info)); margin-top:3px; } .fx-ai-kill{ font-size:10.5px; color:var(--muted); margin-top:4px; }
  .fx-kc{ display:inline-block; font-size:10px; padding:1px 6px; margin:1px 4px 1px 0; border-radius:5px; background:var(--panel2); border:1px solid var(--line); }
  .fx-mon{ display:inline-flex; align-items:center; gap:9px; flex-wrap:wrap; padding:8px 13px; border-radius:10px;
           border:1px solid var(--line); background:var(--panel2); font-size:12px; margin:2px 0 10px; }
  .fx-mon.broken{ border-color:color-mix(in srgb,var(--down) 40%,transparent); background:color-mix(in srgb,var(--down) 8%,var(--panel)); }
  .fx-mon.weak{ border-color:color-mix(in srgb,var(--warn) 40%,transparent); background:color-mix(in srgb,var(--warn) 8%,var(--panel)); }
  .fx-mon b.mb{ color:var(--ink-down, var(--down)); } .fx-mon b.mw{ color:var(--ink-warn, var(--warn)); } .fx-mon b.mo{ color:var(--ink-up, var(--up)); }
  /* divergence mini-cards */
  .fx-div-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(180px,1fr)); gap:10px; margin:6px 0 10px; }
  .fx-div-card{ border:1px solid var(--line); border-left:4px solid var(--c,var(--line)); border-radius:11px; padding:11px 12px;
                background:color-mix(in srgb,var(--c,var(--panel)) 6%,var(--panel)); }
  .q-hidden_opportunity{ --c:var(--up); } .q-confirmed{ --c:var(--info); } .q-hype_risk{ --c:var(--down); } .q-ignore{ opacity:.5; }
  .fx-div-nm{ font-size:11px; font-weight:700; color:var(--muted); text-transform:uppercase; letter-spacing:.05em; }
  .fx-div-q{ font-size:12.5px; font-weight:800; color:var(--c,var(--text)); margin:3px 0 6px; }
  .fx-div-exp{ font-size:9.5px; font-weight:800; color:var(--ink-warn, var(--warn)); background:color-mix(in srgb,var(--warn) 12%,transparent);
               border-radius:5px; padding:2px 6px; margin-bottom:5px; display:inline-block; }
  .fx-div-bars{ display:flex; flex-direction:column; gap:4px; }
  .fx-div-br{ display:flex; align-items:center; gap:6px; font-size:9.5px; color:var(--muted); }
  .fx-div-br .lbl{ width:34px; flex:none; font-weight:700; }
  .fx-div-br .wrap{ flex:1; height:5px; background:color-mix(in srgb,var(--line) 60%,transparent); border-radius:3px; overflow:hidden; }
  .fx-div-br .wrap i{ display:block; height:100%; border-radius:3px; } .fx-div-br .wrap i.n{ background:var(--warn); } .fx-div-br .wrap i.m{ background:var(--up); }
  .fx-div-br .val{ width:30px; text-align:right; flex:none; font-variant-numeric:tabular-nums; }
  /* tables (policy / subsector) */
  .fx-tbl{ width:100%; border-collapse:collapse; font-size:12px; margin-top:6px; }
  .fx-tbl th{ text-align:left; font-size:10px; font-weight:800; letter-spacing:.04em; text-transform:uppercase; color:var(--muted);
              padding:6px 9px; border-bottom:1px solid var(--line); }
  .fx-tbl th.num,.fx-tbl td.num{ text-align:right; font-variant-numeric:tabular-nums; }
  .fx-tbl td{ padding:7px 9px; border-bottom:1px solid color-mix(in srgb,var(--line) 55%,transparent); color:var(--text); }
  .fx-tbl tr:last-child td{ border-bottom:none; }
  .fx-rstage{ font-size:9.5px; font-weight:800; padding:2px 7px; border-radius:6px; color:var(--st,var(--muted));
              background:color-mix(in srgb,var(--st,var(--muted)) 13%,var(--panel)); }
  .fx-rstage.fx-t-PRECIPICE{ --st:var(--fx-early); } .fx-rstage.fx-t-BROADENING{ --st:var(--fx-confirm); }
  .fx-rstage.fx-t-RE-RATING{ --st:var(--fx-late); } .fx-rstage.fx-t-GLUT-RISK{ --st:var(--fx-fade); }
  .fx-rstage.fx-t-WATCH,.fx-rstage.fx-t-UNKNOWN{ --st:var(--muted); }
  tr.pol-urgent td{ background:color-mix(in srgb,var(--down) 7%,transparent); } tr.pol-soon td{ background:color-mix(in srgb,var(--warn) 5%,transparent); }
  .fx-scar{ font-weight:800; color:var(--ink-warn, var(--warn)); cursor:help; }
  /* health strip (demoted to study) */
  .fx-hchips{ display:flex; flex-wrap:wrap; gap:5px; margin-top:4px; }
  .fx-hchip{ display:inline-flex; align-items:center; gap:5px; font-size:10px; font-weight:700; padding:3px 9px; border-radius:7px;
             border:1px solid var(--line); background:var(--panel2); color:var(--muted); cursor:help; }
  .fx-hchip.hl-LIVE{ color:var(--ink-up, var(--up)); border-color:color-mix(in srgb,var(--up) 35%,transparent); }
  .fx-hchip.hl-PARTIAL{ color:var(--ink-warn, var(--warn)); border-color:color-mix(in srgb,var(--warn) 35%,transparent); }
  .fx-hchip .hdot{ width:6px; height:6px; border-radius:50%; background:currentColor; flex:none; }

  /* ---------- ?-help tip (CSS-only bilingual popover) ---------- */
  .fxq{ position:relative; display:inline-flex; align-items:center; justify-content:center; width:16px; height:16px;
        border-radius:50%; border:1px solid var(--line); color:var(--muted); font-size:10px; font-weight:700; cursor:help; flex:none; }
  .fxq .fxq-tip,.fx-prov .fxq-tip{ display:none; position:absolute; top:22px; left:50%; transform:translateX(-50%); z-index:40; width:250px;
        padding:11px 13px; border-radius:11px; background:var(--panel); border:1px solid var(--line);
        box-shadow:var(--popover-shadow,0 12px 30px -12px rgba(9,17,40,.4)); font-size:12px; font-weight:500; color:var(--text);
        line-height:1.5; text-transform:none; letter-spacing:0; text-align:left; }
  .fxq:hover .fxq-tip,.fxq:focus .fxq-tip,.fx-prov:hover .fxq-tip,.fx-prov:focus .fxq-tip{ display:block; }

  .fx-disclosure{ font-size:12.5px; color:var(--muted); margin:26px 0 0; padding-top:14px; border-top:1px solid var(--line); line-height:1.6; }

  /* ---------- narrow screens: keep the 5-stop relay legible ---------- */
  @media(max-width:560px){
    .fx-slbl{ font-size:9px; letter-spacing:0; }
    .fx-relay.big .fx-slbl{ font-size:9.5px; }
    .fx-relay{ grid-template-columns:repeat(5,1fr); }
    .fx-rail{ left:9%; right:9%; }
    .fx-crow{ gap:9px; } .fx-nm{ font-size:15.5px; }
    .fx-verdict{ font-size:20px; }
  }

  /* ---------- motion ---------- */
  @keyframes fxUp{ from{ opacity:0; transform:translateY(10px); } to{ opacity:1; transform:none; } }
  @keyframes fxBreathe{ 0%,100%{ opacity:.45; transform:scale(.85); } 50%{ opacity:1; transform:scale(1.1); } }
  @keyframes fxGrow{ from{ transform:scaleX(0); } to{ transform:scaleX(1); } }
  @keyframes fxTravel{ 0%{ left:0; opacity:0; } 12%{ opacity:.95; } 88%{ opacity:.95; } 100%{ left:calc(var(--reach,0%) - 22px); opacity:0; } }
  @media (prefers-reduced-motion: reduce){
    .fx-hero,.fx-concept,.fx-gate,.fx-heat,.fx-card,.fx-rail-fill,.fx-heat-meter i{ animation:none; }
    .fxdot,.fx-rail-pulse,.fx-badge .fxdot{ animation:none; }
    .fx-rail-pulse{ display:none; }
    *{ transition:none !important; }
  }

