/* ── Card hover - shimmer overlay ── */
.wall-card::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(
    105deg,
    transparent 20%,
    rgba(255,255,255,0.08) 50%,
    transparent 80%
  );
  background-size: 200% 100%;
  opacity: 0;
  border-radius: inherit;
  pointer-events: none;
  transition: opacity var(--transition-base);
}
.wall-card:hover::after {
  opacity: 1;
  animation: cardShimmer 0.6s ease;
}

/* ── Sticky note wiggle on hover ── */
@keyframes wiggle {
  0%, 100% { transform: rotate(var(--rot, -3deg)); }
  50%       { transform: rotate(calc(var(--rot, -3deg) + 3deg)); }
}
.wall__stickies .sticky:hover {
  animation: wiggle 0.4s ease;
  z-index: 10;
}

/* ── Modal entrance ── */
@keyframes modalIn {
  from { opacity: 0; transform: translateY(30px) scale(0.95); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}
.modal-overlay.is-open .modal {
  animation: modalIn 0.4s cubic-bezier(0.34,1.56,0.64,1) forwards;
}