/* =========================================================
   Fonts
   ========================================================= */
@font-face {
  font-family: "ElandChoice";
  src: url("../fonts/ElandChoice-Light.ttf") format("truetype");
  font-weight: 300;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "ElandChoice";
  src: url("../fonts/ElandChoice-Medium.ttf") format("truetype");
  font-weight: 500;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "ElandChoice";
  src: url("../fonts/ElandChoice-Bold.ttf") format("truetype");
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}


html.is-gnb-collapsed body {
  overflow: hidden !important;
  touch-action: none;

  height: 100%;
}


/* 메뉴 레이아웃(오버레이) 자체는 내용이 넘칠 경우 스크롤 허용 */
.header-utils .hamburger.is-expanded {
  overflow-y: auto !important;
  -webkit-overflow-scrolling: touch;
  /* 모바일(iOS)에서 부드러운 스크롤 */
  pointer-events: auto !important;
}

* {
  box-sizing: border-box;
}

html,
body {
  height: 100%;
}

body {
  margin: 0;
  background: var(--page-bg);
  color: #111;
  font-family: var(--font-display);
  overflow-x: hidden;

}

a {
  color: inherit;
  text-decoration: none;
}

img {
  max-width: 100%;
  display: block;
}

ul {
  list-style: none;
  padding: 0;
  margin: 0;
}

/* =========================================================
   ScrollSmoother Layout
   ========================================================= */
#smooth-wrapper {
  position: fixed;
  inset: 0;
  overflow: hidden;
}

#smooth-content {
  min-height: 100vh;
  will-change: transform;
}

/* =========================================================
   Layout Grid (simple)
   ========================================================= */
.container {
  width: min(1440px, calc(100% - 64px));
  margin: 0 auto;
}

.section--kv .container,
#navOverlay .container {
  width: min(1200px, calc(100% - 64px));
}


@media (min-width: 1800px) {
  .container {
    width: min(1680px, calc(100% - 96px));
  }
}

.row {
  display: flex;
  flex-wrap: wrap;
}

.col-14 {
  width: 100%;
}

.col-9 {
  width: 64.285%;
}

.col-7 {
  width: 50%;
}

.col-6 {
  width: 42.857%;
}

.col-5 {
  width: 35.714%;
}

.col-3 {
  width: 21.428%;
}

.col-1 {
  width: 7.142%;
}

.col-offset-1 {
  margin-left: 7.142%;
}

.col-offset-2 {
  margin-left: 14.284%;
}

.col-offset-7 {
  margin-left: 50%;
}

@media (max-width: 980px) {

  .col-9,
  .col-7,
  .col-6,
  .col-5,
  .col-3 {
    width: 100%;
  }

  .col-offset-1,
  .col-offset-2,
  .col-offset-7 {
    margin-left: 0;
  }
}

/* =========================================================
   Sections
   ========================================================= */
.section {
  position: relative;
  padding: 90px 0;
}

.section--kv {
  padding: 0;
  min-height: 100vh;
  display: flex;
  position: relative;
  z-index: 1;
}

.section--kv .content-wrap {
  width: 100%;
  position: relative;
}



.earth-showcase {
  position: relative;
  width: min(820px, 100%);
  height: 800px;
  margin: 40px auto 0;
}

.earth-canvas {
  position: absolute;
  inset: 0;
  border-radius: 22px;
  overflow: visible;

}

.earth-panel {
  position: absolute;
  right: 18px;
  bottom: 18px;
  width: min(360px, calc(100% - 36px));
  border-radius: 18px;
  overflow: hidden;
  background: rgba(255, 255, 255, .78);
  border: 1px solid rgba(0, 0, 0, .10);
  backdrop-filter: blur(14px);
  box-shadow: 0 22px 60px rgba(0, 0, 0, .18);
  transform: translateY(12px);
  opacity: 0;
  pointer-events: none;
}

.earth-panel.is-open {
  opacity: 1;
  transform: translateY(0);
  pointer-events: auto;
}

.earth-panel__close {
  position: absolute;
  top: 10px;
  right: 10px;
  width: 34px;
  height: 34px;
  border-radius: 999px;
  border: 1px solid rgba(0, 0, 0, .12);
  background: rgba(255, 255, 255, .75);
  cursor: pointer;
  font-size: 22px;
  line-height: 1;
}

.earth-panel__img {
  padding: 14px;
}

.earth-panel__img img {
  width: 100%;
  height: 220px;
  object-fit: cover;
  border-radius: 14px;
  display: block;
}




.section--missions {
  padding: 0;
}

.section--products {
  padding: 0;
}

.section--news-area {
  background: #fff;
}

.section--partners {
  background: #fff;
}

/* =========================================================
   Typography (size) + Eland Choice Type System (weight)
   ========================================================= */
.title {
  letter-spacing: -0.02em;
}

.headline-2-en {
  font-size: 54px;
  line-height: 1.05;
  margin: 0;
}

.headline-3-kr {
  font-size: 44px;
  line-height: 1.15;
  margin: 0;
}

.headline-4-kr {
  font-size: 28px;
  line-height: 1.25;
  margin: 0;
}

.body1 {
  font-size: 18px;
  line-height: 1.45;
}

.body2 {
  font-size: 16px;
  line-height: 1.55;
  opacity: .9;
}

@media (max-width: 980px) {
  .headline-2-en {
    font-size: 40px;
  }

  .headline-3-kr {
    font-size: 34px;
  }

  .headline-4-kr {
    font-size: 22px;
  }
}

/* ---- Weight rules (ElandChoice) ---- */
.kv-headline {
  font-family: var(--font-display);
  font-weight: 700;
  letter-spacing: -0.035em;
}

.title,
.headline-2-en,
.headline-3-kr,
.headline-4-kr {
  font-family: var(--font-display);
  font-weight: 700;
  letter-spacing: -0.03em;
}

.body1 {
  font-family: var(--font-display);
  font-weight: 500;
  letter-spacing: -0.01em;
}

.body2,
.kv-headline .sub,
.desc {
  font-family: var(--font-display);
  font-weight: 300;
  letter-spacing: -0.005em;
  line-height: 1.65;
  opacity: .88;
}

.bttn,
.tab-btn,
.fd-link {
  font-family: var(--font-display);
  font-weight: 500;
  letter-spacing: -0.01em;
}

/* =========================================================
   Buttons
   ========================================================= */
.bttn {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  cursor: pointer;
  border: none;
  background: transparent;
}

.bttn-scroll {
  width: 44px;
  height: 44px;
  border-radius: 999px;
  border: 1px solid rgba(255, 255, 255, .25);
  display: flex;
  align-items: center;
  justify-content: center;
  backdrop-filter: blur(8px);
}

.bttn-scroll[color="black"] {
  border-color: rgba(0, 0, 0, .15);
}

.bttn-scroll .icon {
  width: 10px;
  height: 10px;
  border-right: 2px solid currentColor;
  border-bottom: 2px solid currentColor;
  opacity: .8;
}

.bttn-scroll[dir="top"] .icon {
  transform: rotate(-135deg);
}

.bttn-scroll[dir="bottom"] .icon {
  transform: rotate(45deg);
}

.bttn-txt--circle {
  margin-top: 20px;
  padding: 12px 16px;
  border-radius: 999px;
  border: 1px solid rgba(0, 0, 0, .15);
  background: rgba(255, 255, 255, .75);
}

.bttn-txt--circle[color="white"] {
  background: rgba(0, 0, 0, .25);
  border-color: rgba(255, 255, 255, .25);
  color: #fff;
}

.bttn-txt--circle .icon {
  width: 26px;
  height: 26px;
  border-radius: 999px;
  border: 1px solid currentColor;
  position: relative;
}

.bttn-txt--circle .icon:before {
  content: "";
  position: absolute;
  inset: 0;
  margin: auto;
  width: 10px;
  height: 10px;
  border-right: 2px solid currentColor;
  border-bottom: 2px solid currentColor;
  transform: rotate(-45deg);
  translate: 1px 0;
}

/* =========================================================
   KV (Swiper)
   ========================================================= */
.swiper-container {
  width: 100%;
  height: 100vh;
  position: relative;
}

.swiper-slide {
  position: relative;
}

.kv-link {
  display: block;
  width: 100%;
  height: 100vh;
}

.cont-bot {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 90px;
  color: #fff;
}

.kv-headline {
  font-size: 64px;
  line-height: 1.03;
  text-shadow: 0 8px 40px rgba(0, 0, 0, .45);
}

.kv-headline .headline-line {
  display: block;
}

.kv-headline .sub {
  margin-top: 14px;
  font-size: 18px;
  opacity: .85;
  line-height: 1.45;
}

@media (max-width: 980px) {
  .cont-bot {
    bottom: 110px;
  }

  .kv-headline {
    font-size: 42px;
  }
}

.kv-nav {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 22px;
  color: #fff;
}

.progress-ctn {
  height: 2px;
  background: rgba(255, 255, 255, .18);
  border-radius: 999px;
  overflow: hidden;
}

.progress-bar {
  height: 100%;
  width: 0%;
  background: #fff;
  border-radius: 999px;
}

.row.tabs {
  align-items: center;
  margin-top: 14px;
}

.tab-list {
  display: flex;
  gap: 10px;
}

.tab-item .tab-btn {
  display: inline-flex;
  width: 40px;
  height: 40px;
  border-radius: 999px;
  border: 1px solid rgba(255, 255, 255, .25);
  align-items: center;
  justify-content: center;
  color: #fff;
  opacity: .7;
}

.tab-item.is-active .tab-btn {
  opacity: 1;
  border-color: rgba(255, 255, 255, .55);
}

/* =========================================================
   MISSIONS (Pin)
   ========================================================= */
.section--missions {
  min-height: 100vh;
  color: #fff;
}

#missions .missions {
  position: relative;
  min-height: 100vh;
  overflow: hidden;
}

#missions .missions__bg {
  position: absolute;
  inset: 0;
  z-index: 0;
}

#missions .container {
  position: relative;
  z-index: 2;
}

/* 모바일 주소창 대응 */
.section--missions,
.missions,
.missions__bg {
  min-height: 100svh;
}

.mission__img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;

  opacity: 0;
  transform: scale(1.06);
  transition: opacity 350ms ease, transform 900ms ease;

  filter: contrast(1.05) saturate(1.05);
}

.missions[data-idx="0"] .mission1,
.missions__bg[data-idx="0"] .mission1 {
  opacity: 1;
}

.missions__bg[data-idx="1"] .mission2 {
  opacity: 1;
}

.missions__bg[data-idx="2"] .mission3 {
  opacity: 1;
}

.missions .container {
  padding: 120px 0;
}

.missions__txt {
  display: flex;
  flex-direction: column;
  gap: 26px;
}

.mission {
  padding: 22px 22px;
  border-radius: var(--radius);
  background: rgba(0, 0, 0, .30);
  border: 1px solid rgba(255, 255, 255, .16);
  backdrop-filter: blur(10px);
  box-shadow: var(--shadow);
}

.mission .bttn-txt--circle {
  margin-top: 14px;
}

/* =========================================================
   PRODUCTS (Canvas Seq)
   ========================================================= */
.section--products {
  background: #E8E9EA;
}

.visual {
  position: relative;
  height: 70vh;
  min-height: 520px;
  overflow: hidden;
}

.visual__canvas {
  width: 100%;
  height: 100%;
  display: block;
  background: linear-gradient(180deg, rgba(0, 0, 0, .05), rgba(0, 0, 0, .08));
  cursor: grab;
}

.visual__handle {
  position: absolute;
  top: 0;
  bottom: 0;
  width: 14px;
  left: 50%;
  translate: -7px 0;
  border-radius: 999px;
  background: rgba(0, 0, 0, .25);
  backdrop-filter: blur(8px);
  cursor: grab;
}

.section--products .t-cont {
  padding: 70px 0;
}

.section--products .content-wrap .content {
  display: none;
}

.section--products .content-wrap .content.is-active {
  display: block;
}

.section--products .nav .tab-list {
  justify-content: flex-end;
  gap: 14px;
}

.section--products .nav .tab-btn {
  border-color: rgba(0, 0, 0, .15);
  color: #111;
  opacity: .7;
  padding: 10px 14px;
  border-radius: 999px;
  background: rgba(255, 255, 255, .6);
}

.section--products .nav .tab-item.is-active .tab-btn {
  opacity: 1;
  border-color: rgba(0, 0, 0, .35);
}

/* PRODUCTS canvas reveal */
.section--products .visual__overlay {
  position: absolute;
  inset: 0;
  background: #E8E9EA;
  opacity: 1;
  pointer-events: none;
  z-index: 5;
}

/* canvas 줌인 연출 안정화 */
#visual__canvas {
  transform-origin: 50% 50%;
  will-change: transform;
}

