/* Loaded BEFORE davidesasso.css. Elementor base CSS sits in @layer elementor (see functions.php),
   so these unlayered resets win over it at zero specificity and any Webflow rule wins over them.
   Goal: Elementor wrappers behave like the plain divs Webflow rendered. */
:where(body .e-con) {
  --padding-top: 0px; --padding-right: 0px; --padding-bottom: 0px; --padding-left: 0px;
  --gap: 0px; --row-gap: 0px; --column-gap: 0px; --width: auto; --min-height: 0;
  display: block; padding: 0; margin: 0; gap: normal; width: auto; max-width: none; min-width: auto; min-height: auto;
  position: static; flex: 0 1 auto; flex-wrap: nowrap; flex-direction: row;
  align-items: normal; justify-content: normal; align-content: normal; text-align: inherit;
}
:where(body .elementor-widget) {
  margin: 0; width: auto; max-width: none; min-width: auto; position: static; --kit-widget-spacing: 0px;
}
/* Widget inner wrapper is layout-transparent: content sits where Webflow had it */
:where(body .elementor-widget-container) { display: contents; }
/* Heading widget = any text leaf: the wrapper carries the Webflow class, the inner tag inherits it */
:where(body .elementor-heading-title) {
  font: inherit; color: inherit; letter-spacing: inherit; text-transform: inherit;
  text-align: inherit; line-height: inherit; margin: 0; padding: 0;
}
/* Image widget: the wrapper carries the img's Webflow class but shrinks to fit; the width goes to the img
   (--aw-img-w, written by wfcss.py) with Webflow's img defaults, so it sizes exactly like the original img */
:where(body .elementor-widget-image) { display: inline-block; vertical-align: middle; max-width: 100%; }
/* 0,1,1: must beat Webflow's base `img{display:inline-block}` (an inline img adds a line box = different baseline) */
:where(body) .elementor-widget-image img {
  display: block; width: var(--aw-img-w, auto); height: 100%; max-width: 100%;
  object-fit: inherit; object-position: inherit; border-radius: inherit;
}
:where(body .elementor-widget-html svg) { display: block; }
/* A replaced grid item (img/video) is not stretched: align/justify `normal` act as `start`. Its widget wrapper must do the same,
   else the img's height:100% follows the row height. ponytail: only parents with the `grid` class, add others if they show up */
:where(body .grid) > :is(.elementor-widget-image, .elementor-widget-html:has(> video)) { align-self: start; }
/* A raw tag (button...) in a flex row: its widget wrapper is the flex item, so it takes the tag's `hidden` / `!w-full`
   (form buttons: JS toggles `hidden`, :has follows). ponytail: only these two classes, add others if diff-run shows them */
:where(body) .elementor-widget-html:has(> .hidden) { display: none; }
:where(body) .elementor-widget-html:has(> .\!w-full) { width: 100%; }
/* Twin of the theme's `.ll-part--video:not([class*=h-])…{height:100%}`: the wrapper must fill too (hero backdrop 811 → 900) */
:where(body) .elementor-widget-html:has(> .ll-part--video:not([class*=h-]):not([class*=size-])) { height: 100%; }
/* Shortcode widgets print Webflow markup that must sit directly in its parent (slider mask, grids) */
:where(body) :is(.elementor-widget-shortcode, .elementor-shortcode) { display: contents; }
/* Webflow clearfix pseudos (display:table) must stay in flow; Elementor's overlay ::before makes them absolute */
:where(body) :is(.w-container, .w-clearfix, .w-row, .w-nav)::before,
:where(body) :is(.w-container, .w-clearfix, .w-row, .w-nav)::after { position: static; inset: auto; width: auto; height: auto; }
/* Elementor frontend.css sets html{scroll-behavior:smooth}; Webflow doesn't (Lenis does the smoothing) */
html { scroll-behavior: auto; }
/* Elementor Avanzate > Responsive "Nascondi su…": its rules live in @layer elementor and lose to the theme, re-assert them
   (Elementor default breakpoints: mobile ≤767, tablet 768–1024, desktop ≥1025) */
@media (min-width: 1025px) { body .elementor-hidden-desktop { display: none !important; } }
@media (min-width: 768px) and (max-width: 1024px) { body .elementor-hidden-tablet { display: none !important; } }
@media (max-width: 767px) { body .elementor-hidden-mobile { display: none !important; } }
/* WebGL image: unwrapWebglImages moves the img out of its Webflow classes, so `.ll-part--webgl-image{height:auto}` wins and the img
   overflows a fill wrapper (mobile split_content: image over the title). A wrapper that fills its box hands the height to the img. */
.elementor-widget-image[class*="h-full"] > img.ll-part--webgl-image { height: 100%; }
/* Stacking cards: opaque, so the next card covers the text of the one below (transparent = overlapping text on mobile) */
.js-stacking-card { background-color: rgb(var(--bgPrimary)); }
