/* Mobile-first refinements layered over Elementor's generated styles. */
html {
  overflow-x: clip;
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}

body {
  overflow-wrap: anywhere;
}

img,
video,
iframe {
  max-width: 100%;
}

/* Contact form: list information-topic checkboxes on separate rows. */
.elementor-field-group-field_222e9c6 .elementor-field-subgroup {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 10px;
  margin-top: 12px;
}

.elementor-field-group-field_222e9c6 .elementor-field-option {
  display: flex !important;
  align-items: flex-start;
  width: 100%;
  margin: 0;
}

.elementor-field-group-field_222e9c6 .elementor-field-option input[type="checkbox"] {
  flex: 0 0 auto;
  margin: 0.25em 8px 0 0;
}

.elementor-field-group-field_222e9c6 .elementor-field-option label {
  flex: 1 1 auto;
  line-height: 1.4;
}

@media (max-width: 1024px) {
  .elementor-location-header .e-con,
  .elementor-location-footer .e-con,
  main .e-con,
  .elementor-page .e-con {
    max-width: 100%;
  }

  .elementor-widget-button .elementor-button,
  .elementor-field-type-submit .elementor-button,
  .e-n-menu-toggle,
  .elementor-menu-toggle {
    min-height: 44px;
  }

  .elementor-widget-button .elementor-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
  }
}

