/* ════════════════════════════════════════════════════════════
 * AVA Plastic Surgery — Typography Tokens (단일 SSoT)
 * ════════════════════════════════════════════════════════════
 *
 * 적용 범위 (한 파일에서 모든 컨텍스트 일관):
 *   · Web — body.lang-{xx} CSS scope
 *   · 이미지 캔버스 — typography.js 의 동일 객체 export
 *   · PDF 문서 — typography.js 의 PDF_SCALE multiplier 사용
 *   · AI 이미지 prompt — typography.js 의 AI_PROMPT_DESC 활용
 *
 * 절대 원칙:
 *   · 이 파일이 모든 폰트·크기·자간·줄간격의 SSoT (단일 진실 공급원)
 *   · 다른 곳에 사본 두지 말 것 (admin 도구도 이 URL fetch)
 *   · 수정 시 typography.js 도 동시 갱신 (값 일치 유지)
 *
 * 7개 언어: ko · en · cn · jp · th · id · ru
 * 작성: 2026-05-19 (Gemini + Claude 합의)
 * ════════════════════════════════════════════════════════════ */


/* ─── 공통 토큰 (모든 언어 공유) ─── */
:root {
  /* Modular Scale — Major Third 1.25 */
  --ava-ratio-caption:  0.75;   /* 12.75px (ko 17 기준) */
  --ava-ratio-small:    0.875;  /* 14.88px */
  --ava-ratio-body:     1.0;    /* 17px (base) */
  --ava-ratio-lead:     1.25;   /* 21.25px */
  --ava-ratio-h3:       1.5;    /* 25.5px */
  --ava-ratio-h2:       1.875;  /* 31.88px */
  --ava-ratio-h1:       2.5;    /* 42.5px */
  --ava-ratio-display:  3.5;    /* 59.5px */

  /* Context Multiplier — base 대비 자동 환산 */
  --ava-ctx-mobile:    0.88;
  --ava-ctx-pdf-pt:    0.65;  /* pt 단위 */
  --ava-ctx-sns:       2.0;   /* SNS 1080×1350 */
  --ava-ctx-poster-a4: 2.75;  /* A4 인쇄 1748×2480 */
  --ava-ctx-banner:    1.7;   /* X배너 800×2400 */
  --ava-ctx-card:      0.50;  /* 명함 */

  /* 시니어 가독성 floor */
  --ava-floor-mobile-px: 14;
  --ava-floor-print-pt:  9;

  /* 숫자 스타일 */
  --ava-num-tabular:      'tnum' 1, 'lnum' 1;
  --ava-num-proportional: 'pnum' 1;
}


/* ════════════════════════════════════════════════════════════
 * 🇰🇷 한국어 (ko) — 마스터, 시니어 친화 (40-70대 안면거상 타깃)
 * ════════════════════════════════════════════════════════════ */
body.lang-ko {
  --ava-font-body:    'Pretendard Variable', 'Pretendard', 'Noto Sans KR', sans-serif;
  --ava-font-heading: 'Pretendard Variable', 'Pretendard', sans-serif;
  --ava-font-display: 'Gowun Batang', 'Playfair Display', serif;

  --ava-fs-base:        17px;
  --ava-fs-base-mobile: 15px;        /* -2px (Gemini 룰), 단 시니어 floor 14px 유지 */

  --ava-lh-body:    1.75;
  --ava-lh-heading: 1.25;
  --ava-lh-display: 1.2;

  --ava-tracking-body:     -0.02em;
  --ava-tracking-heading:  -0.03em;
  --ava-tracking-display:  -0.04em;
  --ava-tracking-cta:       0.02em;
  --ava-tracking-eyebrow:   0.5em;   /* "PREMIUM AESTHETIC" 류 */
  --ava-tracking-numeric:   0.05em;

  --ava-word-spacing: 0;
  --ava-weight-body:    400;
  --ava-weight-heading: 700;

  font-family: var(--ava-font-body);
  font-size: var(--ava-fs-base);
  line-height: var(--ava-lh-body);
  letter-spacing: var(--ava-tracking-body);
  font-feature-settings: 'kern' 1;
}


