.pim-hover-cards {
  display: grid;
  grid-template-columns: repeat(var(--pim-hc-cols), minmax(0,1fr));
  gap: var(--pim-hc-gap);
}

.pim-hc {
  width: 100%;
}

/* Card */
.pim-hover-card {
  position: relative;
  border-radius: var(--pim-hc-rad);
  overflow: var(--pim-hc-card-overflow);
  background: var(--pim-hc-bg); /* deep teal like screenshots */
  color: #fff;
  box-shadow: 0 4px 18px rgba(0,0,0,.12);
  transition: transform .25s ease, box-shadow .25s ease, background-color .25s ease;
  display: flex;
  margin-bottom: var(--pim-hc-card-margin);
}
.pim-hover-card__inner {
  padding: var(--pim-hc-top-pad) var(--pim-hc-right-pad) var(--pim-hc-bot-pad) var(--pim-hc-left-pad);
  display: flex;
  flex-direction: column;
  width: 100%;
  overflow: var(--pim-hc-content-overflow);
}

.imageLeft .pim-hover-card__inner, .imageRight .pim-hover-card__inner {
  flex-direction: row;
}

.pim-hover-card__content {
  height: 100% !important;
  width: 100%;
  display: flex;
  flex-direction: column;
}

.imageRight .pim-hover-card__content, .imageLeft .pim-hover-card__content {
  width: calc( 100% - ( var(--pim-hc-img-width) + ( var(--pim-hc-right-pad) + var(--pim-hc-left-pad) ) ) );
}

.pim-hover-card__title {
  color: var(--pim-hc-title-color) !important;
  font: normal normal var(--pim-hc-title-font-variant) var(--pim-hc-title-font-size) var(--pim-hc-title-font-family) !important;
  letter-spacing: var(--pim-hc-title-letter-spacing) !important;
  text-transform: var(--pim-hc-title-text-transform) !important;
  margin: 0 0 var(--pim-hc-title-margin);
}
.pim-hover-card__text {
  display: none;
  margin-bottom: var(--pim-hc-text-margin);
  opacity: 1;
  color: var(--pim-hc-text-color) !important;
  font: normal normal var(--pim-hc-text-font-variant) var(--pim-hc-text-font-size) var(--pim-hc-text-font-family) !important;
  letter-spacing: var(--pim-hc-text-letter-spacing);
  text-transform: var(--pim-hc-text-text-transform);
  height: var(--pim-hc-text-height);
}

.pim-hover-card__text p {
  margin: 0 !important;
}

/* Image block (sits near bottom like your comps) */
.pim-hover-card__media {
  align-self: var(--pim-hc-img-flex-pos);
  margin-top: var(--pim-img-margin-top);
  margin-bottom: var(--pim-img-margin-bot);
  border-radius: var(--pim-hc-rad);
  overflow: visible;
  height: var(--pim-hc-img-height);
  width: calc( var(--pim-hc-img-width) + ( var(--pim-hc-right-pad) + var(--pim-hc-left-pad) ) );
  order: var(--pim-hc-img-order);
}

.imageRight .pim-hover-card__media, .imageLeft .pim-hover-card__media {
  height: 100%;
}

.pim-hover-card__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  position: absolute;
  left: var(--pim-hc-img-pos);
  top: var(--pim-hc-img-pos-top);
  right: var(--pim-hc-img-pos-alt);
  bottom: var(--pim-hc-img-pos-bot);
  border-radius: var(--pim-hc-rad);
}

.imageRight .pim-hover-card__img, .imageLeft .pim-hover-card__img {
  height: var(--pim-hc-img-height-alt);
}

/* CTA */
.pim-hover-card__cta {
  margin-top: 0;
  display: none;
  height: -webkit-fill-available;
  align-items: flex-end;
  justify-content: var(--pim-hc-btn-alignment);
  gap: 10px;
  padding: 0; /* button_class can add padding/styling */
  opacity: 1;
  transform: translateX(-8px);
  transition: transform .25s ease !important;
  pointer-events: cursor;
  color: white;
}
.pim-hover-card__cta-text { font-weight: 700;display: flex;align-items: center; }

.pim-hover-card__cta-icon::before {
    font-weight: 900;
    font-family: 'Font Awesome 5 Pro';
    font-style: normal;
}

/* Reveal on card hover (and focus for a11y) */
.pim-hover-card:hover,
.pim-hover-card:focus-within {
  transform: scale(1.02);
}
.pim-hover-card:hover .pim-hover-card__cta,
.pim-hover-card:focus-within .pim-hover-card__cta {
  opacity: 1;
  transform: translateX(0);
  pointer-events: auto;
}

/* Make the whole card clickable when a link is supplied */
.pim-hover-card__link {
  position: absolute;
  inset: 0;
  z-index: 3;
}

/* Ensure CTA remains above the anchor overlay for hover visibility */
.pim-hover-card__cta,
.pim-hover-card__head,
.pim-hover-card__media, 
.pim-hover-card__img { position: relative; z-index: 2; }

/* Optional starter button style; your "Button Class" will layer on top */
.pim-btn {
  border: 0;
  background: transparent;
  color: #fff;
  position: var(--pim-hc-btn-pos);
  bottom: var(--pim-hc-btn-pos-bot);
  left: var(--pim-hc-btn-pos-left);
  right: var(--pim-hc-btn-pos-right);
  height: var(--pim-hc-btn-height);
  width: 100%;
}
.pim-btn--round .pim-hover-card__cta-icon { border-width: 2px; }

@media screen and (min-width: 1025px) {
  .pim-hc-txt-show-lg .pim-hover-card__text {
    display: block;
  }

  .pim-hc-btn-show-lg .pim-hover-card__cta {
    display: inline-flex;
  }
}

