/* ─── Global mobile overflow guard ──────────────────────────────────────────
   Webflow assigns fixed rem widths to several hero containers that are wider
   than a phone screen at 767px and below, causing horizontal scroll and
   clipped headlines. We cap everything to the viewport and clip the overflow.

   IMPORTANT — THREE RULES THAT MUST NEVER BE BROKEN:

   1) Use `overflow-x: clip`, NEVER `overflow: hidden`. `hidden` turns the
      element into a scroll container, which silently breaks every descendant
      that uses `position: sticky` (the navbar AND the journey cards on
      /about-us). `clip` clips overflow WITHOUT creating a scroll container.

   2) Apply the clip to `body` ONLY, never to `html`. Setting any non-visible
      overflow on the <html> element makes it a sticky containing block in
      WebKit/iOS Safari, which kills `position: sticky` on every descendant
      (the navbar would scroll away with the page on iOS).

   3) Scope the clip to mobile-only (`@media (max-width: 991px)`). On desktop
      it can still nudge the sticky containing block in some Chrome builds,
      causing the sticky navbar to appear to "scroll away" even though the
      page itself scrolls. Webflow's hero overflow problem is mobile-only,
      so there's no reason for this rule to ever apply on desktop.           */

@media screen and (max-width: 991px) {
  body {
    max-width: 100%;
    overflow-x: clip;
  }
}

/* Self-hosted Inter + Urbanist (variable WOFF2, replaces Google WebFont loader) */
@font-face {
  font-family: "Inter";
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url("/fonts/inter-var.woff2") format("woff2");
}

@font-face {
  font-family: "Urbanist";
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url("/fonts/urbanist-var.woff2") format("woff2");
}

/* Same logic for .page_wrapper. Webflow ships `.page_wrapper { overflow-x: clip }`
   which is fine in theory but, paired with the sticky navbar inside it, has
   shown up as "navbar scrolls away on desktop" reports. Strip the overflow
   on desktop entirely so the sticky navbar's containing block is the
   viewport (rock-solid), and re-apply the clip on tablet/mobile where the
   horizontal-overflow protection is actually needed. */

@media screen and (min-width: 992px) {
  .page_wrapper {
    overflow: visible !important;
  }
}

@media screen and (max-width: 479px) {
  .hero_headings,
  .hero_headings-2,
  .contact-hero_headings,
  ._3d_tab {
    width: 100% !important;
    max-width: 100% !important;
    padding-left: 1rem !important;
    padding-right: 1rem !important;
    box-sizing: border-box !important;
  }
}

/* ─── Global resource card grid — fixed equal heights across all pages ──────
   Targets every ._3_col-grid on resources, posts, interviews, events,
   homepage, about-us, etc. All cards share the same image height and
   padding so the layout is consistent everywhere.                           */

._3_col-grid {
  align-items: stretch;
}

/* Each card anchor — fixed total height, flex column */
._3_col-grid > a.liner_border,
._3_col-grid > a.w-inline-block {
  display: flex !important;
  flex-direction: column !important;
  height: 26rem !important;   /* image 14rem + text 12rem = 26rem total */
  overflow: hidden !important;
}

/* Card fills the anchor */
._3_col-grid .resource_card {
  display: flex !important;
  flex-direction: column !important;
  flex: 1 !important;
  min-height: 0 !important;
  overflow: hidden !important;
}

/* Fixed image height */
._3_col-grid .resources_image {
  width: 100%;
  height: 14rem;
  object-fit: cover;
  flex-shrink: 0;
}

/* Video card image wrapper */
._3_col-grid .resource_card-wrap {
  flex-shrink: 0;
  position: relative;
}
._3_col-grid .resource_card-wrap .resources_image {
  height: 14rem;
}

/* Text block fills the remaining 12rem */
._3_col-grid .resources_heading {
  flex: 1 !important;
  display: flex !important;
  flex-direction: column !important;
  padding: 1.1rem 1.4rem 1.4rem !important;
  gap: 0.4rem !important;
  overflow: hidden !important;
  min-height: 0 !important;
}

/* Title — 2 lines max */
._3_col-grid .resources_heading h3.heading_6 {
  font-size: 1rem !important;
  line-height: 1.4 !important;
  display: -webkit-box !important;
  -webkit-line-clamp: 2 !important;
  -webkit-box-orient: vertical !important;
  overflow: hidden !important;
  flex-shrink: 0 !important;
}

/* Excerpt — 3 lines max */
._3_col-grid .resources_heading p.text_800 {
  font-size: 0.85rem !important;
  line-height: 1.6 !important;
  opacity: 0.75 !important;
  display: -webkit-box !important;
  -webkit-line-clamp: 3 !important;
  -webkit-box-orient: vertical !important;
  overflow: hidden !important;
  flex: 1 !important;
  min-height: 0 !important;
}

/* ─── Spacing overrides for specific grid instances ─────────────────────── */

/* Gap between heading block and cards on homepage / about-us */
#hp-articles-grid {
  margin-top: 0.5rem;
}

/* Generic tightener — any _3_col-grid that follows a .heading_wrapper.long
   (Resources / Insights pattern site-wide) gets only a small breathing-room
   margin so the card grid sits close to the section subtitle. Uses + so it
   only matches when the grid is the IMMEDIATE next sibling — won't affect
   grids with intervening content. */
.heading_wrapper.long + ._3_col-grid {
  margin-top: 0.5rem !important;
}

/* Section intro headings (h2 + tag/subtitle) — narrower centered measure.
   Replaces full-width .heading_wrapper.long override; keeps subtitles from
   stretching edge-to-edge. `.heading_wrapper.mid` is excluded — Webflow
   ships it at 42rem for pricing / why sections; capping at 36rem broke the
   Evaluation/Qualified toggle vs Zero/Premium/Advanced tab stack.          */
.heading_wrapper-medium,
.heading_wrapper-medium-2,
.heading_wrapper.long {
  width: 100% !important;
  max-width: 42rem;
  margin-left: auto;
  margin-right: auto;
}

