
/* La Tavola motion layer: progressive enhancement, no layout takeover. */
:root{--ifp-motion-ease:cubic-bezier(.22,1,.36,1)}
.ifp-reveal{opacity:0;transform:translateY(22px);transition:opacity .72s var(--ifp-motion-ease),transform .72s var(--ifp-motion-ease)}
.ifp-reveal.ifp-visible{opacity:1;transform:none}
.ifp-stagger{transition-delay:var(--ifp-delay,0ms)}
.elementor-button,.wp-element-button,.button{transition:transform .22s ease,box-shadow .22s ease,filter .22s ease}
.elementor-button:hover,.wp-element-button:hover,.button:hover{transform:translateY(-2px);box-shadow:0 10px 24px rgba(0,0,0,.12)}
.ifp-card-motion{transition:transform .28s var(--ifp-motion-ease),box-shadow .28s ease}
.ifp-card-motion:hover{transform:translateY(-5px);box-shadow:0 16px 36px rgba(44,25,12,.10)}
@media (prefers-reduced-motion:reduce){
 .ifp-reveal,.ifp-stagger,.ifp-card-motion,.elementor-button,.wp-element-button,.button{opacity:1!important;transform:none!important;transition:none!important;animation:none!important}
}


/* Frontend Polish v2 – scoped, reversible presentation layer. */
body.ifp-lt-polish-v2{--ifp-v2-red:#cf1f26;--ifp-v2-green:#123f2c;--ifp-v2-ink:#211d1a;--ifp-v2-line:rgba(40,31,24,.10)}
body.ifp-lt-polish-v2 .elementor-element-1ab65791{min-height:clamp(560px,61vw,720px)}
body.ifp-lt-polish-v2 .elementor-element-10ea4bc8{box-shadow:0 22px 55px rgba(35,23,14,.16);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px)}
body.ifp-lt-polish-v2 .elementor-element-1ff766f6 .elementor-heading-title,
body.ifp-lt-polish-v2 .elementor-element-2c4885b0 .elementor-heading-title,
body.ifp-lt-polish-v2 .elementor-element-774a87ea .elementor-heading-title{text-wrap:balance;letter-spacing:-.02em}
body.ifp-lt-polish-v2 .elementor-element-50250d0e .elementor-button,
body.ifp-lt-polish-v2 .elementor-element-606d9f6c .elementor-button{min-height:46px;display:inline-flex;align-items:center;justify-content:center}
body.ifp-lt-polish-v2 .elementor-element-1234cb67{border-bottom:1px solid var(--ifp-v2-line)}
body.ifp-lt-polish-v2 .elementor-element-37475c87,
body.ifp-lt-polish-v2 .elementor-element-100e72bc{padding-top:clamp(64px,6vw,96px);padding-bottom:clamp(64px,6vw,96px)}
body.ifp-lt-polish-v2 .elementor-element-793eba13,
body.ifp-lt-polish-v2 .elementor-element-1681d2e1,
body.ifp-lt-polish-v2 .elementor-element-351abf5d,
body.ifp-lt-polish-v2 .elementor-element-37af1a2e,
body.ifp-lt-polish-v2 .elementor-element-615fffe8,
body.ifp-lt-polish-v2 .elementor-element-9bc0451,
body.ifp-lt-polish-v2 .elementor-element-73da1d2c,
body.ifp-lt-polish-v2 .elementor-element-4080f646,
body.ifp-lt-polish-v2 .elementor-element-703c790b{border-radius:10px;overflow:hidden;box-shadow:0 8px 24px rgba(28,51,37,.08);transition:transform .25s var(--ifp-motion-ease),box-shadow .25s ease}
body.ifp-lt-polish-v2 .elementor-element-793eba13:hover,
body.ifp-lt-polish-v2 .elementor-element-1681d2e1:hover,
body.ifp-lt-polish-v2 .elementor-element-351abf5d:hover,
body.ifp-lt-polish-v2 .elementor-element-37af1a2e:hover,
body.ifp-lt-polish-v2 .elementor-element-615fffe8:hover,
body.ifp-lt-polish-v2 .elementor-element-9bc0451:hover,
body.ifp-lt-polish-v2 .elementor-element-73da1d2c:hover,
body.ifp-lt-polish-v2 .elementor-element-4080f646:hover,
body.ifp-lt-polish-v2 .elementor-element-703c790b:hover{transform:translateY(-4px);box-shadow:0 16px 34px rgba(28,51,37,.13)}
body.ifp-lt-polish-v2 .elementor-element-3fac9151,
body.ifp-lt-polish-v2 .elementor-element-646b596a,
body.ifp-lt-polish-v2 .elementor-element-242b6ee4,
body.ifp-lt-polish-v2 .elementor-element-6b702e33{border:1px solid var(--ifp-v2-line);border-radius:12px;overflow:hidden;box-shadow:0 8px 26px rgba(36,27,20,.055);transition:transform .25s var(--ifp-motion-ease),box-shadow .25s ease}
body.ifp-lt-polish-v2 .elementor-element-3fac9151:hover,
body.ifp-lt-polish-v2 .elementor-element-646b596a:hover,
body.ifp-lt-polish-v2 .elementor-element-242b6ee4:hover,
body.ifp-lt-polish-v2 .elementor-element-6b702e33:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(36,27,20,.10)}
body.ifp-lt-polish-v2 #ifp-la-tavola-footer .ifp-ftr-route,
body.ifp-lt-polish-v2 #ifp-la-tavola-footer nav a{transition:color .18s ease,background .18s ease,transform .18s ease}
body.ifp-lt-polish-v2 #ifp-la-tavola-footer .ifp-ftr-route:hover{background:var(--ifp-v2-ink);color:#fff;transform:translateY(-2px)}
body.ifp-lt-polish-v2 #ifp-la-tavola-footer nav a:hover{color:var(--ifp-v2-red);transform:translateX(2px)}
@media(max-width:1024px){body.ifp-lt-polish-v2 .elementor-element-1ab65791{min-height:auto}body.ifp-lt-polish-v2 .elementor-element-37475c87,body.ifp-lt-polish-v2 .elementor-element-100e72bc{padding-top:56px;padding-bottom:56px}}
@media(max-width:767px){body.ifp-lt-polish-v2 .elementor-element-10ea4bc8{box-shadow:0 14px 34px rgba(35,23,14,.12)}body.ifp-lt-polish-v2 .elementor-element-37475c87,body.ifp-lt-polish-v2 .elementor-element-100e72bc{padding-top:42px;padding-bottom:42px}body.ifp-lt-polish-v2 .elementor-element-50250d0e .elementor-button,body.ifp-lt-polish-v2 .elementor-element-606d9f6c .elementor-button{width:100%}}
@media(prefers-reduced-motion:reduce){body.ifp-lt-polish-v2 [class*="elementor-element-"]{transition:none!important}}


