/*
 * AB Prestige Group — additions on top of the exported WordPress theme.
 * Loaded last, so these rules win. Kept deliberately small and additive:
 * the theme's own CSS still does the heavy lifting.
 */

/* ---------------------------------------------------------- contact form status */

.ab-form-status {
  margin: 1rem 0 0;
  min-height: 1.25em;
  font-size: 0.95rem;
  line-height: 1.5;
}
.ab-form-status.is-pending { color: #8a8a80; }
.ab-form-status.is-success { color: #2f7d4f; }
.ab-form-status.is-error   { color: #b3261e; }

/* On the dark contact panel the default colours are too low-contrast. */
.elementor-widget-form .ab-form-status.is-success { color: #7fd0a1; }
.elementor-widget-form .ab-form-status.is-error   { color: #ff9b93; }

/* Visible keyboard focus — the theme removes outlines on form controls. */
.elementor-field-textual:focus-visible,
.elementor-button:focus-visible,
a:focus-visible {
  outline: 2px solid #c9a227;
  outline-offset: 2px;
}

.elementor-button[disabled] { opacity: 0.6; cursor: progress; }

/* ---------------------------------------------------------- broken-image guard */

/* Set by ab-site.js on images that fail to load (these 404 on the original site too). */
img.ab-img-missing {
  visibility: hidden;
}

/* Remove the whole gallery cell so the grid closes up instead of leaving a hole. */
.ab-item-missing {
  display: none !important;
}

/* ---------------------------------------------------------- responsive repairs */

/* Nothing may push the page sideways on a phone. */
html, body { max-width: 100%; overflow-x: hidden; }

/* Media should always scale down inside its column. */
img, video, iframe { max-width: 100%; height: auto; }

@media (max-width: 767px) {
  /* The theme's display headings are sized for desktop and overflow on phones. */
  .elementor-heading-title { overflow-wrap: break-word; word-break: break-word; }

  /* Long contact details (phone, email) must wrap rather than scroll. */
  .elementor-icon-list-text,
  .elementor-icon-box-description { overflow-wrap: anywhere; }

  /* Give tap targets a usable size (WCAG 2.5.8 asks for 24px minimum). */
  .elementor-button,
  .elementor-icon-list-item > a { min-height: 44px; }

  /* Full-bleed sections often keep desktop padding, squeezing text to a ribbon. */
  .elementor-section.elementor-section-boxed > .elementor-container { padding-inline: 16px; }
}

/* Gallery grids collapse to a single column rather than shrinking to thumbnails. */
@media (max-width: 600px) {
  .elementor-grid { grid-template-columns: 1fr !important; }
}

/* ---------------------------------------------------------- motion & print */

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
  /* With animations suppressed, Elementor never adds the class that reveals
     these blocks — so show them outright rather than leaving the page blank. */
  .elementor-invisible { opacity: 1 !important; }
}

@media print {
  header, footer, .main-menu, .elementor-widget-form { display: none !important; }
  body { color: #000; background: #fff; }
}