.heading_wrapper.mid {
  width: 100% !important;
  max-width: 42rem;
  margin-left: auto;
  margin-right: auto;
}

.heading_wrapper.long {
  padding-bottom: 0.25rem !important;
}

/* Pricing — deferred inactive tab panes (pricing-tabs-defer.js) */
.pricing-tab-placeholder {
  min-height: 28rem;
}

@media screen and (max-width: 991px) {
  .pricing-tab-placeholder {
    min-height: 40rem;
  }
}

/* Pricing — room for long h2; per-tab Standard / No activation fee + qualified overlay */
.pricing_section .heading_wrapper.mid,
.pricing_section.pricing_new .heading_wrapper.mid {
  max-width: 48rem;
}

.pricing_section .tab_content,
.pricing_section.pricing_new .tab_content {
  margin-top: 1.5rem !important;
}

/* Premium landing — new pricing (Premium-only, no plan tabs) */
#pricing.pricing_new .heading_wrapper-medium-2 {
  max-width: 48rem;
  margin-left: auto;
  margin-right: auto;
  text-align: center;
}

#pricing.pricing_new .pricing_premium_standalone {
  display: block;
  width: 100%;
}

/* Trader marquee — YouTube thumbnails (no hover MP4) */
.hover_video_wrapper img.video {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

/* Tightened space between card rows and the centered "View All …" link.
   - Was 5rem margin-top with display:block — that pushed the link a screen
     away AND killed Webflow's `.middle_align { justify-content: center }`,
     so the link rendered LEFT-aligned instead of centered.
   - Now 1.75rem margin-top so the link sits close to the cards, and we
     re-assert flex+center so the link stays centered on every page.
   Uses ~ (general sibling) not + (adjacent) because a <script> tag sits
   between the grid and the button on some pages.                            */
#hp-articles-grid ~ div.middle_align,
._3_col-grid ~ div.middle_align,
#res-blogs-grid ~ div,
#res-resources-grid ~ div,
#res-interviews-grid ~ div,
#res-events-grid ~ div {
  margin-top: 1.75rem;
  display: flex;
  justify-content: center;
  align-items: center;
  clear: both;
  position: relative;
  z-index: 1;
}

/* ─── About-us dynamic event carousel ───────────────────────────────────────
   .slider_wrapper already has height:100% and spans 2 grid rows (Webflow CSS).
   We just propagate that height downward so all slides fill the full card.  */

.af-carousel {
  position: relative;
  width: 100%;
  height: 100%;
  overflow: hidden;
  border-radius: inherit;
}

.af-track {
  position: relative;
  width: 100%;
  height: 100%;
}

/* All slides stack absolutely — opacity swap creates the crossfade */
.af-slide {
  position: absolute;
  inset: 0;
  opacity: 0;
  transition: opacity 0.5s ease;
  background-size: cover;
  background-position: center;
}

.af-slide.active {
  opacity: 1;
}

.af-slide-link {
  display: inline-block;
  margin-top: 0.85rem;
  color: #00B67A;
  font-weight: 600;
  font-size: 0.85rem;
  text-decoration: none;
  transition: opacity 0.2s;
}
.af-slide-link:hover { opacity: 0.75; }

.af-dots {
  position: absolute;
  bottom: 1.25rem;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  gap: 6px;
  z-index: 10;
}

.af-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  border: none;
  background: rgba(255, 255, 255, 0.35);
  cursor: pointer;
  padding: 0;
  transition: background 0.25s;
}

.af-dot.active {
  background: #ffffff;
}

/* ─── Blog / Article detail page ────────────────────────────────────────────
   Applies to posts, resources, interviews, and events — all share the same
   container_blog → blog_wrapper → blog_div → blog_middle structure.        */

/* Widen the blog container */
.container_blog.w-container {
  max-width: 900px !important;
  padding-left: 2rem !important;
  padding-right: 2rem !important;
}

/* Cover image — full width, nice rounded corners */
.blog_wrapper .cover_image {
  width: 100%;
  max-height: 520px;
  object-fit: cover;
  border-radius: 16px;
  margin-bottom: 0;
  display: block;
}
@media (max-width: 767px) {
  .blog_wrapper .cover_image {
    max-height: 260px;
    border-radius: 10px;
  }
}

/* Kill Webflow zero-width-joiner spacer breaks inside benefit cards */
._3_col-grid .benefit_headings p br {
  display: none !important;
}

/* ─── Benefit cards — pin icon + title to the top so titles align across
   cards even when copy length differs. Replaces Webflow's space-between
   layout (icon pushed to top, text pushed to bottom).                     */
._3_col-grid .benefit_card {
  justify-content: flex-start !important;
  gap: 1.5rem !important;
}

/* Push paragraph down from the title so the heading reads as the anchor
   and the body copy breathes underneath. Webflow ships these at 0.5rem. */
._3_col-grid .benefit_headings {
  gap: 1.25rem !important;
}

/* ─── Platforms section — tighten the gap between heading and tab cards.
   Webflow's default .platfroms_tabs { margin-top: 3rem } makes this
   section have a noticeably larger heading→content gap than every other
   section on the homepage. Bring it back in line.                        */
/* Platforms intro — balance h2 line breaks (no subtitle; title-only tweak) */
section.tools_section .heading_wrapper.long h2 {
  text-wrap: balance;
}

.tools_section .platfroms_tabs {
  margin-top: 1rem !important;
}
@media screen and (max-width: 991px) {
  .tools_section .platfroms_tabs {
    margin-top: 0.5rem !important;
  }
}

/* Homepage /assets platforms — Webflow hides `.liner_border.set` at ≤991px.
   "View All" sits last inside `.tabs_menu_left` so `.w-tabs` keeps only
   menu + content as direct children (extra sibling broke tab panes). */
@media screen and (max-width: 991px) {
  .tools_section .tabs_menu_left > a.liner_border.set {
    display: flex !important;
    position: static;
    width: 100%;
    margin-top: 0.75rem;
    margin-bottom: 0.75rem;
  }
}

