/* File: css/animations.css */
/* 浮遊アニメーション */
.floating {
  animation: floatAnim 3s ease-in-out infinite alternate;
}

@keyframes floatAnim {
  0% { transform: translateY(0); }
  100% { transform: translateY(-8px); }
}

/* スケルトンシマー効果 */
.skeleton-container {
  display: flex;
  flex-direction: column;
  gap: 12px;
  padding: 16px 0;
}

.skeleton-header-bar {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 4px;
}

.skeleton-badge {
  width: 120px;
  height: 24px;
  border-radius: 6px;
}

.skeleton-progress-bar {
  height: 8px;
  border-radius: 4px;
  flex: 1;
}

.skeleton-table {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.skeleton-row-grid {
  display: flex;
  align-items: center;
  gap: 12px;
  height: 44px;
  padding: 0 16px;
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.04);
}

.sk-cell {
  height: 14px;
  border-radius: 4px;
  background: rgba(255, 255, 255, 0.15);
}

.sk-w10 { width: 10%; }
.sk-w15 { width: 15%; }
.sk-w20 { width: 20%; }
.sk-w25 { width: 25%; }
.sk-w30 { width: 30%; }
.sk-w35 { width: 35%; }
.sk-w40 { width: 40%; }

.shimmer {
  background: linear-gradient(
    90deg,
    rgba(255, 255, 255, 0.03) 0%,
    rgba(255, 255, 255, 0.12) 50%,
    rgba(255, 255, 255, 0.03) 100%
  );
  background-size: 200% 100%;
  animation: shimmerAnim 1.6s infinite cubic-bezier(0.4, 0, 0.2, 1);
}

@keyframes shimmerAnim {
  0% { background-position: -200% 0; }
  100% { background-position: 200% 0; }
}

/* スピナー回転 */
@keyframes spin {
  to { transform: rotate(360deg); }
}

/* トーストのインアウト */
@keyframes toastIn {
  from {
    opacity: 0;
    transform: translateY(20px) scale(0.95);
  }
  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}

@keyframes toastOut {
  from {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
  to {
    opacity: 0;
    transform: translateY(15px) scale(0.95);
  }
}

/* テーブル行のスタッガー登場 */
.stagger-row {
  animation: rowAppear 0.3s cubic-bezier(0.16, 1, 0.3, 1) forwards;
  opacity: 0;
}

@keyframes rowAppear {
  from {
    opacity: 0;
    transform: translateY(6px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
