@charset "utf-8";

/* ============================
   공통 전역 커스텀 CSS
============================ */

:root {
  /* ── 색상 ── */
  --main-color: #172a88; /* 메인 강조 — 폰트·활성 상태 */
  --sub-color01: #eeeeee; /* 배경 */
  --sub-color02: #d3e5ff; /* 배경 */
  --sub-color03: #f8f7f3; /* 배경 — [사이트] 컬러칩 외, 직전 값 유지 */
  --sub-color04: #333333; /* 서브 */
  --gray-color01: #777777; /* 회색 텍스트 */
  --gray-color02: #777777; /* 보더 */
  --gray-color03: #bbbbbb; /* 아이콘 — [사이트] 컬러칩 외, 직전 값 유지 */
  --gray-color04: #b7b3ad; /* 회색 텍스트 2 — 연한 보조 문구 / [사이트] 컬러칩 외, 직전 값 유지 */
  --white-color: #fff;
  --one-txt-color: #333333;

  /* ── 레이아웃 ── */
  --one-layout: 1290px; /* [사이트] 팀 기본 1200 → 시안 콘텐츠 폭 */
  --one-layout-md: 1400px;
  --one-layout-lg: 1680px;
  --one-outer-layout: 1920px;

  /* ── 서브(브랜드) 서체 ──
   * .sub-ft 클래스가 참조한다. @font-face 는 font.css
   * 이름은 font.css 의 font-family 와 반드시 일치시킬 것
   * 자간은 서체마다 다르므로 함께 토큰으로 둔다
   */
  --one-sub-ft: serif;
  --one-sub-ft-ls: -0.05em;

  /* ── 타이포그래피 — 크기 ──
   * [사이트] 팀 기본 48/40/32/24/18 → 서체에 맞춰 조정 (caption 이하는 유지)
   *          p-tit 은 팀 기본 24 에서 26 으로 한 단계 더 올림
   */
  --one-hd1: 50px;
  --one-hd2: 44px;
  --one-hd3: 36px;
  --one-p-tit: 26px;
  --one-body: 19px;
  --one-caption: 15px;
  --one-m-footer: 13px;
  --one-m-copy: 11px;

  /* ── 타이포그래피 — 줄간격 ──
   * 전체 기본값: --one-lh-r (1.6)
   * 1.3이 필요한 요소만 .lh-lg 클래스를 추가해 개별 적용
   */
  --one-lh-r: 1.6;
  --one-lh-lg: 1.3;

  /* ── 섹션·컨테이너 간 여백 ── */
  --one-space-xl: 120px;
  --one-space-lg: 100px;
  --one-space-r: 80px;
  --one-space-s: 48px;
  --one-space-safe: 16px; /* 섹션 좌우 안전 패딩 고정값 — 반응형 변경 금지 */

  /* ── 요소 간 간격 ── */
  --one-gap-xl: 32px;
  --one-gap-lg: 24px;
  --one-gap-r: 16px;
  --one-gap-sm: 8px;
  --one-gap-xs: 4px; /* 최소 간격 — 리스트 항목 하단 여백 등 / 반응형 변경 금지 */

  /* ── 아이콘 크기 ──
   * width 기준. height 는 auto (비율 유지)
   * s  : 인라인 텍스트 옆, 뱃지 내부
   * r  : 버튼·입력 필드 기본 아이콘
   * l  : 카드·리스트·툴바 아이콘
   * xl : 섹션 포인트·빈 상태(Empty State) 아이콘
   */
  --one-icon-s: 16px;
  --one-icon-r: 20px;
  --one-icon-l: 24px;
  --one-icon-xl: 32px;

  /* ── z-index ──
   * 부모 토큰 사이값 — 헤더 100 / 드롭다운 200 / 햄버거 300 / 모달 400
   */
  --one-z-quick: 250;
}

/* ============================
   전역 기본 스타일
============================ */

/* 드래그 선택 텍스트 */
::selection {
  background-color: var(--main-color);
  color: var(--white-color);
}
::-moz-selection {
  background-color: var(--main-color);
  color: var(--white-color);
}

/* ============================
   레이아웃
   * .wrap-max    : 섹션 전체 화면 최대 너비 제한
   * .section     : 섹션 기본 래퍼 — 좌우 safe 패딩 필수, 상하 0
   * .x-sf        : .section 없이 좌우 safe 패딩만 필요할 때
   * .con-inner   : 기본 콘텐츠 영역 — 상하 여백만, 좌우 패딩 없음
   * .con-inner-md: 중간 콘텐츠 영역 — 상하 여백만, 좌우 패딩 없음
   * .con-inner-lg: 와이드 콘텐츠 영역 — 상하 여백만, 좌우 패딩 없음
============================ */

