/*
  27-sticky-headers.css — v41.56 sticky group headings.

  The heading sticks INSIDE its own .place-list-section, so it holds while its
  own rows scroll past and then leaves with them — rather than one heading
  shoving the next out of the way. That falls out of sticky being scoped to the
  parent's content box, which is why the section wrapper matters here.
*/

.place-list-heading {
  position: sticky;
  /* Published by 46-sticky-headers.js from the measured .topbar height. The
     fallback only applies for the frame before the first measurement. */
  top: var(--sticky-offset, 64px);
  z-index: 3;
  /* Rows must not show through a stuck heading. The band matches the hull so
     it reads as chrome rather than a floating label. */
  background: linear-gradient(180deg, rgba(44, 29, 19, .97), rgba(44, 29, 19, .93));
  backdrop-filter: blur(6px);
  margin: 0 -4px;
  padding: 7px 8px;
  border-radius: 8px;
}

/* Sticky fails silently if any ancestor sets overflow, so these are pinned to
   visible deliberately. If a future change needs to clip here, the headings
   will stop sticking with no error. */
.place-groups,
.place-list-section { overflow: visible; }

@media (prefers-reduced-motion: reduce) {
  .place-list-heading { backdrop-filter: none; }
}