/* =========================================================
   SHOWROOM
   ========================================================= */
.section--showroom {
  padding: 120px 0;
}

.bg-container {
  position: absolute;
  inset: 0;
  overflow: hidden;
}

.bg-container img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transform: scale(1.05);
}

.section--showroom .content {
  position: relative;
  z-index: 2;
  padding: 26px;
  border-radius: var(--radius);
  color: #fff;
  background: rgba(0, 0, 0, .35);
  border: 1px solid rgba(255, 255, 255, .16);
  backdrop-filter: blur(10px);
  box-shadow: var(--shadow);
}

/* =========================================================
   NEWS (Refined Design)
   ========================================================= */

/* 1. 섹션 전체 여백 확장 (여백의 미) */
.section--news-area {
  padding: 160px 0;
  /* 기존 90px -> 160px로 시원하게 확장 */
}

/* 2. 헤더 레이아웃: 제목과 버튼 사이 간격 벌리기 */
.section--news-area__header {
  display: flex;
  align-items: flex-end;
  /* 텍스트 베이스라인에 맞춰 정렬 */
  justify-content: space-between;
  margin-bottom: 80px;
  /* 기존 24px -> 80px로 대폭 확장 */
  padding-bottom: 20px;
  border-bottom: 1px solid rgba(0, 0, 0, 0.1);
  /* 은은한 라인 추가 */
}

/* 3. 대제목 스타일 강화 (Big Typography) */
.section--news-area__header .title {
  /* 화면 크기에 따라 40px ~ 80px 사이로 자동 조절 */
  font-size: clamp(40px, 5vw, 80px);
  line-height: 1;
  letter-spacing: -0.03em;
  margin-bottom: 0;
  color: #000;
}

/* VIEW MORE 버튼 위치 미세 조정 */
.section--news-area__header .bttn-txt--circle {
  margin-bottom: 10px;
}


/* 4. 리스트 그리드 (카드 크기는 유지하되 사이 간격만 조정) */
.news-list {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  /* 4열 유지 */
  gap: 40px 24px;
  /* 세로 간격 40px, 가로 간격 24px */
}

@media (max-width: 1100px) {
  .news-list {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (max-width: 640px) {
  .news-list {
    grid-template-columns: 1fr;
  }
}


/* 5. 카드 디자인: 평소엔 플랫하게, 호버시 부드럽게 */
.news-item a {
  display: block;
  border-radius: var(--radius);
  /* 평소엔 그림자 제거하고 얇은 테두리로 깔끔하게 */
  border: 1px solid rgba(0, 0, 0, 0.08);
  background: #fff;
  box-shadow: 0 0 0 rgba(0, 0, 0, 0);
  overflow: hidden;
  transition: transform 0.4s cubic-bezier(0.25, 1, 0.5, 1), box-shadow 0.4s ease;
}

/* 호버 효과 강화 */
.news-item a:hover {
  transform: translateY(-10px);
  /* 위로 더 많이 떠오름 */
  box-shadow: 0 20px 40px rgba(0, 0, 0, 0.08);
  /* 부드러운 그림자 생성 */
  border-color: transparent;
}


/* 카드 내부 여백 및 폰트 */
.news-item__header {
  padding: 24px;
  /* 내부 여백을 살짝 늘려 답답함 해소 (기존 18px) */
}

.news-item__tag {
  font-size: 13px;
  font-weight: 700;
  color: #001A8E;
  /* 브랜드 컬러 포인트 (선택사항) */
  opacity: 1;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  margin-bottom: 8px;
  display: inline-block;
}

.news-item__title {
  font-size: 18px;
  font-weight: 700;
  /* 제목 더 명확하게 */
  line-height: 1.4;
  margin-bottom: 12px;
  word-break: keep-all;
  /* 한글 단어 끊김 방지 */
}

.news-item__date {
  margin-top: 0;
  font-size: 13px;
  opacity: .5;
}


/* 이미지 영역 (기존 유지) */
.img-wrapper .inner {
  height: 160px;
  overflow: hidden;
}

.img-wrapper img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.5s ease;
}

/* 호버 시 이미지 살짝 확대 (선택사항) */
.news-item a:hover .img-wrapper img {
  transform: scale(1.05);
}

/* 모바일 대응 */
@media (max-width: 768px) {
  .section--news-area {
    padding: 100px 0;
  }

  .section--news-area__header {
    flex-direction: column;
    align-items: flex-start;
    gap: 20px;
    margin-bottom: 40px;
    border-bottom: none;
  }

  .section--news-area__header .bttn-txt--circle {
    margin-bottom: 0;
  }
}

/* =========================================================
   PARTNERS (Refined Design - Matching News Area)
   ========================================================= */

/* 1. 섹션 여백 확장 (News 섹션과 통일) */
.section--partners {
  padding: 80px 0 60px;
  /* 위 80px, 아래 60px로 줄임 (기존 160px) */
  background: #fff;
  overflow: hidden;
}

/* 2. 헤더 스타일 (Big Typography 적용) */
.section--partners__header {
  margin-bottom: 40px;
  /* 기존 80px -> 40px로 축소 */
  width: 100%;
}

.section--partners__header .tit {
  /* 화면 크기에 따라 40px ~ 80px 자동 조절 */
  font-size: clamp(40px, 5vw, 80px);
  font-weight: 800;
  line-height: 1;
  letter-spacing: -0.03em;
  margin-bottom: 20px;
  color: #000;
}

.section--partners__header .desc {
  font-size: 18px;
  color: #666;
  font-weight: 400;
  max-width: 600px;
  line-height: 1.6;
  margin-top: 10px;
}

/* 3. 파트너스 마키 (Marquee) 영역 디자인 */
.partners-top {
  padding-top: 0;
  /* 불필요한 상단 여백 제거 */
  padding-bottom: 40px;

  /* 마스킹 효과는 유지 (고급스러움) */
  -webkit-mask-image: linear-gradient(to right, transparent 0%, black 10%, black 90%, transparent 100%);
  mask-image: linear-gradient(to right, transparent 0%, black 10%, black 90%, transparent 100%);
}

.partners-list {
  display: flex;
  width: max-content;
  /* 내용물 길이만큼 자동 확장 */
  gap: 40px;
  /* 로고 사이 간격 */
  /* 부드럽게 흐르는 애니메이션 */
  animation: marquee 40s linear infinite;
  padding-left: 0;
  /* 초기화 */
}

/* 4. 파트너 로고 카드 디자인 */
.partner-item {
  width: 220px;
  /* 로고 박스 크기 키움 */
  height: 120px;
  background: #fff;
  border: 1px solid rgba(0, 0, 0, 0.06);
  /* 아주 연한 테두리 */
  border-radius: 20px;
  /* 둥근 모서리 */
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all 0.4s cubic-bezier(0.25, 1, 0.5, 1);
  flex-shrink: 0;
  /* 줄어듦 방지 */
}

.partner-item img {
  max-width: 65%;
  max-height: 50%;
  object-fit: contain;
  opacity: 0.4;
  /* 평소엔 연하게 (세련됨) */
  filter: grayscale(100%);
  /* 흑백 처리 */
  transition: all 0.4s ease;
}

/* 호버 효과: 카드가 살짝 떠오르며 컬러 복구 */
.partner-item:hover {
  border-color: transparent;
  box-shadow: 0 15px 35px rgba(0, 0, 0, 0.08);
  /* 부드러운 그림자 */
  transform: translateY(-8px);
}

.partner-item:hover img {
  opacity: 1;
  filter: grayscale(0%);
  /* 컬러로 복귀 */
  transform: scale(1.1);
}

/* 애니메이션 키프레임 (이미 있다면 생략 가능) */
@keyframes marquee {
  0% {
    transform: translateX(0);
  }

  100% {
    transform: translateX(-50%);
  }

  /* 아이템이 두 세트 복제되어 있다고 가정 */
}

/* =========================================================
   모바일 대응
   ========================================================= */
@media (max-width: 768px) {
  .section--partners {
    padding: 100px 0;
  }

  .section--partners__header {
    margin-bottom: 40px;
  }

  .partner-item {
    width: 150px;
    height: 90px;
    border-radius: 14px;
  }

  .partners-list {
    gap: 20px;
  }
}


.header-inner {
  height: 105px;
  display: grid;
  grid-template-columns: 250px 1fr 250px;
  align-items: center;
  gap: 18px;

  /* 추가: 부모 컨테이너의 max-width를 무시하고 더 넓게 확장 */
  width: 100% !important;
  max-width: calc(100% - 40px) !important;
  /* 양옆 20px씩만 최소 여백 남김 */
  margin: 0 auto;
}

.brand {
  margin-left: clamp(16px, 4vw, 60px);
  padding-left: 0;
  /* 패딩이 범인일 수 있습니다 */
  display: flex;
  align-items: center;
}

.brand-logo {
  margin-left: 0;
  display: block;
}

.header-utils {
  margin-right: 0;
  position: fixed;
  top: calc(var(--header-h) * 0.22);
  right: clamp(16px, 4vw, 100px);
  z-index: 10001;
  transition: transform 0.8s cubic-bezier(0.16, 1, 0.3, 1);
  will-change: transform;

  /* 👇 [필수 추가] 이 3줄이 없어서 버튼이 흔들렸던 겁니다! */
  display: flex !important;
  justify-content: flex-end !important;
  /* 자식(버튼)을 오른쪽 벽에 강제 고정 */
  align-items: center;
  /* 수직 중앙 정렬 */
}


/* 모바일에서 이모티콘 + 방문신청 숨김 */
@media (max-width: 980px) {

  .util-btn,
  .util-link {
    display: none;
  }
}


/* ----- Theme: hero / light ----- */
.site-header {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 9999;

  /* [핵심 1] 높이를 100vh에서 헤더 높이만큼으로 줄임 */
  /* (이렇게 안 하면 overflow:visible 때문에 투명한 헤더가 화면 전체 클릭을 막아버립니다) */
  height: var(--header-h);

  /* max-height 애니메이션은 유지하되... */
  max-height: var(--header-h);
  will-change: max-height;

  --cap-bg: rgba(255, 255, 255, 0.15);
  --cap-border: rgba(255, 255, 255, 0.2);
  --cap-shadow: 0 8px 30px rgba(0, 0, 0, 0.1);
  color: #fff;

  /* [핵심 2] 자식(캡슐)이 밖으로 튀어나오도록 허용 */
  overflow: visible !important;

  transition:
    max-height 520ms var(--ease-out),
    color 320ms var(--ease);
}

/* ----- Brand ----- */
.brand {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-weight: 700;
  letter-spacing: -0.02em;
}


/* Sitemap layout */
/* =========================================================
   SITEMAP — Hanwha-like ROW layout
   - left: section title
   - right: multi columns
   ========================================================= */

/* 전체를 "행"으로 */
.sitemap-grid {
  display: flex;
  flex-direction: column;
  gap: 0;
}

/* 한 행(섹션) */
.sitemap-sec {
  display: grid;
  grid-template-columns: 260px 1fr;
  /* 좌측 타이틀 폭 */
  gap: 20px;

  padding: 34px 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;

  /* 구분선 */
  border-top: 1px solid rgba(255, 255, 255, .10);
}

/* 첫 행 위쪽 여백/선 */
.sitemap-sec:first-child {
  border-top: 0;
  padding-top: 18px;
}

/* 좌측 대분류(영문 대문자 느낌) */
.sitemap-key {
  margin: 0;
  font-size: 22px;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, .92);
  line-height: 1.15;
}

/* 우측: 링크들을 "컬럼"으로 배치 */
.sitemap-list {
  display: grid;
  grid-template-columns: repeat(4, minmax(150px, 1fr));
  /* 컬럼 개수 */
  gap: 8px 22px;
  align-content: start;
}

/* 링크: 한화 느낌으로 더 타이트 */
.sitemap-link {
  padding: 10px 0;
  border-radius: 0;
  background: transparent;
  transform: none;
  font-size: 16px;
  color: rgba(255, 255, 255, .86);
}

.sitemap-link:hover {
  background: transparent;
  color: #fff;
  opacity: 1;
}

/* 서브링크(있으면) */
.sitemap-sublink {
  padding: 6px 0;
  font-size: 14px;
  color: rgba(255, 255, 255, .68);
}

.sitemap-sublink:hover {
  background: transparent;
  color: rgba(255, 255, 255, .92);
}

/* 섹션 안에 서브헤드가 있다면: 컬럼 헤더처럼 */
.sitemap-subhead {
  margin: 0 0 10px;
  padding: 0;
  font-size: 14px;
  letter-spacing: .02em;
  text-transform: none;
  color: rgba(255, 255, 255, .92);
  opacity: 1;
}

