/* Shared structural rules loaded after every theme: colours remain theme-owned. */
.catalogue-navigation,.services-menu .filter-bar{display:flex;flex-wrap:wrap;gap:.5rem;overflow:visible;max-width:100%;padding:.4rem 0 1rem}
.catalogue-navigation>a,.services-menu .filter-btn{box-sizing:border-box;flex:0 1 auto;min-width:0;max-width:100%;min-height:44px;white-space:normal;overflow-wrap:anywhere}
.catalogue-search{max-width:36rem;margin-bottom:1rem}
.catalogue-search label{display:block;font-weight:600;margin-bottom:.4rem}
.catalogue-search input{box-sizing:border-box;width:100%;min-height:44px;padding:.65rem .8rem;border:1px solid currentColor;border-radius:.4rem;background:transparent;color:inherit;font:inherit}
.catalogue-search p{font-size:.9rem;margin:.4rem 0}
.services-menu [hidden]{display:none!important}
.service-menu-card{min-width:0;padding:1rem}
.service-menu-card .card-desc{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.service-menu-card h3,.service-menu-card .opt-name,.service-group-title,.sps-service-info{overflow-wrap:anywhere;min-width:0}
.service-menu-top,.service-menu-foot,.service-menu-cta{flex-wrap:wrap;gap:.6rem}
.service-options li{flex-wrap:wrap;gap:.4rem}
.catalogue-navigation a:focus-visible,.services-menu button:focus-visible,.catalogue-search input:focus-visible{outline:2px solid currentColor;outline-offset:3px}
@media(max-width:600px){
  /* Category names are tenant content, not a carousel.  A horizontal strip
     hides the next treatment collection at the edge of a phone; wrap into
     complete, tappable rows instead. */
  .catalogue-navigation,
  .services-menu .filter-bar{
    justify-content:center;
    align-items:stretch;
  }
  .services-menu .service-menu-grid{grid-template-columns:minmax(0,1fr);gap:.75rem}
  .services-menu .service-menu-card{padding:.8rem;gap:.4rem}
  .services-menu .service-menu-top{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.5rem}
  .services-menu .service-menu-top h3{margin:0}
  .services-menu .service-menu-top .price{white-space:normal;max-width:8rem;text-align:right}
  .services-menu .service-menu-card .card-desc{-webkit-line-clamp:2;margin:0;line-height:1.4}
  .services-menu .service-menu-foot{margin-top:0;padding-top:0;gap:.25rem}
  .services-menu .service-menu-badges{min-height:0;gap:.25rem}
  .services-menu .service-menu-badges .meta-badge{padding:.2rem .5rem;font-size:.75rem}
  /* The category heading/filter already supplies this context on narrow menus. */
  .services-menu .service-menu-badges .cat-badge{display:none}
  /* Keep secondary links together and give the booking action its own row.
     Three equal columns split even standard labels inside a word on phones. */
  .services-menu .service-menu-cta{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%;gap:.4rem;align-items:stretch}
  .services-menu .service-menu-cta .btn,
  .services-menu .service-menu-cta .service-crawl-link{display:flex;align-items:center;justify-content:center;min-width:0;min-height:44px;box-sizing:border-box;margin:0;padding:.5rem;white-space:normal;overflow-wrap:normal;word-break:normal;text-align:center;font-size:.85rem;line-height:1.3;letter-spacing:.025em}
  .services-menu .service-menu-cta .btn-primary{grid-column:1/-1;width:100%}
  .services-menu .service-menu-cta a:focus-visible{outline:2px solid currentColor;outline-offset:3px}
}