.wrap-max {
  max-width: var(--one-outer-layout);
  width: 100%;
  margin: 0 auto;
}

.section {
  position: relative;
  padding: 0 var(--one-space-safe); /* 좌우 safe 패딩 필수 */
}

.x-sf {
  padding-right: var(--one-space-safe);
  padding-left: var(--one-space-safe);
}

.con-inner {
  position: relative;
  width: 100%;
  max-width: var(--one-layout);
  margin: 0 auto;
  padding: var(--one-space-lg) 0; /* 상하 여백만 */
}

.con-inner-md {
  position: relative;
  width: 100%;
  max-width: var(--one-layout-md);
  margin: 0 auto;
  padding: var(--one-space-lg) 0; /* 상하 여백만 */
}

.con-inner-lg {
  position: relative;
  width: 100%;
  max-width: var(--one-layout-lg);
  margin: 0 auto;
  padding: var(--one-space-lg) 0; /* 상하 여백만 */
}

/* [사이트] display 는 팀 원본 inline-block → block
   이미지 대부분이 카드·배경·인물컷이라 inline 여백(3~4px)을 매번 지우고 있었다.
   글줄에 들어가는 아이콘만 .icon-* / .lst-*-ico 에서 inline-block 으로 되돌린다 */
section img,
.section img {
  display: block;
  width: 100%;
  height: auto;
}

/* Flex 유틸리티 */
.f-row {
  display: flex;
  flex-direction: row;
}
.f-col {
  display: flex;
  flex-direction: column;
}

/* 이미지 컨테이너 */
.img-box {
  position: relative;
  overflow: hidden;
}
.img-box img {
  width: 100%;
  height: auto;
}

/* ============================
   타이포그래피
============================ */

.txt-wrap {
  color: var(--one-txt-color);
  font-size: var(--one-body);
  line-height: var(--one-lh-r);
  font-weight: 400;
  word-break: keep-all;
  letter-spacing: -0.02em;
}

.txt-wrap a {
  color: inherit;
}

/* 타입 스케일 — 기본 line-height 1.6 / 1.3이 필요하면 .lh-lg 추가 */
.txt-wrap .hd1 {
  font-size: var(--one-hd1);
  line-height: var(--one-lh-r);
  font-weight: 700;
}
.txt-wrap .hd2 {
  font-size: var(--one-hd2);
  line-height: var(--one-lh-r);
  font-weight: 600;
}
.txt-wrap .hd3 {
  font-size: var(--one-hd3);
  line-height: var(--one-lh-r);
  font-weight: 500;
}
.txt-wrap .p-tit {
  font-size: var(--one-p-tit);
  line-height: var(--one-lh-r);
  font-weight: 500;
}
.txt-wrap .ft-body {
  font-size: var(--one-body);
  line-height: var(--one-lh-r);
  font-weight: 400;
}
.txt-wrap .cp-txt {
  font-size: var(--one-caption);
  line-height: var(--one-lh-r);
  font-weight: 400;
}

/* 줄간격 유틸리티 — 특정 요소에만 1.3 적용 */
.lh-lg {
  line-height: var(--one-lh-lg) !important;
}

/* 텍스트 정렬 */
.txt-lf {
  text-align: left;
}
.txt-rg {
  text-align: right;
}
.txt-ct {
  text-align: center;
}

/* 텍스트 꾸밈 */
.txt-ul {
  text-decoration: underline;
  text-underline-offset: 0.2em;
}
.txt-uc {
  text-transform: uppercase;
}

/* 브랜드 서체 — 값은 :root 의 --one-sub-ft (사이트별로 교체) */
.sub-ft {
  font-family: var(--one-sub-ft) !important;
  letter-spacing: var(--one-sub-ft-ls);
}

/* 폰트 굵기 유틸리티 */
.ft-b {
  font-weight: 700 !important;
}
.ft-sb {
  font-weight: 600 !important;
}
.ft-r {
  font-weight: 400 !important;
}
.ft-l {
  font-weight: 300 !important;
}

/* 보조 텍스트
 * font-size: --one-caption(15px)과 동일값으로 변수 참조
 * 태블릿: --one-caption 재정의(13px)에 따라 자동 전환
 * 모바일: vw 전환 예외 — 12px 고정 (2.7vw가 너무 작아질 수 있어 별도 지정)
 * padding-top: 태블릿에서 --one-gap-sm 만큼 상단 여백 추가
 */
