/* Functional replacements for the removed WordPress/Elementor JavaScript. */
.site-document { display: contents; }
.elementor-invisible { visibility: visible !important; }
.elementor-element.animated { animation: none !important; opacity: 1 !important; }

/* Keep the original desktop dropdown, and make it keyboard/touch accessible. */
#header .menu-item-has-children { position: relative; }
#header .menu-item-has-children > .sub-menu {
  display: block; visibility: hidden; opacity: 0; pointer-events: none;
  transform: translateY(8px); transition: opacity .16s, transform .16s;
}
#header .menu-item-has-children:hover > .sub-menu,
#header .menu-item-has-children:focus-within > .sub-menu,
#header .menu-item-has-children.is-submenu-open > .sub-menu {
  visibility: visible; opacity: 1; pointer-events: auto; transform: translateY(0);
}
#header .ct-toggle-dropdown-desktop-ghost:focus-visible { outline: 2px solid #0ce2ad; }

/* The captured desktop/mobile drawer styles depend on Blocksy JS state. */
#offcanvas { display: none; }
#offcanvas.is-open {
  display: flex; opacity: 1; visibility: visible; pointer-events: auto;
  inset: 0; position: fixed; background: rgb(0 0 0 / 45%);
}
#offcanvas.is-open .ct-panel-inner {
  inset-inline-end: 0; transform: none; width: min(500px, 100%);
  max-width: 100%; height: 100%; overflow-y: auto;
}
#offcanvas .ct-panel-content[data-device="mobile"] { display: flex; overflow-y: auto; }
#offcanvas .ct-panel-content[data-device="desktop"] { display: none; }
#offcanvas .mobile-menu .sub-menu { display: none; height: auto; }
#offcanvas .mobile-menu .is-submenu-open > .sub-menu { display: block; }
#offcanvas .ct-toggle-dropdown-mobile[aria-expanded="true"] svg { transform: rotate(180deg); }
html.menu-open, html.menu-open body { overflow: hidden; }

/* The source has duplicate desktop/mobile content at tablet width on five
   service pages. Show only one copy at that breakpoint. */
@media (min-width: 768px) and (max-width: 1024px) {
  .elementor-105 .e-parent.elementor-hidden-desktop,
  .elementor-110 .e-parent.elementor-hidden-desktop,
  .elementor-112 .e-parent.elementor-hidden-desktop,
  .elementor-111 .e-parent.elementor-hidden-desktop,
  .elementor-113 .e-parent.elementor-hidden-desktop { display: none !important; }
}

/* Source desktop columns use a 51px offset, which overflows on small tablets. */
@media (min-width: 768px) and (max-width: 1100px) {
  .elementor .e-flexbox-base { inset-inline-start: 0; }
}

.form-status { margin-top: 20px; padding: 16px; border: 1px solid #dce4eb; border-radius: 4px; background: white; }
.form-status[hidden] { display: none; }
.form-status a { display: inline-block; margin-top: 8px; }
.form-status[data-state="error"] { border-color: #bd3939; }
.elementor-form button[disabled] { cursor: wait; opacity: .65; }
.elementor-form input[type="number"] { appearance: textfield; }
.elementor-form input::-webkit-inner-spin-button { appearance: none; }
.elementor-form input, .elementor-form textarea { max-width: 100%; }
.elementor-form [type="checkbox"]:focus-visible { outline: 2px solid #2872fa; outline-offset: 2px; }
.fallback-page { min-height: 48vh; padding-block: 30px; }
.owner-note { margin-top: 30px; font-size: 14px; }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; }
}
