/*!
 * MurphyMia search module — /de/suche and /de/tiersitter/{slug}. Owner: W-search.
 * Tokens only (no raw colours), no url(), no remote resources. Layer: modules.
 */
@layer modules {
  /* ======================================================================= Search page */
  .mm-search { padding-block: var(--mm-space-4) var(--mm-space-8); }
  .mm-search__head { display: flex; flex-direction: column; gap: var(--mm-space-2); margin-block-end: var(--mm-space-4); }
  .mm-search__title { font-size: var(--mm-text-2xl); overflow-wrap: anywhere; }
  .mm-search .mm-error-summary { margin-block-end: var(--mm-space-4); }

  .mm-search__layout { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--mm-space-6); align-items: start; }
  .mm-search__filters, .mm-search__results, .mm-search__map { min-width: 0; }
  .mm-search__filters-title { font-size: var(--mm-text-lg); margin-block-end: var(--mm-space-3); }
  .mm-search__map { display: none; }

  /* Filter form */
  .mm-search-form .mm-filter-group { border-top: 1px solid var(--mm-color-border); padding-block-start: var(--mm-space-3); }
  .mm-search-form__pets { display: flex; flex-direction: column; gap: var(--mm-space-3); }
  .mm-search-form__bbox { padding: var(--mm-space-2) var(--mm-space-3); border-radius: var(--mm-radius-sm); background: var(--mm-color-brand-tint); }
  .mm-search-form__actions { padding-block-start: var(--mm-space-2); }
  .mm-search-form__reset { font-size: var(--mm-text-sm); }
  .mm-drawer .mm-search-form__actions .mm-btn { display: none; }

  /* Results column */
  .mm-search__results[aria-busy="true"] .mm-search-results { opacity: 0.55; transition: opacity var(--mm-duration-base) var(--mm-ease); }
  .mm-search-results { display: flex; flex-direction: column; gap: var(--mm-space-4); }
  .mm-search-results__toolbar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--mm-space-3); }
  .mm-search-results__count { font-size: var(--mm-text-lg); }
  .mm-search-results__tools { justify-content: flex-end; }
  .mm-search-results__reset { font-size: var(--mm-text-sm); }
  .mm-search-list { display: flex; flex-direction: column; gap: var(--mm-space-4); margin: 0; padding: 0; list-style: none; }
  .mm-search-list__item { display: flex; flex-direction: column; }
  .mm-search-list__estimate {
    display: flex; flex-wrap: wrap; align-items: center; gap: var(--mm-space-1) var(--mm-space-3);
    padding: var(--mm-space-2) var(--mm-space-4);
    border: 1px solid var(--mm-color-brand-tint-border); border-top: 0;
    border-radius: 0 0 var(--mm-radius-md) var(--mm-radius-md);
    background: var(--mm-color-brand-tint); font-size: var(--mm-text-sm);
  }
  .mm-search-list__estimate .mm-price { margin: 0; }
  .mm-search-relax { margin: var(--mm-space-2) 0 0; padding-inline-start: var(--mm-space-5); text-align: start; }
  .mm-search-relax li + li { margin-block-start: var(--mm-space-1); }
  .mm-search-ranking__list { margin: 0 0 var(--mm-space-2); padding-inline-start: var(--mm-space-5); }

  /* Without JS the map cannot work: no switch, no map column. */
  html:not(.mm-js) .mm-search-results__view-toggle { display: none; }

  /* Map */
  .mm-search-map { position: relative; overflow: hidden; border: 1px solid var(--mm-color-border); border-radius: var(--mm-radius-md); background: var(--mm-color-sunken); }
  .mm-search-map__canvas { height: min(75vh, 44rem); min-height: 22rem; }
  .mm-search-map__area { position: absolute; top: var(--mm-space-3); left: 50%; transform: translateX(-50%); z-index: 2; box-shadow: var(--mm-shadow-md); }
  /* Region menu (top left, over the map; the panel scrolls inside the smallest map height) — the area button sits below it. */
  .mm-search-map__region { position: absolute; top: var(--mm-space-3); left: var(--mm-space-3); z-index: 4; max-width: calc(100% - 5rem); }
  .mm-search-map__region-trigger { max-width: 100%; padding: 0.375rem 0.75rem; font-size: var(--mm-text-sm); box-shadow: var(--mm-shadow-md); }
  .mm-search-map__region-trigger > span:first-child { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .mm-search-map__region-panel { width: min(15rem, calc(100vw - 2rem)); max-height: 17rem; overflow-y: auto; }
  .mm-search-map__region-current { display: inline-flex; align-items: center; margin-inline-start: auto; }
  .mm-search-map__region-note { margin: var(--mm-space-2) 0 0; padding: var(--mm-space-2) 0.75rem var(--mm-space-1); border-top: 1px solid var(--mm-color-border); }
  .mm-search-map__region:not([hidden]) ~ .mm-search-map__area { top: calc(var(--mm-space-3) + var(--mm-control-height) + var(--mm-space-2)); }
  .mm-search-map__fallback {
    position: absolute; inset: 0; z-index: 1; display: flex; flex-direction: column; align-items: center; justify-content: center;
    gap: var(--mm-space-2); padding: var(--mm-space-6); text-align: center; background: var(--mm-color-sunken); color: var(--mm-color-ink-muted);
  }
  .mm-search-map__note { display: flex; align-items: center; gap: var(--mm-space-1); margin-block-start: var(--mm-space-2); color: var(--mm-color-ink-muted); }

  .mm-map-pin {
    display: inline-flex; align-items: center; gap: var(--mm-space-1);
    min-height: 2rem; padding: 0.125rem var(--mm-space-2) 0.125rem 0.125rem;
    border: 2px solid var(--mm-color-brand); border-radius: var(--mm-radius-pill);
    background: var(--mm-color-surface); color: var(--mm-color-ink);
    font: 700 var(--mm-text-sm)/1 var(--mm-font-sans); white-space: nowrap; cursor: pointer; box-shadow: var(--mm-shadow-sm);
  }
  .mm-map-pin__rank {
    display: inline-flex; align-items: center; justify-content: center; min-width: 1.5rem; height: 1.5rem;
    border-radius: var(--mm-radius-pill); background: var(--mm-color-brand); color: var(--mm-color-ink-inverse); font-size: var(--mm-text-xs);
  }
  .mm-map-pin:hover, .mm-map-pin.is-active { background: var(--mm-color-brand); color: var(--mm-color-ink-inverse); z-index: 3; }
  .mm-map-pin.is-active .mm-map-pin__rank, .mm-map-pin:hover .mm-map-pin__rank { background: var(--mm-color-surface); color: var(--mm-color-brand-hover); }
  .mm-map-pin.is-active { outline: 3px solid var(--mm-color-accent); outline-offset: 1px; }
  .mm-map-cluster {
    display: inline-flex; align-items: center; justify-content: center; width: 2.5rem; height: 2.5rem;
    border: 3px solid var(--mm-color-surface); border-radius: 50%; background: var(--mm-color-brand-hover); color: var(--mm-color-ink-inverse);
    font: 700 var(--mm-text-base)/1 var(--mm-font-sans); cursor: pointer; box-shadow: var(--mm-shadow-md);
  }
  .mm-map-cluster.is-active { outline: 3px solid var(--mm-color-accent); outline-offset: 1px; }
  .mm-map-pin:focus-visible, .mm-map-cluster:focus-visible { outline: var(--mm-focus-width) solid var(--mm-color-focus); outline-offset: var(--mm-focus-offset); }
  .mm-map-center { display: block; width: 1rem; height: 1rem; border: 3px solid var(--mm-color-surface); border-radius: 50%; background: var(--mm-color-accent-ink); box-shadow: var(--mm-shadow-sm); }
  .mm-map-place { display: inline-flex; align-items: center; gap: var(--mm-space-1); pointer-events: none; }
  .mm-map-place__name {
    padding: 0.125rem var(--mm-space-2); border-radius: var(--mm-radius-pill); background: var(--mm-color-surface);
    color: var(--mm-color-ink); font: 700 var(--mm-text-xs)/1.3 var(--mm-font-sans); white-space: nowrap; box-shadow: var(--mm-shadow-sm);
  }

  /* Below 80em: list or map (switch), map below the toolbar in map view. */
  @media (max-width: 79.99em) {
    .mm-js .mm-search__layout[data-view="map"] .mm-search__map { display: block; }
    .mm-js .mm-search__layout[data-view="map"] .mm-search-results > :not(.mm-search-results__toolbar):not(.mm-search-results__chips) { display: none; }
    .mm-js .mm-search__layout[data-view="map"] .mm-search-map__canvas { height: calc(100dvh - var(--mm-header-height) - 12rem); }
  }

  /* Phones and small tablets: filters live in the drawer when JS runs; inline (top) without JS. */
  @media (max-width: 63.99em) {
    .mm-js .mm-search__filters { display: none; }
    .mm-search__layout { gap: var(--mm-space-4); }
  }
  @media (min-width: 64em) {
    .mm-search__layout { grid-template-columns: 17rem minmax(0, 1fr); }
    .mm-search__filters {
      position: sticky; top: calc(var(--mm-header-height) + var(--mm-space-4));
      max-height: calc(100vh - var(--mm-header-height) - var(--mm-space-8)); overflow-y: auto;
      padding-inline-end: var(--mm-space-2);
    }
    .mm-search-results__filter-btn { display: none; }
    .mm-js .mm-search__layout[data-view="map"] .mm-search__map { grid-column: 2; }
  }
  @media (min-width: 80em) {
    .mm-js .mm-search__layout { grid-template-columns: 17rem minmax(0, 1fr) minmax(22rem, 0.85fr); }
    .mm-js .mm-search__map { display: block; position: sticky; top: calc(var(--mm-header-height) + var(--mm-space-4)); }
    /* Map view (?ansicht=karte) keeps the map in its own column here (the 64em rule puts it under the list). */
    .mm-js .mm-search__layout[data-view="map"] .mm-search__map { grid-column: 3; }
    .mm-js .mm-search__map .mm-search-map__canvas { height: calc(100vh - var(--mm-header-height) - 6rem); }
    .mm-search-results__view-toggle { display: none; }
  }

  /* ======================================================================= Public profile */
  .mm-profile { padding-block: var(--mm-space-4) var(--mm-space-12); }
  .mm-profile__nav { margin-block-end: var(--mm-space-4); }
  .mm-profile__back { display: inline-flex; align-items: center; gap: var(--mm-space-1); font-size: var(--mm-text-sm); }
  .mm-profile__layout { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--mm-space-8); align-items: start; }
  .mm-profile__main { display: flex; flex-direction: column; gap: var(--mm-space-10); min-width: 0; }
  .mm-profile__section { display: flex; flex-direction: column; gap: var(--mm-space-3); }
  .mm-profile__section > h2 { font-size: var(--mm-text-xl); }
  .mm-profile__subhead { font-size: var(--mm-text-base); }
  .mm-profile__facts { margin: 0; padding: 0; list-style: none; color: var(--mm-color-ink-muted); font-size: var(--mm-text-sm); }
  .mm-profile__facts li { display: inline-flex; align-items: center; gap: var(--mm-space-1); }
  .mm-profile__bio { overflow-wrap: anywhere; }
  .mm-profile__report { display: flex; flex-wrap: wrap; align-items: center; gap: var(--mm-space-1); }

  .mm-profile-hero { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: var(--mm-space-4) var(--mm-space-6); align-items: start; }
  .mm-profile-hero__media { position: relative; justify-self: start; }
  .mm-profile-hero__photo { display: block; width: 7rem; height: 7rem; object-fit: cover; border-radius: var(--mm-radius-lg); background: var(--mm-color-sunken); }
  .mm-profile-hero__text { display: flex; flex-direction: column; gap: var(--mm-space-2); min-width: 0; }
  .mm-profile-hero__name { display: flex; flex-wrap: wrap; align-items: center; gap: var(--mm-space-2); font-size: var(--mm-text-3xl); overflow-wrap: anywhere; }
  .mm-profile-hero__headline { font-size: var(--mm-text-lg); }
  .mm-profile-hero__area { display: flex; align-items: center; gap: var(--mm-space-1); color: var(--mm-color-ink-muted); }
  .mm-profile-hero__rating { align-self: flex-start; color: inherit; text-decoration: none; }
  .mm-profile-hero__rating:hover { text-decoration: underline; }

  .mm-profile-gallery { display: grid; grid-template-columns: repeat(auto-fill, minmax(9rem, 1fr)); gap: var(--mm-space-2); margin: 0; padding: 0; list-style: none; }
  .mm-profile-gallery__item { position: relative; display: block; border-radius: var(--mm-radius-md); overflow: hidden; }
  .mm-profile-gallery__item img { display: block; width: 100%; aspect-ratio: 4 / 3; object-fit: cover; background: var(--mm-color-sunken); transition: transform var(--mm-duration-base) var(--mm-ease); }
  .mm-profile-gallery__item:hover img { transform: scale(1.03); }
  .mm-profile-lightbox { margin: 0; display: flex; flex-direction: column; gap: var(--mm-space-2); }
  .mm-profile-lightbox img { width: 100%; max-height: 70vh; object-fit: contain; background: var(--mm-color-sunken); border-radius: var(--mm-radius-md); }

  .mm-profile-services { display: grid; grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr)); gap: var(--mm-space-3); margin: 0; padding: 0; list-style: none; }
  .mm-profile-services__item { display: flex; flex-direction: column; gap: var(--mm-space-2); padding: var(--mm-space-4); border: 1px solid var(--mm-color-border); border-radius: var(--mm-radius-md); background: var(--mm-color-surface); }
  .mm-profile-services__item.is-selected { border: 2px solid var(--mm-color-brand); padding: calc(var(--mm-space-4) - 1px); }
  .mm-profile-services__head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: var(--mm-space-2); }
  .mm-profile-services__name { font-size: var(--mm-text-lg); }
  .mm-profile-services__details { margin: 0; padding-inline-start: var(--mm-space-5); }
  .mm-profile-services__selected { display: inline-flex; align-items: center; gap: var(--mm-space-1); color: var(--mm-color-brand-hover); font-weight: 700; }

  .mm-profile-preview { display: flex; flex-direction: column; gap: var(--mm-space-4); padding: var(--mm-space-4); border-radius: var(--mm-radius-md); background: var(--mm-color-sunken); }
  .mm-profile-preview__result { display: flex; flex-direction: column; gap: var(--mm-space-3); }

  .mm-profile-availability__summary { display: flex; flex-wrap: wrap; gap: var(--mm-space-2) var(--mm-space-4); font-size: var(--mm-text-sm); }
  .mm-profile-availability__summary span { display: inline-flex; align-items: center; gap: var(--mm-space-1); }
  .mm-profile-availability { display: grid; grid-template-columns: repeat(auto-fill, minmax(3.5rem, 1fr)); gap: var(--mm-space-1); margin: 0; padding: 0; list-style: none; }
  .mm-profile-availability__day {
    display: flex; flex-direction: column; align-items: center; gap: 0.125rem; padding: var(--mm-space-1);
    border: 1px solid var(--mm-color-border); border-radius: var(--mm-radius-sm); font-size: var(--mm-text-xs); text-align: center;
  }
  .mm-profile-availability__weekday { font-weight: 700; text-transform: uppercase; }
  .mm-profile-availability__day.is-free { background: var(--mm-color-success-tint); border-color: var(--mm-color-success); color: var(--mm-color-success-ink); }
  .mm-profile-availability__day.is-full { background: var(--mm-color-danger-tint); color: var(--mm-color-danger-ink); }
  .mm-profile-availability__day.is-closed { background: var(--mm-color-sunken); color: var(--mm-color-ink-muted); }

  .mm-profile-reviews { display: flex; flex-direction: column; gap: var(--mm-space-4); margin: 0; padding: 0; list-style: none; }
  .mm-profile-reviews__item { padding-block-end: var(--mm-space-4); border-bottom: 1px solid var(--mm-color-border); }
  .mm-profile-reviews__head { display: flex; flex-wrap: wrap; align-items: center; gap: var(--mm-space-2) var(--mm-space-3); margin-block-end: var(--mm-space-2); }
  .mm-profile-reviews__title { font-size: var(--mm-text-base); }
  .mm-profile-reviews__response { margin-block-start: var(--mm-space-3); padding: var(--mm-space-3) var(--mm-space-4); border-inline-start: 3px solid var(--mm-color-brand); background: var(--mm-color-brand-tint); border-radius: 0 var(--mm-radius-sm) var(--mm-radius-sm) 0; }

  .mm-profile-map { position: relative; overflow: hidden; border: 1px solid var(--mm-color-border); border-radius: var(--mm-radius-md); background: var(--mm-color-sunken); }
  .mm-profile-map__canvas { height: 16rem; }
  .mm-profile-map__fallback { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; padding: var(--mm-space-4); text-align: center; color: var(--mm-color-ink-muted); }

  .mm-profile-cta { display: flex; flex-direction: column; gap: var(--mm-space-3); padding: var(--mm-space-5); border: 1px solid var(--mm-color-border); border-radius: var(--mm-radius-lg); background: var(--mm-color-surface); box-shadow: var(--mm-shadow-md); }
  .mm-profile-cta__title { font-size: var(--mm-text-lg); }
  .mm-profile-cta .mm-price { margin: 0; }
  .mm-profile-cta__fav .mm-btn { width: 100%; justify-content: center; }

  .mm-profile-sticky {
    position: fixed; inset: auto 0 0 0; z-index: var(--mm-z-sticky);
    display: flex; align-items: center; justify-content: space-between; gap: var(--mm-space-3);
    padding: var(--mm-space-3) var(--mm-gutter); background: var(--mm-color-surface);
    border-top: 1px solid var(--mm-color-border); box-shadow: var(--mm-shadow-lg);
  }
  .mm-profile-sticky .mm-price { margin: 0; }
  .mm-profile-sticky.is-hidden { display: none; }

  @media (max-width: 63.99em) {
    .mm-profile { padding-block-end: calc(var(--mm-space-16) + var(--mm-space-8)); }
    .mm-profile-cta { box-shadow: none; }
  }
  @media (max-width: 29.99em) {
    .mm-profile-hero { grid-template-columns: minmax(0, 1fr); }
    .mm-profile-hero__name { font-size: var(--mm-text-2xl); }
  }
  @media (min-width: 64em) {
    .mm-profile__layout { grid-template-columns: minmax(0, 1fr) 20rem; }
    .mm-profile__aside { position: sticky; top: calc(var(--mm-header-height) + var(--mm-space-4)); }
    .mm-profile-sticky { display: none; }
    .mm-profile-hero__photo { width: 10rem; height: 10rem; }
  }

  @media (prefers-reduced-motion: reduce) {
    .mm-profile-gallery__item img, .mm-search__results[aria-busy="true"] .mm-search-results { transition: none; }
    .mm-profile-gallery__item:hover img { transform: none; }
  }
}
