
  /* Shop page theme (2026-10-23): the Golf rules above, re-keyed to the shop card attribute. */
  /* Golf-only: one action row (Website, Call, Favorite, Add to Trip)
     directly under the badge chips, divided from the description by a
     hairline so chips + actions read as the card's single "info & actions"
     block. Pill styling mirrors the homepage's .trip-btn/.fav-btn
     (public/styles/app.css) so the controls read as the same feature. */
  .venue-card[data-venue-category="shop"] .chips:empty { display: none; }
  .venue-card[data-venue-category="shop"] .chips:not(:empty) {
    margin: 10px 0 0; padding-top: 10px; border-top: 1px solid rgba(74,52,40,0.10);
  }
  .venue-card[data-venue-category="shop"] .card-actions {
    display: flex; gap: 8px; flex-wrap: wrap; align-items: center;
    margin-top: 10px; padding-top: 10px; border-top: 1px solid rgba(74,52,40,0.10);
  }
  .venue-card[data-venue-category="shop"] .chips:not(:empty) + .card-actions {
    margin-top: 8px; padding-top: 0; border-top: 0;
  }
  .venue-card[data-venue-category="shop"] .card-action {
    display: inline-flex; align-items: center; gap: 5px; margin: 0;
    font-size: 0.82rem; font-weight: 700; font-family: 'Nunito', 'Nunito Fallback', sans-serif; line-height: 1.4;
    color: var(--ink); background: var(--sand-deep); border: none; text-decoration: none;
    border-radius: 999px; padding: 5px 12px; cursor: pointer; width: fit-content;
    transition: background 0.15s;
  }
  .venue-card[data-venue-category="shop"] .card-action:hover { background: rgba(224,169,78,0.35); color: var(--ink); text-decoration: none; }
  .venue-card[data-venue-category="shop"] .card-action:focus-visible { outline: 2px solid var(--plum); outline-offset: 2px; }
  .venue-card[data-venue-category="shop"] .trip-btn.in-trip { background: var(--teal, #2A6B67); color: var(--paper); }
  .venue-card[data-venue-category="shop"] .fav-btn.is-fav { background: var(--plum); color: var(--paper); }
  .venue-card[data-venue-category="shop"] .trip-notice { margin: 8px 0 0; font-size: 0.85rem; color: var(--plum); }
  .venue-card[data-venue-category="shop"] .trip-notice:empty { display: none; }
  body.golf-page .venue-card[data-venue-category="shop"] .chips:not(:empty),
  body.golf-page .venue-card[data-venue-category="shop"] .card-actions { border-top-color: rgba(27,43,58,0.1); }
  body.golf-page .venue-card[data-venue-category="shop"] .card-actions { margin-top: auto; padding-top: 12px; }
  /* Batch 3: with badge chips the row is still bottom-anchored (see "Listing
     cards on every themed page" below); the 8px gap under the chips that the
     row's top margin used to give becomes top padding, so the tallest card in
     a grid row keeps it. Re-keyed to Beach / Outdoor / What's On like the
     rules around it. */
  body.golf-page .venue-card[data-venue-category="shop"] > .chips:not(:empty) + .card-actions { margin-top: auto; padding-top: 8px; }
  /* Favorite / Add to Trip pills use the homepage REDESIGN button rules
     (app.css), not the pre-redesign wizard .fav-btn/.trip-btn tan pill:
       resting  = .lang-toggle        (transparent, 1px rgba(27,43,58,0.2), --ref-navy text)
       hover    = .lang-toggle:hover  (rgba(27,43,58,0.06))
       favorited= .region-chip[aria-pressed="true"] (--ref-navy on --paper)
       in trip  = .trip-btn.in-trip   (--teal on --paper)
       focus    = global a/button:focus-visible (3px --teal)
     Specificity is deliberately higher than app.css's .fav-btn/.trip-btn
     and the golf rules in SEO_PAGE_CSS. */
  body.golf-page .venue-card[data-venue-category="shop"] .card-action,
  body.golf-page .venue-cta-row .card-action {
    background: transparent; color: var(--ref-navy); border: 1px solid rgba(27,43,58,0.2);
  }
  body.golf-page .venue-card[data-venue-category="shop"] .card-action:hover,
  body.golf-page .venue-cta-row .card-action:hover { background: rgba(27,43,58,0.06); color: var(--ref-navy); }
  body.golf-page .venue-card[data-venue-category="shop"] .fav-btn.is-fav,
  body.golf-page .venue-cta-row .fav-btn.is-fav { background: var(--ref-navy); color: var(--paper); border-color: var(--ref-navy); }
  body.golf-page .venue-card[data-venue-category="shop"] .fav-btn.is-fav:hover,
  body.golf-page .venue-cta-row .fav-btn.is-fav:hover { background: var(--ref-navy-deep); color: var(--paper); }
  body.golf-page .venue-card[data-venue-category="shop"] .trip-btn.in-trip,
  body.golf-page .venue-cta-row .trip-btn.in-trip { background: var(--teal); color: var(--paper); border-color: var(--teal); }
  body.golf-page .venue-card[data-venue-category="shop"] .trip-btn.in-trip:hover,
  body.golf-page .venue-cta-row .trip-btn.in-trip:hover { background: var(--teal-deep); color: var(--paper); }
  body.golf-page .venue-card[data-venue-category="shop"] .card-action:focus-visible,
  body.golf-page .venue-cta-row .card-action:focus-visible,
  body.golf-page .desc-toggle:focus-visible { outline: 3px solid var(--teal); outline-offset: 3px; }
  body.shop-page .shop-coming-soon { font-size: 1rem; line-height: 1.6; color: var(--ink); opacity: 0.8; margin: 4px 0 22px; }
  /* Cards on /shops clamp to 3 lines (Read more expands), like /sports. */
  body.golf-page.shop-page .golf-desc.is-clamped p { -webkit-line-clamp: 3; max-height: calc(3 * 1.45em); }
