#faq {
  background: #fcfcfc;
  padding: 120px 20px;
  z-index: var(--z-bg);
}

.faq-container {
  max-width: 800px;
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  gap: 30px;
}

.faq-item {
  border: 1px solid #ccc;
  border-radius: 12px;
  padding: 20px;
  background: #fefefe;
  transition: box-shadow 0.3s ease;
}

.faq-item:hover {
  box-shadow: 0 4px 10px rgba(0,0,0,0.05);
}

.faq-question {
  display: flex;
  align-items: center;
  gap: 12px;
  cursor: pointer;
}

.faq-question i {
  color: #00bcd4;
  transition: transform 0.3s ease;
}

.faq-item.open .faq-question i {
  transform: rotate(180deg);
}

.faq-question-text,
.faq-answer-text {
  font-size: 16px;
  line-height: 1.6;
  color: #333;
  margin: 0;
  white-space: pre-wrap;
}

.faq-answer {
  margin-top: 16px;
  padding-left: 24px;
}

/* タイピング風アニメ用プレースホルダー（JSで動的に表示） */
.faq-question-text::after,
.faq-answer-text::after {
  content: "|";
  animation: blink 1s step-end infinite;
  margin-left: 4px;
  color: #aaa;
}

@keyframes blink {
  0%, 100% { opacity: 0; }
  50% { opacity: 1; }
}

.animate-title {
  opacity: 0;
  transform: translateY(40px);
  transition: all 0.8s ease-out;
}

.animate-title.title-visible {
  opacity: 1;
  transform: translateY(0);
}