@media (max-width: 767px) {
  :root {
    --pv-mobile-gutter: clamp(18px, 5vw, 24px);
    --pv-mobile-section-gap: clamp(42px, 12vw, 68px);
  }

  body {
    font-size: 16px;
    line-height: 1.6;
  }

  body.admin-bar {
    min-height: calc(100dvh - 46px);
  }

  .elementor-section,
  .e-con,
  .elementor-column,
  .elementor-widget-wrap,
  .elementor-widget,
  .elementor-widget-container {
    min-width: 0;
  }

  .elementor .e-con {
    --min-height: auto;
  }

  /* Stack desktop image-and-copy rows so neither side is squeezed on phones. */
  :is(main, #content, .site-main) .e-con:has(> .elementor-widget-image):has(> :is(.elementor-widget-text-editor, .elementor-widget-heading)),
  :is(main, #content, .site-main) .e-con:has(> .e-con .elementor-widget-image):has(> .e-con :is(.elementor-widget-text-editor, .elementor-widget-heading)) {
    --flex-direction: column;
    --container-widget-width: 100%;
    --container-widget-height: initial;
    --container-widget-flex-grow: 0;
    --container-widget-align-self: initial;
    --flex-wrap-mobile: nowrap;
    flex-direction: column !important;
    flex-wrap: nowrap !important;
    align-items: stretch;
  }

  :is(main, #content, .site-main) .e-con:has(> .elementor-widget-image):has(> :is(.elementor-widget-text-editor, .elementor-widget-heading)) > :is(.elementor-widget-image, .elementor-widget-text-editor, .elementor-widget-heading),
  :is(main, #content, .site-main) .e-con:has(> .e-con .elementor-widget-image):has(> .e-con :is(.elementor-widget-text-editor, .elementor-widget-heading)) > .e-con {
    --width: 100%;
    --container-widget-width: 100%;
    --flex-grow: 0;
    --flex-shrink: 0;
    width: 100% !important;
    max-width: 100% !important;
    flex-basis: auto;
  }

  :is(main, #content, .site-main) .e-con:has(.elementor-widget-image):has(:is(.elementor-widget-text-editor, .elementor-widget-heading)) .elementor-widget-image {
    align-self: center;
    width: 100%;
    max-width: 100%;
    text-align: center;
  }

  :is(main, #content, .site-main) .e-con:has(.elementor-widget-image):has(:is(.elementor-widget-text-editor, .elementor-widget-heading)) .elementor-widget-image img {
    display: block;
    width: auto;
    max-width: 100%;
    height: auto;
    margin-inline: auto;
  }

  .elementor > .e-con,
  .elementor-section > .elementor-container,
  .elementor-location-header > .elementor > .e-con,
  .elementor-location-footer > .elementor > .e-con {
    padding-inline: var(--pv-mobile-gutter);
  }

  .e-con[style*="min-height"],
  .elementor-section[style*="min-height"] {
    min-height: auto !important;
  }

  h1,
  .elementor-widget-heading h1.elementor-heading-title {
    font-size: clamp(2rem, 9.2vw, 2.75rem);
    line-height: 1.08;
    letter-spacing: -0.025em;
  }

  h2,
  .elementor-widget-heading h2.elementor-heading-title {
    font-size: clamp(1.65rem, 7.2vw, 2.15rem);
    line-height: 1.16;
  }

  h3,
  .elementor-widget-heading h3.elementor-heading-title {
    font-size: clamp(1.25rem, 5.6vw, 1.55rem);
    line-height: 1.25;
  }

  p,
  .elementor-widget-text-editor {
    max-width: 68ch;
  }

  .elementor-location-header .e-con {
    padding-inline: 16px;
  }

  .elementor-location-header .elementor-widget-theme-site-logo img,
  .elementor-location-header .elementor-widget-image img {
    width: auto;
    max-width: min(52vw, 180px);
    max-height: 48px;
    object-fit: contain;
  }

  .elementor-location-header .e-n-menu-toggle,
  .elementor-location-header .elementor-menu-toggle {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    min-width: 44px;
    padding: 8px;
    border-radius: 8px;
  }

  .elementor-location-header .e-n-menu-content,
  .elementor-location-header nav.elementor-nav-menu--dropdown {
    max-height: calc(100dvh - 76px);
    overflow-y: auto;
    overscroll-behavior: contain;
  }

  .elementor-location-header .e-n-menu-title,
  .elementor-location-header .elementor-item {
    min-height: 44px;
  }

  .elementor-widget-button,
  .elementor-widget-button .elementor-button-wrapper,
  .elementor-field-type-submit,
  .elementor-field-type-submit .elementor-button {
    max-width: 100%;
  }

  .elementor-widget-button .elementor-button {
    width: auto;
    max-width: 100%;
    white-space: normal;
    text-align: center;
  }

  .elementor-widget-button.elementor-align-justify .elementor-button,
  .elementor-widget-button .elementor-button-wrapper.elementor-button-wrapper--justify .elementor-button,
  .elementor-field-type-submit .elementor-button {
    width: 100%;
  }

  .elementor-field-type-submit .elementor-button {
    white-space: normal;
    text-align: center;
    padding: 13px 20px;
  }

  input:not([type="checkbox"]):not([type="radio"]),
  select,
  textarea,
  .elementor-field-textual {
    width: 100%;
    min-height: 46px;
    font-size: 16px !important;
  }

  textarea,
  textarea.elementor-field-textual {
    min-height: 120px;
  }

  .elementor-form-fields-wrapper {
    margin-inline: 0 !important;
  }

  .elementor-field-group {
    padding-inline: 0 !important;
  }

  .elementor-form .e-form__indicators {
    gap: 8px;
    overflow-x: auto;
    padding-bottom: 6px;
  }

  table {
    display: block;
    width: 100%;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }

  /* Keep icon cards readable when Elementor retains desktop row widths. */
  .elementor-widget-icon-box {
    width: 100% !important;
    max-width: 100% !important;
    flex: 0 0 100%;
  }

  .e-con:has(> .elementor-widget-icon-box) {
    --width: 100%;
    --flex-grow: 1;
    --flex-shrink: 0;
    width: 100%;
    max-width: 100%;
    padding: clamp(18px, 5vw, 24px);
  }

  .elementor-widget-icon-box .elementor-icon-box-wrapper {
    display: flex;
    flex-direction: column;
    align-items: center !important;
    gap: 12px;
    width: 100%;
    text-align: center !important;
  }

  .elementor-widget-icon-box .elementor-icon-box-icon {
    flex: 0 0 auto;
    margin: 0 !important;
  }

  .elementor-widget-icon-box .elementor-icon-box-content {
    flex: 1 1 auto;
    width: 100%;
    min-width: 0;
  }

  .elementor-widget-icon-box .elementor-icon {
    max-width: 64px;
    max-height: 64px;
  }

  .elementor-widget-icon-box .elementor-icon svg {
    width: min(1em, 64px);
    height: min(1em, 64px) !important;
  }

  .elementor-widget-icon-box .elementor-icon-box-title {
    margin-block: 0 8px;
    overflow-wrap: normal;
    word-break: normal;
    hyphens: auto;
  }

  .elementor-widget-icon-box .elementor-icon-box-description {
    margin: 0;
    overflow-wrap: normal;
    word-break: normal;
  }

  .elementor-swiper-button,
  .swiper-button-prev,
  .swiper-button-next {
    min-width: 44px;
    min-height: 44px;
  }

  .elementor-widget-social-icons .elementor-icon {
    min-width: 44px;
    min-height: 44px;
  }

  .elementor-location-footer {
    text-align: center;
  }

  .elementor-location-footer .elementor-icon-list-items {
    align-items: center;
  }
}

@media (max-width: 380px) {
  :root {
    --pv-mobile-gutter: 16px;
  }

  h1,
  .elementor-widget-heading h1.elementor-heading-title {
    font-size: 1.9rem;
  }
}

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto !important;
  }

  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    scroll-behavior: auto !important;
    transition-duration: 0.01ms !important;
  }
}
