/* LOCAL PREMIUM OVERLAY — Intel desk on the real Research + News page.
   Lives outside the git repo. Swap = copy this file + the labeled research.html
   + SUITE_LABEL in app-nav.js. Does not change IDs or data-ria values. */

body.intel-premium {
  --intel-ink: #1A1F29;
  --intel-mut: #5A626B;
  --intel-page: #e4eee8;
  --intel-mint: #f4f7f5;
  --intel-line: #c9d6ce;
  --intel-card: #ffffff;
  --intel-select: #06281c;
  --intel-select-ink: #ffffff;
  --intel-dark: #ffffff;
  --intel-panel: #f4f7f5;
  --intel-tile: #eef3f0;
  --intel-glow: #5A626B;
  --intel-inst-ink: #1A1F29;
  --intel-inst-mut: #5A626B;
  --intel-inst-line: #c9d6ce;
  --intel-inst-grid: #D4DDE4;
  --intel-up-hot: #117A37;
  --intel-dn-hot: #B4232A;
  --intel-spy: #1d4ed8;
  --intel-pro: #BB5C2D;
  --intel-prod: #E86B1F;
  --intel-up: #117A37;
  --intel-dn: #B4232A;
  --intel-radius: 18px;
  --intel-shadow: 0 20px 50px rgba(10, 28, 20, .12);
  background: var(--intel-page) !important;
  color: var(--intel-ink);
  font-variant-numeric: tabular-nums;
}
body.intel-premium::before {
  content: "";
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 80;
  opacity: .035;
  mix-blend-mode: multiply;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

.intel-local-banner {
  position: sticky;
  top: 0;
  z-index: 90;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: 8px 12px;
  background: #050a08;
  color: #c9e6d6;
  padding: 7px 16px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  text-align: center;
}
.intel-local-banner code { color: #F5C19A; font-weight: 800; letter-spacing: 0; text-transform: none; }
body.intel-premium .sr-only {
  position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0;
}

body.intel-premium .pt-appbar {
  background: rgba(228, 238, 232, .82) !important;
  backdrop-filter: blur(18px) saturate(1.2);
  border-bottom: 1px solid rgba(201, 214, 206, .85);
}
body.intel-premium .pt-view-tab.active {
  background: var(--intel-select) !important;
  color: var(--intel-select-ink) !important;
}
body.intel-premium .pt-nav-pro {
  background: #7dcea0 !important;
  color: var(--intel-panel) !important;
}

body.intel-premium main.wrap {
  max-width: none;
  padding-bottom: 88px;
}

/* Kicker instead of a blog lede */
body.intel-premium .page-head {
  margin: 14px 0 4px;
}
body.intel-premium .page-head h1 {
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--intel-mut);
  margin: 0 0 4px;
}
body.intel-premium .page-head h1 .pt-nav-pro {
  display: inline-block;
  text-transform: none;
  letter-spacing: .06em;
  font-size: 10px;
  vertical-align: middle;
  margin-left: 6px;
  position: relative;
  top: -1px;
}
body.intel-premium .page-head .lede {
  font-size: 13px;
  font-weight: 600;
  color: var(--intel-ink);
  max-width: none !important;
  margin: 0;
}

/* Mode pills — six named rooms, dark selected */
body.intel-premium .ria-modes {
  display: flex !important;
  grid-template-columns: none !important;
  flex-wrap: nowrap;
  gap: 2px;
  overflow-x: auto;
  margin: 12px 0 0;
  padding: 4px;
  background: rgba(255, 255, 255, .92);
  border: 1px solid var(--intel-line);
  border-radius: 12px;
  box-shadow: var(--intel-shadow);
  scrollbar-width: none;
  position: sticky;
  top: 52px;
  z-index: 30;
}
body.intel-premium .ria-modes::-webkit-scrollbar { display: none; }
body.intel-premium .ria-modes button[hidden],
body.intel-premium .ria-modes button[data-ria="xray"] { display: none !important; }
body.intel-premium .ria-modes button:hover {
  background: #eef2ef;
  color: var(--intel-ink);
}
body.intel-premium .ria-modes button.on {
  background: var(--intel-select) !important;
  color: var(--intel-select-ink) !important;
  box-shadow: none !important;
}
body.intel-premium .ria-modes button .ria-long,
body.intel-premium .ria-modes button .ria-short {
  display: inline !important;
}
body.intel-premium .ria-modes button .ria-short { display: none !important; }

/* Unlock strip: paintUnlockStrip owns visibility via [hidden].
   Do NOT force-hide — Assets needs the Pro CTA above Look up (owner 2026-08-26).
   Floating .intel-unlock-cta stays for frosted panes only; never on Assets. */
body.intel-premium .research-unlock-hero[hidden],
body.intel-premium #researchUnlockStrip[hidden] {
  display: none !important;
}
/* Unlock strip: ALWAYS dark ink on peach — never white-on-peach (illegible).
   Dark theme still uses the same peach card so Go Pro stays readable. */
body.intel-premium #researchUnlockStrip:not([hidden]),
body.intel-premium .research-unlock-hero:not([hidden]) {
  display: flex !important;
  background: #fff8f3 !important;
  border: 1px solid #e3c4b0 !important;
  border-left: 3px solid #BB5C2D !important;
  color: #0f172a !important;
}
body.intel-premium .research-unlock-hero .uh-h {
  color: #0f172a !important;
  font-size: 14px !important;
  font-weight: 800 !important;
}
body.intel-premium .research-unlock-hero .uh-p {
  color: #3d4654 !important;
  font-size: 13px !important;
  line-height: 1.4 !important;
}
body.intel-premium .research-unlock-hero .uh-cta {
  background: #BB5C2D !important;
  color: #fff !important;
}
body.intel-premium .research-unlock-hero .uh-cta:hover {
  filter: brightness(.95);
  background: #a34f26 !important;
}
/* Assets search must stay clickable — never under a mid-pane Pro card. */
body.intel-premium [data-ria-pane="stock"] #lookupForm,
body.intel-premium [data-ria-pane="stock"] .lookup-assets-top {
  position: relative;
  z-index: 60;
  pointer-events: auto !important;
  filter: none !important;
}
body.intel-premium [data-ria-pane="stock"] .intel-unlock-cta {
  display: none !important;
}
body.intel-premium #researchFreeMeter { color: var(--intel-mut); }

/* Lookup */
body.intel-premium .lookup {
  margin: 14px 0 12px;
}
body.intel-premium .lookup input {
  height: 52px;
  border-radius: 14px;
  border-color: var(--intel-line);
  background: var(--intel-card);
  color: var(--intel-ink);
  font-weight: 700;
  letter-spacing: .04em;
}
body.intel-premium .lookup input:focus {
  border-color: #006E4E;
  box-shadow: 0 0 0 4px rgba(0, 110, 78, .14);
}
body.intel-premium .lookup button {
  height: 52px;
  border-radius: 14px;
  padding: 0 22px;
  font-weight: 800;
}

/* ── RAP SHEET: dark instrument ── */
body.intel-premium .tkr-bar {
  background: var(--intel-dark);
  color: var(--intel-inst-ink);
  border: 0;
  border-radius: var(--intel-radius) var(--intel-radius) 0 0;
  margin: 0;
  padding: 16px 18px 12px;
  box-shadow: none;
}
body.intel-premium .tkr-regime {
  display: inline-flex;
  align-items: center;
  margin-left: 10px;
  padding: 4px 10px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .04em;
  text-transform: uppercase;
  background: #e3f4ec;
  color: #117A37;
  vertical-align: middle;
}
body.intel-premium .tkr-regime.below {
  background: #fde8e6;
  color: #B4232A;
}
body.intel-premium .tkr-print,
body.intel-premium .tkr-vs {
  appearance: none;
  border: 1px solid var(--intel-inst-line);
  background: var(--intel-tile);
  color: var(--intel-inst-ink);
  font: inherit;
  font-size: 12px;
  font-weight: 800;
  padding: 8px 12px;
  border-radius: 999px;
  cursor: pointer;
  text-decoration: none;
}
body.intel-premium .tkr-print:hover,
body.intel-premium .tkr-vs:hover {
  background: var(--intel-up-hot);
  color: var(--intel-dark);
  border-color: var(--intel-up-hot);
}
body.intel-premium .tkr-id .sym {
  font-size: 28px;
  font-weight: 900;
  letter-spacing: -.03em;
  color: var(--intel-inst-ink);
}
body.intel-premium .tkr-id .tag {
  color: var(--intel-inst-mut);
  letter-spacing: .12em;
}
body.intel-premium .trade-cta {
  background: #006E4E;
  color: #fff;
  border-color: transparent;
}
body.intel-premium .trade-cta:hover { background: #00563d; color: #fff; }

body.intel-premium [data-ria-pane="stock"] .rface {
  display: flex;
  gap: 4px;
  margin: 0 0 12px;
  padding: 3px;
  background: var(--intel-card, #fff);
  border: 1px solid var(--intel-line, #dbe5de);
  border-radius: 12px;
  max-width: 320px;
}
body.intel-premium .rface-btn {
  flex: 1 1 0;
  appearance: none;
  border: 0;
  background: transparent;
  color: var(--intel-mut, #5A626B);
  font: inherit;
  font-size: 13px;
  font-weight: 800;
  padding: 8px 12px;
  border-radius: 9px;
  cursor: pointer;
}
body.intel-premium .rface-btn.on {
  background: var(--intel-select, #06281c);
  color: var(--intel-select-ink, #fff);
}

body.intel-premium .ria-pane-intro h2 {
  font-size: 22px;
  letter-spacing: -.02em;
}
body.intel-premium .ria-pane-intro p { font-size: 13.5px; }

body.intel-premium #secChart {
  background: var(--intel-dark);
  color: var(--intel-glow);
  border: 0;
  border-radius: 0 0 var(--intel-radius) var(--intel-radius);
  margin-top: 0;
  box-shadow: var(--intel-shadow);
  padding: 8px 18px 18px;
}
body.intel-premium #secChart .rsec-head h2,
body.intel-premium #secChart .rsec-head .sub,
body.intel-premium #secChart .disc { color: var(--intel-inst-mut); }
body.intel-premium #secChart .rsec-head h2 { color: var(--intel-inst-ink); }

/* Real spark was capped at 120px and stats were hidden. Show the instrument. */
body.intel-premium #researchChart .rc-h,
body.intel-premium #researchChart .rc-stats,
body.intel-premium #researchChart .rc-meter,
body.intel-premium #researchChart .rc-note { display: block !important; }
body.intel-premium #researchChart .rc-stats { display: grid !important; }
body.intel-premium #researchChart .rc-svg { max-height: 420px !important; }
body.intel-premium #researchChart .rc-h,
body.intel-premium #researchChart .rc-price .p { color: var(--intel-inst-ink) !important; }
body.intel-premium #researchChart .rc-asof,
body.intel-premium #researchChart .rc-price .asof,
body.intel-premium #researchChart .rc-gtext { fill: var(--intel-inst-mut); color: var(--intel-inst-mut) !important; }
body.intel-premium #researchChart .rc-up { color: var(--intel-up-hot) !important; }
body.intel-premium #researchChart .rc-down { color: var(--intel-dn-hot) !important; }
body.intel-premium #researchChart .rc-rangebtns {
  background: var(--intel-tile) !important;
  border-color: var(--intel-inst-line) !important;
}
body.intel-premium #researchChart .rc-rb { color: var(--intel-inst-mut); }
body.intel-premium #researchChart .rc-rb.active {
  background: #006E4E !important;
  color: var(--intel-inst-ink) !important;
}
body.intel-premium #researchChart .rc-grid { stroke: var(--intel-inst-grid) !important; }
body.intel-premium #researchChart .rc-line { stroke: var(--intel-up-hot) !important; stroke-width: 2.2; }
body.intel-premium #researchChart .rc-area { fill: var(--intel-up-hot) !important; opacity: .16 !important; }
body.intel-premium #researchChart .rc-stat {
  background: var(--intel-tile) !important;
  border: 1px solid var(--intel-inst-line);
}
body.intel-premium #researchChart .rc-stat .k,
body.intel-premium #researchChart .rc-stat .s { color: var(--intel-inst-mut) !important; }
body.intel-premium #researchChart .rc-stat .v { color: var(--intel-inst-ink) !important; }
body.intel-premium #researchChart .rc-meter .track { background: var(--intel-inst-grid); }

body.intel-premium .rjump {
  background: var(--intel-card);
  border: 1px solid var(--intel-line);
  box-shadow: 0 8px 24px rgba(10, 28, 20, .06);
  padding: 4px;
  margin: 0 0 14px;
  border-radius: 14px;
}
body.intel-premium .rjump a {
  background: transparent;
  border: 0;
  border-radius: 10px;
  color: var(--intel-mut);
  padding: 8px 12px;
}
body.intel-premium .rjump a:hover { background: #eef2ef; color: var(--intel-ink); }
body.intel-premium .rjump a.on { background: #e6f4ee; color: #006E4E; }
body.intel-premium .lookup-chart { max-width: min(440px, 100%); }

body.intel-premium .rsec,
body.intel-premium .rx-block {
  background: var(--intel-card);
  border: 1px solid var(--intel-line);
  border-radius: var(--intel-radius);
  box-shadow: 0 8px 24px rgba(10, 28, 20, .06);
}
body.intel-premium .rx-side {
  position: static !important;
  top: auto !important;
  align-self: start;
  min-width: 0;
}
body.intel-premium .rx-side-title {
  font-size: 11px !important;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--intel-mut) !important;
}
body.intel-premium #researchNotebook {
  min-height: 280px;
}
body.intel-premium #researchNotebook textarea,
body.intel-premium #researchNotebook .np-body,
body.intel-premium #researchNotebook .np-editor textarea {
  min-height: 180px !important;
}
body.intel-premium #assetNotesView {
  min-height: 60vh;
}
body.intel-premium #assetNotesView #researchSaved {
  max-width: 720px;
}
body.intel-premium .rx-railchart .rcm {
  border-radius: var(--intel-radius);
  border-color: var(--intel-line);
}

/* ── HEAT: mint desk, calendar DNA ── */
body.intel-premium [data-ria-pane="portfolio"] {
  background: var(--intel-mint);
  border: 1px solid var(--intel-line);
  border-radius: var(--intel-radius);
  padding: 16px 16px 8px;
  box-shadow: var(--intel-shadow);
  min-width: 0;
}
body.intel-premium [data-ria-pane="portfolio"] .ria-pane-intro h2 {
  font-size: 13px;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--intel-mut);
}
body.intel-premium .pa-tile:first-child {
  grid-column: 1 / -1;
  background: #fff;
  border-radius: var(--intel-radius);
  padding: 18px 20px;
}
body.intel-premium .pa-tile:first-child .v {
  font-size: 42px;
  letter-spacing: -.04em;
}
body.intel-premium .pa-card {
  border-radius: var(--intel-radius) !important;
  border-color: var(--intel-line) !important;
  box-shadow: 0 8px 24px rgba(10, 28, 20, .05) !important;
}
body.intel-premium .pa-strip { gap: 12px; }
body.intel-premium .rpro .ys-stat {
  background: #fff;
  border-radius: 14px;
}

/* ── TAPE ── */
body.intel-premium [data-ria-pane="news"] .jag-newsdesk {
  --bg: transparent;
  --surface: #fff;
  --line: var(--intel-line);
}
body.intel-premium .jag-newsdesk .news-brief,
body.intel-premium .jag-newsdesk .pulse-card {
  background: var(--intel-dark) !important;
  color: var(--intel-inst-ink) !important;
  border: 0 !important;
  border-radius: var(--intel-radius) !important;
  box-shadow: var(--intel-shadow);
}
body.intel-premium .jag-newsdesk .pulse-card .k,
body.intel-premium .jag-newsdesk .nb-k { color: var(--intel-inst-mut) !important; }
body.intel-premium .jag-newsdesk .pulse-card .v { color: var(--intel-inst-ink) !important; }
body.intel-premium .jag-newsdesk .story {
  border-radius: 16px;
  border-color: var(--intel-line);
  box-shadow: 0 8px 22px rgba(10, 28, 20, .05);
}
body.intel-premium .jag-newsdesk .story:hover {
  border-color: #b7d0c4;
}
body.intel-premium .jag-newsdesk .chip.on {
  background: var(--intel-select);
  color: var(--intel-select-ink);
  border-color: var(--intel-select);
}

/* ── SCAN / VS / NOTES ── */
body.intel-premium [data-ria-pane="find"] .sc-hero h2,
body.intel-premium [data-ria-pane="compare"] .ria-pane-intro h2,
body.intel-premium [data-ria-pane="saved"] .ria-pane-intro h2 {
  font-size: 22px;
  letter-spacing: -.02em;
}
body.intel-premium .sc-card,
body.intel-premium .sc-hero,
body.intel-premium [data-ria-pane="compare"] #researchEtfCompare,
body.intel-premium [data-ria-pane="saved"] .nb,
body.intel-premium [data-ria-pane="saved"] .nb-card {
  border-radius: var(--intel-radius);
}

/* Mobile: never squeeze labels into a letter stack */
@media (max-width: 600px) {
  body.intel-premium .ria-modes {
    top: 0;
    border-radius: 14px;
  }
  body.intel-premium .ria-modes button {
    font-size: 12px;
    padding: 8px 12px;
  }
  body.intel-premium .ria-modes button[hidden],
  body.intel-premium .ria-modes button[data-ria="xray"] { display: none !important; }
  body.intel-premium .ria-modes button .ria-long,
  body.intel-premium .ria-modes button .ria-short {
    display: inline !important;
  }
  body.intel-premium .ria-modes button .ria-short { display: none !important; }
  body.intel-premium .pa-tile:first-child .v { font-size: 32px; }
  body.intel-premium .tkr-id .sym { font-size: 22px; }
  body.intel-premium #researchChart .rc-svg { max-height: 280px !important; }
  body.intel-premium .intel-local-banner { letter-spacing: .04em; font-size: 10px; }
  body.intel-premium .rx-layout { grid-template-columns: 1fr; }
  body.intel-premium main.wrap { padding-left: 12px; padding-right: 12px; }
}

