/* VEIL v6.0.1 — animations.css */
/* Icon/breathe animations REMOVED per request — only keep functional animations */

/* ===== FADE UP (Auth screen entrance) ===== */
@keyframes fadeUp {
  from { opacity: 0; transform: translateY(20px); }
  to { opacity: 1; transform: translateY(0); }
}

/* ===== LIKE POP ===== */
@keyframes likePop {
  0% { transform: scale(1); }
  50% { transform: scale(1.3); }
  100% { transform: scale(1); }
}

/* ===== SKELETON LOADING ===== */
@keyframes skeleton-loading {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}

/* Visible skeleton shimmer for gallery cards */
.art-piece.skeleton {
  background: var(--bg-surface) !important;
  position: relative;
  overflow: hidden;
  border-radius: 0;
  min-height: 120px;
}

.art-piece.skeleton::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(
    90deg,
    transparent 0%,
    rgba(255,255,255,0.04) 40%,
    rgba(255,255,255,0.08) 50%,
    rgba(255,255,255,0.04) 60%,
    transparent 100%
  );
  background-size: 200% 100%;
  animation: skeleton-loading 1.5s ease-in-out infinite;
}

[data-theme="light"] .art-piece.skeleton {
  background: rgba(0,0,0,0.03) !important;
}

[data-theme="light"] .art-piece.skeleton::after {
  background: linear-gradient(
    90deg,
    transparent 0%,
    rgba(0,0,0,0.03) 40%,
    rgba(0,0,0,0.06) 50%,
    rgba(0,0,0,0.03) 60%,
    transparent 100%
  );
  background-size: 200% 100%;
}

/* Feed loading indicator */
.veil-feed-loading {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 60px 20px;
  gap: 16px;
}

.veil-feed-loading-spinner {
  width: 32px;
  height: 32px;
  border: 2px solid var(--border);
  border-top-color: var(--accent);
  border-radius: 50%;
  animation: spin 0.8s linear infinite;
}

@keyframes spin {
  to { transform: rotate(360deg); }
}

.veil-feed-loading-text {
  font-size: 13px;
  color: var(--text-muted);
  font-weight: 500;
}

/* ===== LOADING SCREEN (Osmo) ===== */
@keyframes fadeIn {
  from { opacity: 0; transform: translateY(20px); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes expandBox {
  from { width: 0; }
  to { width: 90px; }
}

/* ===== KEN BURNS (Auth visual pane) ===== */
@keyframes veilKenBurnsPerfect {
  0% { transform: scale(1) translate3d(0,0,0); }
  100% { transform: scale(1.1) translate3d(-1%, -1%, 0); }
}

/* ===== AUTH VISUAL PANE ENTRANCE ===== */
@keyframes veilSlideUpFade {
  from { opacity: 0; transform: translateY(20px); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes veilLoopInOut {
  0%, 100% { opacity: 0.8; transform: scale(0.95); }
  50% { opacity: 1; transform: scale(1.05); }
}

@keyframes veilFadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}

/* ===== AURA ORB FLOAT ===== */
@keyframes veilFloatOrb {
  0%, 100% { transform: translate(0,0); }
  50% { transform: translate(-20px, 20px); }
}

/* ===== SHIMMER (Suggested card skeleton) ===== */
@keyframes shimmer {
  0% { background-position: 0% 0%; }
  100% { background-position: -200% 0%; }
}

/* ===== LIVE COUNTER PULSE ===== */
@keyframes liveCounterPulse {
  0% { transform: scale(1); }
  50% { transform: scale(1.15); }
  100% { transform: scale(1); }
}

.live-stat-value.updating {
  animation: liveCounterPulse 0.4s ease;
  color: #fff;
}

/* ===== LIVE DOT ===== */
@keyframes liveDotPulse {
  0%, 100% { opacity: 0.4; }
  50% { opacity: 1; }
}

.live-dot {
  display: inline-block;
  width: 6px;
  height: 6px;
  background: #10b981;
  border-radius: 50%;
  margin-right: 6px;
  animation: liveDotPulse 2s infinite ease-in-out;
}

/* ===== NOTIFICATION BAR SLIDE ===== */
@keyframes notifBarSlide {
  from { transform: translateY(-100%); }
  to { transform: translateY(0); }
}

/* ===== PROFILE SLIDE IN (Desktop) ===== */
@keyframes slideInRight {
  from { transform: translateX(100%); opacity: 0; }
  to { transform: translateX(0); opacity: 1; }
}

/* ===== GALLERY ITEM FADE-IN ===== */
@keyframes fadeInUp {
  from { opacity: 0; transform: translateY(12px); }
  to { opacity: 1; transform: translateY(0); }
}

.art-piece {
  animation: fadeInUp 0.3s ease;
}

/* ===== LIKE COUNT PULSE (on change) ===== */
@keyframes likeCountPulse {
  0% { transform: scale(1); color: inherit; }
  50% { transform: scale(1.2); color: var(--like-active, #ff4757); }
  100% { transform: scale(1); color: inherit; }
}

.like-pulse {
  animation: likeCountPulse 0.4s ease;
  display: inline-block;
}

/* ===== CHANGELOG SLIDE-IN ===== */
@keyframes changelogSlideIn {
  from { transform: translateY(-20px); opacity: 0; }
  to { transform: translateY(0); opacity: 1; }
}

.veil-changelog-fallback.active {
  animation: changelogSlideIn 0.25s ease;
}

/* ===== REMOVED ANIMATIONS (per request) ===== */
/* veilLogoPulse    — sidebar logo no longer pulses */
/* verifiedFloat    — verified badge no longer floats */
/* createBreathe    — create button no longer glows */
/* hotTopicGlow     — hot topic cards no longer glow */
/* userMonthGlow    — user of month card no longer glows */
/* fireFlicker      — trending fire icon no longer flickers */
