/* 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-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 NEW PAGE RHYTHM FINAL V2
   Homepage/account/watchlist now use the same classes as the
   established Articles hub: tsl-index-shell, tsl-crumb,
   tsl-kicker, tsl-title, tsl-deck, tsl-section, tsl-card.
   This block only targets .tsl-new-page so it cannot disturb
   evergreen article pages.
   ========================================================= */

.tsl-new-page {
  --blue: var(--tsl-blue, #2563eb);
  --blue-soft: rgba(37,99,235,.10);
  --text: var(--tsl-text, #0f172a);
  --sub: var(--tsl-sub, #475569);
  --muted: var(--tsl-muted, #64748b);
  --card: #ffffff;
  --line: rgba(15,23,42,.12);
  background: var(--tsl-bg, #f8fafc) !important;
  color: var(--text) !important;
  font-family: var(--tsl-font, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Inter, Arial, sans-serif) !important;
  line-height: 1.75 !important;
}

.tsl-new-page .tsl-index-shell {
  box-sizing: border-box !important;
  max-width: var(--tsl-page-max, 1120px) !important;
  width: 100% !important;
  margin: 0 auto !important;
  padding: 38px var(--tsl-page-pad, 22px) 62px !important;
}

.tsl-new-page .tsl-crumb {
  color: var(--muted) !important;
  font-size: 12px !important;
  line-height: 1.4 !important;
  font-weight: 400 !important;
  letter-spacing: 0 !important;
  margin: 0 0 18px !important;
}

.tsl-new-page .tsl-crumb a {
  color: var(--muted) !important;
  text-decoration: none !important;
}

.tsl-new-page .tsl-kicker {
  display: inline-block !important;
  width: auto !important;
  min-height: 0 !important;
  padding: 5px 9px !important;
  margin: 0 0 16px !important;
  border-radius: 5px !important;
  border: 1px solid rgba(37,99,235,.18) !important;
  background: rgba(37,99,235,.10) !important;
  color: var(--blue) !important;
  font-size: 10px !important;
  line-height: 1.1 !important;
  font-weight: 800 !important;
  letter-spacing: .12em !important;
  text-transform: uppercase !important;
}

.tsl-new-page .tsl-title {
  max-width: 790px !important;
  margin: 0 0 16px !important;
  color: var(--text) !important;
  font-family: var(--tsl-font, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Inter, Arial, sans-serif) !important;
  font-size: clamp(2.1rem,5vw,3.6rem) !important;
  line-height: 1.03 !important;
  letter-spacing: -.055em !important;
  font-weight: 760 !important;
}

.tsl-new-page .tsl-title span {
  color: var(--blue) !important;
}

.tsl-new-page .tsl-deck {
  max-width: 760px !important;
  margin: 0 0 26px !important;
  color: var(--sub) !important;
  font-size: 1.14rem !important;
  line-height: 1.75 !important;
  font-weight: 400 !important;
}

.tsl-new-page .tsl-section {
  margin: 34px 0 !important;
}

.tsl-new-page .tsl-section h2,
.tsl-new-page .tsl-cta h2,
.tsl-new-page .tsl-auth-card-head h2,
.tsl-new-page .tsl-watchlist-panel h2 {
  color: var(--text) !important;
  font-size: 1.65rem !important;
  line-height: 1.2 !important;
  letter-spacing: -.035em !important;
  font-weight: 800 !important;
  margin: 0 0 12px !important;
}

.tsl-new-page .tsl-auth-card {
  max-width: 760px !important;
  width: 100% !important;
  margin: 34px 0 72px !important;
}

.tsl-new-page .tsl-watchlist-panel {
  max-width: 100% !important;
  width: 100% !important;
  margin: 34px 0 72px !important;
}

.tsl-new-page .tsl-new-model-grid {
  grid-template-columns: repeat(3, minmax(0,1fr)) !important;
}

@media (max-width: 860px) {
  .tsl-new-page .tsl-new-model-grid {
    grid-template-columns: 1fr 1fr !important;
  }
}

@media (max-width: 560px) {
  .tsl-new-page .tsl-index-shell {
    padding: 28px 16px 46px !important;
  }
  .tsl-new-page .tsl-new-model-grid {
    grid-template-columns: 1fr !important;
  }
}