/* ── VS desk: full dark instrument ── */
/* Compare intro is visible — owner 2026-08-23: every Intel room says what it is. */
body.intel-premium [data-ria-pane="compare"] {
  background: var(--intel-dark);
  color: var(--intel-inst-ink);
  border-radius: 22px;
  padding: 16px 14px 28px;
  min-width: 0;
}
body.intel-premium [data-ria-pane="compare"] .ria-pane-intro h2 { color: var(--intel-inst-ink); }
body.intel-premium [data-ria-pane="compare"] .ria-pane-intro p { color: var(--intel-inst-mut); }
.ivs { min-width: 0; color: var(--intel-inst-ink); font-variant-numeric: tabular-nums; }
.ivs-hero { display: flex; gap: 10px; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; margin: 0 0 10px; }
.ivs-hero h2 { margin: 2px 0 4px; font-size: 22px !important; letter-spacing: -.03em; color: var(--intel-inst-ink); font-weight: 800; }
.ivs-hero p { margin: 0; max-width: 62ch; font-size: 12px; color: var(--intel-inst-mut); line-height: 1.4; }
.ivs-k { font-size: 10px; font-weight: 800; letter-spacing: .16em; text-transform: uppercase; color: var(--intel-inst-mut); }
.ivs-hero-stat { background: var(--intel-tile); color: var(--intel-inst-ink); border: 1px solid var(--intel-inst-line); border-radius: 12px; padding: 8px 12px; min-width: 140px; }
.ivs-hero-stat .k { font-size: 10px; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; color: var(--intel-inst-mut); }
.ivs-hero-stat .v { font-size: 26px; font-weight: 800; letter-spacing: -.03em; margin-top: 2px; }
.ivs-hero-stat .s { font-size: 11px; color: var(--intel-inst-mut); margin-top: 4px; max-width: 28ch; line-height: 1.35; }
.ivs-pick { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; background: var(--intel-tile); border: 1px solid var(--intel-inst-line); border-radius: 18px; padding: 10px 12px; }
.ivs-chips { display: flex; flex-wrap: wrap; gap: 6px; min-width: 0; }
.ivs-chip { display: inline-flex; align-items: center; gap: 6px; background: var(--intel-dark); color: var(--intel-inst-ink); border: 1px solid var(--intel-inst-line); border-radius: 999px; padding: 6px 10px 6px 12px; font-size: 13px; }
.ivs-chip b { color: var(--c); font-weight: 900; }
.ivs-chip button { border: 0; background: transparent; color: var(--intel-inst-mut); cursor: pointer; font-size: 12px; font-weight: 800; line-height: 1.2; padding: 0 2px; }
.ivs-chip button:hover { color: var(--intel-dn-hot); }
.ivs-search { flex: 1 1 160px; min-width: 140px; position: relative; }
.ivs-search input { width: 100%; height: 44px; border: 1px solid var(--intel-inst-line); border-radius: 12px; padding: 0 12px; font: inherit; font-weight: 700; text-transform: uppercase; background: var(--intel-dark); color: var(--intel-inst-ink); }
.ivs-search input:focus { outline: none; border-color: var(--intel-up-hot); box-shadow: 0 0 0 3px rgba(61,206,138,.18); }
.ivs-go { height: 44px; border: 0; border-radius: 12px; background: #006E4E; color: #fff; font: inherit; font-weight: 800; padding: 0 16px; cursor: pointer; }
.ivs-go:hover { background: #00563d; }
.ivs-ghost { height: 44px; border: 1px solid var(--intel-inst-line); border-radius: 12px; background: transparent; color: var(--intel-inst-ink); font: inherit; font-weight: 800; padding: 0 14px; cursor: pointer; }
.ivs-ghost:hover { background: #0f2a20; }
.ivs-pairs { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin: 10px 0 4px; }
.ivs-pair { border: 1px solid var(--intel-inst-line); background: var(--intel-tile); border-radius: 999px; padding: 6px 11px; font: inherit; font-size: 12px; font-weight: 800; cursor: pointer; color: var(--intel-inst-ink); }
.ivs-pair:hover { background: var(--intel-up-hot); color: var(--intel-dark); border-color: var(--intel-up-hot); }
.ivs-pair-note { font-size: 11px; color: var(--intel-inst-mut); font-weight: 600; }
.ivs-hint { min-height: 1.2em; font-size: 12.5px; font-weight: 700; color: #F5C19A; margin: 4px 0 8px; }
.ivs-toolbar { display: flex; flex-wrap: wrap; gap: 10px; justify-content: space-between; align-items: center; margin: 6px 0 12px; }
.ivs-rns, .ivs-views { display: flex; gap: 4px; flex-wrap: wrap; background: var(--intel-tile); border: 1px solid var(--intel-inst-line); border-radius: 999px; padding: 3px; }
.ivs-rng, .ivs-view { border: 0; background: transparent; color: var(--intel-inst-mut); font: inherit; font-size: 12.5px; font-weight: 800; padding: 7px 12px; border-radius: 999px; cursor: pointer; }
.ivs-rng.on, .ivs-view.on { background: var(--intel-up-hot); color: var(--intel-dark); }
.ivs-glance { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 10px; margin: 14px 0 0; }
.ivs-gc { background: var(--intel-tile); border: 1px solid var(--intel-inst-line); border-radius: 18px; padding: 14px; border-top: 3px solid var(--c); min-width: 0; }
.ivs-gc .tk { font-size: 20px; font-weight: 900; letter-spacing: -.02em; color: var(--intel-inst-ink); }
.ivs-gc .nm { font-size: 11px; color: var(--intel-inst-mut); min-height: 1.3em; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ivs-gc .px { font-size: 26px; font-weight: 900; margin-top: 6px; color: var(--intel-inst-ink); }
.ivs-gc .chg { font-size: 15px; font-weight: 800; margin: 2px 0 8px; }
.ivs-spk { width: 100%; height: 36px; display: block; }
.ivs-trade { display: inline-block; margin-top: 8px; font-size: 12px; font-weight: 800; color: var(--intel-up-hot); text-decoration: none; }
.ivs-chart { position: relative; background: #020805; border: 1px solid var(--intel-inst-line); border-radius: 14px; padding: 8px 6px 4px; min-height: 240px; }
.ivs-svg { width: 100%; height: auto; display: block; min-height: 220px; max-height: 260px; }
.ivs-hero-slim { margin: 0 0 8px !important; }
.ivs-hero-slim .ivs-hero-row { display: flex; flex-wrap: wrap; align-items: baseline; gap: 8px 14px; }
.ivs-hero-slim h2 { margin: 0 !important; font-size: 18px !important; }
.ivs-hero-slim .ivs-hero-one { font-size: 13px; font-weight: 700; color: var(--intel-inst-mut); }
.ivs-hero-slim p { margin: 4px 0 0 !important; font-size: 12.5px; color: var(--intel-inst-mut); max-width: none; }
.ivs-hero-slim .ivs-hero-stat { padding: 6px 10px; min-width: 120px; margin-left: auto; }
.ivs-hero-slim .ivs-hero-stat .v { font-size: 18px !important; }
.ivs-glance { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 8px; margin: 10px 0 12px; }
.ivs-grid { stroke: var(--intel-inst-grid); stroke-width: 1; }
.ivs-gtext, .ivs-axis { fill: var(--intel-inst-mut); font-size: 11px; font-family: inherit; }
.ivs-cross { stroke: var(--intel-inst-mut); stroke-dasharray: 3 4; visibility: hidden; }
.ivs-tip { position: absolute; top: 12px; left: 14px; background: rgba(4,17,12,.94); color: #e8f6ee; border: 1px solid var(--intel-inst-line); border-radius: 10px; padding: 8px 10px; font-size: 12px; line-height: 1.45; pointer-events: none; }
.ivs-tip b { display: block; margin-bottom: 4px; }
.ivs-tip span { display: flex; gap: 6px; align-items: center; }
.ivs-tip i { width: 8px; height: 8px; border-radius: 50%; display: inline-block; }
.ivs-legend { display: flex; flex-wrap: wrap; gap: 14px; margin: 10px 2px 4px; font-size: 14px; color: var(--intel-inst-ink); }
.ivs-leg { display: inline-flex; gap: 6px; align-items: center; font-weight: 700; }
.ivs-leg i { width: 14px; height: 3px; border-radius: 2px; }
.ivs-leg em { font-style: normal; font-weight: 800; }
.ivs .up { color: var(--intel-up-hot); }
.ivs .dn { color: var(--intel-dn-hot); }
.ivs-hero-stat .up { color: var(--intel-up-hot); }
.ivs-hero-stat .dn { color: var(--intel-dn-hot); }
.ivs-tblwrap { overflow-x: auto; background: var(--intel-tile); border: 1px solid var(--intel-inst-line); border-radius: 18px; margin: 16px 0 14px; }
.ivs-tbl { width: 100%; border-collapse: collapse; min-width: 520px; }
.ivs-tbl th, .ivs-tbl td { padding: 11px 12px; text-align: right; font-size: 13px; border-bottom: 1px solid var(--intel-inst-grid); color: var(--intel-inst-ink); }
.ivs-tbl th:first-child, .ivs-tbl td:first-child { text-align: left; font-weight: 700; color: var(--intel-inst-mut); }
.ivs-tbl thead th { font-size: 12px; font-weight: 900; color: var(--intel-inst-ink); }
.ivs-tbl td.hit { background: #123227; font-weight: 800; color: var(--intel-up-hot); }
.ivs-tbl td.na { color: var(--intel-inst-mut); }
.ivs-split { display: grid; grid-template-columns: 1.1fr .9fr; gap: 12px; margin: 0 0 14px; }
.ivs-card { background: var(--intel-tile); border: 1px solid var(--intel-inst-line); border-radius: 18px; padding: 16px 18px; }
.ivs-card h3 { margin: 0 0 4px; font-size: 15px; color: var(--intel-inst-ink); }
.ivs-card p, .ivs-card li { font-size: 12.5px; color: var(--intel-inst-mut); line-height: 1.45; }
.ivs-card ul { margin: 8px 0 0; padding-left: 18px; }
.ivs-corr { width: 100%; border-collapse: collapse; margin-top: 8px; }
.ivs-corr th, .ivs-corr td { padding: 8px; text-align: center; font-size: 12.5px; font-weight: 800; border-radius: 6px; }
.ivs-corr th { color: var(--intel-inst-mut); font-size: 11px; }
.ivs-corr td.self { background: var(--intel-up-hot); color: var(--intel-dark); }
.ivs-ov { display: grid; grid-template-columns: 120px 1fr 40px; gap: 8px; align-items: center; margin-top: 10px; font-size: 12.5px; font-weight: 700; color: var(--intel-inst-ink); }
.ivs-ov i { display: block; height: 8px; background: var(--intel-up-hot); border-radius: 99px; max-width: 100%; }
.ivs-lock { background: #2a140c; color: #fff; border-radius: 16px; padding: 18px; margin: 12px 0; }
.ivs-lock span { font-size: 10px; font-weight: 900; letter-spacing: .1em; background: #BB5C2D; padding: 3px 8px; border-radius: 99px; }
.ivs-lock a { display: inline-flex; margin-top: 10px; background: #fff; color: #BB5C2D; font-weight: 800; text-decoration: none; padding: 8px 12px; border-radius: 8px; }
.ivs-empty { padding: 28px 16px; text-align: center; color: var(--intel-inst-mut); background: var(--intel-tile); border: 1px dashed var(--intel-inst-line); border-radius: 18px; }
.ivs-skel .bar { height: 80px; border-radius: 14px; background: var(--intel-tile); margin-bottom: 10px; }
.ivs-skel .bar.tall { height: 320px; }
.ivs-src { font-size: 11.5px; color: var(--intel-inst-mut); line-height: 1.45; margin: 8px 2px 0; }
.ivs-zero { stroke: var(--intel-up-hot); stroke-opacity: .35; }
.ivs-ma { display: flex; gap: 10px; flex-wrap: wrap; font-size: 11.5px; font-weight: 800; color: var(--intel-inst-mut); margin: 4px 0; }
.ivs-seat { position: relative; height: 8px; background: var(--intel-inst-grid); border-radius: 99px; margin: 8px 0 4px; }
.ivs-seat b { position: absolute; top: -3px; width: 10px; height: 14px; margin-left: -5px; background: var(--intel-up-hot); border-radius: 2px; }
.ivs-seat span { display: block; font-size: 10.5px; font-weight: 700; color: var(--intel-inst-mut); margin-top: 10px; }
.ivs-hold, .ivs-print { font-size: 11.5px; font-weight: 700; color: var(--intel-inst-ink); margin-top: 6px; }
.ivs-hold em { font-style: normal; }
.ivs-lad-h, .ivs-lad-r { display: grid; gap: 8px; align-items: center; margin-top: 8px; font-size: 12.5px; }
.ivs-lad-h { font-size: 11px; color: var(--intel-inst-mut); }
.ivs-barwrap { display: block; position: relative; height: 18px; background: var(--intel-dark); border-radius: 6px; overflow: hidden; }
.ivs-barwrap i { display: block; height: 100%; }
.ivs-barwrap i.up { background: var(--intel-up-hot); }
.ivs-barwrap i.dn { background: var(--intel-dn-hot); }
.ivs-barwrap em { position: absolute; right: 6px; top: 1px; font-style: normal; font-size: 11px; font-weight: 800; }
.ivs-sea-row { display: grid; grid-template-columns: 52px 1fr; gap: 8px; align-items: center; margin-top: 10px; }
.ivs-sea { display: grid; grid-template-columns: repeat(12, 1fr); gap: 4px; }
.ivs-sea i { display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 44px; border-radius: 8px; font-size: 10px; font-weight: 800; color: var(--intel-inst-ink); font-style: normal; }
.ivs-sea i b { font-size: 11px; }
.ivs-sea i.na { background: var(--intel-dark); color: var(--intel-inst-mut); }
.ivs-mini { width: 100%; border-collapse: collapse; margin-top: 8px; }
.ivs-mini th, .ivs-mini td { text-align: left; padding: 6px 4px; font-size: 12.5px; border-bottom: 1px solid var(--intel-inst-grid); color: var(--intel-inst-ink); }
.ivs-mini th { color: var(--intel-inst-mut); font-size: 11px; }
.ivs-hists { display: flex; gap: 16px; flex-wrap: wrap; margin-top: 10px; }
.ivs-hist-col { flex: 1 1 160px; min-width: 140px; }
.ivs-hist { display: flex; align-items: flex-end; gap: 3px; height: 72px; margin: 8px 0 4px; }
.ivs-hist i { flex: 1; border-radius: 2px 2px 0 0; opacity: .85; }
.ivs-hist-col span { font-size: 10.5px; color: var(--intel-inst-mut); }
.ivs-zrow { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin: 10px 0; }
.ivs-zrow span { display: block; font-size: 10px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: var(--intel-inst-mut); }
.ivs-zrow b { display: block; font-size: 22px; margin-top: 2px; color: var(--intel-inst-ink); }
/* #researchUnlockStrip REMOVED from this hide list 2026-08-21: body carries
   intel-open hardcoded and never removes it, so this !important killed the
   always-on unlock bar on every pane of /research. paintUnlockStrip() and
   setMode() were both no-ops against it. It is the fallback way to buy. */

body.intel-premium.intel-open #researchFreeMeter { display: none !important; }

/* Cost tattoo — Rap sheet */
body.intel-premium .df-tattoo {
  background: var(--intel-dark);
  color: var(--intel-inst-ink);
  border-radius: 18px;
  padding: 18px 20px;
  margin: 0 0 14px;
}
body.intel-premium .df-tattoo-k {
  font-size: 10px;
  font-weight: 800;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--intel-inst-mut);
  margin-bottom: 8px;
}
body.intel-premium .df-tattoo-row {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
}
body.intel-premium .df-tattoo-row span {
  display: block;
  font-size: 11px;
  font-weight: 700;
  color: var(--intel-inst-mut);
}
body.intel-premium .df-tattoo-row b {
  display: block;
  font-size: 26px;
  font-weight: 900;
  letter-spacing: -.04em;
  color: var(--intel-inst-ink);
  margin-top: 2px;
}
body.intel-premium .df-tattoo.up .pnl { color: var(--intel-up-hot); }
body.intel-premium .df-tattoo.dn .pnl { color: var(--intel-dn-hot); }
body.intel-premium .df-tattoo p {
  margin: 10px 0 0;
  font-size: 12px;
  color: var(--intel-inst-mut);
  line-height: 1.4;
}

/* Scan */
body.intel-premium [data-ria-pane="find"] .sc-hero h2 {
  font-size: 28px !important;
  letter-spacing: -.04em;
  color: var(--intel-ink);
}
body.intel-premium [data-ria-pane="find"] .sc-card,
body.intel-premium [data-ria-pane="find"] .sc-filters,
body.intel-premium [data-ria-pane="find"] .sc-cons {
  border-radius: var(--intel-radius) !important;
  border-color: var(--intel-line) !important;
}
body.intel-premium [data-ria-pane="find"] .sc-subtabs button.on {
  background: var(--intel-select) !important;
  color: var(--intel-select-ink) !important;
}

/* Notes */
body.intel-premium [data-ria-pane="saved"] {
  background: var(--intel-mint);
  border: 1px solid var(--intel-line);
  border-radius: var(--intel-radius);
  padding: 16px;
}
body.intel-premium [data-ria-pane="saved"] .nb,
body.intel-premium [data-ria-pane="saved"] .nb-card {
  background: var(--intel-card);
  border-color: var(--intel-line);
  box-shadow: 0 8px 24px rgba(10, 28, 20, .06);
}

@media (max-width: 800px) {
  .ivs-split { grid-template-columns: 1fr; }
  .ivs-hero-stat { width: 100%; }
  .ivs-sea { grid-template-columns: repeat(6, 1fr); }
  .ivs-zrow { grid-template-columns: 1fr; }
  .ivs-lad-h, .ivs-lad-r { overflow-x: auto; }
}
@media (max-width: 600px) {
  body.intel-premium .df-tattoo-row { grid-template-columns: 1fr; }
  body.intel-premium .df-tattoo-row b { font-size: 22px; }
}

body.intel-premium .rc-ph { display: none !important; }
body.intel-premium #researchChart .rc-svg { max-height: 420px !important; }
body.intel-premium #researchChart .rc-price .p { font-size: 42px !important; letter-spacing: -.05em; }
body.intel-premium .rc-ma50 { stroke: #E86B1F !important; }
body.intel-premium .rc-ma200 { stroke: var(--intel-spy) !important; }

.pa-wall, .pa-well {
  background: var(--intel-dark);
  color: var(--intel-inst-ink);
  border-radius: 18px;
  padding: 16px 18px 18px;
  margin: 0 0 14px;
}
.pa-wall h2, .pa-well h2 { margin: 0 0 4px; font-size: 15px; color: var(--intel-inst-ink); }
.pa-wall p, .pa-well p { margin: 0 0 12px; font-size: 12.5px; color: var(--intel-inst-mut); }
.pa-wall-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 10px; }
.pa-tattoo {
  background: var(--intel-tile);
  border: 1px solid var(--intel-inst-line);
  border-radius: 14px;
  padding: 12px;
}
.pa-tattoo b { display: block; font-size: 18px; color: var(--intel-inst-ink); }
.pa-tattoo span { display: block; font-size: 12px; color: var(--intel-inst-mut); margin-top: 4px; }
.pa-tattoo em { display: block; font-style: normal; font-size: 20px; font-weight: 900; margin-top: 6px; }
.pa-ghost { font-size: 12px; color: var(--intel-inst-ink); margin: 12px 0 0; line-height: 1.45; }
.pa-well-stat { font-size: 22px; font-weight: 900; margin: 0 0 8px; }
.pa-well-svg { width: 100%; height: 120px; display: block; }

.intel-dock {
  position: fixed;
  right: 14px;
  bottom: 16px;
  z-index: 40;
  display: flex;
  gap: 8px;
}
.intel-dock button {
  border: 1px solid var(--intel-inst-line);
  background: var(--intel-dark);
  color: var(--intel-inst-ink);
  font: inherit;
  font-size: 12px;
  font-weight: 800;
  padding: 8px 12px;
  border-radius: 999px;
  cursor: pointer;
  box-shadow: 0 12px 32px rgba(4,17,12,.35);
}
.intel-dock button.on, .intel-dock button:hover { background: var(--intel-up-hot); color: var(--intel-dark); border-color: var(--intel-up-hot); }
.intel-help {
  position: fixed;
  inset: 0;
  z-index: 50;
  background: rgba(4,17,12,.45);
  display: grid;
  place-items: center;
  padding: 20px;
}
.intel-help[hidden] { display: none !important; }
.intel-help-card {
  background: var(--intel-dark);
  color: var(--intel-inst-ink);
  border-radius: 18px;
  padding: 22px 24px;
  max-width: 420px;
  box-shadow: 0 24px 60px rgba(0,0,0,.4);
}
.intel-help-card b { display: block; font-size: 18px; margin-bottom: 8px; }
.intel-help-card p { margin: 6px 0; font-size: 13.5px; color: var(--intel-inst-mut); line-height: 1.45; }

.intel-idle {
  background: var(--intel-dark);
  color: var(--intel-inst-ink);
  border-radius: 22px;
  padding: 28px 24px 24px;
  margin: 12px 0 16px;
  box-shadow: 0 24px 50px rgba(10,28,20,.18);
}
.intel-idle-k { font-size: 11px; font-weight: 800; letter-spacing: .16em; text-transform: uppercase; color: var(--intel-inst-mut); }
.intel-idle h2 { margin: 8px 0 8px; font-size: 32px; letter-spacing: -.04em; color: var(--intel-inst-ink); }
.intel-idle p { margin: 0 0 16px; color: var(--intel-inst-mut); max-width: 62ch; line-height: 1.45; }
.intel-idle-row { display: flex; flex-wrap: wrap; gap: 8px; }
.intel-idle-row button {
  border: 1px solid var(--intel-inst-line);
  background: var(--intel-tile);
  color: var(--intel-inst-ink);
  font: inherit;
  font-weight: 800;
  padding: 10px 12px;
  border-radius: 12px;
  cursor: pointer;
}
.intel-idle-row button b { display: block; font-size: 10px; color: var(--intel-up-hot); }
.intel-idle-row button:hover { background: var(--intel-up-hot); color: var(--intel-dark); }
.intel-idle-last button { border: 0; background: transparent; color: var(--intel-up-hot); font: inherit; font-weight: 800; cursor: pointer; }

body.intel-quiet [data-ria-pane="news"] .jag-newsdesk { opacity: .78; filter: grayscale(.12); }
body.intel-quiet .intel-dock-q { background: var(--intel-up-hot); color: var(--intel-dark); }
.intel-quiet-note {
  margin: 0 0 12px;
  padding: 10px 14px;
  border-radius: 12px;
  background: var(--intel-dark);
  color: var(--intel-inst-ink);
  font-size: 13px;
  font-weight: 700;
}

.intel-pause-banner {
  position: sticky;
  top: 36px;
  z-index: 85;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 16px;
  background: #3a1814;
  color: #ffd0c8;
  font-size: 13px;
  font-weight: 700;
}
.intel-pause-banner[hidden] { display: none !important; }
.intel-pause-banner button {
  border: 0;
  background: var(--intel-dn-hot);
  color: var(--intel-dark);
  font: inherit;
  font-weight: 800;
  padding: 6px 12px;
  border-radius: 999px;
  cursor: pointer;
}

body.intel-premium .df-earn-poster,
body.intel-premium .df-closed {
  background: var(--intel-dark);
  color: var(--intel-inst-ink);
  border-radius: 18px;
  padding: 18px 20px;
  margin: 0 0 14px;
}
body.intel-premium .df-earn-days,
body.intel-premium .df-closed-v {
  font-size: 48px;
  font-weight: 900;
  letter-spacing: -.05em;
  line-height: 1;
  color: var(--intel-inst-ink);
  margin: 6px 0 8px;
}
body.intel-premium .df-closed.up .df-closed-v { color: var(--intel-up-hot); }
body.intel-premium .df-closed.dn .df-closed-v { color: var(--intel-dn-hot); }
body.intel-premium .df-earn-poster p,
body.intel-premium .df-closed p {
  margin: 0;
  color: var(--intel-inst-mut);
  font-size: 13.5px;
  line-height: 1.45;
  max-width: 62ch;
}
body.intel-premium .df-earn-sub { margin-top: 8px !important; font-size: 12.5px !important; }

.pa-year {
  background: var(--intel-dark);
  color: var(--intel-inst-ink);
  border-radius: 18px;
  padding: 16px 18px 18px;
  margin: 0 0 14px;
}
.pa-year h2 { margin: 0 0 4px; font-size: 15px; color: var(--intel-inst-ink); }
.pa-year p { margin: 0 0 12px; font-size: 12.5px; color: var(--intel-inst-mut); }
.pa-year-row {
  display: flex;
  flex-wrap: wrap;
  gap: 2px;
}
.pa-year-row i {
  display: block;
  width: 8px;
  height: 18px;
  border-radius: 2px;
}
.pa-year-row i.up { background: var(--intel-up-hot); }
.pa-year-row i.dn { background: var(--intel-dn-hot); }
.pa-year-stat { margin: 12px 0 0 !important; font-weight: 700; color: var(--intel-inst-ink) !important; }
.pa-well-run { margin: 0 0 10px; font-size: 12.5px; color: var(--intel-inst-mut); }

body.intel-premium .tkr-acts {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
}

/* Relay — My Charts hero: slide every seat you hold. */
.ir { margin: 0 0 14px; }
.ir-k { display: block; font-size: 11px; font-weight: 800; letter-spacing: .16em; text-transform: uppercase; color: var(--intel-pro); }
.ir-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin: 0 0 12px; }
.ir-go { flex: 0 0 auto; width: min(228px, 100%); padding: 12px 14px; border-radius: 14px; border: 1px solid #e3c4b0; background: #fff8f3; text-align: center; }
.ir-go p { margin: 0 0 8px; font-size: 12.5px; line-height: 1.4; color: #5A626B; max-width: none; }
.ir-go a { display: inline-flex; background: #BB5C2D; color: #fff; font-weight: 800; font-size: 13px; text-decoration: none; padding: 8px 14px; border-radius: 999px; }
/* Free tease: no blur — tickers/sparks clear; dollars use .ir-lock-fig */
.ir-tease .ir-px-locked { color: var(--intel-mut); }
.ir-lock-fig {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 1.6em; font-size: 18px; font-weight: 900; letter-spacing: -.02em;
  color: var(--intel-pro); opacity: .85;
}
.ir-tease .ir-qty { color: var(--intel-mut); }
.ir-head h3 { margin: 4px 0 4px; font-size: 22px; letter-spacing: -.03em; color: var(--intel-inst-ink); }
.ir-head p { margin: 0; font-size: 13px; color: var(--intel-inst-mut); max-width: 52ch; line-height: 1.45; }
.ir-nav { display: flex; align-items: center; gap: 8px; flex: 0 0 auto; }
.ir-btn {
  border: 1px solid var(--intel-line); background: #fff; color: var(--intel-ink);
  font: inherit; font-weight: 800; font-size: 13px; padding: 8px 12px; border-radius: 10px; cursor: pointer;
}
.ir-btn:hover { background: var(--intel-mint); }
.ir-count { font-size: 12.5px; font-weight: 800; color: var(--intel-inst-mut); min-width: 3.4em; text-align: center; }
.ir-track {
  display: flex; gap: 12px; overflow-x: auto; scroll-snap-type: x mandatory;
  -webkit-overflow-scrolling: touch; padding: 2px 2px 10px; min-width: 0;
}
.ir-card {
  position: relative; flex: 0 0 min(100%, 340px); scroll-snap-align: start;
  background: var(--intel-card); border: 1px solid var(--intel-line); border-radius: 18px;
  padding: 14px 14px 12px; min-width: 0; color: var(--intel-up-hot);
}
.ir-card.is-locked { color: var(--intel-mut); }
.ir-card-h { display: flex; justify-content: space-between; align-items: flex-start; gap: 10px; }
.ir-sym { display: block; font-size: 20px; letter-spacing: -.03em; color: var(--intel-ink); }
.ir-qty { font-size: 12px; font-weight: 700; color: var(--intel-mut); }
.ir-px { text-align: right; font-size: 16px; font-weight: 800; color: var(--intel-ink); }
.ir-px small { display: block; font-size: 11.5px; font-weight: 700; }
.ir-px.up small { color: var(--intel-up-hot); }
.ir-px.dn small { color: var(--intel-dn-hot); }
.ir-spark { width: 100%; height: 88px; display: block; margin: 10px 0 8px; }
.ir-card-f { display: flex; flex-wrap: wrap; gap: 8px 14px; }
.ir-card-f a { font-size: 13px; font-weight: 800; color: var(--intel-ink); text-decoration: none; }
.ir-card-f a:hover { text-decoration: underline; }
.ir-lock {
  position: absolute; inset: 0; z-index: 2; display: flex; flex-direction: column;
  align-items: center; justify-content: center; gap: 8px; text-align: center;
  background: rgba(244, 247, 245, .82); backdrop-filter: blur(6px); border-radius: 18px; padding: 16px;
}
.ir-lock span { font-size: 13px; font-weight: 800; color: var(--intel-ink); }
.ir-lock a {
  display: inline-flex; background: var(--intel-pro); color: #fff; font-weight: 800; font-size: 13px;
  text-decoration: none; padding: 8px 14px; border-radius: 999px;
}
.ir-empty {
  background: var(--intel-card); border: 1px solid var(--intel-line); border-radius: 18px; padding: 22px 18px;
}
.ir-empty b { display: block; font-size: 20px; margin: 4px 0 8px; color: var(--intel-ink); }
.ir-empty p { margin: 0 0 14px; color: var(--intel-mut); line-height: 1.45; max-width: 52ch; }
.ir-cta { display: inline-flex; font-weight: 800; font-size: 14px; text-decoration: none; padding: 10px 16px; border-radius: 999px; }
.ir-cta-green { background: #006E4E; color: #fff; }
@media (max-width: 600px) {
  .ir-head { align-items: flex-start; }
  .ir-nav { width: 100%; justify-content: flex-start; }
  .ir-card { flex-basis: min(100%, 280px); }
}

/* Book bar — seats you hold, under the Intel strip */
.ibb { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; margin: 8px 0 10px; min-width: 0; }
.ibb-k, .its-k { font-size: 10.5px; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; color: var(--intel-pro); flex: 0 0 auto; }
.ibb p { margin: 0; font-size: 13px; color: var(--intel-mut); }
.ibb-row, .its-row { display: flex; flex-wrap: wrap; gap: 6px; min-width: 0; flex: 1 1 160px; }
.ibb-chip, .its-chip {
  border: 1px solid var(--intel-line); background: var(--intel-card); color: var(--intel-ink);
  font: inherit; font-weight: 800; font-size: 12.5px; padding: 6px 10px; border-radius: 999px; cursor: pointer;
}
.ibb-chip:hover, .its-chip:hover { background: var(--intel-mint); }
.ibb-acts { display: none !important; }
.ibb-link {
  border: 0; background: transparent; color: var(--intel-ink); font: inherit; font-weight: 800; font-size: 12.5px;
  text-decoration: underline; cursor: pointer; padding: 0;
}
.its { margin: 10px 0 4px; min-width: 0; }
.its p { margin: 6px 0 0; font-size: 12.5px; color: var(--intel-mut); max-width: 62ch; }

/* Heat board (folded under My charts — open Book picture to mount) */
.ihb { margin: 0 0 8px; background: var(--intel-card); border: 1px solid var(--intel-line); border-radius: 14px; padding: 14px 14px 12px; min-width: 0; max-width: 100%; }
.ihb-k { font-size: 11px; font-weight: 800; letter-spacing: .16em; text-transform: uppercase; color: var(--intel-pro); }
.ihb h3 { margin: 12px 0 2px; font-size: 13.5px; color: var(--intel-ink); }
.ihb-muted { margin: 0 0 8px; font-size: 12px; color: var(--intel-mut); line-height: 1.4; }
.ihb-tease-note { margin: 8px 0 0; font-size: 12.5px; color: var(--intel-mut); line-height: 1.4; max-width: 52ch; }
.ihb-lock-fig {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 1.4em; font-weight: 900; color: var(--intel-pro); opacity: .85; letter-spacing: -.02em;
}
.ihb-tattoo { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; margin: 10px 0 2px; }
.ihb-tattoo > div { min-width: 0; padding: 8px 10px; border-radius: 10px; background: var(--intel-mint, #f4f7f5); border: 1px solid var(--intel-line); }
.ihb-tattoo span { display: block; font-size: 10.5px; font-weight: 700; color: var(--intel-mut); letter-spacing: .02em; }
.ihb-tattoo b { display: block; font-size: 18px; font-weight: 900; margin-top: 2px; color: var(--intel-ink); letter-spacing: -.02em; word-break: break-word; }
.ihb-tattoo .ihb-sym { font-size: 15px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ihb-tattoo small { display: block; font-size: 11px; color: var(--intel-mut); margin-top: 2px; }
.ihb-tattoo .up b { color: var(--intel-up-hot); }
.ihb-tattoo .dn b { color: var(--intel-dn-hot); }
.ihb-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr); gap: 14px 18px; margin-top: 6px; align-items: start; }
.ihb-secs { display: flex; flex-direction: column; gap: 8px; }
.ihb-sec { display: grid; grid-template-columns: minmax(0, 88px) minmax(0, 1fr) 40px; gap: 8px; align-items: center; font-size: 13px; font-weight: 700; }
.ihb-sec-name { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ihb-sec .ihb-track { display: block; height: 12px; border-radius: 99px; background: var(--intel-line, #e4e8ee); overflow: hidden; min-width: 0; }
.ihb-sec .ihb-track i { display: block; height: 100%; border-radius: 99px; background: #117A37; min-width: 8px; }
.ihb-seats { margin: 0; padding: 0; list-style: none; }
.ihb-seats li { display: grid; grid-template-columns: minmax(72px, 7.5rem) minmax(0, 1fr) minmax(96px, auto); gap: 10px; align-items: center; padding: 8px 0; border-bottom: 1px solid var(--intel-line); font-size: 13px; }
.ihb-seats li:last-child { border-bottom: 0; }
.ihb-seats .ihb-sym { font-size: 13px; letter-spacing: -.01em; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
.ihb-seats .ihb-track { height: 10px; display: block; border-radius: 99px; background: var(--intel-line, #e4e8ee); overflow: hidden; min-width: 0; }
.ihb-seats .ihb-track i { display: block; height: 100%; border-radius: 99px; background: #117A37; min-width: 6px; }
.ihb-seats .ihb-num { text-align: right; white-space: nowrap; }
.ihb-seats .ihb-num small { white-space: nowrap; }
.ihb-fills { margin: 0; padding: 0; list-style: none; display: flex; flex-wrap: wrap; gap: 8px; max-width: 720px; }
.ihb-fills li { border: 1px solid var(--intel-line); border-radius: 10px; padding: 8px 12px; font-size: 12.5px; flex: 0 1 auto; min-width: 140px; max-width: 220px; }
.ihb-fills b { display: block; font-size: 13px; white-space: nowrap; }
.ihb-fills .ihb-num { color: var(--intel-mut); font-size: 12px; }
@media (max-width: 820px) { .ihb-grid { grid-template-columns: 1fr; } }
.ihb-grid-one { grid-template-columns: 1fr; max-width: 560px; }
.ihb-stale { margin: 0; padding-left: 18px; color: var(--intel-ink); }
.ihb-cal { margin-top: 10px; overflow-x: auto; max-width: 560px; }
.ihb-pro { margin-top: 16px; display: flex; flex-wrap: wrap; align-items: center; gap: 10px; padding: 12px; border-radius: 12px; background: var(--intel-mint); border: 1px solid var(--intel-line); }
.ihb-pro span { font-size: 13px; color: var(--intel-ink); flex: 1 1 180px; min-width: 0; }
.ihb-pro a { display: inline-flex; background: var(--intel-pro); color: #fff; font-weight: 800; font-size: 13px; text-decoration: none; padding: 8px 14px; border-radius: 999px; }
.ihb-empty { padding: 8px 2px 4px; }
/* Free: intentional Pro locks in markup — do not frost/blur (looks broken). */
.ihb-tease .ihb-lock-fig { filter: none; }
body.intel-premium [data-ria-pane="portfolio"] .ria-pane-intro p {
  margin: 4px 0 0; font-size: 13px; color: var(--intel-mut); line-height: 1.4; max-width: 56ch;
  text-transform: none; letter-spacing: 0; font-weight: 600;
}
.np-badge.hold { background: var(--intel-mint); color: var(--intel-pro); border: 1px solid var(--intel-line); font-size: 10px; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; padding: 2px 7px; border-radius: 6px; }
@media (max-width: 720px) {
  .ihb-tattoo { grid-template-columns: 1fr 1fr; }
  .ihb-sec { grid-template-columns: minmax(0, 1fr) minmax(24px, 1.4fr) 36px; }
}

.ib { margin: 0 0 22px; }
.ib-hero {
  background: var(--intel-dark);
  color: var(--intel-inst-ink);
  border-radius: 22px;
  padding: 28px 24px 24px;
  margin: 0 0 14px;
  box-shadow: 0 24px 50px rgba(10,28,20,.18);
}
.ib-k { font-size: 11px; font-weight: 800; letter-spacing: .16em; text-transform: uppercase; color: var(--intel-inst-mut); }
.ib-hero h2 { margin: 8px 0 8px; font-size: 32px; letter-spacing: -.04em; color: var(--intel-inst-ink); }
.ib-hero p { margin: 0; color: var(--intel-inst-mut); max-width: 68ch; line-height: 1.45; }
.ib-card {
  background: var(--intel-dark);
  color: var(--intel-inst-ink);
  border-radius: 18px;
  padding: 18px 18px 20px;
  margin: 0 0 14px;
}
.ib-card h3 { margin: 0 0 6px; font-size: 16px; color: var(--intel-inst-ink); }
.ib-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; }
.ib-note { margin: 0 0 12px; font-size: 12.5px; color: var(--intel-inst-mut); line-height: 1.45; }
.ib-empty { background: var(--intel-dark); color: var(--intel-inst-ink); border-radius: 18px; padding: 28px 22px; }
.ib-empty b { display: block; font-size: 22px; color: var(--intel-inst-ink); margin-bottom: 8px; }
.ib-mix-stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin: 0 0 12px; }
.ib-mix-stats span { display: block; font-size: 11px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: var(--intel-inst-mut); }
.ib-mix-stats b { display: block; font-size: 22px; margin-top: 4px; color: var(--intel-inst-ink); }
.ib-svg { width: 100%; height: 168px; display: block; }
.ib-leg { font-size: 12px; color: var(--intel-inst-mut); margin-top: 8px; }
.ib-leg i { display: inline-block; width: 18px; height: 3px; margin: 0 6px 3px 10px; vertical-align: middle; }
.ib-leg i.book { background: var(--intel-up-hot); margin-left: 0; }
.ib-leg i.spy { background: var(--intel-spy); }
.ib-rng { display: flex; gap: 4px; }
.ib-rng button, .ib-btn, .ib-kit-row button {
  appearance: none;
  border: 1px solid var(--intel-inst-line);
  background: var(--intel-tile);
  color: var(--intel-inst-ink);
  font: inherit;
  font-size: 12px;
  font-weight: 800;
  padding: 7px 12px;
  border-radius: 999px;
  cursor: pointer;
}
.ib-rng button.on, .ib-rng button:hover, .ib-btn:hover, .ib-kit-row button:hover {
  background: var(--intel-up-hot); color: var(--intel-dark); border-color: var(--intel-up-hot);
}
.ib-split { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin: 0 0 14px; }
.ib-split .ib-card { margin: 0; }
.ib-big { font-size: 28px; font-weight: 900; letter-spacing: -.03em; margin: 0 0 12px; }
.ib-list { list-style: none; margin: 0; padding: 0; }
.ib-list li { display: grid; grid-template-columns: 64px 1fr auto; gap: 8px; align-items: center; padding: 8px 0; border-top: 1px solid var(--intel-inst-grid); font-size: 13px; }
.ib-list b { color: var(--intel-inst-ink); }
.ib-list span { color: var(--intel-inst-mut); }
.up { color: var(--intel-up-hot) !important; }
.dn { color: var(--intel-dn-hot) !important; }
.ib-kill p { margin: 0; color: var(--intel-inst-ink); line-height: 1.5; font-size: 14.5px; }
.ib-flat-tot { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin: 0 0 14px; }
.ib-flat-tot span { display: block; font-size: 11px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: var(--intel-inst-mut); }
.ib-flat-tot b { display: block; font-size: 22px; color: var(--intel-inst-ink); margin-top: 4px; }
.ib-tablewrap { overflow-x: auto; }
.ib-tbl { width: 100%; border-collapse: collapse; font-size: 13px; }
.ib-tbl th { text-align: left; font-size: 10px; letter-spacing: .08em; text-transform: uppercase; color: var(--intel-inst-mut); padding: 0 8px 8px; border-bottom: 1px solid var(--intel-inst-grid); }
.ib-tbl td { padding: 9px 8px; border-bottom: 1px solid var(--intel-inst-grid); color: var(--intel-inst-ink); }
.ib-tbl td b { color: var(--intel-inst-ink); }
.ib-trips { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 10px; }
.ib-trip { background: var(--intel-tile); border-radius: 14px; padding: 12px 14px; border: 1px solid var(--intel-inst-line); }
.ib-trip b { display: block; color: var(--intel-inst-ink); font-size: 15px; }
.ib-trip em { display: block; font-style: normal; font-size: 22px; font-weight: 900; margin: 4px 0; }
.ib-trip span { display: block; font-size: 12px; color: var(--intel-inst-mut); line-height: 1.4; }
.ib-hero-top { display: flex; justify-content: space-between; gap: 14px; align-items: flex-start; flex-wrap: wrap; }
.ib-mega {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 10px;
  margin: 22px 0 0;
}
.ib-mega-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); margin: 0 0 10px; }
.ib-mega div {
  background: var(--intel-tile);
  border: 1px solid var(--intel-inst-line);
  border-radius: 16px;
  padding: 12px 12px 14px;
  min-width: 0;
}
.ib-mega span {
  display: block;
  font-size: 10px;
  font-weight: 800;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--intel-inst-mut);
}
.ib-mega b {
  display: block;
  font-size: 22px;
  letter-spacing: -.03em;
  margin-top: 6px;
  color: var(--intel-inst-ink);
}
.ib-mega i { display: block; font-style: normal; font-size: 11px; color: var(--intel-inst-mut); margin-top: 4px; }
.ib-jump {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin: 0 0 14px;
}
.ib-jump a {
  font-size: 12px;
  font-weight: 800;
  color: var(--intel-inst-ink);
  text-decoration: none;
  background: var(--intel-tile);
  border: 1px solid var(--intel-inst-line);
  border-radius: 999px;
  padding: 6px 11px;
}
.ib-jump a:hover { background: var(--intel-up-hot); color: var(--intel-dark); border-color: var(--intel-up-hot); }
.ib-sym {
  appearance: none;
  border: 0;
  background: transparent;
  color: var(--intel-up-hot);
  font: inherit;
  font-weight: 800;
  cursor: pointer;
  padding: 0;
}
.ib-sym:hover { text-decoration: underline; }
.ib-sec { list-style: none; margin: 0; padding: 0; }
.ib-sec li {
  display: grid;
  grid-template-columns: minmax(0, 1.2fr) 28px 1fr 42px;
  gap: 8px;
  align-items: center;
  padding: 7px 0;
  border-top: 1px solid var(--intel-inst-grid);
  font-size: 13px;
}
.ib-sec i {
  display: block;
  height: 8px;
  border-radius: 99px;
  background: var(--intel-up-hot);
}
.ib-sec em { font-style: normal; font-weight: 800; text-align: right; }
.ib-notes { list-style: none; margin: 0; padding: 0; }
.ib-notes li {
  display: grid;
  grid-template-columns: 72px 1fr;
  gap: 10px;
  padding: 10px 0;
  border-top: 1px solid var(--intel-inst-grid);
  font-size: 13px;
  color: var(--intel-inst-mut);
  line-height: 1.4;
}
.ib-ghosts { margin: 14px 0 0; color: var(--intel-inst-mut); font-size: 13px; line-height: 1.7; }
.ib-ghosts .ib-sym { margin-right: 6px; }
.ib-leg-line { margin: 8px 0 0; font-size: 13px; color: var(--intel-inst-mut); }
.ib-kit-row { display: flex; flex-wrap: wrap; gap: 8px; }

body.intel-premium #researchChart .rc-chartwrap,
body.intel-premium #researchChart .rc-rangebtns,
body.intel-premium #researchChart .rc-axis,
body.intel-premium #researchChart .rc-h { display: none !important; }

.il { background: var(--intel-dark); color: var(--intel-inst-ink); border-radius: 0 0 18px 18px; padding: 8px 16px 18px; margin: 0 -18px -18px; }
.il-top { display: flex; justify-content: space-between; gap: 12px; align-items: flex-start; flex-wrap: wrap; margin: 0 0 12px; }
.il-k { font-size: 11px; font-weight: 800; letter-spacing: .16em; text-transform: uppercase; color: var(--intel-inst-mut); }
.il-top h3 { margin: 6px 0 6px; font-size: 22px; color: var(--intel-inst-ink); letter-spacing: -.03em; }
.il-top p { margin: 0; color: var(--intel-inst-mut); font-size: 13px; line-height: 1.45; max-width: 62ch; }
.il-png, .il-rng button, .il-chip {
  appearance: none; border: 1px solid var(--intel-inst-line); background: var(--intel-tile); color: var(--intel-inst-ink);
  font: inherit; font-size: 12px; font-weight: 800; padding: 7px 11px; border-radius: 999px; cursor: pointer;
}
.il-png:hover, .il-rng button.on, .il-rng button:hover, .il-chip.on, .il-chip:hover {
  background: var(--intel-up-hot); color: var(--intel-dark); border-color: var(--intel-up-hot);
}
.il-tools { display: flex; flex-direction: column; gap: 8px; margin: 0 0 10px; }
.il-rng, .il-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.il-read { display: flex; flex-wrap: wrap; gap: 10px 14px; align-items: baseline; margin: 0 0 8px; font-size: 13px; color: var(--intel-inst-mut); }
.il-read b { font-size: 28px; color: var(--intel-inst-ink); letter-spacing: -.03em; }
.il-stage { position: relative; }
.il-svg { width: 100%; height: auto; display: block; min-height: 280px; }
.il-tip {
  position: absolute; top: 8px; left: 8px; background: var(--intel-panel); color: var(--intel-inst-ink);
  border-radius: 8px; padding: 6px 10px; font-size: 12px; pointer-events: none;
}
.il-note, .il-load { font-size: 12px; color: var(--intel-inst-mut); margin: 10px 0 0; line-height: 1.45; }
.il .up { color: var(--intel-up-hot); } .il .dn { color: var(--intel-dn-hot); }

@media (max-width: 600px) {
  .il-read b { font-size: 22px; }
  .il-top h3 { font-size: 18px; }
}

@media print {
  .intel-local-banner, .intel-dock, .intel-idle, .intel-help, .intel-pause-banner,
  body.intel-premium header, body.intel-premium .ria-modes, body.intel-premium .lookup,
  body.intel-premium .rface, body.intel-premium .rjump { display: none !important; }
  body.intel-premium [data-ria-pane] { display: none !important; }
  body.intel-premium [data-ria-pane="stock"] { display: block !important; }
  body.intel-premium .tkr-print, body.intel-premium .tkr-vs, body.intel-premium .trade-cta { display: none !important; }
  body.ib-print-flat [data-ria-pane] { display: none !important; }
  body.ib-print-flat [data-ria-pane="portfolio"] { display: block !important; }
  body.ib-print-flat #portfolioAnalyzer,
  body.ib-print-flat .ria-pane-intro,
  body.ib-print-flat .rsec,
  body.ib-print-flat .ib-hero,
  body.ib-print-flat .ib-mix,
  body.ib-print-flat .ib-split,
  body.ib-print-flat .ib-kill,
  body.ib-print-flat .ib-trips,
  body.ib-print-flat .ib-receipts,
  body.ib-print-flat .ib-kit { display: none !important; }
  body.ib-print-flat .ib-flat { display: block !important; box-shadow: none; }
  body.ib-print-review [data-ria-pane] { display: none !important; }
  body.ib-print-review [data-ria-pane="portfolio"] { display: block !important; }
  body.ib-print-review #portfolioAnalyzer,
  body.ib-print-review .ria-pane-intro,
  body.ib-print-review .rsec,
  body.ib-print-review .ib-jump,
  body.ib-print-review .ib-leave,
  body.ib-print-review #ibLeave,
  body.ib-print-review #ibStale,
  body.ib-print-review #ibLots,
  body.ib-print-review #ibEarn,
  body.ib-print-review #ibNotes,
  body.ib-print-review .ib-kit,
  body.ib-print-review .ib-btn { display: none !important; }
  body.ib-print-receipts [data-ria-pane] { display: none !important; }
  body.ib-print-receipts [data-ria-pane="portfolio"] { display: block !important; }
  body.ib-print-receipts #portfolioAnalyzer,
  body.ib-print-receipts .ria-pane-intro,
  body.ib-print-receipts .rsec,
  body.ib-print-receipts .ib > :not(.ib-receipts) { display: none !important; }
}

@media (max-width: 800px) {
  .ib-split, .ib-mix-stats, .ib-flat-tot, .ib-mega, .ib-mega-3 { grid-template-columns: 1fr 1fr; }
  .ib-hero h2 { font-size: 24px; }
}
@media (max-width: 600px) {
  .ib-mega, .ib-mega-3, .ib-flat-tot { grid-template-columns: 1fr; }
}

@media (max-width: 600px) {
  .intel-idle h2 { font-size: 24px; }
  .intel-dock { right: 8px; bottom: 10px; }
  body.intel-premium #researchChart .rc-price .p { font-size: 28px !important; }
  body.intel-premium .df-earn-days,
  body.intel-premium .df-closed-v { font-size: 32px; }
  body.intel-premium .tkr-acts { width: 100%; }
}

/* ── Light / Dark switch + contrast floor ── */
.intel-theme-banner { display: inline-flex; align-items: center; }
.intel-theme-btn {
  appearance: none;
  border: 1px solid #3dce8a;
  background: #04110c;
  color: #c9e6d6;
  font: inherit;
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .08em;
  text-transform: uppercase;
  padding: 4px 10px;
  border-radius: 999px;
  cursor: pointer;
}
.intel-theme-btn:hover, .intel-theme-btn.on { background: #3dce8a; color: #04110c; }
/* THE WHITE LOGO. Owner, three separate times in one day: "dark mode still has the
   fucking white Jackson logo, which should never happen."

   This rule was the cause, and it was not a side effect - it destroys the brand by
   design. `brightness(0)` crushes every pixel to solid black, then `invert(1)` flips
   the whole thing to solid WHITE. Hue, saturation and the two-colour wordmark are gone
   by the second function. No amount of theming elsewhere could survive it.

   It was presumably added so the mark would "read on dark". It does not need the help:
   measured against the Intel dark ground, the Pro orange sits at 5.83:1 and the lighter
   green at 8.61:1, and a wordmark is large display type where 3:1 is the bar. So the
   filter bought nothing and cost the logo.

   A gentle lift instead - brightness and saturation only, no hue destruction - so the
   deep green lifts off a near-black ground while staying green. */
html[data-intel-theme="dark"] .pt-brand-logo,
.intel-logo-on-dark { filter: brightness(1.14) saturate(1.08); }

body.intel-premium .jag-newsdesk { --muted: var(--intel-mut); --text: var(--intel-ink); }
body.intel-premium .jag-newsdesk .asof,
body.intel-premium .jag-newsdesk .nm-note,
body.intel-premium .jag-newsdesk .news-side-card .ns-note,
body.intel-premium .jag-newsdesk .chip.trend .trend-count { color: var(--intel-mut) !important; }
body.intel-premium .rd-hl .src,
body.intel-premium .rd-hl .when,
body.intel-premium .rd-hl .meta { color: var(--intel-mut) !important; }
body.intel-premium .ria-modes { background: var(--intel-card); }
body.intel-premium .ria-modes button:hover { background: var(--intel-tile); color: var(--intel-ink); }
body.intel-premium .sc { --ink: var(--intel-ink); --muted: var(--intel-mut); --faint: var(--intel-mut); --line: var(--intel-line); --card: var(--intel-card); }
body.intel-premium .rpro .ys-stat { background: var(--intel-card); }
body.intel-premium .rpro .ys-h,
/* SCOPED 2026-08-22. Unscoped, this rule set `color` on EVERY .v inside .ys-stat — which
   silently annihilated every .v.up and .v.down beneath it, in BOTH themes. Same
   specificity (0,3,0), later in the file, so the semantic colour lost every time. It is
   why the owner said "the lack of color is bad for anything that's related to a gain or
   loss": the colour was being applied and then painted over. */
body.intel-premium .rpro .ys-stat .v:not(.up):not(.down):not(.neg):not(.pos) { color: var(--intel-ink); }
body.intel-premium .rpro .ys-empty,
body.intel-premium .rpro .ys-stat .k,
body.intel-premium .rpro .ys-stat .s { color: var(--intel-mut); }
body.intel-premium .jag-foot,
body.intel-premium .jag-foot-legal,
body.intel-premium .page-head h1 { color: var(--intel-mut); }
body.intel-premium .jag-foot a { color: var(--intel-ink); }
body.intel-premium .pt-view-tab,
body.intel-premium .pt-view-tab:link,
body.intel-premium .pt-view-tab:visited { background: var(--intel-card); color: var(--jag-green, #006E4E); border-color: var(--intel-line); }
body.intel-premium .pt-view-tab:not(.active):hover { background: var(--intel-tile); }

html[data-intel-theme="dark"] body.intel-premium {
  --intel-ink: #F1F4F7;        /* = --jag-ink */
  --intel-mut: #A7B0BE;        /* = --jag-ink-muted */
  --intel-page: #090D14;       /* = --jag-page */
  --intel-mint: #1B2533;       /* = --jag-card-2, the RAISED band */
  --intel-line: #263142;       /* = --jag-line */
  --intel-card: #151D29;       /* = --jag-card */
  --intel-select: #3dce8a;
  --intel-select-ink: #090D14;
  --intel-dark: #090D14;
  --intel-panel: #151D29;      /* = --jag-card */
  --intel-tile: #101620;       /* recessed well, matches the chart desk */
  --intel-glow: #c9e6d6;
  --intel-inst-ink: #F1F4F7;
  --intel-inst-mut: #A7B0BE;
  --intel-inst-line: #263142;
  --intel-inst-grid: #1F2836;
  --intel-up-hot: #3dce8a;
  --intel-dn-hot: #ff8a80;
  --intel-spy: #7EB6FF;
  --intel-shadow: 0 20px 50px rgba(0, 0, 0, .35);
  /* ── THE 15 LINES THAT MADE THE WHOLE SITE GREEN — DELETED 2026-08-22 ────────
     Owner, repeatedly: "why is it green? the dark mode for the intel page should kinda
     match the others... it's weird that you did that."

     This block used to re-declare the SITE'S SHARED tokens — --jag-ink, --jag-page,
     --jag-card, --jag-line, --text, --muted, --bg, --surface and friends — in green.
     Those names are not Intel's to own. They are what the app bar, the view tabs, the
     news-desk cards and the portfolio analyzer all read, which is exactly why the green
     leaked into components that have never heard of Intel, and why fixing it component by
     component never worked.

     css/tokens.css:108-135 already carries the correct NEUTRAL values for all fifteen,
     and tokens.css:337+ already maps them onto html[data-intel-theme="dark"]. This block
     won only on specificity (0,2,2) vs (0,1,1). Deleting it does not need a replacement —
     the right palette simply applies.

     Two defects died with it, both invisible until you diff the numbers:
       --jag-card-2 was #0a1c16, DARKER than --jag-card #06281c — the elevation ladder was
         inverted against every other page, so "raised" panels sat lower than the cards
         they were raised above. tokens.css has card-2 #1B2533 above card #151D29.
       --jag-ink-faint was #B7D4C6, byte-identical to --jag-ink-muted — the four-step ink
         ramp collapsed to three, so "faint" and "muted" text were the same colour.
     Those two are a large part of why panels read flat and "translucent". */
}
html[data-intel-theme="dark"] body.intel-premium::before { mix-blend-mode: overlay; opacity: .06; }
html[data-intel-theme="dark"] body.intel-premium .pt-appbar {
  background: rgba(4, 17, 12, .88) !important;
  border-bottom-color: #1a3a2e;
}
html[data-intel-theme="dark"] body.intel-premium .pt-view-tab:not(.active) {
  color: #7dcea0 !important;
  background: #06281c !important;
  border-color: #1a3a2e;
}
html[data-intel-theme="dark"] body.intel-premium .tkr-regime { background: #123227; color: #3dce8a; }
html[data-intel-theme="dark"] body.intel-premium .tkr-regime.below { background: #3a1814; color: #ff8a80; }
html[data-intel-theme="dark"] body.intel-premium .jag-newsdesk {
  --bg: transparent;
  --surface: #06281c;
  --line: #1a3a2e;
  --text: #e8f6ee;
  --muted: #B7D4C6;
}
html[data-intel-theme="dark"] body.intel-premium .jag-newsdesk .story {
  background: #06281c;
  border-color: #1a3a2e;
  color: #e8f6ee;
}
html[data-intel-theme="dark"] body.intel-premium .jag-newsdesk .chip {
  background: #0a1c16;
  border-color: #1a3a2e;
  color: #B7D4C6;
}
html[data-intel-theme="dark"] body.intel-premium .rjump a:hover { background: #0a1c16; color: #e8f6ee; }
html[data-intel-theme="dark"] body.intel-premium .lookup input:focus {
  border-color: #3dce8a;
  box-shadow: 0 0 0 4px rgba(61, 206, 138, .18);
}
html[data-intel-theme="dark"] body.intel-premium .nb-card {
  background: #06281c !important;
  border-color: #1a3a2e !important;
  color: #e8f6ee;
  box-shadow: none;
}
html[data-intel-theme="dark"] body.intel-premium .nb-card h3 { color: #e8f6ee !important; }
html[data-intel-theme="dark"] body.intel-premium .nb-card .sub,
html[data-intel-theme="dark"] body.intel-premium .nb-card .nb-empty,
html[data-intel-theme="dark"] body.intel-premium .nb-card p { color: #B7D4C6 !important; }
html[data-intel-theme="dark"] body.intel-premium .nb-card a { color: #3dce8a; }
html[data-intel-theme="dark"] .sc { --ink: #e8f6ee; --muted: #B7D4C6; --faint: #B7D4C6; --line: #1a3a2e; --card: #06281c; --green: #3dce8a; }
html[data-intel-theme="dark"] body.intel-premium .sc-dv .mid,
html[data-intel-theme="dark"] body.intel-premium .sc-rsi { background: #0a1c16; }
html[data-intel-theme="dark"] body.intel-premium input,
html[data-intel-theme="dark"] body.intel-premium select,
html[data-intel-theme="dark"] body.intel-premium textarea {
  background: #0a1c16;
  color: #e8f6ee;
  border-color: #1a3a2e;
}
html[data-intel-theme="dark"] body.intel-premium .pt-guest-nav a,
html[data-intel-theme="dark"] body.intel-premium .pt-guest-menu summary { color: #c9e6d6; }
html[data-intel-theme="dark"] body.intel-premium .pt-guest-menu-panel {
  background: #06281c;
  border-color: #1a3a2e;
}
html[data-intel-theme="dark"] body.intel-premium .pt-guest-menu-panel a { color: #e8f6ee; }
html[data-intel-theme="dark"] body.intel-premium .rlockwrap { background: #06281c; border-color: #1a3a2e; }
html[data-intel-theme="dark"] body.intel-premium .il-tip { background: #0a1c16; color: #e8f6ee; }
html[data-intel-theme="light"] body.intel-premium .il-tip { background: #fff; color: #1A1F29; border: 1px solid #c9d6ce; }
html[data-intel-theme="light"] body.intel-premium .ivs-tip { background: rgba(255,255,255,.96); color: #1A1F29; border-color: #c9d6ce; }
html[data-intel-theme="dark"] body.intel-premium .ivs-search input { background: #0a1c16; }
html[data-intel-theme="light"] body.intel-premium .ivs-search input { background: #fff; color: #1A1F29; }
html[data-intel-theme="dark"] .npx,
html[data-intel-theme="dark"] .nb {
  --ink: #e8f6ee;
  --muted: #B7D4C6;
  --faint: #B7D4C6;
  --line: #1a3a2e;
  --card: #06281c;
  --green: #3dce8a;
}
html[data-intel-theme="dark"] .pa {
  --pa-ink: #e8f6ee;
  --pa-muted: #B7D4C6;
  --pa-faint: #B7D4C6;
  --pa-line: #1a3a2e;
  --pa-card: #06281c;
}
html[data-intel-theme="light"] body.intel-premium .intel-dock button {
  background: #fff;
  color: #1A1F29;
  border-color: #c9d6ce;
  box-shadow: 0 12px 32px rgba(10, 28, 20, .14);
}
html[data-intel-theme="light"] body.intel-premium .intel-dock button.on,
html[data-intel-theme="light"] body.intel-premium .intel-dock button:hover {
  background: #117A37;
  color: #fff;
  border-color: #117A37;
}


/* ══════════════════════════════════════════════════════════════════════════
   FULL-WIDTH INTEL  +  THE ROOM STRIP
   Owner: "every page in the intel tab is moved to the left, and there's a big
   space on the right side ... utilize all paid space and actually make this nav
   bar look good ... it needs to look very impressive."

   Measured on a 1710px viewport: .wrap computed to max-width 1280px with
   margin 0 / 0 — not centred, so the whole desk sat hard left with ~430px of
   dead page beside it. On a 27" screen that is a third of the window doing
   nothing on a desk you charge for.
   ══════════════════════════════════════════════════════════════════════════ */
/* SPECIFICITY, NOT ORDER. This file already carries
   "body.intel-premium main.wrap { max-width: 1280px }" at (0,2,2). The first
   version of this rule was written as .wrap — (0,2,1) — so it lost no matter
   where it sat in the file, and the desk stayed pinned at 1280 with 430px of
   dead page beside it. Matching the element selector is what makes it apply. */
body.intel-premium main.wrap,
body.intel-premium .wrap {
  max-width: none;
  width: 100%;
  margin-inline: 0;
  padding-inline: 16px;
}
@media (max-width: 900px) {
  /* Keep a side gutter — padding 0 let Calendar / tables kiss the window edge. */
  body.intel-premium .wrap { max-width: 100%; padding-inline: 12px; }
}
/* The two-column rooms get the new width instead of leaving it in the gutter:
   the desk rail grows a little, the main column takes the rest. */
@media (min-width: 1500px) {
  body.intel-premium .ria-split,
  body.intel-premium .rs-split,
  body.intel-premium .research-split { grid-template-columns: minmax(0, 1fr) 420px; }
}

/* ── THE ROOM STRIP ────────────────────────────────────────────────────────
   Rap sheet · Tape · Heat · Scan · Vs · Notes.

   The first attempt at this targeted .ria-tabs / .rs-tabs, which match nothing
   on this page — I wrote the selector from the class names I expected instead
   of the ones the page uses. Read off the live DOM, the strip is .ria-modes and
   its rooms are plain <button> children.

   The real defect it exposed: once .wrap went full width the pill stretched to
   1654px while its six rooms still totalled ~363px, so five sixths of the bar
   was empty dark green. Widening the container without distributing its
   children just moves the dead space inside the control. */
body.intel-premium .ria-modes {
  width: 100%;
  display: flex; align-items: stretch; gap: 4px;
  padding: 5px;
  border-radius: 12px;
}
body.intel-premium .ria-modes > button {
  flex: 1 1 0; min-width: 0;              /* six equal rooms, edge to edge */
  display: inline-flex; align-items: center; justify-content: center;
  white-space: nowrap;
  border-radius: 999px;
  padding: 11px 14px;
  font-weight: 800; letter-spacing: .01em; font-size: 14px;
  transition: background .13s ease, color .13s ease, transform .13s ease;
}
body.intel-premium .ria-modes > button:not(.on):hover {
  background: rgba(255, 255, 255, .10);
}
/* The room you are in carries the weight — it is the only lit thing in the bar. */
body.intel-premium .ria-modes > button.on {
  box-shadow: 0 1px 0 rgba(255, 255, 255, .35) inset, 0 6px 18px rgba(0, 0, 0, .18);
}
body.intel-premium .ria-modes > button:focus-visible {
  outline: 2px solid var(--intel-select, #3DCE8A); outline-offset: 2px;
}
@media (max-width: 700px) {
  /* Full words, never a letter-stack — INTEL.md is explicit. Scroll sideways
     rather than squeeze, so "Rap sheet" never becomes "R a p". */
  body.intel-premium .ria-modes { overflow-x: auto; scrollbar-width: none; }
  body.intel-premium .ria-modes::-webkit-scrollbar { display: none; }
  body.intel-premium .ria-modes > button { flex: 0 0 auto; font-size: 13.5px; padding: 10px 14px; }
}

/* The floating dock is no longer attached; this keeps any cached copy hidden. */
body.intel-premium .intel-dock { display: none !important; }

/* ── INTEL DARK: the surfaces the universal theme could not reach ──────────
   Measured on the live desk in dark. Everything here is a control that paints
   its own colour, so flipping the tokens left it lit the wrong way — the room
   strip's active pill, the range/view toggles, and the self row in a table.
   Same half-applied-theme signature as the leaderboard. */
html[data-chart-theme="dark"] body.intel-premium .ria-modes > button.on {
  background: var(--intel-select, #3DCE8A) !important;
  color: #06281C !important;
}
html[data-chart-theme="dark"] body.intel-premium .ria-modes > button {
  color: #B7D4C6;
}
html[data-chart-theme="dark"] body.intel-premium .ivs-rng.on,
html[data-chart-theme="dark"] body.intel-premium .ivs-view.on {
  background: var(--intel-select, #3DCE8A) !important; color: #06281C !important; border-color: transparent !important;
}
html[data-chart-theme="dark"] body.intel-premium td.self {
  background: rgba(61, 206, 138, .14) !important; color: var(--jag-ink, #F1F4F7) !important;
}
html[data-chart-theme="dark"] body.intel-premium i.up { color: #43D17A !important; background: transparent !important; }
/* The Notes / All notes buttons sat dark-on-dark under the header. */
html[data-chart-theme="dark"] body.intel-premium .rs-noteact,
html[data-chart-theme="dark"] body.intel-premium .ria-noteact,
html[data-chart-theme="dark"] body.intel-premium .wrap > button {
  background: #12261D !important; color: #B7D4C6 !important; border-color: #1E5A41 !important;
}

/* ── BLANKET FROST REVERTED ────────────────────────────────────────────────
   I blurred every direct child of main.wrap for .research-free and set
   pointer-events:none on them. Two things went wrong at once:

   1. The room strip is NOT a direct child of main.wrap, so my
      :not(.ria-modes) exception never matched — its ANCESTOR took
      pointer-events:none and killed every click inside it. The owner could
      not leave the Intel tab.
   2. It hit a PRO account. research-free is applied while entitlement is
      still resolving (there is a 2s race in research.html), so a paying
      member saw their own desk frosted and unusable.

   Blurring a whole page on a class that can be transiently wrong, with
   pointer-events:none, means any wrong moment locks the user out. The real
   paywall is the SERVER-RESOLVED isPro gate in research.html — Vs and The
   Pack no longer mount without it, verified live. That is what protects the
   product; this was cosmetic and it broke a paying customer, so it goes.

   If a frost is wanted later it must: key off a settled entitlement, never
   set pointer-events on an ancestor of navigation, and be applied to leaf
   content only. */

/* ── FROST REMOVED, TWICE, AND NOT ATTEMPTED AGAIN TONIGHT ────────────────
   Second attempt keyed off settled entitlement and blurred leaf content only,
   and it STILL frosted the owner — a Pro account — with no unlock CTA on the
   blurred page. A paid member locked out of the desk he pays for is a worse
   outcome than free users seeing too much, and I have now caused it twice in
   one night.

   Anyone picking this up: the frost is NOT the paywall and was never needed
   for it. The paywall is the server-resolved isPro gate in research.html,
   where Vs and The Pack do not MOUNT without it. That is live and verified.

   If a frost is wanted, it needs, in this order:
     1. a reliable read of entitlement in a REAL Pro session (mine was wrong),
     2. a visible unlock CTA rendered BEFORE anything is obscured, and
     3. sign-in as both a free and a Pro account and a look at the page,
        not a computed-style probe, before it ships. */

/* ══════════════════════════════════════════════════════════════════════════
   FREE ACCOUNTS SEE INTEL FROSTED — restored, with the unlock CTA
   --------------------------------------------------------------------------
   I removed this a moment ago on a misread. The owner's screenshot came from
   his FREE phone account, where blurred content is CORRECT; I was driving his
   PRO account in a browser and wrongly concluded a paying member was locked
   out. The frost was doing its job.

   What was genuinely wrong is what he actually said: a blurred page with no
   way to unlock it. So the CTA is now part of this rule rather than something
   the page might or might not have painted.

   Rules kept from the version that DID break a Pro session:
     1. SETTLED, NOT RACED — .research-free-settled is set only after the full
        entitlement promise resolves, never from the 2s race.
     2. NEVER AN ANCESTOR OF NAVIGATION — the blur lands on CHILDREN of the
        visible pane; the pane, room strip and site header are untouched, so
        the user can always leave the tab.
     3. LEAF CONTENT ONLY.
   And this is NOT the paywall — the server-resolved isPro gate is. */
/* NEVER FROST THESE TWO. (2026-08-21)
   saved = Notes. That is the user's OWN writing; frosting it puts a Pro card
   over an empty text editor and asks them to pay to read what they have not
   written yet. The owner hit exactly this on his own account.
   news = Tape. Headlines are a commodity - anyone gets them free on Yahoo in
   one click - so charging to unblur them reads as cheap rather than premium,
   and it is the most visible surface on the desk.
   A teaser only converts when what is behind the glass is THEIRS and cannot be
   had elsewhere. Measured before this: 423 upsell impressions -> 1 click. */
/* THE SEARCH BOX MUST STAY LIVE. This blurred and pointer-events:none'd EVERY direct
   child of a pane — including #lookupForm, the box you type a ticker into, and the
   .intel-idle board that explains what Intel is. So a free account could not spend
   the one free dossier the page was simultaneously advertising to them
   (#researchFreeMeter: "Free: 1 ticker dossier"). The two :not() exemptions already
   here never fired, because .research-unlock-hero and #researchUnlockStrip live
   ABOVE the panes, not inside them.

   Frost the ANSWER, never the question. You cannot sell a look at something by
   preventing the look. (owner 2026-08-21, confirmed by adversarial audit) */
body.research-settled.research-free-settled [data-ria-pane]::after,
body.intel-free-user [data-ria-pane]::after {
  display: none !important;
}
body.intel-free-user .ria-pane-intro,
body.research-free-settled .ria-pane-intro,
body.intel-free-user [data-ria-pane] h2,
body.research-free-settled [data-ria-pane] h2,
body.intel-free-user [data-ria-pane] h3,
body.research-free-settled [data-ria-pane] h3 {
  filter: none !important;
}
body.intel-free-user [data-ria-pane="overview"] > .intel-desk-lock,
body.research-free-settled [data-ria-pane="overview"] > .intel-desk-lock,
body.intel-free-user [data-ria-pane="portfolio"] > .intel-desk-lock,
body.research-free-settled [data-ria-pane="portfolio"] > .intel-desk-lock {
  display: none !important;
}
.intel-pay-float { display: none; }
/* Overview + My Charts are usable on Free (dollars match Portfolio). Never cover them
   with a floating Pro card — Pack / risk labs sell themselves inside the details. */
body.intel-free-user [data-ria-pane="overview"]:not([hidden]) .intel-pay-float,
body.intel-free-user [data-ria-pane="portfolio"]:not([hidden]) .intel-pay-float,
body.research-free-settled [data-ria-pane="overview"]:not([hidden]) .intel-pay-float,
body.research-free-settled [data-ria-pane="portfolio"]:not([hidden]) .intel-pay-float {
  display: none !important;
}
.intel-pay-float p { margin: 0 0 10px; font-size: 13px; line-height: 1.4; color: #5A626B; }
.intel-pay-float a {
  display: inline-flex; background: #BB5C2D; color: #fff; font-weight: 800; font-size: 13px;
  text-decoration: none; padding: 9px 16px; border-radius: 999px;
}
.ib-tease { margin: 0 0 18px; padding: 16px; border-radius: 16px; border: 1px solid var(--intel-line); background: var(--intel-card); }
body.research-settled.research-free-settled [data-ria-pane="news"]::after,
body.intel-free-user [data-ria-pane="news"]::after,
body.research-settled.research-free-settled [data-ria-pane="calc"]::after,
body.intel-free-user [data-ria-pane="calc"]::after,
body.research-settled.research-free-settled [data-ria-pane="overview"]::after,
body.intel-free-user [data-ria-pane="overview"]::after,
body.research-settled.research-free-settled [data-ria-pane="portfolio"]::after,
body.intel-free-user [data-ria-pane="portfolio"]::after,
body.research-settled.research-free-settled [data-ria-pane="goals"]::after,
body.intel-free-user [data-ria-pane="goals"]::after {
  display: none;
}
/* The two exemptions below never fired: .research-unlock-hero and #researchUnlockStrip
   live ABOVE the panes, not inside them, so the frost selector never matched them in the
   first place. Kept (harmless), but the real work is now done in research.html's
   goToSymbol(), which clears .research-free-settled for the one dossier the user is
   actually entitled to. */
body.research-settled.research-free-settled #researchUnlockStrip,
body.research-settled.research-free-settled .research-unlock-hero,
body.research-settled.research-free-settled .intel-unlock-cta,
body.intel-free-user .intel-desk-lock {
  filter: none !important; pointer-events: auto !important; user-select: auto !important;
}
.intel-desk-lock {
  display: none;
  align-items: flex-start;
  gap: 12px;
  margin: 0 0 14px;
  padding: 14px 16px;
  border-radius: 14px;
  border: 1px solid #e3c4b0;
  background: #fff8f3;
  box-shadow: 0 8px 24px rgba(80, 40, 16, .06);
}
body.intel-free-user .intel-desk-lock { display: flex; position: relative; z-index: 30; }
.intel-desk-lock-ico {
  flex: 0 0 28px; width: 28px; height: 28px; color: #BB5C2D;
}
.intel-desk-lock-ico svg { width: 28px; height: 28px; display: block; }
.intel-desk-lock-copy { flex: 1 1 auto; min-width: 0; }
.intel-desk-lock-k {
  margin: 0 0 2px; font-size: 10px; font-weight: 800; letter-spacing: .08em;
  text-transform: uppercase; color: #BB5C2D;
}
.intel-desk-lock h3 { margin: 0 0 4px; font-size: 16px; font-weight: 800; letter-spacing: -.02em; }
.intel-desk-lock p { margin: 0 0 4px; font-size: 13px; line-height: 1.45; color: #5A626B; }
.intel-desk-lock p:last-child { margin-bottom: 0; }
.intel-desk-lock-go {
  flex: 0 0 auto; align-self: center;
  padding: 10px 14px; border-radius: 999px;
  background: #BB5C2D; color: #fff !important; font-weight: 800; font-size: 13px;
  text-decoration: none; white-space: nowrap;
}
.intel-desk-lock-go:hover { filter: brightness(.95); }
@media (max-width: 620px) {
  .intel-desk-lock { flex-wrap: wrap; }
  .intel-desk-lock-go { width: 100%; text-align: center; }
}
/* ── THE WAY OUT, ALWAYS ON TOP OF THE FROST ───────────────────────────────
   Owner: "don't just have a blur page with no way to unlock it." Centred over
   the frosted pane, above it in z-order, and it links to /plans. */
body.research-settled.research-free-settled [data-ria-pane]:not([hidden]) { position: relative; }
.intel-unlock-cta {
  position: absolute; left: 50%; top: 42%; transform: translate(-50%, -20%);
  z-index: 40; width: min(440px, calc(100% - 32px));
  text-align: center; padding: 22px 24px;
  border-radius: 18px;
  background: var(--intel-card, #fff);
  border: 1px solid var(--intel-line, #dbe5de);
  box-shadow: 0 18px 48px rgba(16, 32, 24, .18);
}
.intel-unlock-cta h3 { margin: 0 0 6px; font-size: 18px; font-weight: 800; }
.intel-unlock-cta p { margin: 0 0 14px; font-size: 13.5px; line-height: 1.5; color: var(--intel-muted, #5A626B); }
.intel-unlock-cta a {
  display: inline-block; padding: 12px 22px; border-radius: 999px;
  background: var(--jag-green, #006E4E); color: #fff;
  font-weight: 800; font-size: 15px; text-decoration: none;
}
.intel-unlock-cta a:hover { background: var(--jag-green-deep, #00563D); }

/* ── THE ACTIVE INTEL TAB WENT BLACK IN LIGHT MODE ─────────────────────────
   Owner: "fix the fucking black highlight, I don't know why you made it black."

   Line 75 sets the active nav tab to var(--intel-select), and --intel-select
   is FOREST in light mode (it is the dark accent the Intel palette uses for a
   selected pill on a light ground). On the room strip that reads fine; on the
   site nav it made one tab a black block sitting between five white ones, so
   the tab you are ON looked broken rather than selected.

   The site nav is shared chrome, not Intel chrome — it should match how every
   other page marks its active tab: tinted fill, brand-green text. Dark mode
   keeps its own treatment below. */
html:not([data-chart-theme="dark"]) body.intel-premium .pt-view-tab.active {
  background: var(--jag-green-soft, #E8F7EF) !important;
  color: var(--jag-green, #006E4E) !important;
  border-color: var(--jag-green-line, #C3E4D2) !important;
}
html:not([data-chart-theme="dark"]) body.intel-premium .pt-view-tab.active .pt-nav-pro {
  background: var(--jag-green, #006E4E) !important; color: #fff !important;
}


/* ── DARK MODE FOR THE COMPONENTS THAT SHIPPED 2026-08-21 ─────────────────
   The seats bar, heat board and Tape chips landed with hardcoded light values
   and NO dark rules, so on a dark desk the owner saw white pills he could not
   read and a cream Pro card on black. The --intel-* tokens already flip (see the
   dark block above), so the fix above is to USE them rather than pile on more
   overrides. These few remain because they are element-specific. */
html[data-intel-theme="dark"] .ibb-chip,
html[data-chart-theme="dark"] .ibb-chip,
html[data-intel-theme="dark"] .its-chip,
html[data-chart-theme="dark"] .its-chip {
  background: #0a3325;
  border-color: #1a3a2e;
  color: #e8f6ee;
}
html[data-intel-theme="dark"] .ibb-chip:hover,
html[data-chart-theme="dark"] .ibb-chip:hover,
html[data-intel-theme="dark"] .its-chip:hover,
html[data-chart-theme="dark"] .its-chip:hover { background: #0e4030; }
html[data-intel-theme="dark"] .ihb-sec i,
html[data-chart-theme="dark"] .ihb-sec i { background: #2ecc82; }


/* ══ WHY INTEL LOOKED LIKE BLUR WITH NO WAY OUT. (2026-08-21) ═════════════
   Owner: "why is all this shit completely blurred out with no way to buy for
   the intel page?" The unlock pitches were always there -- their TEXT was
   invisible. Measured in a rendered DOM: .ir-lock 1.39:1, .crowd-lock 1.13:1,
   the rap-sheet heading and 32px price 1.09:1. The /plans buttons inside them
   stayed legible at 4.49:1, so the door was open and the sign above it was
   blank. A free user in dark mode saw frosted panels and no reason.
   rap-sheet.js is 31 hardcoded colours with zero variables and zero dark rules;
   crowd.js is five more. Neither could ever follow the theme. */
html[data-chart-theme="dark"] .ir-lock,
html[data-intel-theme="dark"] .ir-lock {
  background: rgba(10, 32, 24, .88) !important;
  border-color: #1a3a2e !important;
}
html[data-chart-theme="dark"] .ir-lock span,
html[data-intel-theme="dark"] .ir-lock span { color: #E8F6EE !important; }

/* Crowd desk: the white Pro card that carries the /plans link */
html[data-chart-theme="dark"] .crowd,
html[data-intel-theme="dark"] .crowd,
html[data-chart-theme="dark"] .crowd-lock,
html[data-intel-theme="dark"] .crowd-lock {
  background: #06281c !important;
  border-color: #1a3a2e !important;
}
html[data-chart-theme="dark"] .crowd .ys-h,
html[data-intel-theme="dark"] .crowd .ys-h,
html[data-chart-theme="dark"] .crowd-htitle,
html[data-intel-theme="dark"] .crowd-htitle,
html[data-chart-theme="dark"] .crowd-flow,
html[data-intel-theme="dark"] .crowd-flow,
html[data-chart-theme="dark"] .crowd-lock,
html[data-intel-theme="dark"] .crowd-lock { color: #E8F6EE !important; }
html[data-chart-theme="dark"] .crowd-bar .cnt,
html[data-intel-theme="dark"] .crowd-bar .cnt { color: #B7D4C6 !important; }

/* Rap sheet: the desk a $4.99 subscriber is actually paying for */
html[data-chart-theme="dark"] .rs-head h2,
html[data-intel-theme="dark"] .rs-head h2,
html[data-chart-theme="dark"] .rs-sec h3,
html[data-intel-theme="dark"] .rs-sec h3,
html[data-chart-theme="dark"] .rs-price .p,
html[data-intel-theme="dark"] .rs-price .p,
/* .rs-cell REMOVED from this rule 2026-08-30. It set colour and not background, so
   the tile stayed a light slab; and .rs-cell .k/.v/.h each declare their own colour,
   so a colour on the parent never reached them. It was a no-op from the day it was
   written. The real rules now live in js/research/rap-sheet.20260723d.js beside the
   light values they override — background and text paired, .v.pos / .v.neg kept. */
html[data-chart-theme="dark"] .rs-sub,
html[data-intel-theme="dark"] .rs-sub,
html[data-chart-theme="dark"] .rs-head .sub,
html[data-intel-theme="dark"] .rs-head .sub { color: #B7D4C6 !important; }
html[data-chart-theme="dark"] .rs-badge,
html[data-intel-theme="dark"] .rs-badge {
  background: #0a3325 !important;
  color: #7FD8AE !important;
  border-color: #1a3a2e !important;
}

/* Own-history: the user's own P&L, four white cards on a near-black page,
   directly above the $4.99 strip. The identical component .rpro .ys-stat was
   fixed and measures 14.19:1; this one was missed because #researchOwn is
   plain .rsec-body with no .rpro. */
html[data-chart-theme="dark"] .roh-stat,
html[data-intel-theme="dark"] .roh-stat,
html[data-chart-theme="dark"] .roh-open,
html[data-intel-theme="dark"] .roh-open,
html[data-chart-theme="dark"] .roh-track,
html[data-intel-theme="dark"] .roh-track {
  background: #06281c !important;
  border-color: #1a3a2e !important;
}
html[data-chart-theme="dark"] .roh-lock .t,
html[data-intel-theme="dark"] .roh-lock .t { color: #7FD8AE !important; }

/* Heat hero tile: background:#fff at (0,3,1) beat the token, so the 42px
   account-value number was a ghost on a white card while its four siblings
   took the dark surface correctly. */
html[data-chart-theme="dark"] body.intel-premium .pa-tile:first-child,
html[data-intel-theme="dark"] body.intel-premium .pa-tile:first-child {
  background: #06281c !important;
}


/* ══════════════════════════════════════════════════════════════════════════
   DARK MODE: THE NEWS DESK'S SURFACES
   Owner, 2026-08-22: "do a full dark mode audit because I can't fucking see things."

   A measured audit of /research?mode=news in dark returned 24 contrast failures, and
   they were nearly all one bug wearing different clothes:

     css/news-desk.20260818a.css has ZERO dark handling and hardcodes a light surface
     30 times (#fff x12, #eef2f4, #eef1f4, #fbeee6, #e3f4f1 ...). This file, one block
     above, flips that same desk's TEXT to #e8f6ee. Near-white text, hardcoded white
     card. The worst readings:

       .ndt-h    "Sundown Digest"                   1.05:1
       .read     "Read"                             1.11:1
       .nm-headline "41% positive across 49..."     1.11:1
       .news-tab "Top news"                         1.41:1
       .nm-scope / .nm-sub / sentiment counts       1.59:1

   Both of the things he named by hand - the Sundown Digest and the tops of the buttons -
   are in that list, which is the point: he was reading real failures off the screen.

   The palette above is already right. Nothing here invents a colour; every value maps a
   hardcoded light surface onto the dark token that was always meant to hold it. */

html[data-intel-theme="dark"] body.intel-premium .jag-newsdesk .story .actions .read,
html[data-intel-theme="dark"] body.intel-premium .jag-newsdesk .story .actions .news-save,
html[data-intel-theme="dark"] body.intel-premium .jag-newsdesk .news-mood,
html[data-intel-theme="dark"] body.intel-premium .jag-newsdesk .news-side-card,
html[data-intel-theme="dark"] body.intel-premium .jag-newsdesk .news-ticker-doss,
html[data-intel-theme="dark"] body.intel-premium .jag-newsdesk .sector-select,
html[data-intel-theme="dark"] body.intel-premium .jag-newsdesk .ntd-cta.ntd-ghost,
html[data-intel-theme="dark"] body.intel-premium .jag-newsdesk .news-brief .nb-mine-btn {
  background: var(--intel-card);
  border-color: var(--intel-line);
  color: var(--intel-ink);
}

/* Recessed strips - tab track, count pills, the mood bar - sit BELOW the card, so they
   take the deeper tile, not the card colour. Same colour for both would flatten them. */
html[data-intel-theme="dark"] body.intel-premium .jag-newsdesk .news-tabs,
html[data-intel-theme="dark"] body.intel-premium .jag-newsdesk .chip.trend .trend-count,
html[data-intel-theme="dark"] body.intel-premium .jag-newsdesk .news-mood .nm-bar,
html[data-intel-theme="dark"] body.intel-premium .jag-newsdesk .story .actions .news-save.is-saved {
  background: var(--intel-tile);
  border-color: var(--intel-line);
}
html[data-intel-theme="dark"] body.intel-premium .jag-newsdesk .news-tab { color: var(--intel-mut); }
html[data-intel-theme="dark"] body.intel-premium .jag-newsdesk .news-tab.on {
  background: var(--intel-card); color: var(--intel-ink);
}

/* The digest teaser was cream (#fbeee6) with near-white text on it - the 1.05:1 he
   pointed at by name. Keep the warm Pro identity, at a weight that belongs in the dark. */
html[data-intel-theme="dark"] body.intel-premium .jag-newsdesk .news-digest-teaser,
html[data-intel-theme="dark"] body.intel-premium .jag-newsdesk .news-lock .nl-badge,
html[data-intel-theme="dark"] body.intel-premium .jag-newsdesk .news-brief .nb-session.closed,
html[data-intel-theme="dark"] body.intel-premium .jag-newsdesk .story .event-tag.et-legal {
  background: #241a12; border-color: #4a3a2a; color: var(--intel-ink);
}
html[data-intel-theme="dark"] body.intel-premium .jag-newsdesk .news-digest-teaser .ndt-h {
  color: var(--intel-ink);
}

/* Status chips: same semantics, dark grounds. */
html[data-intel-theme="dark"] body.intel-premium .jag-newsdesk .story .sent-chip.pos,
html[data-intel-theme="dark"] body.intel-premium .jag-newsdesk .news-brief .nb-session.open,
html[data-intel-theme="dark"] body.intel-premium .jag-newsdesk .story .event-tag.et-dividend,
html[data-intel-theme="dark"] body.intel-premium .jag-newsdesk .news-scope[data-view="top"] {
  background: #0d2c20; border-color: #1f5540; color: #6fe0a8;
}
html[data-intel-theme="dark"] body.intel-premium .jag-newsdesk .story .sent-chip.neg {
  background: #2b1512; border-color: #5a2a24; color: #ff9c93;
}
html[data-intel-theme="dark"] body.intel-premium .jag-newsdesk .story .sent-chip.neu,
html[data-intel-theme="dark"] body.intel-premium .jag-newsdesk .story .event-tag.et-manda,
html[data-intel-theme="dark"] body.intel-premium .jag-newsdesk .chip {
  background: var(--intel-tile); border-color: var(--intel-line); color: var(--intel-mut);
}
html[data-intel-theme="dark"] body.intel-premium .jag-newsdesk .news-scope[data-view="mine"] {
  background: #2a1a10; border-color: #54382a; color: #f5a870;
}
html[data-intel-theme="dark"] body.intel-premium .jag-newsdesk .news-side-row:hover {
  background: var(--intel-tile);
}

/* WHITE INK ON THE BRAND GREEN measured 2.17:1 - below the floor on every green CTA,
   in BOTH themes. Dark ink on that green reads 8.7:1 and still looks like the brand. */
html[data-intel-theme="dark"] body.intel-premium .jag-newsdesk .story .actions .trade,
html[data-intel-theme="dark"] body.intel-premium .jag-newsdesk .lookup button,
html[data-intel-theme="dark"] body.intel-premium .jag-newsdesk button.np-lookup {
  color: #04140c;
}

/* Intel's own nav: the tab labels were #5A626B on #06281c - 2.56:1 - so the words
   "Rap sheet" and "Notes" were barely there. He called the nav bar out separately. */
html[data-intel-theme="dark"] body.intel-premium .ria-modes button .ria-long,
html[data-intel-theme="dark"] body.intel-premium .ria-modes button .ria-short {
  color: var(--intel-mut);
}
html[data-intel-theme="dark"] body.intel-premium .ria-modes button.on .ria-long,
html[data-intel-theme="dark"] body.intel-premium .ria-modes button.on .ria-short {
  color: var(--intel-select-ink);
}
html[data-intel-theme="dark"] body.intel-premium .jm-who { color: var(--intel-mut); }
html[data-intel-theme="dark"] body.intel-premium .sim-user-name { color: var(--intel-ink); }


/* ── Second dark pass: the 9 that survived the first ──────────────────────────
   Re-running the audit after the surface fix took /research?mode=news from 24 failures
   to 9. The survivors were a different shape from the first batch: not light-on-light,
   but the LIGHT theme's own dark inks left sitting on the now-correct dark card.

     span.nm-k / div.ns-k / span.ns-sym / .news-mood strong
                              #00563d (deep brand green) on #06281c  = 1.81:1
     span.ns-main             #334155 (slate body)       on #06281c  = 1.53:1
     div.jm-jump-hd           #6a7a72                    on #06281c  = 3.49:1
     span.tb-k                #5b6675                    on #04110c  = 3.30:1

   The deep green is the correct BRAND colour and completely wrong as ink on a dark
   ground - it is a colour chosen to sit on white. The light-green accent already in this
   palette (--intel-up-hot) is the same hue with the lightness the dark theme needs. */
html[data-intel-theme="dark"] body.intel-premium .jag-newsdesk .news-mood .nm-k,
html[data-intel-theme="dark"] body.intel-premium .jag-newsdesk .news-side-card .ns-k,
html[data-intel-theme="dark"] body.intel-premium .jag-newsdesk .news-side-card .ns-sym,
html[data-intel-theme="dark"] body.intel-premium .jag-newsdesk .news-mood strong,
html[data-intel-theme="dark"] body.intel-premium .jag-newsdesk .nm-headline strong {
  color: var(--intel-up-hot);
}
html[data-intel-theme="dark"] body.intel-premium .jag-newsdesk .news-side-card .ns-main,
html[data-intel-theme="dark"] body.intel-premium .jag-newsdesk .news-side-card .ns-row {
  color: var(--intel-ink);
}
html[data-intel-theme="dark"] body.intel-premium .jm-jump-hd,
html[data-intel-theme="dark"] body.intel-premium .tb-k,
html[data-intel-theme="dark"] body.intel-premium .intel-tape .tb-k {
  color: var(--intel-mut);
}

/* The Coach Jag button: white on the Pro orange measured 3.2:1 - under the floor, and it
   is the most-clicked control on the site. Dark ink on that orange reads 5.9:1 and keeps
   the button unmistakably orange. Applies in BOTH themes, because it failed in both. */
.cj-fab-label, .cj-fab .cj-fab-label { color: #2a1206; }


/* The Pro badge landed at 4.49:1 against the 4.5 floor - white on var(--pro).
   My first attempt used `.jag-newsdesk .ndt-badge` (0,2,0) and lost to
   `.jag-newsdesk .news-digest-teaser .ndt-badge` (0,3,0) in news-desk.css. Matching that
   depth here instead of darkening --pro, which is the brand token used site-wide. */
html[data-intel-theme="dark"] body.intel-premium .jag-newsdesk .news-digest-teaser .ndt-badge,
body.intel-premium .jag-newsdesk .news-digest-teaser .ndt-badge {
  background: #9e4a1f; color: #fff;
}


/* ── JUMP LINKS LANDED UNDER THE APP BAR ──────────────────────────────────────
   Owner: "a lot of the quick hyperlinks meant for quick navigating are not [working]".
   Not one stylesheet /research loads defined scroll-margin-top — grepped all five — so
   every in-page jump scrolled the target underneath the 88px sticky .pt-appbar. The link
   DID fire and the page DID scroll; it just landed somewhere that looked like nothing had
   happened, which is indistinguishable from a dead link.

   css/portfolio-page.css:110 already solved this exact problem with exactly this rule.
   Intel never got it. Copied rather than reinvented so the two cannot drift. */
body.intel-premium { --appbar-h: 88px; }
body.intel-premium [id] { scroll-margin-top: calc(var(--appbar-h) + 18px); }


/* ── TODAY'S BRIEF WAS PAINTED THE SAME COLOUR AS THE PAGE ────────────────────
   Owner: "the first thing users should see is today's brief, and you fucked that up in
   dark mode because you can't even see the background."

   Literally true. --intel-dark and --intel-page are byte-identical (#090D14), so a card
   painted var(--intel-dark) on a page painted var(--intel-page) has no edge at all. The
   brief was there the whole time, rendered in the exact colour of the thing behind it.

   It now takes --intel-mint (#1B2533), the RAISED band one step above the card, plus the
   shadow that --intel-shadow already defines two hundred lines up and that nothing was
   using. On dark, separation comes from elevation and border — not from surface lightness
   alone, which is why simply swapping green for grey did not make these panels stop
   looking flat. */
html[data-intel-theme="dark"] body.intel-premium .jag-newsdesk .news-brief {
  background: var(--intel-mint, #1B2533) !important;
  border: 1px solid var(--intel-line, #263142);
  box-shadow: var(--intel-shadow, 0 20px 50px rgba(0,0,0,.35));
  color: var(--intel-ink, #F1F4F7);
}
html[data-intel-theme="dark"] body.intel-premium .jag-newsdesk .news-brief .nb-mine-btn {
  background: var(--intel-card, #151D29); border-color: var(--intel-line, #263142);
  color: var(--intel-ink, #F1F4F7);
}
html[data-intel-theme="dark"] body.intel-premium .jag-newsdesk .news-brief .nb-mine-btn:hover {
  background: var(--intel-tile, #101620);
}

/* Side panels read "translucent" because they have a border and NO shadow while
   --intel-shadow sits unused. On a dark ground, elevation is the separation. */
html[data-intel-theme="dark"] body.intel-premium .jag-newsdesk .news-side-card,
html[data-intel-theme="dark"] body.intel-premium .jag-newsdesk .news-mood {
  box-shadow: var(--intel-shadow, 0 20px 50px rgba(0,0,0,.35));
}


/* ── RELAY PREV / NEXT WERE UNREADABLE ────────────────────────────────────────
   Owner: "why is the back and next buttons on the MyChart page? You can't see the words,
   they're translucent."

   .ir-btn (line ~884) sets `background: #fff` with `color: var(--intel-ink)`. In dark
   --intel-ink is #F1F4F7 — so it is near-white ink on a white button, which reads as a
   ghost of a control. Exactly the same shape as every other survivor tonight: the text
   token flipped with the theme, the hardcoded surface did not.

   (My first note here said the rule had "no base at all". It does — I wrote that before
   reading line 884. The cause is a hardcoded white, not a missing rule.) */
html[data-intel-theme="dark"] body.intel-premium .ir-btn,
body.intel-premium .ir-btn {
  background: var(--intel-card, #151D29);
  border: 1px solid var(--intel-line, #263142);
  color: var(--intel-ink, #F1F4F7);
  border-radius: 10px; padding: 7px 14px; font-weight: 700; cursor: pointer;
}
html[data-intel-theme="dark"] body.intel-premium .ir-btn:hover,
body.intel-premium .ir-btn:hover { background: var(--intel-tile, #101620); }
html[data-intel-theme="dark"] body.intel-premium .ir-btn:disabled,
body.intel-premium .ir-btn:disabled { opacity: .45; cursor: default; }

/* The Intel Tape's own chips carried the same hardcoded #fff. */
html[data-intel-theme="dark"] body.intel-premium .jag-newsdesk .chip {
  background: var(--intel-card, #151D29);
  border-color: var(--intel-line, #263142);
  color: var(--intel-ink, #F1F4F7);
}
html[data-intel-theme="dark"] body.intel-premium .jag-newsdesk .chip.on {
  background: #0d2c20; border-color: #1f5540; color: #6fe0a8;
}

/* ══════════════════════════════════════════════════════════════════════════
   INTEL RAIL — Phase 1 of jagsim-INTEL-IMPLEMENTATION-PLAN.md
   "Rail + desk routing + lazy mount. No new data. Ship the navigation fix alone."

   The six desks were a horizontal pill scroller: six rooms competing for one
   line, no grouping, and the ones past the fold discoverable only by dragging.
   The rail gives them a column, headings that say what each group is FOR, and
   room to grow - the plan's own art direction from mockups/intel.html.

   ONE DELIBERATE DEPARTURE FROM THE PLAN, and it matters. Section 6 says to keep
   three blocks in sync: :root, :root[data-theme="dark"], and a
   @media (prefers-color-scheme: dark) block. That is correct for the standalone
   mockup, which has no theme system of its own. It is WRONG here: this site does
   not follow the OS, by explicit decision - "Dark is a thing you choose here,
   once" - and a prefers-color-scheme fallback is exactly what painted a black
   market tape across a light page, twice, earlier today. So: light values in the
   base rule, dark under the site's OWN selectors, and no media query. Adding one
   would re-introduce the bug I removed this morning.

   Selector is `.ria-modes.ria-rail` because the horizontal rules above carry
   `!important` on display; the extra class wins on specificity without editing
   them, so a mobile fallback to the old pill strip is one media query away.
   ═════════════════════════════════════════════════════════════════════════ */
body.intel-premium .intel-shell {
  display: grid;
  grid-template-columns: 152px minmax(0, 1fr);
  gap: 12px;
  align-items: start;
  margin: 8px 0 0;
}
body.intel-premium .intel-shell.is-min { grid-template-columns: 62px minmax(0, 1fr); }
body.intel-premium .intel-main { min-width: 0; }

/* Calendar (and any wide desk) must clip inside the pane — never widen the shell. */
body.intel-premium [data-ria-pane="calendar"],
body.intel-premium #researchCalendarDesk {
  min-width: 0;
  max-width: 100%;
  overflow-x: hidden;
}

body.intel-premium .ria-modes.ria-rail {
  display: flex !important;
  flex-direction: column;
  align-items: stretch;
  flex-wrap: nowrap;
  gap: 1px;
  overflow-x: visible;
  overflow-y: auto;
  margin: 0;
  padding: 10px 8px 12px;
  border-radius: 14px;
  background: var(--intel-card);
  border: 1px solid var(--intel-line);
  position: sticky;
  top: 52px;
  max-height: calc(100vh - 72px);
}
body.intel-premium .ria-modes.ria-rail .ria-h {
  font-size: 10px;
  font-weight: 800;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--intel-mut);
  padding: 12px 10px 5px;
}
body.intel-premium .ria-modes.ria-rail .ria-h:first-child { padding-top: 2px; }
body.intel-premium .ria-modes.ria-rail button {
  flex: 0 0 auto;
  width: 100%;
  text-align: left;
  justify-content: flex-start;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  font-size: 12px;
  font-weight: 700;
  padding: 6px 9px;
  border-radius: 8px;
  color: var(--intel-mut);
  background: transparent;
}
body.intel-premium .ria-modes.ria-rail button:hover {
  background: var(--intel-page);
  color: var(--intel-ink);
}
body.intel-premium .ria-modes.ria-rail button.on {
  background: var(--intel-select) !important;
  color: var(--intel-select-ink) !important;
  font-weight: 800;
}
/* Collapse: labels and headings go, the column narrows, the active row stays legible. */
body.intel-premium .ria-collapse {
  margin-top: 10px;
  width: 100%;
  display: flex;
  align-items: center;
  gap: 8px;
  border: 1px solid var(--intel-line);
  background: transparent;
  color: var(--intel-mut);
  border-radius: 9px;
  padding: 7px 11px;
  font: inherit;
  font-size: 12px;
  font-weight: 700;
  cursor: pointer;
}
body.intel-premium .ria-collapse:hover { color: var(--intel-ink); background: var(--intel-page); }
body.intel-premium .ria-collapse-i { font-size: 15px; line-height: 1; transition: transform .15s; }
body.intel-premium .intel-shell.is-min .ria-collapse-i { transform: rotate(180deg); }
body.intel-premium .intel-shell.is-min .ria-collapse-t,
body.intel-premium .intel-shell.is-min .ria-modes.ria-rail .ria-h { display: none; }
body.intel-premium .intel-shell.is-min .ria-modes.ria-rail button { justify-content: center; padding: 9px 4px; }
body.intel-premium .intel-shell.is-min .ria-modes.ria-rail button .ria-long { display: none !important; }
body.intel-premium .intel-shell.is-min .ria-modes.ria-rail button .ria-short { display: inline !important; }
body.intel-premium .intel-shell.is-min .ria-collapse { justify-content: center; padding: 7px 4px; }

/* PHONE: back to the horizontal strip. A 224px column on a 375px screen leaves
   nothing for the desk itself, and the existing pill rules already work here -
   this just undoes the column and lets them through. */
/* ── INTEL BELOW 1080px — PANE CONTENT ─────────────────────────────────────
   The phone rail lives in research.html's matching 1079.98px block. This
   file's 860px query only undoes the 224px desktop column for .ria-rail,
   which the live page does not even use (nav is .ria-modes, no .ria-rail).
   Pane content — splits, heat tattoo, tables — had almost no phone rules.
   Same breakpoint as the rail so Intel does not change twice in 40px.
   Desktop cannot see these declarations. */
@media (max-width: 1079.98px) {
  body.intel-premium .ria-split,
  body.intel-premium .rs-split,
  body.intel-premium .research-split {
    grid-template-columns: minmax(0, 1fr) !important;
  }
  body.intel-premium .ihb-tattoo {
    grid-template-columns: 1fr 1fr;
  }
  body.intel-premium .ria-pane table,
  body.intel-premium .ihb-cal {
    display: block;
    width: 100%;
    max-width: 100%;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
}

@media (max-width: 860px) {
  body.intel-premium .intel-shell,
  body.intel-premium .intel-shell.is-min { grid-template-columns: minmax(0, 1fr); gap: 12px; }
  body.intel-premium .ria-modes.ria-rail {
    flex-direction: row;
    align-items: center;
    overflow-x: auto;
    overflow-y: hidden;
    max-height: none;
    padding: 4px;
    border-radius: 12px;
    gap: 2px;
    top: 0;
  }
  body.intel-premium .ria-modes.ria-rail .ria-h,
  body.intel-premium .ria-collapse { display: none; }
  body.intel-premium .ria-modes.ria-rail button {
    width: auto;
    padding: 8px 14px;
    border-radius: 999px;
  }
}

/* Free Intel preview sheet — phones only (JS shows it; hide on desktop). */
#intelPreview {
  position: fixed;
  inset: 0;
  z-index: 2147482500;
  display: flex;
  align-items: flex-end;
  justify-content: center;
  background: color-mix(in srgb, var(--jag-ink) 45%, transparent);
  padding: 12px 12px calc(12px + env(safe-area-inset-bottom, 0px));
}
#intelPreview[hidden] { display: none !important; }
#intelPreview .ip-card {
  width: 100%;
  max-width: 420px;
  background: var(--jag-card);
  color: var(--jag-ink);
  border-radius: 16px 16px 12px 12px;
  border: 1px solid var(--jag-line);
  padding: 18px 18px 16px;
  max-height: min(78vh, 560px);
  overflow: auto;
  box-shadow: 0 -12px 40px color-mix(in srgb, var(--jag-ink) 18%, transparent);
}
#intelPreview .ip-k {
  font-size: 10px;
  font-weight: 800;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--jag-ink-muted);
  margin: 0 0 6px;
}
#intelPreview .ip-h {
  margin: 0 0 8px;
  font-size: 18px;
  font-weight: 900;
  letter-spacing: -.02em;
  color: var(--jag-ink);
}
#intelPreview .ip-blanket {
  margin: 0 0 12px;
  font-size: 14px;
  line-height: 1.45;
  color: var(--jag-ink-2);
}
#intelPreview .ip-list {
  margin: 0 0 16px;
  padding: 0 0 0 18px;
  color: var(--jag-ink);
  font-size: 14px;
  line-height: 1.45;
}
#intelPreview .ip-list li { margin: 0 0 8px; }
#intelPreview .ip-row { display: flex; flex-wrap: wrap; gap: 8px; }
#intelPreview .ip-go {
  flex: 1 1 140px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--jag-green);
  color: #fff;
  font-weight: 800;
  font-size: 14px;
  text-decoration: none;
  padding: 12px 14px;
  border-radius: 10px;
  min-height: 44px;
}
#intelPreview .ip-x {
  flex: 1 1 100px;
  border: 1px solid var(--jag-green-line);
  background: var(--jag-card);
  color: var(--jag-green);
  font-weight: 800;
  font-size: 14px;
  border-radius: 10px;
  padding: 12px 14px;
  min-height: 44px;
  cursor: pointer;
  font-family: inherit;
}
@media (min-width: 1080px) {
  #intelPreview { align-items: center; padding: 24px; }
  #intelPreview .ip-card {
    border-radius: 16px;
    max-width: 440px;
    box-shadow: 0 18px 48px color-mix(in srgb, var(--jag-ink) 22%, transparent);
  }
}

/* Phone Intel: one scrolling row of rooms, not a wrapping oval, and no
   sticky overlap with Menu / seat chips (those white blobs). */
@media (max-width: 1079.98px) {
  body.intel-premium .ria-modes {
    display: flex !important;
    flex-direction: row !important;
    flex-wrap: nowrap !important;
    align-items: center !important;
    gap: 6px !important;
    overflow-x: auto !important;
    overflow-y: hidden !important;
    position: sticky !important;
    top: calc(var(--appbar-h, 88px)) !important;
    z-index: 40 !important;
    width: 100% !important;
    max-width: 100% !important;
    margin: 8px 0 10px !important;
    padding: 6px 8px !important;
    border-radius: 12px !important;
    background: var(--intel-card, #fff) !important;
    border: 1px solid var(--intel-line, #dde5e1) !important;
    box-shadow: none !important;
  }
  body.intel-premium .ria-modes > button {
    flex: 0 0 auto !important;
    min-width: auto !important;
    border-radius: 999px !important;
  }
  body.intel-premium .ibb,
  body.intel-premium .ibb-row {
    display: none !important;
  }
}

/* Bookbar stays off. Type and columns fill the window — not a 148px rail. */
body.intel-premium #intelBookbar,
body.intel-premium .ibb { display: none !important; }
body.intel-premium .ria-pane-intro h2 { font-size: 22px !important; margin: 0 0 4px; }
body.intel-premium .ria-pane-intro p { font-size: 15px !important; margin: 0; max-width: none; }
body.intel-premium .ria-modes.ria-rail button {
  font-size: 14px;
  padding: 9px 12px;
  display: flex;
  align-items: center;
  gap: 8px;
  overflow: visible;
}
body.intel-premium .ria-modes.ria-rail button[hidden],
body.intel-premium .ria-modes.ria-rail button[data-ria="xray"] {
  display: none !important;
}
body.intel-premium .ria-tab-lock {
  flex: 0 0 auto;
  display: none;
  width: 22px;
  height: 22px;
  margin-left: auto;
  padding: 0;
  border: 0;
  border-radius: 6px;
  background: transparent;
  color: var(--intel-mut);
  cursor: pointer;
  align-items: center;
  justify-content: center;
}
body.intel-premium .ria-tab-lock svg { width: 14px; height: 14px; display: block; }
body.research-free-settled .ria-tab-lock,
body.intel-free-user .ria-tab-lock { display: inline-flex !important; }
body.intel-premium .ria-tab-lock:hover,
body.intel-premium button.on .ria-tab-lock { color: var(--intel-ink); }
html[data-intel-theme="dark"] body.intel-premium .ria-tab-lock { color: var(--intel-mut); }
/* News intro is visible — owner 2026-08-23: every Intel room says what it is. */
@media (min-width: 1080px) {
  body.intel-premium .intel-shell {
    grid-template-columns: 200px minmax(0, 1fr) !important;
    gap: 10px !important;
  }
}
.intel-news-kicker{font-size:11px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:#BB5C2D;margin:0 0 6px}
body.intel-premium .jag-newsdesk .news-brief {
  padding: 10px 12px !important;
  margin-bottom: 8px !important;
  border-radius: 12px !important;
}

/* Forecast calculators — live in the stylesheet so a missed injectStyles()
   cannot dump months as a vertical unstyled list. Tokens still work if JS
   injects .fc on the pane. */
.fc{
  --fc-ink:#0f172a; --fc-mut:#5b6675; --fc-faint:#616c7b;
  --fc-sur:#ffffff; --fc-sur2:#f7f9fb; --fc-line:#e4e8ee; --fc-line2:#eef1f5;
  --fc-acc:#006E4E; --fc-acc-ink:#00543c; --fc-acc-soft:#e6f4ee;
  --fc-alt:#1f6f8b; --fc-alt-soft:#e4f0f5;
  --fc-up:#0f7a52; --fc-dn:#c0392b;
  color:var(--fc-ink);
}
html[data-intel-theme="dark"] .fc{
  --fc-ink:#e8eef4; --fc-mut:#a9b6c4; --fc-faint:#9aa8b7;
  --fc-sur:#111a20; --fc-sur2:#18232b; --fc-line:#243139; --fc-line2:#1d282f;
  --fc-acc:#3dce8a; --fc-acc-ink:#7fe0b4; --fc-acc-soft:#12302a;
  --fc-alt:#63b8d6;
}
.fc-form{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end;margin:0 0 18px;
  padding:14px;background:var(--fc-sur2,#f7f9fb);border:1px solid var(--fc-line2,#eef1f5);border-radius:14px}
.fc-field{display:flex;flex-direction:column;gap:4px;min-width:0}
.fc-field label{font-size:12px;color:var(--fc-mut,#5b6675);font-weight:600}
.fc-field input,.fc-field select{height:38px;min-width:124px;border:1px solid var(--fc-line,#e4e8ee);border-radius:8px;
  padding:0 10px;font:inherit;font-size:15px;background:var(--fc-sur,#fff);color:var(--fc-ink,#0f172a)}
.fc-btn{height:38px;padding:0 18px;border:0;border-radius:8px;background:var(--fc-acc,#006E4E);color:#fff;
  font:inherit;font-weight:800;font-size:14px;cursor:pointer}
.fc-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(148px,1fr));gap:10px;margin-bottom:16px}
.fc-stat{background:var(--fc-sur2,#f7f9fb);border:1px solid var(--fc-line2,#eef1f5);border-radius:10px;padding:12px 14px;
  display:flex;flex-direction:column;gap:2px}
.fc-stat .k{font-size:11.5px;color:var(--fc-mut,#5b6675);font-weight:700;letter-spacing:.04em;text-transform:uppercase}
.fc-stat .v{font-size:22px;font-weight:800;letter-spacing:-.02em}
.fc-months{display:grid;grid-template-columns:repeat(12,1fr);gap:4px;margin:10px 0 4px}
.fc-mo{text-align:center;font-size:10.5px;font-weight:700;color:var(--fc-faint,#616c7b);
  background:var(--fc-sur2,#f7f9fb);border:1px solid var(--fc-line2,#eef1f5);border-radius:8px;padding:8px 2px 10px}
.fc-mo i{display:block;width:42%;max-width:16px;height:22px;margin:8px auto 0;border-radius:4px;background:var(--fc-line,#e4e8ee)}
.fc-mo.on{background:var(--fc-acc-soft,#e6f4ee);border-color:transparent;color:var(--fc-acc-ink,#00543c)}
.fc-mo.on i{height:36px;background:var(--fc-acc,#006E4E)}
.fc-chart{width:100%;height:190px;display:block;margin:6px 0 4px}
@media(max-width:640px){
  .fc-months{grid-template-columns:repeat(6,1fr)}
  .fc-field{flex:1 1 100%}
  .fc-field input,.fc-field select,.fc-btn{width:100%;min-width:0}
}

/* Wave 3 — Intel @ 390: every room clips inside the pane, strip scrolls, no letter-stack. */
@media (max-width: 390px) {
  body.intel-premium .wrap { padding-inline: 8px; max-width: 100%; overflow-x: hidden; }
  body.intel-premium .intel-shell { gap: 8px; }
  body.intel-premium .intel-main { overflow-x: hidden; max-width: 100%; }
  body.intel-premium .ria-pane,
  body.intel-premium .ria-pane-intro,
  body.intel-premium [data-ria-pane] { min-width: 0; max-width: 100%; overflow-x: hidden; }
  body.intel-premium .ria-pane-intro h2 { font-size: 20px !important; }
  body.intel-premium .ihb-tattoo { grid-template-columns: 1fr 1fr; gap: 6px; }
  body.intel-premium .ihb-grid { grid-template-columns: 1fr; gap: 10px; }
  body.intel-premium .ihb-fills li { max-width: 100%; min-width: 0; flex: 1 1 100%; }
  body.intel-premium .ivs-hero { flex-direction: column; align-items: stretch; gap: 10px; }
  body.intel-premium .ivs-hero-stat { margin-left: 0 !important; min-width: 0; width: 100%; }
  body.intel-premium .ivs-search { flex: 1 1 100%; min-width: 0; }
  body.intel-premium .ivs-chips { gap: 4px; }
  body.intel-premium .ivs-chip { font-size: 12px; padding: 6px 10px; }
  body.intel-premium .fc-form { flex-direction: column; align-items: stretch; padding: 10px; }
  body.intel-premium .fc-field { flex: 1 1 100%; min-width: 0; }
  body.intel-premium .fc-field input,
  body.intel-premium .fc-field select,
  body.intel-premium .fc-btn { width: 100%; min-width: 0; }
  body.intel-premium .rs-split,
  body.intel-premium .research-split { gap: 10px; }
  body.intel-premium .intel-seats,
  body.intel-premium .its-row { flex-wrap: wrap; min-width: 0; }
  body.intel-premium .ria-modes > button { padding: 8px 12px; font-size: 13px; }
  body.intel-premium .jag-newsdesk .news-brief { padding: 8px 10px !important; }
  body.intel-premium .cal-toolbar { max-width: 100%; }
}

/* ═══ PRO ROOM LOCK (2026-08-31) ══════════════════════════════════════════════
   Intel has had NO visual lock since 2026-08-21. The blanket ::after frost above
   is display:none !important on every pane - correct at the time, because the old
   frost blurred the ticker box too and a free member could not spend the one free
   look the page was advertising ("frost the ANSWER, never the question"). But
   nothing replaced it, so Compare, Backtest, My charts, Notes and Calculators have
   been fully usable on a free account ever since. Proven on a real free account,
   not inferred: research-free-settled true, ::after content none, chart rendered,
   every control live.

   This locks the PRO ROOMS ONLY, and only their content:
     - the room's intro line stays sharp, so a member still reads what the room is
     - the unlock card stays sharp and sits in the MIDDLE of the room
     - Assets, Overview, Calendar and News are untouched; they have their own rules
       and Assets still owes the free member their one dossier.
   The question stays live everywhere. Only the answer is frosted. */
/* EVERY ROOM. The owner has now said it five times: nothing in Intel is open to a
   free member. No per-room exclusions - a list of exceptions is how this ended up
   with Compare, Backtest and Screener silently usable for a week.
   Sharp on purpose: the room's intro line (so a member reads what they are being
   sold) and the unlock card itself. Everything else is frosted and inert. */
/* SETTLED, NOT RACED. Requiring research-settled too means the frost can only appear
   once entitlement has actually RESOLVED. Before this change the frost was dead, so a
   slow or failed Pro check cost nobody anything; now it is load-bearing, and a race
   would blur the whole desk for a paying member. Fail open: an unresolved check shows
   the product, never the wall. */
/* A TEASER, NOT A SMEAR. blur(7px) over a whole room does gate it, but it makes the
   product look BROKEN rather than desirable - the owner's words were that free users
   "think they have shitty data", and he is right. Nobody buys a thing they have only
   seen out of focus.
   So the room is CUT instead: the first screenful stays completely sharp and real -
   actual earnings dates, actual holdings, actual headlines - then it ends in a clean
   fade with the Go Pro card centred over it. What they see is true and good-looking;
   what they cannot reach is the rest. */
body.research-settled.research-free-settled [data-ria-pane]:not([data-ria-pane="news"]) {
  max-height: 620px;
  overflow: hidden;
  -webkit-mask-image: linear-gradient(to bottom, #000 0, #000 58%, rgba(0,0,0,.25) 82%, transparent 100%);
          mask-image: linear-gradient(to bottom, #000 0, #000 58%, rgba(0,0,0,.25) 82%, transparent 100%);
}
body.research-settled.research-free-settled [data-ria-pane]:not([data-ria-pane="news"]) > *:not(.ria-pane-intro):not(.intel-unlock-cta) {
  pointer-events: none;
  user-select: none;
}
/* THE WAY TO PAY MUST SURVIVE THE GATE. The rule above kills pointer-events on the pane's
   direct children, and its :not(.intel-unlock-cta) exclusion therefore only rescues a card
   that IS a direct child. Rooms that paint their own unlock card nest it deeper - Compare
   is skipped by the floating-card loop in research.html precisely because "intel-vs paints
   its own Unlock card", and that card sits inside the room's content div. Measured on the
   live site as a free user: the Compare pane's content child has pointer-events:none, and
   the "Unlock Pro - $4.99/mo" link inside it is 41px tall, visible, and not the hit target
   at its own centre. A free member could see the button and could not click it.

   The gate exists to stop free members USING the tools, not to stop them buying. Anything
   that leads to /plans, and any unlock card at any depth, stays clickable. Content stays
   inert. (owner 2026-09-02) */
body.research-settled.research-free-settled [data-ria-pane] a[href^="/plans"],
body.research-settled.research-free-settled [data-ria-pane] a[href*="/plans"],
body.research-settled.research-free-settled [data-ria-pane] .intel-unlock-cta,
body.research-settled.research-free-settled [data-ria-pane] .intel-unlock-cta *,
body.research-settled.research-free-settled [data-ria-pane] [data-unlock],
body.research-settled.research-free-settled [data-ria-pane] .iv-lock,
body.research-settled.research-free-settled [data-ria-pane] .iv-lock * {
  pointer-events: auto !important;
  user-select: auto;
}
body.research-settled.research-free-settled [data-ria-pane] {
  position: relative;
}
/* FIXED, NOT ABSOLUTE. top:50% of the PANE is the middle of the content, and on a
   long room - Screener's table, Compare's chart stack - that is far below the fold, so
   the owner scrolled a blurred page and saw no ask at all. Fixed centres it on the
   VIEWPORT: the middle of what the member is actually looking at, on every room, at
   any scroll position. Asked for five times; this is what "in the middle of the page"
   has to mean on a page taller than the screen. */
body.research-settled.research-free-settled .intel-unlock-cta {
  position: fixed;
  top: 50%;
  left: calc(50% + 130px);          /* offset for the fixed left rail */
  transform: translate(-50%, -50%);
  z-index: 60;
  filter: none !important;
  pointer-events: auto;
  width: min(420px, calc(100vw - 48px));
  text-align: center;
  background: var(--intel-card, #fff);
  border: 1px solid var(--intel-line, #e4e8ee);
  border-radius: 18px;
  padding: 22px 24px;
  box-shadow: 0 18px 48px rgba(15, 23, 42, .18);
}
@media (max-width: 900px) {
  body.research-settled.research-free-settled .intel-unlock-cta { left: 50%; }
}

/* NEWS STAYS READABLE. Blurring it does not tease a paywall, it deletes the feature: a
   headline wire nobody can read is not a preview of anything, and the owner reported it
   as "gutted" within minutes of the blanket frost. The Pro ask in News is the FILTERS
   and the book-scoped brief - things that sell by being visible and locked, not by
   hiding the headlines behind frost. */
body.research-settled.research-free-settled [data-ria-pane="news"],
body.research-settled.research-free-settled [data-ria-pane="news"] *,
body.intel-free-user [data-ria-pane="news"],
body.intel-free-user [data-ria-pane="news"] * {
  filter: none !important;
  pointer-events: auto !important;
  user-select: auto !important;
}
body.research-settled.research-free-settled [data-ria-pane="news"] { min-height: 0 !important; }

/* THE ASSETS BANNER GOES IN THE MIDDLE TOO. #researchUnlockStrip is a full-width bar
   pinned above the panes - the "not on the fucking header" the owner has now objected
   to twice. Assets is the one room that keeps its content readable (the free member is
   owed their one dossier), so the ask cannot rely on frost to draw the eye; it has to
   sit where they are looking. Same fixed centring as .intel-unlock-cta, so Intel has
   ONE ask in ONE place on every room. */
body.research-settled.research-free-settled #researchUnlockStrip:not([hidden]) {
  position: fixed;
  top: 50%;
  left: calc(50% + 130px);
  transform: translate(-50%, -50%);
  z-index: 60;
  width: min(440px, calc(100vw - 48px));
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 10px;
  padding: 22px 24px;
  border-radius: 18px;
  box-shadow: 0 18px 48px rgba(15, 23, 42, .18);
}
@media (max-width: 900px) {
  body.research-settled.research-free-settled #researchUnlockStrip:not([hidden]) { left: 50%; }
}

/* The slim Pro line above a FULL, readable free news feed. Replaces the card that
   used to stand where the headlines should have been. */
.dd-news-proline {
  display: flex; flex-wrap: wrap; align-items: center; gap: 8px 14px;
  margin: 0 0 14px; padding: 11px 15px; border-radius: 12px;
  background: var(--intel-accent-soft, #eef6f2);
  border: 1px solid var(--intel-line, #e4e8ee);
  font-size: 13px; line-height: 1.45; color: var(--intel-ink, #0f172a);
}
.dd-news-proline a {
  margin-left: auto; font-weight: 800; color: #BB5C2D; text-decoration: none; white-space: nowrap;
}
:root[data-theme="dark"] .dd-news-proline,
html[data-intel-theme="dark"] .dd-news-proline {
  background: #12302a; border-color: #24303c; color: #e8eef4;
}