/* 반응형: 컬럼 수 자동 감소 */
@media (max-width: 1200px) {
  .sitemap-sec {
    grid-template-columns: 260px 1fr;
  }

  .sitemap-list {
    grid-template-columns: repeat(3, minmax(160px, 1fr));
  }
}

@media (max-width: 820px) {
  .sitemap-sec {
    grid-template-columns: 1fr;
  }

  .sitemap-key {
    font-size: 18px;
  }

  .sitemap-list {
    grid-template-columns: repeat(5, minmax(160px, 1fr));
  }

}

@media (max-width: 520px) {
  .sitemap-list {
    grid-template-columns: 1fr;
  }
}



html,
body {
  cursor: default !important;
  /* 기본 커서로 복구 */
}

/* =========================================================
   Hanwha-like: overlay scrollbar (native hidden + custom indicator)
   ========================================================= */

/* 1) 네이티브 스크롤바 완전 숨김 (스크롤은 그대로 가능) */
html {
  scrollbar-width: none;
}

/* Firefox */
html::-webkit-scrollbar {
  width: 0;
  height: 0;
}

/* Chrome/Edge/Safari */
body::-webkit-scrollbar {
  width: 0;
  height: 0;
}

/* (중요) stable 쓰지 말기: 공간 예약 금지 */
html {
  scrollbar-gutter: auto;
}

/* 기본 브라우저 스크롤바 숨김 */
::-webkit-scrollbar {
  display: none;
}

.m3-scroll-container {
  position: fixed;
  top: 50%;
  right: 15px;
  transform: translateY(-50%);
  width: 6px;
  /* 테두리 공간을 위해 살짝 넓힘 */
  height: 250px;
  z-index: 9999;
}

.m3-track {
  position: relative;
  width: 100%;
  height: 100%;
  background: rgba(255, 255, 255, 0.1);
  border-radius: 20px;
  /* ✅ 게이지바(트랙) 검정 테두리 */
  border: 1px solid rgba(0, 0, 0, 0.2);
  box-sizing: border-box;
}

.m3-progress {
  position: absolute;
  top: 0;
  width: 100%;
  background: rgba(255, 255, 255, 0.2);
  border-radius: 20px;
}

.m3-thumb {
  position: absolute;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 12px;
  height: 45px;
  background: rgba(255, 255, 255, 0.8);
  /* 좀 더 불투명하게 조정 */
  border-radius: 30px;

  /* ✅ 막대바 검정 테두리 (확실하게 보이도록) */
  border: 1.5px solid #000000;

  cursor: grab;
  box-sizing: border-box;
  transition: width 0.3s ease, background 0.3s ease;
}

.m3-thumb:hover,
.m3-thumb.is-active {
  width: 14px;
  background: #ffffff;
  box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
}




/* =========================================================
   CURTAIN OVERLAY (SMOOTH)
   - 헤더 색(hero/light)도 레이어로 페이드
   - 커튼(헤더 확장)도 max-height로 스르륵
   ========================================================= */

:root {
  --header-h: 105px;
  --nav-glass: rgba(255, 255, 255, .08);
  --nav-blur: 22px;
  --nav-sat: 1.1;

  --ease-out: cubic-bezier(.22, 1, .36, 1);
  --ease: cubic-bezier(.4, 0, .2, 1);
  --font-display: "ElandChoice", system-ui, -apple-system, "Segoe UI", Roboto, "Noto Sans KR", sans-serif;
  --cursor-fg: 255, 255, 255;

  --hero-overlap: clamp(24px, 6vh, 120px);
}

/* header = curtain (핵심: height 고정 + max-height 애니메이션) */
.site-header {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 9999;
  overflow: hidden;

  /* ✅ 커튼 애니메이션 */
  height: 100vh;
  /* 항상 100vh로 두고 */
  max-height: var(--header-h);
  /* 기본은 헤더 높이만 보이게 */
  will-change: max-height;

  background: transparent;
  color: #fff;

  transition:
    max-height 520ms var(--ease-out),
    color 320ms var(--ease);
}

/* ✅ Light 배경은 별도 레이어로 “페이드” */
.site-header::after {
  content: "";
  position: absolute;
  inset: 0;
  background: rgba(255, 255, 255, .96);
  opacity: 0;
  transition: opacity 320ms var(--ease);
  pointer-events: none;
  z-index: 0;
}

/* ✅ 유리막 레이어(헤더 전체 1장) */
.site-header::before {
  content: "";
  position: absolute;
  inset: 0;
  background: transparent;
  opacity: 0;
  transition: opacity 360ms var(--ease);
  pointer-events: none;
  z-index: 1;

  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, .12),
    inset 0 -1px 0 rgba(255, 255, 255, .06);
}

/* header 안 컨텐츠는 레이어 위로 */
.site-header>* {
  position: relative;
  z-index: 2;

  will-change: transform, max-height;
}

.site-header {
  transform: translate3d(0, 0, 0);
  transition: transform 0.8s cubic-bezier(0.16, 1, 0.3, 1),
    background-color 0.4s ease,
    color 0.4s ease !important;
  will-change: transform;
}

html.is-fullnav-open .site-header {
  transform: translate3d(0, 0, 0) !important;
}



/* ===== Theme: hero / light (색 전환 “팍” 방지) ===== */
.site-header.is-hero {
  color: #fff;
}

.site-header.is-hero::after {
  opacity: 0;
}



.site-header.is-light {
  color: #111;
}

.site-header.is-light::after {
  opacity: 1;
  /* ✅ 흰 배경이 스르륵 */
}

/* 그림자도 스르륵 */
.site-header.is-light {
  box-shadow: 0 10px 30px rgba(0, 0, 0, .08);
  transition:
    max-height 520ms var(--ease-out),
    color 320ms var(--ease),
    box-shadow 320ms var(--ease);
}



/* 열림: 기존 gnb만 숨김(로고/버튼 유지) */
html.is-fullnav-open .site-header .gnb {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity 220ms var(--ease);
}

/* 열림: 헤더 유리막 */
html.is-fullnav-open .site-header::before {
  opacity: 1;
  background: rgba(0, 0, 0, .08);
  backdrop-filter: blur(16px) saturate(.95);
  -webkit-backdrop-filter: blur(16px) saturate(.95);
}

/* 열림: light 배경 레이어는 꺼서 깔끔하게 */
html.is-fullnav-open .site-header::after {
  opacity: 0 !important;
}

/* overlay panel (header 아래부터) */
#navOverlay {
  position: absolute;
  top: var(--header-h);
  left: 0;
  right: 0;
  bottom: 0;

  background: transparent !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;

  opacity: 0;
  transform: translateY(-14px);
  pointer-events: none;

  /* ✅ visibility로 팍 바뀌는 느낌 줄이기 */
  visibility: hidden;

  transition:
    opacity 420ms var(--ease),
    transform 520ms var(--ease-out),
    visibility 0s linear 520ms;

}



/* 열림 */
html.is-fullnav-open #navOverlay {
  opacity: 1;
  transform: translateY(0);
  pointer-events: auto;
  visibility: visible;

  transition:
    opacity 520ms var(--ease-out) 90ms,
    transform 620ms var(--ease-out) 90ms,
    visibility 0s;
}

/* overlay content spacing */
#navOverlay .nav-overlay__inner {
  padding: 48px 0 72px;
}

/* ===== 어두운 베일도 “팍” 방지 ===== */
body::after {
  content: "";
  position: fixed;
  inset: 0;
  z-index: 9998;
  /* header(9999) 아래 */
  background: rgba(0, 0, 0, .55);
  pointer-events: none;

  opacity: 0;
  transition: opacity 320ms var(--ease);
}

html.is-fullnav-open body::after {
  opacity: 1;
}

/* custom scrollbar hide (원하면 유지) */
html.is-fullnav-open .custom-scrollbar {
  opacity: 0;
  transition: opacity 200ms ease;
}



/* FIX: light 상태에서도 header hide/show transform 애니메이션 유지 */
.site-header {
  transition:
    transform 820ms cubic-bezier(.22, 1, .36, 1),
    max-height 820ms var(--ease-out),
    color 320ms var(--ease),
    box-shadow 320ms var(--ease) !important;
  will-change: transform, max-height;
}

.site-header.is-light {
  transition:
    transform 820ms cubic-bezier(.22, 1, .36, 1),
    max-height 820ms var(--ease-out),
    color 320ms var(--ease),
    box-shadow 320ms var(--ease) !important;
}

/* hide/show: 100vh 커튼 구조여도 헤더높이만큼만 이동 */
.site-header.is-hidden {
  /* !important를 사용하여 hero 상태일 때의 transform보다 우선하도록 설정 */
  transform: translate3d(0, -100%, 0) !important;
  /* 가끔 max-height나 top으로 제어되는 경우도 있어 확실히 가려줍니다 */
  pointer-events: none;
}

html.is-fullnav-open .site-header {
  transform: translate3d(0, 0, 0) !important;
}

.kv-video {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transform: scale(1.01);
  /* 1%만 확대해서 틈을 메움 */
  transform-origin: center;
}

.section--kv .swiper-zoom-container {
  position: relative;
  z-index: 1;
}

/* =========================
   KV OVERLAYS (position fix)
   ========================= */

/* video 위에 overlay가 정확히 올라가게 */
.section--kv .swiper-zoom-container {
  position: relative;
  height: 100vh;
}

/* 오버레이 컨테이너 */
.kv-overlays {
  position: absolute;
  inset: 0;
  z-index: 5;
  /* video보다 위 */
  pointer-events: none;
}

/* 각 overlay 기본 숨김 */
.kv-overlay {
  position: absolute;
  inset: 0;
  opacity: 0;
  transform: translateY(10px);
  transition: opacity 420ms var(--ease-out), transform 520ms var(--ease-out);
}

/* 활성화만 보이게 */
.kv-overlay.is-active {
  opacity: 1;
  transform: translateY(0);
}

/* (1) 좌하단 고급 카피 */
.kv-overlay--left .kv-left__copy {
  position: absolute;
  left: clamp(18px, 5vw, 72px);
  bottom: clamp(44px, 10vh, 96px);
  max-width: min(640px, 86vw);
  color: rgba(255, 255, 255, .92);
  pointer-events: auto;
}

.kv-overlay--left .kv-left__line {
  position: absolute;
  left: clamp(18px, 5vw, 72px);
  bottom: calc(clamp(44px, 10vh, 96px) + 132px);
  width: 84px;
  height: 1px;
  background: rgba(255, 255, 255, .35);
}

.kv-eyebrow {
  font-size: 12px;
  letter-spacing: .22em;
  text-transform: uppercase;
  opacity: .78;
  margin-bottom: 14px;
}

.kv-title {
  font-family: var(--font-display, system-ui);
  font-size: clamp(34px, 5.6vw, 74px);
  line-height: 1.03;
  letter-spacing: -0.02em;
  margin: 0 0 14px;
}

.kv-sub {
  margin: 0 0 22px;
  font-size: clamp(14px, 1.6vw, 18px);
  line-height: 1.55;
  opacity: .84;
}

/* CTA */
.kv-cta {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 10px 14px;
  border-radius: 999px;
  border: 1px solid rgba(255, 255, 255, .22);
  background: rgba(255, 255, 255, .08);
  backdrop-filter: blur(10px);
  color: rgba(255, 255, 255, .92);
}

/* (2) 중앙 타이포 */
.kv-overlay--center {
  display: grid;
  place-items: center;
  text-align: center;
}

.kv-center__wrap {
  width: min(820px, 90vw);
  color: rgba(255, 255, 255, .92);
}

.kv-center__kicker {
  font-size: 12px;
  letter-spacing: .22em;
  text-transform: uppercase;
  opacity: .75;
  margin-bottom: 18px;
}

.kv-center__title {
  font-family: var(--font-display, system-ui);
  font-size: clamp(44px, 7.4vw, 104px);
  line-height: .92;
  letter-spacing: -0.02em;
  margin: 0;
  text-transform: uppercase;
}

.kv-center__rule {
  width: 120px;
  height: 1px;
  margin: 22px auto 14px;
  background: rgba(255, 255, 255, .32);
}

.kv-center__sub {
  margin: 0;
  font-size: 14px;
  letter-spacing: .08em;
  opacity: .78;
}




/* ===== Earth Showcase Guide (less flat) ===== */
.earth-guide {
  position: absolute;
  top: 194px;
  left: 50%;
  transform: translateX(-50%);
  text-align: center;
  pointer-events: none;
  z-index: 5;
  font-family: var(--font-display);
  filter: drop-shadow(0 10px 26px rgba(0, 0, 0, .18));
}

