/* Restore the existing GSAP/sticky stack after the framed skin's relative cells.
 * The initializer still owns the 981px breakpoint, viewport fit and reduced motion.
 */
body.jvds-growth-framed .jvds-growth-links .jvds-growth-feature-grid.is-growth-stack > .jvds-growth-feature-card {
  position: sticky;
}
/* Keyboard users can read each linked card in normal flow without overlapping it. */
body.jvds-growth-framed .jvds-growth-links .jvds-growth-feature-grid.is-growth-stack:has(> .jvds-growth-feature-card:focus-visible) > .jvds-growth-feature-card {
  position: relative;
}

/* A whole-card hover keeps the action black; only the action's own hover fills it.
 * These opt-in selectors outrank page skins and the older parent-hover fallbacks.
 */
body[class*="-framed"] .jvds-growth.jvds-growth-links .jvds-growth-feature-card .jvds-growth-feature-action.jvds-framed-pixel-action.jvds-pixel-button.is-jvds-framed-pixel-ready {
  --framed-action-bg: #000 !important;
  --framed-action-ink: var(--jvds-pixel-action-ink) !important;
  --jvds-pixel-action-base: #000;
  --jvds-pixel-action-ink: #fff;
}
body[class*="-framed"] .jvds-growth.jvds-growth-links .jvds-growth-feature-card .jvds-growth-feature-action.jvds-framed-pixel-action.jvds-pixel-button.is-jvds-framed-pixel-ready > :is(.service-hero-action-arrow, .service-hero-action-text) {
  color: var(--jvds-pixel-action-ink) !important;
  -webkit-text-fill-color: currentColor !important;
}
/* Editorial span margins must not shorten the fill or pull its pixel rows apart. */
body[class*="-framed"] .jvds-growth.jvds-growth-links .jvds-growth-feature-card .jvds-growth-feature-action > .jvds-pixel-button-bg {
  inset: 0;
  width: auto;
  height: auto;
  margin: 0;
}
body[class*="-framed"] .jvds-growth.jvds-growth-links .jvds-growth-feature-card .jvds-growth-feature-action .jvds-pixel-button-cell {
  margin: 0;
}

@media (min-width: 801px) and (hover: hover) and (pointer: fine) {
  body[class*="-framed"] .jvds-growth.jvds-growth-links .jvds-growth-feature-card .jvds-growth-feature-action.jvds-framed-pixel-action.jvds-pixel-button.is-jvds-framed-pixel-ready.is-pixel-active {
    --jvds-pixel-action-ink: #000;
  }
  /* Safari retains the existing cell-free fill, scoped to the visual action. */
  body[class*="-framed"] .jvds-growth.jvds-growth-links .jvds-growth-feature-card .jvds-growth-feature-action.jvds-framed-pixel-action.jvds-pixel-button.is-jvds-framed-pixel-ready.is-jvds-webkit-lite > .jvds-pixel-button-bg {
    opacity: 0;
  }
  body[class*="-framed"] .jvds-growth.jvds-growth-links .jvds-growth-feature-card .jvds-growth-feature-action.jvds-framed-pixel-action.jvds-pixel-button.is-jvds-framed-pixel-ready.is-jvds-webkit-lite:is(:hover, .is-pixel-active) > .jvds-pixel-button-bg {
    opacity: 1;
  }
}

/* Touch and reduced motion use the same colors instantly, without generated cells. */
@media (max-width: 800px), (hover: none), (pointer: coarse), (prefers-reduced-motion: reduce) {
  body[class*="-framed"] .jvds-growth.jvds-growth-links .jvds-growth-feature-card .jvds-growth-feature-action.jvds-framed-pixel-action.jvds-pixel-button.is-jvds-framed-pixel-ready:is(:hover, :active),
  body[class*="-framed"] .jvds-growth.jvds-growth-links .jvds-growth-feature-card:focus-visible .jvds-growth-feature-action.jvds-framed-pixel-action.jvds-pixel-button.is-jvds-framed-pixel-ready {
    --jvds-pixel-action-base: #e0f94c;
    --jvds-pixel-action-ink: #000;
  }
}