@media screen and (min-width: 768px) and (max-width: 1024px) {
  .pim-hc-txt-show-md .pim-hover-card__text {
    display: block;
  }

  .pim-hc-btn-show-md .pim-hover-card__cta {
    display: inline-flex;
  }

  .pim-hover-card__title {
    font-size: var(--pim-hc-title-font-size-tablet) !important;
    line-height: calc( var(--pim-hc-title-font-size-tablet) + 2px ) !important;
  }

  .pim-hover-card__text {
    font-size: var(--pim-hc-text-font-size-tablet) !important;
  }
}

@media (max-width: 1024px) {
  .pim-hover-cards { grid-template-columns: repeat(var(--pim-hc-cols-tablet), minmax(0,1fr));  gap: var(--pim-hc-gap-tablet); row-gap: calc(var(--pim-hc-gap-tablet) + 20px);}
  
  .pim-hover-card {
      overflow: var(--pim-hc-card-overflow-tablet);
      margin-bottom: var(--pim-hc-card-margin-tablet);
  }
  
  .pim-hover-card__inner {
    padding: var(--pim-hc-top-pad-tablet) var(--pim-hc-right-pad-tablet) var(--pim-hc-bot-pad-tablet) var(--pim-hc-left-pad-tablet);
    overflow: var(--pim-hc-content-overflow-tablet);
  }
  .pim-hover-card__media {
    align-self: var(--pim-hc-img-flex-pos-tablet);
    height: var(--pim-hc-img-height-tablet);
    min-height: var(--pim-hc-img-height-tablet);
    margin-top: var(--pim-img-margin-top-tablet);
    margin-bottom: var(--pim-img-margin-bot-tablet);
    width: calc( var(--pim-hc-img-width-tablet) + ( var(--pim-hc-right-pad-tablet) + var(--pim-hc-left-pad-tablet) ) );
    order: var(--pim-hc-img-order-tablet);
  }

  .imageRight .pim-hover-card__img, .imageLeft .pim-hover-card__img {
    height: var(--pim-hc-img-height-alt-tablet);
  }

  .pim-hover-card__img {
    left: var(--pim-hc-img-pos-tablet);
    top: var(--pim-hc-img-pos-top-tablet);
    bottom: var(--pim-hc-img-pos-bot-tablet);
    right: var(--pim-hc-img-pos-alt-tablet);
  }

  .pim-hover-card__title {
    margin: 0 0 var(--pim-hc-title-margin-tablet);
  }

  .pim-hover-card__text {
    margin-bottom: var(--pim-hc-text-margin-tablet);
  }

  .pim-hover-card__cta {
    justify-content: var(--pim-hc-btn-alignment-tablet);
  }

  .pim-btn {
    position: var(--pim-hc-btn-pos-tablet);
    bottom: var(--pim-hc-btn-pos-bot-tablet);
    left: var(--pim-hc-btn-pos-left-tablet);
    right: var(--pim-hc-btn-pos-right-tablet);
    height: var(--pim-hc-btn-height-tablet);
  }
}

@media screen and (max-width: 767px) {
  .pim-hc-txt-show-sm .pim-hover-card__text {
    display: block;
  }

  .pim-hc-btn-show-sm .pim-hover-card__cta {
    display: inline-flex;
  }

  .pim-hover-card {
    overflow: var(--pim-hc-card-overflow-mobile);
    margin-bottom: var(--pim-hc-card-margin-mobile);
  }

  .pim-hover-card__title {
    font-size: var(--pim-hc-title-font-size-mobile) !important;
    margin: 0 0 var(--pim-hc-title-margin-mobile);
    max-width: 60%;
  }

  .pim-hover-card__text {
    font-size: var(--pim-hc-text-font-size-mobile) !important;
    margin-bottom: var(--pim-hc-text-margin-mobile);
  }

  .pim-hover-cards { grid-template-columns: repeat(var(--pim-hc-cols-mobile), minmax(0,1fr));   gap: var(--pim-hc-gap-mobile);}
  .pim-hover-card__inner {
    padding: var(--pim-hc-top-pad-mobile) var(--pim-hc-right-pad-mobile) var(--pim-hc-bot-pad-mobile) var(--pim-hc-left-pad-mobile);
    overflow: var(--pim-hc-content-overflow-mobile);
  }

  .pim-hover-card__media {
    height: var(--pim-hc-img-height-mobile);
    min-height: var(--pim-hc-img-height-mobile);
    margin-top: var(--pim-img-margin-top-mobile);
    margin-bottom: var(--pim-img-margin-bot-mobile);
    width: calc( var(--pim-hc-img-width-mobile) + ( var(--pim-hc-right-pad-mobile) + var(--pim-hc-left-pad-mobile) ) );
    align-self: var(--pim-hc-img-flex-pos-mobile);
    order: var(--pim-hc-img-order-mobile);
  }

  .imageRight .pim-hover-card__img, .imageLeft .pim-hover-card__img {
    height: var(--pim-hc-img-height-alt-mobile);
  }

  .pim-hover-card__img {
    left: var(--pim-hc-img-pos-mobile);
    top: var(--pim-hc-img-pos-top-mobile);
    bottom: var(--pim-hc-img-pos-bot-mobile);
    right: var(--pim-hc-img-pos-alt-mobile);
  }

  .pim-hover-card__cta {
    justify-content: var(--pim-hc-btn-alignment-mobile);
  }

  .pim-btn {
    position: var(--pim-hc-btn-pos-mobile);
    bottom: var(--pim-hc-btn-pos-bot-mobile);
    left: var(--pim-hc-btn-pos-left-mobile);
    right: var(--pim-hc-btn-pos-right-mobile);
    height: var(--pim-hc-btn-height-mobile);
  }
}