/* ════════════════════════════════════════════════════════════
 * 🇺🇸 영어 (en) — Inter + Playfair Display
 * ════════════════════════════════════════════════════════════ */
body.lang-en {
  --ava-font-body:    'Inter', 'Pretendard Variable', sans-serif;
  --ava-font-heading: 'Inter', 'Pretendard Variable', sans-serif;
  --ava-font-display: 'Playfair Display', 'Cormorant Garamond', Georgia, serif;

  --ava-fs-base:        16px;
  --ava-fs-base-mobile: 14px;        /* -2px 일괄 */

  --ava-lh-body:    1.6;
  --ava-lh-heading: 1.2;
  --ava-lh-display: 1.1;

  --ava-tracking-body:     0;
  --ava-tracking-heading:  -0.015em;
  --ava-tracking-display:  -0.02em;
  --ava-tracking-cta:       0.025em;
  --ava-tracking-eyebrow:   0.4em;
  --ava-tracking-numeric:   0.02em;

  --ava-word-spacing: 0.02em;
  --ava-weight-body:    400;
  --ava-weight-heading: 600;

  font-family: var(--ava-font-body);
  font-size: var(--ava-fs-base);
  line-height: var(--ava-lh-body);
  letter-spacing: var(--ava-tracking-body);
  word-spacing: var(--ava-word-spacing);
  font-feature-settings: 'liga' 1, 'kern' 1, 'calt' 1;
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
}


/* ════════════════════════════════════════════════════════════
 * 🇨🇳 중국어 간체 (cn) — Noto Sans SC + Serif heading (송체 럭셔리)
 * ════════════════════════════════════════════════════════════ */
body.lang-cn {
  --ava-font-body:    'Noto Sans SC', 'Pretendard Variable', sans-serif;
  --ava-font-heading: 'Noto Serif SC', 'Songti SC', serif;     /* heading은 송체 — Cartier·Bvlgari 표준 */
  --ava-font-display: 'Noto Serif SC', 'Source Han Serif SC', serif;

  --ava-fs-base:        16.5px;
  --ava-fs-base-mobile: 15px;        /* 한자 정사각형 보정 -1.5px */

  --ava-lh-body:    1.78;
  --ava-lh-heading: 1.3;
  --ava-lh-display: 1.2;

  --ava-tracking-body:     0.01em;
  --ava-tracking-heading:  0.02em;
  --ava-tracking-display:  0.03em;
  --ava-tracking-cta:       0.05em;   /* 한자 CTA wide tracking 필수 */
  --ava-tracking-eyebrow:   0.4em;
  --ava-tracking-numeric:   0.03em;

  --ava-word-spacing: 0;
  --ava-weight-body:    400;
  --ava-weight-heading: 600;

  font-family: var(--ava-font-body);
  font-size: var(--ava-fs-base);
  line-height: var(--ava-lh-body);
  letter-spacing: var(--ava-tracking-body);
  font-feature-settings: 'kern' 1;
}

/* 중국어 모바일 sub-heading (≤16px) — 작은 사이즈는 Sans 자동 전환 (Serif 가독성 보강) */
@media (max-width: 768px) {
  body.lang-cn h3,
  body.lang-cn h4,
  body.lang-cn h5 {
    font-family: var(--ava-font-body);   /* Sans fallback */
  }
}


/* ════════════════════════════════════════════════════════════
 * 🇯🇵 일본어 (jp) — 가나·한자·라틴 3중 + 명조 우아함
 * ════════════════════════════════════════════════════════════ */
