/* =====================================================================
   Bugbee Law — Elementor adapter
   Loads after elementor-frontend. Neutralises Elementor's generic widget
   spacing/alignment so the design's own values (set as controls or
   per-element Custom CSS) are the only thing that affects layout.
   ===================================================================== */
html { -webkit-text-size-adjust: 100%; }
body { font-family: var(--bb-font-body); color: #0B1F3A; background: #fff; margin: 0; }
img { max-width: 100%; height: auto; }

/* Widgets are plain flex/grid items: no bottom margin, no forced centring */
.e-con .elementor-widget, .e-con .elementor-widget.elementor-widget { margin-block-end: 0; }
.elementor-widget-image { text-align: initial; }
.elementor-widget-image .elementor-widget-container { line-height: 0; }
.elementor-widget-text-editor p { margin: 0; }
.elementor-widget-text-editor p + p { margin-top: var(--bb-p-gap, 0); }
.elementor-widget-heading .elementor-heading-title { margin: 0; }
.elementor-heading-title { padding: 0; line-height: inherit; }

/* Containers: no transitions on background/border (the design animates transform/shadow only where stated) */
.e-con { --background-transition: 0s; --border-transition: 0s; }

/* Entrance animations: 0.8s, signature easing, 28px travel (Elementor's fadeInUp travels 100%) */
.elementor-element.animated, .elementor-widget.animated { animation-duration: .8s; animation-timing-function: cubic-bezier(.2,.7,.2,1); animation-fill-mode: both; }
@keyframes bbFadeInUp { from { opacity: 0; transform: translate3d(0,28px,0); } to { opacity: 1; transform: none; } }
@keyframes bbFadeIn { from { opacity: 0; } to { opacity: 1; } }
@keyframes bbRevealImg { from { opacity: 0; transform: scale(1.04); } to { opacity: 1; transform: none; } }
.animated.fadeInUp { animation-name: bbFadeInUp; }
.animated.fadeIn { animation-name: bbFadeIn; }
.bb-reveal-img.animated { animation-name: bbRevealImg; animation-duration: 1.2s; }
@media (prefers-reduced-motion: reduce) { .elementor-invisible { visibility: visible !important; } .animated { animation: none !important; } }

/* Focus */
a:focus-visible, button:focus-visible { outline: 2px solid #0277C6; outline-offset: 3px; }

/* Intrinsic sizing: the design's flex items keep the browser default min-width:auto (a grid of 250px tiles
   cannot shrink below its min-content width, so it wraps under the image card at tablet widths).
   Elementor forces min-width:0 on containers and widgets, which changes where rows wrap. */
.e-con { min-width: auto; }
.e-con .elementor-widget { min-width: auto; }
