.bst-block {
  box-sizing: border-box;
  min-width: 0
}

.bst-block * {
  box-sizing: border-box
}

.bst-block a {
  text-underline-offset: .2em
}

.bst-filters {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
  align-items: end;
  margin-bottom: 1.5rem
}

.bst-filters label {
  display: grid;
  gap: .4rem;
  flex: 1 1 150px;
  font-size: .85em;
  font-weight: 600
}

.bst-filters input, .bst-filters select, .bst-selector select {
  font: inherit;
  padding: .8rem;
  border: 1px solid #a8b3ab;
  border-radius: 6px;
  background: #fff;
  color: #152d24;
  min-width: 0;
  width: 100%
}

.bst-filters button, .bst-pagination button {
  font: inherit;
  border: 1px solid currentColor;
  border-radius: 6px;
  padding: .8rem 1rem;
  cursor: pointer;
  background: #fff;
  color: #17392d
}

.bst-filters button[type=submit] {
  background: #17392d;
  color: white
}

.bst-directory-layout {
  display: grid;
  grid-template-columns:minmax(0, 1fr) minmax(0, 1fr);
  gap: clamp(1rem, 3vw, 2.5rem);
  align-items: start
}

.bst-map {
  min-height: 420px;
  width: 100%;
  border-radius: 12px;
  background: #edf2ed;
  isolation: isolate;
  overflow: hidden
}

.bst-map-message {
  padding: 1.5rem
}

.bst-results {
  min-width: 0;
  display: grid;
  gap: 1rem
}