.txt-help {
  font-size: var(--one-caption);
  color: var(--gray-color01);
}

/* ============================
   색상 유틸리티
   * 각 계열의 첫 번째(01)는 번호 생략
   * .m-color    = --main-color
   * .sb-color   = --sub-color01
   * .gray-color = --gray-color01
============================ */

.m-color {
  color: var(--main-color);
}
.sb-color {
  color: var(--sub-color01);
}
.sb02-color {
  color: var(--sub-color02);
}
.sb03-color {
  color: var(--sub-color03);
}
.sb04-color {
  color: var(--sub-color04);
}
.gray-color {
  color: var(--gray-color01);
}
.gray-color02 {
  color: var(--gray-color02);
}
.gray-color03 {
  color: var(--gray-color03);
}
.gray-color04 {
  color: var(--gray-color04);
}
.w-color {
  color: var(--white-color);
}

/* 배경 유틸리티 */
.bg-cv {
  background: no-repeat center / cover;
}
.bg-ct {
  background: no-repeat center / 100% auto;
}

/* ============================
   아이콘 크기 유틸리티
   * max-width: 변수값 상한 / height: auto (비율 유지)
   * width 가 아닌 max-width 인 이유 — section img { width: 100% } 가 함께 걸려도
     상한만 잡아 주면 되고, 원본보다 작은 아이콘을 억지로 늘리지 않는다
============================ */

.icon-s,
.icon-r,
.icon-l,
.icon-xl {
  display: inline-block;
  height: auto;
  flex-shrink: 0;
}

.icon-s {
  max-width: var(--one-icon-s);
}
.icon-r {
  max-width: var(--one-icon-r);
}
.icon-l {
  max-width: var(--one-icon-l);
}
.icon-xl {
  max-width: var(--one-icon-xl);
}

/* [사이트] 글줄 안 아이콘은 inline — .section img (0,1,1) 가 클래스 하나(0,1,0)를
   이기므로 img 를 붙여 특이도를 맞춘다 */
img.icon-s,
img.icon-r,
img.icon-l,
img.icon-xl {
  display: inline-block;
}

/* ============================
   여백 초기화 유틸리티
============================ */

.pdt-0 {
  padding-top: 0 !important;
}
.pdb-0 {
  padding-bottom: 0 !important;
}
.mgt-0 {
  margin-top: 0 !important;
}
.mgb-0 {
  margin-bottom: 0 !important;
}

/* [사이트] 서브헤더 바로 아래 첫 섹션의 상단 여백 */
.pdt-r {
  padding-top: var(--one-space-r) !important;
}

/* 인라인 스페이서 */
.sp {
  display: inline-block;
  width: 1em;
}

/* ============================
   반응형 가시성
   * view-mo   : 태블릿·모바일에서 표시 (block)
   * view-pc   : 태블릿·모바일모바일에서 숨김
   * view-mo-i : 태블릿·모바일에서 표시 (inline-block)
   * only-mo   : 모바일에서만 표시
============================ */

.view-mo {
  display: none !important;
}
.view-mo-i {
  display: none !important;
}
.only-mo {
  display: none !important;
}

/* ============================
   리스트 스타일
============================ */

/* 점(dot) 스타일 */
.lst-dot li {
  position: relative;
  padding-left: var(--one-gap-r);
  padding-bottom: var(--one-gap-xs); /* 4px — 항목 간 최소 하단 여백 */
}
.lst-dot li.lst-sub {
  font-weight: 700;
  padding-left: 0;
}
.lst-dot li::before {
  position: absolute;
  content: '';
  clear: both;
  width: 3px; /* 장식 기호 크기 — 변수화 제외 */
  height: 3px;
  border-radius: 50%;
  background-color: var(--one-txt-color);
  left: 2px; /* 장식 기호 위치 미세조정 — 변수화 제외 */
  top: 0.78em;
}
.lst-dot li.space::before,
.lst-dot li.lst-sub::before {
  display: none;
}
.lst-dot li.space {
  height: 1em;
}