/* Frontend Polish v3 – screenshot-driven density pass; additive and independently reversible. */
body.ifp-lt-polish-v3{
 --ifp-v3-section-space:clamp(48px,4.5vw,72px);
 --ifp-v3-card-shadow:0 12px 30px rgba(36,27,20,.075);
}
/* Reduce the oversized vertical gap between the category and recommendation sections. */
body.ifp-lt-polish-v3 .elementor-element-37475c87,
body.ifp-lt-polish-v3 .elementor-element-100e72bc{
 padding-top:var(--ifp-v3-section-space);
 padding-bottom:var(--ifp-v3-section-space);
}
/* Recommendation cards: slightly stronger visual weight without touching Elementor data. */
body.ifp-lt-polish-v3 .elementor-element-3fac9151,
body.ifp-lt-polish-v3 .elementor-element-646b596a,
body.ifp-lt-polish-v3 .elementor-element-242b6ee4,
body.ifp-lt-polish-v3 .elementor-element-6b702e33{
 box-shadow:var(--ifp-v3-card-shadow);
 transform-origin:center bottom;
}
body.ifp-lt-polish-v3 .elementor-element-3fac9151 .elementor-widget-image img,
body.ifp-lt-polish-v3 .elementor-element-646b596a .elementor-widget-image img,
body.ifp-lt-polish-v3 .elementor-element-242b6ee4 .elementor-widget-image img,
body.ifp-lt-polish-v3 .elementor-element-6b702e33 .elementor-widget-image img{
 width:100%;
}
/* Keep the footer visually tighter; do not override its own responsive grid. */
body.ifp-lt-polish-v3 #ifp-la-tavola-footer{
 --ifp-v3-footer-gap:clamp(20px,2.4vw,38px);
}
body.ifp-lt-polish-v3 #ifp-la-tavola-footer .ifp-ftr-grid{
 column-gap:var(--ifp-v3-footer-gap);
}
@media(max-width:1024px){
 body.ifp-lt-polish-v3{--ifp-v3-section-space:48px}
}
@media(max-width:767px){
 body.ifp-lt-polish-v3{--ifp-v3-section-space:34px}
 body.ifp-lt-polish-v3 #ifp-la-tavola-footer .ifp-ftr-grid{column-gap:initial}
}
@media(prefers-reduced-motion:reduce){
 body.ifp-lt-polish-v3 [class*="elementor-element-"]{transition:none!important}
}


/* Responsive Polish v4 – screenshot-driven; only active below desktop width. */
@media (max-width:1024px){
 body.ifp-lt-polish-v4{
  --ifp-v4-section-space:clamp(32px,5.5vw,52px);
 }
 body.ifp-lt-polish-v4 .elementor-element-37475c87,
 body.ifp-lt-polish-v4 .elementor-element-100e72bc{
  padding-top:var(--ifp-v4-section-space);
  padding-bottom:var(--ifp-v4-section-space);
 }
 body.ifp-lt-polish-v4 #ifp-la-tavola-footer .ifp-ftr-grid{
  row-gap:28px;
 }
}

@media (max-width:767px){
 body.ifp-lt-polish-v4{
  --ifp-v4-section-space:30px;
 }
 /* Preserve the existing header/navigation implementation; only normalize touch sizing. */
 body.ifp-lt-polish-v4 .ifp-hb-mobile-toggle,
 body.ifp-lt-polish-v4 .ifp-hb-toggle{
  min-width:42px;
  min-height:42px;
 }
 /* Hero overlay: retain content, improve fit and readable rhythm. */
 body.ifp-lt-polish-v4 .elementor-widget-heading .elementor-heading-title{
  text-wrap:balance;
 }
 body.ifp-lt-polish-v4 .elementor-button{
  min-height:42px;
 }
 /* Category section: tighter, more even two-column rhythm without changing card order. */
 body.ifp-lt-polish-v4 .elementor-element-37475c87{
  padding-top:34px;
  padding-bottom:34px;
 }
 /* Recommendation section: remove excessive vertical air while keeping full-width product cards. */
 body.ifp-lt-polish-v4 .elementor-element-100e72bc{
  padding-top:34px;
  padding-bottom:36px;
 }
 body.ifp-lt-polish-v4 .elementor-element-3fac9151,
 body.ifp-lt-polish-v4 .elementor-element-646b596a,
 body.ifp-lt-polish-v4 .elementor-element-242b6ee4,
 body.ifp-lt-polish-v4 .elementor-element-6b702e33{
  box-shadow:0 8px 22px rgba(36,27,20,.065);
 }
 /* CTA: improve legibility without changing background/image/content. */
 body.ifp-lt-polish-v4 .elementor-button-text{
  line-height:1.2;
 }
 /* Footer: preserve every block, but reduce the long mobile scroll rhythm. */
 body.ifp-lt-polish-v4 #ifp-la-tavola-footer{
  padding-top:32px;
 }
 body.ifp-lt-polish-v4 #ifp-la-tavola-footer .ifp-ftr-grid{
  row-gap:22px;
 }
 body.ifp-lt-polish-v4 #ifp-la-tavola-footer .ifp-ftr-col{
  margin-bottom:0;
 }
 body.ifp-lt-polish-v4 #ifp-la-tavola-footer p,
 body.ifp-lt-polish-v4 #ifp-la-tavola-footer li{
  line-height:1.55;
 }
}

@media (max-width:420px){
 body.ifp-lt-polish-v4 .elementor-button{
  padding-left:18px;
  padding-right:18px;
 }
 body.ifp-lt-polish-v4 #ifp-la-tavola-footer{
  padding-top:28px;
 }
 body.ifp-lt-polish-v4 #ifp-la-tavola-footer .ifp-ftr-grid{
  row-gap:18px;
 }
}

@media(prefers-reduced-motion:reduce){
 body.ifp-lt-polish-v4 *{
  scroll-behavior:auto!important;
 }
}


