/* Shared control primitives, imported by owned and provider shadow-root styles. */
:root, :host {
  --wsh-control-radius: 8px;
  --wsh-control-height: 44px;
  --wsh-focus-color: #d7b65a;
  --wsh-focus-shadow: 0 0 0 1px var(--wsh-focus-color), 0 0 0 4px rgba(215, 182, 90, .18);
  --wsh-hover-shadow: 0 0 0 1px rgba(215, 182, 90, .55), 0 0 12px rgba(215, 182, 90, .16);
  --wsh-pressed-shadow: inset 0 2px 4px rgba(0, 0, 0, .22), 0 0 0 1px rgba(215, 182, 90, .55);
  /* The extra unit shifts the chevron's visual weight toward the circle center. */
  --wsh-chevron-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='10 6 16 12 10 18'/%3E%3C/svg%3E");
  --wsh-error-color: #edaa95;
  --wsh-error-shadow: 0 0 0 1px var(--wsh-error-color), 0 0 0 4px rgba(237, 170, 149, .14);
  --wsh-control-gap: 8px;
  --wsh-control-padding: 10px 12px;
  --wsh-control-duration: 160ms;
  --wsh-panel: #171513;
  --wsh-field: #24211c;
  --wsh-line: #514a3d;
  --wsh-text: #f8f4ea;
  --wsh-muted: #c8c0b3;
  --wsh-gold: #d7b65a;
}

.wsh-control-icon {
  width: 20px;
  height: 20px;
  flex: 0 0 20px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
  vertical-align: middle;
  pointer-events: none;
}
/* Only decorated native dismiss triggers use this geometry and treatment.
   The provider's positioning and overlay lifecycle remain authoritative. */