body.lang-jp {
  --ava-font-body:    'Noto Sans JP', 'Pretendard Variable', sans-serif;
  --ava-font-heading: 'Noto Serif JP', 'Hiragino Mincho ProN', serif;
  --ava-font-display: 'Noto Serif JP', 'Klee One', serif;

  --ava-fs-base:        16px;
  --ava-fs-base-mobile: 14px;

  --ava-lh-body:    1.78;
  --ava-lh-heading: 1.3;
  --ava-lh-display: 1.2;

  --ava-tracking-body:     0.02em;    /* Shiseido·Clé de Peau 모바일 표준 */
  --ava-tracking-heading:  0.04em;    /* Vogue Japan·Casa Brutus wide tracking */
  --ava-tracking-display:  0.05em;
  --ava-tracking-cta:       0.06em;
  --ava-tracking-eyebrow:   0.5em;
  --ava-tracking-numeric:   0.03em;

  --ava-word-spacing: 0;
  --ava-weight-body:    400;
  --ava-weight-heading: 600;

  font-family: var(--ava-font-body);
  font-size: var(--ava-fs-base);
  line-height: var(--ava-lh-body);
  letter-spacing: var(--ava-tracking-body);
  font-feature-settings: 'kern' 1, 'palt' 1;   /* palt = 일본어 비례 자간 */
}


/* ════════════════════════════════════════════════════════════
 * 🇹🇭 태국어 (th) — 디센더·어센더 부호 클리어런스 절대 보장
 * ════════════════════════════════════════════════════════════ */
body.lang-th {
  --ava-font-body:    'Noto Sans Thai Looped', 'Noto Sans Thai', sans-serif;
  --ava-font-heading: 'Noto Serif Thai', 'Noto Sans Thai Looped', serif;
  --ava-font-display: 'Noto Serif Thai', serif;

  --ava-fs-base:        17.5px;
  --ava-fs-base-mobile: 16px;        /* 한자/한글 시니어 friendly 그룹 -1.5px */

  --ava-lh-body:        1.85;        /* Gemini 룰 (1.95에서 단정화) */
  --ava-lh-body-mobile: 1.9;         /* 모바일은 부호 클리어런스 더 보강 */
  --ava-lh-heading:     1.4;
  --ava-lh-display:     1.3;

  --ava-tracking-body:     0;        /* 태국어 자간 변경 시 부호 위치 깨짐 */
  --ava-tracking-heading:  0;
  --ava-tracking-display:  0;
  --ava-tracking-cta:       0.02em;
  --ava-tracking-eyebrow:   0.4em;
  --ava-tracking-numeric:   0.05em;

  --ava-word-spacing: 0;             /* 태국어 단어 띄어쓰기 없음 */
  --ava-weight-body:    400;
  --ava-weight-heading: 500;          /* 700은 부호 뭉개짐 — 500이 최적 */

  font-family: var(--ava-font-body);
  font-size: var(--ava-fs-base);
  line-height: var(--ava-lh-body);
  letter-spacing: var(--ava-tracking-body);
}

@media (max-width: 768px) {
  body.lang-th {
    line-height: var(--ava-lh-body-mobile);   /* 모바일 1.9 */
  }
}


/* ════════════════════════════════════════════════════════════
 * 🇮🇩 인도네시아어 (id) — Latin, 메디컬 투어 + 시니어 친화
 * ════════════════════════════════════════════════════════════ */
body.lang-id {
  --ava-font-body:    'Inter', 'Pretendard Variable', sans-serif;
  --ava-font-heading: 'Inter', 'Pretendard Variable', sans-serif;
  --ava-font-display: 'Playfair Display', 'Cormorant Garamond', serif;

  --ava-fs-base:        16px;       /* Gemini 룰 — 15.5 → 16 (시니어 친화) */
  --ava-fs-base-mobile: 14px;

  --ava-lh-body:    1.62;
  --ava-lh-heading: 1.25;
  --ava-lh-display: 1.15;

  --ava-tracking-body:     -0.005em;  /* 인니어 길이 보정 — 살짝 압축 */
  --ava-tracking-heading:  -0.01em;
  --ava-tracking-display:  -0.015em;
  --ava-tracking-cta:       0.01em;
  --ava-tracking-eyebrow:   0.4em;
  --ava-tracking-numeric:   0.02em;

  --ava-word-spacing: 0.005em;        /* Gemini 보정 — 0.02에서 축소 (한 줄 글자 수 +12%) */
  --ava-weight-body:    400;
  --ava-weight-heading: 600;

  font-family: var(--ava-font-body);
  font-size: var(--ava-fs-base);
  line-height: var(--ava-lh-body);
  letter-spacing: var(--ava-tracking-body);
  word-spacing: var(--ava-word-spacing);
  font-feature-settings: 'liga' 1, 'kern' 1, 'calt' 1;
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
}


