.gymful-pricing-cards,
.gymful-pricing-cards * {
  box-sizing: border-box;
}

.gymful-pricing-cards {
  --gpc-overflow-safe-space: 34px;
  --gpc-overflow-safe-space-mobile: 22px;
  width: 100%;
  position: relative;
  isolation: isolate;
  overflow: visible !important;
}

.gymful-pricing-cards__inner {
  width: 100%;
  margin-inline: auto;
  overflow: visible !important;
}

.gpc-layout {
  width: 100%;
  overflow: visible !important;
  padding-block: var(--gpc-overflow-safe-space);
}

.gpc-cards {
  width: 100%;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  align-items: stretch;
  overflow: visible !important;
}

.gpc-card {
  --gpc-card-scale: 1;
  --gpc-featured-border-color: #C6B04F;

  position: relative;
  overflow: visible;
  display: flex;
  flex-direction: column;
  min-width: 0;
  border: 0 !important;
  background-clip: border-box;
  transform: scale(var(--gpc-card-scale, 1));
  transform-origin: center center;
  will-change: transform;
  transition:
    transform 0.35s cubic-bezier(.19, 1, .22, 1),
    box-shadow 0.35s cubic-bezier(.19, 1, .22, 1),
    border-color 0.35s cubic-bezier(.19, 1, .22, 1);
}

.gpc-card::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 5;
  border: 1px solid #CFC8BC;
  border-radius: inherit;
  pointer-events: none;
  transition:
    border-color 0.35s cubic-bezier(.19, 1, .22, 1),
    border-width 0.35s cubic-bezier(.19, 1, .22, 1),
    box-shadow 0.65s cubic-bezier(.19, 1, .22, 1);
}

.gpc-card--featured {
  --gpc-card-scale: 1.025;
  z-index: 2;
}

.gpc-card--featured::after {
  border-color: var(--gpc-featured-border-color, #C6B04F);
  border-width: 2px;
}

.gpc-featured-border-animated .gpc-card--featured {
  animation: gpcFeaturedCardGlow var(--gpc-featured-border-duration, 3.8s) cubic-bezier(.19, 1, .22, 1) infinite;
}

.gpc-featured-border-animated .gpc-card--featured::after {
  animation: gpcFeaturedBorderPulse var(--gpc-featured-border-duration, 3.8s) cubic-bezier(.19, 1, .22, 1) infinite;
}

@keyframes gpcFeaturedCardGlow {
  0%, 100% {
    box-shadow: 0 0 0 0 rgba(198,176,79,0);
  }
  50% {
    box-shadow: 0 0 34px 0 var(--gpc-featured-border-glow, rgba(198,176,79,0.26));
  }
}

@keyframes gpcFeaturedBorderPulse {
  0%, 100% {
    box-shadow:
      inset 0 0 0 0 var(--gpc-featured-border-glow, rgba(198,176,79,0)),
      0 0 0 0 rgba(198,176,79,0);
  }
  45% {
    box-shadow:
      inset 0 0 0 1px var(--gpc-featured-border-glow, rgba(198,176,79,0.18)),
      0 0 24px 0 var(--gpc-featured-border-glow, rgba(198,176,79,0.24));
  }
  65% {
    box-shadow:
      inset 0 0 0 2px var(--gpc-featured-border-glow, rgba(198,176,79,0.28)),
      0 0 34px 0 var(--gpc-featured-border-glow, rgba(198,176,79,0.32));
  }
}

.gpc-card__top,
.gpc-card__price-wrap,
.gpc-card__description,
.gpc-card__button-wrap {
  position: relative;
  z-index: 2;
}

.gpc-card__eyebrow {
  font-size: 15px;
  line-height: 1.2;
  font-weight: 600;
}

.gpc-card__heading {
  margin: 0;
  font-size: clamp(42px, 4vw, 70px);
  line-height: 0.95;
  letter-spacing: -0.05em;
  font-weight: 800;
  text-transform: uppercase;
}

.gpc-card__spacer {
  flex: 1 1 auto;
  pointer-events: none;
}

.gpc-card__price {
  font-size: clamp(34px, 3vw, 54px);
  line-height: 0.95;
  letter-spacing: -0.035em;
  font-weight: 800;
}

.gpc-card__price-suffix {
  margin-top: 5px;
  font-size: 13px;
  line-height: 1.15;
  font-weight: 600;
}

.gpc-card__description {
  max-width: 660px;
  font-size: clamp(18px, 1.25vw, 27px);
  line-height: 1.45;
  letter-spacing: -0.015em;
}

.gpc-card__button-wrap {
  display: flex;
  align-items: center;
  justify-content: flex-start;
}

.gpc-button {
  --gpc-btn-text: #111;
  --gpc-btn-bg: transparent;
  --gpc-btn-border: #C6B04F;
  --gpc-btn-hover-text: #111;
  --gpc-btn-hover-bg: #C6B04F;
  --gpc-btn-fill: #C6B04F;

  position: relative;
  overflow: hidden;
  isolation: isolate;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: auto;
  padding: 14px 28px;
  min-height: 48px;
  max-width: max-content;
  min-width: 0;
  flex: 0 0 auto;
  border: 1px solid var(--gpc-btn-border);
  background-color: var(--gpc-btn-bg);
  color: var(--gpc-btn-text);
  text-decoration: none;
  cursor: pointer;
  line-height: 1;
  white-space: nowrap;
  transform: translateZ(0);
  transition:
    color 0.35s cubic-bezier(.19, 1, .22, 1),
    border-color 0.35s cubic-bezier(.19, 1, .22, 1),
    background-color 0.35s cubic-bezier(.19, 1, .22, 1);
}

.gpc-button::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  border-radius: inherit;
  background: var(--gpc-btn-fill);
  clip-path: circle(0% at 0% 100%);
  pointer-events: none;
  will-change: clip-path;
  transition: clip-path 0.82s cubic-bezier(.19, 1, .22, 1);
}