.earth-guide__title {
  font-size: 16px;
  font-weight: 600;
  /* ✅ 살짝만 두껍게 */
  letter-spacing: 0.12em;
  /* ✅ 전시관 트래킹 */
  text-transform: uppercase;
  /* ✅ 더 전시 느낌(싫으면 삭제) */
  color: #0e1a22;

  /* ✅ 소프트 헤일로 + 깊이 */
  text-shadow:
    0 0 10px rgba(255, 255, 255, .55),
    0 0 22px rgba(140, 200, 255, .28),
    0 8px 20px rgba(0, 0, 0, .18);
}

.earth-guide__sub {
  margin-top: 8px;
  font-size: 13px;
  font-weight: 500;
  letter-spacing: -0.02em;
  color: rgba(14, 26, 34, .78);
  text-shadow:
    0 0 8px rgba(255, 255, 255, .45),
    0 6px 14px rgba(0, 0, 0, .14);
}

/* ===== Sharp Blue Guide Line ===== */
.earth-guide::after {
  content: "";
  display: block;
  width: 220px;
  height: 1.5px;
  margin: 14px auto 0;

  background: linear-gradient(90deg,
      rgba(120, 190, 255, 0),
      rgba(120, 190, 255, 0.95),
      rgba(120, 190, 255, 0));

  box-shadow:
    0 0 8px rgba(120, 190, 255, 0.65),
    0 0 16px rgba(120, 190, 255, 0.45);
}


/* ===== Blue Spotlight from Text to Earth ===== */
.earth-guide::before {
  content: "";
  position: absolute;
  top: 92%;
  left: 50%;
  transform: translateX(-50%);
  width: 520px;
  height: 360px;
  pointer-events: none;
  z-index: -1;

  /* 파란 조명 */
  background: radial-gradient(ellipse at top,
      rgba(120, 190, 255, 0.55) 0%,
      rgba(120, 190, 255, 0.35) 18%,
      rgba(120, 190, 255, 0.20) 34%,
      rgba(120, 190, 255, 0.10) 48%,
      rgba(120, 190, 255, 0.0) 62%);

  filter: blur(18px);
}

/* ===== Close Button Animation ===== */
.earth-showcase-close {
  transition:
    transform .35s cubic-bezier(.22, .61, .36, 1),
    box-shadow .35s ease,
    background .35s ease,
    opacity .25s ease;
}

/* 등장 애니메이션 */
.earth-showcase-close {
  animation: closePop .45s cubic-bezier(.22, .61, .36, 1);
}

@keyframes closePop {
  0% {
    transform: scale(.6) rotate(-90deg);
    opacity: 0;
  }

  100% {
    transform: scale(1) rotate(0deg);
    opacity: 1;
  }
}

/* hover – 고급스러운 회전 + 확대 */
.earth-showcase-close:hover {
  transform: scale(1.15) rotate(90deg);
  box-shadow:
    0 12px 30px rgba(0, 0, 0, .25),
    0 0 18px rgba(120, 190, 255, .45);
  background: rgba(255, 255, 255, .95);
}

/* active – 눌리는 느낌 */
.earth-showcase-close:active {
  transform: scale(.95) rotate(90deg);
}

.earth-showcase-next:hover {
  opacity: 1;
  transform: translateX(20%);
  text-shadow:
    0 0 8px rgba(120, 190, 255, .45),
    0 6px 18px rgba(0, 0, 0, .25);
}




/* =========================================================
   KV SHUTTER – TOTAL REFINED STYLE
   ========================================================= */

.kv-shutter {
  position: absolute;
  inset: 0;
  background: #F5F4F0;
  z-index: 20;
  pointer-events: none;
  transform: translate3d(0, 100%, 0);
  will-change: transform;
  box-shadow: 0 -20px 50px rgba(0, 0, 0, 0.15);

  /* 셔터 상단 모서리를 살짝 둥글리면 더 모던함 (선택사항) */
  border-radius: 30px 30px 0 0;
}

/* 전체 레이아웃 컨테이너 */
.kv-shutter__inner {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;

  /* 화면 중앙에 모으되, 전체적으로 너무 쏠리지 않도록 패딩 유지 */
  padding: clamp(30px, 4vh, 60px) clamp(20px, 6vw, 96px);

  display: flex;
  flex-direction: column;

  /* [핵심] space-between(양끝 배치)을 끄고 center(중앙 배치)로 변경 */
  justify-content: center;

  /* [핵심] 요소들 사이의 간격을 여기서 직접 제어 (원하는 만큼 줄이세요) */
  gap: clamp(20px, 4vh, 50px);

  box-sizing: border-box;
  color: #111;
  overflow-y: auto;
  overflow-x: hidden;
}

/* ---------------------------------------------------------
   [1] TOP: 거대한 설명 (Description)
   --------------------------------------------------------- */
.kv-shutter__header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;

  /* [추가] 헤더 아래 여백을 최소화 */
  margin-bottom: 15px;
  flex-shrink: 0;
}

.kv-shutter__desc-group {
  max-width: 60%;
  /* 너무 길어지지 않게 제한 */
}

.kv-shutter__desc {
  font-family: "ElandChoice", sans-serif;
  font-size: clamp(24px, 2.5vw, 42px);
  line-height: 1.35;
  letter-spacing: -0.02em;
  color: #111;
  margin: 0;
  word-break: keep-all;
}

.kv-shutter__desc strong {
  font-weight: 700;
  /* Bold */
  color: #000;
  /* 완전한 검정 */
}

.kv-shutter__desc .desc-light {
  display: block;
  /* 줄바꿈 흐름 유지 */
  margin-top: 8px;
  /* 키워드와 약간의 간격 */
  font-weight: 300;
  /* Light */
  color: #555;
  /* 진한 회색 */
  font-size: 0.9em;
  /* 본문보다 살짝 작게 (선택사항) */
  opacity: 0.9;
}

/* ---------------------------------------------------------
   [2] MID: 타원 이미지 & 노트 (Visual Section)
   --------------------------------------------------------- */
.kv-shutter__mid-section {
  display: flex;
  align-items: center;
  gap: clamp(30px, 5vw, 60px);
  margin-top: 0;
  /* 위쪽 여백 제거하여 타이틀과 밀착 */
  margin-bottom: 6vh;
  /* 이미지와 하단(Note/Meta) 사이의 간격은 유지 */
}

.kv-shutter__gallery {
  display: flex;
  gap: 15px;
}

.kv-img-frame.mask-oval {
  width: clamp(140px, 16vw, 240px);
  height: clamp(100px, 12vw, 180px);
  border-radius: 120px;
  /* 타원형 셰이프 */
  overflow: hidden;
  background: #eee;
}

.kv-img-frame.mask-oval img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.kv-shutter__note {
  font-size: clamp(18px, 1.5vw, 26px);
  line-height: 1.3;
  color: #333;
  opacity: 0.8;
  margin: 0;
}

/* ---------------------------------------------------------
   [3] BOTTOM: 거대 타이틀 & 캡슐 (Footer Section)
   --------------------------------------------------------- */
.kv-shutter__footer {
  position: relative;
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  /* 상단 패딩을 넉넉히 주어 선과 내용 사이 간격 확보 */
  padding-top: 30px;
  margin-top: auto;

  gap: 40px;
}

.shutter-line {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 1px;
  /* 은은한 그라데이션 라인 (왼쪽 진함 -> 오른쪽 투명) */
  background: linear-gradient(90deg, rgba(0, 0, 0, 0.2) 0%, rgba(0, 0, 0, 0.05) 100%);
}

/* 왼쪽 타이틀 그룹 */
.kv-shutter__title-group {
  flex: 1;
}

