/* ONE ASIA HUB — design tokens (pack: web-news-journal-grid) + reset
   값은 design.md 절대값. 임의 변경 금지.
   폰트는 전부 자체 호스팅 — 해외 교민 접속에서 외부 폰트 CDN에 의존하지 않는다. */

@font-face {
  font-family: "Nanum Myeongjo"; font-style: normal; font-weight: 400; font-display: swap;
  src: url("../fonts/nanum-myeongjo-korean-400-normal.woff2") format("woff2");
}
@font-face {
  font-family: "Nanum Myeongjo"; font-style: normal; font-weight: 700; font-display: swap;
  src: url("../fonts/nanum-myeongjo-korean-700-normal.woff2") format("woff2");
}
@font-face {
  font-family: "Playfair Display"; font-style: normal; font-weight: 700; font-display: swap;
  src: url("../fonts/playfair-display-latin-700-normal.woff2") format("woff2");
}
@font-face {
  font-family: "Archivo"; font-style: normal; font-weight: 500; font-display: swap;
  src: url("../fonts/archivo-latin-500-normal.woff2") format("woff2");
}
@font-face {
  font-family: "Archivo"; font-style: normal; font-weight: 700; font-display: swap;
  src: url("../fonts/archivo-latin-700-normal.woff2") format("woff2");
}
@font-face {
  font-family: "Pretendard Variable"; font-style: normal; font-weight: 45 920; font-display: swap;
  src: url("../fonts/Pretendard-Variable.woff2") format("woff2-variations");
}

:root {
  /* 색 — 지면 한 장. 다크 모드 없음 */
  --paper: #fcfcf9;
  --ink: #161616;
  --meta: #5a5a5a;
  --faint: #8a8a86;
  --red: #c8102e;
  --wash: #f1f0ea;

  /* 타이포 */
  --serif: "Playfair Display", "Nanum Myeongjo", Georgia, serif;
  --serif-ko: "Nanum Myeongjo", Georgia, serif;
  --sans: "Archivo", "Pretendard Variable", Pretendard, system-ui, sans-serif;

  --fs-top: clamp(2rem, 4.5vw, 3.4rem);
  --fs-lead: 1.6rem;
  --fs-card: 1.2rem;
  --fs-brief: 1rem;
  --fs-body: 1.0625rem;   /* 17px */
  --fs-fact: 1.125rem;    /* 18px — 5070 읽기 거리 */
  --fs-meta: 0.75rem;
  --fs-kicker: 0.68rem;

  /* 레이아웃 */
  --max: 1280px;
  --pad-x: clamp(16px, 3vw, 32px);
  --gap: 24px;
  --block: 32px;
}

/* ── reset ───────────────────────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; }
* { margin: 0; }

html { -webkit-text-size-adjust: 100%; }

body {
  background: var(--paper);
  color: var(--ink);
  font-family: var(--serif-ko);
  font-size: var(--fs-body);
  line-height: 1.6;
  overflow-x: clip;
  min-height: 100vh;
  -webkit-font-smoothing: antialiased;
}

img, svg { display: block; max-width: 100%; }
img { height: auto; }

a { color: inherit; text-decoration: none; }

button, input, select, textarea { font: inherit; color: inherit; }
button { background: none; border: 0; cursor: pointer; }
button:disabled { cursor: not-allowed; }

ul, ol { list-style: none; padding: 0; }

table { border-collapse: collapse; width: 100%; }
th { text-align: left; }

/* 숫자는 자릿수 정렬 — 환율·금액·날짜 */
.num, table, time { font-variant-numeric: tabular-nums; }

h1, h2, h3, p, li, dt, dd, figcaption, label { word-break: keep-all; overflow-wrap: break-word; }

h1, h2, h3 {
  font-family: var(--serif); font-weight: 700;
  letter-spacing: -0.015em; line-height: 1.12;
}

:focus-visible { outline: 2px solid var(--ink); outline-offset: 2px; }

[hidden] { display: none !important; }

::selection { background: var(--ink); color: var(--paper); }

/* 신문은 정적이다 — 전역 트랜지션 없음 */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; }
}