.gpc-button:hover,
.gpc-button:focus-visible {
  color: var(--gpc-btn-hover-text);
  border-color: var(--gpc-btn-hover-bg);
}

.gpc-button:hover::before,
.gpc-button:focus-visible::before {
  clip-path: circle(155% at 0% 100%);
}

.gpc-button__text,
.gpc-button__icon {
  position: relative;
  z-index: 3;
}

.gpc-button__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  line-height: 1;
  flex: 0 0 auto;
  transition: transform 0.35s cubic-bezier(.19, 1, .22, 1);
}

.gpc-button__icon svg,
.gpc-button__icon i {
  width: 1em;
  height: 1em;
  display: block;
  fill: currentColor;
}

.gpc-button__icon img {
  width: 1em;
  height: 1em;
  display: block;
  object-fit: contain;
  flex: 0 0 auto;
}

.gpc-button:hover .gpc-button__icon,
.gpc-button:focus-visible .gpc-button__icon {
  transform: translate(3px, -2px);
}

.gpc-button--filled,
.gpc-button--featured,
.gpc-button--neat {
  background-color: var(--gpc-btn-bg, #C6B04F);
}

.gpc-button--neat {
  background: var(--gpc-btn-bg, #C6B04F);
}

.gpc-neat-canvas {
  position: absolute !important;
  inset: 0 !important;
  z-index: 0 !important;
  display: block !important;
  width: 100% !important;
  height: 100% !important;
  min-width: 100% !important;
  min-height: 100% !important;
  border-radius: inherit !important;
  pointer-events: none !important;
  opacity: 1;
  background: var(--gpc-btn-bg, #C6B04F);
}

.gpc-card__ribbon {
  position: absolute;
  z-index: 6;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 12px;
  line-height: 1;
  font-weight: 800;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  transform-origin: center;
  pointer-events: none;
}

.gymful-pricing-cards__footer {
  width: 100%;
}

.gpc-mobile-nav {
  display: none;
  align-items: center;
  justify-content: center;
  gap: 14px;
  margin-top: 22px;
}

.gpc-pagination {
  position: static;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  width: auto !important;
}

.gpc-pagination .swiper-pagination-bullet {
  display: block;
  border-radius: 999px;
  opacity: 1;
  margin: 0 !important;
}

.gpc-arrow {
  appearance: none;
  border: 0;
  background: transparent;
  color: #111;
  cursor: pointer;
  font-size: 20px;
  line-height: 1;
  padding: 6px;
}

@media (max-width: 1024px) {
  .gymful-pricing-cards[data-carousel-breakpoint="1024"] .gpc-layout,
  .gymful-pricing-cards .gpc-layout.swiper-initialized {
    overflow: visible;
  }
}

@media (max-width: 767px) {
  .gpc-layout.swiper-initialized .gpc-card--featured {
    --gpc-card-scale: 1;
  }

  .gpc-cards {
    display: flex;
    grid-template-columns: none;
  }

  .gpc-layout {
    overflow: visible;
  }

  .gpc-card {
    flex: 0 0 auto;
  }

  .gpc-mobile-nav {
    display: flex;
  }

  .gymful-pricing-cards[data-gpc-arrows="no"] .gpc-arrow,
  .gymful-pricing-cards[data-gpc-pagination="no"] .gpc-pagination {
    display: none;
  }
}

.gpc-layout.swiper-initialized {
  overflow: visible;
}

.gpc-layout.swiper-initialized .gpc-cards {
  display: flex;
  gap: 0 !important;
}

.gpc-layout.swiper-initialized .gpc-card {
  flex: 0 0 auto;
}

.gpc-layout:not(.swiper-initialized) .gpc-card.swiper-slide {
  width: auto;
  flex-shrink: 1;
}


/* v1.3.1 — overflow safe-space patch
   Allows featured-card scale, animated border/glow and corner ribbon to breathe vertically
   without being clipped by Elementor containers or responsive wrappers. */
.gymful-pricing-cards,
.gymful-pricing-cards__inner,
.gymful-pricing-cards .gpc-layout,
.gymful-pricing-cards .gpc-cards {
  overflow: visible !important;
}

.gymful-pricing-cards .gpc-layout {
  padding-top: var(--gpc-overflow-safe-space, 34px) !important;
  padding-bottom: var(--gpc-overflow-safe-space, 34px) !important;
}

.gymful-pricing-cards .gpc-card {
  overflow: visible !important;
}

.gymful-pricing-cards .gpc-card::after {
  overflow: visible !important;
}

.gymful-pricing-cards .gpc-card__ribbon {
  backface-visibility: hidden;
  -webkit-font-smoothing: antialiased;
}

@media (max-width: 767px) {
  .gymful-pricing-cards .gpc-layout {
    padding-top: var(--gpc-overflow-safe-space-mobile, 22px) !important;
    padding-bottom: var(--gpc-overflow-safe-space-mobile, 22px) !important;
  }

  .gymful-pricing-cards .gpc-layout.swiper-initialized {
    overflow-x: hidden !important;
    overflow-y: visible !important;
  }
}

@media (prefers-reduced-motion: reduce) {
  .gpc-card,
  .gpc-button,
  .gpc-button::before,
  .gpc-button__icon {
    transition: none !important;
  }

  .gpc-featured-border-animated .gpc-card--featured,
  .gpc-featured-border-animated .gpc-card--featured::after {
    animation: none !important;
  }
}

/* v1.3.0 — NEAT button aligned with COMMIT Megamenu button system */
.gymful-pricing-cards .gpc-button--neat.commit-megamenu-button--primary {
  position: relative !important;
  overflow: hidden !important;
  isolation: isolate;
  background: var(--gpc-btn-bg, #C6B04F) !important;
  border: 1px solid var(--gpc-btn-border, #C6B04F) !important;
  color: var(--gpc-btn-text, #111111) !important;
  border-radius: 999px;
  transition:
    color 0.35s cubic-bezier(.19, 1, .22, 1),
    border-color 0.35s cubic-bezier(.19, 1, .22, 1);
}

.gymful-pricing-cards .gpc-button--neat.commit-megamenu-button--primary .commit-neat-canvas,
.gymful-pricing-cards .gpc-button--neat.commit-megamenu-button--primary .gpc-neat-canvas {
  position: absolute !important;
  inset: 0 !important;
  display: block !important;
  width: 100% !important;
  height: 100% !important;
  min-width: 100% !important;
  min-height: 100% !important;
  z-index: 0 !important;
  opacity: 1 !important;
  border-radius: inherit !important;
  pointer-events: none !important;
  transform: none !important;
  background: var(--gpc-btn-bg, #C6B04F) !important;
}

.gymful-pricing-cards .gpc-button--neat.commit-megamenu-button--primary::before {
  content: "";
  position: absolute;
  z-index: 1;
  width: 190%;
  aspect-ratio: 1 / 1;
  left: -65%;
  bottom: -145%;
  inset: auto auto -145% -65%;
  border-radius: 999px;
  background: var(--gpc-btn-fill, var(--gpc-btn-hover-bg, #C6B04F));
  transform: scale(0) translate3d(0, 0, 0);
  transform-origin: center;
  opacity: 1;
  pointer-events: none;
  will-change: transform;
  clip-path: none !important;
  transition: transform 0.78s cubic-bezier(.19, 1, .22, 1);
}

.gymful-pricing-cards .gpc-button--neat.commit-megamenu-button--primary:hover,
.gymful-pricing-cards .gpc-button--neat.commit-megamenu-button--primary:focus-visible {
  color: var(--gpc-btn-hover-text, #111111) !important;
  border-color: var(--gpc-btn-hover-bg, #D8C55C) !important;
}

.gymful-pricing-cards .gpc-button--neat.commit-megamenu-button--primary:hover::before,
.gymful-pricing-cards .gpc-button--neat.commit-megamenu-button--primary:focus-visible::before {
  transform: scale(1) translate3d(18%, -18%, 0);
}

.gymful-pricing-cards .gpc-button--neat .gpc-button__content,
.gymful-pricing-cards .gpc-button--neat .commit-button__content,
.gymful-pricing-cards .gpc-button--neat .gpc-button__text,
.gymful-pricing-cards .gpc-button--neat .commit-button__label,
.gymful-pricing-cards .gpc-button--neat .gpc-button__icon,
.gymful-pricing-cards .gpc-button--neat .commit-button__icon {
  position: relative !important;
  z-index: 3 !important;
}

.gymful-pricing-cards .gpc-button--neat .gpc-button__content,
.gymful-pricing-cards .gpc-button--neat .commit-button__content {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: inherit;
}

.gymful-pricing-cards .gpc-button--neat .gpc-button__icon,
.gymful-pricing-cards .gpc-button--neat .commit-button__icon {
  transition: transform 0.35s cubic-bezier(.19, 1, .22, 1);
}

.gymful-pricing-cards .gpc-button--neat:hover .gpc-button__icon,
.gymful-pricing-cards .gpc-button--neat:focus-visible .gpc-button__icon,
.gymful-pricing-cards .gpc-button--neat:hover .commit-button__icon,
.gymful-pricing-cards .gpc-button--neat:focus-visible .commit-button__icon {
  transform: translateX(3px);
}

/* v1.3.2 — ribbon corner clipping patch
   The card itself must stay overflow: visible for the featured scale/glow, but the
   diagonal ribbon should be clipped to the card corner like the original design. */
.gymful-pricing-cards .gpc-card__ribbon-clip {
  position: absolute;
  inset: 0;
  z-index: 6;
  display: block;
  overflow: hidden !important;
  border-radius: inherit;
  pointer-events: none;
  transform: translateZ(0);
}

.gymful-pricing-cards .gpc-card__ribbon-clip .gpc-card__ribbon {
  z-index: 1;
}


/* v1.3.5 — optional image/logo above description */
.gpc-card__title-image-wrap {
  position: relative;
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: flex-start;
  width: 100%;
  margin-top: 18px;
  margin-bottom: 16px;
  line-height: 0;
}

.gpc-card__title-image {
  display: block;
  width: 120px;
  max-width: 100%;
  max-height: 64px;
  height: auto;
  object-fit: contain;
}

/* v1.3.6 — optional per-card full background image/video, text inversion and price size variants */
.gymful-pricing-cards {
  --gpc-price-small-size: 42px;
  --gpc-price-large-size: 68px;
}

.gymful-pricing-cards .gpc-card--has-bg-media {
  background-color: #111111;
}

.gymful-pricing-cards .gpc-card__bg-clip {
  position: absolute;
  inset: 0;
  z-index: 0;
  overflow: hidden !important;
  border-radius: inherit;
  pointer-events: none;
  transform: translateZ(0);
}

.gymful-pricing-cards .gpc-card__bg-media,
.gymful-pricing-cards .gpc-card__bg-overlay {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

.gymful-pricing-cards .gpc-card__bg-media {
  z-index: 0;
}

.gymful-pricing-cards .gpc-card__bg-overlay {
  z-index: 1;
  background: var(--gpc-bg-overlay-color, #000000);
  opacity: var(--gpc-bg-overlay-opacity, 0.42);
}

.gymful-pricing-cards .gpc-card__bg-image,
.gymful-pricing-cards .gpc-card__bg-video {
  display: block !important;
  width: 100% !important;
  height: 100% !important;
  max-width: none !important;
  max-height: none !important;
  object-fit: var(--gpc-bg-object-fit, cover) !important;
  object-position: var(--gpc-bg-object-position, center center) !important;
}

.gymful-pricing-cards .gpc-card--has-bg-media .gpc-card__top,
.gymful-pricing-cards .gpc-card--has-bg-media .gpc-card__price-wrap,
.gymful-pricing-cards .gpc-card--has-bg-media .gpc-card__title-image-wrap,
.gymful-pricing-cards .gpc-card--has-bg-media .gpc-card__description,
.gymful-pricing-cards .gpc-card--has-bg-media .gpc-card__button-wrap,
.gymful-pricing-cards .gpc-card--has-bg-media .gpc-card__spacer {
  position: relative;
  z-index: 2;
}

.gymful-pricing-cards .gpc-card--invert-text .gpc-card__eyebrow,
.gymful-pricing-cards .gpc-card--invert-text .gpc-card__heading,
.gymful-pricing-cards .gpc-card--invert-text .gpc-card__price,
.gymful-pricing-cards .gpc-card--invert-text .gpc-card__price-suffix,
.gymful-pricing-cards .gpc-card--invert-text .gpc-card__description {
  color: #ffffff !important;
}

/* v1.3.9 — background-media inversion should affect only normal/non-featured buttons.
   Featured cards keep their standard gold button with black text/icon.
   For normal inverted cards, use the dedicated white upload icon and turn it black on hover. */
.gymful-pricing-cards .gpc-card--invert-text:not(.gpc-card--featured) .gpc-button:not(.gpc-button--featured):not(:hover):not(:focus-visible) {
  --gpc-btn-text: #ffffff;
  color: #ffffff !important;
}

.gymful-pricing-cards .gpc-card--invert-text:not(.gpc-card--featured) .gpc-button:not(.gpc-button--featured):not(:hover):not(:focus-visible) .gpc-button__text,
.gymful-pricing-cards .gpc-card--invert-text:not(.gpc-card--featured) .gpc-button:not(.gpc-button--featured):not(:hover):not(:focus-visible) .gpc-button__icon,
.gymful-pricing-cards .gpc-card--invert-text:not(.gpc-card--featured) .gpc-button:not(.gpc-button--featured):not(:hover):not(:focus-visible) .commit-button__label,
.gymful-pricing-cards .gpc-card--invert-text:not(.gpc-card--featured) .gpc-button:not(.gpc-button--featured):not(:hover):not(:focus-visible) .commit-button__icon {
  color: #ffffff !important;
}

.gymful-pricing-cards .gpc-button--invert-bg-normal .gpc-button__icon-img--invert-bg {
  filter: none;
}

.gymful-pricing-cards .gpc-button--invert-bg-normal:hover .gpc-button__icon-img--invert-bg,
.gymful-pricing-cards .gpc-button--invert-bg-normal:focus-visible .gpc-button__icon-img--invert-bg {
  filter: brightness(0) saturate(100%);
}

.gymful-pricing-cards .gpc-card--invert-text .gpc-card__title-image {
  position: relative;
  z-index: 2;
}

.gymful-pricing-cards .gpc-card--price-small .gpc-card__price {
  font-size: var(--gpc-price-small-size, 42px) !important;
}

.gymful-pricing-cards .gpc-card--price-large .gpc-card__price {
  font-size: var(--gpc-price-large-size, 68px) !important;
}


/* v1.3.10 — desktop grid protection
   The cards use Swiper classnames for the responsive/mobile carousel. On some frontends,
   global Swiper CSS is loaded after this widget CSS and turns .swiper-wrapper back into flex
   on desktop. That breaks the equal 3-column grid and can make the last card narrower.
   Force the desktop/non-swiper state back to a true grid with equal columns. */
.gymful-pricing-cards .gpc-layout:not(.swiper-initialized) > .gpc-cards.swiper-wrapper {
  display: grid !important;
  width: 100% !important;
  grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
  align-items: stretch !important;
  gap: var(--gpc-cards-gap, 34px) !important;
  transform: none !important;
}

.gymful-pricing-cards .gpc-layout:not(.swiper-initialized) > .gpc-cards.swiper-wrapper > .gpc-card.swiper-slide {
  width: auto !important;
  max-width: none !important;
  min-width: 0 !important;
  flex: initial !important;
  flex-basis: auto !important;
  flex-grow: 0 !important;
  flex-shrink: 1 !important;
}

@media (max-width: 767px) {
  .gymful-pricing-cards .gpc-layout.swiper-initialized > .gpc-cards.swiper-wrapper {
    display: flex !important;
    grid-template-columns: none !important;
  }
}


/* v1.3.11 — center short desktop rows
   When fewer than 3 pricing cards are present, keep the cards at the same visual width
   as the 3-column desktop layout and center the row inside the configured container.
   Mobile/tablet swiper state remains untouched. */
@media (min-width: 768px) {
  .gymful-pricing-cards.gpc-short-row .gpc-layout:not(.swiper-initialized) > .gpc-cards.swiper-wrapper {
    --gpc-desktop-columns: 3;
    --gpc-short-row-width: calc(
      (((100% - ((var(--gpc-desktop-columns) - 1) * var(--gpc-cards-gap, 34px))) / var(--gpc-desktop-columns)) * var(--gpc-card-count, 2))
      + ((var(--gpc-card-count, 2) - 1) * var(--gpc-cards-gap, 34px))
    );
    width: min(100%, var(--gpc-short-row-width)) !important;
    max-width: min(100%, var(--gpc-short-row-width)) !important;
    margin-inline: auto !important;
    grid-template-columns: repeat(var(--gpc-card-count, 2), minmax(0, 1fr)) !important;
  }

  .gymful-pricing-cards.gpc-card-count-1 .gpc-layout:not(.swiper-initialized) > .gpc-cards.swiper-wrapper {
    --gpc-card-count: 1;
  }

  .gymful-pricing-cards.gpc-card-count-2 .gpc-layout:not(.swiper-initialized) > .gpc-cards.swiper-wrapper {
    --gpc-card-count: 2;
  }
}
