.sp-directory { --directory-border: #d8ded2; --directory-green: #365126; }
.sp-directory a { overflow-wrap: anywhere; }
.directory-filters { display: flex; flex-wrap: wrap; align-items: end; gap: 1rem; padding: 1.25rem; background: #f3f5ef; border-radius: .5rem; }
.directory-filters > div { flex: 1 1 12rem; }
.sp-directory label { display: block; margin-bottom: .35rem; font-weight: 700; }
.sp-directory input, .sp-directory select { width: 100%; padding: .65rem .75rem; border: 1px solid #8a9580; border-radius: .25rem; background: white; color: #222; font: inherit; }
.sp-directory .directory-button { display: inline-block; width: auto; padding: .65rem 1rem; border: 1px solid var(--directory-green); border-radius: .25rem; background: var(--directory-green); color: white; font: inherit; font-weight: 700; text-decoration: none; cursor: pointer; }
.sp-directory .directory-button:hover { background: #243a18; color: white; }
.sp-directory :focus-visible { outline: 3px solid #9a6200; outline-offset: 3px; }
.directory-result-count { margin: 1rem 0; color: #52604a; }
.directory-list { display: grid; gap: 1.25rem; margin: 1.5rem 0; }
.directory-card { display: flex; gap: 1.25rem; padding: 1.5rem; border: 1px solid var(--directory-border); border-radius: .5rem; background: white; }
.directory-card-photo { flex: 0 0 10rem; }
.directory-card-photo img { width: 100%; height: 8rem; object-fit: cover; border-radius: .25rem; }
.directory-card-content { flex: 1; min-width: 0; }
.directory-card h3 { margin: 0 0 .5rem; font-size: 1.4rem; }
.directory-card p { margin: .75rem 0; }
.directory-categories { display: flex; flex-wrap: wrap; gap: .5rem; margin-bottom: 1rem; }
.directory-categories a { padding: .2rem .6rem; border-radius: 1rem; background: #edf1e8; font-size: .875rem; text-decoration: none; }
.directory-contact { margin: 0 0 1rem; }
.directory-contact > div { display: grid; grid-template-columns: 5rem minmax(0, 1fr); gap: .5rem; margin: .3rem 0; }
.directory-contact dt { font-weight: 700; }
.directory-contact dd { margin: 0; }
.directory-more { font-weight: 700; }
.directory-map-panel { border: 1px solid var(--directory-border); border-radius: .5rem; margin: 1rem 0; }
.directory-map-panel summary { padding: 1rem; color: var(--directory-green); font-weight: 700; cursor: pointer; }
.directory-map { height: 24rem; width: 100%; background: #edf1e8; position: relative; z-index: 0; margin-bottom: 1.25rem; }
.directory-map-panel .directory-map { margin: 0; }
.directory-map a { color: #246; }
.directory-pagination ul { display: flex; flex-wrap: wrap; list-style: none; padding: 0; gap: .5rem; }
.directory-pagination a, .directory-pagination span { display: block; padding: .4rem .8rem; border: 1px solid var(--directory-border); }
.directory-pagination .current { background: #edf1e8; font-weight: 700; }
.directory-gallery { display: grid; grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr)); gap: 1rem; margin-bottom: 2rem; }
.directory-gallery img { width: 100%; height: 15rem; object-fit: cover; }
.directory-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem; margin: 1.5rem 0; }
@media (max-width: 600px) {
  .directory-card { flex-direction: column; padding: 1rem; }
  .directory-card-photo { flex-basis: auto; }
  .directory-card-photo img { height: 12rem; }
  .directory-contact > div { grid-template-columns: 1fr; gap: 0; margin-bottom: .6rem; }
  .directory-map { height: 18rem; }
}