/* Mobile Compact Polish v5 – additive, independently reversible, smartphone only. */
@media (max-width:767px){
 body.ifp-lt-polish-v5{
  --ifp-v5-gap:10px;
  --ifp-v5-card-width:min(78vw,286px);
 }

 /* Category block: keep every category and its order, but reduce vertical rhythm. */
 body.ifp-lt-polish-v5 .elementor-element-37475c87{
  padding-top:26px;
  padding-bottom:26px;
 }
 body.ifp-lt-polish-v5 .elementor-element-37475c87 .e-con-inner,
 body.ifp-lt-polish-v5 .elementor-element-37475c87 > .e-con-inner{
  row-gap:10px;
 }

 /* Recommendations: four existing Elementor cards become a native horizontal swipe row.
    No cloning, reordering, JS, WooCommerce or Elementor writes. */
 body.ifp-lt-polish-v5 .elementor-element-100e72bc{
  padding-top:28px;
  padding-bottom:30px;
  overflow:hidden;
 }
 body.ifp-lt-polish-v5 .elementor-element-100e72bc .e-con-inner{
  align-items:stretch;
 }
 body.ifp-lt-polish-v5 .elementor-element-100e72bc .elementor-element-3fac9151,
 body.ifp-lt-polish-v5 .elementor-element-100e72bc .elementor-element-646b596a,
 body.ifp-lt-polish-v5 .elementor-element-100e72bc .elementor-element-242b6ee4,
 body.ifp-lt-polish-v5 .elementor-element-100e72bc .elementor-element-6b702e33{
  flex:0 0 var(--ifp-v5-card-width);
  width:var(--ifp-v5-card-width);
  max-width:var(--ifp-v5-card-width);
  scroll-snap-align:start;
 }

 /* Target the immediate container that actually contains the confirmed recommendation cards.
    :has() is progressive enhancement; without support cards remain in the safe v4 layout. */
 body.ifp-lt-polish-v5 .elementor-element-100e72bc .e-con-inner:has(> .elementor-element-3fac9151),
 body.ifp-lt-polish-v5 .elementor-element-100e72bc .e-con-inner:has(> .elementor-element-646b596a),
 body.ifp-lt-polish-v5 .elementor-element-100e72bc .e-con-inner:has(> .elementor-element-242b6ee4),
 body.ifp-lt-polish-v5 .elementor-element-100e72bc .e-con-inner:has(> .elementor-element-6b702e33){
  display:flex;
  flex-wrap:nowrap;
  gap:var(--ifp-v5-gap);
  overflow-x:auto;
  overflow-y:hidden;
  scroll-snap-type:x proximity;
  overscroll-behavior-inline:contain;
  -webkit-overflow-scrolling:touch;
  padding-right:18px;
  scrollbar-width:none;
 }
 body.ifp-lt-polish-v5 .elementor-element-100e72bc .e-con-inner:has(> .elementor-element-3fac9151)::-webkit-scrollbar,
 body.ifp-lt-polish-v5 .elementor-element-100e72bc .e-con-inner:has(> .elementor-element-646b596a)::-webkit-scrollbar,
 body.ifp-lt-polish-v5 .elementor-element-100e72bc .e-con-inner:has(> .elementor-element-242b6ee4)::-webkit-scrollbar,
 body.ifp-lt-polish-v5 .elementor-element-100e72bc .e-con-inner:has(> .elementor-element-6b702e33)::-webkit-scrollbar{
  display:none;
 }

 /* Footer: all content remains visible; only spacing and typography rhythm are tightened. */
 body.ifp-lt-polish-v5 #ifp-la-tavola-footer{
  padding-top:24px;
 }
 body.ifp-lt-polish-v5 #ifp-la-tavola-footer .ifp-ftr-grid{
  row-gap:14px;
 }
 body.ifp-lt-polish-v5 #ifp-la-tavola-footer .ifp-ftr-col{
  padding-top:0;
  padding-bottom:0;
 }
 body.ifp-lt-polish-v5 #ifp-la-tavola-footer p,
 body.ifp-lt-polish-v5 #ifp-la-tavola-footer li{
  line-height:1.42;
 }
 body.ifp-lt-polish-v5 #ifp-la-tavola-footer ul{
  margin-top:8px;
  margin-bottom:8px;
 }
}

@media (max-width:420px){
 body.ifp-lt-polish-v5{
  --ifp-v5-card-width:min(82vw,270px);
 }
 body.ifp-lt-polish-v5 #ifp-la-tavola-footer .ifp-ftr-grid{
  row-gap:12px;
 }
}


/* Mobile Finish v6 – additive/reversible; smartphone only. */
@media (max-width:767px){
 body.ifp-lt-polish-v6 .ifp-v6-recommendations{
  position:relative;
 }
 body.ifp-lt-polish-v6 .ifp-v6-swipe-hint{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:6px;
  margin:4px 14px 10px;
  font-size:11px;
  line-height:1.2;
  letter-spacing:.04em;
  text-transform:uppercase;
  font-weight:700;
  opacity:.72;
 }
 body.ifp-lt-polish-v6 .ifp-v6-swipe-hint::after{
  content:'↔';
  font-size:17px;
  line-height:1;
 }
 body.ifp-lt-polish-v6 .ifp-v6-swipe-row{
  scroll-snap-type:x mandatory !important;
  scroll-padding-inline:14px;
  padding-left:14px;
  padding-bottom:4px;
 }
 body.ifp-lt-polish-v6 .ifp-v6-swipe-row > *{
  scroll-snap-align:start;
 }

 /* Footer accordion: branding column stays open; only the three information columns collapse. */
 body.ifp-lt-polish-v6 .ifp-v6-footer-toggle{
  position:relative;
  cursor:pointer;
  user-select:none;
  padding-right:34px;
  min-height:38px;
  display:flex;
  align-items:center;
  margin-bottom:0;
 }
 body.ifp-lt-polish-v6 .ifp-v6-footer-toggle::after{
  content:'+';
  position:absolute;
  right:4px;
  top:50%;
  transform:translateY(-50%);
  font-size:22px;
  font-weight:400;
  line-height:1;
 }
 body.ifp-lt-polish-v6 .ifp-v6-footer-col.is-open .ifp-v6-footer-toggle::after{
  content:'−';
 }
 body.ifp-lt-polish-v6 .ifp-v6-footer-panel{
  display:none;
  padding-top:8px;
 }
 body.ifp-lt-polish-v6 .ifp-v6-footer-col.is-open .ifp-v6-footer-panel{
  display:block;
 }
 body.ifp-lt-polish-v6 .ifp-v6-footer-col{
  border-bottom:1px solid rgba(30,55,42,.14);
  padding-bottom:2px;
 }
}


/* Mobile Finish v7 – bundled density/typography pass based on the confirmed v1.6.3 live screenshot.
   CSS-only: no Elementor/WooCommerce/content writes; v6 slider + footer accordion stay authoritative. */
@media (max-width:767px){
 body.ifp-lt-polish-v6{
  --ifp-v7-section-pad:24px;
 }

 /* Keep headings readable but reduce unnecessary vertical rhythm. */
 body.ifp-lt-polish-v6 .elementor-widget-heading .elementor-heading-title{
  line-height:1.04;
 }
 body.ifp-lt-polish-v6 .elementor-widget-text-editor{
  line-height:1.45;
 }

 /* Categories: retain the confirmed two-column layout and all cards, tighten the section. */
 body.ifp-lt-polish-v6 .elementor-element-37475c87{
  padding-top:var(--ifp-v7-section-pad);
  padding-bottom:var(--ifp-v7-section-pad);
 }
 body.ifp-lt-polish-v6 .elementor-element-37475c87 .e-con-inner{
  row-gap:8px;
 }

 /* Recommendations: slightly larger first-card presence, less dead space, preserve horizontal swipe. */
 body.ifp-lt-polish-v6 .elementor-element-100e72bc{
  padding-top:24px;
  padding-bottom:24px;
 }
 body.ifp-lt-polish-v6 .ifp-v6-swipe-hint{
  margin-top:2px;
  margin-bottom:8px;
  font-size:10px;
 }
 body.ifp-lt-polish-v6 .ifp-v6-swipe-row{
  padding-bottom:2px;
 }
 body.ifp-lt-polish-v6 .elementor-element-100e72bc .elementor-element-3fac9151,
 body.ifp-lt-polish-v6 .elementor-element-100e72bc .elementor-element-646b596a,
 body.ifp-lt-polish-v6 .elementor-element-100e72bc .elementor-element-242b6ee4,
 body.ifp-lt-polish-v6 .elementor-element-100e72bc .elementor-element-6b702e33{
  flex-basis:min(84vw,292px);
  width:min(84vw,292px);
  max-width:min(84vw,292px);
 }

 /* Buttons stay comfortably tappable without creating oversized mobile blocks. */
 body.ifp-lt-polish-v6 .elementor-button{
  min-height:40px;
 }
 body.ifp-lt-polish-v6 .elementor-button-text{
  line-height:1.15;
 }

 /* Confirmed accordion: make the three rows compact and visually consistent. */
 body.ifp-lt-polish-v6 .ifp-v6-footer-toggle{
  min-height:42px;
  padding-top:5px;
  padding-bottom:5px;
  line-height:1.15;
 }
 body.ifp-lt-polish-v6 .ifp-v6-footer-panel{
  padding-top:5px;
  padding-bottom:8px;
 }
 body.ifp-lt-polish-v6 .ifp-v6-footer-col{
  margin-bottom:0;
 }
}

