/* FELiX Website Framework v1.7.70 – Native FELiX Cards
 * Native FELiX Cards are the standard card architecture from this release onward.
 * This layer intentionally does not restyle Elementor CTA/Image Box or FELiX legacy-card adapters.
 */
.felix-framework{
  --felix-native-card-bg:#fff;
  --felix-native-card-border:var(--felix-line,#dbe8e1);
  --felix-native-card-border-hover:#9bc4b1;
  --felix-native-card-radius:16px;
  --felix-native-card-shadow:0 3px 12px rgba(20,55,43,.06);
  --felix-native-card-shadow-hover:0 10px 26px rgba(20,55,43,.12);
  --felix-native-card-gap:24px;
  --felix-native-card-padding:20px;
  --felix-native-card-media-height:195px;
  --felix-native-card-transition:.18s ease;
}

/* Grid: 1/2/3 columns on desktop, one column on narrow screens. */
.felix-framework .felix-native-card-grid{
  display:grid;
  grid-template-columns:repeat(var(--felix-native-card-columns,3),minmax(0,1fr));
  gap:var(--felix-native-card-gap);
  align-items:stretch;
  width:100%;
}
.felix-framework .felix-native-card-grid--1{--felix-native-card-columns:1}
.felix-framework .felix-native-card-grid--2{--felix-native-card-columns:2}
.felix-framework .felix-native-card-grid--3{--felix-native-card-columns:3}

/* Base card. The article/div is not clickable unless the author uses the explicit clickable pattern below. */
.felix-framework .felix-native-card{
  position:relative;
  display:flex;
  flex-direction:column;
  min-width:0;
  height:100%;
  overflow:hidden;
  isolation:isolate;
  background:var(--felix-native-card-bg);
  border:1px solid var(--felix-native-card-border);
  border-radius:var(--felix-native-card-radius);
  box-shadow:var(--felix-native-card-shadow);
  color:var(--felix-ink,var(--felix-navy));
  transition:transform var(--felix-native-card-transition),border-color var(--felix-native-card-transition),box-shadow var(--felix-native-card-transition);
}
.felix-framework .felix-native-card:hover,
.felix-framework .felix-native-card:focus-within{
  transform:translateY(-2px);
  border-color:var(--felix-native-card-border-hover);
  box-shadow:var(--felix-native-card-shadow-hover);
}

.felix-framework .felix-native-card__media{
  position:relative;
  overflow:hidden;
  flex:0 0 var(--felix-native-card-media-height);
  height:var(--felix-native-card-media-height);
  background:var(--felix-mint,#eef7f2);
}
.felix-framework .felix-native-card__media img{
  display:block;
  width:100%;
  height:100%;
  object-fit:cover;
  transition:transform .28s ease;
}
.felix-framework .felix-native-card:hover .felix-native-card__media img,
.felix-framework .felix-native-card:focus-within .felix-native-card__media img{
  transform:scale(1.015);
}
.felix-framework .felix-native-card__content{
  display:flex;
  flex:1 1 auto;
  flex-direction:column;
  padding:var(--felix-native-card-padding);
}
.felix-framework .felix-native-card__eyebrow{
  margin:0 0 8px;
  color:var(--felix-green);
  font-size:13px;
  font-weight:800;
  letter-spacing:.02em;
  text-transform:uppercase;
}
.felix-framework .felix-native-card__title{
  margin:0 0 10px!important;
  color:var(--felix-ink,var(--felix-navy))!important;
  font-size:20px!important;
  line-height:1.3!important;
}
.felix-framework .felix-native-card__text{
  margin:0 0 14px!important;
  color:#65746e!important;
  font-size:16px!important;
  line-height:1.55!important;
}
.felix-framework .felix-native-card__action{
  margin-top:auto;
  padding-top:4px;
}

/* Action can be a normal FELiX button or a restrained text link. */
.felix-framework .felix-native-card__link{
  display:inline-flex;
  align-items:center;
  gap:.35em;
  color:var(--felix-green)!important;
  font-weight:800;
  text-decoration:underline;
  text-decoration-thickness:.08em;
  text-underline-offset:.15em;
}
.felix-framework .felix-native-card__link:hover,
.felix-framework .felix-native-card__link:focus-visible{
  color:var(--felix-navy)!important;
  text-decoration-thickness:.13em;
}

/* Explicit whole-card link pattern: use an <a> as the card root.
 * Do not place another interactive link/button inside this variant. */
.felix-framework a.felix-native-card--clickable{
  color:var(--felix-ink,var(--felix-navy))!important;
  text-decoration:none!important;
  cursor:pointer;
}
.felix-framework a.felix-native-card--clickable:focus-visible{
  outline:3px solid var(--felix-link-focus-outline,#8cb9a6);
  outline-offset:3px;
}
.felix-framework a.felix-native-card--clickable .felix-native-card__link{
  text-decoration:none;
}

/* Horizontal variant for selected editorial/resource contexts. */
.felix-framework .felix-native-card--horizontal{
  display:grid;
  grid-template-columns:minmax(160px,34%) minmax(0,1fr);
}
.felix-framework .felix-native-card--horizontal .felix-native-card__media{
  height:100%;
  min-height:220px;
  flex-basis:auto;
}

/* Compact content-only card. */
.felix-framework .felix-native-card--compact .felix-native-card__content{
  padding:20px;
}
.felix-framework .felix-native-card--compact .felix-native-card__title{
  font-size:18px!important;
}

/* Highlight: same design language, subtle FELiX mint surface. */
.felix-framework .felix-native-card--highlight{
  background:var(--felix-mint,#eef7f2);
}

@media(max-width:900px){
  .felix-framework .felix-native-card-grid--3{--felix-native-card-columns:2}
}
@media(max-width:640px){
  .felix-framework .felix-native-card-grid,
  .felix-framework .felix-native-card-grid--2,
  .felix-framework .felix-native-card-grid--3{--felix-native-card-columns:1}
  .felix-framework .felix-native-card{height:auto}
  .felix-framework .felix-native-card__media{height:175px;flex-basis:175px}
  .felix-framework .felix-native-card__content{padding:18px}
  .felix-framework .felix-native-card--horizontal{display:block}
  .felix-framework .felix-native-card--horizontal .felix-native-card__media{height:190px;min-height:190px}
}

@media(prefers-reduced-motion:reduce){
  .felix-framework .felix-native-card{transition:none}
  .felix-framework .felix-native-card__media img{transition:none}
  .felix-framework .felix-native-card:hover,
  .felix-framework .felix-native-card:focus-within{transform:none}
}

/* v1.7.67 – Native FELiX Cards Phase 2
 * Universal authoring layer for page builders such as Elementor.
 * No page IDs, slugs or content-specific selectors are used.
 * Content/order/links remain owned by the WordPress page; the Framework owns presentation only.
 */
.felix-framework .felix-native-card-grid.felix-native-card-grid--builder,
.felix-framework .felix-native-card-grid--builder > .e-con-inner{
  display:grid!important;
  grid-template-columns:repeat(var(--felix-native-card-columns,3),minmax(0,1fr))!important;
  gap:var(--felix-native-card-gap)!important;
  align-items:stretch!important;
  width:100%!important;
}

/* Add both classes to an Elementor card container:
 * felix-native-card felix-native-card--builder
 * Existing Elementor content remains editable; FELiX supplies only the common card surface/layout.
 */
.felix-framework .felix-native-card.felix-native-card--builder{
  padding:var(--felix-native-card-padding)!important;
  gap:0!important;
}
.felix-framework .felix-native-card.felix-native-card--builder > .e-con-inner{
  display:flex!important;
  flex:1 1 auto!important;
  flex-direction:column!important;
  width:100%!important;
  height:100%!important;
}
.felix-framework .felix-native-card.felix-native-card--builder :is(.elementor-widget-button,.felix-native-card__action){
  margin-top:auto!important;
  padding-top:10px;
}

/* Optional media widget/container. Assign felix-native-card__media to the image widget/container.
 * Negative margins let builder-authored cards use the same edge-to-edge media language as native HTML cards.
 */
.felix-framework .felix-native-card--builder > .felix-native-card__media,
.felix-framework .felix-native-card--builder > .e-con-inner > .felix-native-card__media{
  width:calc(100% + (2 * var(--felix-native-card-padding)))!important;
  max-width:none!important;
  margin:calc(-1 * var(--felix-native-card-padding)) calc(-1 * var(--felix-native-card-padding)) var(--felix-native-card-padding)!important;
  flex:0 0 var(--felix-native-card-media-height)!important;
}
.felix-framework .felix-native-card--builder .felix-native-card__media :is(.elementor-widget-container,a,picture){
  display:block;
  width:100%;
  height:100%;
}
.felix-framework .felix-native-card--builder .felix-native-card__media img{
  display:block!important;
  width:100%!important;
  height:100%!important;
  object-fit:cover!important;
}

/* Optional semantic authoring helpers for Elementor widgets. */
.felix-framework .felix-native-card--builder .felix-native-card__title :is(h2,h3,h4,.elementor-heading-title),
.felix-framework .felix-native-card--builder :is(h2,h3,h4,.elementor-heading-title).felix-native-card__title{
  margin:0 0 8px!important;
  color:var(--felix-ink,var(--felix-navy))!important;
  font-size:20px!important;
  line-height:1.28!important;
}
.felix-framework .felix-native-card--builder .felix-native-card__text p,
.felix-framework .felix-native-card--builder p.felix-native-card__text{
  margin:0 0 14px!important;
  color:#65746e!important;
  font-size:16px!important;
  line-height:1.55!important;
}

@media(max-width:900px){
  .felix-framework .felix-native-card-grid--builder.felix-native-card-grid--3,
  .felix-framework .felix-native-card-grid--builder.felix-native-card-grid--3 > .e-con-inner{--felix-native-card-columns:2}
}
@media(max-width:640px){
  .felix-framework .felix-native-card-grid--builder,
  .felix-framework .felix-native-card-grid--builder > .e-con-inner{--felix-native-card-columns:1}
  .felix-framework .felix-native-card.felix-native-card--builder{padding:18px!important}
  .felix-framework .felix-native-card--builder > .felix-native-card__media,
  .felix-framework .felix-native-card--builder > .e-con-inner > .felix-native-card__media{
    width:calc(100% + 36px)!important;
    margin:-18px -18px 18px!important;
    flex-basis:175px!important;
    height:175px!important;
  }
}


/* v1.7.68 / System-Modul 1.1.70 – Elementor integration adapter
 * Existing Elementor/legacy cards become visually native only when they are part
 * of a recognized FELiX multi-card row. Standalone CTA elements (especially hero
 * elements) are intentionally untouched. No page ID/slug is used.
 */
.felix-framework .felix-card-row .felix-card-shell.felix-native-card-adapter{
  position:relative!important;
  overflow:hidden!important;
  isolation:isolate!important;
  height:100%!important;
  min-height:0!important;
  background:var(--felix-native-card-bg)!important;
  border:1px solid var(--felix-native-card-border)!important;
  border-radius:var(--felix-native-card-radius)!important;
  box-shadow:var(--felix-native-card-shadow)!important;
  transition:transform var(--felix-native-card-transition),border-color var(--felix-native-card-transition),box-shadow var(--felix-native-card-transition)!important;
}
.felix-framework .felix-card-row .felix-card-shell.felix-native-card-adapter:hover,
.felix-framework .felix-card-row .felix-card-shell.felix-native-card-adapter:focus-within{
  transform:translateY(-2px)!important;
  border-color:var(--felix-native-card-border-hover)!important;
  box-shadow:var(--felix-native-card-shadow-hover)!important;
}

/* Image-top language shared by Elementor CTA, Image Box and legacy image widgets. */
.felix-framework .felix-card-row .felix-native-card-adapter :is(.elementor-cta__bg-wrapper,.felix-card-media,.elementor-image-box-img){
  height:var(--felix-native-card-media-height)!important;
  min-height:var(--felix-native-card-media-height)!important;
  flex:0 0 var(--felix-native-card-media-height)!important;
  margin:0!important;
  overflow:hidden!important;
  border-radius:0!important;
}
.felix-framework .felix-card-row .felix-native-card-adapter :is(.felix-card-media,.elementor-image-box-img) img{
  display:block!important;
  width:100%!important;
  height:100%!important;
  min-height:0!important;
  object-fit:cover!important;
  border-radius:0!important;
  transition:transform .28s ease!important;
}
.felix-framework .felix-card-row .felix-native-card-adapter:hover :is(.felix-card-media,.elementor-image-box-img) img,
.felix-framework .felix-card-row .felix-native-card-adapter:focus-within :is(.felix-card-media,.elementor-image-box-img) img{
  transform:scale(1.015)!important;
}

/* Elementor CTA backgrounds are CSS backgrounds rather than img elements. */
.felix-framework .felix-card-row .felix-native-card-adapter .elementor-cta__bg{
  transition:transform .28s ease!important;
}
.felix-framework .felix-card-row .felix-native-card-adapter:hover .elementor-cta__bg,
.felix-framework .felix-card-row .felix-native-card-adapter:focus-within .elementor-cta__bg{
  transform:scale(1.015)!important;
}

/* More compact native content rhythm while keeping equal-height CTA alignment. */
.felix-framework .felix-card-row .felix-native-card-adapter :is(.felix-card-body,.elementor-cta__content,.elementor-image-box-content){
  display:flex!important;
  flex:1 1 auto!important;
  flex-direction:column!important;
  padding:20px 22px 22px!important;
  text-align:left!important;
}
.felix-framework .felix-card-row .felix-native-card-adapter :is(.elementor-cta__title,.elementor-image-box-title,h2,h3,h4,.elementor-heading-title){
  margin-top:0!important;
  margin-bottom:8px!important;
  line-height:1.24!important;
}
.felix-framework .felix-card-row .felix-native-card-adapter :is(.elementor-cta__description,.elementor-image-box-description,p){
  margin-top:0!important;
  margin-bottom:12px!important;
  line-height:1.5!important;
}
.felix-framework .felix-card-row .felix-native-card-adapter :is(.felix-card-action,.elementor-cta__button-wrapper,.elementor-widget-button){
  margin-top:auto!important;
  padding-top:8px!important;
}

@media(max-width:640px){
  .felix-framework .felix-card-row .felix-native-card-adapter :is(.elementor-cta__bg-wrapper,.felix-card-media,.elementor-image-box-img){
    height:175px!important;
    min-height:175px!important;
    flex-basis:175px!important;
  }
  .felix-framework .felix-card-row .felix-native-card-adapter :is(.felix-card-body,.elementor-cta__content,.elementor-image-box-content){
    padding:18px!important;
  }
}

@media(prefers-reduced-motion:reduce){
  .felix-framework .felix-card-row .felix-card-shell.felix-native-card-adapter,
  .felix-framework .felix-card-row .felix-native-card-adapter .elementor-cta__bg,
  .felix-framework .felix-card-row .felix-native-card-adapter :is(.felix-card-media,.elementor-image-box-img) img{
    transition:none!important;
  }
  .felix-framework .felix-card-row .felix-card-shell.felix-native-card-adapter:hover,
  .felix-framework .felix-card-row .felix-card-shell.felix-native-card-adapter:focus-within,
  .felix-framework .felix-card-row .felix-native-card-adapter:hover .elementor-cta__bg,
  .felix-framework .felix-card-row .felix-native-card-adapter:focus-within .elementor-cta__bg,
  .felix-framework .felix-card-row .felix-native-card-adapter:hover :is(.felix-card-media,.elementor-image-box-img) img,
  .felix-framework .felix-card-row .felix-native-card-adapter:focus-within :is(.felix-card-media,.elementor-image-box-img) img{
    transform:none!important;
  }
}

/* v1.7.70 / System-Modul 1.1.72 – Card Visual Polish
 * Compact the adapted Elementor card chain without changing the established
 * image geometry, two-column layout, responsive stacking or card detection.
 * Equal-height siblings are still owned by the FELiX card row; fixed 100%
 * heights from the legacy Elementor chain no longer inflate the row.
 */
@media(min-width:769px){
  .felix-framework .felix-card-row > .felix-card-column{
    height:auto!important;
    min-height:0!important;
  }
  .felix-framework .felix-card-row > .felix-card-column > :is(.elementor-element-populated,.e-con-inner){
    height:auto!important;
    min-height:0!important;
  }
  .felix-framework .felix-card-row .felix-card-column :is(.felix-card-host,.elementor-widget-call-to-action,.elementor-widget-image-box){
    height:auto!important;
    min-height:0!important;
    align-self:stretch!important;
  }
  .felix-framework .felix-card-row .felix-card-column :is(.felix-card-host,.elementor-widget-call-to-action,.elementor-widget-image-box) > .elementor-widget-container{
    display:flex!important;
    flex:1 1 auto!important;
    height:auto!important;
    min-height:0!important;
  }
  .felix-framework .felix-card-row .felix-card-shell.felix-native-card-adapter{
    flex:1 1 auto!important;
    height:auto!important;
    min-height:0!important;
  }
}

/* Tighter content rhythm: the longest card defines the natural row height.
 * The action remains aligned at the bottom of equal-height siblings, but the
 * content area is no longer artificially stretched by legacy height chains. */
.felix-framework .felix-card-row .felix-native-card-adapter :is(.felix-card-body,.elementor-cta__content,.elementor-image-box-content){
  min-height:0!important;
  padding:18px 22px 20px!important;
}
.felix-framework .felix-card-row .felix-native-card-adapter :is(.elementor-cta__title,.elementor-image-box-title,h2,h3,h4,.elementor-heading-title){
  margin-bottom:7px!important;
}
.felix-framework .felix-card-row .felix-native-card-adapter :is(.elementor-cta__description,.elementor-image-box-description,p){
  margin-bottom:10px!important;
}
.felix-framework .felix-card-row .felix-native-card-adapter :is(.felix-card-action,.elementor-cta__button-wrapper,.elementor-widget-button){
  padding-top:6px!important;
}

@media(max-width:640px){
  .felix-framework .felix-card-row .felix-native-card-adapter :is(.felix-card-body,.elementor-cta__content,.elementor-image-box-content){
    padding:17px 18px 18px!important;
  }
}


/* v1.7.70 / System-Modul 1.1.72 – Card Compact Geometry
 * The previous pass reset descendants, but the Elementor row itself can still
 * carry a stretched/min-height geometry. Reset the actual recognized card row,
 * then keep sibling stretching only within the row's natural content height.
 * Also make the visual compaction unmistakable with a slightly shorter media
 * zone. This remains global component logic; no page IDs/slugs are used.
 */
@media(min-width:769px){
  .felix-framework .felix-card-row{
    height:auto!important;
    min-height:0!important;
    align-items:stretch!important;
  }
  .felix-framework .felix-card-row > .felix-card-column{
    height:auto!important;
    min-height:0!important;
    align-self:stretch!important;
  }
  .felix-framework .felix-card-row .felix-card-shell.felix-native-card-adapter{
    min-height:0!important;
    height:100%!important;
  }
}

/* Clearly more compact approved FELiX-card proportion. */
.felix-framework .felix-card-row .felix-native-card-adapter :is(.elementor-cta__bg-wrapper,.felix-card-media,.elementor-image-box-img){
  height:185px!important;
  min-height:185px!important;
  flex-basis:185px!important;
}
.felix-framework .felix-card-row .felix-native-card-adapter :is(.felix-card-body,.elementor-cta__content,.elementor-image-box-content){
  padding:16px 20px 18px!important;
}
.felix-framework .felix-card-row .felix-native-card-adapter :is(.elementor-cta__title,.elementor-image-box-title,h2,h3,h4,.elementor-heading-title){
  margin-bottom:6px!important;
}
.felix-framework .felix-card-row .felix-native-card-adapter :is(.elementor-cta__description,.elementor-image-box-description,p){
  margin-bottom:8px!important;
}
.felix-framework .felix-card-row .felix-native-card-adapter :is(.felix-card-action,.elementor-cta__button-wrapper,.elementor-widget-button){
  padding-top:4px!important;
}

@media(max-width:640px){
  .felix-framework .felix-card-row .felix-native-card-adapter :is(.elementor-cta__bg-wrapper,.felix-card-media,.elementor-image-box-img){
    height:175px!important;
    min-height:175px!important;
    flex-basis:175px!important;
  }
  .felix-framework .felix-card-row .felix-native-card-adapter :is(.felix-card-body,.elementor-cta__content,.elementor-image-box-content){
    padding:15px 17px 17px!important;
  }
}


/* v1.7.71 / System-Modul 1.1.73 – Card Media Natural Fit
 * Keep card images visually calm and fully readable. The previous adapter used
 * cover plus hover scaling, which made some source images look unnecessarily
 * enlarged/cropped. Adapted FELiX cards now use contain/no-zoom while preserving
 * the established card geometry and responsive behavior.
 */
.felix-framework .felix-card-row .felix-native-card-adapter :is(.elementor-cta__bg-wrapper,.felix-card-media,.elementor-image-box-img){
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  background:var(--felix-mint,#eef7f2)!important;
}
.felix-framework .felix-card-row .felix-native-card-adapter :is(.felix-card-media,.elementor-image-box-img) img{
  width:100%!important;
  height:100%!important;
  object-fit:contain!important;
  object-position:center center!important;
  transform:none!important;
}
.felix-framework .felix-card-row .felix-native-card-adapter .elementor-cta__bg{
  background-size:contain!important;
  background-repeat:no-repeat!important;
  background-position:center center!important;
  transform:none!important;
}
.felix-framework .felix-card-row .felix-native-card-adapter:hover .elementor-cta__bg,
.felix-framework .felix-card-row .felix-native-card-adapter:focus-within .elementor-cta__bg,
.felix-framework .felix-card-row .felix-native-card-adapter:hover :is(.felix-card-media,.elementor-image-box-img) img,
.felix-framework .felix-card-row .felix-native-card-adapter:focus-within :is(.felix-card-media,.elementor-image-box-img) img{
  transform:none!important;
}


/* v1.7.73 / System-Modul 1.1.75 – Semantic FELiX Card Grid Standard
 * The card type owns the desktop density; pages do not.
 * LARGE   = detailed offer/topic cards, max. 2 columns on desktop.
 * COMPACT = shorter overview/navigation cards, max. 3 columns on desktop.
 * Both variants collapse responsively and are always one column on phones.
 * Existing --1/--2/--3 classes remain supported for backwards compatibility.
 */
.felix-framework .felix-native-card-grid--large,
.felix-framework .felix-native-card-grid--builder.felix-native-card-grid--large,
.felix-framework .felix-native-card-grid--builder.felix-native-card-grid--large > .e-con-inner{
  --felix-native-card-columns:2;
}
.felix-framework .felix-native-card-grid--compact,
.felix-framework .felix-native-card-grid--builder.felix-native-card-grid--compact,
.felix-framework .felix-native-card-grid--builder.felix-native-card-grid--compact > .e-con-inner{
  --felix-native-card-columns:3;
}

/* Tablet: compact grids reduce to two columns; large grids stay at two while space allows. */
@media(max-width:900px){
  .felix-framework .felix-native-card-grid--compact,
  .felix-framework .felix-native-card-grid--builder.felix-native-card-grid--compact,
  .felix-framework .felix-native-card-grid--builder.felix-native-card-grid--compact > .e-con-inner{
    --felix-native-card-columns:2;
  }
}

/* Phone: the semantic standard is always one card per row. */
@media(max-width:640px){
  .felix-framework .felix-native-card-grid--large,
  .felix-framework .felix-native-card-grid--compact,
  .felix-framework .felix-native-card-grid--builder.felix-native-card-grid--large,
  .felix-framework .felix-native-card-grid--builder.felix-native-card-grid--compact,
  .felix-framework .felix-native-card-grid--builder.felix-native-card-grid--large > .e-con-inner,
  .felix-framework .felix-native-card-grid--builder.felix-native-card-grid--compact > .e-con-inner{
    --felix-native-card-columns:1;
  }
}


/* v1.7.74 / System-Modul 1.1.76 – Ratio-stable Card Media
 * Image presentation is independent of whether a grid contains two or three
 * columns. All standard vertical FELiX card media use a 16:9 media viewport;
 * width may change with the grid, but the proportion and visible source image
 * do not. Natural-fit (contain) from v1.7.71 remains authoritative.
 */
.felix-framework .felix-native-card__media,
.felix-framework .felix-native-card--builder > .felix-native-card__media,
.felix-framework .felix-native-card--builder > .e-con-inner > .felix-native-card__media,
.felix-framework .felix-card-row .felix-native-card-adapter :is(.elementor-cta__bg-wrapper,.felix-card-media,.elementor-image-box-img){
  aspect-ratio:16 / 9!important;
  height:auto!important;
  min-height:0!important;
  flex:0 0 auto!important;
}

/* Keep the full source image visible in the ratio-stable viewport. */
.felix-framework .felix-native-card__media img,
.felix-framework .felix-native-card--builder .felix-native-card__media img,
.felix-framework .felix-card-row .felix-native-card-adapter :is(.felix-card-media,.elementor-image-box-img) img{
  width:100%!important;
  height:100%!important;
  object-fit:contain!important;
  object-position:center center!important;
  transform:none!important;
}
.felix-framework .felix-card-row .felix-native-card-adapter .elementor-cta__bg{
  background-size:contain!important;
  background-repeat:no-repeat!important;
  background-position:center center!important;
  transform:none!important;
}

/* Horizontal cards intentionally keep their separate media geometry. */
.felix-framework .felix-native-card--horizontal .felix-native-card__media{
  aspect-ratio:auto!important;
  height:100%!important;
  min-height:220px!important;
}
@media(max-width:640px){
  .felix-framework .felix-native-card--horizontal .felix-native-card__media{
    height:190px!important;
    min-height:190px!important;
  }
}


/* v1.7.75 / System-Modul 1.1.77 – Semantic Card Media Modes
 * Media presentation is semantic, not dependent on grid density or page.
 * Default PHOTO mode = cover: fills the common 16:9 viewport.
 * INFOGRAPHIC mode = contain: preserves the complete source image.
 * Add `felix-card-media--contain` to the card OR media element for diagrams,
 * infographics and other images that must never be cropped. `--cover` is an
 * explicit alias for the default and can be used for clarity in Elementor.
 */
.felix-framework .felix-native-card__media img,
.felix-framework .felix-native-card--builder .felix-native-card__media img,
.felix-framework .felix-card-row .felix-native-card-adapter :is(.felix-card-media,.elementor-image-box-img) img{
  object-fit:cover!important;
  object-position:center center!important;
}
.felix-framework .felix-card-row .felix-native-card-adapter .elementor-cta__bg{
  background-size:cover!important;
  background-repeat:no-repeat!important;
  background-position:center center!important;
}

/* Explicit cover mode – same rendering as the photo default. */
.felix-framework :is(.felix-native-card,.felix-native-card-adapter,.felix-card-shell).felix-card-media--cover :is(.felix-native-card__media,.felix-card-media,.elementor-image-box-img) img,
.felix-framework :is(.felix-native-card__media,.felix-card-media,.elementor-image-box-img).felix-card-media--cover img{
  object-fit:cover!important;
}
.felix-framework :is(.felix-native-card,.felix-native-card-adapter,.felix-card-shell).felix-card-media--cover .elementor-cta__bg,
.felix-framework .elementor-cta__bg-wrapper.felix-card-media--cover .elementor-cta__bg{
  background-size:cover!important;
}

/* Contain mode for infographics / diagrams – independent of 2- or 3-column grids. */
.felix-framework :is(.felix-native-card,.felix-native-card-adapter,.felix-card-shell).felix-card-media--contain :is(.felix-native-card__media,.felix-card-media,.elementor-image-box-img) img,
.felix-framework :is(.felix-native-card__media,.felix-card-media,.elementor-image-box-img).felix-card-media--contain img{
  object-fit:contain!important;
  object-position:center center!important;
}
.felix-framework :is(.felix-native-card,.felix-native-card-adapter,.felix-card-shell).felix-card-media--contain .elementor-cta__bg,
.felix-framework .elementor-cta__bg-wrapper.felix-card-media--contain .elementor-cta__bg{
  background-size:contain!important;
  background-repeat:no-repeat!important;
  background-position:center center!important;
}


/* v1.7.76 / System-Modul 1.1.78 – No-Upscale Card Media
 * Quality-first media policy: a source image may shrink to fit the common 16:9
 * viewport, but is never enlarged beyond its intrinsic pixel dimensions.
 * The media viewport remains centered on the FELiX surface. Explicit cover is
 * still available as an editorial opt-in via felix-card-media--cover.
 */
.felix-framework :is(.felix-native-card__media,.felix-card-row .felix-native-card-adapter .felix-card-media,.felix-card-row .felix-native-card-adapter .elementor-image-box-img) img:not(.felix-card-media--cover img){
  width:auto!important;
  height:auto!important;
  max-width:100%!important;
  max-height:100%!important;
  object-fit:contain!important;
  object-position:center center!important;
  margin:auto!important;
  transform:none!important;
}
.felix-framework :is(.felix-native-card__media,.felix-card-row .felix-native-card-adapter .felix-card-media,.felix-card-row .felix-native-card-adapter .elementor-image-box-img){
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  overflow:hidden!important;
}
/* Background-image CTA media is sized by framework.js in real pixels so it can
 * shrink when necessary without ever being enlarged. */
.felix-framework .felix-card-row .felix-native-card-adapter .elementor-cta__bg[data-felix-no-upscale="1"]{
  background-repeat:no-repeat!important;
  background-position:center center!important;
  transform:none!important;
}