@media screen and (min-width: 992px) {
  .tools_section .tabs_menu_left {
    display: flex;
    flex-flow: column;
  }

  .tools_section .tabs_menu_left > a.liner_border.set {
    display: flex !important;
    width: 100%;
    margin-top: auto;
  }
}

/* ─── FAQ section — tighten heading→accordion gap.
   Webflow's default .faqs_wrapper { margin-top: 4.375rem } (70px) only
   gets overridden on phones (≤767px), so tablet viewers see the same
   oversized gap that the Platforms section had. Match the visual rhythm
   of the rest of the page across all breakpoints.                        */
.faq_wrapper .faqs_wrapper {
  margin-top: 2rem !important;
}

/* ─── FAQ heading — add breathing room between the "FAQ" tag pill and
   the "Frequently Asked Questions" title.                                */
.faq_wrapper .tag {
  margin-bottom: 1.5rem;
}

/* ─── Divento logo — smaller ─────────────────────────────────────────────── */
.divento_logo {
  width: 220px !important;
  max-width: 220px !important;
  height: auto !important;
  margin-bottom: 2rem !important;
}

/* ─── Divento Financials Academy card — hide on mobile only ───────────────
   `.divento_wrapper` only appears in `.section_trader-resources` on
   index.html + how-it-works.html (not journey timeline or ecosystem). */

@media screen and (max-width: 767px) {
  .section_trader-resources .resources_layout > .liner_border:has(.divento_wrapper) {
    display: none;
  }
}

/* ─── Trader resources — cards fill grid/flex cell (zip layout) ───────────
   Webflow export: Divento left (2 rows) + YouTube + Discord on the right.
   `w-inline-block` on the YouTube anchor shrink-wraps the card; force 100%
   width so the banner matches Discord/Divento. index + how-it-works only. */
.section_trader-resources .resources_layout > .liner_border,
.section_trader-resources .resources_layout > a.liner_border.w-inline-block {
  width: 100%;
  max-width: 100%;
  display: block;
}

.section_trader-resources .resource-card {
  width: 100%;
}

.section_trader-resources .resource_images.yotube {
  display: block;
  width: 100%;
}

/* ─── Sticky navbar (desktop) ───────────────────────────────────────────────
   Webflow ships position:sticky on .navbar. A prior override forced
   position:relative on desktop, so the nav scrolled away on the main site
   while /premium-offer stayed fixed via .secondary_nav. ≤991px Webflow uses
   position:fixed for the mobile menu — leave that untouched. */
@media screen and (min-width: 992px) {
  .navbar.w-nav,
  .w-nav[data-collapse="medium"] {
    position: sticky !important;
    top: 0;
    z-index: 8000000;
  }
}


/* ── Flatten the 3-col sidebar layout into a single column ───────────────── */
.blog_div {
  display: flex !important;
  flex-direction: column !important;
  gap: 0 !important;
}

/* Hide the right "On this page" TOC sidebar — usually empty for new posts */
.blog_div .liner_border.hidden_m {
  display: none !important;
}

/* Hide the Published / Reading time meta bar entirely */
.blog_div .liner_border.auto {
  display: none !important;
}

/* Article content fills full width */
.blog_middle {
  width: 100% !important;
  max-width: 100% !important;
  flex: unset !important;
}

/* Article H1 */
.blog_middle h1.heading_2 {
  font-family: 'Inter', system-ui, sans-serif !important;
  font-size: clamp(1.9rem, 4.5vw, 2.75rem);
  font-weight: 700;
  line-height: 1.18;
  letter-spacing: -0.02em;
  margin-bottom: 1.75rem;
  margin-top: 0.5rem;
}

/* Rich text body */
.blog_middle .rich-text-block.w-richtext,
.blog_middle .w-richtext {
  font-family: 'Inter', system-ui, sans-serif !important;
  font-size: 1.05rem;
  line-height: 1.8;
  color: rgba(255, 255, 255, 0.85);
}

/* Paragraphs */
.blog_middle .w-richtext p,
.blog_middle .w-richtext p.paragraph,
.blog_middle .w-richtext p.paragraph.inter {
  font-family: 'Inter', system-ui, sans-serif !important;
  font-size: 1.05rem;
  line-height: 1.8;
  font-weight: 400;
  letter-spacing: 0;
  margin-bottom: 1.1rem;
  margin-top: 0;
}

/* Spacer paragraphs — collapse */
.blog_middle .w-richtext p.space,
.blog_middle .w-richtext p.space_small {
  display: none;
}

/* Lead paragraph */
.blog_middle .w-richtext p.heading_6.inter {
  font-family: 'Inter', system-ui, sans-serif !important;
  font-size: 1.15rem;
  line-height: 1.75;
  font-weight: 500;
  letter-spacing: 0;
  color: rgba(255, 255, 255, 0.92);
  margin-bottom: 1.75rem;
  padding-bottom: 1.5rem;
  border-bottom: 1px solid rgba(255, 255, 255, 0.08);
}

/* H2 — normalize away Urbanist weirdness */
.blog_middle .w-richtext h2,
.blog_middle .w-richtext h2.heading_5,
.blog_middle .w-richtext h2.heading_5.urbanist,
.blog_middle .w-richtext .heading_5 {
  font-family: 'Inter', system-ui, sans-serif !important;
  font-size: 1.45rem !important;
  font-weight: 650 !important;
  line-height: 1.3 !important;
  letter-spacing: -0.01em !important;
  margin-top: 2.25rem !important;
  margin-bottom: 0.65rem !important;
  color: #fff !important;
}

/* H3 */
.blog_middle .w-richtext h3 {
  font-family: 'Inter', system-ui, sans-serif !important;
  font-size: 1.2rem !important;
  font-weight: 600 !important;
  line-height: 1.35 !important;
  letter-spacing: -0.005em !important;
  margin-top: 1.75rem !important;
  margin-bottom: 0.5rem !important;
  color: #fff !important;
}

