﻿/* TradingSimuLab public static core system.
   Purpose: shared layout, typography, article/sidebar/card behavior for SEO/static pages.
   No auth, no tokens, no WordPress side-menu hacks, no backend dependencies. */

:root {
  --tsl-page-max: 1120px;
  --tsl-page-pad: 20px;
  --tsl-blue: #2563eb;
  --tsl-blue-hover: #1d4ed8;
  --tsl-bg: #f8fafc;
  --tsl-card: #ffffff;
  --tsl-text: #0f172a;
  --tsl-sub: #475569;
  --tsl-muted: #64748b;
  --tsl-line: rgba(15, 23, 42, 0.12);
  --tsl-line-soft: rgba(148, 163, 184, 0.28);
  --tsl-shadow: 0 14px 36px rgba(15, 23, 42, 0.055);
  --tsl-radius: 18px;
  --tsl-sidebar: 286px;
  --tsl-gap: 48px;
  --tsl-font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Inter, Arial, sans-serif;
}

html,
body {
  margin: 0 !important;
  max-width: 100% !important;
  overflow-x: hidden !important;
  background: var(--tsl-bg) !important;
  color: var(--tsl-text) !important;
  font-family: var(--tsl-font) !important;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

body {
  line-height: 1.75 !important;
}

/* Shared static container rhythm: matches header/footer max-width behavior. */
.tsl-compatible-header__inner,
.tsl-footer-pro__inner,
.tsl-index-shell,
.tsl-clean-article-shell,
.tsl-explainer-shell,
.tsl-pro-shell,
.tsl-foundation-shell {
  box-sizing: border-box !important;
  max-width: var(--tsl-page-max) !important;
  width: 100% !important;
  margin-left: auto !important;
  margin-right: auto !important;
}

/* Header remains the master reference. */
.tsl-compatible-header__inner {
  padding-left: var(--tsl-page-pad) !important;
  padding-right: var(--tsl-page-pad) !important;
}

/* Footer aligns to same visual rhythm. */
.tsl-footer-pro__inner {
  padding-left: var(--tsl-page-pad) !important;
  padding-right: var(--tsl-page-pad) !important;
}

/* Article index / homepage */
.tsl-index-shell {
  padding: 38px var(--tsl-page-pad) 62px !important;
}

.tsl-title,
.tsl-foundation-title {
  color: var(--tsl-text) !important;
  font-weight: 850 !important;
  letter-spacing: -0.055em !important;
  line-height: 1.03 !important;
}

.tsl-deck,
.tsl-foundation-deck {
  color: var(--tsl-sub) !important;
  font-size: 18px !important;
  line-height: 1.75 !important;
  max-width: 780px !important;
}

/* Article/explainer layout */
.tsl-clean-article-shell,
.tsl-explainer-shell {
  padding: 46px var(--tsl-page-pad) 76px !important;
  display: grid !important;
  grid-template-columns: minmax(0, 1fr) var(--tsl-sidebar) !important;
  gap: var(--tsl-gap) !important;
  align-items: start !important;
}

.tsl-clean-main,
.tsl-pro-main {
  min-width: 0 !important;
  max-width: none !important;
}

.tsl-clean-sidebar,
.tsl-pro-side {
  width: var(--tsl-sidebar) !important;
  position: sticky !important;
  top: 92px !important;
  display: grid !important;
  gap: 18px !important;
  align-self: start !important;
}

/* Article hero typography: same family/weight across daily and evergreen pages. */
.tsl-clean-h1,
.tsl-pro-title {
  max-width: 780px !important;
  color: var(--tsl-text) !important;
  font-size: clamp(44px, 5vw, 64px) !important;
  line-height: 0.99 !important;
  letter-spacing: -0.055em !important;
  font-weight: 850 !important;
  margin-top: 0 !important;
}

.tsl-clean-h1 span,
.tsl-pro-title span,
.tsl-title span {
  color: var(--tsl-blue) !important;
}

.tsl-clean-deck,
.tsl-pro-deck {
  max-width: 760px !important;
  color: var(--tsl-sub) !important;
  font-size: 19px !important;
  line-height: 1.75 !important;
}

.tsl-clean-crumb,
.tsl-breadcrumb,
.tsl-pro-crumb,
.tsl-crumb {
  color: var(--tsl-muted) !important;
  font-size: 12px !important;
}

.tsl-clean-kicker,
.tsl-kicker,
.tsl-pro-kicker,
.tsl-foundation-kicker {
  display: inline-block !important;
  font-size: 10px !important;
  letter-spacing: 0.12em !important;
  text-transform: uppercase !important;
  font-weight: 850 !important;
  color: var(--tsl-blue) !important;
  background: rgba(37, 99, 235, 0.10) !important;
  border: 1px solid rgba(37, 99, 235, 0.20) !important;
  padding: 5px 9px !important;
  border-radius: 6px !important;
}

/* Notes/disclaimers */
.tsl-clean-note,
.tsl-pro-note,
.tsl-note,
.tsl-disclaimer-box,
.tsl-foundation-note {
  background: #fff7ed !important;
  border: 1px solid #fed7aa !important;
  color: #7c2d12 !important;
  border-radius: 14px !important;
  padding: 14px 16px !important;
  font-size: 14px !important;
}

/* Main body rhythm */
.tsl-clean-section,
.tsl-pro-section,
.tsl-foundation-section {
  margin-top: 44px !important;
}

.tsl-clean-section h2,
.tsl-pro-section h2,
.tsl-foundation-section h2 {
  color: var(--tsl-text) !important;
  font-size: clamp(28px, 3vw, 38px) !important;
  line-height: 1.1 !important;
  letter-spacing: -0.035em !important;
  font-weight: 850 !important;
  margin: 0 0 16px !important;
}

.tsl-clean-section h3,
.tsl-pro-section h3 {
  color: var(--tsl-text) !important;
  font-size: 20px !important;
  line-height: 1.25 !important;
  letter-spacing: -0.025em !important;
  margin: 24px 0 8px !important;
}

.tsl-clean-section p,
.tsl-clean-section li,
.tsl-pro-section p,
.tsl-pro-section li,
.tsl-foundation-section p,
.tsl-foundation-list li {
  color: var(--tsl-sub) !important;
  font-size: 17px !important;
  line-height: 1.82 !important;
}

/* Sidebar cards */
.tsl-side-card,
.tsl-pro-side .tsl-side-card,
.tsl-pro-side-card {
  background: var(--tsl-card) !important;
  border: 1px solid var(--tsl-line) !important;
  border-radius: var(--tsl-radius) !important;
  box-shadow: var(--tsl-shadow) !important;
  padding: 18px !important;
}

.tsl-side-title,
.tsl-pro-side-title {
  font-size: 12px !important;
  font-weight: 850 !important;
  color: var(--tsl-text) !important;
  margin-bottom: 8px !important;
  letter-spacing: 0 !important;
  text-transform: none !important;
}

.tsl-side-card p,
.tsl-side-card li {
  color: var(--tsl-muted) !important;
  font-size: 14px !important;
  line-height: 1.65 !important;
}

.tsl-side-card a {
  display: block !important;
  padding: 7px 0 !important;
  color: var(--tsl-sub) !important;
  text-decoration: none !important;
  font-size: 14px !important;
}

.tsl-side-card a:hover {
  color: var(--tsl-blue) !important;
}

/* TOC / contents cards */
.tsl-toc,
.tsl-mobile-toc {
  margin: 26px 0 42px !important;
  padding: 18px !important;
  background: var(--tsl-card) !important;
  border: 1px solid var(--tsl-line-soft) !important;
  border-radius: var(--tsl-radius) !important;
  box-shadow: 0 12px 32px rgba(15, 23, 42, 0.04) !important;
  display: flex !important;
  flex-wrap: wrap !important;
  gap: 10px !important;
}

.tsl-toc-title {
  width: 100% !important;
  font-size: 13px !important;
  font-weight: 900 !important;
  letter-spacing: 0.08em !important;
  text-transform: uppercase !important;
  color: var(--tsl-blue) !important;
  margin-bottom: 4px !important;
}

.tsl-toc a,
.tsl-mobile-toc a {
  display: inline-flex !important;
  align-items: center !important;
  padding: 8px 11px !important;
  border-radius: 999px !important;
  background: #f8fafc !important;
  border: 1px solid rgba(148, 163, 184, 0.25) !important;
  color: #334155 !important;
  font-size: 13px !important;
  font-weight: 750 !important;
  line-height: 1.2 !important;
  text-decoration: none !important;
  margin: 0 !important;
}

.tsl-toc a:hover,
.tsl-mobile-toc a:hover {
  background: #eff6ff !important;
  border-color: rgba(37, 99, 235, 0.28) !important;
  color: var(--tsl-blue-hover) !important;
}

/* Cards / grids */
.tsl-card,
.tsl-model-card,
.tsl-foundation-card,
.tsl-related a {
  background: var(--tsl-card) !important;
  border: 1px solid var(--tsl-line) !important;
  border-radius: 16px !important;
  box-shadow: 0 10px 28px rgba(15, 23, 42, 0.04) !important;
}

.tsl-card:hover,
.tsl-foundation-card:hover,
.tsl-related a:hover {
  border-color: rgba(37, 99, 235, 0.45) !important;
}

/* Snapshot boxes in daily articles */
.tsl-snapshot {
  background: var(--tsl-card) !important;
  border: 1px solid var(--tsl-line) !important;
  border-radius: 18px !important;
  box-shadow: var(--tsl-shadow) !important;
}

/* Mobile */
@media (max-width: 980px) {
  :root {
    --tsl-page-pad: 20px;
  }

  .tsl-compatible-header__inner {
    max-width: 100% !important;
    padding-left: 14px !important;
    padding-right: 14px !important;
  }

  .tsl-clean-article-shell,
  .tsl-explainer-shell,
  .tsl-pro-grid {
    grid-template-columns: 1fr !important;
    gap: 34px !important;
  }

  .tsl-clean-sidebar,
  .tsl-pro-side {
    position: static !important;
    width: 100% !important;
  }

  .tsl-clean-h1,
  .tsl-pro-title,
  .tsl-title {
    font-size: clamp(38px, 9vw, 54px) !important;
    line-height: 1.02 !important;
  }
}

@media (max-width: 640px) {
  :root {
    --tsl-page-pad: 16px;
  }

  .tsl-index-shell,
  .tsl-clean-article-shell,
  .tsl-explainer-shell,
  .tsl-pro-shell,
  .tsl-foundation-shell {
    padding-left: var(--tsl-page-pad) !important;
    padding-right: var(--tsl-page-pad) !important;
  }

  .tsl-clean-article-shell,
  .tsl-explainer-shell {
    padding-top: 28px !important;
    padding-bottom: 56px !important;
  }

  .tsl-clean-h1,
  .tsl-pro-title,
  .tsl-title {
    font-size: clamp(34px, 10vw, 42px) !important;
  }

  .tsl-clean-deck,
  .tsl-pro-deck,
  .tsl-deck {
    font-size: 16px !important;
    line-height: 1.65 !important;
  }

  .tsl-toc,
  .tsl-mobile-toc {
    display: grid !important;
    grid-template-columns: 1fr !important;
  }

  .tsl-toc a,
  .tsl-mobile-toc a {
    width: 100% !important;
  }
}

/* Sidebar list polish */
.tsl-side-card ul,
.tsl-pro-side ul {
  margin: 10px 0 0 0 !important;
  padding-left: 18px !important;
}

.tsl-side-card li,
.tsl-pro-side li {
  padding-left: 2px !important;
  margin: 7px 0 !important;
  color: var(--tsl-sub) !important;
  font-size: 14px !important;
  line-height: 1.55 !important;
}

.tsl-side-card li::marker,
.tsl-pro-side li::marker {
  color: var(--tsl-muted) !important;
  font-size: 0.85em !important;
}

/* Explainer hero vertical rhythm polish */
.tsl-explainer-shell .tsl-breadcrumb,
.tsl-explainer-shell .tsl-clean-crumb {
  margin-bottom: 14px !important;
}

.tsl-explainer-shell .tsl-clean-kicker {
  margin-bottom: 24px !important;
}

.tsl-explainer-shell .tsl-clean-hero {
  margin-bottom: 28px !important;
}

.tsl-explainer-shell .tsl-clean-h1 {
  margin-bottom: 22px !important;
}

.tsl-explainer-shell .tsl-clean-deck {
  margin-bottom: 24px !important;
}

/* =========================================================
   TSL PUBLIC RHYTHM SYSTEM
   Source of truth for article/tool/explainer/hub spacing.
   Keep this at the end of tsl-public-core.css.
   ========================================================= */

:root {
  --tsl-public-shell-top: 38px;
  --tsl-public-shell-bottom: 64px;
  --tsl-public-crumb-mb: 18px;
  --tsl-public-kicker-mb: 18px;
  --tsl-public-title-mb: 18px;
  --tsl-public-deck-mb: 22px;
  --tsl-public-meta-mt: 22px;
  --tsl-public-meta-mb: 24px;
}

/* Same start point for all public/static content shells */
.tsl-index-shell,
.tsl-clean-article-shell,
.tsl-explainer-shell,
.tsl-pro-shell,
.tsl-foundation-shell {
  max-width: var(--tsl-page-max) !important;
  width: 100% !important;
  margin-left: auto !important;
  margin-right: auto !important;
  box-sizing: border-box !important;
  padding-top: var(--tsl-public-shell-top) !important;
  padding-bottom: var(--tsl-public-shell-bottom) !important;
  padding-left: var(--tsl-page-pad) !important;
  padding-right: var(--tsl-page-pad) !important;
}

/* Same breadcrumb spacing everywhere */
.tsl-breadcrumb,
.tsl-clean-crumb,
.tsl-pro-crumb,
.tsl-crumb,
.tsl-foundation-crumb {
  margin-top: 0 !important;
  margin-bottom: var(--tsl-public-crumb-mb) !important;
}

/* Same category/badge spacing everywhere */
.tsl-clean-kicker,
.tsl-kicker,
.tsl-pro-kicker,
.tsl-foundation-kicker {
  margin-top: 0 !important;
  margin-bottom: var(--tsl-public-kicker-mb) !important;
}

/* Same title rhythm everywhere */
.tsl-clean-h1,
.tsl-pro-title,
.tsl-title,
.tsl-foundation-title {
  margin-top: 0 !important;
  margin-bottom: var(--tsl-public-title-mb) !important;
}

/* Same hero paragraph rhythm everywhere */
.tsl-clean-deck,
.tsl-pro-deck,
.tsl-deck,
.tsl-foundation-deck {
  margin-top: 0 !important;
  margin-bottom: var(--tsl-public-deck-mb) !important;
}

/* Same byline/meta spacing everywhere */
.tsl-clean-meta,
.tsl-pro-byline {
  margin-top: var(--tsl-public-meta-mt) !important;
  margin-bottom: var(--tsl-public-meta-mb) !important;
}

/* Explainer and daily article two-column layout should share the same grid */
.tsl-clean-article-shell,
.tsl-explainer-shell {
  display: grid !important;
  grid-template-columns: minmax(0, 1fr) var(--tsl-sidebar) !important;
  gap: var(--tsl-gap) !important;
  align-items: start !important;
}

/* Prevent individual article CSS from reintroducing old sidebar/menu weirdness */
.tsl-clean-sidebar,
.tsl-pro-side {
  position: sticky !important;
  top: 92px !important;
  width: var(--tsl-sidebar) !important;
  align-self: start !important;
}

/* Side cards: no cramped bullets */
.tsl-side-card ul,
.tsl-pro-side ul {
  margin: 10px 0 0 !important;
  padding-left: 18px !important;
}

.tsl-side-card li,
.tsl-pro-side li {
  margin: 7px 0 !important;
  padding-left: 2px !important;
  color: var(--tsl-sub) !important;
  font-size: 14px !important;
  line-height: 1.55 !important;
}

.tsl-side-card li::marker,
.tsl-pro-side li::marker {
  color: var(--tsl-muted) !important;
  font-size: 0.85em !important;
}

/* Mobile: all public pages collapse consistently */
@media (max-width: 980px) {
  .tsl-index-shell,
  .tsl-clean-article-shell,
  .tsl-explainer-shell,
  .tsl-pro-shell,
  .tsl-foundation-shell {
    padding-top: 34px !important;
    padding-bottom: 56px !important;
  }

  .tsl-clean-article-shell,
  .tsl-explainer-shell {
    grid-template-columns: 1fr !important;
    gap: 34px !important;
  }

  .tsl-clean-sidebar,
  .tsl-pro-side {
    position: static !important;
    width: 100% !important;
  }
}

@media (max-width: 640px) {
  .tsl-index-shell,
  .tsl-clean-article-shell,
  .tsl-explainer-shell,
  .tsl-pro-shell,
  .tsl-foundation-shell {
    padding-top: 28px !important;
    padding-left: 16px !important;
    padding-right: 16px !important;
  }
}

/* =========================================================
   TSL PUBLIC HERO + SIDEBAR STANDARDIZATION
   Keeps article/tool/explainer hero starts consistent.
   ========================================================= */

:root {
  --tsl-hero-kicker-mb: 24px;
  --tsl-hero-title-max: 760px;
  --tsl-hero-deck-max: 740px;
  --tsl-sidebar-card-min: 142px;
  --tsl-sidebar-card-pad: 20px;
}

/* Blue category badge rhythm */
.tsl-clean-kicker,
.tsl-kicker,
.tsl-pro-kicker,
.tsl-foundation-kicker {
  margin-top: 0 !important;
  margin-bottom: var(--tsl-hero-kicker-mb) !important;
  width: fit-content !important;
}

/* Main title should use the same width logic everywhere */
.tsl-clean-h1,
.tsl-pro-title,
.tsl-title,
.tsl-foundation-title {
  max-width: var(--tsl-hero-title-max) !important;
  margin-top: 0 !important;
  margin-bottom: 22px !important;
}

/* First paragraph / deck should align under title consistently */
.tsl-clean-deck,
.tsl-pro-deck,
.tsl-deck,
.tsl-foundation-deck {
  max-width: var(--tsl-hero-deck-max) !important;
  margin-top: 0 !important;
  margin-bottom: 24px !important;
}

/* Explainer hero block: consistent after breadcrumb */
.tsl-clean-hero {
  margin-top: 0 !important;
  margin-bottom: 28px !important;
}

/* Sidebar: align slightly below the breadcrumb/category area, not randomly */
.tsl-clean-sidebar,
.tsl-pro-side {
  top: 88px !important;
  gap: 22px !important;
}

/* Sidebar cards: cleaner fixed rhythm and less cramped lists */
.tsl-side-card {
  min-height: var(--tsl-sidebar-card-min) !important;
  padding: var(--tsl-sidebar-card-pad) !important;
}

.tsl-side-card:first-child {
  min-height: 132px !important;
}

.tsl-side-card .tsl-side-title {
  margin-bottom: 10px !important;
}

.tsl-side-card p {
  margin: 0 !important;
}

.tsl-side-card ul {
  margin-top: 12px !important;
  padding-left: 17px !important;
}

.tsl-side-card li {
  margin: 8px 0 !important;
  line-height: 1.55 !important;
}

/* On desktop, keep sidebar from becoming too tall visually */
@media (min-width: 981px) {
  .tsl-clean-sidebar,
  .tsl-pro-side {
    max-width: var(--tsl-sidebar) !important;
  }

  .tsl-side-card {
    max-width: 100% !important;
  }
}

/* Mobile: sidebar becomes normal content below article */
@media (max-width: 980px) {
  .tsl-clean-sidebar,
  .tsl-pro-side {
    top: auto !important;
    gap: 16px !important;
  }

  .tsl-side-card {
    min-height: 0 !important;
  }
}

/* =========================================================
   TSL PUBLIC HERO + SIDEBAR STANDARDIZATION
   Keeps article/tool/explainer hero starts consistent.
   ========================================================= */

:root {
  --tsl-hero-kicker-mb: 24px;
  --tsl-hero-title-max: 760px;
  --tsl-hero-deck-max: 740px;
  --tsl-sidebar-card-min: 142px;
  --tsl-sidebar-card-pad: 20px;
}

/* Blue category badge rhythm */
.tsl-clean-kicker,
.tsl-kicker,
.tsl-pro-kicker,
.tsl-foundation-kicker {
  margin-top: 0 !important;
  margin-bottom: var(--tsl-hero-kicker-mb) !important;
  width: fit-content !important;
}

/* Main title should use the same width logic everywhere */
.tsl-clean-h1,
.tsl-pro-title,
.tsl-title,
.tsl-foundation-title {
  max-width: var(--tsl-hero-title-max) !important;
  margin-top: 0 !important;
  margin-bottom: 22px !important;
}

/* First paragraph / deck should align under title consistently */
.tsl-clean-deck,
.tsl-pro-deck,
.tsl-deck,
.tsl-foundation-deck {
  max-width: var(--tsl-hero-deck-max) !important;
  margin-top: 0 !important;
  margin-bottom: 24px !important;
}

/* Explainer hero block: consistent after breadcrumb */
.tsl-clean-hero {
  margin-top: 0 !important;
  margin-bottom: 28px !important;
}

/* Sidebar: align slightly below the breadcrumb/category area, not randomly */
.tsl-clean-sidebar,
.tsl-pro-side {
  top: 88px !important;
  gap: 22px !important;
}

/* Sidebar cards: cleaner fixed rhythm and less cramped lists */
.tsl-side-card {
  min-height: var(--tsl-sidebar-card-min) !important;
  padding: var(--tsl-sidebar-card-pad) !important;
}

.tsl-side-card:first-child {
  min-height: 132px !important;
}

.tsl-side-card .tsl-side-title {
  margin-bottom: 10px !important;
}

.tsl-side-card p {
  margin: 0 !important;
}

.tsl-side-card ul {
  margin-top: 12px !important;
  padding-left: 17px !important;
}

.tsl-side-card li {
  margin: 8px 0 !important;
  line-height: 1.55 !important;
}

/* On desktop, keep sidebar from becoming too tall visually */
@media (min-width: 981px) {
  .tsl-clean-sidebar,
  .tsl-pro-side {
    max-width: var(--tsl-sidebar) !important;
  }

  .tsl-side-card {
    max-width: 100% !important;
  }
}

/* Mobile: sidebar becomes normal content below article */
@media (max-width: 980px) {
  .tsl-clean-sidebar,
  .tsl-pro-side {
    top: auto !important;
    gap: 16px !important;
  }

  .tsl-side-card {
    min-height: 0 !important;
  }
}

/* =========================================================
   TSL PUBLIC BADGE / KICKER CONTRACT
   One visual standard for:
   - articles index badge
   - daily model read badge
   - tool/model explainer badge
   - foundation page badge
   ========================================================= */

.tsl-kicker,
.tsl-clean-kicker,
.tsl-pro-kicker,
.tsl-foundation-kicker {
  box-sizing: border-box !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: fit-content !important;
  min-height: 30px !important;
  padding: 0 12px !important;
  margin-top: 0 !important;
  margin-bottom: 24px !important;
  border-radius: 6px !important;
  border: 1px solid rgba(37, 99, 235, 0.22) !important;
  background: rgba(37, 99, 235, 0.10) !important;
  color: var(--tsl-blue) !important;
  font-family: var(--tsl-font) !important;
  font-size: 10px !important;
  line-height: 1 !important;
  font-weight: 850 !important;
  letter-spacing: 0.12em !important;
  text-transform: uppercase !important;
  text-decoration: none !important;
  white-space: nowrap !important;
}

/* Same breadcrumb-to-badge spacing everywhere */
.tsl-breadcrumb,
.tsl-clean-crumb,
.tsl-pro-crumb,
.tsl-crumb,
.tsl-foundation-crumb {
  margin-bottom: 18px !important;
}

/* Same badge-to-title spacing everywhere */
.tsl-kicker + header,
.tsl-clean-kicker + h1,
.tsl-clean-kicker + .tsl-clean-h1,
.tsl-pro-kicker + header,
.tsl-foundation-kicker + header {
  margin-top: 0 !important;
}

/* Daily/explainer hero headings should begin consistently after the badge */
.tsl-clean-hero .tsl-clean-kicker {
  margin-bottom: 24px !important;
}

.tsl-clean-hero .tsl-clean-h1 {
  margin-top: 0 !important;
}

/* Mobile: keep badge compact but readable */
@media (max-width: 640px) {
  .tsl-kicker,
  .tsl-clean-kicker,
  .tsl-pro-kicker,
  .tsl-foundation-kicker {
    min-height: 28px !important;
    padding: 0 10px !important;
    font-size: 9.5px !important;
  }
}

/* =========================================================
   TSL PUBLIC KPI CARD GRID
   Fixes squished model/KPI cards inside article bodies.
   Standard for model explainer pages.
   ========================================================= */

.tsl-clean-main .tsl-model-grid,
.tsl-pro-main .tsl-model-grid,
.tsl-foundation-shell .tsl-model-grid {
  display: grid !important;
  grid-template-columns: repeat(2, minmax(240px, 1fr)) !important;
  gap: 16px !important;
  margin: 24px 0 34px !important;
}

.tsl-clean-main .tsl-model-card,
.tsl-pro-main .tsl-model-card,
.tsl-foundation-shell .tsl-model-card {
  min-height: 0 !important;
  height: auto !important;
  padding: 20px !important;
  border-radius: 18px !important;
  background: #ffffff !important;
  border: 1px solid rgba(15, 23, 42, 0.12) !important;
  box-shadow: 0 10px 28px rgba(15, 23, 42, 0.04) !important;
}

.tsl-clean-main .tsl-model-label,
.tsl-pro-main .tsl-model-label,
.tsl-foundation-shell .tsl-model-label {
  display: block !important;
  margin-bottom: 10px !important;
  color: var(--tsl-blue) !important;
  font-size: 11px !important;
  line-height: 1.2 !important;
  letter-spacing: 0.10em !important;
  text-transform: uppercase !important;
  font-weight: 850 !important;
}

.tsl-clean-main .tsl-model-card p,
.tsl-pro-main .tsl-model-card p,
.tsl-foundation-shell .tsl-model-card p {
  margin: 0 !important;
  color: var(--tsl-sub) !important;
  font-size: 15px !important;
  line-height: 1.65 !important;
}

/* If the content column gets narrow, go to one clean column */
@media (max-width: 760px) {
  .tsl-clean-main .tsl-model-grid,
  .tsl-pro-main .tsl-model-grid,
  .tsl-foundation-shell .tsl-model-grid {
    grid-template-columns: 1fr !important;
  }
}

/* =========================================================
   TSL EDUCATIONAL NOTE â€” soft info style, not warning/error
   ========================================================= */

.tsl-clean-note,
.tsl-pro-note,
.tsl-note,
.tsl-disclaimer-box,
.tsl-foundation-note {
  background: linear-gradient(180deg, #ffffff 0%, #f8fbff 100%) !important;
  border: 1px solid rgba(37, 99, 235, 0.18) !important;
  color: #334155 !important;
  border-radius: 16px !important;
  padding: 16px 18px !important;
  font-size: 14px !important;
  line-height: 1.65 !important;
  box-shadow: 0 10px 26px rgba(15, 23, 42, 0.035) !important;
}

.tsl-clean-note strong,
.tsl-pro-note strong,
.tsl-note strong,
.tsl-disclaimer-box strong,
.tsl-foundation-note strong {
  color: #1d4ed8 !important;
  font-weight: 850 !important;
}

/* =========================================================
   TSL CARD HIERARCHY SYSTEM
   Purpose:
   - Hub cards stay premium/conversion-focused
   - In-article KPI cards become lighter definition tiles
   - Adds subtle visual interest without random color overload
   ========================================================= */

:root {
  --tsl-purple: #7c3aed;
  --tsl-green: #059669;
  --tsl-amber: #d97706;
  --tsl-soft-blue: rgba(37, 99, 235, 0.08);
  --tsl-soft-purple: rgba(124, 58, 237, 0.08);
  --tsl-soft-green: rgba(5, 150, 105, 0.08);
  --tsl-soft-amber: rgba(217, 119, 6, 0.08);
}

/* Hub/navigation cards: keep these valuable and clickable */
.tsl-index-shell .tsl-card,
.tsl-foundation-card,
.tsl-related a {
  position: relative !important;
  overflow: hidden !important;
  background: #ffffff !important;
  border: 1px solid rgba(15, 23, 42, 0.10) !important;
  border-radius: 18px !important;
  box-shadow: 0 14px 34px rgba(15, 23, 42, 0.055) !important;
  transition: transform 140ms ease, box-shadow 140ms ease, border-color 140ms ease !important;
}

.tsl-index-shell .tsl-card::before,
.tsl-foundation-card::before,
.tsl-related a::before {
  content: "" !important;
  position: absolute !important;
  inset: 0 auto 0 0 !important;
  width: 4px !important;
  background: linear-gradient(180deg, var(--tsl-blue), #60a5fa) !important;
  opacity: 0.85 !important;
}

.tsl-index-shell .tsl-card:hover,
.tsl-foundation-card:hover,
.tsl-related a:hover {
  transform: translateY(-2px) !important;
  border-color: rgba(37, 99, 235, 0.34) !important;
  box-shadow: 0 18px 42px rgba(15, 23, 42, 0.075) !important;
}

/* In-article model/KPI cards: lighter definition tiles, not big conversion cards */
.tsl-clean-main .tsl-model-grid,
.tsl-pro-main .tsl-model-grid,
.tsl-foundation-shell .tsl-model-grid {
  display: grid !important;
  grid-template-columns: repeat(2, minmax(240px, 1fr)) !important;
  gap: 14px !important;
  margin: 24px 0 34px !important;
}

.tsl-clean-main .tsl-model-card,
.tsl-pro-main .tsl-model-card,
.tsl-foundation-shell .tsl-model-card {
  position: relative !important;
  min-height: 0 !important;
  height: auto !important;
  padding: 18px 18px 18px 20px !important;
  border-radius: 16px !important;
  background: linear-gradient(180deg, #ffffff 0%, #f8fbff 100%) !important;
  border: 1px solid rgba(37, 99, 235, 0.14) !important;
  box-shadow: none !important;
}

.tsl-clean-main .tsl-model-card::before,
.tsl-pro-main .tsl-model-card::before,
.tsl-foundation-shell .tsl-model-card::before {
  content: "" !important;
  position: absolute !important;
  top: 16px !important;
  bottom: 16px !important;
  left: 0 !important;
  width: 3px !important;
  border-radius: 999px !important;
  background: var(--tsl-blue) !important;
  opacity: 0.80 !important;
}

.tsl-clean-main .tsl-model-label,
.tsl-pro-main .tsl-model-label,
.tsl-foundation-shell .tsl-model-label {
  display: block !important;
  margin-bottom: 8px !important;
  color: var(--tsl-blue) !important;
  font-size: 10px !important;
  line-height: 1.2 !important;
  letter-spacing: 0.11em !important;
  text-transform: uppercase !important;
  font-weight: 850 !important;
}

.tsl-clean-main .tsl-model-card p,
.tsl-pro-main .tsl-model-card p,
.tsl-foundation-shell .tsl-model-card p {
  margin: 0 !important;
  color: var(--tsl-sub) !important;
  font-size: 15px !important;
  line-height: 1.58 !important;
}

/* Keep summary/sidebar cards calmer than hub cards */
.tsl-side-card {
  box-shadow: 0 12px 30px rgba(15, 23, 42, 0.045) !important;
}

/* Make CTAs stand out more than normal cards */
.tsl-clean-cta,
.tsl-pro-cta {
  background: linear-gradient(135deg, rgba(37, 99, 235, 0.08), rgba(124, 58, 237, 0.06)) !important;
  border: 1px solid rgba(37, 99, 235, 0.20) !important;
  border-radius: 20px !important;
}

/* Mobile */
@media (max-width: 760px) {
  .tsl-clean-main .tsl-model-grid,
  .tsl-pro-main .tsl-model-grid,
  .tsl-foundation-shell .tsl-model-grid {
    grid-template-columns: 1fr !important;
  }
}

/* =========================================================
   TSL NEXT-STEP CTA CARD
   For article/tool pages that should guide users to the next guide/tool.
   ========================================================= */

.tsl-clean-cta,
.tsl-pro-cta,
.tsl-next-step-card {
  position: relative !important;
  overflow: hidden !important;
  margin: 46px 0 34px !important;
  padding: 34px 34px !important;
  border-radius: 22px !important;
  background:
    radial-gradient(circle at top left, rgba(37, 99, 235, 0.13), transparent 34%),
    linear-gradient(135deg, #ffffff 0%, #f5f9ff 52%, #eef5ff 100%) !important;
  border: 1px solid rgba(37, 99, 235, 0.22) !important;
  box-shadow: 0 18px 46px rgba(37, 99, 235, 0.08) !important;
}

.tsl-clean-cta::before,
.tsl-pro-cta::before,
.tsl-next-step-card::before {
  content: "" !important;
  position: absolute !important;
  inset: 0 auto 0 0 !important;
  width: 5px !important;
  background: linear-gradient(180deg, #2563eb, #60a5fa) !important;
}

.tsl-clean-cta h2,
.tsl-pro-cta h2,
.tsl-next-step-card h2 {
  margin: 0 0 14px !important;
  color: var(--tsl-text) !important;
  font-size: clamp(26px, 3vw, 34px) !important;
  line-height: 1.1 !important;
  letter-spacing: -0.035em !important;
}

.tsl-clean-cta p,
.tsl-pro-cta p,
.tsl-next-step-card p {
  max-width: 720px !important;
  margin: 0 0 22px !important;
  color: var(--tsl-sub) !important;
  font-size: 16px !important;
  line-height: 1.75 !important;
}

.tsl-clean-cta a,
.tsl-pro-cta a,
.tsl-next-step-card a {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  min-height: 44px !important;
  padding: 0 18px !important;
  border-radius: 9px !important;
  background: var(--tsl-blue) !important;
  color: #ffffff !important;
  text-decoration: none !important;
  font-weight: 850 !important;
  font-size: 14px !important;
  box-shadow: 0 10px 22px rgba(37, 99, 235, 0.22) !important;
}

.tsl-clean-cta a:hover,
.tsl-pro-cta a:hover,
.tsl-next-step-card a:hover {
  background: var(--tsl-blue-hover) !important;
  transform: translateY(-1px) !important;
}

@media (max-width: 640px) {
  .tsl-clean-cta,
  .tsl-pro-cta,
  .tsl-next-step-card {
    padding: 26px 22px !important;
    margin: 36px 0 28px !important;
  }

  .tsl-clean-cta a,
  .tsl-pro-cta a,
  .tsl-next-step-card a {
    width: 100% !important;
  }
}

/* =========================================================
   TSL PUBLIC FOOTER CONTRACT
   One footer rhythm across all static pages.
   Footer HTML source: /articles/index.html
   ========================================================= */

.tsl-footer-pro {
  background: #eef3f9 !important;
  border-top: 1px solid rgba(15, 23, 42, 0.08) !important;
  margin-top: 0 !important;
}

.tsl-footer-pro__inner {
  box-sizing: border-box !important;
  max-width: var(--tsl-page-max) !important;
  width: 100% !important;
  margin: 0 auto !important;
  padding: 46px var(--tsl-page-pad) 48px !important;
  display: grid !important;
  grid-template-columns: 1.25fr 0.85fr 0.7fr 0.7fr 1fr !important;
  gap: 48px !important;
  align-items: start !important;
}

.tsl-footer-pro h2,
.tsl-footer-pro h3,
.tsl-footer-pro strong {
  margin-top: 0 !important;
}

.tsl-footer-pro__brand h2,
.tsl-footer-pro__brand .tsl-footer-logo,
.tsl-footer-pro__brand strong:first-child {
  margin: 0 0 8px !important;
  color: var(--tsl-text) !important;
  font-size: 22px !important;
  line-height: 1.1 !important;
  letter-spacing: -0.045em !important;
  font-weight: 900 !important;
}

.tsl-footer-pro__tagline,
.tsl-footer-pro__brand p:first-of-type {
  margin: 0 0 13px !important;
  color: var(--tsl-sub) !important;
  font-size: 14px !important;
  line-height: 1.5 !important;
}

.tsl-footer-pro__social,
.tsl-footer-social,
.tsl-social-row {
  display: flex !important;
  align-items: center !important;
  gap: 13px !important;
  margin: 0 0 22px !important;
}

.tsl-footer-pro__social a,
.tsl-footer-social a,
.tsl-social-row a {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 18px !important;
  height: 18px !important;
  color: #64748b !important;
  text-decoration: none !important;
  opacity: 0.95 !important;
}

.tsl-footer-pro__social a:hover,
.tsl-footer-social a:hover,
.tsl-social-row a:hover {
  color: var(--tsl-blue) !important;
  opacity: 1 !important;
}

.tsl-footer-pro__disclaimer,
.tsl-footer-pro__brand p:not(:first-of-type) {
  max-width: 300px !important;
  margin: 0 0 12px !important;
  color: var(--tsl-sub) !important;
  font-size: 12px !important;
  line-height: 1.55 !important;
}

.tsl-footer-pro__copyright,
.tsl-footer-pro small {
  display: block !important;
  margin-top: 8px !important;
  color: var(--tsl-sub) !important;
  font-size: 12px !important;
  line-height: 1.45 !important;
}

.tsl-footer-pro__col h3,
.tsl-footer-pro nav h3 {
  margin: 0 0 12px !important;
  color: var(--tsl-text) !important;
  font-size: 12px !important;
  line-height: 1.2 !important;
  letter-spacing: 0.09em !important;
  text-transform: uppercase !important;
  font-weight: 900 !important;
}

.tsl-footer-pro__col a,
.tsl-footer-pro nav a {
  display: block !important;
  margin: 0 0 9px !important;
  color: var(--tsl-sub) !important;
  font-size: 14px !important;
  line-height: 1.35 !important;
  text-decoration: none !important;
}

.tsl-footer-pro__col a:hover,
.tsl-footer-pro nav a:hover {
  color: var(--tsl-blue) !important;
}

@media (max-width: 980px) {
  .tsl-footer-pro__inner {
    grid-template-columns: 1fr 1fr !important;
    gap: 30px 42px !important;
    padding: 42px var(--tsl-page-pad) 44px !important;
  }

  .tsl-footer-pro__brand {
    grid-column: 1 / -1 !important;
  }
}

@media (max-width: 640px) {
  .tsl-footer-pro__inner {
    grid-template-columns: 1fr !important;
    gap: 24px !important;
    padding: 36px 16px 40px !important;
  }

  .tsl-footer-pro__social,
  .tsl-footer-social,
  .tsl-social-row {
    margin-bottom: 18px !important;
  }
}

/* =========================================================
   TSL FOOTER FINAL POLISH
   Recreates the better Articles footer rhythm across all pages.
   Keeps standardized footer HTML, fixes column width/wrapping.
   ========================================================= */

.tsl-footer-pro {
  background: #eef3f9 !important;
  border-top: 1px solid rgba(15, 23, 42, 0.08) !important;
  margin-top: 0 !important;
}

.tsl-footer-pro__inner {
  box-sizing: border-box !important;
  max-width: var(--tsl-page-max) !important;
  width: 100% !important;
  margin: 0 auto !important;
  padding: 48px var(--tsl-page-pad) 46px !important;
  display: grid !important;
  grid-template-columns: minmax(300px, 1.55fr) minmax(120px, 0.85fr) minmax(105px, 0.65fr) minmax(115px, 0.7fr) minmax(160px, 0.95fr) !important;
  gap: 48px !important;
  align-items: start !important;
}

.tsl-footer-pro__brand {
  min-width: 0 !important;
  max-width: 330px !important;
}

.tsl-footer-pro__brand h2,
.tsl-footer-pro__brand .tsl-footer-logo,
.tsl-footer-pro__brand strong:first-child {
  margin: 0 0 8px !important;
  color: var(--tsl-text) !important;
  font-size: 22px !important;
  line-height: 1.08 !important;
  letter-spacing: -0.045em !important;
  font-weight: 900 !important;
}

.tsl-footer-pro__tagline,
.tsl-footer-pro__brand p:first-of-type {
  max-width: 320px !important;
  margin: 0 0 13px !important;
  color: var(--tsl-sub) !important;
  font-size: 14px !important;
  line-height: 1.45 !important;
}

.tsl-footer-pro__social,
.tsl-footer-social,
.tsl-social-row {
  display: flex !important;
  align-items: center !important;
  flex-wrap: nowrap !important;
  gap: 13px !important;
  margin: 0 0 21px !important;
}

.tsl-footer-pro__social a,
.tsl-footer-social a,
.tsl-social-row a {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 18px !important;
  height: 18px !important;
  color: #64748b !important;
  text-decoration: none !important;
  opacity: 0.95 !important;
}

.tsl-footer-pro__social a:hover,
.tsl-footer-social a:hover,
.tsl-social-row a:hover {
  color: var(--tsl-blue) !important;
  opacity: 1 !important;
}

.tsl-footer-pro__disclaimer,
.tsl-footer-pro__brand p:not(:first-of-type) {
  max-width: 310px !important;
  margin: 0 0 12px !important;
  color: var(--tsl-sub) !important;
  font-size: 12px !important;
  line-height: 1.55 !important;
}

.tsl-footer-pro__copyright,
.tsl-footer-pro small {
  display: block !important;
  max-width: 320px !important;
  margin-top: 8px !important;
  color: var(--tsl-sub) !important;
  font-size: 12px !important;
  line-height: 1.45 !important;
}

.tsl-footer-pro__col,
.tsl-footer-pro nav {
  min-width: 0 !important;
}

.tsl-footer-pro__col h3,
.tsl-footer-pro nav h3 {
  margin: 0 0 13px !important;
  color: var(--tsl-text) !important;
  font-size: 12px !important;
  line-height: 1.2 !important;
  letter-spacing: 0.09em !important;
  text-transform: uppercase !important;
  font-weight: 900 !important;
}

.tsl-footer-pro__col a,
.tsl-footer-pro nav a {
  display: block !important;
  margin: 0 0 10px !important;
  color: var(--tsl-sub) !important;
  font-size: 14px !important;
  line-height: 1.35 !important;
  text-decoration: none !important;
  white-space: nowrap !important;
}

.tsl-footer-pro__col a:hover,
.tsl-footer-pro nav a:hover {
  color: var(--tsl-blue) !important;
}

@media (max-width: 980px) {
  .tsl-footer-pro__inner {
    grid-template-columns: 1fr 1fr !important;
    gap: 30px 42px !important;
    padding: 42px var(--tsl-page-pad) 44px !important;
  }

  .tsl-footer-pro__brand {
    grid-column: 1 / -1 !important;
    max-width: 420px !important;
  }

  .tsl-footer-pro__tagline,
  .tsl-footer-pro__disclaimer,
  .tsl-footer-pro__copyright,
  .tsl-footer-pro__brand p {
    max-width: 420px !important;
  }
}

@media (max-width: 640px) {
  .tsl-footer-pro__inner {
    grid-template-columns: 1fr !important;
    gap: 24px !important;
    padding: 36px 16px 40px !important;
  }

  .tsl-footer-pro__brand {
    max-width: 100% !important;
  }

  .tsl-footer-pro__col a,
  .tsl-footer-pro nav a {
    white-space: normal !important;
  }
}

/* =========================================================
   TSL FOOTER FINAL DECISION
   Keep the standardized footer, but restore the old Articles-style
   brand spacing and readable first column.
   ========================================================= */

.tsl-footer-pro__inner {
  max-width: 1120px !important;
  padding-top: 48px !important;
  padding-bottom: 44px !important;
  grid-template-columns:
    minmax(310px, 1.45fr)
    minmax(130px, 0.8fr)
    minmax(110px, 0.65fr)
    minmax(120px, 0.7fr)
    minmax(170px, 0.95fr) !important;
  gap: 44px !important;
}

.tsl-footer-pro__brand {
  max-width: 340px !important;
}

.tsl-footer-pro__brand p:first-of-type {
  max-width: 330px !important;
  margin-bottom: 14px !important;
  line-height: 1.45 !important;
}

.tsl-footer-pro__social,
.tsl-footer-social,
.tsl-social-row {
  gap: 13px !important;
  margin-bottom: 22px !important;
}

.tsl-footer-pro__brand p:not(:first-of-type),
.tsl-footer-pro__disclaimer {
  max-width: 330px !important;
  line-height: 1.55 !important;
}

.tsl-footer-pro__copyright,
.tsl-footer-pro small {
  max-width: 330px !important;
}

.tsl-footer-pro__col h3,
.tsl-footer-pro nav h3 {
  margin-bottom: 13px !important;
}

.tsl-footer-pro__col a,
.tsl-footer-pro nav a {
  margin-bottom: 10px !important;
}

@media (max-width: 980px) {
  .tsl-footer-pro__inner {
    grid-template-columns: 1fr 1fr !important;
    gap: 30px 42px !important;
  }

  .tsl-footer-pro__brand {
    grid-column: 1 / -1 !important;
    max-width: 430px !important;
  }
}

@media (max-width: 640px) {
  .tsl-footer-pro__inner {
    grid-template-columns: 1fr !important;
    gap: 24px !important;
  }

  .tsl-footer-pro__brand {
    max-width: 100% !important;
  }
}

/* =========================================================
   TSL FAT FOOTER
   Larger fintech-style footer for navigation, education, trust, legal.
   ========================================================= */

.tsl-footer-pro {
  background: #eef3f9 !important;
  border-top: 1px solid rgba(15, 23, 42, 0.08) !important;
  margin-top: 0 !important;
}

.tsl-footer-pro__inner--fat {
  box-sizing: border-box !important;
  max-width: 1120px !important;
  width: 100% !important;
  margin: 0 auto !important;
  padding: 52px var(--tsl-page-pad) 52px !important;
  display: grid !important;
  grid-template-columns: minmax(300px, 1.45fr) repeat(5, minmax(120px, 0.75fr)) !important;
  gap: 34px !important;
  align-items: start !important;
}

.tsl-footer-pro__brand {
  max-width: 330px !important;
}

.tsl-footer-logo {
  margin: 0 0 8px !important;
  color: var(--tsl-text) !important;
  font-size: 24px !important;
  line-height: 1.05 !important;
  letter-spacing: -0.05em !important;
  font-weight: 900 !important;
}

.tsl-footer-pro__tagline {
  max-width: 310px !important;
  margin: 0 0 14px !important;
  color: var(--tsl-sub) !important;
  font-size: 14px !important;
  line-height: 1.5 !important;
}

.tsl-footer-social {
  display: flex !important;
  align-items: center !important;
  flex-wrap: nowrap !important;
  gap: 13px !important;
  margin: 0 0 22px !important;
}

.tsl-footer-social a {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 19px !important;
  height: 19px !important;
  color: #64748b !important;
  text-decoration: none !important;
  font-size: 18px !important;
  line-height: 1 !important;
  opacity: 0.95 !important;
}

.tsl-footer-social a:hover {
  color: var(--tsl-blue) !important;
  opacity: 1 !important;
}

.tsl-footer-pro__disclaimer {
  max-width: 320px !important;
  margin: 0 0 12px !important;
  color: var(--tsl-sub) !important;
  font-size: 12px !important;
  line-height: 1.55 !important;
}

.tsl-footer-pro__copyright {
  display: block !important;
  max-width: 320px !important;
  margin-top: 8px !important;
  color: var(--tsl-sub) !important;
  font-size: 12px !important;
  line-height: 1.45 !important;
}

.tsl-footer-pro__col {
  min-width: 0 !important;
}

.tsl-footer-pro__col h3 {
  margin: 0 0 14px !important;
  color: var(--tsl-text) !important;
  font-size: 12px !important;
  line-height: 1.2 !important;
  letter-spacing: 0.09em !important;
  text-transform: uppercase !important;
  font-weight: 900 !important;
}

.tsl-footer-pro__col a {
  display: block !important;
  margin: 0 0 10px !important;
  color: var(--tsl-sub) !important;
  font-size: 14px !important;
  line-height: 1.35 !important;
  text-decoration: none !important;
}

.tsl-footer-pro__col a:hover {
  color: var(--tsl-blue) !important;
}

@media (max-width: 1100px) {
  .tsl-footer-pro__inner--fat {
    grid-template-columns: minmax(280px, 1.2fr) repeat(3, minmax(140px, 1fr)) !important;
    gap: 34px 42px !important;
  }

  .tsl-footer-pro__brand {
    grid-row: span 2 !important;
  }
}

@media (max-width: 760px) {
  .tsl-footer-pro__inner--fat {
    grid-template-columns: 1fr 1fr !important;
    gap: 30px 36px !important;
    padding: 42px 16px 44px !important;
  }

  .tsl-footer-pro__brand {
    grid-column: 1 / -1 !important;
    grid-row: auto !important;
    max-width: 420px !important;
  }
}

@media (max-width: 520px) {
  .tsl-footer-pro__inner--fat {
    grid-template-columns: 1fr !important;
    gap: 24px !important;
  }
}

/* =========================================================
   TSL FAT FOOTER V2
   Unique footer system. Does not depend on old footer classes.
   ========================================================= */

.tsl-fat-footer {
  background: #eef3f9 !important;
  border-top: 1px solid rgba(15, 23, 42, 0.08) !important;
  margin-top: 0 !important;
}

.tsl-fat-footer__inner {
  box-sizing: border-box !important;
  max-width: 1120px !important;
  width: 100% !important;
  margin: 0 auto !important;
  padding: 54px var(--tsl-page-pad) 54px !important;
  display: grid !important;
  grid-template-columns: minmax(280px, 1.35fr) repeat(5, minmax(120px, 0.75fr)) !important;
  gap: 32px !important;
  align-items: start !important;
}

.tsl-fat-footer__brand {
  max-width: 330px !important;
}

.tsl-fat-footer__logo {
  margin: 0 0 8px !important;
  color: var(--tsl-text) !important;
  font-size: 24px !important;
  line-height: 1.05 !important;
  letter-spacing: -0.05em !important;
  font-weight: 900 !important;
}

.tsl-fat-footer__tagline {
  max-width: 310px !important;
  margin: 0 0 14px !important;
  color: var(--tsl-sub) !important;
  font-size: 14px !important;
  line-height: 1.5 !important;
}

.tsl-fat-footer__social {
  display: flex !important;
  align-items: center !important;
  gap: 13px !important;
  margin: 0 0 22px !important;
}

.tsl-fat-footer__social a {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 19px !important;
  height: 19px !important;
  color: #64748b !important;
  text-decoration: none !important;
  font-size: 16px !important;
  line-height: 1 !important;
  font-weight: 800 !important;
}

.tsl-fat-footer__social a:hover {
  color: var(--tsl-blue) !important;
}

.tsl-fat-footer__disclaimer,
.tsl-fat-footer small {
  display: block !important;
  max-width: 320px !important;
  color: var(--tsl-sub) !important;
  font-size: 12px !important;
  line-height: 1.55 !important;
}

.tsl-fat-footer__disclaimer {
  margin: 0 0 12px !important;
}

.tsl-fat-footer__group h3 {
  margin: 0 0 14px !important;
  color: var(--tsl-text) !important;
  font-size: 12px !important;
  line-height: 1.2 !important;
  letter-spacing: 0.09em !important;
  text-transform: uppercase !important;
  font-weight: 900 !important;
}

.tsl-fat-footer__group a {
  display: block !important;
  margin: 0 0 10px !important;
  color: var(--tsl-sub) !important;
  font-size: 14px !important;
  line-height: 1.35 !important;
  text-decoration: none !important;
}

.tsl-fat-footer__group a:hover {
  color: var(--tsl-blue) !important;
}

@media (max-width: 1100px) {
  .tsl-fat-footer__inner {
    grid-template-columns: minmax(260px, 1.2fr) repeat(3, minmax(140px, 1fr)) !important;
    gap: 34px 42px !important;
  }

  .tsl-fat-footer__brand {
    grid-row: span 2 !important;
  }
}

@media (max-width: 760px) {
  .tsl-fat-footer__inner {
    grid-template-columns: 1fr 1fr !important;
    gap: 30px 36px !important;
    padding: 42px 16px 44px !important;
  }

  .tsl-fat-footer__brand {
    grid-column: 1 / -1 !important;
    grid-row: auto !important;
    max-width: 430px !important;
  }
}

@media (max-width: 520px) {
  .tsl-fat-footer__inner {
    grid-template-columns: 1fr !important;
    gap: 24px !important;
  }
}

/* =========================================================
   TSL FOOTER V3 â€” TradingView-style grouped footer
   Left brand column + 4 navigation columns with stacked sections.
   ========================================================= */

.tsl-tv-footer {
  background: #eef3f9 !important;
  border-top: 1px solid rgba(15, 23, 42, 0.08) !important;
  margin-top: 0 !important;
}

.tsl-tv-footer__inner {
  box-sizing: border-box !important;
  max-width: 1120px !important;
  width: 100% !important;
  margin: 0 auto !important;
  padding: 58px var(--tsl-page-pad) 58px !important;
  display: grid !important;
  grid-template-columns: minmax(270px, 1.2fr) repeat(4, minmax(150px, 1fr)) !important;
  gap: 48px !important;
  align-items: start !important;
}

.tsl-tv-footer__brand {
  max-width: 310px !important;
}

.tsl-tv-footer__logo {
  margin: 0 0 8px !important;
  color: var(--tsl-text) !important;
  font-size: 25px !important;
  line-height: 1.05 !important;
  letter-spacing: -0.055em !important;
  font-weight: 900 !important;
}

.tsl-tv-footer__tagline {
  max-width: 300px !important;
  margin: 0 0 18px !important;
  color: var(--tsl-text) !important;
  font-size: 15px !important;
  line-height: 1.5 !important;
}

.tsl-tv-footer__social {
  display: flex !important;
  flex-wrap: wrap !important;
  align-items: center !important;
  gap: 14px 16px !important;
  margin: 0 0 26px !important;
  max-width: 190px !important;
}

.tsl-tv-footer__social a {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 21px !important;
  height: 21px !important;
  color: #64748b !important;
  text-decoration: none !important;
  font-size: 17px !important;
  line-height: 1 !important;
  font-weight: 900 !important;
}

.tsl-tv-footer__social a:hover {
  color: var(--tsl-blue) !important;
}

.tsl-tv-footer__social svg {
  width: 21px !important;
  height: 21px !important;
  stroke: currentColor !important;
  fill: none !important;
  stroke-width: 2 !important;
}

.tsl-tv-footer__social svg path {
  fill: currentColor !important;
  stroke: none !important;
}

.tsl-tv-footer__disclaimer,
.tsl-tv-footer small {
  display: block !important;
  max-width: 310px !important;
  color: var(--tsl-sub) !important;
  font-size: 12px !important;
  line-height: 1.55 !important;
}

.tsl-tv-footer__disclaimer {
  margin: 0 0 12px !important;
}

.tsl-tv-footer__col {
  min-width: 0 !important;
}

.tsl-tv-footer__col h3 {
  margin: 0 0 10px !important;
  color: var(--tsl-muted) !important;
  font-size: 12px !important;
  line-height: 1.2 !important;
  letter-spacing: 0.06em !important;
  text-transform: uppercase !important;
  font-weight: 800 !important;
}

.tsl-tv-footer__col h3:not(:first-child) {
  margin-top: 28px !important;
}

.tsl-tv-footer__col a {
  display: block !important;
  margin: 0 0 8px !important;
  color: var(--tsl-text) !important;
  font-size: 14px !important;
  line-height: 1.35 !important;
  text-decoration: none !important;
}

.tsl-tv-footer__col a:hover {
  color: var(--tsl-blue) !important;
}

@media (max-width: 1100px) {
  .tsl-tv-footer__inner {
    grid-template-columns: minmax(260px, 1.1fr) repeat(3, minmax(150px, 1fr)) !important;
    gap: 42px !important;
  }
}

@media (max-width: 820px) {
  .tsl-tv-footer__inner {
    grid-template-columns: 1fr 1fr !important;
    gap: 36px 44px !important;
    padding: 46px 16px 48px !important;
  }

  .tsl-tv-footer__brand {
    grid-column: 1 / -1 !important;
    max-width: 430px !important;
  }

  .tsl-tv-footer__social {
    max-width: 260px !important;
  }
}

@media (max-width: 520px) {
  .tsl-tv-footer__inner {
    grid-template-columns: 1fr !important;
    gap: 28px !important;
  }

  .tsl-tv-footer__col h3:not(:first-child) {
    margin-top: 22px !important;
  }
}

/* =========================================================
   TSL FOOTER SOCIAL ICON RESTORE
   Brings back clean icon-style footer socials.
   ========================================================= */

.tsl-tv-footer__social {
  display: flex !important;
  flex-wrap: nowrap !important;
  align-items: center !important;
  gap: 14px !important;
  margin: 0 0 26px !important;
  max-width: 260px !important;
}

.tsl-tv-footer__social a {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 21px !important;
  height: 21px !important;
  color: #64748b !important;
  text-decoration: none !important;
  opacity: 0.96 !important;
  transition: color 140ms ease, opacity 140ms ease, transform 140ms ease !important;
}

.tsl-tv-footer__social a:hover {
  color: var(--tsl-blue) !important;
  opacity: 1 !important;
  transform: translateY(-1px) !important;
}

.tsl-tv-footer__social svg {
  width: 21px !important;
  height: 21px !important;
  display: block !important;
}

.tsl-tv-footer__social svg circle,
.tsl-tv-footer__social svg rect {
  fill: none !important;
  stroke: currentColor !important;
  stroke-width: 2 !important;
}

.tsl-tv-footer__social svg path {
  fill: none !important;
  stroke: currentColor !important;
  stroke-width: 2 !important;
  stroke-linecap: round !important;
  stroke-linejoin: round !important;
}

/* Filled icons that need stronger thumbnail weight */
.tsl-tv-footer__social a[aria-label="Facebook"] svg circle,
.tsl-tv-footer__social a[aria-label="Pinterest"] svg circle,
.tsl-tv-footer__social a[aria-label="YouTube"] svg rect {
  fill: currentColor !important;
  stroke: none !important;
}

.tsl-tv-footer__social a[aria-label="Facebook"] svg path,
.tsl-tv-footer__social a[aria-label="Pinterest"] svg path,
.tsl-tv-footer__social a[aria-label="YouTube"] svg path {
  fill: #eef3f9 !important;
  stroke: none !important;
}

/* =========================================================
   TSL ORIGINAL FILLED SOCIAL ICONS
   Use the older filled SVG icon style, not outline approximations.
   ========================================================= */

.tsl-tv-footer__social {
  display: flex !important;
  flex-wrap: wrap !important;
  align-items: center !important;
  gap: 13px 15px !important;
  margin: 0 0 26px !important;
  max-width: 210px !important;
}

.tsl-tv-footer__social a {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 20px !important;
  height: 20px !important;
  color: #64748b !important;
  text-decoration: none !important;
  opacity: 0.96 !important;
  transition: color 140ms ease, opacity 140ms ease, transform 140ms ease !important;
}

.tsl-tv-footer__social a:hover {
  color: var(--tsl-blue) !important;
  opacity: 1 !important;
  transform: translateY(-1px) !important;
}

.tsl-tv-footer__social svg {
  width: 20px !important;
  height: 20px !important;
  display: block !important;
  color: currentColor !important;
  fill: currentColor !important;
  stroke: none !important;
}

.tsl-tv-footer__social svg circle,
.tsl-tv-footer__social svg rect,
.tsl-tv-footer__social svg path {
  fill: currentColor !important;
  stroke: none !important;
}

/* =========================================================
   TSL FOOTER SOCIAL ICON VISIBILITY FIX
   Fixes Facebook / YouTube / Pinterest paths hidden by older CSS.
   ========================================================= */

.tsl-tv-footer__social a[aria-label="Facebook"] svg path,
.tsl-tv-footer__social a[aria-label="YouTube"] svg path,
.tsl-tv-footer__social a[aria-label="Pinterest"] svg path,
.tsl-tv-footer__social a[aria-label="Facebook"] svg circle,
.tsl-tv-footer__social a[aria-label="YouTube"] svg rect,
.tsl-tv-footer__social a[aria-label="Pinterest"] svg circle {
  fill: currentColor !important;
  stroke: none !important;
}

.tsl-tv-footer__social svg,
.tsl-tv-footer__social svg path,
.tsl-tv-footer__social svg circle,
.tsl-tv-footer__social svg rect {
  color: currentColor !important;
}

.tsl-tv-footer__social a {
  color: #64748b !important;
}

.tsl-tv-footer__social a:hover {
  color: var(--tsl-blue) !important;
}

/* =========================================================
   TSL FOOTER SOCIAL ICONS FINAL HARD RESET
   Restores old filled SVG social icons and overrides all older
   outline / background-color fill rules.
   ========================================================= */

.tsl-tv-footer__social,
.tsl-footer-social {
  display: flex !important;
  flex-wrap: wrap !important;
  align-items: center !important;
  gap: 13px 15px !important;
  margin: 0 0 26px !important;
  max-width: 220px !important;
}

.tsl-tv-footer__social a,
.tsl-footer-social a {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 20px !important;
  height: 20px !important;
  color: #64748b !important;
  text-decoration: none !important;
  opacity: 0.96 !important;
  transition: color 140ms ease, opacity 140ms ease, transform 140ms ease !important;
}

.tsl-tv-footer__social a:hover,
.tsl-footer-social a:hover {
  color: var(--tsl-blue) !important;
  opacity: 1 !important;
  transform: translateY(-1px) !important;
}

html body footer .tsl-tv-footer__social a svg,
html body footer .tsl-footer-social a svg,
html body footer .tsl-tv-footer__social a svg *,
html body footer .tsl-footer-social a svg * {
  width: 20px !important;
  height: 20px !important;
  display: block !important;
  fill: currentColor !important;
  stroke: none !important;
  color: currentColor !important;
}

html body footer .tsl-tv-footer__social a[aria-label="Facebook"] svg *,
html body footer .tsl-tv-footer__social a[aria-label="YouTube"] svg *,
html body footer .tsl-tv-footer__social a[aria-label="Pinterest"] svg *,
html body footer .tsl-footer-social a[aria-label="Facebook"] svg *,
html body footer .tsl-footer-social a[aria-label="YouTube"] svg *,
html body footer .tsl-footer-social a[aria-label="Pinterest"] svg * {
  fill: currentColor !important;
  stroke: none !important;
}

/* =========================================================
   TSL FOOTER SOCIAL ICONS FINAL HARD RESET
   Restores old filled SVG social icons and overrides all older
   outline / background-color fill rules.
   ========================================================= */

.tsl-tv-footer__social,
.tsl-footer-social {
  display: flex !important;
  flex-wrap: wrap !important;
  align-items: center !important;
  gap: 13px 15px !important;
  margin: 0 0 26px !important;
  max-width: 220px !important;
}

.tsl-tv-footer__social a,
.tsl-footer-social a {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 20px !important;
  height: 20px !important;
  color: #64748b !important;
  text-decoration: none !important;
  opacity: 0.96 !important;
  transition: color 140ms ease, opacity 140ms ease, transform 140ms ease !important;
}

.tsl-tv-footer__social a:hover,
.tsl-footer-social a:hover {
  color: var(--tsl-blue) !important;
  opacity: 1 !important;
  transform: translateY(-1px) !important;
}

html body footer .tsl-tv-footer__social a svg,
html body footer .tsl-footer-social a svg,
html body footer .tsl-tv-footer__social a svg *,
html body footer .tsl-footer-social a svg * {
  width: 20px !important;
  height: 20px !important;
  display: block !important;
  fill: currentColor !important;
  stroke: none !important;
  color: currentColor !important;
}

html body footer .tsl-tv-footer__social a[aria-label="Facebook"] svg *,
html body footer .tsl-tv-footer__social a[aria-label="YouTube"] svg *,
html body footer .tsl-tv-footer__social a[aria-label="Pinterest"] svg *,
html body footer .tsl-footer-social a[aria-label="Facebook"] svg *,
html body footer .tsl-footer-social a[aria-label="YouTube"] svg *,
html body footer .tsl-footer-social a[aria-label="Pinterest"] svg * {
  fill: currentColor !important;
  stroke: none !important;
}

/* =========================================================
   TSL DAILY ASSET SNAPSHOT â€” subtle five-model summary
   Applies to daily asset summaries with 5 model cards.
   Keeps future daily reads visually consistent.
   ========================================================= */

/* Target model grids that contain the five daily model layers */
.tsl-clean-main .tsl-model-grid:has(> .tsl-model-card:nth-child(5)) {
  display: grid !important;
  grid-template-columns: repeat(2, minmax(220px, 1fr)) !important;
  gap: 12px !important;
  margin: 22px 0 28px !important;
}

/* Make daily snapshot cards calmer than hub/navigation cards */
.tsl-clean-main .tsl-model-grid:has(> .tsl-model-card:nth-child(5)) > .tsl-model-card {
  min-height: 0 !important;
  padding: 15px 16px 15px 18px !important;
  border-radius: 14px !important;
  background: rgba(255, 255, 255, 0.66) !important;
  border: 1px solid rgba(37, 99, 235, 0.13) !important;
  box-shadow: none !important;
}

/* Replace heavy blue bar with a thinner signal rail */
.tsl-clean-main .tsl-model-grid:has(> .tsl-model-card:nth-child(5)) > .tsl-model-card::before {
  top: 14px !important;
  bottom: 14px !important;
  left: 0 !important;
  width: 2px !important;
  border-radius: 999px !important;
  background: rgba(37, 99, 235, 0.62) !important;
}

/* Small model label */
.tsl-clean-main .tsl-model-grid:has(> .tsl-model-card:nth-child(5)) .tsl-model-label {
  margin-bottom: 7px !important;
  color: var(--tsl-blue) !important;
  font-size: 10px !important;
  line-height: 1.15 !important;
  letter-spacing: 0.12em !important;
  font-weight: 850 !important;
}

/* Main status line */
.tsl-clean-main .tsl-model-grid:has(> .tsl-model-card:nth-child(5)) .tsl-model-card strong,
.tsl-clean-main .tsl-model-grid:has(> .tsl-model-card:nth-child(5)) .tsl-model-card b {
  color: #0f766e !important;
  font-size: 14px !important;
  line-height: 1.3 !important;
  font-weight: 850 !important;
}

/* Risk/caution wording should still stand out, but less aggressively */
.tsl-clean-main .tsl-model-grid:has(> .tsl-model-card:nth-child(5)) .tsl-model-card strong[style*="red"],
.tsl-clean-main .tsl-model-grid:has(> .tsl-model-card:nth-child(5)) .tsl-model-card b[style*="red"] {
  color: #dc2626 !important;
}

/* Supporting metric text */
.tsl-clean-main .tsl-model-grid:has(> .tsl-model-card:nth-child(5)) .tsl-model-card p {
  margin: 4px 0 0 !important;
  color: var(--tsl-sub) !important;
  font-size: 13px !important;
  line-height: 1.45 !important;
}

/* The outer daily summary card should also feel calmer */
.tsl-clean-main .tsl-summary-card,
.tsl-clean-main .tsl-daily-card,
.tsl-clean-main .tsl-symbol-card,
.tsl-clean-main .tsl-asset-card {
  box-shadow: 0 12px 34px rgba(15, 23, 42, 0.045) !important;
  border-color: rgba(15, 23, 42, 0.10) !important;
}

/* Related educational reads: lighter than main cards */
.tsl-clean-main .tsl-related,
.tsl-clean-main .tsl-related-grid {
  gap: 12px !important;
}

.tsl-clean-main .tsl-related a,
.tsl-clean-main .tsl-related-card {
  background: rgba(255, 255, 255, 0.72) !important;
  border: 1px solid rgba(37, 99, 235, 0.12) !important;
  box-shadow: none !important;
  border-radius: 14px !important;
}

.tsl-clean-main .tsl-related a::before,
.tsl-clean-main .tsl-related-card::before {
  width: 2px !important;
  opacity: 0.65 !important;
}

/* Mobile: keep snapshot clean and stacked */
@media (max-width: 760px) {
  .tsl-clean-main .tsl-model-grid:has(> .tsl-model-card:nth-child(5)) {
    grid-template-columns: 1fr !important;
    gap: 10px !important;
  }

  .tsl-clean-main .tsl-model-grid:has(> .tsl-model-card:nth-child(5)) > .tsl-model-card {
    padding: 14px 15px 14px 17px !important;
  }
}

/* =========================================================
   TSL DAILY ASSET SNAPSHOT V2
   Premium compact fintech snapshot:
   - one parent asset card
   - five subtle model tiles
   - less "cards inside card" feeling
   ========================================================= */

/* Parent asset snapshot card */
.tsl-clean-main .tsl-summary-card,
.tsl-clean-main .tsl-daily-card,
.tsl-clean-main .tsl-symbol-card,
.tsl-clean-main .tsl-asset-card {
  background: #ffffff !important;
  border: 1px solid rgba(15, 23, 42, 0.10) !important;
  box-shadow: 0 14px 36px rgba(15, 23, 42, 0.045) !important;
  border-radius: 18px !important;
}

/* Five-model grid: compact dashboard strip */
.tsl-clean-main .tsl-model-grid:has(> .tsl-model-card:nth-child(5)) {
  display: grid !important;
  grid-template-columns: repeat(5, minmax(112px, 1fr)) !important;
  gap: 10px !important;
  margin: 22px 0 28px !important;
}

/* Inner model tiles: flatter, lighter, less card-like */
.tsl-clean-main .tsl-model-grid:has(> .tsl-model-card:nth-child(5)) > .tsl-model-card {
  min-height: 96px !important;
  padding: 14px 13px !important;
  border-radius: 10px !important;
  background: #f5f8fc !important;
  border: 1px solid rgba(15, 23, 42, 0.075) !important;
  box-shadow: none !important;
}

/* Remove the thick vertical card rail */
.tsl-clean-main .tsl-model-grid:has(> .tsl-model-card:nth-child(5)) > .tsl-model-card::before {
  display: none !important;
}

/* Small model label */
.tsl-clean-main .tsl-model-grid:has(> .tsl-model-card:nth-child(5)) .tsl-model-label {
  display: block !important;
  margin: 0 0 8px !important;
  color: #64748b !important;
  font-size: 9.5px !important;
  line-height: 1.15 !important;
  letter-spacing: 0.10em !important;
  text-transform: uppercase !important;
  font-weight: 800 !important;
}

/* Main signal line */
.tsl-clean-main .tsl-model-grid:has(> .tsl-model-card:nth-child(5)) .tsl-model-card strong,
.tsl-clean-main .tsl-model-grid:has(> .tsl-model-card:nth-child(5)) .tsl-model-card b {
  display: block !important;
  margin: 0 0 5px !important;
  color: #0f766e !important;
  font-size: 13.5px !important;
  line-height: 1.25 !important;
  font-weight: 850 !important;
}

/* Risk/caution status should be visible but not screaming */
.tsl-clean-main .tsl-model-grid:has(> .tsl-model-card:nth-child(5)) .tsl-model-card strong[style*="red"],
.tsl-clean-main .tsl-model-grid:has(> .tsl-model-card:nth-child(5)) .tsl-model-card b[style*="red"] {
  color: #dc2626 !important;
}

/* Supporting metric text */
.tsl-clean-main .tsl-model-grid:has(> .tsl-model-card:nth-child(5)) .tsl-model-card p {
  margin: 0 !important;
  color: #475569 !important;
  font-size: 12px !important;
  line-height: 1.38 !important;
}

/* Watchlist badge/button inside snapshot */
.tsl-clean-main .tsl-summary-card .tsl-pill,
.tsl-clean-main .tsl-daily-card .tsl-pill,
.tsl-clean-main .tsl-symbol-card .tsl-pill,
.tsl-clean-main .tsl-asset-card .tsl-pill {
  box-shadow: none !important;
  border-color: rgba(37, 99, 235, 0.18) !important;
  background: rgba(37, 99, 235, 0.07) !important;
}

/* Related educational reads: make them feel like subtle links, not another card wall */
.tsl-clean-main .tsl-related a,
.tsl-clean-main .tsl-related-card {
  background: #ffffff !important;
  border: 1px solid rgba(15, 23, 42, 0.08) !important;
  box-shadow: none !important;
  border-radius: 14px !important;
  padding: 18px 18px !important;
}

.tsl-clean-main .tsl-related a::before,
.tsl-clean-main .tsl-related-card::before {
  width: 2px !important;
  opacity: 0.55 !important;
}

/* Tablet/mobile */
@media (max-width: 980px) {
  .tsl-clean-main .tsl-model-grid:has(> .tsl-model-card:nth-child(5)) {
    grid-template-columns: repeat(2, minmax(180px, 1fr)) !important;
  }
}

@media (max-width: 560px) {
  .tsl-clean-main .tsl-model-grid:has(> .tsl-model-card:nth-child(5)) {
    grid-template-columns: 1fr !important;
  }

  .tsl-clean-main .tsl-model-grid:has(> .tsl-model-card:nth-child(5)) > .tsl-model-card {
    min-height: 0 !important;
  }
}

/* =========================================================
   TSL DAILY ASSET SNAPSHOT V3
   One premium asset card + compact signal table inside.
   Removes the "cards inside a card" feeling.
   Reusable for all future daily asset pages.
   ========================================================= */

/* Parent snapshot stays the only real card */
.tsl-clean-main .tsl-summary-card,
.tsl-clean-main .tsl-daily-card,
.tsl-clean-main .tsl-symbol-card,
.tsl-clean-main .tsl-asset-card {
  background: #ffffff !important;
  border: 1px solid rgba(15, 23, 42, 0.10) !important;
  box-shadow: 0 14px 36px rgba(15, 23, 42, 0.045) !important;
  border-radius: 18px !important;
}

/* Daily five-model grid becomes a signal table, not nested cards */
.tsl-clean-main .tsl-model-grid:has(> .tsl-model-card:nth-child(5)) {
  display: grid !important;
  grid-template-columns: repeat(5, minmax(105px, 1fr)) !important;
  gap: 0 !important;
  margin: 22px 0 28px !important;
  padding: 0 !important;
  border: 1px solid rgba(15, 23, 42, 0.08) !important;
  border-radius: 14px !important;
  background: #f8fbff !important;
  overflow: hidden !important;
}

/* Inner cells are table cells, not cards */
.tsl-clean-main .tsl-model-grid:has(> .tsl-model-card:nth-child(5)) > .tsl-model-card {
  min-height: 112px !important;
  padding: 16px 14px !important;
  border: 0 !important;
  border-radius: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  border-right: 1px solid rgba(15, 23, 42, 0.075) !important;
}

/* Remove final divider */
.tsl-clean-main .tsl-model-grid:has(> .tsl-model-card:nth-child(5)) > .tsl-model-card:nth-child(5) {
  border-right: 0 !important;
}

/* Remove blue rails entirely */
.tsl-clean-main .tsl-model-grid:has(> .tsl-model-card:nth-child(5)) > .tsl-model-card::before {
  display: none !important;
}

/* Small model labels */
.tsl-clean-main .tsl-model-grid:has(> .tsl-model-card:nth-child(5)) .tsl-model-label {
  display: block !important;
  margin: 0 0 9px !important;
  color: #64748b !important;
  font-size: 9px !important;
  line-height: 1.15 !important;
  letter-spacing: 0.12em !important;
  text-transform: uppercase !important;
  font-weight: 800 !important;
}

/* Main signal line */
.tsl-clean-main .tsl-model-grid:has(> .tsl-model-card:nth-child(5)) .tsl-model-card strong,
.tsl-clean-main .tsl-model-grid:has(> .tsl-model-card:nth-child(5)) .tsl-model-card b {
  display: block !important;
  margin: 0 0 5px !important;
  color: #0f766e !important;
  font-size: 13.5px !important;
  line-height: 1.25 !important;
  font-weight: 850 !important;
}

/* Defensive/risk status */
.tsl-clean-main .tsl-model-grid:has(> .tsl-model-card:nth-child(5)) .tsl-model-card strong[style*="red"],
.tsl-clean-main .tsl-model-grid:has(> .tsl-model-card:nth-child(5)) .tsl-model-card b[style*="red"] {
  color: #dc2626 !important;
}

/* Supporting metric text */
.tsl-clean-main .tsl-model-grid:has(> .tsl-model-card:nth-child(5)) .tsl-model-card p {
  margin: 0 !important;
  color: #475569 !important;
  font-size: 11.5px !important;
  line-height: 1.42 !important;
}

/* Related educational reads should be subtle, not heavy cards */
.tsl-clean-main .tsl-related a,
.tsl-clean-main .tsl-related-card {
  background: rgba(255, 255, 255, 0.78) !important;
  border: 1px solid rgba(15, 23, 42, 0.08) !important;
  box-shadow: none !important;
  border-radius: 14px !important;
  padding: 18px 18px !important;
}

.tsl-clean-main .tsl-related a::before,
.tsl-clean-main .tsl-related-card::before {
  width: 2px !important;
  opacity: 0.45 !important;
}

/* Tablet: 2 columns, still table-like */
@media (max-width: 980px) {
  .tsl-clean-main .tsl-model-grid:has(> .tsl-model-card:nth-child(5)) {
    grid-template-columns: repeat(2, minmax(180px, 1fr)) !important;
  }

  .tsl-clean-main .tsl-model-grid:has(> .tsl-model-card:nth-child(5)) > .tsl-model-card {
    border-right: 1px solid rgba(15, 23, 42, 0.075) !important;
    border-bottom: 1px solid rgba(15, 23, 42, 0.075) !important;
  }

  .tsl-clean-main .tsl-model-grid:has(> .tsl-model-card:nth-child(5)) > .tsl-model-card:nth-child(even) {
    border-right: 0 !important;
  }

  .tsl-clean-main .tsl-model-grid:has(> .tsl-model-card:nth-child(5)) > .tsl-model-card:nth-last-child(-n+1) {
    border-bottom: 0 !important;
  }
}

/* Mobile: single stacked signal list */
@media (max-width: 560px) {
  .tsl-clean-main .tsl-model-grid:has(> .tsl-model-card:nth-child(5)) {
    grid-template-columns: 1fr !important;
  }

  .tsl-clean-main .tsl-model-grid:has(> .tsl-model-card:nth-child(5)) > .tsl-model-card {
    min-height: 0 !important;
    border-right: 0 !important;
    border-bottom: 1px solid rgba(15, 23, 42, 0.075) !important;
  }

  .tsl-clean-main .tsl-model-grid:has(> .tsl-model-card:nth-child(5)) > .tsl-model-card:last-child {
    border-bottom: 0 !important;
  }
}

/* =========================================================
   TSL DAILY ASSET SNAPSHOT V3 FINAL POLISH
   Keep the signal-table direction, reduce visual bulk.
   ========================================================= */

.tsl-clean-main .tsl-model-grid:has(> .tsl-model-card:nth-child(5)) {
  margin: 20px 0 18px !important;
}

.tsl-clean-main .tsl-model-grid:has(> .tsl-model-card:nth-child(5)) > .tsl-model-card {
  min-height: 96px !important;
  padding: 15px 13px 14px !important;
}

.tsl-clean-main .tsl-model-grid:has(> .tsl-model-card:nth-child(5)) .tsl-model-card strong,
.tsl-clean-main .tsl-model-grid:has(> .tsl-model-card:nth-child(5)) .tsl-model-card b {
  font-size: 13px !important;
  line-height: 1.22 !important;
  letter-spacing: -0.01em !important;
}

.tsl-clean-main .tsl-model-grid:has(> .tsl-model-card:nth-child(5)) .tsl-model-card p {
  font-size: 11.5px !important;
  line-height: 1.35 !important;
}

.tsl-clean-main .tsl-summary-card,
.tsl-clean-main .tsl-daily-card,
.tsl-clean-main .tsl-symbol-card,
.tsl-clean-main .tsl-asset-card {
  padding-bottom: 28px !important;
}



/* =========================================================
   TSL WEB AUTH + WATCHLIST SHELL
   Static web Phase 1: Firebase sign-in UI, account state,
   and watchlist preview shell.
   ========================================================= */

.tsl-auth-shell .tsl-auth-hero {
  padding-bottom: 18px !important;
}

.tsl-auth-card,
.tsl-watchlist-panel {
  max-width: 760px !important;
  margin: -8px auto 92px !important;
  background: #ffffff !important;
  border: 1px solid rgba(15, 23, 42, 0.10) !important;
  border-radius: 22px !important;
  box-shadow: 0 20px 50px rgba(15, 23, 42, 0.055) !important;
  padding: 32px !important;
}

.tsl-auth-card-head h2,
.tsl-watchlist-panel h2 {
  margin: 0 0 8px !important;
  font-size: 30px !important;
  line-height: 1.05 !important;
  letter-spacing: -0.045em !important;
  color: var(--tsl-text) !important;
}

.tsl-auth-card-head p,
.tsl-watchlist-panel p {
  margin: 0 0 22px !important;
  color: var(--tsl-sub) !important;
  line-height: 1.6 !important;
  font-size: 16px !important;
}

.tsl-auth-google {
  width: 100% !important;
  min-height: 48px !important;
  border: 1px solid rgba(15, 23, 42, 0.12) !important;
  background: #ffffff !important;
  color: var(--tsl-text) !important;
  border-radius: 999px !important;
  font-weight: 850 !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 10px !important;
  cursor: pointer !important;
  box-shadow: 0 10px 24px rgba(15, 23, 42, 0.045) !important;
}

.tsl-auth-google:hover {
  border-color: rgba(37, 99, 235, 0.25) !important;
  transform: translateY(-1px) !important;
}

.tsl-auth-google-dot {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 22px !important;
  height: 22px !important;
  border-radius: 999px !important;
  background: var(--tsl-blue) !important;
  color: #ffffff !important;
  font-size: 13px !important;
  font-weight: 900 !important;
}

.tsl-auth-divider {
  position: relative !important;
  text-align: center !important;
  margin: 22px 0 14px !important;
  color: var(--tsl-muted) !important;
  font-size: 13px !important;
}

.tsl-auth-divider::before {
  content: "" !important;
  position: absolute !important;
  left: 0 !important;
  right: 0 !important;
  top: 50% !important;
  height: 1px !important;
  background: rgba(15, 23, 42, 0.10) !important;
}

.tsl-auth-divider span {
  position: relative !important;
  background: #ffffff !important;
  padding: 0 12px !important;
}

.tsl-auth-card label {
  display: block !important;
  margin: 14px 0 7px !important;
  color: var(--tsl-text) !important;
  font-size: 13px !important;
  font-weight: 850 !important;
}

.tsl-auth-card input {
  width: 100% !important;
  box-sizing: border-box !important;
  min-height: 48px !important;
  border: 1px solid rgba(15, 23, 42, 0.14) !important;
  border-radius: 14px !important;
  padding: 11px 14px !important;
  background: #f8fbff !important;
  color: var(--tsl-text) !important;
  font-size: 15px !important;
}

.tsl-auth-card input:focus {
  outline: 3px solid rgba(37, 99, 235, 0.14) !important;
  border-color: rgba(37, 99, 235, 0.45) !important;
  background: #ffffff !important;
}

.tsl-auth-actions {
  display: flex !important;
  flex-wrap: wrap !important;
  align-items: center !important;
  gap: 12px !important;
  margin-top: 18px !important;
}

.tsl-auth-primary,
.tsl-auth-secondary,
.tsl-auth-linkbtn,
.tsl-auth-anchor,
.tsl-watchlist-account {
  min-height: 44px !important;
  border-radius: 999px !important;
  padding: 0 19px !important;
  font-weight: 850 !important;
  text-decoration: none !important;
  cursor: pointer !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
}

.tsl-auth-primary,
.tsl-auth-anchor {
  background: var(--tsl-blue) !important;
  color: #ffffff !important;
  border: 1px solid var(--tsl-blue) !important;
  box-shadow: 0 10px 24px rgba(37, 99, 235, 0.18) !important;
}

.tsl-auth-secondary,
.tsl-watchlist-account {
  background: #ffffff !important;
  color: var(--tsl-text) !important;
  border: 1px solid rgba(15, 23, 42, 0.14) !important;
}

.tsl-auth-secondary:disabled,
.tsl-auth-secondary[aria-disabled="true"] {
  color: #94a3b8 !important;
  cursor: not-allowed !important;
  opacity: 0.72 !important;
}

.tsl-auth-linkbtn {
  background: transparent !important;
  color: var(--tsl-blue) !important;
  border: 0 !important;
  padding-left: 4px !important;
  padding-right: 4px !important;
}

.tsl-auth-message {
  margin-top: 18px !important;
  min-height: 20px !important;
  color: #64748b !important;
  font-size: 13px !important;
  line-height: 1.45 !important;
}

.tsl-auth-message.ok {
  color: #047857 !important;
}

.tsl-auth-message.warn {
  color: #b45309 !important;
}

.tsl-auth-message.error {
  color: #b91c1c !important;
}

.tsl-account-grid {
  display: grid !important;
  grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  gap: 12px !important;
  margin: 20px 0 6px !important;
}

.tsl-account-grid > div {
  background: #f8fbff !important;
  border: 1px solid rgba(15, 23, 42, 0.08) !important;
  border-radius: 14px !important;
  padding: 16px !important;
}

.tsl-account-grid span {
  display: block !important;
  margin-bottom: 6px !important;
  color: var(--tsl-muted) !important;
  font-size: 11px !important;
  font-weight: 850 !important;
  letter-spacing: 0.10em !important;
  text-transform: uppercase !important;
}

.tsl-account-grid strong {
  display: block !important;
  color: var(--tsl-text) !important;
  font-size: 15px !important;
  line-height: 1.35 !important;
  overflow-wrap: anywhere !important;
}

.tsl-watchlist-topline {
  display: flex !important;
  justify-content: space-between !important;
  gap: 18px !important;
  align-items: flex-start !important;
  margin-bottom: 20px !important;
}

.tsl-watchlist-panel .tsl-model-grid {
  margin-top: 14px !important;
}

.tsl-watchlist-next {
  margin-top: 22px !important;
  padding: 18px !important;
  background: linear-gradient(135deg, rgba(37,99,235,.08), rgba(255,255,255,.85)) !important;
  border: 1px solid rgba(37, 99, 235, 0.16) !important;
  border-radius: 16px !important;
}

.tsl-watchlist-next h3 {
  margin: 0 0 6px !important;
  font-size: 20px !important;
  letter-spacing: -0.035em !important;
}

.tsl-watchlist-next p {
  margin-bottom: 0 !important;
}

@media (max-width: 760px) {
  .tsl-auth-card,
  .tsl-watchlist-panel {
    margin: -6px 16px 72px !important;
    padding: 22px !important;
  }

  .tsl-account-grid {
    grid-template-columns: 1fr !important;
  }

  .tsl-watchlist-topline {
    display: block !important;
  }

  .tsl-auth-actions {
    align-items: stretch !important;
  }

  .tsl-auth-primary,
  .tsl-auth-secondary,
  .tsl-auth-linkbtn,
  .tsl-auth-anchor {
    width: 100% !important;
  }
}


/* TSL AUTH MERGE CSS FIX */
.tsl-compatible-logo__mark, .tsl-compatible-logo__mark svg{width:32px!important;height:32px!important;max-width:32px!important;max-height:32px!important;display:inline-flex!important;flex:0 0 32px!important;}
.tsl-compatible-logo svg{width:32px!important;height:32px!important;max-width:32px!important;max-height:32px!important;}
.tsl-auth-shell{padding-top:44px!important;}


/* =========================================================
   TSL AUTH/WATCHLIST CENTRAL RHYTHM PATCH
   Keeps account/watchlist pages aligned with the public hub
   pages instead of using a separate off-center auth layout.
   ========================================================= */

.tsl-auth-shell,
.tsl-watchlist-shell {
  padding-top: var(--tsl-public-shell-top, 38px) !important;
  padding-bottom: var(--tsl-public-shell-bottom, 64px) !important;
  padding-left: var(--tsl-page-pad, 20px) !important;
  padding-right: var(--tsl-page-pad, 20px) !important;
}

.tsl-auth-shell .tsl-foundation-crumb,
.tsl-watchlist-shell .tsl-foundation-crumb {
  margin-top: 0 !important;
  margin-bottom: var(--tsl-public-crumb-mb, 18px) !important;
}

.tsl-auth-shell .tsl-foundation-kicker,
.tsl-watchlist-shell .tsl-foundation-kicker {
  display: inline-flex !important;
  align-items: center !important;
  width: fit-content !important;
  margin-top: 0 !important;
  margin-bottom: var(--tsl-public-kicker-mb, 18px) !important;
}

.tsl-auth-shell .tsl-foundation-title,
.tsl-watchlist-shell .tsl-foundation-title {
  max-width: var(--tsl-hero-title-max, 760px) !important;
  margin-top: 0 !important;
  margin-bottom: 22px !important;
  font-size: clamp(44px, 5vw, 64px) !important;
  line-height: .99 !important;
  letter-spacing: -.055em !important;
  font-weight: 850 !important;
}

.tsl-auth-shell .tsl-foundation-title span,
.tsl-watchlist-shell .tsl-foundation-title span {
  color: var(--tsl-blue, #2563eb) !important;
}

.tsl-auth-shell .tsl-foundation-deck,
.tsl-watchlist-shell .tsl-foundation-deck {
  max-width: var(--tsl-hero-deck-max, 740px) !important;
  margin-top: 0 !important;
  margin-bottom: 24px !important;
  font-size: 19px !important;
  line-height: 1.75 !important;
}

.tsl-auth-shell .tsl-auth-hero,
.tsl-watchlist-shell .tsl-foundation-hero {
  margin-top: 0 !important;
  margin-bottom: 28px !important;
  padding-bottom: 0 !important;
}

.tsl-auth-card,
.tsl-watchlist-panel {
  max-width: 760px !important;
  margin: 4px 0 92px 0 !important;
}

.tsl-auth-card-head h2,
.tsl-watchlist-panel h2 {
  font-size: 28px !important;
  letter-spacing: -.045em !important;
}

@media (max-width: 900px) {
  .tsl-auth-shell .tsl-foundation-title,
  .tsl-watchlist-shell .tsl-foundation-title {
    font-size: clamp(38px, 9vw, 54px) !important;
    line-height: 1.02 !important;
  }
}

@media (max-width: 640px) {
  .tsl-auth-shell,
  .tsl-watchlist-shell {
    padding-top: 28px !important;
    padding-left: var(--tsl-page-pad, 16px) !important;
    padding-right: var(--tsl-page-pad, 16px) !important;
  }

  .tsl-auth-shell .tsl-foundation-title,
  .tsl-watchlist-shell .tsl-foundation-title {
    font-size: clamp(34px, 10vw, 42px) !important;
  }

  .tsl-auth-shell .tsl-foundation-deck,
  .tsl-watchlist-shell .tsl-foundation-deck {
    font-size: 16px !important;
  }

  .tsl-auth-card,
  .tsl-watchlist-panel {
    margin: 0 0 72px 0 !important;
    padding: 22px !important;
  }
}


/* =========================================================
   TSL AUTH / WATCHLIST FINAL ALIGNMENT PATCH
   Purpose: make account/watchlist hero rhythm use the same
   breadcrumb, badge, title, deck, and card alignment language
   as the central public pages. Keep this at the very end.
   ========================================================= */

.tsl-auth-shell .tsl-foundation-crumb,
.tsl-watchlist-shell .tsl-foundation-crumb {
  margin-top: 0 !important;
  margin-bottom: 18px !important;
  color: var(--tsl-muted, #64748b) !important;
  font-family: var(--tsl-font, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif) !important;
  font-size: 12px !important;
  line-height: 1.45 !important;
  font-weight: 500 !important;
  letter-spacing: 0 !important;
  text-transform: none !important;
}

.tsl-auth-shell .tsl-foundation-kicker,
.tsl-watchlist-shell .tsl-foundation-kicker {
  box-sizing: border-box !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: fit-content !important;
  min-height: 30px !important;
  padding: 0 12px !important;
  margin-top: 0 !important;
  margin-bottom: 24px !important;
  border-radius: 6px !important;
  border: 1px solid rgba(37, 99, 235, 0.22) !important;
  background: rgba(37, 99, 235, 0.10) !important;
  color: var(--tsl-blue, #2563eb) !important;
  font-family: var(--tsl-font, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif) !important;
  font-size: 10px !important;
  line-height: 1 !important;
  font-weight: 850 !important;
  letter-spacing: 0.12em !important;
  text-transform: uppercase !important;
  white-space: nowrap !important;
}

.tsl-auth-shell .tsl-foundation-title,
.tsl-watchlist-shell .tsl-foundation-title {
  max-width: 780px !important;
  margin-top: 0 !important;
  margin-bottom: 20px !important;
  color: var(--tsl-text, #0f172a) !important;
  font-family: var(--tsl-font, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif) !important;
  font-size: clamp(42px, 4.8vw, 60px) !important;
  line-height: 1.01 !important;
  letter-spacing: -0.055em !important;
  font-weight: 850 !important;
}

.tsl-auth-shell .tsl-foundation-title span,
.tsl-watchlist-shell .tsl-foundation-title span {
  color: var(--tsl-blue, #2563eb) !important;
}

.tsl-auth-shell .tsl-foundation-deck,
.tsl-watchlist-shell .tsl-foundation-deck {
  max-width: 780px !important;
  margin-top: 0 !important;
  margin-bottom: 28px !important;
  color: var(--tsl-sub, #475569) !important;
  font-size: 18px !important;
  line-height: 1.75 !important;
  font-weight: 400 !important;
  letter-spacing: 0 !important;
}

.tsl-auth-shell .tsl-auth-hero,
.tsl-watchlist-shell .tsl-foundation-hero {
  margin-top: 0 !important;
  margin-bottom: 24px !important;
  padding-bottom: 0 !important;
}

.tsl-auth-card,
.tsl-watchlist-panel {
  max-width: 760px !important;
  width: 100% !important;
  margin: 0 0 92px 0 !important;
  box-sizing: border-box !important;
}

.tsl-auth-card-head h2,
.tsl-watchlist-panel h2 {
  margin-top: 0 !important;
  font-size: 28px !important;
  line-height: 1.12 !important;
  letter-spacing: -0.045em !important;
  font-weight: 850 !important;
}

@media (max-width: 760px) {
  .tsl-auth-shell .tsl-foundation-title,
  .tsl-watchlist-shell .tsl-foundation-title {
    font-size: clamp(34px, 10vw, 42px) !important;
    line-height: 1.03 !important;
  }

  .tsl-auth-shell .tsl-foundation-deck,
  .tsl-watchlist-shell .tsl-foundation-deck {
    font-size: 16px !important;
  }

  .tsl-auth-card,
  .tsl-watchlist-panel {
    margin: 0 0 72px 0 !important;
  }
}


/* =========================================================
   TSL NEW PAGES GLOBAL CONTRACT V1
   Purpose: all newly inserted public/product pages must inherit
   the same visual rhythm as the established Articles/Tools pages.
   This intentionally normalizes homepage, account, and watchlist
   away from separate "foundation" typography.
   ========================================================= */

/* New-page shells use the same max width and top/bottom rhythm as the article index. */
.tsl-foundation-shell,
.tsl-auth-shell,
.tsl-watchlist-shell {
  box-sizing: border-box !important;
  max-width: var(--tsl-page-max, 1120px) !important;
  width: 100% !important;
  margin-left: auto !important;
  margin-right: auto !important;
  padding: 38px var(--tsl-page-pad, 20px) 62px !important;
}

/* Remove extra independent hero offsets from new pages. */
.tsl-foundation-hero,
.tsl-auth-hero,
.tsl-watchlist-shell .tsl-foundation-hero {
  margin: 0 0 28px !important;
  padding: 0 !important;
  max-width: none !important;
}

/* Breadcrumb/index line: match article index, not large body text. */
.tsl-foundation-crumb,
.tsl-auth-shell .tsl-foundation-crumb,
.tsl-watchlist-shell .tsl-foundation-crumb {
  display: block !important;
  margin: 0 0 18px !important;
  padding: 0 !important;
  color: var(--tsl-muted, #64748b) !important;
  font-size: 12px !important;
  line-height: 1.35 !important;
  font-weight: 500 !important;
  letter-spacing: 0 !important;
}

/* Blue pill/category badge: match the articles hub badge. */
.tsl-foundation-kicker,
.tsl-auth-shell .tsl-foundation-kicker,
.tsl-watchlist-shell .tsl-foundation-kicker {
  display: inline-block !important;
  width: auto !important;
  margin: 0 0 16px !important;
  padding: 5px 9px !important;
  border-radius: 5px !important;
  border: 1px solid rgba(37, 99, 235, .18) !important;
  background: rgba(37, 99, 235, .08) !important;
  color: var(--tsl-blue, #2563eb) !important;
  font-size: 10px !important;
  line-height: 1.1 !important;
  letter-spacing: .12em !important;
  text-transform: uppercase !important;
  font-weight: 800 !important;
}

/* New-page H1s now use the same scale as Articles/Tools, not a separate bold style. */
.tsl-foundation-title,
.tsl-auth-shell .tsl-foundation-title,
.tsl-watchlist-shell .tsl-foundation-title {
  max-width: 790px !important;
  margin: 0 0 16px !important;
  color: var(--tsl-text, #0f172a) !important;
  font-size: clamp(2.1rem, 5vw, 3.6rem) !important;
  line-height: 1.03 !important;
  letter-spacing: -.055em !important;
  font-weight: 760 !important;
}

.tsl-foundation-title span,
.tsl-auth-shell .tsl-foundation-title span,
.tsl-watchlist-shell .tsl-foundation-title span {
  color: var(--tsl-blue, #2563eb) !important;
}

/* Deck/intro paragraph: match the established hub pages. */
.tsl-foundation-deck,
.tsl-auth-shell .tsl-foundation-deck,
.tsl-watchlist-shell .tsl-foundation-deck {
  max-width: 760px !important;
  margin: 0 0 26px !important;
  color: var(--tsl-sub, #475569) !important;
  font-size: 1.14rem !important;
  line-height: 1.75 !important;
  font-weight: 400 !important;
}

/* Account/watchlist modules should align with the page column, not float as separate templates. */
.tsl-auth-card,
.tsl-watchlist-panel {
  width: 100% !important;
  max-width: 760px !important;
  margin: 28px 0 72px !important;
}

/* Homepage sections inherit the same content width and rhythm. */
.tsl-foundation-shell .tsl-clean-section,
.tsl-foundation-shell .tsl-clean-cta {
  max-width: 100% !important;
  margin-top: 34px !important;
  margin-bottom: 34px !important;
}

.tsl-foundation-shell .tsl-clean-section h2,
.tsl-foundation-shell .tsl-clean-cta h2,
.tsl-watchlist-panel h2,
.tsl-auth-card-head h2 {
  font-size: 1.65rem !important;
  line-height: 1.2 !important;
  letter-spacing: -.035em !important;
  margin: 0 0 12px !important;
  font-weight: 800 !important;
}

.tsl-foundation-shell .tsl-clean-section p,
.tsl-foundation-shell .tsl-clean-cta p,
.tsl-watchlist-panel p,
.tsl-auth-card-head p {
  color: var(--tsl-sub, #475569) !important;
  max-width: 760px !important;
  font-size: 16px !important;
  line-height: 1.65 !important;
}

@media (max-width: 640px) {
  .tsl-foundation-shell,
  .tsl-auth-shell,
  .tsl-watchlist-shell {
    padding: 28px var(--tsl-page-pad, 16px) 46px !important;
  }

  .tsl-foundation-title,
  .tsl-auth-shell .tsl-foundation-title,
  .tsl-watchlist-shell .tsl-foundation-title {
    font-size: clamp(2rem, 10vw, 2.7rem) !important;
    line-height: 1.04 !important;
  }

  .tsl-auth-card,
  .tsl-watchlist-panel {
    margin: 22px 0 56px !important;
  }
}

/* TSL breadcrumb hover final standard */
.tsl-crumb a,
.tsl-clean-crumb a,
.tsl-foundation-crumb a,
.tsl-breadcrumb a{
  transition: color .15s ease !important;
}

.tsl-crumb a:hover,
.tsl-clean-crumb a:hover,
.tsl-foundation-crumb a:hover,
.tsl-breadcrumb a:hover{
  color: var(--tsl-blue, #2563eb) !important;
  text-decoration: none !important;
}

/* TSL global anchored-heading offset */
:root{
  --tsl-anchor-offset: 96px;
}

html{
  scroll-padding-top: var(--tsl-anchor-offset);
}

.tsl-clean-prose h2[id],
.tsl-clean-prose h3[id],
.tsl-clean-section[id],
.tsl-prose h2[id],
.tsl-prose h3[id],
article h2[id],
article h3[id]{
  scroll-margin-top: var(--tsl-anchor-offset);
}

@media (max-width: 768px){
  :root{
    --tsl-anchor-offset: 82px;
  }
}

@media (prefers-reduced-motion: no-preference){
  html{
    scroll-behavior: smooth;
  }
}

@media (prefers-reduced-motion: reduce){
  html{
    scroll-behavior: auto;
  }
}

/* TSL_GLOBAL_MODAL_FOUNDATION_V1_FIXED */
.tsl-global-modal-overlay{
  position:fixed;
  inset:0;
  z-index:2147483000;
  display:none;
  align-items:center;
  justify-content:center;
  padding:22px;
  background:rgba(15,23,42,.46);
  backdrop-filter:blur(8px);
}
.tsl-global-modal-overlay.is-open{display:flex;}
.tsl-global-modal-card{
  width:min(520px,100%);
  border-radius:26px;
  background:#fff;
  border:1px solid rgba(148,163,184,.28);
  box-shadow:0 28px 90px rgba(15,23,42,.32);
  padding:24px;
  color:#0f172a;
  position:relative;
  overflow:hidden;
}
.tsl-global-modal-card:before{
  content:"";
  position:absolute;
  left:0;
  right:0;
  top:0;
  height:5px;
  background:linear-gradient(90deg,#2563eb,#7c3aed,#10b981);
}
.tsl-global-modal-kicker{
  display:inline-flex;
  align-items:center;
  gap:7px;
  border-radius:999px;
  background:#eff6ff;
  color:#2563eb;
  border:1px solid #bfdbfe;
  padding:7px 10px;
  font-size:11px;
  font-weight:950;
  letter-spacing:.08em;
  text-transform:uppercase;
  margin-bottom:14px;
}
.tsl-global-modal-title{
  font-size:28px;
  line-height:1.05;
  letter-spacing:-.045em;
  font-weight:950;
  margin:0 0 10px;
  color:#0f172a;
}
.tsl-global-modal-copy{
  font-size:15px;
  line-height:1.65;
  color:#475569;
  margin:0 0 18px;
}
.tsl-global-modal-actions{
  display:flex;
  flex-wrap:wrap;
  gap:10px;
  margin-top:6px;
}
.tsl-global-modal-btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:42px;
  border-radius:12px;
  padding:0 15px;
  font-size:14px;
  font-weight:900;
  text-decoration:none;
  border:1px solid #dbe3ef;
  cursor:pointer;
  background:#fff;
  color:#0f172a;
}
.tsl-global-modal-btn.primary{
  background:#2563eb;
  border-color:#2563eb;
  color:#fff;
  box-shadow:0 12px 24px rgba(37,99,235,.22);
}
.tsl-global-modal-btn.soft{background:#f8fafc;color:#334155;}
.tsl-global-modal-close{
  position:absolute;
  right:14px;
  top:12px;
  border:0;
  background:transparent;
  color:#64748b;
  font-size:28px;
  line-height:1;
  cursor:pointer;
  padding:6px;
}
.tsl-global-modal-foot{
  font-size:12px;
  line-height:1.5;
  color:#64748b;
  margin:14px 0 0;
}
@media(max-width:640px){
  .tsl-global-modal-card{border-radius:20px;padding:20px;}
  .tsl-global-modal-title{font-size:23px;}
  .tsl-global-modal-actions{display:grid;}
  .tsl-global-modal-btn{width:100%;}
}

/* TSL_TOOL_RUN_BUTTON_LOADING_V1_FIXED */
.tsl-tool-button:disabled,
.tsl-risk-run-button:disabled,
.tsl-tool-button.is-tsl-running,
.tsl-risk-run-button.is-tsl-running{
  cursor:not-allowed!important;
  opacity:.76!important;
  transform:none!important;
  box-shadow:none!important;
  filter:saturate(.9)!important;
}
.tsl-tool-button.is-tsl-running,
.tsl-risk-run-button.is-tsl-running{
  position:relative;
}

/* TSL_DARK_MODE_FOUNDATION_V1 */
:root{
  --tsl-theme-bg:#f8fafc;
  --tsl-theme-surface:#ffffff;
  --tsl-theme-surface-2:#f8fafc;
  --tsl-theme-border:#dbe3ef;
  --tsl-theme-text:#0f172a;
  --tsl-theme-muted:#64748b;
  --tsl-theme-soft:#eff6ff;
  --tsl-theme-brand:#2563eb;
}
html[data-tsl-theme="dark"]{
  color-scheme:dark;
  --tsl-theme-bg:#07111f;
  --tsl-theme-surface:#0b1628;
  --tsl-theme-surface-2:#101f35;
  --tsl-theme-border:#22324a;
  --tsl-theme-text:#e5edf7;
  --tsl-theme-muted:#94a3b8;
  --tsl-theme-soft:#0f2340;
  --tsl-theme-brand:#60a5fa;
}
html[data-tsl-theme="light"]{color-scheme:light;}

html[data-tsl-theme="dark"] body{
  background:
    radial-gradient(circle at top left,rgba(37,99,235,.18),transparent 34rem),
    radial-gradient(circle at top right,rgba(14,165,233,.10),transparent 30rem),
    var(--tsl-theme-bg)!important;
  color:var(--tsl-theme-text)!important;
}
html[data-tsl-theme="dark"] .tsl-global-clean-page,
html[data-tsl-theme="dark"] .tsl-clean-article-page{
  background:transparent!important;
  color:var(--tsl-theme-text)!important;
}
html[data-tsl-theme="dark"] h1,
html[data-tsl-theme="dark"] h2,
html[data-tsl-theme="dark"] h3,
html[data-tsl-theme="dark"] h4,
html[data-tsl-theme="dark"] .tsl-clean-h1,
html[data-tsl-theme="dark"] .tsl-card-title{
  color:var(--tsl-theme-text)!important;
}
html[data-tsl-theme="dark"] p,
html[data-tsl-theme="dark"] li,
html[data-tsl-theme="dark"] .tsl-card-desc,
html[data-tsl-theme="dark"] .tsl-card-meta,
html[data-tsl-theme="dark"] .tsl-clean-subtitle,
html[data-tsl-theme="dark"] .tsl-clean-meta,
html[data-tsl-theme="dark"] .tsl-clean-disclaimer{
  color:var(--tsl-theme-muted)!important;
}
html[data-tsl-theme="dark"] a{color:#93c5fd;}
html[data-tsl-theme="dark"] a:hover{color:#bfdbfe;}

html[data-tsl-theme="dark"] .tsl-compatible-header,
html[data-tsl-theme="dark"] .tsl-static-header,
html[data-tsl-theme="dark"] header.tsl-compatible-header{
  background:rgba(7,17,31,.86)!important;
  border-bottom:1px solid rgba(148,163,184,.18)!important;
  box-shadow:0 10px 34px rgba(0,0,0,.22)!important;
  backdrop-filter:blur(16px);
}
html[data-tsl-theme="dark"] .tsl-compatible-brand,
html[data-tsl-theme="dark"] .tsl-compatible-logo,
html[data-tsl-theme="dark"] .tsl-compatible-nav a,
html[data-tsl-theme="dark"] .tsl-compatible-account{
  color:var(--tsl-theme-text)!important;
}
html[data-tsl-theme="dark"] .tsl-compatible-nav a:hover,
html[data-tsl-theme="dark"] .tsl-compatible-account:hover{
  color:#93c5fd!important;
}

html[data-tsl-theme="dark"] .tsl-clean-hero,
html[data-tsl-theme="dark"] .tsl-card,
html[data-tsl-theme="dark"] .tsl-clean-card,
html[data-tsl-theme="dark"] .tsl-risk-run-card,
html[data-tsl-theme="dark"] .tsl-result-card,
html[data-tsl-theme="dark"] .tsl-kpi-card,
html[data-tsl-theme="dark"] .tsl-global-modal-card,
html[data-tsl-theme="dark"] .tsl-quota-gate-modal,
html[data-tsl-theme="dark"] .tsl-auth-card,
html[data-tsl-theme="dark"] .tsl-pricing-card,
html[data-tsl-theme="dark"] .tsl-article-card{
  background:linear-gradient(180deg,rgba(15,31,53,.96),rgba(11,22,40,.98))!important;
  border-color:rgba(148,163,184,.20)!important;
  color:var(--tsl-theme-text)!important;
  box-shadow:0 20px 55px rgba(0,0,0,.20)!important;
}
html[data-tsl-theme="dark"] .tsl-clean-kicker,
html[data-tsl-theme="dark"] .tsl-tag,
html[data-tsl-theme="dark"] .tsl-global-modal-kicker,
html[data-tsl-theme="dark"] .tsl-quota-gate-kicker{
  background:rgba(37,99,235,.16)!important;
  border-color:rgba(96,165,250,.28)!important;
  color:#93c5fd!important;
}

html[data-tsl-theme="dark"] input,
html[data-tsl-theme="dark"] select,
html[data-tsl-theme="dark"] textarea{
  background:#091426!important;
  border-color:rgba(148,163,184,.25)!important;
  color:var(--tsl-theme-text)!important;
}
html[data-tsl-theme="dark"] input::placeholder,
html[data-tsl-theme="dark"] textarea::placeholder{color:#64748b!important;}

html[data-tsl-theme="dark"] table{
  color:var(--tsl-theme-text)!important;
}
html[data-tsl-theme="dark"] th,
html[data-tsl-theme="dark"] td{
  border-color:rgba(148,163,184,.18)!important;
}
html[data-tsl-theme="dark"] th{
  background:rgba(15,31,53,.92)!important;
  color:var(--tsl-theme-text)!important;
}

html[data-tsl-theme="dark"] footer,
html[data-tsl-theme="dark"] .tsl-static-footer,
html[data-tsl-theme="dark"] .tsl-footer{
  background:#050b14!important;
  border-top:1px solid rgba(148,163,184,.16)!important;
  color:#94a3b8!important;
}
html[data-tsl-theme="dark"] footer a,
html[data-tsl-theme="dark"] .tsl-static-footer a,
html[data-tsl-theme="dark"] .tsl-footer a{color:#cbd5e1!important;}
html[data-tsl-theme="dark"] footer a:hover,
html[data-tsl-theme="dark"] .tsl-static-footer a:hover,
html[data-tsl-theme="dark"] .tsl-footer a:hover{color:#93c5fd!important;}

html[data-tsl-theme="dark"] .tsl-tool-quota-badge{
  background:#0b1628!important;
  border-color:rgba(148,163,184,.24)!important;
  color:#cbd5e1!important;
}
html[data-tsl-theme="dark"] .tsl-tool-quota-badge.state-paid{
  background:rgba(37,99,235,.16)!important;
  border-color:rgba(96,165,250,.32)!important;
  color:#93c5fd!important;
}
html[data-tsl-theme="dark"] .tsl-tool-quota-badge.state-low{
  background:rgba(251,146,60,.12)!important;
  border-color:rgba(251,146,60,.30)!important;
  color:#fdba74!important;
}

html[data-tsl-theme="dark"] .tsl-global-modal-overlay,
html[data-tsl-theme="dark"] .tsl-quota-gate-overlay{
  background:rgba(2,6,23,.68)!important;
}
html[data-tsl-theme="dark"] .tsl-global-modal-copy,
html[data-tsl-theme="dark"] .tsl-global-modal-foot,
html[data-tsl-theme="dark"] .tsl-quota-gate-copy,
html[data-tsl-theme="dark"] .tsl-quota-gate-foot{
  color:#94a3b8!important;
}
html[data-tsl-theme="dark"] .tsl-global-modal-btn,
html[data-tsl-theme="dark"] .tsl-quota-gate-btn{
  background:#0b1628!important;
  border-color:rgba(148,163,184,.24)!important;
  color:#e5edf7!important;
}
html[data-tsl-theme="dark"] .tsl-global-modal-btn.primary,
html[data-tsl-theme="dark"] .tsl-quota-gate-btn.primary{
  background:#2563eb!important;
  border-color:#2563eb!important;
  color:#fff!important;
}
html[data-tsl-theme="dark"] .tsl-global-modal-btn.soft,
html[data-tsl-theme="dark"] .tsl-quota-gate-btn.soft{
  background:#101f35!important;
  color:#cbd5e1!important;
}

/* Header theme picker */
.tsl-theme-picker{
  position:relative;
  display:inline-flex;
  align-items:center;
}
.tsl-theme-button{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  height:32px;
  padding:0 11px;
  border-radius:999px;
  border:1px solid #d7deea;
  background:#fff;
  color:#334155;
  font-size:12px;
  font-weight:850;
  letter-spacing:-.01em;
  cursor:pointer;
  white-space:nowrap;
  box-shadow:0 1px 2px rgba(15,23,42,.04);
}
.tsl-theme-button:hover{
  border-color:#93c5fd;
  color:#2563eb;
}
.tsl-theme-menu{
  position:absolute;
  right:0;
  top:calc(100% + 9px);
  min-width:150px;
  padding:6px;
  border-radius:14px;
  border:1px solid #dbe3ef;
  background:#fff;
  box-shadow:0 20px 50px rgba(15,23,42,.16);
  z-index:2147482000;
}
.tsl-theme-menu[hidden]{display:none!important;}
.tsl-theme-option{
  width:100%;
  border:0;
  background:transparent;
  border-radius:10px;
  padding:9px 10px;
  text-align:left;
  cursor:pointer;
  color:#334155;
  font-size:13px;
  font-weight:800;
}
.tsl-theme-option:hover,
.tsl-theme-option[aria-checked="true"]{
  background:#eff6ff;
  color:#2563eb;
}
html[data-tsl-theme="dark"] .tsl-theme-button{
  background:#0b1628;
  border-color:rgba(148,163,184,.24);
  color:#cbd5e1;
}
html[data-tsl-theme="dark"] .tsl-theme-button:hover{
  border-color:rgba(96,165,250,.40);
  color:#93c5fd;
}
html[data-tsl-theme="dark"] .tsl-theme-menu{
  background:#0b1628;
  border-color:rgba(148,163,184,.24);
  box-shadow:0 20px 50px rgba(0,0,0,.34);
}
html[data-tsl-theme="dark"] .tsl-theme-option{
  color:#cbd5e1;
}
html[data-tsl-theme="dark"] .tsl-theme-option:hover,
html[data-tsl-theme="dark"] .tsl-theme-option[aria-checked="true"]{
  background:rgba(37,99,235,.16);
  color:#93c5fd;
}
@media(max-width:900px){
  .tsl-theme-picker{display:none!important;}
}

/* TSL_DARK_MODE_FOOTER_POLISH_V2 */

/* V2: make the existing TSL variables participate in dark mode. */
html[data-tsl-theme="dark"]{
  --tsl-bg:#07111f;
  --tsl-card:#0b1628;
  --tsl-text:#e5edf7;
  --tsl-sub:#b6c3d3;
  --tsl-muted:#94a3b8;
  --tsl-line:rgba(148,163,184,.18);
  --tsl-line-soft:rgba(148,163,184,.22);
  --tsl-shadow:0 18px 54px rgba(0,0,0,.28);
}

/* Remove old header picker placement from v1. */
.tsl-compatible-actions > .tsl-theme-picker,
.tsl-compatible-actions > #tsl-theme-picker{
  display:none!important;
}

/* Page shell polish. */
html[data-tsl-theme="dark"] .tsl-clean-article-shell,
html[data-tsl-theme="dark"] .tsl-pro-wrap,
html[data-tsl-theme="dark"] main{
  background:transparent!important;
}
html[data-tsl-theme="dark"] .tsl-side-card,
html[data-tsl-theme="dark"] .tsl-clean-side-card,
html[data-tsl-theme="dark"] aside .tsl-card,
html[data-tsl-theme="dark"] aside[class*="sidebar"] > div{
  background:linear-gradient(180deg,rgba(15,31,53,.96),rgba(11,22,40,.98))!important;
  border-color:rgba(148,163,184,.20)!important;
  color:var(--tsl-text)!important;
  box-shadow:0 18px 48px rgba(0,0,0,.18)!important;
}
html[data-tsl-theme="dark"] .tsl-side-title,
html[data-tsl-theme="dark"] .tsl-side-card h3,
html[data-tsl-theme="dark"] aside h3{
  color:var(--tsl-text)!important;
}
html[data-tsl-theme="dark"] .tsl-side-card a,
html[data-tsl-theme="dark"] aside[class*="sidebar"] a{
  color:#cbd5e1!important;
}
html[data-tsl-theme="dark"] .tsl-side-card a:hover,
html[data-tsl-theme="dark"] aside[class*="sidebar"] a:hover{
  color:#93c5fd!important;
}

/* Make light disclaimer/info boxes readable in dark mode. */
html[data-tsl-theme="dark"] .tsl-clean-disclaimer,
html[data-tsl-theme="dark"] .tsl-risk-disclaimer,
html[data-tsl-theme="dark"] .tsl-info-box,
html[data-tsl-theme="dark"] .tsl-note,
html[data-tsl-theme="dark"] .tsl-empty-state{
  background:rgba(15,31,53,.82)!important;
  border-color:rgba(96,165,250,.26)!important;
  color:#cbd5e1!important;
}

/* Form/run-card polish without touching chart internals yet. */
html[data-tsl-theme="dark"] .tsl-risk-run-card label,
html[data-tsl-theme="dark"] .tsl-run-card label,
html[data-tsl-theme="dark"] label{
  color:#94a3b8!important;
}
html[data-tsl-theme="dark"] .tsl-risk-run-card input,
html[data-tsl-theme="dark"] .tsl-run-card input{
  background:#071225!important;
  border-color:rgba(148,163,184,.24)!important;
  color:#e5edf7!important;
}

/* Footer appearance control. */
.tsl-footer-theme-picker{
  box-sizing:border-box;
  max-width:1120px;
  width:calc(100% - (var(--tsl-page-pad,20px) * 2));
  margin:0 auto;
  padding:16px 0 22px;
  border-top:1px solid rgba(15,23,42,.08);
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:12px;
}
.tsl-footer-theme-copy{
  color:#64748b;
  font-size:13px;
  font-weight:800;
}
.tsl-footer-theme-control{
  display:inline-flex;
  align-items:center;
  gap:4px;
  padding:4px;
  border-radius:999px;
  border:1px solid #dbe3ef;
  background:#f8fafc;
}
.tsl-footer-theme-option{
  border:0;
  background:transparent;
  color:#475569;
  border-radius:999px;
  min-height:30px;
  padding:0 12px;
  font-size:12px;
  font-weight:900;
  cursor:pointer;
}
.tsl-footer-theme-option:hover{
  color:#2563eb;
}
.tsl-footer-theme-option[aria-checked="true"]{
  background:#ffffff;
  color:#2563eb;
  box-shadow:0 1px 2px rgba(15,23,42,.10);
}
html[data-tsl-theme="dark"] .tsl-footer-theme-picker{
  border-top-color:rgba(148,163,184,.16);
}
html[data-tsl-theme="dark"] .tsl-footer-theme-copy{
  color:#94a3b8;
}
html[data-tsl-theme="dark"] .tsl-footer-theme-control{
  background:#071225;
  border-color:rgba(148,163,184,.22);
}
html[data-tsl-theme="dark"] .tsl-footer-theme-option{
  color:#94a3b8;
}
html[data-tsl-theme="dark"] .tsl-footer-theme-option:hover{
  color:#93c5fd;
}
html[data-tsl-theme="dark"] .tsl-footer-theme-option[aria-checked="true"]{
  background:#0f2340;
  color:#93c5fd;
  box-shadow:inset 0 0 0 1px rgba(96,165,250,.22);
}

/* Mobile footer control. */
@media(max-width:720px){
  .tsl-footer-theme-picker{
    justify-content:flex-start;
    align-items:flex-start;
    flex-direction:column;
  }
}

/* Avoid v1 header dropdown styles leaking visually. */
.tsl-theme-menu,
.tsl-theme-button{
  display:none!important;
}

/* TSL_AUTH_GATE_FREE_WATCHLIST_NUDGE_V8 */
.tsl-watchlist-nudge{
  position:fixed;
  right:20px;
  bottom:20px;
  z-index:2147481800;
  width:min(370px,calc(100vw - 32px));
  border-radius:22px;
  border:1px solid rgba(37,99,235,.20);
  background:
    radial-gradient(circle at top left,rgba(37,99,235,.12),transparent 36%),
    #ffffff;
  color:#0f172a;
  box-shadow:0 24px 70px rgba(15,23,42,.18);
  padding:18px;
  display:none;
}
.tsl-watchlist-nudge.is-visible{display:block;}
.tsl-watchlist-nudge-close{
  position:absolute;
  top:10px;
  right:10px;
  width:30px;
  height:30px;
  border:1px solid #dbe3ef;
  border-radius:999px;
  background:#fff;
  color:#64748b;
  cursor:pointer;
  font-size:18px;
  line-height:1;
}
.tsl-watchlist-nudge-kicker{
  display:inline-flex;
  align-items:center;
  min-height:24px;
  padding:0 9px;
  border-radius:999px;
  background:#eff6ff;
  border:1px solid #bfdbfe;
  color:#2563eb;
  font-size:10px;
  font-weight:950;
  letter-spacing:.10em;
  text-transform:uppercase;
  margin-bottom:12px;
}
.tsl-watchlist-nudge h3{
  margin:0 34px 8px 0;
  color:#0f172a;
  font-size:20px;
  line-height:1.15;
  letter-spacing:-.03em;
}
.tsl-watchlist-nudge p{
  margin:0 0 14px;
  color:#475569;
  font-size:14px;
  line-height:1.55;
}
.tsl-watchlist-nudge-form{
  display:grid;
  grid-template-columns:1fr auto;
  gap:8px;
  margin:0 0 10px;
}
.tsl-watchlist-nudge-input{
  min-height:42px;
  border-radius:12px;
  border:1px solid #cbd5e1;
  padding:0 12px;
  font-weight:750;
  color:#0f172a;
  background:#fff;
  outline:none;
}
.tsl-watchlist-nudge-input:focus{
  border-color:#2563eb;
  box-shadow:0 0 0 4px rgba(37,99,235,.12);
}
.tsl-watchlist-nudge-submit{
  min-height:42px;
  border:0;
  border-radius:12px;
  padding:0 14px;
  background:#2563eb;
  color:#fff;
  font-weight:950;
  cursor:pointer;
}
.tsl-watchlist-nudge-links{
  display:flex;
  align-items:center;
  gap:12px;
  font-size:12px;
  font-weight:850;
}
.tsl-watchlist-nudge-links a,
.tsl-watchlist-nudge-links button{
  border:0;
  background:transparent;
  padding:0;
  color:#2563eb;
  cursor:pointer;
  text-decoration:none;
  font:inherit;
}
.tsl-watchlist-nudge-foot{
  display:block;
  margin-top:10px;
  color:#64748b;
  font-size:11px;
  line-height:1.4;
}
html[data-tsl-theme="dark"] .tsl-watchlist-nudge{
  background:
    radial-gradient(circle at top left,rgba(37,99,235,.22),transparent 38%),
    linear-gradient(180deg,#0f1d32 0%,#0b1628 100%);
  border-color:rgba(96,165,250,.30);
  color:#e5edf7;
  box-shadow:0 24px 76px rgba(0,0,0,.36);
}
html[data-tsl-theme="dark"] .tsl-watchlist-nudge-close{
  background:#0b1628;
  border-color:rgba(148,163,184,.24);
  color:#94a3b8;
}
html[data-tsl-theme="dark"] .tsl-watchlist-nudge h3{color:#f8fbff;}
html[data-tsl-theme="dark"] .tsl-watchlist-nudge p{color:#b6c3d3;}
html[data-tsl-theme="dark"] .tsl-watchlist-nudge-kicker{
  background:rgba(37,99,235,.18);
  border-color:rgba(96,165,250,.32);
  color:#93c5fd;
}
html[data-tsl-theme="dark"] .tsl-watchlist-nudge-input{
  background:#071225;
  border-color:rgba(148,163,184,.28);
  color:#e5edf7;
}
html[data-tsl-theme="dark"] .tsl-watchlist-nudge-foot{color:#94a3b8;}
html[data-tsl-theme="dark"] .tsl-watchlist-nudge-links a,
html[data-tsl-theme="dark"] .tsl-watchlist-nudge-links button{color:#93c5fd;}
@media(max-width:720px){
  .tsl-watchlist-nudge{
    left:14px;
    right:14px;
    bottom:14px;
    width:auto;
  }
  .tsl-watchlist-nudge-form{grid-template-columns:1fr;}
}

/* TSL_AUTH_SIGNUP_UX_POLISH_V9 */
.tsl-auth-watchlist-promise{
  box-sizing:border-box;
  width:min(760px,calc(100% - 32px));
  margin:0 auto 18px;
  border-radius:22px;
  border:1px solid rgba(37,99,235,.22);
  background:
    radial-gradient(circle at top left,rgba(37,99,235,.11),transparent 34%),
    linear-gradient(135deg,#eff6ff 0%,#ffffff 76%);
  color:#0f172a;
  padding:18px;
  box-shadow:0 18px 44px rgba(15,23,42,.08);
}
.tsl-auth-watchlist-promise__kicker{
  display:inline-flex;
  align-items:center;
  min-height:24px;
  padding:0 9px;
  border-radius:999px;
  background:#eff6ff;
  border:1px solid #bfdbfe;
  color:#2563eb;
  font-size:10px;
  font-weight:950;
  letter-spacing:.10em;
  text-transform:uppercase;
  margin-bottom:10px;
}
.tsl-auth-watchlist-promise h2{
  margin:0 0 8px;
  color:#0f172a;
  font-size:24px;
  line-height:1.08;
  letter-spacing:-.04em;
}
.tsl-auth-watchlist-promise p{
  margin:0;
  color:#475569;
  font-size:14px;
  line-height:1.55;
}
.tsl-auth-watchlist-promise__grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:10px;
  margin-top:14px;
}
.tsl-auth-watchlist-promise__item{
  border-radius:14px;
  border:1px solid rgba(37,99,235,.14);
  background:rgba(255,255,255,.72);
  padding:11px;
}
.tsl-auth-watchlist-promise__item strong{
  display:block;
  color:#0f172a;
  font-size:13px;
  margin-bottom:3px;
}
.tsl-auth-watchlist-promise__item span{
  display:block;
  color:#64748b;
  font-size:12px;
  line-height:1.35;
}
html[data-tsl-theme="dark"] .tsl-auth-watchlist-promise{
  background:
    radial-gradient(circle at top left,rgba(37,99,235,.24),transparent 36%),
    linear-gradient(135deg,#10233e 0%,#0b1628 62%,#07111f 100%);
  border-color:rgba(96,165,250,.34);
  color:#eaf2ff;
  box-shadow:0 22px 64px rgba(0,0,0,.30);
}
html[data-tsl-theme="dark"] .tsl-auth-watchlist-promise__kicker{
  background:rgba(37,99,235,.18);
  border-color:rgba(96,165,250,.32);
  color:#93c5fd;
}
html[data-tsl-theme="dark"] .tsl-auth-watchlist-promise h2{color:#f8fbff;}
html[data-tsl-theme="dark"] .tsl-auth-watchlist-promise p{color:#b6c3d3;}
html[data-tsl-theme="dark"] .tsl-auth-watchlist-promise__item{
  background:rgba(7,18,37,.72);
  border-color:rgba(148,163,184,.20);
}
html[data-tsl-theme="dark"] .tsl-auth-watchlist-promise__item strong{color:#eaf2ff;}
html[data-tsl-theme="dark"] .tsl-auth-watchlist-promise__item span{color:#94a3b8;}
@media(max-width:720px){
  .tsl-auth-watchlist-promise{width:calc(100% - 24px);padding:16px;}
  .tsl-auth-watchlist-promise__grid{grid-template-columns:1fr;}
}

/* TSL_AUTH_UX_FIXES_V10 */
.tsl-auth-shell .tsl-auth-watchlist-promise{
  width:100%!important;
  max-width:760px!important;
  margin:0 0 18px 0!important;
}
html[data-tsl-theme="light"] .tsl-auth-shell .tsl-auth-watchlist-promise{
  box-shadow:0 18px 44px rgba(15,23,42,.07)!important;
}
html[data-tsl-theme="dark"] .tsl-auth-shell .tsl-auth-watchlist-promise{
  box-shadow:0 22px 64px rgba(0,0,0,.28)!important;
}
.tsl-auth-message.error{
  color:#b42318!important;
  background:#fff5f5!important;
  border-color:#fecaca!important;
}
.tsl-auth-message.ok{
  color:#067647!important;
  background:#ecfdf3!important;
  border-color:#bbf7d0!important;
}
.tsl-auth-message.warn{
  color:#92400e!important;
  background:#fffbeb!important;
  border-color:#fde68a!important;
}
html[data-tsl-theme="dark"] .tsl-auth-message.error{
  color:#fecaca!important;
  background:rgba(127,29,29,.20)!important;
  border-color:rgba(248,113,113,.28)!important;
}
html[data-tsl-theme="dark"] .tsl-auth-message.ok{
  color:#bbf7d0!important;
  background:rgba(6,95,70,.20)!important;
  border-color:rgba(52,211,153,.26)!important;
}
html[data-tsl-theme="dark"] .tsl-auth-message.warn{
  color:#fde68a!important;
  background:rgba(120,53,15,.22)!important;
  border-color:rgba(251,191,36,.26)!important;
}

