/* ====== 전역 reset — 기존 normalize 대체 ====== */
*,*::before,*::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
body {
  background: var(--bg);
  color: var(--ink);
  font-family: var(--font-sans);
  font-size: var(--fs-15);
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}
a { color: inherit; text-decoration: none; }
a:hover { text-decoration: underline; }
button { background: none; border: none; padding: 0; cursor: pointer; font: inherit; color: inherit; }
input, textarea, select { font-family: inherit; }
img, svg { display: block; max-width: 100%; }
ul, ol { margin: 0; padding: 0; list-style: none; }
table { border-collapse: collapse; width: 100%; table-layout: auto; }
h1, h2, h3 { font-family: var(--font-serif); margin: 0; }
::selection { background: var(--accent); color: #fff; }
.hidden { display: none !important; }

/* 한국어 단어 분리 차단 — 모든 텍스트 노드에 상속 강제 */
body, body * {
  word-break: keep-all;
  overflow-wrap: break-word;
  line-break: strict;
}

/* 모션 정지 (stagger 금지) */
@media (prefers-reduced-motion: reduce) {
  *,*::before,*::after { animation: none !important; transition: none !important; }
}
.stagger, [data-stagger], [data-fade], [data-rise] {
  animation: none !important; opacity: 1 !important; transform: none !important;
}

/* 그라디언트·큰 일러스트 금지 (스켈레톤 shimmer는 명시적 예외로 별도 처리) */
body *::before, body *::after { background-image: none !important; }
.skel-line, .skel-line::before, .skel-line::after { background-image: revert !important; }
