@charset "utf-8";


/* ============================================================
   common-style.css — 전역 토큰(:root) + 기본 스타일 + 유틸리티
   메인/서브 전 페이지 공용. header/footer/landing 이 모두 이 토큰에 의존한다.
   로드 순서: default → main(레거시) → **common-style** → header → footer (→ 메인만 common-ui·anim·landing·slide)
============================================================ */

:root {
  /* ── 색상 (시안 실측) — 딥네이비 = 구조 / 틸 = 포인트 ── */
  --main-color      : #09324e;   /* 딥네이비 — 다크 섹션 배경·제목·푸터 (시안 실측, 기존 #003c72에서 조정) */
  --point-color     : #00a6b1;   /* 시그니처 틸 — 아이콘·소제목·포인트·버튼·구분선 (신규) */
  --point-color02   : #006882;   /* 딥틸 — 라벨바·강조 헤더 (신규) */
  --point-color03   : #d8f0f0;   /* 라이트 틸 틴트 — 소프트 박스·섹션 배경 (신규) */
  --point-color04   : #8bebe9;   /* 라이트 민트 — 다크 배경 위 강조 텍스트 */
  --point-color05   : #55b7b5;   /* 미드 틸 — 의료진 이름·자격 pill */
  --sub-color01     : #d8ecfe;   /* 라이트 블루 틴트 — 인트로·아이콘 배경 */
  --sub-color02     : #eef4fa;   /* 옅은 블루그레이 — 섹션 배경 */
  --sub-color03     : #809eb9;   /* 뮤트 블루그레이 — 보조 텍스트·라인 */
  --sub-color04     : #fef744;   /* 옐로 — 별점·포인트 뱃지 강조 */
  --sub-color05     : #4d90de;   /* 미드블루 — 그라데이션 CTA 밴드 (신규) */
  --sub-color06     : #164491;   /* 딥블루 — 학회활동 수상 타이틀 */
  --gray-color01    : #b0b0b0;
  --gray-color02    : #a2a3a3;
  --white-color     : #f2f2f2;
  --one-txt-color   : #333333;

  /* ── 레이아웃 ── */
  --one-layout      : 1200px;
  --one-layout-lg   : 1680px;
  --one-outer-layout: 1920px;

  /* ── 타이포그래피 — 크기 ── */
  --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;

  /* ── 줄간격 — 기본 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) ── */
  --one-icon-s : 16px;
  --one-icon-r : 20px;
  --one-icon-l : 24px;
  --one-icon-xl: 32px;

  /* ── 컴포넌트 토큰 (common-ui.css 참조) ── */
  --ui-radius-s   :  8px;
  --ui-radius     : 12px;
  --ui-radius-lg  : 20px;
  --ui-radius-pill: 999px;
  --ui-line       : #e0e0e0;   /* 카드·표 기본 라인 */
  --ui-line-pt    : #bfe6e9;   /* 틸 계열 연한 라인 (point-color 틴트) */
  --ui-shadow     : 0 6px 24px rgba(9, 50, 78, 0.08);   /* main-color 기반 그림자 */
}


/* ── 전역 기본 ── */

/* 이미지 고스트 드래그 방지 */
img {
  -webkit-user-drag: none;
  -khtml-user-drag: none;
  -moz-user-drag: none;
  -o-user-drag: none;
}

/* ── 국문 서체 = Noto Sans KR 고정 (한자만 .ace-hanja → Noto Sans TC) ──
   레거시 CSS(default·main·mobile·게시판 스킨)의 구 폰트 선언은 원본에서 직접 정리했다.
   이 블록은 스킨/플러그인이 새로 폰트를 박을 때의 최종 방어선으로 남겨 둔다.
   head 에 Noto Sans KR 웹폰트 link 필수. */
html,
body,
h1, h2, h3, h4, h5, h6,
p, span, a, li, dt, dd, th, td, label, strong, b, em, i,
input, button, textarea, select {
  font-family: "Noto Sans KR", sans-serif;
}

/* ⚠️ default.css 가 `p { word-break: break-all }` 을 요소에 직접 지정해
   .txt-wrap 의 keep-all 이 p 안에서 무력화된다 → 여기서 다시 지정 */
.txt-wrap p,
.txt-wrap li,
.txt-wrap dt, .txt-wrap dd,
.txt-wrap th, .txt-wrap td {
  word-break: keep-all;
}

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


/* ============================================================
   레이아웃 — .section(좌우 safe 패딩) / .con-inner(상하 여백, 1200) / -lg(1680)
============================================================ */

.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; }

/* 스크린리더 전용 — 표 캡션·시각적으로 감춘 제목 */
.blind {
  position: absolute;
  width: 1px; height: 1px;
  margin: -1px; padding: 0;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}


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

.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.03em;
}

.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; }

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

/* 보조 텍스트 — 모바일은 vw 전환 예외(12px 고정) */
.txt-help { font-size: var(--one-caption); color: var(--gray-color01); }


/* ── 색상 유틸 — 첫 번째(01)는 번호 생략 (.m-color / .pt-color / .sb-color / .gray-color) ── */

.m-color      { color: var(--main-color); }
.pt-color     { color: var(--point-color); }
.pt02-color   { color: var(--point-color02); }
.pt03-color   { color: var(--point-color03); }
.pt04-color   { color: var(--point-color04); }
.pt05-color   { color: var(--point-color05); }
.sb-color     { color: var(--sub-color01); }
.sb02-color   { color: var(--sub-color02); }
.sb03-color   { color: var(--sub-color03); }
.sb04-color   { color: var(--sub-color04); }
.sb05-color   { color: var(--sub-color05); }
.sb06-color   { color: var(--sub-color06); }
.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; }


/* ── 아이콘 크기 유틸 ── */

.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; }


/* ── 반응형 가시성 (전환 1024px) ──
   .view-mo(block) / .view-mo-i(inline-block) / .view-pc(숨김) / .only-mo(639 이하만) ── */

.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 과 같이 쓸 것 (타이포 클래스 스코프) ── */

.sec-hd { padding-bottom: var(--one-space-r); }
.sec-hd .cp-txt { letter-spacing: 0.5em; 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 변수 체계 적용 제외 */
}


/* ── 반응형: 태블릿 ── */

@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;
  }

  .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);
  }

  .sec-hd { padding-bottom: var(--one-space-s); }
}


/* ── 반응형: 모바일 ── */

@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 고정 — 변경 금지 */
  }

  .lst-dot li       { padding-bottom: 0; }
  .lst-dot li.space { height: 0.9em; }

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

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