p:has(>.char),
p:has(>.line),
p:has(>.word) {
    padding-bottom: unset !important;
}

/* fix button styles */
.et_pb_button:has(.char),
.et_pb_button:has(.line),
.et_pb_button:has(.word) {
    display: inline-block !important;
}

/* DrawSVG module — frontend render/layout (also loaded in the VB).
   Lives here, not in the VB bundle.css, because bundle.css is enqueued
   ONLY in the Visual Builder — so module sizing never reached the
   frontend and SVGs could overflow. Sizing matches Divi's native SVG
   module (.et_pb_svg_inner svg): width:100% forces the svg to conform to
   its container (max-width alone only caps it), height:auto + the viewBox
   derive a correct height. */
.dm_drawsvg .dm-drawsvg,
.dm-drawsvg {
    display: block;
    /* Positioning context for absolutely-positioned descendants (e.g. overlays
       layered over the SVG). No z-index → no stacking context, no clipping. */
    position: relative;
}

.dm-drawsvg .dm-drawsvg-mount {
    display: block;
    line-height: 0;
}

.dm-drawsvg .dm-drawsvg-mount svg {
    display: block;
    width: 100%;
    height: auto;
    max-width: 100%;
}

.dm-drawsvg .dm-drawsvg-config {
    display: none;
}

/* Anti-FOUC backup. The PRIMARY hide is an inline visibility:hidden the
   server puts on the priming mount — this stylesheet is enqueued on wp_footer
   (after the SVG paints), so it can't stop the first paint on its own. This
   rule is a fallback for the case where the inline style is stripped (e.g. a
   security plugin), keeping the mount hidden until the engine removes
   `is-priming`. visibility:hidden keeps the box in layout (ScrollTrigger). */
.dm-drawsvg .dm-drawsvg-mount.is-priming {
    visibility: hidden;
}