/* All links in articles → green */
.blog_middle a,
.blog_middle .w-richtext a,
.blog_middle .rich-text-block a {
  color: #00B67A !important;
  text-decoration: none;
  transition: opacity 0.2s;
}
.blog_middle a:hover,
.blog_middle .w-richtext a:hover {
  opacity: 0.75;
  text-decoration: underline;
}

/* Lists */
.blog_middle .w-richtext ul,
.blog_middle .w-richtext ol {
  padding-left: 1.5rem;
  margin-bottom: 1.1rem;
  margin-top: 0;
}
.blog_middle .w-richtext li,
.blog_middle .w-richtext li.paragraph.inter_list {
  font-family: 'Inter', system-ui, sans-serif !important;
  font-size: 1.05rem;
  line-height: 1.8;
  font-weight: 400;
  letter-spacing: 0;
  margin-bottom: 0.35rem;
}

/* Images in body */
.blog_middle .w-richtext img {
  width: 100%;
  border-radius: 12px;
  margin: 1.75rem 0;
  display: block;
}

/* Blockquotes */
.blog_middle .w-richtext blockquote {
  border-left: 3px solid #00B67A;
  padding: 0.6rem 1.2rem;
  margin: 1.75rem 0;
  font-size: 1.05rem;
  color: rgba(255, 255, 255, 0.65);
  font-style: italic;
}

/* Code */
.blog_middle .w-richtext code {
  background: rgba(255, 255, 255, 0.08);
  border-radius: 4px;
  padding: 0.1em 0.4em;
  font-size: 0.9em;
}

/* Tables */
.blog_middle .w-richtext table {
  width: 100%;
  border-collapse: collapse;
  margin: 1.75rem 0;
  font-size: 0.95rem;
}
.blog_middle .w-richtext th,
.blog_middle .w-richtext td {
  padding: 0.6rem 1rem;
  border: 1px solid rgba(255, 255, 255, 0.1);
  text-align: left;
}
.blog_middle .w-richtext th {
  background: rgba(255, 255, 255, 0.05);
  font-weight: 600;
}

/* ─── More Articles section ──────────────────────────────────────────────── */
.more-articles {
  padding: 4rem 0 2rem;
}
.more-articles-inner {
  max-width: 900px;
  margin: 0 auto;
  padding: 0 2rem;
}
.more-articles-heading {
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 1.35rem;
  font-weight: 700;
  letter-spacing: -0.01em;
  margin-bottom: 1.75rem;
  padding-bottom: 1rem;
  border-bottom: 1px solid rgba(255, 255, 255, 0.08);
}
.more-articles-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.25rem;
}
@media (max-width: 767px) {
  .more-articles-grid { grid-template-columns: 1fr; }
}
@media (min-width: 768px) and (max-width: 991px) {
  .more-articles-grid { grid-template-columns: repeat(2, 1fr); }
}

/* Responsive: tablet / mobile */
@media (max-width: 991px) {
  .container_blog.w-container {
    padding-left: 1.25rem !important;
    padding-right: 1.25rem !important;
  }
  .blog_middle h1.heading_2 {
    font-size: 1.75rem;
  }
  .blog_middle .w-richtext p,
  .blog_middle .w-richtext p.paragraph,
  .blog_middle .w-richtext li {
    font-size: 1rem;
  }
  .more-articles-inner {
    padding: 0 1.25rem;
  }
}

/* ─── Alpha Prime showcase card ─────────────────────────────────────────────
   On DESKTOP (≥992px): lock text to 26rem and anchor the image left edge
   past the text column so it never slides into the copy.
   On TABLET/MOBILE (<992px): restore Webflow's original stacked layout —
   image goes full-width above the text (order:-9999, position:static).     */

/* z-index safety net — applies at all sizes */
.showcase_card.is_prime .heading_wrapper.align {
  position: relative;
  z-index: 1;
}

/* Desktop-only overrides */
@media screen and (min-width: 992px) {
  .showcase_card.is_prime .heading_wrapper.align,
  .showcase_card.is_prime-2 .heading_wrapper.align {
    width: 26rem;
    max-width: 26rem;
  }

  .showcase_card.is_prime .alpha_prime-dashboard {
    position: absolute;
    top: auto;
    bottom: -11.5rem;
    left: 32rem;      /* anchored past text column, never slides left */
    right: auto;
    width: 46rem;
    margin: 0;
    order: unset;
  }
}

/* ─── CTA headline mobile fit ───────────────────────────────────────────────
   The footer-style CTA block ("Start Your $50,000 Alpha Futures Evaluation
   for $79/month") sits inside .cta_middle on every page. At ≤479px,
   Webflow ships a hardcoded `.set { width: 260px }` rule that makes the
   <h2 class="set"> narrower than its parent column, forcing the headline
   into 4-5 cramped lines on phones. Remove that constraint so the heading
   uses the full .cta_middle width and tighten the font-size + line-height
   so it lands in 2-3 comfortable lines.                                       */

@media screen and (max-width: 479px) {
  .cta_middle .set {
    width: auto;
    max-width: 100%;
    padding-left: .5rem;
    padding-right: .5rem;
    font-size: 1.65rem;
    line-height: 1.15;
  }
}

/* CTA wrapper width on mobile/tablet — Webflow ships .cta_middle { width: 60% }
   at ≤767px and { width: 90% } at ≤479px. The 60% slot is too narrow on
   phones (headline + paragraph wrap into too many short lines). Bump it to
   80% in the 480-767px band only; the ≤479px band is left at Webflow's 90%
   so smallest phones get full-width and just this mid range gets the bump. */

@media screen and (min-width: 480px) and (max-width: 767px) {
  .cta_middle {
    width: 80%;
  }
}

