/* ========================================
 * 폰트 시스템 (사이즈 스케일 + 웨이트 + 자간 + 행간)
 * 계층: base (시스템 기초 — head.jsp 전역 로드)
 * 참조: Tailwind CSS v4 Typography Utilities
 *
 * 구성:
 *   1. :root 변수  — 폰트 기본값 + 사이즈/웨이트 스케일
 *   2. 유틸리티    — 스케일 변수를 참조하는 클래스 (.text-*, .font-*)
 *   3. 하드코딩    — 스케일에 없는 일회성 값 (px, rem)
 *   4. 자간/행간   — letter-spacing, line-height 유틸리티
 * ======================================== */


/* ──────────────────────────────────────────
   1. :root 변수
   ────────────────────────────────────────── */

/* Body 기본 폰트
   Sneat core.css의 :root 변수를 오버라이드하여 폰트 기본값을 제어
   벤더 CSS를 직접 수정하지 않고 이 파일에서 일괄 관리

   --bs-root-font-size : rem 계산 기준 (1rem = ?px)
                         Bootstrap·서드파티 spacing/component가 이 값에 의존
   --bs-body-font-size : 실제 본문 글자 크기 (rem 단위)
                         root와 분리하여 텍스트만 독립 조정 가능

   15px↔16px 전환은 --bs-body-font-size만 수정
   0.9375rem = 15px, 1rem = 16px */
:root {
  --bs-root-font-size: 16px;
  --bs-body-font-size: 0.9375rem; /* 15px */
  font-size: var(--bs-root-font-size);

  /* Font-size scale
     도메인/페이지 CSS에서 var(--sfn-text-sm) 등으로 참조 가능 */
  --sfn-text-2xs:  0.625rem;   /*  10px */
  --sfn-text-xs:   0.75rem;    /*  12px */
  --sfn-text-sm:   0.875rem;   /*  14px */
  --sfn-text-md:   0.9375rem;  /*  15px — body 기본 */

  --sfn-text-base: 1rem;       /*  16px — root font-size */
  --sfn-text-lg:   1.125rem;   /*  18px */
  --sfn-text-xl:   1.25rem;    /*  20px */
  --sfn-text-2xl:  1.5rem;     /*  24px */
  --sfn-text-3xl:  1.875rem;   /*  30px */
  --sfn-text-4xl:  2.25rem;    /*  36px */
  --sfn-text-5xl:  3rem;       /*  48px */
  --sfn-text-6xl:  3.75rem;    /*  60px */
  --sfn-text-7xl:  4.5rem;     /*  72px */
  --sfn-text-8xl:  6rem;       /*  96px */
  --sfn-text-9xl:  8rem;       /* 128px */

  /* Font-weight scale */
  --sfn-font-thin:       100;
  --sfn-font-extralight: 200;
  --sfn-font-light:      300;
  --sfn-font-normal:     400;
  --sfn-font-medium:     500;
  --sfn-font-semibold:   600;
  --sfn-font-bold:       700;
  --sfn-font-extrabold:  800;
  --sfn-font-black:      900;
}


/* ──────────────────────────────────────────
   2. 유틸리티 클래스
   ────────────────────────────────────────── */

/* Font-size */
.text-2xs { font-size: var(--sfn-text-2xs) !important; }
.text-xs  { font-size: var(--sfn-text-xs)  !important; }
.text-sm  { font-size: var(--sfn-text-sm)  !important; }
.text-md  { font-size: var(--sfn-text-md)  !important; }
.text-base{ font-size: var(--sfn-text-base)!important; }
.text-lg  { font-size: var(--sfn-text-lg)  !important; }
.text-xl  { font-size: var(--sfn-text-xl)  !important; }
.text-2xl { font-size: var(--sfn-text-2xl) !important; }
.text-3xl { font-size: var(--sfn-text-3xl) !important; }
.text-4xl { font-size: var(--sfn-text-4xl) !important; }
.text-5xl { font-size: var(--sfn-text-5xl) !important; }
.text-6xl { font-size: var(--sfn-text-6xl) !important; }
.text-7xl { font-size: var(--sfn-text-7xl) !important; }
.text-8xl { font-size: var(--sfn-text-8xl) !important; }
.text-9xl { font-size: var(--sfn-text-9xl) !important; }

/* Font-weight */
.font-thin       { font-weight: var(--sfn-font-thin)       !important; }
.font-extralight { font-weight: var(--sfn-font-extralight) !important; }
.font-light      { font-weight: var(--sfn-font-light)      !important; }
.font-normal     { font-weight: var(--sfn-font-normal)     !important; }
.font-medium     { font-weight: var(--sfn-font-medium)     !important; }
.font-semibold   { font-weight: var(--sfn-font-semibold)   !important; }
.font-bold       { font-weight: var(--sfn-font-bold)       !important; }
.font-extrabold  { font-weight: var(--sfn-font-extrabold)  !important; }
.font-black      { font-weight: var(--sfn-font-black)      !important; }

/* Letter-spacing (tracking) */
.tracking-tighter { letter-spacing: -0.05em !important; }
.tracking-tight   { letter-spacing: -0.025em !important; }
.tracking-normal  { letter-spacing: 0em !important; }
.tracking-wide    { letter-spacing: 0.025em !important; }
.tracking-wider   { letter-spacing: 0.05em !important; }
.tracking-widest  { letter-spacing: 0.1em !important; }

/* Line-height (leading) */
.leading-none    { line-height: 1 !important; }
.leading-tight   { line-height: 1.25 !important; }
.leading-snug    { line-height: 1.375 !important; }
.leading-normal  { line-height: 1.5 !important; }
.leading-relaxed { line-height: 1.625 !important; }
.leading-loose   { line-height: 2 !important; }


/* ──────────────────────────────────────────
   3. Font-size 하드코딩 (스케일에 없는 값)
   ──────────────────────────────────────────
   위 스케일 유틸리티로 해결 가능한지 먼저 확인할 것
   하드코딩이 늘어날수록 일관성이 무너지므로 꼭 필요한 경우에만 추가

   네이밍: .text-{값}{단위}
     px  — .text-11px   { font-size: 11px !important; }
           .text-13px   { font-size: 13px !important; }
     rem — .text-1-5rem { font-size: 1.5rem !important; }
           .text-2rem   { font-size: 2rem !important; }
           rem 소수점은 하이픈(-)으로 치환

   em, vw, % 등 상대 단위는 컨텍스트에 따라 결과가 달라지므로
   여기에 정의하지 않고 각 페이지/도메인 CSS에서 직접 작성할 것
   ────────────────────────────────────────── */
/* .text-13px { font-size: 13px !important; } */
