/* Buttons */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  font-family: var(--font-ja);
  font-size: 15px;
  font-weight: 700;
  padding: 16px 32px;
  border-radius: var(--radius-btn);
  transition: all 0.3s ease;
  white-space: nowrap;
}
.btn--primary {
  background: var(--color-yellow);
  color: var(--color-black);
  box-shadow: 0 4px 16px rgba(255, 196, 0, 0.3);
}
.btn--primary:hover {
  background: var(--color-yellow-hover);
  transform: translateY(-2px);
  box-shadow: 0 6px 24px rgba(255, 196, 0, 0.4);
}
.btn--primary .btn-arrow { transition: transform 0.3s ease; }
.btn--primary:hover .btn-arrow { transform: translateX(4px); }
.btn--outline {
  background: var(--color-bg);
  color: var(--color-black);
  border: 2px solid var(--color-black);
}
.btn--outline:hover {
  background: var(--color-black);
  color: var(--color-bg);
  transform: translateY(-2px);
}
.btn--sm { font-size: 13px; padding: 10px 20px; }

/* =============================================
   DECORATIONS
   ============================================= */
.deco {
  position: absolute;
  pointer-events: none;
}
.deco-dot {
  border-radius: 50%;
}
.deco-ring {
  border-radius: 50%;
  background: transparent;
}
.deco-dots-grid {
  display: grid;
  grid-template-columns: repeat(4, 5px);
  gap: 5px;
  animation: pulse-sm 4s ease-in-out infinite;
}
.deco-dots-grid span {
  width: 5px;
  height: 5px;
  border-radius: 50%;
  animation: twinkle 3s ease-in-out infinite;
}
.deco-dots-grid span:nth-child(2n)   { animation-delay: 0.4s; }
.deco-dots-grid span:nth-child(3n)   { animation-delay: 0.8s; }
.deco-dots-grid span:nth-child(4n+1) { animation-delay: 1.2s; }
.deco-dots-grid-5 {
  display: grid;
  grid-template-columns: repeat(5, 5px);
  gap: 5px;
  animation: pulse-sm 5s ease-in-out infinite;
}
.deco-dots-grid-5 span {
  width: 5px;
  height: 5px;
  border-radius: 50%;
  animation: twinkle 3.5s ease-in-out infinite;
}
.deco-dots-grid-5 span:nth-child(2n)   { animation-delay: 0.5s; }
.deco-dots-grid-5 span:nth-child(3n)   { animation-delay: 1.0s; }
.deco-cross {
  position: relative;
  width: 16px;
  height: 16px;
  animation: wiggle 4s ease-in-out infinite;
}
.deco-cross::before,
.deco-cross::after {
  content: '';
  position: absolute;
  border-radius: 2px;
}
.deco-cross::before {
  width: 100%;
  height: 3px;
  top: 50%;
  left: 0;
  transform: translateY(-50%);
}
.deco-cross::after {
  width: 3px;
  height: 100%;
  left: 50%;
  top: 0;
  transform: translateX(-50%);
}
.deco-cross--orange::before,
.deco-cross--orange::after { background: var(--color-orange); }
.deco-cross--pink::before,
.deco-cross--pink::after { background: var(--color-pink); }
.deco-cross--blue::before,
.deco-cross--blue::after { background: var(--color-blue); }
.deco-cross--purple::before,
.deco-cross--purple::after { background: var(--color-purple); }

/* =============================================
   ANIMATIONS (fade)
   ============================================= */
.fade-up {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 0.6s ease, transform 0.6s ease;
}
.fade-up.is-visible {
  opacity: 1;
  transform: translateY(0);
}