/* ─── CTA headline — desktop wrapper width tuned for clean 2-line wrap ─────
   The headline ("Start Your $50,000 Alpha Futures Evaluation for $79/month",
   with "Alpha Futures Evaluation" green-spanned, NO hard-coded <br>) wraps
   naturally based on .cta_middle's width. Width is tuned so on desktop it
   reads as 2 balanced lines:

       Start Your $50,000 Alpha Futures
       Evaluation for $79/month

   Webflow's default is 39rem (forces 3+ short lines on desktop). 70rem was
   too wide (everything on one line). 60rem is the sweet spot — narrow
   enough to push "Evaluation for $79/month" onto line 2 but wide enough
   that "Start Your $50,000 Alpha Futures" doesn't wrap further.

   text-wrap: balance helps redistribute if the line widths fall awkwardly.
   The mobile widths (60% / 80% / 90% bands) are deliberately untouched —
   the subtitle paragraph removed in the same change already gave mobile
   plenty of vertical breathing room. Top padding bumped to compensate. */

.cta_middle h2.set {
  padding-top: 2rem;
  text-wrap: balance;
}

@media screen and (min-width: 992px) {
  .cta_middle {
    width: 60rem;
  }
  .cta_middle h2.set {
    padding-top: 3rem;
  }
}

/* ─── Navbar scroll-state — universal dark background once scrolled ─────────
   Webflow ships an IX2 (interactions) animation that fades in `.backround`
   (the dark overlay div inside `.navbar`) when the user scrolls past a hero
   element. The trigger is page-specific and only fires reliably on the
   homepage — on other pages the navbar stays transparent forever, making
   it visually disappear over dark content (looks like sticky is broken).
   /js/nav-scrolled.js adds `.is-scrolled` to `.navbar` once scrollY > 30px
   universally. Mobile and desktop both honor this. Above-the-fold (0-30px)
   the navbar stays transparent so the homepage hero video still looks clean.

   Note: `transition` is deliberately scoped to background-color +
   backdrop-filter only so it doesn't accidentally animate other navbar
   properties Webflow may animate via IX2. */

.navbar,
.secondary_nav {
  transition: background-color 0.25s ease, backdrop-filter 0.25s ease;
}

.navbar.is-scrolled,
.secondary_nav.is-scrolled {
  background-color: rgba(13, 13, 16, 0.92) !important;
  -webkit-backdrop-filter: blur(10px);
  backdrop-filter: blur(10px);
}

/* ─── Contact-us hero — extra padding-top so heading clears the navbar ──────
   Webflow ships .contact_hero-section { padding-top: 5rem } at all
   breakpoints. The standard .hero_section used on homepage / about-us /
   how-it-works has padding-top: 23rem so it never has this problem;
   .contact_hero-section is the outlier. The 5rem default leaves the
   "Contact Us" tag uncomfortably close to the navbar bottom on every
   viewport up to ~1199px — both on mobile (where .navbar is fixed ≈100px
   tall) and on tablet/iPad Pro portrait (where .navbar is sticky and
   takes flow space). Bumped to 9rem at ≤1199px (covers phones, Webflow's
   tablet band, and iPad Pro portrait at 1024px). True desktop (≥1200px)
   keeps Webflow's 5rem default — the larger horizontal viewport makes
   that look balanced there. */

@media screen and (max-width: 1199px) {
  .contact_hero-section {
    padding-top: 9rem;
  }
}

/* ─── Hero button parity on mobile ─────────────────────────────────────────
   At ≤767px Webflow drops `.main_button` to height: 2.5rem + 1rem padding +
   0.9rem font, but only tweaks `.secondary_button`'s font-size — the
   secondary button keeps its tablet (≤991px) height of 2.9rem and
   1.5rem padding, so on phones it visibly towers over the primary
   "Start Trading" / "Start Evaluation" button next to it. Match the
   secondary button's metrics to the primary so they read as a balanced
   pair on every viewport. */

@media screen and (max-width: 767px) {
  .secondary_button {
    height: 2.5rem;
    min-height: 2.5rem;
    padding-left: 1rem;
    padding-right: 1rem;
    font-size: 0.9rem;
  }
}

/* ─── Homepage Alpha Prime card (re-import 4) ───────────────────────────────
   Re-import 4 (May 2026) introduced the new "is_prime-2" variant of the
   showcase card. Same DOM as before but the dashboard mockup foreground
   <img> is gone; instead a full-bleed Prime-Background-3.png photo of
   the Alpha Prime trading floor sits as the card background. CSS for
   .showcase_card.is_prime-2 lives in the auto-generated webflow.css in
   the export but we mirror it here so it survives Webflow re-imports
   (the .webflow.css file is regenerated each time).                          */

.showcase_card.is_prime-2 {
  background-image: image-set(
    url('../images/Prime-Background-3.webp') type('image/webp'),
    url('../images/Prime-Background-3.png') type('image/png')
  );
  background-position: 50%;
  background-size: cover;
  justify-content: flex-start;
  align-items: center;
  padding-top: 4rem;
  padding-bottom: 4rem;
  padding-left: 4rem;
  display: flex;
}

@media screen and (max-width: 991px) {
  .showcase_card.is_prime-2 {
    flex-flow: column;
    justify-content: flex-start;
    align-items: flex-start;
    height: auto;
  }
}

/* Re-import 5 (2026-05-20): on mobile (≤767px) the design swaps from a
   CSS background photo to a foreground <img class="image_absolute"> so
   the image controls aspect ratio + srcset properly. The card therefore
   needs to drop its own background-image + padding at those breakpoints
   so the foreground photo can fill the card cleanly above the text. */
@media screen and (max-width: 767px) {
  .showcase_card.is_prime-2 {
    background-image: none;
    padding: 0;
  }
}

@media screen and (max-width: 479px) {
  .showcase_card.is_prime-2 {
    background-image: none;
    height: auto;
    padding: 0;
  }
}

/* Foreground image inside .showcase_card.is_prime-2 — hidden on desktop
   (the CSS background does the work there), visible on mobile/tablet. */
.image_absolute {
  display: none;
}

@media screen and (max-width: 767px) {
  .image_absolute {
    display: block;
  }
}