.kv-shutter__eyebrow {
  display: flex;
  align-items: center;
  gap: 12px;
  font-size: 14px;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  margin-bottom: 12px;
  background: linear-gradient(90deg, #001A8E, #00A859);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
}

.kv-shutter__eyebrow::before {
  content: "";
  width: 30px;
  height: 2px;
  background: linear-gradient(90deg, #001A8E, #00A859);
}

.kv-shutter__title {
  font-size: clamp(48px, 7vw, 100px);
  /* 선택 이미지처럼 초대형 크기 */
  line-height: 0.95;
  letter-spacing: -0.05em;
  font-weight: 700;
  margin: 0;
}

/* 오른쪽 캡슐 그룹 */
.kv-shutter__meta-group {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  /* 오른쪽 정렬 */
  gap: 16px;
}

.meta-label {
  display: flex;
  /* 가로 배치 */
  align-items: center;
  /* 수직 중앙 정렬 */
  gap: 12px;
  /* 선과 글자 사이 간격 */

  /* 기존 폰트 스타일 유지 */
  font-family: "ElandChoice", sans-serif;
  font-size: 12px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  margin-bottom: 16px;
  color: #001A8E;
  /* 인라인 스타일 대신 여기서 제어 추천 */
}

.meta-label::before {
  content: "";
  display: block;
  width: 30px;
  /* 선의 길이 */
  height: 2px;
  /* 선의 두께 */

  /* 보여주신 eyebrow와 동일한 그라데이션 적용 */
  background: linear-gradient(90deg, #001A8E, #00A859);

  /* 선이 뭉개지지 않도록 크기 고정 */
  flex-shrink: 0;
}

.kv-shutter__meta {
  display: flex;
  flex-direction: column;
  gap: 10px;
  /* 줄 간격 */
}

.meta-row {
  display: flex;
  justify-content: flex-end;
  flex-wrap: wrap;
  /* 화면 좁을 때 줄바꿈 */
  gap: 8px;
  /* 버튼 사이 간격 */
}

.kv-pill {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 38px;
  /* 적당히 슬림한 높이 */
  padding: 0 18px;
  border-radius: 999px;
  /* 완전한 원형 캡슐 */

  font-family: "ElandChoice", sans-serif;
  font-size: 14px;
  font-weight: 500;
  letter-spacing: -0.01em;

  /* 기본 상태: 투명 배경 + 얇은 회색 테두리 */
  background: transparent;
  border: 1px solid rgba(0, 0, 0, 0.15);
  color: #444;
  white-space: nowrap;
  /* 텍스트 줄바꿈 방지 */

  transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
  cursor: default;
  /* 클릭 요소가 아니라면 default, 맞다면 pointer */
}

.kv-pill.active {
  background: #111;
  border-color: #111;
  color: #fff;
  font-weight: 700;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
  /* 살짝 떠있는 그림자 */
}

.kv-pill:not(.active):hover {
  border-color: #111;
  color: #000;
  background: rgba(0, 0, 0, 0.02);
}

/* ---------------------------------------------------------
   ✅ [RESPONSIVE FIX] 모바일 완벽 대응
   --------------------------------------------------------- */
@media (max-width: 1024px) {

  /* 1. 레이아웃 재정비: 위로 잘림 방지 */
  .kv-shutter__inner {
    justify-content: flex-start;
    /* 상단부터 채움 */
    padding: 80px 24px 40px;
    /* 상단 패딩 확보 (헤더 겹침 방지) */
    gap: 30px;
  }

  /* 2. 설명 텍스트 크기 축소 */
  .kv-shutter__desc-group {
    max-width: 100%;
  }

  .kv-shutter__desc {
    font-size: 24px;
    /* 모바일에서 적당한 크기 */
    line-height: 1.4;
  }

  .kv-shutter__desc .desc-light {
    font-size: 15px;
  }

  /* 3. 중간 이미지 섹션 축소 및 정렬 */
  .kv-shutter__mid-section {
    flex-direction: column;
    align-items: flex-start;
    gap: 20px;
    margin-bottom: 20px;
  }

  .kv-img-frame.mask-oval {
    width: 100px;
    /* 이미지 크기 줄임 */
    height: 70px;
  }

  .kv-shutter__note {
    font-size: 15px;
    /* 노트 글자 줄임 */
  }

  /* 4. 하단 타이틀 및 캡슐 재배치 */
  .kv-shutter__footer {
    flex-direction: column;
    /* 세로 배치 */
    align-items: flex-start;
    padding-top: 24px;
    gap: 24px;
    margin-top: 0;
    /* 강제 하단 고정 해제 (내용 흐름대로) */
  }

  .kv-shutter__title {
    font-size: 42px;
    /* 타이틀 크기 줄임 */
  }

  .kv-shutter__meta-group {
    align-items: flex-start;
    /* 왼쪽 정렬 */
    width: 100%;
  }

  .meta-row {
    justify-content: flex-start;
    /* 왼쪽 정렬 */
  }

  .kv-pill {
    height: 32px;
    /* 버튼 높이 축소 */
    font-size: 13px;
    padding: 0 14px;
  }
}

/* 초소형 모바일 (SE 등) 대응 */
@media (max-width: 380px) {
  .kv-shutter__desc {
    font-size: 20px;
  }

  .kv-shutter__title {
    font-size: 34px;
  }

  .kv-shutter__inner {
    padding: 70px 20px 30px;
  }
}

/* ===============================================
   햄버거 버튼 + 캡슐 (hover + click 확장, 쫀득 노치)
   =============================================== */

.header-utils .hamburger {
  /* ===== 기존 유지 ===== */
  --cap-h: 44px;
  --cap-w: 140px;
  position: relative;
  width: 44px;
  height: var(--cap-h);
  padding: 0;

  /* 디자인 유지 */
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.1);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  cursor: pointer;
  z-index: 10;
  overflow: hidden;

  /* 👇 [핵심 수정 1] inline-flex를 block으로 변경 */
  /* inline-flex는 너비가 변할 때마다 내부 요소 위치를 재계산하여 떨림을 유발합니다. */
  display: block;

  /* block으로 바꾸면 justify-content, align-items는 필요 없으므로 삭제하거나 무시됨 */

  /* 👇 [핵심 수정 2] 오른쪽 기준점 명시 및 GPU 가속 */
  transform-origin: right center;
  will-change: width, height;
  /* 브라우저에게 너비/높이 변화 미리 알림 */
  transform: translateZ(0);
  /* GPU 레이어 분리 */

  /* 👇 [원하시는 모션 복구] */
  transition:
    width 0.6s cubic-bezier(0.65, 0, 0.35, 1),
    height 0.6s cubic-bezier(0.65, 0, 0.35, 1),
    background 1s ease;
}

/* =================================================
   hover / focus : 기본 캡슐 확장 (기존 유지)
   ================================================= */
@media (hover: hover) and (pointer: fine) {

  .header-utils .hamburger:hover,
  .header-utils .hamburger:focus-visible {
    width: var(--cap-w);
  }
}

/* =================================================
   캡슐 테두리 (배경 없음)
   ================================================= */
.header-utils .hamburger::before {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: 999px;
  background: transparent;
  border: 1.5px solid rgba(0, 0, 0, 0.85);
  /* 평상시 테두리 */
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);

  /* ✅ 평상시에는 보이게 설정 */
  opacity: 1;
  z-index: 0;
  transform-origin: right center;
  transition: opacity 0.3s ease, border 0.3s ease, background 0.3s ease;

  /* ✅ 기존의 display: none !important; 는 삭제합니다. */
}

.header-utils .hamburger:hover::before,
.header-utils .hamburger:focus-visible::before {
  opacity: 1;
}

/* =================================================
   Menu 텍스트
   ================================================= */
.header-utils .hamburger::after {
  content: "Menu";
  position: absolute;

  /* 위치 고정: 오른쪽 끝에서 54px 떨어진 곳 */
  right: 54px;
  top: 50%;

  /* ✅ 수정 1: translateX(이동) 제거하고, 수직 중앙 정렬만 유지 */
  transform: translateY(-50%);

  font-size: 16px;
  font-weight: 600;
  color: #111;

  opacity: 0;
  z-index: 1;
  pointer-events: none;
  white-space: nowrap;

  /* ✅ 수정 2: 성능 최적화 (글자 렌더링 방식 고정) */
  -webkit-font-smoothing: antialiased;
  backface-visibility: hidden;
  will-change: opacity;

  /* ✅ 수정 3: transition에서 transform 제외 (투명도만 조절) */
  transition: opacity 0.3s ease;
}

.header-utils .hamburger:hover::after,
.header-utils .hamburger:focus-visible::after {
  opacity: 1;
}

/* ✅ 수정: .icon-trigger 내부의 span만 아이콘으로 취급 */
.header-utils .hamburger .icon-trigger {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  width: 44px;
  /* 정사각형 영역 확보 */
  height: 100%;

  display: flex;
  align-items: center;
  justify-content: center;

  z-index: 10;
  pointer-events: none;
  /* 클릭 방해 금지 */
}

/* ② 틀 안의 '막대기(span)' 위치 잡기 (기존 코드 교체) */
.header-utils .hamburger .icon-trigger>span {
  position: absolute;
  /* 부모(.icon-trigger)가 이미 자리를 잡았으므로, 여기선 정중앙 정렬만 하면 됩니다 */
  left: 50%;
  top: 50%;
  /* 막대기 중심점을 가운데로 맞춤 */
  transform: translate(-50%, -50%);

  width: 18px;
  height: 2px;
  background: #111;
  border-radius: 2px;
  z-index: 10;
  transition: transform 0.3s ease, background 0.3s ease;
}

/* 막대기 1 (위쪽) - 중앙에서 6px 위로 */
.header-utils .hamburger .icon-trigger>span:nth-child(1) {
  transform: translate(-50%, calc(-50% - 6px));
}

/* 막대기 2 (아래쪽) - 중앙에서 6px 아래로 */
.header-utils .hamburger .icon-trigger>span:nth-child(2) {
  transform: translate(-50%, calc(-50% + 6px));
}

/* 확장됐을 때 X자 만들기 */
.header-utils .hamburger.is-expanded .icon-trigger span:nth-child(1) {
  transform: translate(-50%, -50%) rotate(45deg);
  background: #fff;
}

.header-utils .hamburger.is-expanded .icon-trigger span:nth-child(2) {
  transform: translate(-50%, -50%) rotate(-45deg);
  background: #fff;
}

/* ✅ 서브 메뉴 글자(span) 스타일 초기화 */
.sub-list span {
  position: relative !important;
  /* absolute 해제 */
  top: auto !important;
  right: auto !important;
  transform: none !important;
  /* 회전/이동 해제 */
  display: inline-block;
  font-size: 0.85rem;
  color: rgba(255, 255, 255, 0.5);
  margin-right: 10px;
}

/* =================================================
   클릭 상태: gnb 숨김 + 캡슐 "왼쪽으로만" 추가 확장
   ================================================= */


/* 기본 hover 시 */
@media (hover: hover) and (pointer: fine) {
  .header-utils .hamburger:hover {
    width: var(--cap-w);
  }
}

/* ✅ 아래로 늘어나는 상태 (JS에서 0.3초 뒤에 추가됨) */
.header-utils .hamburger.is-expanded,
.header-utils .hamburger.is-closing {
  /* ✅ 1. 높이 설정 (기존 코드 유지) */
  height: calc(100vh - 50px);

  /* ✅ 2. [중요] 너비 계산 추가 (JS 삭제 대체) */
  /* 화면 전체 너비 - (오른쪽 여백 * 2) */
  /* 오른쪽 여백이 clamp(16px, 4vw, 100px)이므로, 대략적으로 계산 */
  width: calc(100vw - (clamp(16px, 4vw, 100px) * 2));
  max-width: 100%;
  /* 너무 커지지 않게 제한 */

  /* ✅ 3. 디자인 스타일 (기존 코드 유지) */
  border-radius: 22px;
  background: rgba(0, 0, 0, 0.4);
  /* 투명도 0.4 */
  backdrop-filter: blur(15px);
  -webkit-backdrop-filter: blur(15px);
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3);

  /* 커서 변경 */
  cursor: default;
}

/* =================================================
   [닫힘 중] 높이만 먼저 줄이기
   ================================================= */
.header-utils .hamburger.is-closing {
  /* 원래 높이로 강제 고정하여 '홀쭉한' 상태로 돌아가게 함 */
  height: 44px;
  /* 너비는 위에서 상속받아 넓은 상태 유지 -> 0.6초 뒤 클래스 제거되며 너비 축소 */
}

/* =================================================
   [내부 요소] 테두리 및 텍스트 처리
   ================================================= */
/* 확장 시 테두리(::before) 숨김 */
.header-utils .hamburger.is-expanded::before,
.header-utils .hamburger.is-closing::before {
  opacity: 0 !important;
  visibility: hidden !important;
  transition: opacity 0.2s ease;
}

.header-utils .hamburger.is-expanded::after {
  color: #fff;
  opacity: 0;
  opacity: 0 !important;
}

.header-utils .hamburger:hover::before {
  border-color: #111;
  background: rgba(0, 0, 0, 0.03);
}

/* 만약 캡슐 내부에 별도의 메뉴 컨테이너가 있다면 */
.nav-content-wrapper {
  pointer-events: auto;
  /* 내부 요소 클릭 허용 (버튼 이벤트로 전달 안 됨) */
}

.header-utils .hamburger {
  /* 버튼 전체가 클릭되는 것을 방지하고 싶다면 기본을 auto로 두고 내부에서 처리 */
  pointer-events: auto;
}

/* ✅ 1. 콘텐츠 컨테이너 (여백 최적화) */
.header-utils .capsule-content {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  padding: 120px 60px 40px;
  box-sizing: border-box;
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.4s ease, transform 0.4s ease;
  transform: translateY(10px);
  z-index: 5;
}

.header-utils .hamburger.is-expanded .capsule-content {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
  transition-delay: 0.6s;
}

/* ✅ 2. 메인 리스트 및 애니메이션 */
.nav-list {
  list-style: none;
  padding: 0;
  margin: 0;
}

.nav-list li {
  margin-bottom: 50px;
  /* 서브 메뉴 클릭 영역 확보를 위해 간격 증대 */
  opacity: 0;
  transform: translateX(-30px);
  transition: all 1.8s cubic-bezier(0.22, 1, 0.36, 1);
}

.header-utils .hamburger.is-expanded .nav-list li {
  opacity: 1;
  transform: translateX(0);
}

/* 순차 등장 지연 */
.nav-list li:nth-child(1) {
  transition-delay: 1.2s;
}

.nav-list li:nth-child(2) {
  transition-delay: 2.4s;
}

.nav-list li:nth-child(3) {
  transition-delay: 3.6s;
}

.nav-list li:nth-child(4) {
  transition-delay: 4.8s;
}

.nav-list li:nth-child(5) {
  transition-delay: 5.0s;
}

/* ✅ 3. 메인 메뉴 스타일 및 호버 */
.nav-list>li>a {
  font-size: 2.4rem;
  font-weight: 800;
  color: #ffffff !important;
  display: inline-block;
  transition: color 0.3s ease, transform 0.3s ease;
  letter-spacing: -0.02em;
  margin-bottom: 8px;
}

.nav-list li:hover>a {
  color: #007AFF !important;
  transform: translateX(10px);
}

/* ✅ 4. 서브 리스트 디테일 (클릭 가능하게 수정) */
.sub-list {
  display: flex;
  flex-wrap: wrap;
  gap: 20px;
  /* 클릭 편의를 위해 간격 넓힘 */
  margin-top: 5px;
  padding-left: 2px;
}

.sub-list a,
.sub-list span {
  font-size: 0.95rem;
  color: rgba(255, 255, 255, 0.4);
  font-weight: 400;
  text-decoration: none;
  position: relative;
  padding-bottom: 4px;
  /* 언더라인 공간 */
  transition: color 0.3s ease, opacity 0.3s ease;
  cursor: pointer;
}

/* 서브 리스트 호버 효과: 언더라인 슥- 나타남 */
.sub-list a::after {
  content: "";
  position: absolute;
  bottom: 0;
  left: 0;
  width: 0;
  height: 1px;
  background-color: #007AFF;
  transition: width 0.3s ease;
}

.sub-list a:hover {
  color: #ffffff !important;
  opacity: 1;
}

.sub-list a:hover::after {
  width: 100%;
}

/* 구분선 (선택 사항: 점 대신 얇은 바) */
.sub-list a:not(:last-child)::before {
  content: "";
  position: absolute;
  right: -10px;
  top: 50%;
  transform: translateY(-50%);
  width: 1px;
  height: 10px;
  background: rgba(255, 255, 255, 0.1);
}

/* =================================================
   쫀득한 다이나믹 노치 모션
   ================================================= */
@keyframes notch-jelly {
  0% {
    transform: scaleX(1);
  }

  28% {
    transform: scaleX(1.06);
  }

  55% {
    transform: scaleX(0.985);
  }

  100% {
    transform: scaleX(1);
  }
}

/* 클릭할 때마다 JS에서 do-motion 붙여주면 실행 */
.header-utils .hamburger.is-expanded.do-motion::before {
  animation: notch-jelly 0.55s cubic-bezier(.2, .9, .2, 1);
}

/* =================================================
   메뉴 열림 시 X 아이콘 + hover 인터랙션
   ================================================= */

/* 기본 X 상태 */
html.is-gnb-collapsed .header-utils .hamburger .icon-trigger>span:nth-child(1) {
  transform: rotate(45deg);
}

html.is-gnb-collapsed .header-utils .hamburger .icon-trigger>span:nth-child(2) {
  transform: rotate(-45deg);
}


/* =================================================
   hero 영역 (화이트 버전)
   ================================================= */
.site-header.is-hero .header-utils .hamburger .icon-trigger>span {
  background: #fff;
}


.site-header.is-hero .header-utils .hamburger::after {
  color: #fff;
}

.site-header.is-hero .header-utils .hamburger::before {
  border-color: rgba(255, 255, 255, 0.85);
  box-shadow: 0 6px 14px rgba(255, 255, 255, 0.1);
}