/* 대시(dash) 스타일 */
.lst-dash li {
  position: relative;
  padding-left: var(--one-gap-r);
  padding-bottom: var(--one-gap-xs); /* 4px — 항목 간 최소 하단 여백 */
}
.lst-dash li.no-dash {
  padding-left: var(--one-gap-xs); /* 4px — 기호 제거 후 최소 들여쓰기 보정 */
}
.lst-dash li.no-dash::before {
  display: none;
}
.lst-dash li.lst-sub {
  font-weight: 700;
  padding-left: 0;
}
.lst-dash li::before {
  position: absolute;
  content: '';
  clear: both;
  width: 5px; /* 장식 기호 크기 — 변수화 제외 */
  height: 1px;
  border-radius: 50%;
  background-color: var(--one-txt-color);
  left: 5px; /* 장식 기호 위치 미세조정 — 변수화 제외 */
  top: 0.78em;
}
.lst-dash li.space::before,
.lst-dash li.lst-sub::before {
  display: none;
}

/* ============================
   섹션 헤딩
   * .txt-wrap 과 함께 사용 — .cp-txt 등 타이포 클래스 스코프 확보
   * 예: <div class="sec-hd txt-wrap">
============================ */

.sec-hd {
  padding-bottom: var(--one-space-s);
  display: flex;
  flex-direction: column;
  gap: var(--one-gap-r);
}
.sec-hd .cp-txt {
  font-size: var(--one-body);
  letter-spacing: 0.2em;
  margin-bottom: var(--one-gap-sm);
}

/* ============================
   뱃지
============================ */

.badge {
  background: var(--main-color);
  font-size: 0.65em;
  padding: 1px 1em 2px;
  font-weight: 700;
  border-radius: 0.3em;
  display: inline-block;
  vertical-align: text-bottom;
  line-height: 1.5; /* 컴포넌트 전용 예외값 — lh 변수 체계 적용 제외 */
}

/* ============================
   반응형 — 태블릿 (max-width: 1024px)
============================ */

@media all and (max-width: 1024px) {
  :root {
    /* [사이트] PC 에서 팀 원본과 같은 폭만큼 내린다(제목 -2 / p-tit -4 / 본문 -2) — 팀 기본 46/38/30/20/16 */
    --one-hd1: 48px;
    --one-hd2: 42px;
    --one-hd3: 34px;
    --one-p-tit: 22px;
    --one-body: 17px;
    --one-caption: 13px;
    --one-space-xl: 100px;
    --one-space-lg: 80px;
    --one-space-r: 54px;
    --one-gap-xl: 24px;
    --one-gap-lg: 16px;
  }
  .section {
    padding: 0 var(--one-space-s);
  }
  .view-mo {
    display: block !important;
  }
  .view-mo-i {
    display: inline-block !important;
  }
  .view-pc {
    display: none !important;
  }

  /* font-size: --one-caption 재정의(13px) 자동 전환
   * padding-top: 입력 필드 하단 등 보조 텍스트 간격 확보 */
  .txt-help {
    font-size: var(--one-caption);
    padding-top: var(--one-gap-sm);
  }
}

/* ============================
   반응형 — 모바일 (max-width: 639px)
============================ */

@media all and (max-width: 639px) {
  :root {
    --one-layout: 100%;
    --one-layout-md: 100%;
    /* 타이포그래피 — vw 단위 전환 */
    /* [사이트] PC 상승률만큼 vw 도 올림 — 팀 기본 8.2/7/6/5/3.7 */
    --one-hd1: 8.5vw;
    --one-hd2: 7.7vw;
    --one-hd3: 6.8vw;
    --one-p-tit: 5.4vw;
    --one-body: 3.9vw;
    --one-caption: 2.7vw;
    /* 줄간격 — 유지 */
    --one-lh-r: 1.6;
    --one-lh-lg: 1.3;
    /* 섹션 여백 — vw 단위 전환 */
    --one-space-xl: 15vw;
    --one-space-lg: 12.5vw;
    --one-space-r: 11vw;
    --one-space-s: 9.3vw;
    /* 요소 간 간격 — vw 단위 전환 */
    --one-gap-xl: 4.7vw;
    --one-gap-lg: 3.7vw;
    --one-gap-r: 3.2vw;
    --one-gap-sm: 2.5vw;
    /* --one-space-safe, --one-gap-xs 는 px 고정 — 변경 금지 */
  }
  .section {
    padding: 0 var(--one-space-safe);
  }
  .sec-hd {
    gap: var(--one-gap-xl);
  }
  .lst-dot li {
    padding-bottom: 0;
  }
  .lst-dot li.space {
    height: 0.9em;
  }

  /* 텍스트 정렬 -- 모바일만  */
  .txt-lf-m {
    text-align: left !important;
  }

  .only-mo {
    display: block !important;
  }

  /* vw 전환 예외 — --one-caption(2.7vw)이 너무 작아질 수 있어 px 고정 */
  .txt-help {
    font-size: 12px;
  }
}