/* ─── Admin-published articles: tables from .docx import ─────────────────── */
.rich-text-block.w-richtext table,
.rich-text-block.w-richtext .seo-comparison-table {
  width: 100%;
  border-collapse: collapse;
  margin: 1.5rem 0 2rem;
  font-size: 0.95rem;
}

.rich-text-block.w-richtext th,
.rich-text-block.w-richtext td {
  border: 1px solid rgba(255, 255, 255, 0.15);
  padding: 0.65rem 0.85rem;
  text-align: left;
  vertical-align: top;
}

.rich-text-block.w-richtext th {
  background: rgba(0, 224, 150, 0.15);
  font-weight: 600;
}

.rich-text-block.w-richtext .w-richtext-align-fullwidth {
  max-width: 100%;
  overflow-x: auto;
}

@media screen and (max-width: 767px) {
  .rich-text-block.w-richtext table,
  .rich-text-block.w-richtext .seo-comparison-table {
    display: block;
    width: 100%;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
}

/* how-it-works — Alpha Prime card spans full 3-col grid (zip w-node rule). */
.works_section ._3_col-grid > .liner_border:has(.showcase_card.is_prime-2) {
  grid-column: 1 / -1;
}

@media screen and (min-width: 992px) {
  .works_section ._3_col-grid > .liner_border:has(.showcase_card.is_prime-2) {
    grid-area: span 1 / span 3 / span 1 / span 3;
  }
}

/* ─── how-it-works hero dashboard image ─────────────────────────────────────
   Re-import 3 (May 2026) introduced new wrappers for the dashboard image
   in the hero of /how-it-works. We keep these rules in custom.css so they
   survive a Webflow re-export (the export adds them to the main
   alpha-futures-v2.webflow.css but that file is regenerated each import). */

.liner_border-3 {
  z-index: 1;
  color: #fff;
  background-color: #ddd0;
  background-image: linear-gradient(#ffffff26, #fff0 41%);
  border-radius: .9375rem;
  padding: .07rem;
  text-decoration: none;
  position: relative;
}

.liner_border-3.w--current {
  background-color: #000;
}

.dashboard_wrapper-2 {
  background-color: #0d0d10;
  border-radius: .9375rem;
  justify-content: center;
  align-items: center;
  height: auto;
  display: flex;
  overflow: clip;
}

.dashboard_wrapper-2 .image-3 {
  object-fit: cover;
  object-position: 0% 0%;
  width: 100%;
  height: auto;
  display: block;
}

@media screen and (max-width: 767px) {
  .dashboard_wrapper-2 {
    height: 20rem;
  }
}

/* ─── Resources listing — back link + dynamic tag pills ─────────────────────
   Used on /resources/all, /posts, /interviews, /events. The pills are
   rendered by ContentLoader.renderTabbed(); .resources_back-link sits
   above the page <h1>.                                                       */

/* Resources hub — hero fade must not bleed over blog section headings */
.platfroms_hero-section.mid {
  position: relative;
  overflow: hidden;
}

.platfroms_hero-section.mid .hero_video {
  overflow: hidden;
}

.assets_section {
  position: relative;
  z-index: 3;
  background-color: #000;
}

.assets_wrapper.top {
  position: relative;
  z-index: 4;
}

.resources_back-link {
  display: flex;
  margin-bottom: 1.5rem;
}

.resources_back-link a {
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  color: #b8bcc4;
  font-size: .875rem;
  font-weight: 500;
  letter-spacing: .02em;
  text-decoration: none;
  padding: .4rem .9rem .4rem .6rem;
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 999px;
  background-color: rgba(255, 255, 255, 0.02);
  transition: color .15s ease, border-color .15s ease, background-color .15s ease;
}

.resources_back-link a:hover {
  color: #fff;
  border-color: rgba(255, 255, 255, 0.18);
  background-color: rgba(255, 255, 255, 0.05);
}

.resources_back-link a::before {
  content: "←";
  display: inline-block;
  font-size: 1rem;
  line-height: 1;
}

/* Dynamic tag pills — built by content-loader.renderTabbed() */
.tag_pills {
  display: flex;
  flex-wrap: wrap;
  gap: .5rem;
  margin-top: 1rem;
  margin-bottom: 1.5rem;
}

.tag_pills button {
  appearance: none;
  -webkit-appearance: none;
  border: 1px solid rgba(255, 255, 255, 0.1);
  background-color: rgba(255, 255, 255, 0.03);
  color: #b8bcc4;
  font: inherit;
  font-size: .85rem;
  font-weight: 500;
  letter-spacing: .01em;
  padding: .45rem 1rem;
  border-radius: 999px;
  cursor: pointer;
  transition: color .15s ease, border-color .15s ease, background-color .15s ease;
}

.tag_pills button:hover {
  color: #fff;
  border-color: rgba(255, 255, 255, 0.2);
}

.tag_pills button.is_active {
  color: #0d0d10;
  background-color: #fff;
  border-color: #fff;
}

/* ─── about-us journey cards 04 + 05 (re-import 4) ──────────────────────────
   In the latest Webflow export the timeline gained a 5th card (Divento) and
   the existing Alpha Trader card moved from `is_4` → `alpha`. Webflow's
   `.webflow.css` will keep the OLD r3 mapping after every fresh export
   (where `.jurney.is_4` was Alpha Trader), so we hard-pin the correct
   backgrounds here so survives re-imports.

   - Card 04 `.jurney.alpha`        → Alpha-Trader-Dashboard_1.avif
   - Card 05 `.jurney.is_4` (Divento) → Divento-Cover-.avif behind a left
     gradient that fades the dark card to the dashboard cover, with the
     `Divento-Financials-Logo-new.svg` foreground placed by `.jurney_logo l`.
*/

.jurney.alpha {
  background-image: url('../images/Alpha-Trader-Dashboard_1.avif');
  background-position: 50%;
  background-size: cover;
}

.jurney.is_4 {
  background-image:
    linear-gradient(90deg, var(--_colors---brand--dark) 8%, #fff0 68%),
    url('../images/Divento-Cover-.avif');
  background-position: 0 0, 50%;
  background-size: auto, cover;
}

@media screen and (max-width: 991px) {
  .jurney.is_4,
  .jurney.alpha {
    background-position: 100% 100%;
    background-repeat: no-repeat;
    background-size: 73rem;
  }
  /* Re-apply Divento gradient on top of the right-anchored cover */
  .jurney.is_4 {
    background-image:
      linear-gradient(90deg, var(--_colors---brand--dark) 8%, #fff0 68%),
      url('../images/Divento-Cover-.avif');
    background-position: 0 0, 100% 100%;
    background-repeat: no-repeat, no-repeat;
    background-size: auto, 73rem;
  }
}

@media screen and (max-width: 767px) {
  .jurney.is_4,
  .jurney.alpha {
    background-size: 54rem;
  }
  .jurney.is_4 {
    background-size: auto, 54rem;
  }
}

@media screen and (max-width: 479px) {
  .jurney.is_4,
  .jurney.alpha {
    background-size: 47rem;
  }
  .jurney.is_4 {
    background-size: auto, 47rem;
  }
}

/* ─── /assets sticky tab strip ──────────────────────────────────────────────
   The category nav at the top of /assets (#equity-index / #currency / etc.)
   is `.tab_menu.auto`, already `position: sticky` from Webflow's CSS:
     - desktop:        top: 6rem
     - 480-991px:      top: 10vw
     - ≤479px:         position: relative (NOT sticky)

   We make that work in three small ways:

   1) `scroll-margin-top` on each section — so when a user clicks a tab the
      section scrolls *under* the sticky strip instead of being hidden
      behind it. Match the strip's effective height + margin:
        - desktop: ~6rem strip + 1.5rem breathing room = 7.5rem
        - tablet:  10vw + 4vw                          = 14vw
   2) In-page `#` tab clicks use `/js/assets-anchor-scroll.js` (zip: scroll
      section to viewport center). Other pages use landing-smooth-scroll.js.
   3) Defensive pin — guarantee `.tab_menu.auto` stays `position: sticky`
      on tablet/desktop (≥768px). At ≤767px the export hides `.tab_menu.auto`
      and shows `.tab_menu.dropdown` instead. Active-tab highlighting
      is handled in JS at the bottom of /assets, toggling the existing
      Webflow `.w--current` class which is already green in webflow.css. */

html {
  scroll-behavior: auto;
}

/* Hash targets under sticky navbar (Start Evaluation, nav CTAs, etc.) */
#pricing,
#evaluation {
  scroll-margin-top: 7.5rem;
}

@media screen and (max-width: 991px) {
  #pricing,
  #evaluation {
    scroll-margin-top: 5rem;
  }
}

@media screen and (min-width: 768px) {
  .tab_menu.auto {
    position: sticky;
  }
}

.assets_wrapper > .asset {
  scroll-margin-top: 7.5rem;
}

@media screen and (max-width: 991px) {
  .assets_wrapper > .asset {
    scroll-margin-top: 14vw;
  }
}

@media screen and (max-width: 479px) {
  .assets_wrapper > .asset {
    /* tab strip is no longer sticky here — just clear the navbar */
    scroll-margin-top: 5rem;
  }
}

/* ─── about-us card 02 trophy on small phones ───────────────────────────────
   The "$1M in Performance Fees Awarded" card has the trophy positioned with
   `inset: auto 0% 0% auto` (anchored to the bottom-right). Webflow's
   pre-fix mobile rule was `.image_right { margin-bottom: 0 }`, which made
   the trophy sit flush at the card's bottom edge inside the card's
   1.5rem padding — its bottom got clipped on phones (≤479px).
   The export's fixed value is -41px, which lets the trophy extend past
   the card's natural bottom edge so the full image is visible. Pinned
   here so any future Webflow regeneration that drifts back to 0 doesn't
   re-introduce the clip.                                                     */
@media screen and (max-width: 479px) {
  .jurney.is_2 .image_right {
    margin-bottom: -41px;
  }
}

/* ─── Balanced wrapping for traders section headings ───────────────────────
   Headings like "Trusted by Qualified Analysts" (/) and "Trusted by
   Thousands of Traders" (how-it-works, leaderboard, etc.) were wrapping
   with a lone last word on its own line. text-wrap: balance distributes
   text across lines more evenly. Scoped to the section heading wrappers
   only — not every h2 inside .traders_section (e.g. social benefit cards). */

section.traders_section .heading_wrapper-medium h2,
section.traders_section .heading_wrapper-medium-2 h2 {
  text-wrap: balance;
}

/* ─── Balanced wrapping for contact-us social heading ────────────────────────
   "Find Us Where You Already Scroll" (contact-us) was breaking unevenly
   ("Find Us Where You" / "Already Scroll"). The social intro paragraph in
   the same .heading_wrapper-medium is unique to this block site-wide. */

section.traders_section .heading_wrapper-medium:has(p.paragraph_small.text_700) h2 {
  text-wrap: balance;
}

/* ─── Balanced wrapping for about-us team heading ───────────────────────────
   "Meet the people behind Alpha" (about-us, The Team) was wrapping unevenly.
   The following .team_grid is unique site-wide, so :has(+ .team_grid) scopes
   this to that one heading wrapper only. */

section.tools_section .heading_wrapper-medium:has(+ .team_grid) h2 {
  text-wrap: balance;
}

/* ─── Homepage hero headings — wider desktop cap, narrower paragraph ───────
   Webflow ships .home_hero-headings { width: 46rem } on desktop, which
   capped the new h1 ("Trade like a Professional Futures Analyst") at 3 lines
   with "Analyst" alone on its own row. Bumped wrapper to 64rem (≥992px only)
   so the h1 fits as a balanced 2-line hero. To keep the subhead paragraph
   from stretching to the wrapper's full width (which looked too long), the
   <h2 class="paragraph_large"> below the h1 is capped to its original 46rem
   width. Net result: wide h1, comfortable paragraph, intact mobile widths. */

@media screen and (min-width: 992px) {
  .home_hero-headings {
    width: 64rem;
  }
  .home_hero-headings .paragraph_large {
    max-width: 46rem;
  }
}

/* ─── Traders-section heading wrapper — wider on desktop so 1 line fits ─────
   .heading_wrapper-medium ships at width: 32rem (≈512px) which is too narrow
   for "Trusted by Qualified Analysts" / "Trusted by Thousands of Traders"
   at the desktop h2 font size (3.125rem ≈ 50px) — they wrap to 2 lines. We
   want these section headings on ONE line on desktop. Bumped to 60rem
   (≈960px) on desktop only, scoped to section.traders_section so other
   pages that use .heading_wrapper-medium for unrelated sections aren't
   touched. The .heading_wrapper-medium-2 (premium-offer variant) gets the
   same treatment. Tablet/mobile widths (100% / 90%) remain untouched. */

@media screen and (min-width: 992px) {
  section.traders_section .heading_wrapper-medium,
  section.traders_section .heading_wrapper-medium-2 {
    width: 60rem;
  }
}

/* ─── FAQ section — full-bleed on mobile ────────────────────────────────────
   Webflow ships .faq_section wrapped in .container_large which has
   1.5rem (and 1rem at ≤479px) of horizontal page gutter. On mobile the user
   wants the dark FAQ pill (.faq_wrapper) to span the full viewport width
   edge-to-edge. Zero only the container's horizontal padding inside
   .faq_section at ≤767px — the .faq_wrapper keeps its inner padding so the
   FAQ questions/answers have breathing room from the pill edges. Desktop
   and tablet (≥768px) untouched. */

@media screen and (max-width: 767px) {
  .faq_section .container_large {
    padding-left: 0;
    padding-right: 0;
  }
}

/* ─── leaderboard hero trophies: load-time fade-in (replaces removed IX2) ── */

@keyframes trophyFadeIn {
  from {
    opacity: 0;
    transform: translateY(8px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.trophy_hero img.tophy {
  opacity: 0;
  animation: trophyFadeIn 0.7s cubic-bezier(0.22, 1, 0.36, 1) forwards;
  animation-delay: 0.1s;
}

.trophy_hero img.tophy.l {
  animation-delay: 0.35s;
}

/* ─── Pricing tables: strikethrough monthly price in Qualified view ────────
   Evaluation monthly fees ($79/mo etc.) do not apply once qualified. When the
   Evaluation / Qualified toggle is on Qualified, .is-qualified-pricing is set
   on .pricing_section (or #pricing on the landing page) by the inline toggle
   script — headline prices and “No Activation Fee” badges read as crossed-out. */

.pricing_section.is-qualified-pricing .pricing_card .text_l,
.pricing_section.is-qualified-pricing .pricing_card h3 .text_l,
.pricing_section.is-qualified-pricing .pricing_card-2 .text_l-2,
#pricing.is-qualified-pricing .pricing_card-2 .text_l-2,
#pricing.is-qualified-pricing .prcing_heading .text_l-2 {
  color: #6b6b6b !important;
  text-decoration: line-through;
  text-decoration-thickness: 1px;
  text-decoration-color: #9a9a9a;
}

.pricing_section.is-qualified-pricing .tag_wrapper,
.pricing_section.is-qualified-pricing .tag_wrapper-2,
#pricing.is-qualified-pricing .tag_wrapper-2 {
  opacity: 0.85;
}

.pricing_section.is-qualified-pricing .tag_wrapper:not(.tag_wrapper-zero) > div,
.pricing_section.is-qualified-pricing .tag_wrapper-2 > div,
#pricing.is-qualified-pricing .tag_wrapper-2 > div {
  color: #6b6b6b !important;
  text-decoration: line-through;
  text-decoration-thickness: 1px;
  text-decoration-color: #9a9a9a;
}

/* Zero plan: long “no activation fee” badge — keep readable, never strike through */
.tab_pane[data-w-tab="Zero"] .tag_wrapper-zero {
  max-width: 100%;
  text-align: center;
  line-height: 1.25;
  font-size: 0.625rem;
}

/* Pricing card headings: activation-fee badge above title/price (not below) */
.prcing_heading {
  flex-direction: column-reverse;
  align-items: stretch;
  width: 100%;
}

.prcing_heading .tag_wrapper,
.prcing_heading .tag_wrapper-zero,
.prcing_heading .tag_wrapper-2 {
  width: 100%;
  align-self: stretch;
}

/* ─── Homepage stats-showcase — headings ~3% smaller only ─────────────────
   Zip layout unchanged; body copy uses default webflow sizes. */

.section_stats-showcase .showcase_card.home > h2.heading_3 {
  font-size: calc(var(--typography--h3) * 0.97);
}

/* Platforms: AlphaTrader — anchor rainbow glow under dashboard (right), not copy */
@media screen and (min-width: 992px) {
  .platfroms_section #alpha_trader .alpha_trader-bg {
    z-index: 1;
    left: auto;
    right: -28rem;
    margin-left: 0;
    margin-bottom: -19.75rem;
    transform: translateX(18rem);
  }
}

/* --- zip8 platforms: Deepcharts + Quantower (Webflow export 8) --- */
.liner_border.chart {
  background-image: linear-gradient(#522feb80, #6b51df00 65%);
}

.platfrom_wrapper.is_quant {
  background-image: linear-gradient(315deg, #0047cc66, #fff0);
  justify-content: flex-start;
  align-items: center;
  padding-bottom: 5rem;
  padding-left: 5rem;
  padding-right: 5rem;
}

.dashboard_left.is_deep {
  margin-bottom: -8.125rem;
  bottom: -1rem;
}

@media screen and (max-width: 991px) {
  .platfrom_wrapper.is_quant {
    padding: 3rem;
  }

  .dashboard_left.is_deep {
    margin-bottom: 0;
  }
}

@media screen and (max-width: 767px) {
  .platfrom_wrapper.is_quant {
    padding: 1rem;
  }
}

