/* ============================================================
   UTILITY
   ============================================================ */
.text-muted  { color: var(--text-muted); }
.text-danger { color: #e07070; }
.text-ok     { color: #7ab860; }
.mt-1 { margin-top: 0.5rem; }
.mt-2 { margin-top: 1rem; }
.mt-3 { margin-top: 1.5rem; }
.mb-1 { margin-bottom: 0.5rem; }
.mb-2 { margin-bottom: 1rem; }
.mb-3 { margin-bottom: 1.5rem; }

/* ============================================================
   RESPONSIVE — TABLET  (max 900px)
   ============================================================ */
@media (max-width: 900px) {
  .site-main {
    padding: 2rem 1.25rem 3.5rem;
  }
}

/* ============================================================
   RESPONSIVE — MOBILE  (max 600px)
   ============================================================ */
@media (max-width: 600px) {
  html {
    font-size: 18px; /* slightly smaller base on small screens */
  }

  .site-header__inner {
    flex-direction: column;
    align-items: flex-start;
    min-height: auto;
    padding: 0.75rem 1rem;
    gap: 0.25rem;
  }

  .site-header__brand {
    min-height: auto;
    font-size: 1.1rem;
  }

  .site-header__nav {
    gap: 1rem;
    padding-bottom: 0.5rem;
  }

  /* Nav links don't need full 44px height when stacked in a column */
  .site-header__nav a {
    min-height: auto;
  }

  .site-main {
    padding: 1.5rem 1rem 3rem;
  }

  h1 {
    font-size: 1.6rem;
  }

  h2 {
    font-size: 1.25rem;
  }

  /* Forms go full width on mobile */
  form, .form-wrapper {
    max-width: 100%;
  }

  /* Campaign cards tighten padding */
  #campaigns > div[id^="campaign_"] {
    padding: 1rem 1.1rem;
  }
}

/* ============================================================
   REDUCED MOTION — respect OS preference
   ============================================================ */
@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }

  *,
  *::before,
  *::after {
    transition-duration: 0.01ms !important;
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
  }
}
