/**
 * FPBC Utilities
 * Helper classes for color, spacing, and responsiveness.
 *
 * @package fpbc
 */

/* ─── Color Utilities ────────────────────────────────────────── */
.gold-text       { color: var(--color-gold); }
.white-text      { color: var(--color-white); }
.muted-text      { color: var(--color-text-muted); }
.dark-text       { color: var(--color-text-dark); }

/* ─── Stars Background ───────────────────────────────────────── */
.stars-bg {
  background-color: var(--color-bg-section);
  background-image:
    radial-gradient(2px 2px at 10%  15%, rgba(255,215,0,0.6) 0%, transparent 100%),
    radial-gradient(1px 1px at 20%  40%, rgba(255,215,0,0.3) 0%, transparent 100%),
    radial-gradient(2px 2px at 30%  20%, rgba(255,215,0,0.5) 0%, transparent 100%),
    radial-gradient(1px 1px at 40%  70%, rgba(255,215,0,0.2) 0%, transparent 100%),
    radial-gradient(2px 2px at 50%  10%, rgba(255,215,0,0.6) 0%, transparent 100%),
    radial-gradient(1px 1px at 60%  55%, rgba(255,215,0,0.3) 0%, transparent 100%),
    radial-gradient(2px 2px at 70%  30%, rgba(255,215,0,0.5) 0%, transparent 100%),
    radial-gradient(1px 1px at 80%  75%, rgba(255,215,0,0.2) 0%, transparent 100%),
    radial-gradient(2px 2px at 90%  50%, rgba(255,215,0,0.4) 0%, transparent 100%),
    radial-gradient(1px 1px at 15%  85%, rgba(255,215,0,0.3) 0%, transparent 100%),
    radial-gradient(1px 1px at 35%  60%, rgba(255,215,0,0.2) 0%, transparent 100%),
    radial-gradient(2px 2px at 55%  90%, rgba(255,215,0,0.4) 0%, transparent 100%),
    radial-gradient(1px 1px at 75%   5%, rgba(255,215,0,0.3) 0%, transparent 100%),
    radial-gradient(2px 2px at 85%  80%, rgba(255,215,0,0.5) 0%, transparent 100%),
    radial-gradient(1px 1px at 95%  25%, rgba(255,215,0,0.2) 0%, transparent 100%);
  background-size: 600px 400px;
}

/* ─── Spacing Utilities ──────────────────────────────────────── */
.mt-0  { margin-top: 0; }
.mt-4  { margin-top: var(--space-4); }
.mt-8  { margin-top: var(--space-8); }
.mt-12 { margin-top: var(--space-12); }
.mb-0  { margin-bottom: 0; }
.mb-4  { margin-bottom: var(--space-4); }
.mb-8  { margin-bottom: var(--space-8); }
.mb-12 { margin-bottom: var(--space-12); }
.pt-0  { padding-top: 0; }
.pb-0  { padding-bottom: 0; }

/* ─── Flex Utilities ─────────────────────────────────────────── */
.flex          { display: flex; }
.flex-center   { display: flex; align-items: center; justify-content: center; }
.flex-between  { display: flex; align-items: center; justify-content: space-between; }
.flex-wrap     { flex-wrap: wrap; }
.gap-4         { gap: var(--space-4); }
.gap-6         { gap: var(--space-6); }
.gap-8         { gap: var(--space-8); }

/* ─── Visibility Helpers ─────────────────────────────────────── */
.screen-reader-text {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(1px, 1px, 1px, 1px);
  word-wrap: normal !important;
  white-space: nowrap;
}
.sr-only { /* alias */
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(1px, 1px, 1px, 1px);
}

/* ─── Animate In (Intersection Observer) ────────────────────── */
.animate-in {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity var(--transition-slow), transform var(--transition-slow);
}
.animate-in.is-visible {
  opacity: 1;
  transform: translateY(0);
}

/* ─── No-JS Fallback ─────────────────────────────────────────── */
.no-js .animate-in {
  opacity: 1;
  transform: none;
}

/* ─── Responsive Utilities ───────────────────────────────────── */
@media (max-width: 768px) {
  .hide-mobile  { display: none !important; }
}
@media (min-width: 769px) {
  .hide-desktop { display: none !important; }
}