/* =================================================
   모바일 대응
   ================================================= */
/* 모바일 기본값 설정도 보완 */
@media (max-width: 520px) {
  .header-utils .hamburger {
    --cap-w: 124px;
    --cap-extra: 16px;
  }
}

/* ✅ HERO에서도 무조건 헤더를 위로 숨기기 (is-fullnav-open이 같이 켜져도 이 규칙이 이김) */
html.is-gnb-collapsed .site-header,
html.is-gnb-collapsed.is-fullnav-open .site-header {
  transform: translate3d(0, calc(-1 * var(--header-h) - 10px), 0) !important;
  max-height: var(--header-h) !important;
  /* 커튼 100vh 열림 방지 */
}

#siteHeader.is-hero~.header-utils .hamburger .icon-trigger>span {
  background: #fff;
}

#siteHeader.is-hero~.header-utils .hamburger::after {
  color: #fff;
}

#siteHeader.is-hero~.header-utils .hamburger::before {
  border-color: rgba(255, 255, 255, .85);
}


html.is-gnb-collapsed .header-utils {
  pointer-events: auto;
}

/* ✅ 1. X 아이콘 옆에 CLOSE 문구 추가 */
html.is-gnb-collapsed .header-utils .hamburger.is-expanded .icon-trigger::after {
  content: "ESC";
  position: absolute;
  right: 45px;
  /* X 아이콘과의 간격 */
  top: 2.5%;
  transform: translateY(-50%);
  font-size: 11px;
  font-weight: 600;
  color: #fff;
  letter-spacing: 1px;
  opacity: 0.8;
  pointer-events: none;
  /* 문구 자체는 클릭 방해 안 함 */
}

/* ✅ 2. 문구와 아이콘을 포함한 전체 클릭 영역 확보 */
html.is-gnb-collapsed .header-utils .hamburger.is-expanded .icon-trigger {
  width: 100px !important;
  /* 문구까지 포함하도록 가로폭 확장 */
  height: 60px !important;
  top: -8px !important;
  right: -10px !important;

  display: flex !important;
  align-items: center;
  justify-content: flex-end;
  /* 우측 정렬 */
  padding-right: 12px;

  background: rgba(0, 0, 0, 0);
  /* 투명 면적 생성 */
  z-index: 100 !important;
  pointer-events: auto !important;
}

/* ✅ 3. 호버 시 문구와 아이콘 동시에 반응 */
html.is-gnb-collapsed .header-utils .hamburger.is-expanded .icon-trigger:hover::after {
  opacity: 1;
  color: #007AFF;
  /* 호버 시 문구 색상 변경 */
}

html.is-gnb-collapsed .header-utils .hamburger.is-expanded .icon-trigger:hover span {
  background: #007AFF !important;
  transform: scale(1.2) !important;
}

/* 개별 막대기 회전 상태 유지 */
html.is-gnb-collapsed .header-utils .hamburger.is-expanded .icon-trigger:hover span:nth-child(1) {
  transform: translateY(0) rotate(135deg) scale(1.2) !important;
}

html.is-gnb-collapsed .header-utils .hamburger.is-expanded .icon-trigger:hover span:nth-child(2) {
  transform: translateY(0) rotate(-135deg) scale(1.2) !important;
}

/* ---------------------------------------------------------
   ✅ [통합] 캡슐 메뉴 레이아웃 & 이미지 프리뷰 보정
   --------------------------------------------------------- */

/* 1. 콘텐츠 컨테이너: flex를 강제하여 좌우 배치를 준비 */
.header-utils .capsule-content {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  padding: 120px 60px 40px;
  box-sizing: border-box;
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.4s ease, transform 0.4s ease;
  transform: translateY(10px);
  z-index: 5;

  /* 레이아웃 버그 수정 핵심 */
  display: flex !important;
  align-items: center;
  justify-content: center;
}

/* 확장 시 노출 */
.header-utils .hamburger.is-expanded .capsule-content {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
  transition-delay: 0.3s;
}

/* 2. 메뉴와 프리뷰를 감싸는 래퍼: 가로 정렬(row) 강제 */
.menu-wrapper {
  display: flex !important;
  align-items: center;
  justify-content: flex-start;
  /* 왼쪽부터 정렬 */
  width: 100%;
  height: 100%;
  max-width: 1600px;
  margin: 0 auto;
  padding-left: 5%;
  /* 메뉴가 너무 벽에 붙지 않게 */
}

/* 3. 왼쪽 메뉴 리스트 */
.nav-list {
  flex: 0 0 500px;
  /* 메뉴 너비 고정 */
  z-index: 10;
}

.nav-list li {
  margin-bottom: 45px;
  opacity: 0;
  transform: translateX(-30px);
  transition: all 0.6s cubic-bezier(0.22, 1, 0.36, 1);
}

.header-utils .hamburger.is-expanded .nav-list li {
  opacity: 1;
  transform: translateX(0);
}

/* 순차 등장 지연 */
.nav-list li:nth-child(1) {
  transition-delay: 0.45s;
}

.nav-list li:nth-child(2) {
  transition-delay: 0.55s;
}

.nav-list li:nth-child(3) {
  transition-delay: 0.65s;
}

.nav-list li:nth-child(4) {
  transition-delay: 0.75s;
}

.nav-list li:nth-child(5) {
  transition-delay: 0.85s;
}

/* 메인 메뉴 링크 */
.nav-list>li>a {
  font-size: 2.6rem;
  font-weight: 800;
  color: #fff !important;
  display: inline-block;
  letter-spacing: -0.02em;
  transition: color 0.3s, transform 0.3s;
}

.nav-list li:hover>a {
  background: linear-gradient(90deg,
      #001A8E 0%,
      #0644A3 40%,
      #00A859 75%,
      #28B463 100%);

  /* 표준 속성 (에러 밑줄 방지용) */
  background-clip: text;

  /* 실제 작동을 위한 접두사 버전 (크롬, 사파리 등 대응) */
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;

  color: transparent !important;
  transform: translateX(15px);
  transition: all 0.4s ease;
}

.nav-list li a {
  display: inline-block;
  /* transform이 작동하려면 필요 */
  transition: all 0.4s ease;
}

/* 서브 리스트 링크 디테일 */
.sub-list {
  display: flex;
  flex-wrap: wrap;
  gap: 20px;
  margin-top: 10px;
}

.sub-list a {
  font-size: 0.95rem;
  color: rgba(255, 255, 255, 0.4);
  position: relative;
  padding-bottom: 4px;
  transition: color 0.3s;
}

.sub-list a::after {
  content: "";
  position: absolute;
  bottom: 0;
  left: 0;
  width: 0;
  height: 1px;
  background: #007AFF;
  transition: width 0.3s;
}

.sub-list a:hover {
  color: #fff !important;
}

.sub-list a:hover::after {
  width: 100%;
}

/* 4. 오른쪽 이미지 프리뷰 컨테이너 */
.nav-preview {
  position: absolute;
  top: 0;
  right: 0;
  width: 50%;
  /* 화면의 절반 차지 */
  height: 100%;
  /* 전체 높이 */
  overflow: hidden;
  background: #111;
  /* 왼쪽 경계선을 부드럽게 마스킹 (이게 세련미의 핵심) */
  -webkit-mask-image: linear-gradient(to right, transparent 0%, black 20%);
  mask-image: linear-gradient(to right, transparent 0%, black 20%);
}

.nav-watermark {
  position: absolute;
  /* 오른쪽 끝에 붙이되, 폰트의 삐침이 잘리지 않도록 아주 미세한 여백(1vw)만 줍니다 */
  right: 1vw;
  top: 0;
  height: 100%;

  /* 세로 쓰기 모드로 변경하여 회전 오차 제거 */
  writing-mode: vertical-rl;
  display: flex;
  align-items: center;
  /* 가로축 중앙 (오른쪽 라인 정렬) */
  justify-content: center;
  /* 세로축 중앙 */

  font-family: var(--font-display);
  font-size: 10vw;
  /* 너무 크면 여백이 죽으니 10vw 정도로 살짝 줄여보세요 */
  font-weight: 900;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  /* 자간을 넓히면 더 고급스러워집니다 */

  /* 각인 효과: 배경과 섞이게 */
  color: rgba(255, 255, 255, 0.03);
  -webkit-text-stroke: 1px rgba(255, 255, 255, 0.08);

  pointer-events: none;
  z-index: 5;
  user-select: none;
}

.preview-item {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-size: cover;
  background-position: center;
  opacity: 0;
  filter: blur(20px);
  /* 나타나기 전엔 흐릿하게 */
  transform: scale(1.1);
  transition: opacity 0.8s ease, transform 1.2s cubic-bezier(0.16, 1, 0.3, 1), filter 0.8s ease;
}

/* 활성화 상태: 선명해지며 나타남 */
.preview-item.active {
  opacity: 0.5 !important;
  /* 텍스트 가독성을 위해 0.5 정도 추천 */
  filter: blur(0px);
  transform: scale(1);
  z-index: 2;
}

/* 첫 번째 이미지 기본값 (은은하게 배경 역할) */
.preview-item:first-child {
  opacity: 0.2;
}

/* 가독성 오버레이 */
.nav-preview::after {
  content: "";
  position: absolute;
  inset: 0;
  /* 왼쪽에서 오는 어둠으로 글자가 잘 보이게 함 */
  background: linear-gradient(90deg, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 0) 50%);
  z-index: 3;
  pointer-events: none;
}

/* 5. 이미지 경로 (정확한 확장자 확인 필수: .png) */
.img-about {
  background-image: url('../image/nav/about.png');
}

.img-strength {
  background-image: url('../image/nav/strength.png');
}

.img-services {
  background-image: url('../image/nav/services.png');
}

.img-projects {
  background-image: url('../image/nav/projects.png');
}

.img-contact {
  background-image: url('../image/nav/contact.png');
}

/* 6. 반응형 (태블릿 이하에서는 이미지를 숨기고 메뉴를 중앙으로) */
@media (max-width: 1024px) {
  .menu-wrapper {
    flex-direction: column !important;
    justify-content: flex-start;
  }

  .nav-preview {
    display: none !important;
  }

  .nav-list {
    flex: 0 0 100%;
    width: 100%;
  }

  .nav-list>li>a {
    font-size: 2rem;
  }

}

/* =========================================================
   GNB & Dynamic Island (CLEAN FIX)
   - 디자인: 기존 스타일 유지 (그라데이션, 폰트, 유리 효과)
   - 기능: 서브 메뉴 노출 문제 해결 (기준점 재설정)
   ========================================================= */

/* 1. GNB 컨테이너 */
.gnb {
  flex: 1;
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100%;
}

/* 2. 캡슐 (기준점 역할) */
.gnb-capsule {
  position: absolute;
  top: 30px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 999;

  display: flex;
  align-items: center;
  justify-content: flex-start;
  /* 상단 정렬 */
  flex-direction: column;

  /* 초기 크기 및 스타일 */
  padding-top: 5px;
  height: 50px;
  width: auto;
  border-radius: 999px;
  overflow: hidden;
  /* 넘치는 내용 숨김 (확장 시에는 내용 보임) */

  /* 기본 유리 효과 (투명) */
  background-color: rgba(255, 255, 255, 0);
  border: 1px solid rgba(255, 255, 255, 0);
  box-shadow: none;
  backdrop-filter: blur(0px);
  -webkit-backdrop-filter: blur(0px);

  /* 애니메이션 설정 */
  transition:
    background-color 0.4s ease,
    border-color 0.4s ease,
    box-shadow 0.4s ease,
    backdrop-filter 0.4s ease;

  will-change: width, height, padding, border-radius;
}

/* 3. 메뉴 리스트 & 아이템 */
.gnb-list {
  display: flex;
  align-items: center;
  margin: 0;
  padding: 0;
  gap: 20px;
  width: max-content;
}

.gnb-item {
  /* [핵심] static으로 설정하여 자식(서브메뉴)이 캡슐을 기준으로 위치를 잡게 함 */
  position: static !important;
}

/* 4. 메인 링크 스타일 (기존 디자인 유지) */
.gnb-link {
  font: inherit;
  border: 0;
  background: transparent;
  cursor: pointer;
  font-weight: 700;
  padding: 10px 4px;
  font-size: 18px;
  letter-spacing: .02em;
  position: relative;
  color: currentColor;
  /* 부모 색상 상속 */
  opacity: .82;
  display: inline-block;

  transition:
    opacity 0.3s ease,
    transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1),
    letter-spacing 0.5s cubic-bezier(0.25, 0.8, 0.25, 1),
    color 0.3s ease;

  z-index: 20;
  /* 캡슐보다 위 */
}