.bst-card {
  border: 1px solid #d5ded8;
  border-radius: 12px;
  padding: 1.5rem;
  background: var(--bst-card-background, #fff);
  color: var(--bst-card-color, #19382d);
  box-shadow: 0 3px 16px #183b2410
}

.bst-card h3 {
  font-size: clamp(1.35rem, 2vw, 1.8rem);
  line-height: 1.2;
  margin: .2rem 0 .8rem
}

.bst-card p {
  margin: .5rem 0
}

.bst-card img {
  width: 100%;
  height: 160px;
  object-fit: cover;
  border-radius: 8px
}

.bst-eyebrow {
  text-transform: uppercase;
  letter-spacing: .12em;
  font-size: .75rem;
  font-weight: 700
}

.bst-card-actions {
  display: flex;
  gap: 1rem;
  flex-wrap: wrap;
  border-top: 1px solid #dde4df;
  margin-top: 1rem;
  padding-top: 1rem
}

.bst-card-actions a {
  font-weight: 600
}

.bst-card.is-selected {
  outline: 3px solid #00805e;
  outline-offset: 2px
}

.bst-contact-grid {
  display: grid;
  grid-template-columns:1fr 1fr;
  gap: 2rem
}

.bst-contact-grid h2, .bst-hours h2 {
  font-size: 1.6rem
}

.bst-contact-grid address {
  font-style: normal
}

.bst-hours dl {
  margin: 0
}

.bst-hours dl > div {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  padding: .55rem 0;
  border-bottom: 1px solid #d9e1dc
}

.bst-hours dd {
  margin: 0
}

.bst-actions {
  display: flex;
  gap: 1rem;
  flex-wrap: wrap
}

.bst-selector label {
  display: block;
  margin-bottom: .6rem;
  font-weight: 600
}

.bst-navigation ul {
  list-style: none;
  padding: 0;
  display: flex;
  gap: .75rem 1.5rem;
  flex-wrap: wrap
}

.bst-pagination {
  display: flex;
  gap: 1rem;
  align-items: center;
  margin-top: 1.5rem
}

.bst-city-anchor {
  scroll-margin-top: 140px
}

.bst-city-anchor:empty {
  height: 1px
}

.bst-list .bst-directory-layout {
  grid-template-columns:1fr
}

.bst-count {
  display: inline
}

.bst-status {
  text-transform: capitalize
}

.bst-block :focus-visible {
  outline: 3px solid #007e61;
  outline-offset: 4px
}

.bst-result-status {
  font-weight: 600
}

.bst-map .leaflet-control-attribution {
  font-size: 11px
}

.bst-block[hidden] {
  display: none
}

.bst-directory .bst-results {
  max-height: 650px;
  overflow-y: auto;
  padding: 4px;
  scrollbar-gutter: stable
}

.bst-gallery {
  display: grid;
  grid-template-columns:repeat(auto-fit, minmax(min(100%, 240px), 1fr));
  gap: 1rem
}

.bst-gallery img {
  max-width: 100%;
  height: auto;
  border-radius: 12px
}

.bst-card-actions button {
  font: inherit;
  border: 0;
  background: transparent;
  color: inherit;
  text-decoration: underline;
  cursor: pointer;
  padding: 0
}

.bst-tile-error {
  position: absolute;
  z-index: 1000;
  bottom: 1.5rem;
  left: 1rem;
  right: 1rem;
  background: white;
  color: #19382d;
  padding: .5rem;
  border-radius: 4px
}

.bst-map-block {
  min-height: 420px
}

.bst-map-block > .bst-map {
  min-height: inherit
}

.bst-region-groups {
  display: grid;
  grid-template-columns:repeat(auto-fit, minmax(min(100%, 200px), 1fr));
  gap: 24px;
}

.bst-region-group h3 {
  margin: 0 0 16px;
}

.bst-region-group ul {
  list-style: none;
  margin: 0;
  padding: 0;
}

.bst-region-group a {
  display: inline-flex;
  flex-wrap: wrap;
  gap: 6px;
  min-height: 44px;
  align-items: center;
}

.bst-availability-badge {
  display: inline-block;
  flex-shrink: 0;
  padding: 3px 8px;
  border-radius: 999px;
  background: #fff0cc;
  color: #664500;
  font-size: 12px;
  font-weight: 600;
  line-height: 1.5;
  white-space: nowrap;
  text-transform: none;
}

.bst-availability-badge--temporarily-closed, .bst-availability-badge--closed {
  background: #f6e4e4;
  color: #762626;
}

.bst-pagination {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-block: 24px;
}

.bst-pagination :is(a,button) {
  min-width: 44px;
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid currentColor;
  padding: 8px 12px;
  border-radius: 4px;
}

.bst-pagination [aria-current=page] {
  font-weight: 700;
  text-decoration: underline;
}

.bst-directory-root[aria-busy=true] {
  opacity: .65;
}

.bst-region-group :focus-visible, .bst-pagination :focus-visible {
  outline: 3px solid currentColor;
  outline-offset: 3px;
}

.bst-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
}

.bst-actions p {
  flex-basis: 100%;
}

/* Legacy city destinations remain measurable scroll targets between result pages. */
.bst-city-anchor {
  display: block;
  width: 1px;
  height: 1px;
  scroll-margin-top: 160px;
}

/* Map and summary remain usable independently; dialogs are outside Leaflet's clipped canvas. */
.bst-map-shell {
  min-width: 0;
  position: relative
}

.bst-map-muted .leaflet-tile-pane {
  filter: grayscale(1)
}

.bst-map-block {
  min-height: 420px
}

.bst-map-block > .bst-map-shell, .bst-map-block > .bst-map-shell > .bst-map {
  min-height: inherit
}

.bst-map-alternative {
  display: grid;
  gap: 1rem;
  margin-block-start: 1rem;
  min-width: 0
}

.bst-map .leaflet-control-zoom a {
  width: 44px;
  height: 44px;
  line-height: 44px;
  color: #111;
  background: #fff
}

.bst-map .leaflet-control-attribution {
  max-width: 100%;
  font: 12px/1.5 sans-serif;
  color: #111;
  background: #fff;
  padding: 4px 8px;
  white-space: normal
}

.bst-map .leaflet-control-attribution a {
  color: #111;
  text-decoration: underline
}

.bst-map-pin {
  background: none;
  border: 0;
  cursor: pointer
}

.bst-map-pin svg {
  display: block;
  width: 44px;
  height: 44px;
  filter: drop-shadow(0 1px 2px #0008)
}

.bst-map-pin:hover {
  filter: brightness(1.15)
}

.bst-map :focus-visible, .bst-map-alternative :focus-visible, .bst-directory-root :focus-visible, .bst-location-dialog :focus-visible {
  outline: 3px solid #111;
  outline-offset: 3px;
  box-shadow: 0 0 0 6px #fff
}

.bst-map-pin:focus-visible {
  border-radius: 50%;
  z-index: 10000 !important
}

.bst-card-actions button {
  font: inherit;
  cursor: pointer;
  min-height: 44px;
  padding: 8px 14px;
  border: 1px solid currentColor;
  border-radius: 6px;
  background: #fff;
  color: #111
}

.bst-location-dialog {
  box-sizing: border-box;
  width: calc(100% - 32px);
  max-width: 640px;
  max-height: calc(100dvh - 32px);
  padding: 24px;
  border: 1px solid #777;
  border-radius: 12px;
  background: #fff;
  color: #111;
  overflow: auto;
  overscroll-behavior: contain;
  margin: auto;
  line-height: 1.6
}

.bst-location-dialog::backdrop {
  background: rgb(0 0 0 / .65)
}

.bst-location-dialog .bst-dialog-dismiss {
  display: block;
  margin-inline-start: auto;
  min-width: 44px;
  min-height: 44px;
  padding: 8px 12px;
  font: inherit;
  background: #fff;
  color: #111;
  border: 1px solid currentColor;
  border-radius: 6px;
  cursor: pointer
}

.bst-dialog-body {
  margin-top: 12px;
  overflow-wrap: anywhere;
  min-width: 0
}

.bst-dialog-body .wp-block-group {
  min-width: 0
}

.bst-modal-field {
  margin-block: 12px;
  min-width: 0
}

.bst-modal-field--name {
  font-size: 1.8rem;
  line-height: 1.2
}

.bst-modal-name {
  font-size: inherit;
  line-height: inherit;
  margin: 0
}

.bst-modal-field address {
  font-style: normal
}

.bst-modal-field h3 {
  font-size: 1.15em;
  margin-block: 0 12px
}

.bst-modal-hours {
  margin: 0
}

.bst-modal-hours > div {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 0 16px
}

.bst-modal-hours dd {
  margin: 0
}

.bst-modal-timezone {
  font-size: .875em
}

.bst-modal-field .wp-element-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  white-space: normal;
  text-align: center;
  font: inherit;
  text-decoration: none;
  cursor: pointer
}

.bst-dialog-body a:not(.wp-element-button) {
  color: inherit;
  text-decoration: underline
}

.bst-modal-close {
  background: #fff !important;
  color: #111 !important;
  border: 2px solid #111 !important
}

@media (prefers-reduced-motion: reduce) {
  .bst-map-shell *, .bst-map-alternative * {
    scroll-behavior: auto !important;
    transition: none !important;
    animation: none !important
  }
}

@media (forced-colors: active) {
  .bst-map-pin svg {
    forced-color-adjust: none
  }

  .bst-map-pin svg path {
    fill: CanvasText;
    stroke: Canvas
  }

  .bst-map-pin svg circle {
    fill: Canvas;
    stroke: CanvasText
  }

  .bst-map :focus-visible, .bst-location-dialog :focus-visible {
    outline-color: Highlight;
    box-shadow: none
  }

  .bst-location-dialog {
    border: 2px solid CanvasText
  }
}

.bst-location-choices {
  list-style: none;
  padding: 0;
  margin: 16px 0;
  display: grid;
  gap: 12px
}

.bst-location-choices button {
  display: block;
  width: 100%;
  min-height: 44px;
  padding: 12px 16px;
  border: 1px solid #54595f;
  border-radius: 6px;
  background: #fff;
  color: #111;
  font: inherit;
  text-align: left;
  cursor: pointer
}

.bst-location-choices button:hover {
  background: #f1f2f3
}

.bst-map {
  scroll-margin-top: 180px
}

/* Reflect native block styles on semantic content nested in a dynamic field wrapper. */
.bst-modal-field.has-text-color :is(a,button,h2,h3) {
  color: inherit !important
}

.bst-modal-field.has-background .wp-element-button {
  background: inherit !important
}

.bst-modal-preview-note {
  font-size: 14px;
  padding: 12px;
  border: 1px dashed #777;
  color: #54595f
}

.editor-styles-wrapper .is-root-container:has([data-type="beanstalk-locations/modal-field"]) {
  max-width: 640px !important;
  margin: 32px auto !important;
  padding: 24px;
  background: #fff;
  border-radius: 12px
}

@media (forced-colors: active) {
  .bst-map-pin svg text {
    fill: CanvasText
  }
}

/* Native list is an enhancement: these bounds apply only after successful initialization. */
.bst-directory-root.bst-list-ready .bst-directory-layout {
  grid-template-columns:minmax(0, 1fr) 400px;
  align-items: stretch;
  height: clamp(560px, 75svh, 840px);
  gap: 24px
}

.bst-directory-root.bst-list-ready .bst-map-shell {
  height: 100%;
  min-width: 0;
  min-height: 0
}

.bst-directory-root.bst-list-ready .bst-map {
  height: 100%;
  min-height: 0
}

.bst-list-panel {
  min-width: 0
}

.bst-directory-root.bst-list-ready .bst-list-panel {
  display: flex;
  flex-direction: column;
  min-height: 0;
  gap: 8px
}

.bst-directory-root.bst-list-ready .bst-results {
  display: flex;
  flex-direction: column;
  gap: 16px;
  position: relative;
  min-width: 0;
  min-height: 0;
  height: 100%;
  max-height: none;
  overflow-x: hidden;
  overflow-y: auto;
  overscroll-behavior: contain;
  scrollbar-gutter: stable;
  width: 100%;
  padding: 6px;
  margin: 0;
  flex: 1
}

.bst-directory-root.bst-list-ready .bst-card {
  cursor: pointer
}

.bst-directory-root .bst-card-select {
  display: block;
  text-align: left;
  width: 100%;
  font: inherit;
  font-weight: inherit;
  color: inherit;
  background: none;
  border: 0;
  border-radius: 0;
  padding: 4px 0;
  min-height: 44px;
  cursor: pointer
}

.bst-directory-root .bst-card-select:hover {
  text-decoration: underline;
  text-underline-offset: .2em
}

.bst-map-pin.is-selected {
  filter: drop-shadow(0 0 3px currentColor)
}

.bst-directory-root .bst-pagination[hidden] {
  display: none
}

.bst-service-area-summary {
  margin-block: 1rem
}

.bst-service-area-summary ul {
  margin-block: .4rem;
  padding-inline-start: 1.25rem
}

.bst-business-model {
  font-weight: 600
}

.bst-service-area-summary li {
  overflow-wrap: anywhere
}

.bst-serves-location[hidden] {
  display: none
}
