/* ═══ JagSim News desk — ONE implementation, two mounts ═══════════════════════
   Extracted 2026-08-18 from the inline <style> block in news-desk.html so the
   News desk can live INSIDE the Research page (owner: "one pro area … users have
   to flip back and forth for research and news") without the markup or the styles
   being copied. Both surfaces now load THIS file:

     • /research  — News is a mode of the Research desk ([data-ria-pane="news"])
     • /news-desk — the standalone desk, unchanged for anyone with the old link

   EVERY rule is scoped under `.jag-newsdesk`, because the Research page ships its
   own `.lookup`, `.chip`, `.wrap` and friends and the two vocabularies overlap.
   The scope wrapper is on <main> in news-desk.html and on the News pane in
   research.html. Rules that keyed off `body.news-free` keep that hook and gain the
   scope in the middle (`body.news-free .jag-newsdesk .story…`) so the free-tier
   frost still works on both pages.

   The desk's colour vars used to come from news-desk.html's :root. Research.html's
   :root defines DIFFERENT values for some of the same names (--green-dark there is
   the light #0f9d68), so the vars are re-declared on the scope root below and the
   desk paints identically on both pages. Do not delete that block.

   Page chrome (body, .wrap, h1, .lede, .jag-foot) deliberately stayed inline in
   news-desk.html — the Research page has its own shell for all of it.
   ══════════════════════════════════════════════════════════════════════════ */
.jag-newsdesk {
  --bg: #f5f7f9; --surface: #fff; --line: #e4e8ee; --text: #0f172a; --muted: #5b6675;
  --green: var(--jag-green); --green-dark: #00563d; --green-soft: #e8f7ef; --ink: #fff;
  /* Burnt-orange Pro accent: every upgrade / "Unlock with Pro" CTA uses this, never the
     primary green, so it never blends into a green Trade/Buy action next to it. */
  --pro: #BB5C2D; --pro-dark: #a04f26;
  color: var(--text);
}

