/* =========================================================================
   Cards — shared base for surface cards across the site
   Cream/off-white surface, soft rounding, gentle elevation + hover lift.
   Component-specific cards (product, location) extend this base.
   ========================================================================= */

.card {
  position: relative;
  display: flex;
  flex-direction: column;
  background: var(--surface-card);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-md);
  overflow: hidden;
  transition: transform var(--dur-base) var(--ease-out),
              box-shadow var(--dur-base) var(--ease-out),
              border-color var(--dur-base) var(--ease-out);
}

/* Gentle lift on hover/focus-within */
.card:hover,
.card:focus-within {
  transform: translateY(-6px);
  box-shadow: var(--shadow-lg);
  border-color: var(--border-strong);
}

/* Media region — fixed aspect so a mixed-ratio photo set stays tidy */
.card__media {
  position: relative;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  background: var(--surface-alt);
}

.card__media img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform var(--dur-slow) var(--ease-out);
}

.card:hover .card__media img,
.card:focus-within .card__media img {
  transform: scale(1.05);
}

/* Body region — text content padding */
.card__body {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  padding: var(--space-5);
}

.card__title {
  font-family: var(--font-display);
  font-weight: 600;
  font-size: var(--fs-lg);
  line-height: var(--lh-snug);
  color: var(--navy);
  margin: 0;
}

.card__text {
  font-size: var(--fs-base);
  line-height: var(--lh-base);
  color: var(--muted);
  margin: 0;
}

/* Honor reduced-motion: no lift, no zoom */
@media (prefers-reduced-motion: reduce) {
  .card,
  .card:hover,
  .card:focus-within,
  .card__media img,
  .card:hover .card__media img,
  .card:focus-within .card__media img {
    transform: none;
    transition: none;
  }
}