/* ════════════════════════════════════════════════════════════
 * 🇷🇺 러시아어 (ru) — Inter Cyrillic + Cormorant Garamond heading
 * ════════════════════════════════════════════════════════════ */
body.lang-ru {
  --ava-font-body:    'Inter', 'PT Sans', sans-serif;
  --ava-font-heading: 'Cormorant Garamond', 'PT Serif', serif;   /* Gemini 룰 — Playfair 키릴 불균형 회피 */
  --ava-font-display: 'Cormorant Garamond', 'PT Serif', serif;

  --ava-fs-base:        16px;
  --ava-fs-base-mobile: 14px;

  --ava-lh-body:    1.6;
  --ava-lh-heading: 1.2;
  --ava-lh-display: 1.1;

  --ava-tracking-body:     0;
  --ava-tracking-heading:  -0.01em;
  --ava-tracking-display:  -0.015em;
  --ava-tracking-cta:       0.02em;
  --ava-tracking-eyebrow:   0.4em;
  --ava-tracking-numeric:   0.02em;

  --ava-word-spacing: 0.02em;
  --ava-weight-body:    400;
  --ava-weight-heading: 600;

  font-family: var(--ava-font-body);
  font-size: var(--ava-fs-base);
  line-height: var(--ava-lh-body);
  letter-spacing: var(--ava-tracking-body);
  word-spacing: var(--ava-word-spacing);
  font-feature-settings: 'liga' 1, 'kern' 1, 'calt' 1;
  text-rendering: optimizeLegibility;
}


/* ════════════════════════════════════════════════════════════
 * 공통 컴포넌트 적용 (모든 lang scope 안에서 자동 작동)
 * ════════════════════════════════════════════════════════════ */

/* Heading 자동 적용 */
[class*="lang-"] h1,
[class*="lang-"] h2,
[class*="lang-"] h3,
[class*="lang-"] h4 {
  font-family: var(--ava-font-heading);
  font-weight: var(--ava-weight-heading);
  letter-spacing: var(--ava-tracking-heading);
  line-height: var(--ava-lh-heading);
}

[class*="lang-"] h1 { font-size: calc(var(--ava-fs-base) * var(--ava-ratio-h1)); }
[class*="lang-"] h2 { font-size: calc(var(--ava-fs-base) * var(--ava-ratio-h2)); }
[class*="lang-"] h3 { font-size: calc(var(--ava-fs-base) * var(--ava-ratio-h3)); }

/* Display 클래스 — 큰 hero 슬로건용 */
[class*="lang-"] .ava-display,
[class*="lang-"] .font-serif {
  font-family: var(--ava-font-display);
  letter-spacing: var(--ava-tracking-display);
  line-height: var(--ava-lh-display);
}

/* Eyebrow — "PREMIUM AESTHETIC" 류 영문 슬로건 */
[class*="lang-"] .eyebrow,
[class*="lang-"] [class*="text-shadow-deep"] {
  letter-spacing: var(--ava-tracking-eyebrow);
  text-transform: uppercase;
}

/* CTA 버튼 */
[class*="lang-"] .cta,
[class*="lang-"] .btn,
[class*="lang-"] button[type="submit"] {
  letter-spacing: var(--ava-tracking-cta);
  font-weight: 600;
}

/* Caption / Disclaimer */
[class*="lang-"] .caption,
[class*="lang-"] .cite,
[class*="lang-"] .disclaimer {
  font-size: max(calc(var(--ava-fs-base) * var(--ava-ratio-caption)), 12px);
  letter-spacing: 0;
}