@media (max-width:420px){
 body.ifp-lt-polish-v6{
  --ifp-v7-section-pad:22px;
 }
 body.ifp-lt-polish-v6 .elementor-element-100e72bc .elementor-element-3fac9151,
 body.ifp-lt-polish-v6 .elementor-element-100e72bc .elementor-element-646b596a,
 body.ifp-lt-polish-v6 .elementor-element-100e72bc .elementor-element-242b6ee4,
 body.ifp-lt-polish-v6 .elementor-element-100e72bc .elementor-element-6b702e33{
  flex-basis:min(86vw,286px);
  width:min(86vw,286px);
  max-width:min(86vw,286px);
 }
}


/* Mobile Finish v7.1 – final CSS-only optical pass from confirmed v1.7.0 live state.
   No DOM/JS/content writes. Footer accordion logic is intentionally untouched. */
@media (max-width:767px){
 /* Slightly tighter transitions between the confirmed major homepage sections. */
 body.ifp-lt-polish-v6 .elementor-element-37475c87{
  padding-top:20px;
  padding-bottom:20px;
 }
 body.ifp-lt-polish-v6 .elementor-element-100e72bc{
  padding-top:20px;
  padding-bottom:20px;
 }

 /* Make the horizontal recommendation interaction self-evident:
    one primary card plus a visible slice of the next card. */
 body.ifp-lt-polish-v6 .elementor-element-100e72bc .elementor-element-3fac9151,
 body.ifp-lt-polish-v6 .elementor-element-100e72bc .elementor-element-646b596a,
 body.ifp-lt-polish-v6 .elementor-element-100e72bc .elementor-element-242b6ee4,
 body.ifp-lt-polish-v6 .elementor-element-100e72bc .elementor-element-6b702e33{
  flex-basis:78vw;
  width:78vw;
  max-width:278px;
 }
 body.ifp-lt-polish-v6 .ifp-v6-swipe-row{
  gap:10px;
  padding-right:30px;
 }
 body.ifp-lt-polish-v6 .ifp-v6-swipe-hint{
  letter-spacing:.06em;
  opacity:.78;
 }

 /* CTA: improve text separation from the photo without changing its content/image. */
 body.ifp-lt-polish-v6 .elementor-element-64e9dba8 .elementor-heading-title,
 body.ifp-lt-polish-v6 .elementor-element-64e9dba8 .elementor-widget-text-editor{
  text-shadow:0 1px 3px rgba(0,0,0,.38);
 }
 body.ifp-lt-polish-v6 .elementor-element-64e9dba8 .elementor-button{
  margin-top:4px;
 }

 /* Footer is functionally complete: only preserve a clean tap target/rhythm. */
 body.ifp-lt-polish-v6 .ifp-v6-footer-toggle{
  margin:0;
 }
}

@media (max-width:380px){
 body.ifp-lt-polish-v6 .elementor-element-100e72bc .elementor-element-3fac9151,
 body.ifp-lt-polish-v6 .elementor-element-100e72bc .elementor-element-646b596a,
 body.ifp-lt-polish-v6 .elementor-element-100e72bc .elementor-element-242b6ee4,
 body.ifp-lt-polish-v6 .elementor-element-100e72bc .elementor-element-6b702e33{
  flex-basis:80vw;
  width:80vw;
  max-width:268px;
 }
}

/* v1.8.0 – Speisekarte mobile polish.
   Presentation only: no WooCommerce queries, prices, cart actions, filters, sorting,
   pagination or product data are modified. Scoped to the WooCommerce shop page. */
@media (max-width:767px){
 body.woocommerce-shop.ifp-lt-polish-v6 .woocommerce{
  overflow:visible;
 }

 /* Search/sort/filter area: allow controls and chips to breathe without changing form behavior. */
 body.woocommerce-shop.ifp-lt-polish-v6 .woocommerce-ordering,
 body.woocommerce-shop.ifp-lt-polish-v6 .woocommerce-result-count{
  float:none;
  width:100%;
 }
 body.woocommerce-shop.ifp-lt-polish-v6 .woocommerce-ordering select{
  width:100%;
  min-height:40px;
 }
 body.woocommerce-shop.ifp-lt-polish-v6 .ifp-shop-filters,
 body.woocommerce-shop.ifp-lt-polish-v6 [class*="category-filter"],
 body.woocommerce-shop.ifp-lt-polish-v6 [class*="product-filter"]{
  max-width:100%;
 }

 /* Preserve the confirmed two-column catalogue, but make every card internally stable. */
 body.woocommerce-shop.ifp-lt-polish-v6 ul.products{
  align-items:stretch;
 }
 body.woocommerce-shop.ifp-lt-polish-v6 ul.products li.product{
  display:flex;
  flex-direction:column;
  min-width:0;
  height:auto;
 }
 body.woocommerce-shop.ifp-lt-polish-v6 ul.products li.product > a.woocommerce-LoopProduct-link{
  display:flex;
  flex-direction:column;
  flex:1 1 auto;
  min-width:0;
 }
 body.woocommerce-shop.ifp-lt-polish-v6 ul.products li.product img{
  width:100%;
  aspect-ratio:1 / .78;
  object-fit:cover;
 }
 body.woocommerce-shop.ifp-lt-polish-v6 ul.products li.product .woocommerce-loop-product__title{
  line-height:1.15;
  overflow-wrap:anywhere;
 }
 body.woocommerce-shop.ifp-lt-polish-v6 ul.products li.product .price{
  margin-top:auto;
 }

 /* Cart buttons remain the original WooCommerce links/actions; only tap target/text wrapping changes. */
 body.woocommerce-shop.ifp-lt-polish-v6 ul.products li.product .button,
 body.woocommerce-shop.ifp-lt-polish-v6 ul.products li.product a.button{
  width:calc(100% - 16px);
  min-height:40px;
  margin:8px 8px 10px;
  padding:8px 5px;
  display:flex;
  align-items:center;
  justify-content:center;
  text-align:center;
  white-space:normal;
  line-height:1.08;
  font-size:10px;
 }

 body.woocommerce-shop.ifp-lt-polish-v6 nav.woocommerce-pagination{
  clear:both;
  padding-top:8px;
  padding-bottom:8px;
 }
 body.woocommerce-shop.ifp-lt-polish-v6 nav.woocommerce-pagination ul{
  display:flex;
  flex-wrap:wrap;
  justify-content:center;
  gap:4px;
 }
}

