/* ═══════════════════════════════════════════════════════════
   footer.css — Site Footer / Credit (neobrutalism)
═══════════════════════════════════════════════════════════ */

.site-footer {
  position: relative;
  padding: 0 20px 48px;
  max-width: 480px;
  margin: 0 auto;
  text-align: center;
}

/* Was a flat, full-width solid black bar — read as heavy/stiff next
   to everything else's playful tilts and dashes. Now a lighter dashed
   line that draws itself in (scaleX 0 → 1) right as the footer
   settles into view, riding on the parent .reveal-up's own .in
   toggle — no extra JS needed. */
.footer-divider {
  height: 2px;
  background-image: repeating-linear-gradient(90deg, var(--ink) 0 9px, transparent 9px 16px);
  opacity: 0.55;
  margin-bottom: 26px;
  transform: scaleX(0);
  transform-origin: center;
  transition: transform 0.6s var(--ease-snap) 0.08s;
}
.site-footer.in .footer-divider { transform: scaleX(1); }

@media (prefers-reduced-motion: reduce) {
  .footer-divider { transform: scaleX(1); transition: none; }
}

.footer-inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
}

.footer-dot {
  display: inline-block;
  width: 8px; height: 8px;
  border-radius: 50%;
  background: var(--blue);
  border: 1.5px solid var(--ink);
  animation: pulseGlow 2s ease-in-out infinite;
}

.footer-credit {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 6px 16px;
  background: var(--white);
  border: var(--border-w) solid var(--ink);
  border-radius: 999px;
  box-shadow: 3px 3px 0 var(--ink);
  transition: transform 0.15s var(--ease-snap), box-shadow 0.15s var(--ease-snap);
}

.footer-credit:hover {
  transform: translate(-1px, -1px);
  box-shadow: 4px 4px 0 var(--blue);
}

.credit-link {
  font-size: 1rem;
  font-weight: 800;
  letter-spacing: 0.01em;
  color: var(--ink);
  text-decoration: none;
}

.footer-copy {
  font-size: 0.68rem;
  color: var(--gray-3);
  margin-top: 2px;
  font-weight: 600;
}

/* ══════════════════════════════════════════════════════════
   DESKTOP (min-width: 540px)
══════════════════════════════════════════════════════════ */
@media (min-width: 540px) {
  .site-footer { max-width: 720px; padding: 0 40px 64px; }
  .credit-link { font-size: 1.1rem; }
  .footer-copy { font-size: 0.75rem; }
}

/* Footer sits far below the fold, so unlike the cards above (which
   are all synced to the loader dismiss) its entrance can only be
   scroll-triggered. Fast-scrolling/flinging straight to the bottom
   means it appears with no scroll motion to "ride in" on, so the
   shared punchy revealUp (22px slide + fast-snap ease) read as a
   jolt. This is a smaller, calmer version — just for the footer. */
@keyframes footerReveal {
  from { opacity: 0; transform: translateY(10px); }
  to   { opacity: 1; transform: translateY(0); }
}
.site-footer.reveal-up.in {
  animation: footerReveal 0.5s var(--ease-smooth) forwards;
}
