/* Astro fixes — authoritative overrides for Elementor-rendered sections (DEV-350) */
/* Stats band: black → dark-teal gradient (matches live; cascade fix) */
.elementor-1578 .elementor-element.elementor-element-716efd5 {
  background-color: #000000 !important;
  background-image: linear-gradient(180deg, #000000 0%, #1c2b31 100%) !important;
}

/* Students carousel: desktop 2-up (1600px+ = live behavior), 1-up below */
.elementor-element-497d06d .swiper .swiper-slide {
  width: calc(50% - 10px) !important;
  flex: 0 0 auto !important;
}
@media (max-width: 767px) {
  .elementor-element-497d06d .swiper .swiper-slide {
    width: 100% !important;
  }
}

/* Sticky promo bar — elementor sticky behavior shim (CSS-only, top bar 199267c/01-promo-bar) */
.elementor-element-199267c { position: -webkit-sticky; position: sticky; top: 0; z-index: 50; }

/* =========================================================================
   DEV-676 (D-B63) — pre-cutover a11y fixes. v4 = v3 + the blocks below.
   Scope: contrast + touch targets on /course/ only. Values only; no redesign,
   no layout change. (File renamed v3 → v4 so the CF-cached CSS URL busts.)
   ========================================================================= */

/* Contrast — guarantee lines. Elementor-scoped in page-course.css (0,4,0), so
   overridden here at the same specificity (this file loads after page-course).
   DEV-691 correction: c5d5476 is the Students section line (light #fff bg) →
   #9B9B9B = 2.59:1, keep the darker #4b5563 = 7.05:1.
   1b8a28d is the UdemyBestseller/pivot line on that section's dark gradient
   (#343434) — its WP value #A3A3A3 (4.96:1) is correct; the wrapper paints that
   gradient always now (static `e-lazyloaded`, DEV-691), so the light value is
   safe for the off-screen a11y audit. (The DEV-676 #4b5563 darkened it against
   a then-missing background.) */
.elementor-1578 .elementor-element.elementor-element-c5d5476 .elementor-icon-list-text { color: #4b5563; }
.elementor-1578 .elementor-element.elementor-element-1b8a28d .elementor-icon-list-text { color: #a3a3a3; }

/* DEV-678 — house heart used in the "…My Students" headings (replaces the ❤️
   emoji so it renders identically on every OS/browser; canon D30). Sizes with
   the heading. */
.ahr-heading-heart {
  display: inline-block;
  width: 0.82em;
  height: 0.82em;
  vertical-align: -0.06em;
  margin-left: 0.14em;
}

/* DEV-678 — pagination bullets: use the LIVE geometry from page-course.css
   (7px desktop / 6px mobile, #007EBD active / #D6D6D6 idle, 6px / 4px gap) and
   render them NON-interactive (Swiper init without `clickable`), so they are
   indicators rather than touch targets.
   The earlier 24×24 hit-box override was REMOVED: because .swiper-pagination is
   absolutely positioned at the wrapper's bottom, the taller box pushed the dots
   up over the image strip (looked like "overlapping") and quadrupled the pitch.
   No rule needed here — the elementor per-widget rules already give the live
   look; the a11y gate passes because non-interactive dots are exempt from the
   24×24 target minimum (WCAG 2.5.8 / axe target-size). */

/* Contrast — desktop-only home header CTA: #fff on #33a2e7 = 2.81:1 (same
   family as the /course/ buttons, found at 1440 — the mobile audit hides this
   header button). astra-inline.css is loaded after this file, so this uses a
   higher specificity (0,3,0 > astra's 0,2,0) instead of relying on order.
   #1974bd = 4.91:1. */
.ast-header-button-1 .ast-builder-button-wrap .ast-custom-button { background: #1974bd; }

/* D-B64 — home skip-link (live parity: the port dropped it). Hidden via the
   Astra/WP .screen-reader-text utility; revealed on keyboard focus. */
.skip-link:focus,
.skip-link:focus-visible {
  clip: auto;
  width: auto;
  height: auto;
  margin: 0;
  position: absolute;
  left: 6px;
  top: 7px;
  z-index: 100000;
  background: #ffffff;
  color: #111827;
  padding: 8px 14px;
  border-radius: 6px;
  box-shadow: 0 2px 10px rgba(17, 24, 39, 0.25);
  font: 600 14px/1.2 Inter, system-ui, sans-serif;
  text-decoration: none;
}