@media (max-width:380px){
 body.woocommerce-shop.ifp-lt-polish-v6 ul.products li.product .button,
 body.woocommerce-shop.ifp-lt-polish-v6 ul.products li.product a.button{
  font-size:9.5px;
  padding-left:3px;
  padding-right:3px;
 }
}

/* v1.8.1 – mobile product-card CTA centering correction.
   Visual only; original WooCommerce link/action remains untouched. */
@media (max-width:767px){
 body.woocommerce-shop.ifp-lt-polish-v6 ul.products li.product .button,
 body.woocommerce-shop.ifp-lt-polish-v6 ul.products li.product a.button{
  box-sizing:border-box;
  align-self:center;
  width:calc(100% - 16px);
  margin-left:auto;
  margin-right:auto;
 }
}


/* v1.8.2 – Single-product mobile optical pass.
   CSS-only and deliberately scoped to WooCommerce single-product pages.
   No product/configurator data, prices, options, cart actions, AJAX or Elementor
   content are changed. Desktop/tablet >=768px remain untouched. */
@media (max-width:767px){

 /* Keep the native WooCommerce product header in one clean mobile column. */
 body.single-product.ifp-lt-polish-v6 div.product .woocommerce-product-gallery,
 body.single-product.ifp-lt-polish-v6 div.product .summary{
  float:none;
  width:100%;
  max-width:100%;
  margin-left:0;
  margin-right:0;
  box-sizing:border-box;
 }

 body.single-product.ifp-lt-polish-v6 div.product .summary{
  margin-top:12px;
 }

 /* Product purchase row: quantity and CTA share the available width symmetrically.
    Existing form/action/submit behavior remains untouched. */
 body.single-product.ifp-lt-polish-v6 div.product form.cart{
  width:100%;
  box-sizing:border-box;
 }

 body.single-product.ifp-lt-polish-v6 div.product form.cart:not(.variations_form){
  display:flex;
  align-items:stretch;
  justify-content:center;
  gap:8px;
 }

 body.single-product.ifp-lt-polish-v6 div.product form.cart .quantity{
  float:none;
  flex:0 0 56px;
  margin:0;
 }

 body.single-product.ifp-lt-polish-v6 div.product form.cart .quantity .qty{
  width:100%;
  min-height:40px;
  box-sizing:border-box;
  text-align:center;
 }

 body.single-product.ifp-lt-polish-v6 div.product form.cart .single_add_to_cart_button{
  float:none;
  flex:1 1 auto;
  width:auto;
  min-width:0;
  min-height:40px;
  margin:0;
  padding-left:10px;
  padding-right:10px;
  display:flex;
  align-items:center;
  justify-content:center;
  text-align:center;
  white-space:normal;
  line-height:1.1;
  box-sizing:border-box;
 }

 /* Related products: preserve the confirmed two-column mobile layout, but make
    cards and their original WooCommerce buttons visually balanced. */
 body.single-product.ifp-lt-polish-v6 .related.products ul.products{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:10px;
  margin-left:0;
  margin-right:0;
 }

 body.single-product.ifp-lt-polish-v6 .related.products ul.products::before,
 body.single-product.ifp-lt-polish-v6 .related.products ul.products::after{
  display:none;
 }

 body.single-product.ifp-lt-polish-v6 .related.products ul.products li.product{
  float:none;
  clear:none;
  width:100%;
  min-width:0;
  margin:0;
  display:flex;
  flex-direction:column;
  box-sizing:border-box;
 }

 body.single-product.ifp-lt-polish-v6 .related.products ul.products li.product > a.woocommerce-LoopProduct-link{
  display:flex;
  flex-direction:column;
  flex:1 1 auto;
  min-width:0;
 }

 body.single-product.ifp-lt-polish-v6 .related.products ul.products li.product img{
  width:100%;
  height:auto;
  aspect-ratio:1 / .78;
  object-fit:cover;
 }

 body.single-product.ifp-lt-polish-v6 .related.products ul.products li.product .woocommerce-loop-product__title{
  line-height:1.12;
  overflow-wrap:anywhere;
 }

 body.single-product.ifp-lt-polish-v6 .related.products ul.products li.product .price{
  margin-top:auto;
 }

 body.single-product.ifp-lt-polish-v6 .related.products ul.products li.product .button,
 body.single-product.ifp-lt-polish-v6 .related.products ul.products li.product a.button{
  box-sizing:border-box;
  align-self:center;
  width:calc(100% - 12px);
  min-height:38px;
  margin:7px auto 8px;
  padding:7px 4px;
  display:flex;
  align-items:center;
  justify-content:center;
  text-align:center;
  white-space:normal;
  line-height:1.06;
  font-size:9.5px;
 }

 /* Description/related transition: slightly tighter without hiding tabs/content. */
 body.single-product.ifp-lt-polish-v6 .woocommerce-tabs{
  margin-top:20px;
 }

 body.single-product.ifp-lt-polish-v6 .related.products{
  margin-top:24px;
 }
}

@media (max-width:380px){
 body.single-product.ifp-lt-polish-v6 div.product form.cart .quantity{
  flex-basis:50px;
 }
 body.single-product.ifp-lt-polish-v6 .related.products ul.products{
  gap:8px;
 }
 body.single-product.ifp-lt-polish-v6 .related.products ul.products li.product .button,
 body.single-product.ifp-lt-polish-v6 .related.products ul.products li.product a.button{
  font-size:9px;
 }
}


/* v1.8.3 – Mobile configurator compact pass.
   Visual spacing only. Deliberately restricted to the single-product mobile
   configurator surface already present on the La Tavola product page.
   No field names/values, required-state logic, prices, AJAX, cart actions,
   JavaScript events or desktop rules are changed. */