.jag-newsdesk .desk-grid { display: grid; grid-template-columns: minmax(0, 1fr) 260px; gap: 20px; align-items: start; margin-top: 12px; }
.jag-newsdesk .news-atf { margin-bottom: 8px; }
.jag-newsdesk .news-atf .chips { margin-bottom: 10px; }
.jag-newsdesk .news-atf .lookup { margin-bottom: 10px; }
.jag-newsdesk .news-atf .news-filters { margin-bottom: 4px; }
.jag-newsdesk .pulse-card {
 background: linear-gradient(135deg, #eefaf3 0%, #e3f4ee 100%);
 color: var(--text); border: 1px solid #cdeadd; border-left: 4px solid var(--green);
 border-radius: 16px; padding: 18px 20px; margin: 0 0 22px;
 box-shadow: 0 10px 26px rgba(0, 110, 78, .08); text-align: left;
 }
.jag-newsdesk .pulse-card .k { font-size: 11px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: var(--green-dark); }
.jag-newsdesk .pulse-card .v { margin-top: 10px; font-size: 18px; font-weight: 800; line-height: 1.35; color: var(--text); }
.jag-newsdesk .pulse-card .s { margin-top: 8px; font-size: 12px; color: var(--muted); }
.jag-newsdesk .chips,
.jag-newsdesk .recent-row,
.jag-newsdesk .trend-row { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 12px; align-items: center; }
.jag-newsdesk .recent-label,
.jag-newsdesk .trend-label {
 font-size: 11px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: var(--muted); margin-right: 4px;
 }
.jag-newsdesk .chip {
 border: 1px solid var(--line); background: #fff; border-radius: 999px; padding: 8px 14px;
 font-size: 13px; font-weight: 700; color: var(--muted); cursor: pointer; font-family: inherit;
 }
.jag-newsdesk .chip:hover { border-color: #bfe6d2; color: var(--green-dark); }
.jag-newsdesk .chip.on { background: var(--green-soft); border-color: #bfe6d2; color: var(--green-dark); }
.jag-newsdesk .chip.recent,
.jag-newsdesk .chip.trend { padding: 6px 12px; font-size: 12px; }
.jag-newsdesk .lookup { display: flex; gap: 10px; margin: 0 0 14px; }
.jag-newsdesk .lookup input {
 flex: 1; height: 46px; border: 1px solid var(--line); border-radius: 11px; padding: 0 14px;
 font-size: 15px; text-transform: uppercase; letter-spacing: .02em; background: #fff;
 }
.jag-newsdesk .lookup input:focus { outline: none; border-color: var(--green); box-shadow: 0 0 0 3px rgba(0, 110, 78, .15); }
.jag-newsdesk .lookup button {
 height: 46px; padding: 0 18px; border: 0; border-radius: 11px; background: var(--green);
 color: var(--ink); font-weight: 800; cursor: pointer; font-family: inherit;
 }
.jag-newsdesk .story-list { display: flex; flex-direction: column; gap: 10px; }
.jag-newsdesk .story {
 display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 14px; align-items: start;
 background: var(--surface); border: 1px solid var(--line); border-radius: 14px;
 padding: 16px 18px;
 }
/* Thumbnail (left column). Branded tile when the feed has no image or it fails to load. */
.jag-newsdesk .story .thumb { position: relative; width: 92px; height: 92px; border-radius: 10px; overflow: hidden; display: block; flex: 0 0 auto; text-decoration: none; background: linear-gradient(135deg, #eef4f1 0%, #e2ede8 100%); }
.jag-newsdesk .story .thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.jag-newsdesk .story .thumb .thumb-ph { position: absolute; inset: 0; display: none; align-items: center; justify-content: center; font-size: 15px; font-weight: 900; letter-spacing: .02em; color: var(--green-dark); }
.jag-newsdesk .story .thumb.noimg { background: linear-gradient(135deg, #e8f7ef 0%, #dcefe6 100%); border: 1px solid #cdeadd; }
.jag-newsdesk .story .thumb.noimg .thumb-ph { display: flex; }
.jag-newsdesk .story .story-body { min-width: 0; }
.jag-newsdesk .story .meta .ago { color: var(--muted); text-transform: none; letter-spacing: 0; font-weight: 700; }
/* Sentiment chip: the feed's own read, color-coded. A status indicator, never a CTA. */
.jag-newsdesk .story .sent-chip { display: inline-flex; align-items: center; padding: 2px 9px; border-radius: 999px; font-size: 10px; font-weight: 900; letter-spacing: .04em; text-transform: uppercase; }
.jag-newsdesk .story .sent-chip.pos { color: #0b6b4f; background: #e3f6ee; border: 1px solid #bfe6d2; }
.jag-newsdesk .story .sent-chip.neg { color: #b3241d; background: #fbe8e6; border: 1px solid #f2c9c5; }
.jag-newsdesk .story .sent-chip.neu { color: #51607a; background: #eef1f4; border: 1px solid #e0e6ee; }
.jag-newsdesk .story .meta { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; font-size: 11px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: var(--muted); }
.jag-newsdesk .story .meta .src { color: var(--muted); }
/* Compliance-safe event-type tags, light + on-brand, never a direction. */
.jag-newsdesk .story .event-tag {
 display: inline-flex; align-items: center; padding: 2px 9px; border-radius: 999px;
 font-size: 10px; font-weight: 900; letter-spacing: .05em; text-transform: uppercase;
 background: var(--green-soft); color: var(--green-dark); border: 1px solid #bfe6d2;
 }
.jag-newsdesk .story .event-tag.et-manda { background: #eef0ff; color: #34379c; border-color: #d3d7fb; }
.jag-newsdesk .story .event-tag.et-legal { background: #fbeee6; color: #8a4620; border-color: #f0d6c4; }
.jag-newsdesk .story .event-tag.et-dividend { background: #e3f4f1; color: #0b6b57; border-color: #bfe6dd; }
/* [hidden] MUST WIN. renderNewsCards emits this pill hidden and hydrateClosePills()
   only fills + reveals it when the server says the market is closed. `display:inline-flex`
   here outranks the [hidden] attribute's UA `display:none`, so on every open-market day
   an EMPTY grey pill rendered on every card that had a stock primary. Found 2026-08-22
   in the browser, not the markup — the attribute was correct the whole time. */
.jag-newsdesk .story .close-pill[hidden] { display: none; }
.jag-newsdesk .story .close-pill {
 display: inline-flex; align-items: center; padding: 2px 9px; border-radius: 999px;
 font-size: 10px; font-weight: 800; letter-spacing: .02em; text-transform: none;
 background: #eef1f4; color: #51607a; border: 1px solid #e0e6ee;
 }
.jag-newsdesk .story .title { margin-top: 8px; font-size: 17px; font-weight: 800; line-height: 1.3; color: var(--text); text-decoration: none; display: block; overflow-wrap: break-word; min-width: 0; }
.jag-newsdesk .story .title:hover { color: var(--green-dark); }
.jag-newsdesk .story .teaser { margin-top: 8px; font-size: 13.5px; line-height: 1.45; color: var(--muted); max-width: 62ch; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.jag-newsdesk .story .tickers { margin-top: 10px; display: flex; flex-wrap: wrap; gap: 6px; }
.jag-newsdesk .story .tickers a {
 font-size: 11px; font-weight: 800; text-decoration: none; color: var(--green-dark);
 background: var(--green-soft); padding: 3px 8px; border-radius: 6px;
 }
/* Filter bar: My tickers toggle + event-type chips. */
.jag-newsdesk .news-filters { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 0 0 14px; }
.jag-newsdesk .filters-label { font-size: 11px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: var(--muted); margin-right: 2px; }
.jag-newsdesk .event-sep { width: 1px; height: 22px; background: var(--line); margin: 0 2px; }
.jag-newsdesk .story .actions { display: flex; flex-direction: column; gap: 8px; align-items: stretch; min-width: 118px; }
.jag-newsdesk .story .actions a {
 text-align: center; font-size: 12px; font-weight: 800; text-decoration: none; border-radius: 8px; padding: 9px 10px;
 }
.jag-newsdesk .story .actions .trade { background: var(--green); color: var(--ink); }
.jag-newsdesk .story .actions .read { background: #fff; border: 1px solid var(--line); color: var(--text); }
.jag-newsdesk .practice-rail {
 position: sticky; top: 88px;
 background: #fff; color: var(--text);
 border: 1px solid var(--line); border-top: 4px solid var(--green);
 border-radius: 16px; padding: 20px 18px;
 box-shadow: 0 12px 30px rgba(15, 23, 42, .06);
 }
.jag-newsdesk .practice-rail .k { font-size: 11px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: var(--green-dark); }
.jag-newsdesk .practice-rail .sym { margin-top: 10px; font-size: 22px; font-weight: 900; letter-spacing: -.02em; color: var(--green-dark); }
.jag-newsdesk .practice-rail .hint { margin-top: 8px; font-size: 13px; line-height: 1.45; color: var(--muted); }
.jag-newsdesk .practice-rail a.cta {
 display: block; margin-top: 16px; text-align: center; text-decoration: none;
 background: var(--green); color: var(--ink); font-weight: 900; font-size: 14px;
 padding: 12px 14px; border-radius: 10px;
 }
.jag-newsdesk .practice-rail .steps { margin-top: 16px; padding-top: 14px; border-top: 1px solid var(--line); }
.jag-newsdesk .practice-rail .steps li { list-style: none; font-size: 12px; color: var(--text); line-height: 1.45; margin-bottom: 8px; padding-left: 14px; position: relative; }
.jag-newsdesk .practice-rail .steps li::before { content: ''; position: absolute; left: 0; top: 6px; width: 6px; height: 6px; border-radius: 50%; background: var(--green); }
.jag-newsdesk .desk-rail { display: flex; flex-direction: column; gap: 16px; }
/* Today's brief */
.jag-newsdesk .news-brief { background: linear-gradient(135deg, #f4fbf8 0%, #fff7f0 100%); border: 1px solid #dbe9e2; border-radius: 16px; padding: 16px 18px; margin-bottom: 14px; }
.jag-newsdesk .news-brief .nb-top { display: flex; align-items: center; flex-wrap: wrap; gap: 8px 12px; }
.jag-newsdesk .news-brief .nb-k { font-size: 11px; font-weight: 900; letter-spacing: .08em; text-transform: uppercase; color: var(--green-dark); }
.jag-newsdesk .news-brief .nb-date { font-size: 12.5px; font-weight: 700; color: var(--muted); }
.jag-newsdesk .news-brief .nb-session { font-size: 10px; font-weight: 900; letter-spacing: .05em; text-transform: uppercase; padding: 2px 8px; border-radius: 999px; border: 1px solid transparent; }
.jag-newsdesk .news-brief .nb-session.open { color: #0b6b57; background: #e3f4f1; border-color: #bfe6dd; }
.jag-newsdesk .news-brief .nb-session.closed { color: #8a4620; background: #fbeee6; border-color: #f0d6c4; }
.jag-newsdesk .news-brief .nb-head { margin-top: 10px; font-size: 18px; font-weight: 800; line-height: 1.34; color: var(--text); }
.jag-newsdesk .news-brief .nb-mine { margin-top: 12px; font-size: 13px; color: var(--text); display: flex; align-items: center; flex-wrap: wrap; gap: 8px; }
.jag-newsdesk .news-brief .nb-mine-count strong { color: var(--green-dark); }
.jag-newsdesk .news-brief .nb-mine-btn { border: 1px solid var(--green); background: #fff; color: var(--green-dark); font-weight: 800; font-size: 12px; padding: 5px 11px; border-radius: 8px; cursor: pointer; }
.jag-newsdesk .news-brief .nb-mine-btn:hover { background: #e7f4ef; }
/* Pro daily-digest teaser */
.jag-newsdesk .news-digest-teaser { background: linear-gradient(135deg, #fff7f0 0%, #f4fbf8 100%); border: 1px solid #ecd9c8; border-radius: 16px; padding: 18px 16px; }
.jag-newsdesk .news-digest-teaser .ndt-badge { display: inline-block; font-size: 10px; font-weight: 900; letter-spacing: .06em; color: #fff; background: var(--pro); padding: 3px 8px; border-radius: 999px; }
.jag-newsdesk .news-digest-teaser .ndt-h { margin-top: 10px; font-size: 15px; font-weight: 800; color: var(--text); }
.jag-newsdesk .news-digest-teaser .ndt-p { margin-top: 6px; font-size: 12.5px; line-height: 1.5; color: var(--muted); }
.jag-newsdesk .news-digest-teaser .ndt-cta { display: block; margin-top: 14px; text-align: center; text-decoration: none; background: var(--pro); color: var(--ink); font-weight: 900; font-size: 13.5px; padding: 11px 14px; border-radius: 10px; }
.jag-newsdesk .news-digest-teaser .ndt-cta:hover { background: var(--pro-dark); }
.jag-newsdesk .empty,
.jag-newsdesk .loading { padding: 28px; text-align: center; color: var(--muted); font-size: 14px; }
.jag-newsdesk .asof { margin-top: 16px; font-size: 12px; color: #8a97a6; text-align: center; }
/* View tabs: Top news vs My tickers (news on holdings + watchlist). */
.jag-newsdesk .news-tabs { display: inline-flex; gap: 6px; background: #eef2f4; border: 1px solid var(--line); border-radius: 11px; padding: 4px; margin: 0 0 6px; }
.jag-newsdesk .news-tabs-hint,
.jag-newsdesk .lookup-hint { margin: 0 0 10px; font-size: 12px; font-weight: 600; color: var(--muted); line-height: 1.4; }
.jag-newsdesk .news-ticker-doss { display:flex; flex-wrap:wrap; align-items:center; gap:8px 12px; margin:0 0 12px; padding:10px 12px; background:#fff; border:1px solid var(--line); border-radius:12px; }
.jag-newsdesk .news-ticker-doss[hidden] { display:none !important; }
.jag-newsdesk .ntd-id { display:flex; flex-direction:column; gap:2px; min-width:0; }
.jag-newsdesk .ntd-k { font-size:10px; font-weight:800; letter-spacing:.08em; text-transform:uppercase; color:var(--muted); }
.jag-newsdesk .ntd-sym { font-size:18px; font-weight:900; letter-spacing:-.02em; color:var(--text); }
.jag-newsdesk .ntd-acts { display:flex; flex-wrap:wrap; gap:8px; margin-left:auto; }
.jag-newsdesk .ntd-cta { display:inline-flex; align-items:center; text-decoration:none; font-weight:800; font-size:13px; padding:8px 12px; border-radius:9px; background:var(--jag-green); color:#fff; }
.jag-newsdesk .ntd-cta.ntd-ghost { background:#fff; color:#0f1720; border:1px solid var(--line); }
.jag-newsdesk .ntd-note { flex:1 1 100%; margin:0; font-size:11px; font-weight:700; color:var(--muted); }
.jag-newsdesk .news-tab { font-family: inherit; border: 0; background: transparent; border-radius: 8px; padding: 8px 16px; font-size: 13px; font-weight: 800; color: var(--muted); cursor: pointer; }
.jag-newsdesk .news-tab:hover:not(:disabled) { color: var(--green-dark); }
.jag-newsdesk .news-tab[data-view="top"].on { background: var(--jag-green); color: #fff; box-shadow: 0 1px 3px rgba(0,110,78,.28); }
.jag-newsdesk .news-tab[data-view="mine"].on { background: #E86B1F; color: #fff; box-shadow: 0 1px 3px rgba(232,107,31,.28); }
.jag-newsdesk .news-tab:disabled { opacity: .5; cursor: not-allowed; }
.jag-newsdesk .news-scope {
   display: inline-flex; align-items: center; gap: 8px; margin: 0 0 12px; padding: 7px 12px;
   border-radius: 999px; font-size: 12px; font-weight: 800; letter-spacing: .04em; text-transform: uppercase;
 }
.jag-newsdesk .news-scope[data-view="top"] { background: #e8f7ef; color: var(--jag-green); border: 1px solid #bfe6d2; }
.jag-newsdesk .news-scope[data-view="mine"] { background: #fff1e8; color: #E86B1F; border: 1px solid #f0c4a0; }
.jag-newsdesk #newsFeed[data-view="top"] { border-left: 3px solid var(--jag-green); padding-left: 14px; }
.jag-newsdesk #newsFeed[data-view="mine"] { border-left: 3px solid #E86B1F; padding-left: 14px; }
/* Sector filter. */
.jag-newsdesk .sector-wrap { display: inline-flex; align-items: center; gap: 7px; }
.jag-newsdesk .sector-select { font-family: inherit; font-size: 12.5px; font-weight: 700; color: var(--text); border: 1px solid var(--line); background: #fff; border-radius: 999px; padding: 7px 12px; cursor: pointer; }
.jag-newsdesk .sector-select:focus { outline: none; border-color: var(--green); box-shadow: 0 0 0 3px rgba(0, 110, 78, .15); }
/* Trending chip mention-count. */
.jag-newsdesk .chip.trend .trend-count { margin-left: 6px; font-size: 10px; font-weight: 900; color: #8a97a6; background: #eef2f4; border-radius: 999px; padding: 1px 6px; }
/* News mood gauge: share of the feed's own sentiment tags for the current scope. */
.jag-newsdesk .news-mood { background: #fff; border: 1px solid var(--line); border-radius: 14px; padding: 14px 16px; margin: 0 0 14px; }
.jag-newsdesk .news-mood .nm-top { display: flex; align-items: center; flex-wrap: wrap; gap: 8px 10px; }
.jag-newsdesk .news-mood .nm-k { font-size: 11px; font-weight: 900; letter-spacing: .08em; text-transform: uppercase; color: var(--green-dark); }
.jag-newsdesk .news-mood .nm-scope { font-size: 12px; font-weight: 700; color: var(--muted); }
.jag-newsdesk .news-mood .nm-headline { margin-top: 8px; font-size: 15px; font-weight: 700; color: var(--text); }
.jag-newsdesk .news-mood .nm-headline strong { font-size: 20px; font-weight: 900; color: var(--green-dark); }
.jag-newsdesk .news-mood .nm-sub { color: var(--muted); font-weight: 600; font-size: 12.5px; }
.jag-newsdesk .news-mood .nm-bar { display: flex; height: 8px; border-radius: 999px; overflow: hidden; margin-top: 10px; background: #eef1f4; }
.jag-newsdesk .news-mood .nm-bar .seg { min-width: 0; }
.jag-newsdesk .news-mood .nm-bar .seg.pos { background: #1e9e6f; }
.jag-newsdesk .news-mood .nm-bar .seg.neu { background: #c4ccd6; }
.jag-newsdesk .news-mood .nm-bar .seg.neg { background: #d1362f; }
.jag-newsdesk .news-mood .nm-legend { display: flex; flex-wrap: wrap; gap: 6px 14px; margin-top: 9px; font-size: 11px; font-weight: 800; }
.jag-newsdesk .news-mood .nm-legend .k { display: inline-flex; align-items: center; gap: 5px; color: var(--muted); }
.jag-newsdesk .news-mood .nm-legend .k::before { content: ''; width: 8px; height: 8px; border-radius: 50%; }
.jag-newsdesk .news-mood .nm-legend .pos::before { background: #1e9e6f; }
.jag-newsdesk .news-mood .nm-legend .neu::before { background: #c4ccd6; }
.jag-newsdesk .news-mood .nm-legend .neg::before { background: #d1362f; }
.jag-newsdesk .news-mood .nm-note { margin-top: 9px; font-size: 11px; color: #8a97a6; }
@media (max-width: 900px) {
  .jag-newsdesk .desk-grid { grid-template-columns: 1fr; }
  .jag-newsdesk .desk-rail { order: 0; }
  .jag-newsdesk .practice-rail { display: none !important; }
  .jag-newsdesk .story { grid-template-columns: auto 1fr; }
  .jag-newsdesk .story .thumb { width: 68px; height: 68px; }
  .jag-newsdesk .story .actions { grid-column: 1 / -1; flex-direction: row; }
}
/* Owner 2026-08-11: remove the "Trade on Chart / any ticker" promo card so
    Today's Brief is the first thing on the desk (mobile + desktop). */
.jag-newsdesk .practice-rail { display: none !important; }
/* FOMO gate: two bait headlines stay readable so the desk still feels alive.
    The rest of the feed frosts. Trade on Chart stays. Opening the article is Pro. */
.jag-newsdesk .news-lock { display: none; }
body.news-free .jag-newsdesk .story:not(.news-bait) .title,
body.news-free .jag-newsdesk .story:not(.news-bait) .teaser,
body.news-free .jag-newsdesk .story:not(.news-bait) .thumb {
   filter: blur(8px); opacity: .72; pointer-events: none; user-select: none;
 }
body.news-free .jag-newsdesk .story:not(.news-bait) .news-lock { display: flex; align-items: center; flex-wrap: wrap; gap: 9px; margin-top: 9px; }
.jag-newsdesk .news-lock .nl-badge { font-size: 10px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: var(--pro); background: #fbeee7; border: 1px solid #f0dbc9; border-radius: 999px; padding: 3px 9px; }
.jag-newsdesk .news-lock .nl-text { font-size: 12.5px; font-weight: 600; color: var(--muted); }
.jag-newsdesk .news-lock .nl-btn { font-size: 12px; font-weight: 800; text-decoration: none; color: #fff; background: var(--pro); border-radius: 8px; padding: 6px 13px; }
.jag-newsdesk .news-lock .nl-btn:hover { background: var(--pro-dark); }
/* Side rails: calendar + ratings. Two bait rows clear, rest frosted. */
.jag-newsdesk .news-side-card {
   background: #fff; border: 1px solid var(--line); border-radius: 16px; padding: 16px 16px 12px;
 }
.jag-newsdesk .news-side-card .ns-k { font-size: 11px; font-weight: 900; letter-spacing: .08em; text-transform: uppercase; color: var(--green-dark); margin-bottom: 10px; }
.jag-newsdesk .news-side-card .ns-list { display: flex; flex-direction: column; gap: 2px; }
.jag-newsdesk .news-side-row {
   display: grid; grid-template-columns: 56px minmax(0,1fr); gap: 8px; align-items: baseline;
   text-decoration: none; color: var(--text); padding: 7px 6px; border-radius: 8px; font-size: 12.5px;
 }
.jag-newsdesk .news-side-row:hover { background: #f4f8f6; }
.jag-newsdesk .news-side-row .ns-sym { font-weight: 900; color: var(--green-dark); }
.jag-newsdesk .news-side-row .ns-main { color: #334155; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.jag-newsdesk .news-side-card .ns-note { margin: 10px 0 0; font-size: 11px; color: #8a97a6; line-height: 1.4; }
body.news-free .jag-newsdesk .news-side-row:not(.news-side-bait) { filter: blur(6px); pointer-events: none; user-select: none; opacity: .7; }
body.news-free .jag-newsdesk #newsDigestTeaser .ndt-p { filter: blur(5px); user-select: none; }
/* Bookmark / save (Pro feature). Small outline bookmark pinned to the top-right of
    each card as the first child of the actions column, so it never overlaps Trade/Read.
    Saved state uses a neutral slate fill (green stays free-only, orange stays for CTAs). */
.jag-newsdesk .story .actions .news-save {
 align-self: flex-end; order: -1; flex: 0 0 auto;
 display: inline-flex; align-items: center; justify-content: center;
 width: 30px; height: 30px; padding: 0; margin: 0 0 2px;
 border: 1px solid var(--line); border-radius: 8px; background: #fff;
 color: #94a3b3; cursor: pointer; font-family: inherit;
 }
.jag-newsdesk .story .actions .news-save:hover { border-color: #cdd6df; color: #51607a; }
.jag-newsdesk .story .actions .news-save svg { width: 15px; height: 15px; display: block; fill: none; stroke: currentColor; stroke-width: 2; stroke-linejoin: round; }
.jag-newsdesk .story .actions .news-save.is-saved { color: #334155; border-color: #cdd6df; background: #eef2f6; }
.jag-newsdesk .story .actions .news-save.is-saved svg { fill: currentColor; stroke: currentColor; }
/* Read locked for free users: the external article is Pro-only, so the Read button
    becomes a burnt-orange locked control that routes to the Unlock-with-Pro path. */
.jag-newsdesk .story .actions .read.read-locked { display: inline-flex; align-items: center; justify-content: center; gap: 5px; background: #fff; border-color: #f0dbc9; color: var(--pro); }
.jag-newsdesk .story .actions .read.read-locked svg { width: 12px; height: 12px; fill: currentColor; flex: 0 0 auto; }
/* Slim Unlock strip AFTER the feed — Today's Brief stays the hero at the top. */
.jag-newsdesk .news-unlock-hero {
 background: linear-gradient(135deg, #fff3ea 0%, #fbe8db 100%);
 border: 1px solid #ecd0bb; border-left: 4px solid var(--pro);
 border-radius: 16px; padding: 14px 16px; margin: 16px 0 8px;
 box-shadow: 0 6px 16px rgba(187, 92, 45, .08);
 display: flex; align-items: center; flex-wrap: wrap; gap: 12px 18px;
 }
.jag-newsdesk .news-unlock-hero .uh-main { flex: 1 1 260px; }
.jag-newsdesk .news-unlock-hero .uh-badge { display: inline-block; font-size: 10px; font-weight: 900; letter-spacing: .06em; color: #fff; background: var(--pro); padding: 3px 8px; border-radius: 999px; }
.jag-newsdesk .news-unlock-hero .uh-h { margin-top: 8px; font-size: 17px; font-weight: 900; letter-spacing: -.01em; color: var(--text); }
.jag-newsdesk .news-unlock-hero .uh-p { margin-top: 4px; font-size: 13px; line-height: 1.5; color: var(--muted); max-width: 62ch; }
.jag-newsdesk .news-unlock-hero .uh-cta { display: inline-flex; align-items: center; text-decoration: none; background: var(--pro); color: #fff; font-weight: 900; font-size: 14px; padding: 12px 18px; border-radius: 10px; white-space: nowrap; }
.jag-newsdesk .news-unlock-hero .uh-cta:hover { background: var(--pro-dark); }
body.intel-news-searchlock #newsQ,
body.intel-news-searchlock #newsLookup button { cursor: not-allowed; }
body.intel-news-searchlock #newsLookup { opacity: .88; }
/* Slim unlock strip sits WITH the brief — never replaces today's headlines. */
body.news-free .jag-newsdesk #newsUnlockHero { margin-bottom: 14px; }
@media (max-width: 900px) {
  .jag-newsdesk .story .actions .news-save { align-self: center; }
}