:is(#MBBv3_Modal, #MBBv3_SearchDetails, #MBBv3_ListingResults, #MBBv3_QuickSearch, #MBBv3_PropertyTypeMenuWrapper, #bfg-slideshow-dialog, .update-lightbox) .wsh-close-control:not([hidden]):not(.bfg-hidden):not(.d-none):not([style*="display: none"]):not([style*="display:none"]) { display: inline-flex; }
:is(#MBBv3_Modal, #MBBv3_SearchDetails, #MBBv3_ListingResults, #MBBv3_QuickSearch, #MBBv3_PropertyTypeMenuWrapper, #bfg-slideshow-dialog, .update-lightbox) .wsh-close-control {
  box-sizing: border-box;
  width: var(--wsh-control-height) !important;
  height: var(--wsh-control-height) !important;
  min-width: var(--wsh-control-height);
  min-height: var(--wsh-control-height);
  flex: 0 0 var(--wsh-control-height);
  padding: 0 !important;
  margin: 0 !important;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--wsh-line) !important;
  border-radius: var(--wsh-control-radius) !important;
  background: var(--wsh-field) !important;
  color: var(--wsh-text) !important;
  opacity: 1;
  text-shadow: none !important;
  box-shadow: none !important;
  line-height: 1;
  text-decoration: none !important;
  cursor: pointer;
  transition: background-color var(--wsh-control-duration), border-color var(--wsh-control-duration);
}
:is(#MBBv3_Modal, #MBBv3_SearchDetails, #MBBv3_ListingResults, #MBBv3_QuickSearch, #MBBv3_PropertyTypeMenuWrapper, #bfg-slideshow-dialog, .update-lightbox) .wsh-close-control::before,
:is(#MBBv3_Modal, #MBBv3_SearchDetails, #MBBv3_ListingResults, #MBBv3_QuickSearch, #MBBv3_PropertyTypeMenuWrapper, #bfg-slideshow-dialog, .update-lightbox) .wsh-close-control::after { content: none; }
:is(#MBBv3_Modal, #MBBv3_SearchDetails, #MBBv3_ListingResults, #MBBv3_QuickSearch, #MBBv3_PropertyTypeMenuWrapper, #bfg-slideshow-dialog, .update-lightbox) .wsh-close-control:hover {
  background: #363023 !important;
  border-color: #a69567 !important;
}
:is(#MBBv3_Modal, #MBBv3_SearchDetails, #MBBv3_ListingResults, #MBBv3_QuickSearch, #MBBv3_PropertyTypeMenuWrapper, #bfg-slideshow-dialog, .update-lightbox) .wsh-close-control:active { background: #514a30 !important; }
:is(#MBBv3_Modal, #MBBv3_SearchDetails, #MBBv3_ListingResults, #MBBv3_QuickSearch, #MBBv3_PropertyTypeMenuWrapper, #bfg-slideshow-dialog, .update-lightbox) .wsh-close-control:focus-visible {
  outline: 2px solid var(--wsh-focus-color) !important;
  outline-offset: 3px !important;
  box-shadow: var(--wsh-focus-shadow) !important;
}
.wsh-close-control > .wsh-control-icon { width: 24px; height: 24px; flex-basis: 24px; }
@media (prefers-reduced-motion: reduce) {
  :root, :host { --wsh-control-duration: 0ms; }
  .wsh-close-control, .primary-button > .button-icon { transition: none; }
}

/* Text-entry controls use the same ring and halo for pointer and keyboard focus.
   Joined fields move this treatment to their enclosing input group. */
:is(.contact-card, .value-card) :is(input, select, textarea):focus,
[id^="MBBv3"]:not(#mbbV1) :is(.form-control, .mbb-input-location):focus {
  border-color: var(--wsh-focus-color) !important;
  outline: none !important;
  box-shadow: var(--wsh-field-focus-shadow, var(--wsh-focus-shadow)) !important;
}
:is(.contact-card, .value-card) :is(input, select, textarea):is(:user-invalid, [aria-invalid="true"]),
[id^="MBBv3"]:not(#mbbV1) .form-control:is(.is-invalid, [aria-invalid="true"]) {
  --wsh-field-focus-shadow: var(--wsh-error-shadow);
  border-color: var(--wsh-error-color) !important;
  box-shadow: var(--wsh-error-shadow) !important;
}
:is(input, select, textarea):disabled { cursor: not-allowed; }

.link-arrow {
  display: inline-block;
  flex: none;
  width: 1em;
  height: 1em;
  vertical-align: -.15em;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.primary-button > .button-icon {
  display: grid;
  flex: none;
  place-items: center;
  width: 1.9rem;
  height: 1.9rem;
  border-radius: 50%;
  background: rgba(11, 10, 9, .1);
  transition: transform 240ms var(--ease-out), background-color 240ms var(--ease-out);
}
.button-icon .link-arrow { width: 1rem; height: 1rem; }

/* Matching action controls share state feedback without changing visibility or handlers. */
:is(#MBBv3_ListingResults#MBBv3_ListingResults, #MBBv3_SearchDetails#MBBv3_SearchDetails, #MBBv3_Modal#MBBv3_Modal, #MBBv3_QuickSearch#MBBv3_QuickSearch, #MBBv3_LoginPanel#MBBv3_LoginPanel, #MBBv3_PropertyTypeMenuWrapper#MBBv3_PropertyTypeMenuWrapper, #bfg-slideshow-dialog#bfg-slideshow-dialog) :is(.btn, .dropdown-item, .carousel-control-prev, .carousel-control-next, .date-block[role="radio"], .slick-arrow, .pagination-arrow, .wsh-close-control, .wsh-gallery-button, bb-toggle-button, .map-fs-btn, .map-exit-fs-btn, .maplibregl-ctrl-group button):not(:disabled):not([disabled]):not(.disabled):not(.slick-disabled):not([aria-disabled="true"]):focus {
  outline: none !important;
  box-shadow: var(--wsh-focus-shadow) !important;
}
:is(#MBBv3_ListingResults#MBBv3_ListingResults, #MBBv3_SearchDetails#MBBv3_SearchDetails, #MBBv3_Modal#MBBv3_Modal, #MBBv3_QuickSearch#MBBv3_QuickSearch, #MBBv3_LoginPanel#MBBv3_LoginPanel, #MBBv3_PropertyTypeMenuWrapper#MBBv3_PropertyTypeMenuWrapper, #bfg-slideshow-dialog#bfg-slideshow-dialog) :is(.btn, .dropdown-item, .carousel-control-prev, .carousel-control-next, .date-block[role="radio"], .slick-arrow, .pagination-arrow, .wsh-close-control, .wsh-gallery-button, bb-toggle-button, .map-fs-btn, .map-exit-fs-btn, .maplibregl-ctrl-group button):not(:disabled):not([disabled]):not(.disabled):not(.slick-disabled):not([aria-disabled="true"]):hover,
:is(.primary-button.primary-button, .secondary-button.secondary-button, .contact-card.contact-card button, .value-card.value-card button, .call-nav-button.call-nav-button, .search-nav-button.search-nav-button, .mobile-menu-toggle.mobile-menu-toggle, .update-button.update-button, .update-lightbox-button.update-lightbox-button, .update-expand-control.update-expand-control, .update-lightbox.update-lightbox button, .listing-strip-controls.listing-strip-controls button):not(:disabled):not([aria-disabled="true"]):hover { box-shadow: var(--wsh-hover-shadow) !important; }
:is(#MBBv3_ListingResults#MBBv3_ListingResults, #MBBv3_SearchDetails#MBBv3_SearchDetails, #MBBv3_Modal#MBBv3_Modal, #MBBv3_QuickSearch#MBBv3_QuickSearch, #MBBv3_LoginPanel#MBBv3_LoginPanel, #MBBv3_PropertyTypeMenuWrapper#MBBv3_PropertyTypeMenuWrapper, #bfg-slideshow-dialog#bfg-slideshow-dialog) :is(.btn, .dropdown-item, .carousel-control-prev, .carousel-control-next, .date-block[role="radio"], .slick-arrow, .pagination-arrow, .wsh-close-control, .wsh-gallery-button, bb-toggle-button, .map-fs-btn, .map-exit-fs-btn, .maplibregl-ctrl-group button):not(:disabled):not([disabled]):not(.disabled):not(.slick-disabled):not([aria-disabled="true"]):active,
:is(.primary-button.primary-button, .secondary-button.secondary-button, .contact-card.contact-card button, .value-card.value-card button, .call-nav-button.call-nav-button, .search-nav-button.search-nav-button, .mobile-menu-toggle.mobile-menu-toggle, .update-button.update-button, .update-lightbox-button.update-lightbox-button, .update-expand-control.update-expand-control, .update-lightbox.update-lightbox button, .listing-strip-controls.listing-strip-controls button):not(:disabled):not([aria-disabled="true"]):active { box-shadow: var(--wsh-pressed-shadow) !important; }
:is(#MBBv3_ListingResults#MBBv3_ListingResults, #MBBv3_SearchDetails#MBBv3_SearchDetails, #MBBv3_Modal#MBBv3_Modal, #MBBv3_QuickSearch#MBBv3_QuickSearch, #MBBv3_LoginPanel#MBBv3_LoginPanel, #MBBv3_PropertyTypeMenuWrapper#MBBv3_PropertyTypeMenuWrapper, #bfg-slideshow-dialog#bfg-slideshow-dialog) :is(.btn, .dropdown-item, .carousel-control-prev, .carousel-control-next, .date-block[role="radio"], .slick-arrow, .pagination-arrow, .wsh-close-control, .wsh-gallery-button, bb-toggle-button, .map-fs-btn, .map-exit-fs-btn, .maplibregl-ctrl-group button):not(:disabled):not([disabled]):not(.disabled):not(.slick-disabled):not([aria-disabled="true"]):focus-visible,
:is(.primary-button.primary-button, .secondary-button.secondary-button, .contact-card.contact-card button, .value-card.value-card button, .call-nav-button.call-nav-button, .search-nav-button.search-nav-button, .mobile-menu-toggle.mobile-menu-toggle, .update-button.update-button, .update-lightbox-button.update-lightbox-button, .update-expand-control.update-expand-control, .update-lightbox.update-lightbox button, .listing-strip-controls.listing-strip-controls button):not(:disabled):not([aria-disabled="true"]):focus-visible {
  outline: 2px solid var(--wsh-focus-color) !important;
  outline-offset: 3px !important;
  box-shadow: var(--wsh-focus-shadow) !important;
}

/* Shared provider filter surfaces. Native selects stay available when the
   Popover API cannot support an accessible enhancement. */
[data-wsh-native-select][hidden] { display: none !important; }
.wsh-select-trigger {
  width: 100%; min-height: 44px; border: 1px solid var(--wsh-line); border-radius: 8px;
  background: var(--wsh-field); color: var(--wsh-text); font: 16px/1.4 system-ui,sans-serif;
  text-align: left; padding: 10px 40px 10px 12px; cursor: pointer;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23c8c0b3' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  background-size: 16px; background-repeat: no-repeat; background-position: right 13px center;
}
.wsh-select-trigger[aria-expanded="true"] { border-color: var(--wsh-gold); background-color: #d7b65a14; }
.wsh-filter-panel {
  box-sizing: border-box; margin: 0; padding: 0; min-width: 0;
  border: 1px solid var(--wsh-line); border-radius: 10px;
  background: var(--wsh-panel); color: var(--wsh-text); box-shadow: 0 16px 32px #0008;
  font: 16px/1.4 system-ui,sans-serif; overflow: auto; overscroll-behavior: contain;
}
.wsh-select-panel { position: fixed; inset: auto; }
.wsh-select-panel:popover-open { display: flex; flex-direction: column; }
.wsh-filter-heading {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  padding: 6px 10px; border-bottom: 1px solid var(--wsh-line); color: var(--wsh-muted);
  font: 500 14px/1.4 system-ui,sans-serif; flex-shrink: 0;
}
.wsh-filter-close {
  min-height: 44px; min-width: 44px; padding: 8px; margin: 0;
  border: 0; border-radius: 6px; background: transparent; color: var(--wsh-gold);
  font: 500 14px/1.4 system-ui,sans-serif; cursor: pointer;
}
.wsh-filter-options { overflow-y: auto; overscroll-behavior: contain; min-height: 0; padding: 6px; }
.wsh-filter-options [role="option"] {
  display: block; width: 100% !important; min-height: 44px; padding: 10px 12px; margin: 0; /* The provider sets button { width: auto }. */
  border: 0; border-radius: 6px; text-align: left; background: transparent;
  color: var(--wsh-text); font: 16px/1.4 system-ui,sans-serif; cursor: pointer;
}
.wsh-filter-options [role="option"][aria-selected="true"] { background: #d7b65a20; color: var(--wsh-gold); }
.wsh-filter-options [role="option"]:hover, .wsh-filter-close:hover { background: #d7b65a14; }
.wsh-filter-options [role="option"]:disabled { opacity: .45; cursor: default; }
.wsh-filter-options [role="option"][hidden] { display: none; }
:is(.wsh-select-trigger, .wsh-filter-close, .wsh-filter-options button):focus-visible { outline: 2px solid var(--wsh-gold); outline-offset: -3px; }
.wsh-filter-heading { position: sticky; top: 0; z-index: 2; background: var(--wsh-panel); }
.wsh-filter-options { padding-bottom: max(6px, env(safe-area-inset-bottom)); }
@media (max-width: 767px) { .wsh-select-trigger { font-size: 16px !important; } }
:is(.wsh-select-trigger, .wsh-filter-close, .wsh-filter-options button):focus:not(:focus-visible) { outline: none !important; }

/* Programmatic dialog focus following a pointer/touch open is not keyboard
   navigation. Keep the visible keyboard ring when the input mode changes. */
:is(#MBBv3_Modal#MBBv3_Modal#MBBv3_Modal#MBBv3_Modal, #MBBv3_SearchDetails#MBBv3_SearchDetails#MBBv3_SearchDetails#MBBv3_SearchDetails, #MBBv3_ListingResults#MBBv3_ListingResults#MBBv3_ListingResults#MBBv3_ListingResults, #MBBv3_QuickSearch#MBBv3_QuickSearch#MBBv3_QuickSearch#MBBv3_QuickSearch, #MBBv3_PropertyTypeMenuWrapper#MBBv3_PropertyTypeMenuWrapper#MBBv3_PropertyTypeMenuWrapper#MBBv3_PropertyTypeMenuWrapper, #bfg-slideshow-dialog#bfg-slideshow-dialog#bfg-slideshow-dialog#bfg-slideshow-dialog, .update-lightbox) .wsh-close-control[data-wsh-focus-mode="pointer"]:focus {
  outline: none !important; box-shadow: none !important;
}
/* Every menu's "Close" is 14px; the provider's button font rule enlarged it in some menus. */
.wsh-filter-close { font-size: 14px !important; font-weight: 500 !important; }