@media (max-width:767px){

 /* Compact only descendants of the product form/configuration area; do not
    hide or reorder controls. These generic fallbacks intentionally use :where()
    so existing configurator-specific rules keep precedence. */
 body.single-product.ifp-lt-polish-v6 :where(
  .ifp-configurator,
  .ifp-product-configurator,
  .ifp-pc,
  .ifp-config,
  [class*="ifp-configurator"],
  [class*="ifp-product-config"]
 ){
  --ifp-lt-mobile-section-gap:10px;
  --ifp-lt-mobile-control-gap:7px;
 }

 body.single-product.ifp-lt-polish-v6 :where(
  .ifp-configurator,
  .ifp-product-configurator,
  .ifp-pc,
  .ifp-config,
  [class*="ifp-configurator"],
  [class*="ifp-product-config"]
 ) :where(fieldset, .section, .group, [class*="section"], [class*="group"]){
  margin-top:var(--ifp-lt-mobile-section-gap);
  margin-bottom:var(--ifp-lt-mobile-section-gap);
 }

 body.single-product.ifp-lt-polish-v6 :where(
  .ifp-configurator,
  .ifp-product-configurator,
  .ifp-pc,
  .ifp-config,
  [class*="ifp-configurator"],
  [class*="ifp-product-config"]
 ) :where(
  label,
  .option,
  [class*="option"],
  [class*="choice"]
 ){
  margin-top:0;
  margin-bottom:var(--ifp-lt-mobile-control-gap);
 }

 /* Keep option controls comfortably tappable while removing excess vertical air. */
 body.single-product.ifp-lt-polish-v6 :where(
  .ifp-configurator,
  .ifp-product-configurator,
  .ifp-pc,
  .ifp-config,
  [class*="ifp-configurator"],
  [class*="ifp-product-config"]
 ) :where(
  label,
  .option,
  [class*="option"],
  [class*="choice"]
 ){
  min-height:40px;
  box-sizing:border-box;
 }

 /* Headings/status rows inside the configurator become slightly tighter,
    without changing their content or state indicators. */
 body.single-product.ifp-lt-polish-v6 :where(
  .ifp-configurator,
  .ifp-product-configurator,
  .ifp-pc,
  .ifp-config,
  [class*="ifp-configurator"],
  [class*="ifp-product-config"]
 ) :where(h2,h3,h4){
  margin-top:10px;
  margin-bottom:8px;
  line-height:1.15;
 }

 body.single-product.ifp-lt-polish-v6 :where(
  .ifp-configurator,
  .ifp-product-configurator,
  .ifp-pc,
  .ifp-config,
  [class*="ifp-configurator"],
  [class*="ifp-product-config"]
 ) p{
  margin-top:4px;
  margin-bottom:7px;
 }

 /* The native final purchase row remains the balanced v1.8.2 layout. */
 body.single-product.ifp-lt-polish-v6 div.product form.cart{
  margin-bottom:12px;
 }

 body.single-product.ifp-lt-polish-v6 div.product form.cart .single_add_to_cart_button{
  min-height:40px;
 }
}


/* v1.8.4 – Mobile configurator centering + extras polish.
   CSS-only. Existing configurator markup, inputs, prices, required logic,
   quantity controls, AJAX/cart actions and JS events remain untouched. */
@media (max-width:767px){

 /* The screenshot showed the configurator column visually shifted to the
    right. Normalize the complete product/form surface to the same centered
    mobile gutter instead of compensating individual controls. */
 body.single-product.ifp-lt-polish-v6 div.product,
 body.single-product.ifp-lt-polish-v6 div.product .summary,
 body.single-product.ifp-lt-polish-v6 div.product form.cart,
 body.single-product.ifp-lt-polish-v6 :where(
  .ifp-configurator,
  .ifp-product-configurator,
  .ifp-pc,
  .ifp-config,
  [class*="ifp-configurator"],
  [class*="ifp-product-config"]
 ){
  box-sizing:border-box;
  max-width:100%;
 }

 body.single-product.ifp-lt-polish-v6 :where(
  .ifp-configurator,
  .ifp-product-configurator,
  .ifp-pc,
  .ifp-config,
  [class*="ifp-configurator"],
  [class*="ifp-product-config"]
 ){
  width:calc(100% - 20px);
  margin-left:auto !important;
  margin-right:auto !important;
  transform:none;
 }

 /* Any first-level configurator panels must stay inside that centered rail. */
 body.single-product.ifp-lt-polish-v6 :where(
  .ifp-configurator,
  .ifp-product-configurator,
  .ifp-pc,
  .ifp-config,
  [class*="ifp-configurator"],
  [class*="ifp-product-config"]
 ) > *{
  max-width:100%;
  box-sizing:border-box;
 }

 /* Extras: preserve every row and control, but give image/name and quantity
    areas predictable room so the right edge no longer dominates visually. */
 body.single-product.ifp-lt-polish-v6 :where(
  .ifp-configurator,
  .ifp-product-configurator,
  .ifp-pc,
  .ifp-config,
  [class*="ifp-configurator"],
  [class*="ifp-product-config"]
 ) :where(
  [class*="extra"],
  [class*="topping"],
  [class*="addon"],
  [class*="ingredient"]
 ){
  box-sizing:border-box;
  max-width:100%;
 }

 body.single-product.ifp-lt-polish-v6 :where(
  .ifp-configurator,
  .ifp-product-configurator,
  .ifp-pc,
  .ifp-config,
  [class*="ifp-configurator"],
  [class*="ifp-product-config"]
 ) :where(
  [class*="extra"],
  [class*="topping"],
  [class*="addon"],
  [class*="ingredient"]
 ) img{
  flex:0 0 auto;
  max-width:34px;
  height:auto;
  object-fit:cover;
 }

 /* Do not allow numeric/stepper controls to push a topping row beyond its card. */
 body.single-product.ifp-lt-polish-v6 :where(
  .ifp-configurator,
  .ifp-product-configurator,
  .ifp-pc,
  .ifp-config,
  [class*="ifp-configurator"],
  [class*="ifp-product-config"]
 ) :where(input[type="number"], .quantity){
  box-sizing:border-box;
  max-width:100%;
 }

 /* Slightly reduce the long extras area's vertical rhythm while keeping
    controls touchable. */
 body.single-product.ifp-lt-polish-v6 :where(
  .ifp-configurator,
  .ifp-product-configurator,
  .ifp-pc,
  .ifp-config,
  [class*="ifp-configurator"],
  [class*="ifp-product-config"]
 ) :where(
  [class*="extra"],
  [class*="topping"],
  [class*="addon"],
  [class*="ingredient"]
 ) :where(label, [class*="option"], [class*="choice"]){
  min-height:38px;
  margin-top:0;
  margin-bottom:5px;
 }

 /* Final purchase row: retain v1.8.2/1.8.3 behavior but ensure equal visual
    breathing room at both edges. */
 body.single-product.ifp-lt-polish-v6 div.product form.cart:not(.variations_form){
  padding-left:0;
  padding-right:0;
  margin-left:auto;
  margin-right:auto;
 }
}

@media (max-width:380px){
 body.single-product.ifp-lt-polish-v6 :where(
  .ifp-configurator,
  .ifp-product-configurator,
  .ifp-pc,
  .ifp-config,
  [class*="ifp-configurator"],
  [class*="ifp-product-config"]
 ){
  width:calc(100% - 16px);
 }
}


/* v1.8.5 – Mobile configurator rail correction.
   Screenshot-based correction: the complete configurator/ordering rail is
   visibly about 5–6 px too far right at ~143 px rendered screenshot width.
   Previous generic configurator class matching did not fully catch the real
   outer rail, therefore the correction is applied to the WooCommerce
   single-product summary's direct post-summary ordering surface as well.
   No controls, data, prices or behavior are changed. */
@media (max-width:767px){

 /* Keep the ordinary product summary centered. */
 body.single-product.ifp-lt-polish-v6 div.product .summary{
  box-sizing:border-box;
  margin-left:auto !important;
  margin-right:auto !important;
 }

 /* Correct the actual mobile ordering/configurator rail as a whole.
    Relative positioning is visual only and does not change document flow,
    field behavior, click targets relative to their contents, or JS state. */
 body.single-product.ifp-lt-polish-v6 :where(
  .ifp-configurator,
  .ifp-product-configurator,
  .ifp-pc,
  .ifp-config,
  [class*="ifp-configurator"],
  [class*="ifp-product-config"],
  [class*="product-configurator"],
  [class*="product_configurator"]
 ){
  position:relative;
  left:-6px;
 }

 /* If the configurator is wrapped by a standalone cart/ordering block,
    balance the same visible rail without altering its internal flex/grid. */
 body.single-product.ifp-lt-polish-v6 div.product > :where(
  form.cart,
  [class*="configurator"],
  [class*="product-config"]
 ){
  position:relative;
  left:-6px;
 }

 /* Never double-shift a cart form nested inside an already shifted
    configurator wrapper. */
 body.single-product.ifp-lt-polish-v6 :where(
  .ifp-configurator,
  .ifp-product-configurator,
  .ifp-pc,
  .ifp-config,
  [class*="configurator"],
  [class*="product-config"]
 ) form.cart{
  left:auto;
 }
}

