/* Interacțiuni comune pentru cardurile publice navigabile.
   Folosim proprietățile individuale `translate` / `scale` ca să nu anulăm
   transformările locale ale imaginilor sau ale componentelor existente. */
:where(
  .home-feed-card,
  .card.event-card[data-ghidbr-action="navigate-card"],
  .card.place-card[data-ghidbr-action="navigate-card"],
  .promotions-list-card,
  .home-rail-card[href],
  .home-rail-card-link,
  .editorial-review-card,
  .editorial-review-on-entity__card,
  .saved-card,
  .saved-participation-card,
  .place-recommendation-link,
  .venue-theatre-card[data-event-url]
) {
  translate: 0 0;
  scale: 1;
  transform-origin: center;
  transition:
    translate 160ms cubic-bezier(0.2, 0.8, 0.2, 1),
    scale 100ms cubic-bezier(0.2, 0.8, 0.2, 1),
    filter 180ms ease,
    border-color 180ms ease,
    box-shadow 180ms ease;
  -webkit-tap-highlight-color: transparent;
}

/* Hover există numai când dispozitivul chiar are un pointer precis. Pe touch
   evităm stările hover „lipite” după tap. */
@media (hover: hover) and (pointer: fine) {
  :where(
    .home-feed-card,
    .card.event-card[data-ghidbr-action="navigate-card"],
    .card.place-card[data-ghidbr-action="navigate-card"],
    .promotions-list-card,
    .home-rail-card[href],
    .home-rail-card-link,
    .editorial-review-card,
    .editorial-review-on-entity__card,
    .saved-card,
    .saved-participation-card,
    .place-recommendation-link,
    .venue-theatre-card[data-event-url]
  ):hover {
    translate: 0 -3px;
    filter: drop-shadow(0 10px 14px rgba(35, 28, 64, 0.12));
  }

  /* Componentele de mai jos aveau deja un `transform` de hover. Liftul comun
     folosește acum `translate`, altfel deplasarea s-ar aplica de două ori. */
  .home-rail-card[href]:hover,
  .home-rail-card-link:hover > .home-rail-card,
  .saved-card:hover,
  .place-recommendation-link:hover .place-recommendation-card,
  .venue-theatre-card[data-event-url]:hover {
    transform: none;
  }
}

/* Linkurile care sunt ele însele carduri pot folosi direct :active. */
:where(
  .home-rail-card[href],
  .home-rail-card-link,
  .editorial-review-on-entity__card,
  .place-recommendation-link
):active {
  translate: 0 1px;
  scale: 0.985;
  filter: brightness(0.985) drop-shadow(0 4px 8px rgba(35, 28, 64, 0.08));
  transition-duration: 80ms;
}

/* Pentru cardurile compuse, părintele răspunde numai la destinația principală.
   Favorite, Calendar, Interesat, Share, reminder-ele și orele de program își
   păstrează propria interacțiune, fără să „apese” cardul din spate. */
@supports selector(:has(*)) {
  :is(
    .home-feed-card[data-ghidbr-action="navigate-card"],
    .card.event-card[data-ghidbr-action="navigate-card"],
    .card.place-card[data-ghidbr-action="navigate-card"]
  ):active:not(:has(
    .home-feed-actions :active,
    .event-card__favorite:active,
    .card-actions-wrapper :active,
    .map-link:active
  )),
  .home-feed-place:has(.home-feed-card-main:active),
  .promotions-list-card:has(:is(.promotions-list-card-thumb, .promotions-list-card-action):active),
  .editorial-review-card:has(:is(.editorial-review-card__media, .editorial-review-card__action, h2 a, h3 a):active),
  .saved-card:has(.saved-card-main:active),
  .saved-participation-card:has(.saved-participation-main:active),
  .venue-theatre-card[data-event-url]:active:not(:has(
    .venue-showtimes :active,
    .venue-trailer-link:active
  )) {
    translate: 0 1px;
    scale: 0.985;
    filter: brightness(0.985) drop-shadow(0 4px 8px rgba(35, 28, 64, 0.08));
    transition-duration: 80ms;
  }

  :is(
    .home-feed-card,
    .card.event-card[data-ghidbr-action="navigate-card"],
    .card.place-card[data-ghidbr-action="navigate-card"]
  ):has(:is(.home-feed-poster, .home-feed-card-main, .event-card__title a, .event-title a, .place-title a):focus-visible),
  .promotions-list-card:has(:is(.promotions-list-card-thumb, .promotions-list-card-action):focus-visible),
  .editorial-review-card:has(:is(.editorial-review-card__media, .editorial-review-card__action, h2 a, h3 a):focus-visible),
  .saved-card:has(.saved-card-main:focus-visible),
  .saved-participation-card:has(.saved-participation-main:focus-visible),
  .venue-theatre-card[data-event-url]:has(:is(.venue-poster-link, h3 a):focus-visible) {
    outline: 3px solid rgba(99, 102, 241, 0.34);
    outline-offset: 3px;
  }
}

:where(
  .home-rail-card[href],
  .home-rail-card-link,
  .editorial-review-on-entity__card,
  .place-recommendation-link
):focus-visible {
  outline: 3px solid rgba(99, 102, 241, 0.34);
  outline-offset: 3px;
}

@media (prefers-reduced-motion: reduce) {
  :where(
    .home-feed-card,
    .card.event-card[data-ghidbr-action="navigate-card"],
    .card.place-card[data-ghidbr-action="navigate-card"],
    .promotions-list-card,
    .home-rail-card[href],
    .home-rail-card-link,
    .editorial-review-card,
    .editorial-review-on-entity__card,
    .saved-card,
    .saved-participation-card,
    .place-recommendation-link,
    .venue-theatre-card[data-event-url]
  ) {
    translate: 0 0 !important;
    scale: 1 !important;
    filter: none !important;
    transition: none !important;
  }

  .editorial-review-card__media img,
  .place-recommendation-media > img {
    transform: none !important;
    transition: none !important;
  }
}
