/* ============================================================
   base.css — reset + 기본 타이포 + 공통 요소
   ============================================================ */
*, *::before, *::after { box-sizing: border-box; }
html, body { height: 100%; }
body {
  margin: 0;
  font-family: var(--font-base);
  font-size: var(--fs-14);
  font-weight: var(--fw-regular);
  color: var(--c-text);
  background: var(--c-bg-soft);
  line-height: 1.45;
  -webkit-font-smoothing: auto;   /* 실서비스와 동일(auto) — antialiased는 글자가 더 얇게 보임 */
  text-rendering: optimizeLegibility;
}
h1, h2, h3, h4, p, ul, ol, figure { margin: 0; padding: 0; }
ul, ol { list-style: none; }
a { color: var(--c-primary); text-decoration: none; }
a:hover { text-decoration: underline; }
button { font-family: inherit; font-size: inherit; cursor: pointer; border: none; background: none; color: inherit; }
input, select, textarea { font-family: inherit; font-size: inherit; color: var(--c-text); }
table { border-collapse: collapse; width: 100%; }
img, svg { display: block; }
:focus-visible { outline: 2px solid var(--c-primary); outline-offset: 1px; }

/* 타이포 유틸 */
.h1 { font-size: var(--fs-24); font-weight: var(--fw-bold); }
.h2 { font-size: var(--fs-20); font-weight: var(--fw-bold); }
.h3 { font-size: var(--fs-18); font-weight: var(--fw-bold); }
.t-strong { font-weight: var(--fw-bold); }
.t-medium { font-weight: var(--fw-medium); }
.t-label { font-size: var(--fs-13); color: var(--c-text-2); }
.t-caption { font-size: var(--fs-12); color: var(--c-text-3); }
.t-muted { color: var(--c-text-3); }
.t-primary { color: var(--c-primary); }
.t-error { color: var(--c-error); }
.req { white-space: nowrap; }
.req::after { content: "*"; margin-left: 2px; color: var(--c-required); font-weight: var(--fw-bold); }

/* 스크롤바(웹킷) */
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-thumb { background: #c7ccd3; border-radius: 6px; border: 2px solid transparent; background-clip: content-box; }
::-webkit-scrollbar-thumb:hover { background: #aab1ba; background-clip: content-box; }
::-webkit-scrollbar-track { background: transparent; }

.hidden { display: none !important; }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
.icon { width: 18px; height: 18px; fill: currentColor; flex: none; }
.icon-sm { width: 14px; height: 14px; }
.icon-lg { width: 22px; height: 22px; }