@media (max-width:380px){
 body.single-product.ifp-lt-polish-v6 :where(
  .ifp-configurator,
  .ifp-product-configurator,
  .ifp-pc,
  .ifp-config,
  [class*="ifp-configurator"],
  [class*="ifp-product-config"],
  [class*="product-configurator"],
  [class*="product_configurator"]
 ){
  left:-5px;
 }
}


/* v1.8.6 – Exact outer configurator-card centering.
   The real IFP Product Configurator outer rail is .ifp-pc-product-layout.
   v1.8.4/v1.8.5 targeted inner configurator wrappers; this rule deliberately
   resets those visual offsets and moves ONLY the complete outer card/rail. */
@media (max-width:767px){

 /* Reset the previous inner visual correction: inner content must remain
    aligned inside its own card. */
 body.single-product.ifp-lt-polish-v6 :where(
  .ifp-configurator,
  .ifp-product-configurator,
  .ifp-pc,
  .ifp-config,
  [class*="ifp-configurator"],
  [class*="ifp-product-config"],
  [class*="product-configurator"],
  [class*="product_configurator"]
 ){
  left:0 !important;
 }

 /* Exact outer wrapper from IFP Product Configurator.
    Its own plugin already defines width:calc(100% - 28px) and margin:auto.
    On the real La-Tavola mobile rendering the complete rail is ~5px too far
    right, so shift this ONE wrapper as a unit. */
 body.ifp-pc-single-layout.single-product.ifp-lt-polish-v6 .ifp-pc-product-layout{
  position:relative;
  left:-5px !important;
 }

 /* Keep both columns/panels neutral inside the shifted outer rail. */
 body.ifp-pc-single-layout.single-product.ifp-lt-polish-v6 .ifp-pc-product-layout__content,
 body.ifp-pc-single-layout.single-product.ifp-lt-polish-v6 .ifp-pc-product-layout__sidebar,
 body.ifp-pc-single-layout.single-product.ifp-lt-polish-v6 .ifp-pc-product-layout__content .ifp-pc-configurator{
  position:relative;
  left:0 !important;
  right:auto !important;
  transform:none !important;
  box-sizing:border-box;
  max-width:100%;
 }
}


/* v1.8.7 – Final mobile outer configurator/card alignment.
   Real screenshot after v1.8.6 still shows the complete configurator/order
   rail a few pixels right of the product card above it. Increase ONLY the
   existing outer-wrapper correction from 5px to 8px. */
@media (max-width:767px){
 body.ifp-pc-single-layout.single-product.ifp-lt-polish-v6 .ifp-pc-product-layout{
  left:-8px !important;
 }
}


/* v1.8.8 – Mobile compact vertical layout pass.
   Keep the confirmed v1.8.7 horizontal alignment untouched.
   Reduce only the vertical separation between the configurator content,
   totals/summary area and ordering/cart area. */
@media (max-width:767px){

 /* Preserve the complete outer rail's v1.8.7 horizontal correction. */
 body.ifp-pc-single-layout.single-product.ifp-lt-polish-v6 .ifp-pc-product-layout{
  left:-8px !important;
 }

 /* The configurator content card had excessive bottom breathing room before
    the totals/order section. Tighten only vertical margins/padding. */
 body.ifp-pc-single-layout.single-product.ifp-lt-polish-v6
 .ifp-pc-product-layout__content{
  margin-bottom:10px !important;
  padding-bottom:10px;
 }

 /* Bring the companion sidebar / totals / ordering section closer to the
    configurator without changing width or horizontal position. */
 body.ifp-pc-single-layout.single-product.ifp-lt-polish-v6
 .ifp-pc-product-layout__sidebar{
  margin-top:0 !important;
  padding-top:0;
 }

 /* Compact common first/last panel spacing inside the sidebar while retaining
    all visible information and interactive controls. */
 body.ifp-pc-single-layout.single-product.ifp-lt-polish-v6
 .ifp-pc-product-layout__sidebar > :first-child{
  margin-top:0 !important;
 }

 body.ifp-pc-single-layout.single-product.ifp-lt-polish-v6
 .ifp-pc-product-layout__sidebar > * + *{
  margin-top:10px;
 }

 /* Keep final ordering/cart controls comfortably tappable. */
 body.ifp-pc-single-layout.single-product.ifp-lt-polish-v6
 .ifp-pc-product-layout__sidebar :where(button, .button, input[type="submit"]){
  min-height:40px;
 }
}


/* v1.8.9 – Mobile gap fix: configurator -> "Deine Auswahl".
   The previous pass changed child margins, but the screenshot shows the
   remaining whitespace is produced by the outer product-layout grid/row.
   On mobile, force the outer IFP Product Configurator layout to size rows
   by content and use one explicit compact gap. Horizontal v1.8.7 alignment
   remains untouched. */
@media (max-width:767px){

 body.ifp-pc-single-layout.single-product.ifp-lt-polish-v6 .ifp-pc-product-layout{
  left:-8px !important;
  align-items:start !important;
  align-content:start !important;
  row-gap:12px !important;
  gap:12px !important;
  grid-auto-rows:max-content !important;
 }

 body.ifp-pc-single-layout.single-product.ifp-lt-polish-v6
 .ifp-pc-product-layout__content,
 body.ifp-pc-single-layout.single-product.ifp-lt-polish-v6
 .ifp-pc-product-layout__sidebar{
  align-self:start !important;
  height:auto !important;
  min-height:0 !important;
 }

 /* Remove only inter-column/inter-row spacing already superseded by the
    explicit 12px parent gap. Internal card spacing stays intact. */
 body.ifp-pc-single-layout.single-product.ifp-lt-polish-v6
 .ifp-pc-product-layout__content{
  margin-bottom:0 !important;
 }

 body.ifp-pc-single-layout.single-product.ifp-lt-polish-v6
 .ifp-pc-product-layout__sidebar{
  margin-top:0 !important;
 }
}


/* v1.8.10 – "Deine Auswahl" vertical margin balance.
   Screenshot correction only: reduce the space ABOVE the selection/sidebar
   card and add a little more separation BELOW it before the product tabs.
   Horizontal alignment and all configurator internals remain untouched. */