/* 호버 시 그라데이션 텍스트 */
.gnb-link:hover,
.gnb-item:hover .gnb-link,
.gnb-item.is-active .gnb-link {
  opacity: 1;
  background: linear-gradient(90deg, #001A8E 0%, #0644A3 40%, #00A859 75%, #28B463 100%);
  background-clip: text;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  color: transparent !important;
  transform: translateY(-3px);
}

/* 밑줄 애니메이션 */
.gnb-link::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 4px;
  height: 2px;
  background: linear-gradient(90deg, #001A8E, #00A859);
  opacity: 1;
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 320ms cubic-bezier(.22, 1, .36, 1);
}

.gnb-link:hover::after,
.gnb-link:focus-visible::after,
.gnb-item.is-active .gnb-link::after {
  transform: scaleX(1);
}

/* 5. 서브 메뉴 컨테이너 (위치 수정됨) */
.gnb-detail {
  display: none;
  /* JS가 block/flex로 제어 */
  position: absolute;

  /* 캡슐 상단 기준 위치 */
  top: 70px;

  /* 캡슐 중앙 정렬 */
  left: 50%;
  transform: translateX(-50%);

  /* [핵심] 너비를 넉넉하게 고정하여 내용이 잘리지 않게 함 */
  width: 460px;

  text-align: center;
  opacity: 0;
  pointer-events: auto;
  z-index: 10;
}

/* JS 활성화 보조 */
.gnb-item.is-active .gnb-detail {
  display: block;
}

/* 1. 가장 왼쪽 (첫 번째 아이템): 왼쪽 정렬 */
.gnb-item:first-child .gnb-detail {
  left: 40px !important;
  /* 캡슐 왼쪽 패딩에 맞춤 */
  transform: none !important;
  text-align: left;
}

.gnb-item:first-child .gnb-sub-list {
  justify-content: flex-start;
}

/* 2. 중간 (2, 3, 4번째 아이템): 중앙 정렬 */
.gnb-item:not(:first-child):not(:last-child) .gnb-detail {
  left: 50% !important;
  transform: translateX(-50%) !important;
  text-align: center;
}

.gnb-item:not(:first-child):not(:last-child) .gnb-sub-list {
  justify-content: center;
}

/* 3. 가장 오른쪽 (마지막 아이템): 오른쪽 정렬 */
.gnb-item:last-child .gnb-detail {
  left: auto !important;
  right: 40px !important;
  /* 캡슐 오른쪽 패딩에 맞춤 */
  transform: none !important;
  text-align: right;
}

.gnb-item:last-child .gnb-sub-list {
  justify-content: flex-end;
}

/* 서브 리스트 (세로/가로 배치) */
.gnb-sub-list {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 14px;
  list-style: none;
  padding: 0;
  margin: 0;
}

.gnb-sub-list.is-two-col {
  flex-direction: row;
  gap: 40px;
  width: 100%;
  justify-content: center;
}

/* 서브 링크 스타일 */
.gnb-sub-link {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  font-size: 16px;
  font-weight: 500;
  text-decoration: none;

  /* 기본: 흰색 (Hero 모드 기준) */
  color: #FFFFFF;
  white-space: nowrap;
  transition: all 0.3s ease;
}

.gnb-sub-link .sub-ko {
  font-size: 14px;
  font-weight: 400;
  color: rgba(255, 255, 255, 0.5);
  margin-top: 1px;
  transition: color 0.3s ease;
}

.gnb-sub-link:hover {
  transform: translateY(-2px);
  color: #fff;
}

.gnb-sub-link:hover .sub-ko {
  color: rgba(255, 255, 255, 0.9);
}


/* =========================================================
   [테마 & 상태별 색상] - 중복 제거 및 통합
   ========================================================= */

/* 1. Hero Mode (어두운 배경) */
.site-header.is-hero .gnb-capsule.is-active,
.site-header.is-hero .gnb-capsule.is-expanded,
.site-header:not(.is-light) .gnb-capsule.is-active,
.site-header:not(.is-light) .gnb-capsule.is-expanded {
  background-color: rgba(255, 255, 255, 0.15);
  /* 반투명 흰색 */
  border-color: rgba(255, 255, 255, 0.2);
  box-shadow: 0 8px 30px rgba(0, 0, 0, 0.1);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
}

/* 2. Light Mode (밝은 배경) */
.site-header.is-light .gnb-capsule.is-active,
.site-header.is-light .gnb-capsule.is-expanded {
  background-color: rgba(0, 0, 0, 0.06);
  /* 연한 검정 */
  border-color: rgba(0, 0, 0, 0.1);
  box-shadow: 0 8px 30px rgba(0, 0, 0, 0.08);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
}

/* Light Mode일 때 서브 링크 글자색 반전 (검정) */
.site-header.is-light .gnb-sub-link {
  color: #111;
}

.site-header.is-light .gnb-sub-link .sub-ko {
  color: rgba(0, 0, 0, 0.5);
}

.site-header.is-light .gnb-sub-link:hover {
  color: #000;
}

.site-header.is-light .gnb-sub-link:hover .sub-ko {
  color: rgba(0, 0, 0, 0.8);
}

.gnb-sub-list li {
  display: flex;
  align-items: center;
}

/* 첫 번째를 포함한 모든 li 앞에 dot 추가 */
.gnb-sub-list li::before {
  content: "";
  display: inline-block;
  width: 3px;
  height: 3px;
  background-color: currentColor;
  /* 현재 텍스트 색상 상속 */
  border-radius: 50%;
  opacity: 0.4;
  margin-right: 12px;
  /* 점과 텍스트 사이의 간격 */
  flex-shrink: 0;
}

/* main.css */

@media (max-width: 980px) {

  /* 모바일에서 GNB 캡슐 전체를 숨김 처리 */
  .gnb {
    display: none !important;
  }

  /* 또는 리스트만 숨기고 싶을 경우 */
  /* .gnb-list {
    display: none !important;
  }
  .gnb-capsule {
    display: none !important;
  }
  */
}

/* =========================================================
   [Z-Index Fix] Mobile Shutter Layer Priority
   - Intro 섹션(z-index: 5)이 KV 섹션(z-index: 1)을 덮는 문제 해결
   - 모바일에서만 KV 섹션을 최상단으로 끌어올림
   ========================================================= */

@media (max-width: 1024px) {

  /* 1. KV 섹션의 레이어 순서를 Intro(5)보다 높게(20) 설정 */
  /* 이제 Intro 섹션이 2px 올라와도 셔터 '뒤'로 숨게 됩니다 */
  .section--kv {
    z-index: 30 !important;
    position: relative;
    /* z-index 적용을 위해 필수 */
  }

  /* 2. 셔터 높이 및 여백 설정 (주소창 가림 방지 유지) */
  .kv-shutter {
    height: 100vh;
    height: 102dvh;
    /* 주소창 제외 실제 높이 */
    max-height: none;
    bottom: 0;
  }

  /* 3. 내부 스크롤 및 하단 안전 여백 */
  .kv-shutter__inner {
    display: flex !important;
    flex-direction: column !important;
    justify-content: flex-start !important;

    overflow-y: auto !important;
    height: 100% !important;

    /* 하단 여백: 홈바 영역 + 150px (충분한 공간) */
    padding-bottom: calc(150px + env(safe-area-inset-bottom)) !important;

    box-sizing: border-box !important;
    -webkit-overflow-scrolling: touch;
  }

  /* 4. 터치/스크롤이 가능하도록 포인터 이벤트 강제 활성화 */
  .kv-shutter,
  .kv-shutter__inner {
    pointer-events: auto !important;
  }

  /* 5. 태그 영역 찌그러짐 방지 */
  .kv-shutter__footer {
    flex-shrink: 0 !important;
    margin-top: auto;
    margin-bottom: 30px;
  }
}

/* =========================================================
   [Mobile UI Fix] Hide Scrollbars
   - 모바일에서 커스텀 스크롤바 및 내부 스크롤바 숨김 (기능은 유지)
   ========================================================= */

@media (max-width: 1024px) {

  /* 1. 우측 커스텀 스크롤바(게이지) 숨김 */
  .m3-scroll-container {
    display: none !important;
  }

  /* 2. 셔터 내부 스크롤바 숨김 (크롬, 사파리, 엣지) */
  .kv-shutter__inner::-webkit-scrollbar {
    display: none;
    width: 0;
    height: 0;
  }

  /* 3. 셔터 내부 스크롤바 숨김 (파이어폭스, IE) */
  .kv-shutter__inner {
    scrollbar-width: none;
    /* Firefox */
    -ms-overflow-style: none;
    /* IE/Edge */
  }
}

.section--tech {
  padding: 160px 0;
  /* 뉴스 섹션과 동일한 여백 */
  background: #fff;
  border-bottom: 1px solid rgba(0, 0, 0, 0.05);
  /* 섹션 구분선 */
}

/* 헤더 스타일 (뉴스 섹션 참조) */
.section--tech__header {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  margin-bottom: 80px;
  padding-bottom: 20px;
  border-bottom: 1px solid rgba(0, 0, 0, 0.1);
}

.section--tech__header .title {
  font-size: clamp(40px, 5vw, 80px);
  /* 반응형 폰트 */
  line-height: 1;
  color: #000;
  margin: 0;
}

.section--tech__header .desc {
  text-align: right;
  color: #666;
  max-width: 400px;
  margin: 0;
}

/* 그리드 레이아웃 */
.tech-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  /* 3열 배치 */
  gap: 24px;
}

/* 카드 스타일 (파트너/뉴스 아이템 스타일 계승) */
.tech-card {
  background: #fff;
  border: 1px solid rgba(0, 0, 0, 0.08);
  /* 얇은 테두리 */
  border-radius: 24px;
  /* 파트너 아이템과 유사한 둥글기 */
  padding: 40px 32px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  min-height: 380px;
  /* 높이 확보 */
  transition: all 0.4s cubic-bezier(0.25, 1, 0.5, 1);
  position: relative;
  overflow: hidden;
}

/* 호버 효과: 위로 뜨면서 그림자 */
.tech-card:hover {
  transform: translateY(-10px);
  box-shadow: 0 20px 40px rgba(0, 0, 0, 0.08);
  border-color: transparent;
}

/* 카드 내부 타이포그래피 */
.tech-tag {
  font-size: 13px;
  font-weight: 700;
  color: #001A8E;
  /* 브랜드 블루 */
  text-transform: uppercase;
  letter-spacing: 0.05em;
  margin-bottom: 12px;
  display: block;
}

.card-tit {
  font-size: 28px;
  font-weight: 700;
  color: #111;
  margin: 0 0 16px 0;
  font-family: var(--font-display);
  letter-spacing: -0.02em;
}

.card-desc {
  font-size: 16px;
  color: #666;
  line-height: 1.6;
  margin: 0;
  word-break: keep-all;
}

/* 비주얼 영역 (카드 하단) */
.card-visual {
  margin-top: 40px;
  height: 100px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #f9f9fb;
  /* 아주 연한 회색 박스 */
  border-radius: 16px;
}

/* 1. 비교 아이콘 스타일 */
.compare-row {
  display: flex;
  align-items: center;
  gap: 20px;
}

.cp-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  color: #888;
  font-weight: 600;
}

.cp-icon {
  width: 36px;
  height: 36px;
  border-radius: 50%;
}

