/* Initializes */
body {
  margin: 0;
}

* {
  box-sizing: border-box;
}

/* Common */
.margin-x-auto {
  margin: 0 auto;
}

.section {
  padding: 40px 10px;
}
.section-x {
  padding: 0 10px;
}
.container {
  max-width: var(--max-width);
  margin: 0 auto;
}

/* 우측 하단 플로팅 알림 스타일 */
.messages-container {
  position: fixed;
  right: 20px;
  bottom: 20px;
  z-index: 9999;
  display: flex;
  flex-direction: column;
  gap: 10px;
  max-width: 300px;
  width: 100%;
}

.alert {
  padding: 16px 24px;
  border-radius: 8px;
  font-size: 14px;
  font-weight: 600;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); /* 입체감을 위한 그림자 */
  display: flex;
  align-items: center;
  justify-content: space-between;
  animation: slideInRight 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94);
  background-color: #fff; /* 기본 배경 */
}

/* 성공/에러 상태별 포인트 컬러 */
.alert-success {
  border-left: 5px solid #52c41a;
  background-color: #f6ffed;
  color: #1b4d07;
}

.alert-error,
.alert-danger {
  border-left: 5px solid #ff4d4f;
  background-color: #fff1f0;
  color: #5c0011;
}

/* 정보(Info) - 파란색 계열 */
.alert-info {
  border-left: 5px solid #1890ff;
  background-color: #e6f7ff;
  color: #002766;
}

/* 경고(Warning) - 노란색/주황색 계열 */
.alert-warning {
  border-left: 5px solid #faad14;
  background-color: #fffbe6;
  color: #613400;
}

/* 애니메이션 효과: 우측에서 슬라이드 인 */
@keyframes slideInRight {
  from {
    transform: translateX(100%);
    opacity: 0;
  }
  to {
    transform: translateX(0);
    opacity: 1;
  }
}

/* 페이드 아웃 효과 (JS와 연동) */
.alert.fade-out {
  opacity: 0;
  transform: translateX(100%);
  transition: all 0.5s ease;
}

/* 섹션 내 heading 기본 스타일 초기화 */
[class^="section-"] h1,
[class^="section-"] h2,
[class^="section-"] h3,
[class^="section-"] h4,
[class^="section-"] h5,
[class^="section-"] h6 {
  margin: 0;
  font-size: inherit;
  font-weight: inherit;
  line-height: inherit;
}
