/* ==========================================================================
   Unified Card Component System
   Base .card class with modifiers for different card types
   ========================================================================== */

/* Base card - shared foundation for all card types */
.card {
  background-color: var(--parchment-300);
  border: 1px solid var(--parchment-500);
  border-radius: var(--radius-md);
  padding: var(--space-md);
  margin-bottom: var(--space-md);
  box-shadow: var(--shadow-sm);
  transition: transform 0.2s ease, box-shadow 0.2s ease;
  position: relative; /* For decorative corners and positioning */
}

.card:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow-md);
}

/* Card link styling */
.card a {
  text-decoration: none;
  color: inherit;
  transition: opacity 0.2s ease;
}

.card a:hover {
  opacity: 0.8;
}

/* Campaign card variant - extends .card with flexbox layout for icon */
.campaign {
  padding: 0;
  display: flex;
  overflow: hidden;
}

.campaign-icon {
  flex-shrink: 0;
  width: 8rem;
  height: 8rem;
  padding: var(--space-md);
  display: flex;
  align-items: center;
  justify-content: center;
}

.campaign-icon svg,
.campaign-icon img {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: contain;
}

.campaign-content {
  flex: 1;
  padding: var(--space-md);
}

.campaign h3 {
  margin-bottom: var(--space-xs);
  color: var(--color-primary);
}

.campaign-description {
  color: var(--warm-grey);
  font-size: 1.1rem;
  margin-bottom: 0;
}

/* Resource card with background image - using wrapper div approach */
.resource-card[data-has-background] {
  overflow: hidden;  /* Clip background to card border-radius */
  position: relative;
}

/* Background image wrapper (real div, not pseudo-element) */
.card-background {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-image: var(--card-image-url);
  background-size: cover;
  background-position: var(--card-image-position, center 25%);
  background-repeat: no-repeat;

  /* Desaturate and blend with parchment aesthetic */
  filter: grayscale(80%) sepia(25%) contrast(85%) brightness(1.1);
  opacity: 0.18;
  mix-blend-mode: multiply;
  border-radius: var(--radius-md);
  z-index: 0;  /* Behind content */
}

/* Gradient overlay on background image - multi-stop for smoother easing
   Uses --card-bg-color custom property for flexibility (defaults to parchment-300) */
.card-background::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: linear-gradient(
    to right,
    var(--card-bg-color, var(--parchment-300)) 0%,
    var(--card-bg-color, var(--parchment-300)) 20%,
    transparent 85%
  );
  z-index: 1;
}

/* Ensure card content appears above background (but not the background div itself) */
.resource-card[data-has-background] > h3,
.resource-card[data-has-background] > p,
.resource-card[data-has-background] > div:not(.card-background) {
  position: relative;
  z-index: 2;
}

/* ==========================================================================
   Responsive Styles
   ========================================================================== */

@media (max-width: 768px) /* tablet */ {
  .campaign {
    flex-direction: column;  /* Stack icon on top of content */
  }

  .campaign-icon {
    width: 100%;
    height: 6rem;  /* Reduce height when full width */
  }

  .campaign-content {
    padding: var(--space-md);
  }
}
