@charset "utf-8";


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

:root {
  /* ── 색상 ── */
  --main-color      : #223c7a;
  --sub-color01     : #9b8261;
  --sub-color02     : #e6eded;
  --sub-color03     : #809eb9;
  --sub-color04     : #241c11;
  --gray-color01    : #a9a9a9;
  --gray-color02    : #666;
  --gray-color03    : #f3f4f5;
  --white-color     : #fff;
  --one-txt-color   : #222222;

  /* ── 레이아웃 ── */
  --one-layout      : 1200px;
  --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;

  /* ── 타이포그래피 — 크기 ── */
  --one-hd1     : 48px;
  --one-hd2     : 40px;
  --one-hd3     : 32px;
  --one-p-tit   : 24px;
  --one-body    : 18px;
  --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;
}


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

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


/* ============================
   레이아웃
   * .wrap-max    : 섹션 전체 화면 최대 너비 제한
   * .section     : 섹션 기본 래퍼 — 좌우 safe 패딩 필수, 상하 0
   * .x-sf        : .section 없이 좌우 safe 패딩만 필요할 때
   * .con-inner   : 기본 콘텐츠 영역 — 상하 여백만, 좌우 패딩 없음
   * .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-lg {
  position: relative;
  width: 100%;
  max-width: var(--one-layout-lg);
  margin: 0 auto;
  padding: var(--one-space-lg) 0;     /* 상하 여백만 */
}

section img,
.section img {
  display: inline-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); }
.w-color      { color: var(--white-color); }

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


/* ============================
   아이콘 크기 유틸리티
   * width: 변수값 고정 / height: auto (비율 유지)
============================ */

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

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


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

.pdt-0 { padding-top   : 0 !important; }
.pdb-0 { padding-bottom: 0 !important; }
.mgt-0 { margin-top    : 0 !important; }
.mgb-0 { margin-bottom : 0 !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 { 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 {
    --one-hd1    : 46px;
    --one-hd2    : 38px;
    --one-hd3    : 30px;
    --one-p-tit  : 20px;
    --one-body   : 16px;
    --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%;
    /* 타이포그래피 — vw 단위 전환 */
    --one-hd1    : 8.2vw;
    --one-hd2    : 7vw;
    --one-hd3    : 6vw;
    --one-p-tit  : 5vw;
    --one-body   : 3.7vw;
    --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; }
}