/* 가격표·시간표 — tabular numbers */
[class*="lang-"] .pricing-table,
[class*="lang-"] .time-table,
[class*="lang-"] .price,
[class*="lang-"] .numeric-tabular {
  font-feature-settings: var(--ava-num-tabular);
  letter-spacing: var(--ava-tracking-numeric);
}

/* 모바일 base size override */
@media (max-width: 768px) {
  [class*="lang-"] {
    font-size: var(--ava-fs-base-mobile);
  }
}


/* ════════════════════════════════════════════════════════════
 * 테마 Modifier — 이미지·포스터 다양성 위한 5개 톤
 *
 * 사용:  <body class="lang-ko theme-editorial-bold">
 *        또는 image-studio 캔버스에 wrapper class
 *
 * Quiet Authority (default, modifier 없음) — 기본 토큰 그대로
 * ════════════════════════════════════════════════════════════ */

/* 1. Editorial Bold — 잡지 표지·VIP·시그니처 */
[class*="lang-"].theme-editorial-bold {
  line-height: calc(var(--ava-lh-body) * 0.85);
  letter-spacing: calc(var(--ava-tracking-body) - 0.01em);
}
[class*="lang-"].theme-editorial-bold h1,
[class*="lang-"].theme-editorial-bold h2 {
  font-weight: 800;
}

/* 2. Magazine Spread — 큰 사진 + 캡션 (큰 여백) */
[class*="lang-"].theme-magazine-spread {
  line-height: calc(var(--ava-lh-body) * 1.15);
}
[class*="lang-"].theme-magazine-spread .lead {
  letter-spacing: calc(var(--ava-tracking-body) + 0.005em);
}

/* 3. Hand-Soft — 펨미닌·웰니스·자연 */
[class*="lang-"].theme-hand-soft {
  line-height: calc(var(--ava-lh-body) * 1.1);
}
[class*="lang-"].theme-hand-soft h1,
[class*="lang-"].theme-hand-soft h2,
[class*="lang-"].theme-hand-soft .ava-display {
  font-family: 'Klee One', 'Gowun Batang', var(--ava-font-display);
  font-weight: 500;
}

/* 4. Modernist — iOS·미니멀·glass morphism */
[class*="lang-"].theme-modernist {
  line-height: calc(var(--ava-lh-body) * 0.95);
  letter-spacing: calc(var(--ava-tracking-body) - 0.005em);
}
[class*="lang-"].theme-modernist h1,
[class*="lang-"].theme-modernist h2 {
  font-family: var(--ava-font-body);   /* sans heading (Serif 대신) */
  font-weight: 700;
  letter-spacing: -0.02em;
}

/* 5. Vintage Editorial — Vogue Italia·고전 명조 */
[class*="lang-"].theme-vintage-editorial {
  line-height: calc(var(--ava-lh-body) * 0.9);
}
[class*="lang-"].theme-vintage-editorial h1,
[class*="lang-"].theme-vintage-editorial h2 {
  font-family: 'Cormorant Garamond', var(--ava-font-display);
  font-weight: 500;
  letter-spacing: 0.04em;     /* wide tracking 빈티지 */
}


/* ════════════════════════════════════════════════════════════
 * 컨텍스트 wrapper — 이미지 캔버스·포스터·인쇄용 사이즈
 *
 * 사용:  <div class="ava-ctx-sns">…</div>
 *        <div class="ava-ctx-poster-a4">…</div>
 * ════════════════════════════════════════════════════════════ */

.ava-ctx-sns          { font-size: calc(var(--ava-fs-base, 16px) * var(--ava-ctx-sns)); }
.ava-ctx-poster-a4    { font-size: calc(var(--ava-fs-base, 16px) * var(--ava-ctx-poster-a4)); }
.ava-ctx-banner       { font-size: calc(var(--ava-fs-base, 16px) * var(--ava-ctx-banner)); }
.ava-ctx-card         { font-size: calc(var(--ava-fs-base, 16px) * var(--ava-ctx-card)); }