.cp-icon.spray {
  background: radial-gradient(circle, #ccc 2px, transparent 3px);
  background-size: 6px 6px;
  /* 점박이 패턴 */
  border: 1px solid #ddd;
}

.cp-icon.film {
  background: #00A859;
  /* 브랜드 그린 */
  box-shadow: 0 4px 10px rgba(0, 168, 89, 0.3);
}

.cp-arrow {
  font-size: 12px;
  color: #bbb;
  font-weight: 700;
}

/* 2. 데이터 스타일 */
.data-display {
  display: flex;
  align-items: baseline;
  color: #001A8E;
  /* 브랜드 블루 */
}

.big-num {
  font-size: 48px;
  font-weight: 800;
  letter-spacing: -0.02em;
}

.unit {
  font-size: 24px;
  font-weight: 700;
  margin-left: 2px;
}

.label {
  font-size: 12px;
  color: #888;
  margin-left: 8px;
  font-weight: 600;
}

/* 3. 라인 스타일 */
.line-display {
  width: 100%;
  padding: 0 30px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
}

.line-track {
  width: 100%;
  height: 4px;
  background: #ddd;
  border-radius: 2px;
  position: relative;
  overflow: hidden;
}

.line-car {
  position: absolute;
  top: 0;
  left: 0;
  width: 30%;
  height: 100%;
  background: #00A859;
  border-radius: 2px;
  animation: moveLine 2s infinite ease-in-out;
}

.line-car.delay {
  animation-delay: 1s;
  /* 두 번째 라인 느낌 */
  opacity: 0.5;
}

@keyframes moveLine {
  0% {
    left: -30%;
  }

  100% {
    left: 100%;
  }
}

/* 모바일 반응형 */
@media (max-width: 980px) {
  .section--tech {
    padding: 100px 0;
  }

  .section--tech__header {
    flex-direction: column;
    align-items: flex-start;
    gap: 20px;
    border-bottom: none;
    margin-bottom: 40px;
  }

  .section--tech__header .desc {
    text-align: left;
    max-width: 100%;
  }

  .tech-grid {
    grid-template-columns: 1fr;
    /* 1열로 변경 */
  }

  .tech-card {
    min-height: auto;
  }
}

.section--cert-gallery {
  padding: 140px 0;
  background-color: #f9f9fb;
  border-bottom: 1px solid rgba(0, 0, 0, 0.05);
}

/* 헤더 스타일 (기존 통일) */
.cert-header {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  margin-bottom: 60px;
  padding-bottom: 20px;
  border-bottom: 1px solid rgba(0, 0, 0, 0.1);
}

.cert-header .title {
  font-size: clamp(40px, 5vw, 80px);
  color: #000;
  margin: 0;
}

.cert-header .desc {
  text-align: right;
  color: #666;
  max-width: 400px;
  margin: 0;
  font-size: 16px;
  line-height: 1.6;
}

/* 하이브리드 그리드 레이아웃 */
.cert-grid-hybrid {
  display: grid;
  grid-template-columns: 1fr 1.2fr 1fr;
  /* 중앙 사진 카드를 조금 더 넓게 */
  gap: 24px;
  align-items: stretch;
  /* 높이 맞춤 */
}

/* 공통 카드 스타일 */
.cert-card {
  background: #fff;
  border-radius: 24px;
  border: 1px solid rgba(0, 0, 0, 0.08);
  overflow: hidden;
  /* 사진 넘침 방지 */
  transition: transform 0.3s ease, box-shadow 0.3s ease;
}

.cert-card:hover {
  transform: translateY(-8px);
  box-shadow: 0 20px 40px rgba(0, 0, 0, 0.08);
}

/* 1. 요약 카드 (Summary) */
.summary-card {
  padding: 36px 30px;
  display: flex;
  flex-direction: column;
}

.badge-group {
  display: flex;
  gap: 10px;
  margin-bottom: 24px;
}

.cert-badge {
  padding: 8px 16px;
  border-radius: 12px;
  font-weight: 800;
  font-size: 16px;
  color: #fff;
}

.cert-badge.blue {
  background: #001A8E;
}

.cert-badge.green {
  background: #00A859;
}

.summary-tit {
  font-size: 28px;
  font-weight: 700;
  margin: 0 0 16px 0;
  line-height: 1.2;
}

.summary-desc {
  font-size: 15px;
  color: #666;
  line-height: 1.6;
  margin-bottom: 30px;
}

.summary-meta {
  margin-top: auto;
}

.verified-mark {
  color: #00A859;
  font-weight: 700;
  font-size: 14px;
}

/* 2. 실물 사진 카드 (Photo Card) - 핵심 */
.photo-card {
  position: relative;
  background-size: cover;
  background-position: center;
  min-height: 400px;
  /* 사진이 잘 보이도록 높이 확보 */
  border: none;
  /* 사진 자체가 테두리 역할 */
}

/* 사진을 좀 더 느낌있게 만드는 오버레이 */
.photo-overlay {
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  padding: 24px;
  background: linear-gradient(to top, rgba(0, 0, 0, 0.7) 0%, transparent 100%);
  /* 하단 그라데이션 */
  color: #fff;
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
}

.photo-caption {
  display: flex;
  align-items: center;
  gap: 8px;
}

.icon-camera {
  font-size: 18px;
}

.caption-text {
  font-weight: 600;
  font-size: 15px;
}

.zoom-hint {
  opacity: 0;
  transform: scale(0.8);
  transition: all 0.3s ease;
  background: rgba(255, 255, 255, 0.2);
  padding: 8px;
  border-radius: 50%;
  backdrop-filter: blur(4px);
}

.photo-card:hover .zoom-hint {
  opacity: 1;
  transform: scale(1);
}

.photo-link-full {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 10;
}


/* 3. 리스트 카드 (List Card) - 기존 동일 */
.list-card {
  padding: 36px 30px;
}

.list-header {
  margin-bottom: 30px;
  padding-bottom: 20px;
  border-bottom: 1px solid rgba(0, 0, 0, 0.06);
}

.list-tit {
  font-size: 20px;
  font-weight: 700;
  margin: 0 0 6px 0;
}

.list-sub {
  font-size: 14px;
  color: #888;
  margin: 0;
}

.std-check-list {
  display: flex;
  flex-direction: column;
  gap: 20px;
}

.std-item {
  display: flex;
  align-items: flex-start;
  gap: 14px;
}

.check-icon {
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background: rgba(0, 26, 142, 0.1);
  color: #001A8E;
  flex-shrink: 0;
  position: relative;
  margin-top: 2px;
}

.check-icon::after {
  content: "";
  position: absolute;
  top: 45%;
  left: 50%;
  width: 5px;
  height: 9px;
  border: solid #001A8E;
  border-width: 0 2px 2px 0;
  transform: translate(-50%, -60%) rotate(45deg);
}

.std-info strong {
  font-size: 16px;
  color: #111;
  display: block;
  margin-bottom: 2px;
}

.std-info span {
  font-size: 13px;
  color: #666;
}

/* 모바일 반응형 */
@media (max-width: 980px) {
  .cert-header {
    flex-direction: column;
    align-items: flex-start;
    gap: 20px;
  }

  .cert-header .desc {
    text-align: left;
  }

  .cert-grid-hybrid {
    grid-template-columns: 1fr;
    /* 1열로 변경 */
  }

  .photo-card {
    min-height: 300px;
  }

  /* 모바일에서 사진 높이 조정 */
}

.section--quality-total {
  padding: 140px 0;
  background-color: #f9f9fb;
  /* 전체 배경: 아주 연한 회색 */
  border-bottom: 1px solid rgba(0, 0, 0, 0.05);
}

/* --- [공통 헤더] --- */
.cert-header {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  margin-bottom: 60px;
  padding-bottom: 20px;
  border-bottom: 1px solid rgba(0, 0, 0, 0.1);
}

.cert-header .title {
  font-size: clamp(36px, 5vw, 64px);
  color: #000;
  margin: 0;
}

.cert-header .desc {
  text-align: right;
  color: #666;
  max-width: 450px;
  margin: 0;
  font-size: 16px;
  line-height: 1.6;
}


/* --- [PART 1: 카드 그리드] --- */
.cert-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
  margin-bottom: 80px;
  /* 슬라이더와의 간격 */
}

.cert-card {
  background: #fff;
  border-radius: 20px;
  padding: 32px 28px;
  border: 1px solid rgba(0, 0, 0, 0.06);
  display: flex;
  flex-direction: column;
  transition: transform 0.3s ease, box-shadow 0.3s ease;
  min-height: 300px;
}

.cert-card:hover {
  transform: translateY(-8px);
  box-shadow: 0 15px 30px rgba(0, 0, 0, 0.06);
  border-color: transparent;
}

.card-top-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 20px;
}

.cert-badge {
  padding: 6px 14px;
  border-radius: 8px;
  font-weight: 800;
  font-size: 16px;
  color: #fff;
}

.cert-badge.blue {
  background: #001A8E;
  box-shadow: 0 4px 10px rgba(0, 26, 142, 0.2);
}

.cert-badge.green {
  background: #00A859;
  box-shadow: 0 4px 10px rgba(0, 168, 89, 0.2);
}

.cert-year {
  font-size: 13px;
  color: #aaa;
  font-weight: 500;
}

.cert-label {
  font-size: 12px;
  font-weight: 700;
  color: #888;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  display: block;
  margin-bottom: 8px;
}

.cert-name {
  font-size: 28px;
  font-weight: 700;
  color: #111;
  margin: 0 0 10px 0;
  letter-spacing: -0.02em;
}

.cert-desc {
  font-size: 15px;
  color: #666;
  line-height: 1.5;
  margin: 0;
  word-break: keep-all;
}

.cert-status {
  margin-top: auto;
  padding-top: 24px;
  font-size: 13px;
  font-weight: 600;
  color: #111;
  display: flex;
  align-items: center;
  gap: 6px;
}

.status-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: #00A859;
  box-shadow: 0 0 0 2px rgba(0, 168, 89, 0.15);
}


/* 리스트 카드 스타일 */
.list-header {
  margin-bottom: 24px;
  padding-bottom: 16px;
  border-bottom: 1px solid rgba(0, 0, 0, 0.06);
}

.list-tit {
  font-size: 18px;
  font-weight: 700;
  color: #111;
  margin: 0 0 4px 0;
}

.list-sub {
  font-size: 13px;
  color: #888;
  margin: 0;
}

.std-check-list {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.std-item {
  display: flex;
  align-items: flex-start;
  gap: 12px;
}

.check-icon {
  width: 18px;
  height: 18px;
  border-radius: 50%;
  background: rgba(0, 26, 142, 0.1);
  color: #001A8E;
  flex-shrink: 0;
  position: relative;
  margin-top: 2px;
}

.check-icon::after {
  content: "";
  position: absolute;
  top: 45%;
  left: 50%;
  width: 4px;
  height: 8px;
  border: solid #001A8E;
  border-width: 0 2px 2px 0;
  transform: translate(-50%, -60%) rotate(45deg);
}

.std-info strong {
  font-size: 15px;
  color: #111;
  display: block;
  margin-bottom: 2px;
}

.std-info span {
  font-size: 13px;
  color: #666;
}


/* --- [구분선] --- */
.cert-divider {
  display: flex;
  align-items: center;
  gap: 20px;
  margin-bottom: 40px;
  opacity: 0.6;
}

.divider-text {
  font-size: 12px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: #888;
  white-space: nowrap;
}

.divider-line {
  width: 100%;
  height: 1px;
  background: #ddd;
}


/* --- [PART 2: 슬라이더] --- */
.cert-swiper-wrap {
  width: 100%;
  padding-bottom: 30px;
}

.cert-swiper {
  overflow: visible;
}

.cert-frame {
  background: #fff;
  border: 1px solid rgba(0, 0, 0, 0.08);
  border-radius: 12px;
  padding: 12px;
  transition: all 0.3s ease;
  width: 100%;
  max-width: 280px;
  margin: 0 auto;
}

.cert-frame:hover {
  transform: translateY(-5px);
  box-shadow: 0 10px 20px rgba(0, 0, 0, 0.08);
}

.cert-frame.highlight {
  border-color: rgba(0, 26, 142, 0.2);
  background: rgba(0, 26, 142, 0.02);
}

.cert-img-box {
  width: 100%;
  aspect-ratio: 1 / 1.414;
  background: #f0f0f0;
  border-radius: 6px;
  overflow: hidden;
  margin-bottom: 12px;
  border: 1px solid rgba(0, 0, 0, 0.05);
}

.cert-img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  background: #fff;
}

.cert-info {
  text-align: center;
}

.cert-name-s {
  font-size: 16px;
  font-weight: 700;
  color: #111;
  margin: 0 0 4px 0;
}

.cert-sub-s {
  font-size: 12px;
  color: #888;
  margin: 0;
}

/* 네비게이션 버튼 미세조정 */
.swiper-button-next,
.swiper-button-prev {
  width: 36px;
  height: 36px;
  background: #fff;
  border-radius: 50%;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}

.swiper-button-next::after,
.swiper-button-prev::after {
  font-size: 14px;
  color: #333;
}


/* --- [모바일 대응] --- */
@media (max-width: 980px) {
  .cert-header {
    flex-direction: column;
    align-items: flex-start;
    gap: 20px;
  }

  .cert-header .desc {
    text-align: left;
  }

  .cert-grid {
    grid-template-columns: 1fr;
    gap: 16px;
    margin-bottom: 50px;
  }

  .cert-card {
    min-height: auto;
  }
}

@media (max-width: 1024px) {

  html.is-gnb-collapsed,
  html.is-gnb-collapsed body {
    overflow: hidden !important;
    touch-action: none !important;
    height: 100dvh !important;
  }

  .header-utils .hamburger.is-expanded {
    overflow-y: auto !important;
    overflow-x: hidden !important;
    -webkit-overflow-scrolling: touch !important;
    pointer-events: auto !important;
    overscroll-behavior: contain;
    /* 스크롤 튕김 방지 */
  }

  .header-utils .hamburger.is-expanded .capsule-content {
    position: relative !important;
    height: auto !important;
    min-height: 100% !important;
    display: block !important;
    padding: 80px 30px 60px !important;
    overflow: visible !important;
  }

  .header-utils .menu-wrapper {
    display: block !important;
    height: auto !important;
    padding-bottom: 40px !important;
  }
}