/* 풀폭(컨테이너 폭을 넘어 양끝까지) */
.visual-full{
  position:relative;
  left:50%;
  right:50%;
  margin-left:-50vw;
  margin-right:-50vw;
  width:100vw;
}

/* 공통 */
.visual-swiper{
  width:100%;
  /* 높이: 화면에 따라 유연. 필요시 값만 조정 */
  --vh: 55vh;
  --min-h: 320px;
  --max-h: 680px;
  height: clamp(var(--min-h), var(--vh), var(--max-h));
  background:#000;
  overflow:hidden;
  border-radius:16px;
  position:relative;
}

/* 슬라이드 영역을 가운데 정렬 */
.visual-swiper .swiper-slide{
  display:flex;
  align-items:center;
  justify-content:center;
  position:relative;
}

/* 기본: 원본비율 유지(이미지 전체 보임) */
.visual-swiper.fit-contain img{
  width:100%;
  height:100%;
  object-fit:contain;
  display:block;
}

/* 대안: 화면 꽉 채우기(자르기 가능) */
.visual-swiper.fit-cover img{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
}

/* 캡션 */
.visual-caption{
  position:absolute; left:0; right:0; bottom:0;
  padding:24px;
  color:#fff;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.55) 80%);
}
.visual-caption h2{margin:0;font-size:clamp(18px,2.4vw,28px);font-weight:800}

/* 네비/페이지네이션 */
.visual-swiper .swiper-pagination{bottom:12px !important}
.visual-swiper .swiper-button-prev,
.visual-swiper .swiper-button-next{
  color:#fff;
  --swiper-navigation-size: 28px;
  text-shadow:0 2px 6px rgba(0,0,0,.45);
  pointer-events:auto; /* 버튼 클릭 보장 */
}
/* 혹시 캡션이 버튼을 덮는 경우 방지 */
.visual-swiper *{ pointer-events:auto; }
