
  * { box-sizing:border-box; }
  body { background:var(--bg); color:var(--text); font:14px/1.55 var(--font-ui); margin:0; padding:18px; }
  @media (min-width:1100px){ body{ padding:24px max(40px,calc((100vw - 1360px)/2)); } }
  a { text-decoration:none; color:inherit; }
  h1 { font-size:20px; margin:0; letter-spacing:-.01em; }
  h2 { font-size:12px; margin:0 0 8px; color:var(--muted); text-transform:uppercase;
       letter-spacing:.07em; font-weight:600; }
  .mono { font-variant-numeric:tabular-nums; font-family:var(--font-mono); }
  .muted { color:var(--muted); } .sm { font-size:12px; }
  .panel { background:var(--panel); border:1px solid var(--line); border-radius:12px;
           padding:15px 17px; margin-bottom:13px; }

  /* ── severity / semantic palette — language-STABLE tokens only ─────────────
     (--up/--down flip red<->green in zh; --act/--warn/--ok/--info do not, so a
     danger cue never turns green in Chinese.) */
  .c-crit{ color:var(--act); } .bg-crit{ background:var(--act); } .bd-crit{ border-color:color-mix(in srgb,var(--act) 55%,var(--line)); }
  .c-major{ color:var(--warn); } .bg-major{ background:var(--warn); } .bd-major{ border-color:color-mix(in srgb,var(--warn) 55%,var(--line)); }
  .c-minor{ color:var(--muted); } .bg-minor{ background:var(--muted); } .bd-minor{ border-color:var(--line); }
  .c-ok{ color:var(--ok); } .c-info{ color:var(--info); }

  /* help tooltip */
  .help { display:inline-flex; align-items:center; justify-content:center; width:15px;
          height:15px; border-radius:50%; border:1px solid var(--muted); color:var(--muted);
          font-size:10px; font-weight:600; cursor:help; position:relative; vertical-align:middle; margin-left:4px; flex:none; }
  .help .tip { display:none; position:absolute; top:150%; left:0; width:min(320px,80vw);
               background:var(--panel); border:1px solid var(--line); padding:9px 11px;
               border-radius:8px; z-index:60; font-size:12px; line-height:1.45; color:var(--text);
               font-weight:400; box-shadow:var(--popover-shadow); pointer-events:auto; cursor:auto;
               max-height:min(60vh,420px); overflow-y:auto; overscroll-behavior:contain; text-transform:none; letter-spacing:normal; }
  .help:hover::before { content:''; position:absolute; top:100%; left:-30px; right:-30px; height:12px; }
  .help:hover .tip { display:block; }

  /* ── HERO: the desk read ─────────────────────────────────────────────── */
  .hero { background:var(--glass-bg); backdrop-filter:var(--glass-blur); -webkit-backdrop-filter:var(--glass-blur);
          border:1px solid var(--glass-brd); border-radius:14px; padding:18px 20px; margin-bottom:13px;
          box-shadow:var(--glass-shadow); }
  .hero-top { display:flex; flex-wrap:wrap; align-items:baseline; gap:10px 14px; }
  .hero-eyebrow { font-size:11px; text-transform:uppercase; letter-spacing:.09em; color:var(--muted); font-weight:600; }
  .hero-grid { display:grid; grid-template-columns:minmax(0,1.6fr) minmax(240px,1fr); gap:20px; margin-top:14px; align-items:center; }
  @media (max-width:820px){ .hero-grid{ grid-template-columns:1fr; gap:16px; } }

  .stance { display:flex; align-items:center; gap:12px; flex-wrap:wrap; }
  .stance .word { font-size:30px; font-weight:800; letter-spacing:-.02em; line-height:1; }
  .stance.risk-off .word{ color:var(--act); } .stance.mixed .word{ color:var(--warn); } .stance.constructive .word{ color:var(--ok); }
  .stance .badge { font-size:11px; font-weight:700; padding:3px 9px; border-radius:20px; border:1px solid currentColor; }
  .read-line { font-size:15px; line-height:1.5; margin-top:11px; max-width:62ch; }
  /* pressure gauge — the signature element: a risk-desk pressure read */
  .gauge { margin-top:14px; }
  .gauge-track { position:relative; height:10px; border-radius:6px; overflow:hidden;
                 background:linear-gradient(90deg, color-mix(in srgb,var(--ok) 60%,transparent) 0%,
                   color-mix(in srgb,var(--warn) 55%,transparent) 50%, color-mix(in srgb,var(--act) 65%,transparent) 100%); }
  .gauge-mark { position:absolute; top:-4px; width:3px; height:18px; border-radius:2px; background:var(--text);
                box-shadow:0 0 0 2px var(--panel); transition:left .5s cubic-bezier(.2,.7,.2,1); }
  .gauge-scale { display:flex; justify-content:space-between; font-size:10px; color:var(--muted); margin-top:5px; text-transform:uppercase; letter-spacing:.05em; }

  /* scoreboard */
  .score { display:grid; grid-template-columns:repeat(2,1fr); gap:8px; }
  .score .s { border:1px solid var(--line); border-radius:10px; padding:10px 12px; background:color-mix(in srgb,var(--panel) 70%,transparent); }
  .score .s .n { font-size:23px; font-weight:800; line-height:1; font-variant-numeric:tabular-nums; }
  .score .s .lab { font-size:10.5px; text-transform:uppercase; letter-spacing:.04em; color:var(--muted); margin-top:4px; }
  .score .s.act .n{ color:var(--act); } .score .s.watch .n{ color:var(--warn); }
  .vol-pill { display:inline-flex; align-items:center; gap:6px; font-size:11.5px; margin-top:10px;
              padding:4px 10px; border-radius:16px; border:1px solid var(--line); background:color-mix(in srgb,var(--panel) 60%,transparent); color:var(--muted); }
  .vol-pill b { color:var(--text); }

  /* ── storyline strip ─────────────────────────────────────────────────── */
  .stories { display:grid; grid-template-columns:repeat(auto-fill,minmax(230px,1fr)); gap:10px; }
  .story { text-align:left; border:1px solid var(--line); border-left:3px solid var(--stroke,var(--muted)); border-radius:10px;
           padding:11px 13px; background:var(--panel2); cursor:pointer; color:inherit; font:inherit;
           transition:border-color .15s, transform .12s, box-shadow .15s; display:flex; flex-direction:column; gap:6px; }
  .story:hover { transform:translateY(-1px); box-shadow:var(--card-shadow); }
  .story.on { box-shadow:0 0 0 1px var(--stroke) inset; }
  .story .st-top { display:flex; align-items:center; gap:8px; }
  .story .st-ic { font-size:16px; } .story .st-name { font-weight:700; font-size:13.5px; }
  .story .st-cnt { margin-left:auto; font-size:12px; color:var(--muted); font-variant-numeric:tabular-nums; }
  .story .st-gist { font-size:12px; color:var(--muted); line-height:1.4; }
  .story .st-line { font-size:12.5px; line-height:1.4; }
  .story .st-tags { display:flex; flex-wrap:wrap; gap:5px; margin-top:1px; }
  .st-tag { font-size:10px; font-weight:700; padding:1px 7px; border-radius:7px; border:1px solid var(--line); color:var(--muted); }
  .st-tag.act{ color:var(--act); border-color:color-mix(in srgb,var(--act) 45%,var(--line)); }
  .st-tag.persist{ color:var(--info); border-color:color-mix(in srgb,var(--info) 45%,var(--line)); }
  .asset-chip { font-family:var(--font-mono); font-size:10.5px; padding:0 5px; border-radius:5px; background:color-mix(in srgb,var(--muted) 16%,transparent); color:var(--text); }

  /* cluster stroke colours (language-stable) */
  .cl-stress{ --stroke:var(--act); } .cl-regime{ --stroke:var(--q4); } .cl-liquidity{ --stroke:var(--info); }
  .cl-rotation{ --stroke:var(--q2); } .cl-single_name{ --stroke:var(--orange); } .cl-other{ --stroke:var(--muted); }

  /* ── backdrop strip ──────────────────────────────────────────────────── */
  .ctx { display:grid; grid-template-columns:repeat(auto-fit,minmax(190px,1fr)); gap:10px; }
  .ctx .cell { border:1px solid var(--line); border-radius:10px; padding:10px 12px; background:var(--panel2); }
  .ctx .cell .k { font-size:10.5px; text-transform:uppercase; letter-spacing:.05em; color:var(--muted); display:flex; align-items:center; }
  .ctx .cell .vv { font-size:15px; font-weight:600; margin-top:3px; }
  .ctx .cell .vsub { font-size:11.5px; color:var(--muted); margin-top:2px; }
  .ca-confirm{ color:var(--ok); } .ca-diverge{ color:var(--act); }

  /* ── filter bar (sticky) ─────────────────────────────────────────────── */
  .filterbar { position:sticky; top:0; z-index:30; background:color-mix(in srgb,var(--bg) 88%,transparent);
               backdrop-filter:blur(8px); -webkit-backdrop-filter:blur(8px); border:1px solid var(--line);
               border-radius:12px; padding:10px 13px; margin-bottom:13px; }
  .filterbar .row { display:flex; flex-wrap:wrap; gap:7px; align-items:center; }
  .filterbar .row + .row { margin-top:9px; }
  .fsearch { flex:1 1 220px; min-width:160px; display:flex; align-items:center; gap:7px; padding:6px 11px;
             border:1px solid var(--line); border-radius:9px; background:var(--panel2); }
  .fsearch input { flex:1; border:0; background:transparent; color:var(--text); font:13px var(--font-ui); outline:none; }
  .flabel { font-size:11px; color:var(--muted); text-transform:uppercase; letter-spacing:.05em; margin-right:3px; }
  .fbtn { font:600 12px var(--font-ui); padding:5px 11px; border-radius:16px; border:1px solid var(--line);
          background:var(--panel2); color:var(--muted); cursor:pointer; user-select:none; transition:.12s; display:inline-flex; align-items:center; gap:6px; }
  .fbtn:hover { color:var(--text); }
  .fbtn .cnt { font-size:10.5px; font-variant-numeric:tabular-nums; opacity:.7; }
  .fbtn.on { color:var(--text); border-color:var(--text); background:color-mix(in srgb,var(--text) 8%,var(--panel2)); }
  .fbtn.on .cnt { opacity:1; }
  .fbtn.quick.on { color:var(--info); border-color:var(--info); }
  .showing { font-size:12px; color:var(--muted); margin-left:auto; }
  .showing b { color:var(--text); }
  .freset { font:600 12px var(--font-ui); color:var(--link); cursor:pointer; background:none; border:0; padding:0; }
  .freset:hover { text-decoration:underline; }
  :focus-visible { outline:2px solid var(--info); outline-offset:2px; border-radius:4px; }

  /* ── alert cards ─────────────────────────────────────────────────────── */
  .feed { display:flex; flex-direction:column; gap:9px; }
  .ac { display:grid; grid-template-columns:64px 1fr; border:1px solid var(--line);
        border-radius:11px; overflow:hidden; background:var(--panel); scroll-margin-top:120px; }
  .ac.hide { display:none; }
  .ac .rail { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:5px;
              padding:11px 6px; border-right:1px solid var(--line); background:var(--panel2); position:relative; }
  .ac .pr { font-size:21px; font-weight:800; line-height:1; font-variant-numeric:tabular-nums; }
  .ac .prl { font-size:8.5px; text-transform:uppercase; letter-spacing:.03em; color:var(--muted); text-align:center; }
  .ac .prbar { width:34px; height:3px; border-radius:2px; background:var(--line); overflow:hidden; }
  .ac .prbar i { display:block; height:100%; border-radius:2px; }
  .ac.sev-crit { border-left:4px solid var(--act); } .ac.sev-crit .pr{ color:var(--act); }
  .ac.sev-major{ border-left:4px solid var(--warn); } .ac.sev-major .pr{ color:var(--warn); }
  .ac.sev-minor{ border-left:4px solid var(--line); }
  .ac .body { padding:11px 14px; min-width:0; }
  .ac .meta { display:flex; flex-wrap:wrap; align-items:center; gap:7px; font-size:11.5px; color:var(--muted); }
  .ac .meta .src { color:var(--text); font-weight:600; }
  .dot { width:8px; height:8px; border-radius:50%; display:inline-block; flex:none; }
  .sevpill { font-size:10.5px; font-weight:700; padding:1px 8px; border-radius:8px; border:1px solid; display:inline-flex; align-items:center; gap:5px; text-transform:capitalize; }
  .lifepill { font-size:10px; font-weight:700; padding:1px 8px; border-radius:8px; letter-spacing:.02em; }
  .life-new{ color:var(--info); border:1px solid color-mix(in srgb,var(--info) 45%,var(--line)); }
  .life-persisting{ color:var(--warn); border:1px solid color-mix(in srgb,var(--warn) 50%,var(--line)); background:color-mix(in srgb,var(--warn) 8%,transparent); }
  .life-fading{ color:var(--muted); border:1px dashed var(--line); }
  .ac .hl { font-size:15px; font-weight:600; margin:6px 0 2px; line-height:1.35; }
  .ac .dt { font-size:12.5px; color:var(--muted); line-height:1.45; }
  .ac .row2 { display:flex; flex-wrap:wrap; gap:6px; align-items:center; margin-top:9px; }
  .pill { font-size:10.5px; font-weight:700; padding:2px 9px; border-radius:8px; white-space:nowrap;
          border:1px solid var(--line); display:inline-flex; align-items:center; gap:4px; }
  .a-high{ color:var(--act); border-color:color-mix(in srgb,var(--act) 55%,var(--line)); }
  .a-reduce{ color:var(--warn); border-color:color-mix(in srgb,var(--warn) 55%,var(--line)); }
  .a-confirm{ color:var(--info); border-color:color-mix(in srgb,var(--info) 50%,var(--line)); }
  .a-watch{ color:var(--text); } .a-context{ color:var(--muted); }
  .tag { font-size:10.5px; color:var(--muted); border:1px solid var(--line); border-radius:8px; padding:2px 8px; display:inline-flex; align-items:center; gap:4px; }
  .tag.confirm{ color:var(--ok); border-color:color-mix(in srgb,var(--ok) 45%,var(--line)); }
  .tag.diverge{ color:var(--act); border-color:color-mix(in srgb,var(--act) 45%,var(--line)); }
  .tag.ticker{ font-family:var(--font-mono); color:var(--text); }
  .lnk { color:var(--link); font-weight:600; }
  .newdot { position:absolute; top:6px; right:6px; width:7px; height:7px; border-radius:50%; background:var(--info); box-shadow:0 0 0 2px var(--panel2); }
  /* validation: honest, quiet unless there's a real measured verdict */
  .val { font-size:11px; color:var(--muted); margin-top:9px; display:flex; flex-wrap:wrap; align-items:center; gap:6px; }
  .vpill { font-size:10px; font-weight:700; padding:1px 7px; border-radius:7px; border:1px solid var(--line); }
  .vp-backtested{ color:var(--ok); border-color:color-mix(in srgb,var(--ok) 55%,var(--line)); font-weight:800; }
  .vp-scored,.vp-calibrated{ color:var(--ok); border-color:color-mix(in srgb,var(--ok) 45%,var(--line)); }
  .vp-confirmer{ color:var(--info); border-color:color-mix(in srgb,var(--info) 45%,var(--line)); }
  .vp-no_edge,.vp-killed{ color:var(--act); border-color:color-mix(in srgb,var(--act) 40%,var(--line)); }
  .vp-underpowered{ color:var(--muted); border-style:dashed; }
  .vp-documented,.vp-display{ color:var(--muted); opacity:.85; }
  .empty { color:var(--muted); padding:26px 18px; text-align:center; }
  .empty .big { font-size:15px; color:var(--text); margin-bottom:4px; }
  #noresults { display:none; }
  details.method summary { cursor:pointer; font-weight:600; list-style:none; }
  details.method summary::-webkit-details-marker { display:none; }
  details.method summary::before { content:'▸ '; color:var(--muted); }
  details.method[open] summary::before { content:'▾ '; }
  details.method dl { margin:10px 0 0; } details.method dt { font-weight:600; margin-top:9px; }
  details.method dd { margin:2px 0 0; color:var(--muted); font-size:12.5px; }
  @media (prefers-reduced-motion:reduce){ *{ transition:none !important; } }
  /* ── 红涨绿跌: directional colour flips for Chinese mode ── */
  html[data-lang="zh"] .stance.constructive .word{ color:var(--up); }
  html[data-lang="zh"] .stance.risk-off .word{ color:var(--down); }
  html[data-lang="zh"] .gauge-track{ background:linear-gradient(90deg, color-mix(in srgb,var(--up) 60%,transparent) 0%, color-mix(in srgb,var(--warn) 55%,transparent) 50%, color-mix(in srgb,var(--down) 65%,transparent) 100%); }