@media (max-width:767px){

 /* The parent gap from v1.8.9 was still visually too large above
    "Deine Auswahl". Tighten it. */
 body.ifp-pc-single-layout.single-product.ifp-lt-polish-v6 .ifp-pc-product-layout{
  row-gap:6px !important;
  gap:6px !important;
 }

 /* Balance the selection/order card itself:
    almost no extra top margin, but a clearer bottom margin toward tabs. */
 body.ifp-pc-single-layout.single-product.ifp-lt-polish-v6
 .ifp-pc-product-layout__sidebar{
  margin-top:0 !important;
  margin-bottom:14px !important;
 }

 /* Avoid a child top margin recreating the large visual top gap. */
 body.ifp-pc-single-layout.single-product.ifp-lt-polish-v6
 .ifp-pc-product-layout__sidebar > :first-child{
  margin-top:0 !important;
 }

 /* Preserve comfortable spacing after the complete ordering card. */
 body.ifp-pc-single-layout.single-product.ifp-lt-polish-v6
 .ifp-pc-product-layout__sidebar > :last-child{
  margin-bottom:0 !important;
 }
}


/* v1.8.11 – Tighten ONLY the space above "Deine Auswahl".
   Screenshot feedback: the remaining gap is still too large.
   Keep horizontal positioning and the bottom spacing unchanged. */
@media (max-width:767px){

 body.ifp-pc-single-layout.single-product.ifp-lt-polish-v6 .ifp-pc-product-layout{
  row-gap:0 !important;
  gap:0 !important;
 }

 body.ifp-pc-single-layout.single-product.ifp-lt-polish-v6
 .ifp-pc-product-layout__content{
  margin-bottom:0 !important;
  padding-bottom:0 !important;
 }

 body.ifp-pc-single-layout.single-product.ifp-lt-polish-v6
 .ifp-pc-product-layout__sidebar{
  margin-top:-2px !important;
  margin-bottom:14px !important;
  padding-top:0 !important;
 }
}


/* v1.8.12 – Footer links: retain the existing visual design. */
body .elementor-location-footer a{
  color:inherit;
  text-decoration:none;
}
body .elementor-location-footer a:hover,
body .elementor-location-footer a:focus-visible{
  text-decoration:underline;
  text-underline-offset:3px;
}


/* v1.8.15 – Desktop Speisekarte: breathing room below pagination.
   Screenshot 2026-09-27: pagination sits too close to the following
   footer/CTA section. Desktop only; product grid, pagination behavior,
   footer and mobile remain untouched. */
@media (min-width:1025px){
 body.post-type-archive-product.ifp-lt-polish-v6 .woocommerce-pagination{
  margin-bottom:38px !important;
 }
}


/* v1.8.16 – Mobile footer CTA text readability.
   On the narrow footer hero the background photo becomes visually busy behind
   the white copy. Add a responsive dark translucent content panel without
   changing the footer image, CTA link, text or desktop presentation. */
@media (max-width:767px){

 /* The existing footer CTA content sits over the pizza background.
    Target the content-side Elementor containers only when they are inside the
    footer; use a compact translucent restaurant-green panel. */
 body .elementor-location-footer :where(
  .elementor-element[class*="ifp-ftr-cta"] .e-con-inner,
  .elementor-element[class*="ifp-ftr-cta"] > .e-con,
  .ifp-ftr-cta .e-con-inner,
  .ifp-ftr-cta__content
 ){
  background:rgba(10,58,39,.88);
  border-radius:12px;
  padding:18px 16px !important;
  box-sizing:border-box;
 }

 /* Snapshot/theme fallback: when the CTA section has no helper class, style
    only an Elementor container in the footer that owns a background image and
    contains headings/buttons. This remains presentation-only. */
 body .elementor-location-footer .e-con[style*="background-image"] > .e-con-inner{
  position:relative;
 }

 /* Preserve readable white copy inside the intended dark mobile panel. */
 body .elementor-location-footer :where(
  .ifp-ftr-cta,
  .ifp-ftr-cta__content
 ) :where(h1,h2,h3,h4,p,.elementor-heading-title){
  text-shadow:0 1px 2px rgba(0,0,0,.28);
 }
}


/* v1.8.17 – Mobile footer CTA readability, robust overlay approach.
   v1.8.16 depended on helper classes that are not present on the rendered
   Elementor CTA. Instead of altering Elementor data, add a dark gradient
   overlay to the known footer CTA region while keeping its content above it. */
@media (max-width:767px){

 /* Footer CTA immediately before the light main-footer block: make its
    existing photo darker in the text zone without hiding the image. */
 body .elementor-location-footer > .elementor-element:first-child,
 body footer.elementor-location-footer > .elementor-element:first-child{
  position:relative;
  isolation:isolate;
 }

 body .elementor-location-footer > .elementor-element:first-child::after,
 body footer.elementor-location-footer > .elementor-element:first-child::after{
  content:"";
  position:absolute;
  inset:0;
  z-index:0;
  pointer-events:none;
  background:linear-gradient(
    180deg,
    rgba(5,34,23,.12) 0%,
    rgba(5,34,23,.34) 42%,
    rgba(5,34,23,.72) 100%
  );
 }

 body .elementor-location-footer > .elementor-element:first-child > *,
 body footer.elementor-location-footer > .elementor-element:first-child > *{
  position:relative;
  z-index:1;
 }

 /* Add an actual compact reading surface behind the text/button cluster.
    This catches Elementor's inner container even without custom helper classes. */
 body .elementor-location-footer > .elementor-element:first-child
 .e-con-inner > .e-con:first-child{
  background:rgba(8,49,34,.82);
  border-radius:12px;
  padding:14px 14px 16px !important;
  box-sizing:border-box;
  backdrop-filter:blur(1px);
  -webkit-backdrop-filter:blur(1px);
 }

 body .elementor-location-footer > .elementor-element:first-child
 .e-con-inner > .e-con:first-child :where(h1,h2,h3,h4,p,.elementor-heading-title){
  text-shadow:0 1px 2px rgba(0,0,0,.42);
 }
}


/* v1.8.18 – Restore visibility of the three legal footer links on mobile.
   The links/content remain in the footer; ensure the bottom green bar does not
   collapse/clip the legal row and that anchors inherit the light footer color. */
@media (max-width:767px){
 body .elementor-location-footer .ifp-ftr-bottom,
 body .elementor-location-footer [class*="ifp-ftr-bottom"],
 body .elementor-location-footer .elementor-element:last-child{
  height:auto !important;
  min-height:0 !important;
  overflow:visible !important;
 }

 body .elementor-location-footer .elementor-element:last-child :where(p,a){
  visibility:visible !important;
  opacity:1 !important;
 }

 body .elementor-location-footer .elementor-element:last-child a{
  color:inherit !important;
  display:inline !important;
  pointer-events:auto !important;
 }

 body .elementor-location-footer .elementor-element:last-child p{
  display:block !important;
  margin-top:6px !important;
  margin-bottom:6px !important;
  line-height:1.45 !important;
 }
}


/* v1.8.19 – Footer must never depend on scroll-reveal timing.
   The original motion layer can leave footer widgets at opacity:0 until its
   IntersectionObserver fires. This is especially fragile after Elementor
   frontend rendering/caching and explains the first-load/refresh difference.
   Footer content is therefore always visible; motion remains everywhere else. */
body .elementor-location-footer .ifp-reveal,
body footer .ifp-reveal{
  opacity:1 !important;
  transform:none !important;
  transition:none !important;
  transition-delay:0s !important;
}
