/*!************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[3]!./src/layouts/AppShell/AppShell.module.css ***!
  \************************************************************************************************************************************************************************************************************************************************************************************/
.AppShell_shell__VFA3y {
  display: flex;
  min-height: 100vh;
}

.AppShell_body__jFyId {
  flex: 1 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
}

.AppShell_main__zcQxk {
  flex: 1 1;
  padding: var(--gds-space-xl);
  max-width: 76rem;
  width: 100%;
  min-width: 0;
}

.AppShell_centered__ge8RV {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 100vh;
  padding: var(--gds-space-lg);
}

.AppShell_status__T9hgM {
  display: flex;
  flex-direction: column;
  gap: var(--gds-space-xs);
  align-items: center;
  text-align: center;
  color: var(--gds-text-secondary);
  font-size: var(--gds-font-size-md);
  max-width: 28rem;
}

.AppShell_statusTitle__1m5Dn {
  font-size: var(--gds-font-size-xl);
  line-height: var(--gds-line-height-xl);
  font-weight: var(--gds-font-weight-bold);
  color: var(--gds-text-primary);
}

@media (max-width: 900px) {
  .AppShell_shell__VFA3y {
    /* 모바일에서는 SideNav 가 고정 드로어라 흐름에서 빠진다 */
    display: block;
  }

  .AppShell_main__zcQxk {
    padding: var(--gds-space-md);
  }
}

/*!**********************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[3]!./src/layouts/SideNav/SideNav.module.css ***!
  \**********************************************************************************************************************************************************************************************************************************************************************************/
.SideNav_nav__2jOTP {
  display: flex;
  flex-direction: column;
  gap: var(--gds-space-xl);
  width: 15.5rem;
  min-width: 15.5rem;
  padding: var(--gds-space-lg) 0 var(--gds-space-lg) var(--gds-space-lg);
  background: var(--gds-bg-page);
  border-right: 1px solid var(--gds-line-default);
  position: -webkit-sticky;
  position: sticky;
  top: 0;
  height: 100vh;
  overflow-y: auto;
}

.SideNav_brand__e6rxN {
  display: flex;
  flex-direction: column;
  gap: var(--gds-space-2xs);
  padding-right: var(--gds-space-lg);
}

.SideNav_brandTitle__2DlHB {
  font-size: var(--gds-font-size-lg);
  line-height: var(--gds-line-height-lg);
  font-weight: var(--gds-font-weight-bold);
  letter-spacing: -0.02em;
  color: var(--gds-text-primary);
}

.SideNav_brandSub__aom6R {
  font-family: var(--gds-font-family-mono);
  font-size: var(--gds-font-size-2xs);
  line-height: var(--gds-line-height-2xs);
  color: var(--gds-text-tertiary);
}

.SideNav_group__OFkFO {
  display: flex;
  flex-direction: column;
}

.SideNav_groupLabel__fIoV0 {
  font-family: var(--gds-font-family-mono);
  font-size: var(--gds-font-size-2xs);
  line-height: var(--gds-line-height-2xs);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--gds-text-tertiary);
  margin-bottom: var(--gds-space-xs);
}

/* 활성 표시는 배경 알약이 아니라 왼쪽 잉크 선 하나 */
.SideNav_link___hD5c {
  display: flex;
  align-items: baseline;
  gap: var(--gds-space-xs);
  padding: var(--gds-space-xs) var(--gds-space-md) var(--gds-space-xs) 0;
  font-size: var(--gds-font-size-md);
  line-height: var(--gds-line-height-md);
  color: var(--gds-text-secondary);
  border-left: 2px solid transparent;
  padding-left: var(--gds-space-sm);
  margin-left: calc(var(--gds-space-sm) * -1);
}

.SideNav_link___hD5c:hover {
  color: var(--gds-text-primary);
  border-left-color: var(--gds-line-strong);
}

.SideNav_active__CbAVC {
  color: var(--gds-text-primary);
  font-weight: var(--gds-font-weight-medium);
  border-left-color: var(--gds-ink-90);
}

.SideNav_step__XhQjB {
  font-family: var(--gds-font-family-mono);
  font-size: var(--gds-font-size-2xs);
  color: var(--gds-text-tertiary);
  flex-shrink: 0;
  width: 1rem;
}

.SideNav_active__CbAVC .SideNav_step__XhQjB {
  color: var(--gds-text-primary);
}

/* ---------- 모바일 헤더 + 드로어 ---------- */

.SideNav_mobileBar__wAwYq {
  display: none;
}

.SideNav_menuButton___DFSB {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.5rem;
  height: 2.5rem;
  border-radius: var(--gds-radius-md);
  border: 1px solid var(--gds-line-strong);
  background: var(--gds-bg-surface-default);
  color: var(--gds-text-primary);
  font-size: var(--gds-font-size-md);
  flex-shrink: 0;
}

.SideNav_currentLabel__nkDjs {
  font-size: var(--gds-font-size-md);
  font-weight: var(--gds-font-weight-medium);
  letter-spacing: -0.01em;
  color: var(--gds-text-primary);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.SideNav_scrim__Fr7w5 {
  display: none;
}

@media (max-width: 900px) {
  .SideNav_mobileBar__wAwYq {
    display: flex;
    align-items: center;
    gap: var(--gds-space-sm);
    padding: var(--gds-space-xs) var(--gds-space-md);
    background: var(--gds-bg-page);
    border-bottom: 1px solid var(--gds-line-default);
    position: -webkit-sticky;
    position: sticky;
    top: 0;
    z-index: var(--gds-depth-nav);
  }

  .SideNav_nav__2jOTP {
    position: fixed;
    inset: 0 auto 0 0;
    z-index: var(--gds-depth-modal);
    width: 17rem;
    min-width: 0;
    height: 100dvh;
    padding: var(--gds-space-lg);
    background: var(--gds-bg-surface-default);
    transform: translateX(-100%);
    transition: transform 0.2s ease;
    box-shadow: var(--gds-shadow-lg);
  }

  .SideNav_navOpen__ExIfo {
    transform: translateX(0);
  }

  .SideNav_scrim__Fr7w5 {
    display: block;
    position: fixed;
    inset: 0;
    z-index: var(--gds-depth-overlay);
    background: rgb(28 25 23 / 0.4);
  }

  .SideNav_link___hD5c {
    min-height: 2.75rem;
    align-items: center;
  }
}

/*!********************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[3]!./src/layouts/TopBar/TopBar.module.css ***!
  \********************************************************************************************************************************************************************************************************************************************************************************/
/* 화면 소유권을 주장하지 않는 얇은 정보 띠 */
.TopBar_bar__fvor9 {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--gds-space-sm);
  padding: var(--gds-space-xs) var(--gds-space-xl);
  border-bottom: 1px solid var(--gds-line-default);
  background: var(--gds-bg-page);
  flex-wrap: wrap;
}

.TopBar_left__97MHM,
.TopBar_right__tYbnh {
  display: flex;
  align-items: center;
  gap: var(--gds-space-sm);
  flex-wrap: wrap;
  min-width: 0;
}

.TopBar_tenant__fQ_4c {
  font-family: var(--gds-font-family-mono);
  font-size: var(--gds-font-size-2xs);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--gds-text-tertiary);
}

.TopBar_email__x5vKU {
  font-family: var(--gds-font-family-mono);
  font-size: var(--gds-font-size-2xs);
  color: var(--gds-text-secondary);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  max-width: 16rem;
}

@media (max-width: 900px) {
  .TopBar_bar__fvor9 {
    padding: var(--gds-space-2xs) var(--gds-space-md);
  }

  .TopBar_tenant__fQ_4c,
  .TopBar_slug__xQghY {
    display: none;
  }

  .TopBar_email__x5vKU {
    max-width: 9rem;
  }
}

/*!**************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[3]!./src/components/common/Card/Card.module.css ***!
  \**************************************************************************************************************************************************************************************************************************************************************************************/
/* 떠 있는 카드가 아니라 얹힌 종이 한 장. 그림자 없이 헤어라인으로만 구분한다. */
.Card_card__WToJC {
  background: var(--gds-bg-surface-default);
  border: 1px solid var(--gds-line-default);
  border-radius: var(--gds-radius-lg);
  padding: var(--gds-space-lg);
  margin-bottom: var(--gds-space-md);
}

.Card_card__WToJC:last-child {
  margin-bottom: 0;
}

@media (max-width: 700px) {
  .Card_card__WToJC {
    padding: var(--gds-space-md);
  }
}

/*!****************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[3]!./src/components/common/Badge/Badge.module.css ***!
  \****************************************************************************************************************************************************************************************************************************************************************************************/
/* 라벨은 알약이 아니라 도장에 가깝게 — 각지고, 채우지 않고, 선으로만 구분한다. */
.Badge_badge__ax0Ud {
  display: inline-flex;
  align-items: center;
  gap: var(--gds-space-2xs);
  padding: 0 var(--gds-space-2xs);
  height: 1.25rem;
  border-radius: var(--gds-radius-sm);
  border: 1px solid;
  background: transparent;
  font-family: var(--gds-font-family-mono);
  font-size: var(--gds-font-size-2xs);
  line-height: 1;
  letter-spacing: 0.02em;
  white-space: nowrap;
}

.Badge_positive__PLOsR {
  color: var(--gds-status-positive);
  border-color: var(--gds-status-positive-line);
  background: var(--gds-status-positive-subtle);
}

.Badge_caution__wNPxm {
  color: var(--gds-status-caution);
  border-color: var(--gds-status-caution-line);
  background: var(--gds-status-caution-subtle);
}

.Badge_neutral__4GdCM {
  color: var(--gds-status-neutral);
  border-color: var(--gds-status-neutral-line);
}

.Badge_negative__6FEzX {
  color: var(--gds-status-negative);
  border-color: var(--gds-status-negative-line);
  background: var(--gds-status-negative-subtle);
}

.Badge_info__ezmQp {
  color: var(--gds-status-info);
  border-color: var(--gds-status-info-line);
}

.Badge_special__MIifv {
  color: var(--gds-status-special);
  border-color: var(--gds-status-special-line);
}

/*!******************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[3]!./src/components/common/Button/Button.module.css ***!
  \******************************************************************************************************************************************************************************************************************************************************************************************/
.Button_button__kf4LD {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--gds-space-2xs);
  padding: var(--gds-space-xs) var(--gds-space-md);
  border-radius: var(--gds-radius-md);
  font-size: var(--gds-font-size-md);
  line-height: var(--gds-line-height-md);
  font-weight: var(--gds-font-weight-medium);
  letter-spacing: -0.01em;
  transition: background 0.12s ease, border-color 0.12s ease;
}

.Button_button__kf4LD:disabled {
  opacity: 0.4;
  cursor: not-allowed;
}

/* 주 동작은 잉크로 채운다 — 화면에서 가장 진한 것이 가장 중요한 것이다 */
.Button_primary__Q2Cf4 {
  background: var(--gds-component-primary);
  color: var(--gds-text-inverse);
  border: 1px solid var(--gds-component-primary);
}

.Button_primary__Q2Cf4:not(:disabled):hover {
  background: var(--gds-component-primary-hover);
}

.Button_ghost__DqyOG {
  background: transparent;
  color: var(--gds-text-primary);
  border: 1px solid var(--gds-line-strong);
}

.Button_ghost__DqyOG:not(:disabled):hover {
  background: var(--gds-bg-surface-hover);
  border-color: var(--gds-ink-50);
}

.Button_small__EJsnr {
  padding: var(--gds-space-2xs) var(--gds-space-xs);
  font-size: var(--gds-font-size-sm);
  line-height: var(--gds-line-height-sm);
}

@media (max-width: 900px) {
  .Button_button__kf4LD {
    min-height: 2.75rem;
  }

  .Button_small__EJsnr {
    min-height: 2.5rem;
    padding: var(--gds-space-2xs) var(--gds-space-sm);
  }
}

/*!**************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[3]!./src/components/common/PageHeader/PageHeader.module.css ***!
  \**************************************************************************************************************************************************************************************************************************************************************************************************/
.PageHeader_header__mfnKO {
  display: flex;
  flex-direction: column;
  gap: var(--gds-space-xs);
  padding-bottom: var(--gds-space-md);
  margin-bottom: var(--gds-space-lg);
  border-bottom: 1px solid var(--gds-ink-90);
}

.PageHeader_title__Nw1Nj {
  font-size: var(--gds-font-size-4xl);
  line-height: var(--gds-line-height-4xl);
  font-weight: var(--gds-font-weight-bold);
  letter-spacing: -0.025em;
  color: var(--gds-text-primary);
}

.PageHeader_description___oZ_I {
  font-size: var(--gds-font-size-md);
  line-height: var(--gds-line-height-lg);
  color: var(--gds-text-secondary);
  max-width: 44rem;
}

@media (max-width: 700px) {
  .PageHeader_title__Nw1Nj {
    font-size: var(--gds-font-size-2xl);
    line-height: var(--gds-line-height-2xl);
  }

  .PageHeader_header__mfnKO {
    margin-bottom: var(--gds-space-md);
  }
}

/*!****************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[3]!./src/components/common/Meter/Meter.module.css ***!
  \****************************************************************************************************************************************************************************************************************************************************************************************/
.Meter_meter__RoiFD {
  display: flex;
  align-items: center;
  gap: var(--gds-space-xs);
}

.Meter_track__xmrDy {
  flex: 1 1;
  height: 0.375rem;
  min-width: var(--gds-space-3xl);
  background: var(--gds-paper-40);
  border-radius: var(--gds-radius-sm);
  overflow: hidden;
}

.Meter_fill__fmQsa {
  height: 100%;
  transition: width 0.25s ease;
}

.Meter_accent___sHMI {
  background: var(--gds-ink-80);
}

.Meter_positive__8u3DT {
  background: var(--gds-status-positive);
}

.Meter_caution__U0UA_ {
  background: var(--gds-status-caution);
}

.Meter_label__zx5lC {
  font-family: var(--gds-font-family-mono);
  font-size: var(--gds-font-size-xs);
  line-height: var(--gds-line-height-xs);
  color: var(--gds-text-secondary);
  min-width: 2.5rem;
  text-align: right;
  font-feature-settings: "tnum";
  font-variant-numeric: tabular-nums;
}

/*!********************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[3]!./src/components/common/Callout/Callout.module.css ***!
  \********************************************************************************************************************************************************************************************************************************************************************************************/
/* 여백 위에 얹는 상자가 아니라, 왼쪽에 굵은 선을 그은 방주(傍註) */
.Callout_callout__PZ_Mi {
  display: flex;
  flex-direction: column;
  gap: var(--gds-space-2xs);
  padding: var(--gds-space-sm) var(--gds-space-md);
  border-left: 2px solid;
  margin: var(--gds-space-md) 0;
}

.Callout_info__ZdpMi {
  border-color: var(--gds-status-info);
  background: var(--gds-status-info-subtle);
}

.Callout_caution__9Mt5m {
  border-color: var(--gds-status-caution);
  background: var(--gds-status-caution-subtle);
}

.Callout_title__s4bKS {
  font-family: var(--gds-font-family-mono);
  font-size: var(--gds-font-size-2xs);
  line-height: var(--gds-line-height-2xs);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--gds-text-primary);
}

.Callout_body__wLkLI {
  font-size: var(--gds-font-size-sm);
  line-height: var(--gds-line-height-md);
  color: var(--gds-text-secondary);
}

/*!**************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[3]!./src/components/common/EmptyState/EmptyState.module.css ***!
  \**************************************************************************************************************************************************************************************************************************************************************************************************/
.EmptyState_empty__YIshS {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--gds-space-xs);
  padding: var(--gds-space-2xl) 0;
  border-top: 1px solid var(--gds-line-default);
  border-bottom: 1px solid var(--gds-line-default);
}

.EmptyState_title__DJJJO {
  font-size: var(--gds-font-size-xl);
  line-height: var(--gds-line-height-xl);
  font-weight: var(--gds-font-weight-bold);
  letter-spacing: -0.02em;
  color: var(--gds-text-primary);
}

.EmptyState_hint__qGZJu {
  font-size: var(--gds-font-size-sm);
  line-height: var(--gds-line-height-md);
  color: var(--gds-text-secondary);
  max-width: 34rem;
}

.EmptyState_action__EvaHn {
  margin-top: var(--gds-space-xs);
}

/*!****************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[10].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[10].use[3]!./src/lib/styles/theme/color.css ***!
  \****************************************************************************************************************************************************************************************************************************************************************************/
/* ============================================================
 * GDS color tokens — source of truth
 *
 * 방향: 종이와 잉크(paper & ink).
 * 이 제품이 다루는 것은 "출처가 달린 근거"다. 화면은 홍보 페이지가 아니라
 * 열람하는 기록에 가까워야 한다. 그래서 차가운 회색-파랑 대신 따뜻한 종이 바탕에
 * 잉크색 글자를 쓰고, 색은 신호로만 아껴 쓴다.
 *
 * 상태색 의미: pine=근거 강함 / ochre=근거 약함 / stone=근거 없음 / oxblood=경고·삭제
 * 이 파일에서만 raw hex 를 쓴다. 사용처는 토큰만 참조한다.
 * ============================================================ */

:root {
  /* ---------- primitive: paper (따뜻한 무채색) ---------- */
  --gds-paper-10: #fdfcfa;
  --gds-paper-20: #faf8f4;
  --gds-paper-30: #f4f1ea;
  --gds-paper-40: #eae5da;
  --gds-paper-50: #ddd6c8;

  /* ---------- primitive: ink ---------- */
  --gds-ink-40: #a8a29a;
  --gds-ink-50: #8a837a;
  --gds-ink-60: #6b645b;
  --gds-ink-70: #4a443d;
  --gds-ink-80: #2e2a25;
  --gds-ink-90: #1c1917;
  --gds-ink-100: #100e0d;

  /* ---------- primitive: pine (주 액센트 · 근거 강함) ---------- */
  --gds-pine-10: #eef4f2;
  --gds-pine-20: #d5e5e0;
  --gds-pine-30: #a9cbc2;
  --gds-pine-60: #2c6a5e;
  --gds-pine-70: #1f4e46;
  --gds-pine-80: #163a34;

  /* ---------- primitive: ochre (근거 약함 · 주의) ---------- */
  --gds-ochre-10: #faf3e6;
  --gds-ochre-20: #f2e5c9;
  --gds-ochre-30: #e3cf9e;
  --gds-ochre-70: #8a6420;
  --gds-ochre-80: #6b4d18;

  /* ---------- primitive: oxblood (경고 · 파괴적 동작) ---------- */
  --gds-oxblood-10: #f9efec;
  --gds-oxblood-30: #e5c2b8;
  --gds-oxblood-70: #8c3021;
  --gds-oxblood-80: #6d2419;

  /* ---------- primitive: slate (정보 · 중립 강조) ---------- */
  --gds-slate-10: #eef1f4;
  --gds-slate-30: #c4cdd6;
  --gds-slate-70: #3f5162;

  /* ---------- primitive: plum (특수 · 확장 표시) ---------- */
  --gds-plum-10: #f4eff3;
  --gds-plum-30: #d6c2d0;
  --gds-plum-70: #5c3550;

  --gds-white: #ffffff;

  /* ---------- semantic: text ---------- */
  --gds-text-primary: var(--gds-ink-90);
  --gds-text-secondary: var(--gds-ink-60);
  --gds-text-tertiary: var(--gds-ink-50);
  --gds-text-inverse: var(--gds-paper-10);
  --gds-text-accent: var(--gds-pine-70);
  --gds-text-danger: var(--gds-oxblood-70);

  /* ---------- semantic: background ---------- */
  --gds-bg-page: var(--gds-paper-20);
  --gds-bg-surface-default: var(--gds-paper-10);
  --gds-bg-surface-sunken: var(--gds-paper-30);
  --gds-bg-surface-hover: var(--gds-paper-30);
  --gds-bg-accent-subtle: var(--gds-pine-10);
  --gds-bg-inverse: var(--gds-ink-90);

  /* ---------- semantic: component ---------- */
  --gds-component-primary: var(--gds-ink-90);
  --gds-component-primary-hover: var(--gds-ink-100);
  --gds-component-primary-subtle: var(--gds-paper-40);

  /* ---------- semantic: line ---------- */
  --gds-line-default: var(--gds-paper-40);
  --gds-line-strong: var(--gds-paper-50);
  --gds-line-accent: var(--gds-pine-70);

  /* ---------- semantic: status ---------- */
  --gds-status-positive: var(--gds-pine-70);
  --gds-status-positive-subtle: var(--gds-pine-10);
  --gds-status-positive-line: var(--gds-pine-30);
  --gds-status-caution: var(--gds-ochre-70);
  --gds-status-caution-subtle: var(--gds-ochre-10);
  --gds-status-caution-line: var(--gds-ochre-30);
  --gds-status-neutral: var(--gds-ink-60);
  --gds-status-neutral-subtle: var(--gds-paper-30);
  --gds-status-neutral-line: var(--gds-paper-50);
  --gds-status-negative: var(--gds-oxblood-70);
  --gds-status-negative-subtle: var(--gds-oxblood-10);
  --gds-status-negative-line: var(--gds-oxblood-30);
  --gds-status-info: var(--gds-slate-70);
  --gds-status-info-subtle: var(--gds-slate-10);
  --gds-status-info-line: var(--gds-slate-30);
  --gds-status-special: var(--gds-plum-70);
  --gds-status-special-subtle: var(--gds-plum-10);
  --gds-status-special-line: var(--gds-plum-30);
}

/*!*********************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[10].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[10].use[3]!./src/lib/styles/theme/typography.css ***!
  \*********************************************************************************************************************************************************************************************************************************************************************************/
/* ============================================================
 * GDS typography tokens — source of truth
 * ============================================================ */

:root {
  --gds-font-size-2xs: 0.6875rem; /* 11 */
  --gds-font-size-xs: 0.75rem; /* 12 */
  --gds-font-size-sm: 0.8125rem; /* 13 */
  --gds-font-size-md: 0.875rem; /* 14 */
  --gds-font-size-lg: 1rem; /* 16 */
  --gds-font-size-xl: 1.125rem; /* 18 */
  --gds-font-size-2xl: 1.25rem; /* 20 */
  --gds-font-size-3xl: 1.5rem; /* 24 */
  --gds-font-size-4xl: 1.75rem; /* 28 */
  --gds-font-size-5xl: 2rem; /* 32 */
  --gds-font-size-6xl: 2.5rem; /* 40 */

  --gds-line-height-2xs: 1rem;
  --gds-line-height-xs: 1.125rem;
  --gds-line-height-sm: 1.25rem;
  --gds-line-height-md: 1.375rem;
  --gds-line-height-lg: 1.5rem;
  --gds-line-height-xl: 1.625rem;
  --gds-line-height-2xl: 1.75rem;
  --gds-line-height-3xl: 2rem;
  --gds-line-height-4xl: 2.25rem;
  --gds-line-height-5xl: 2.5rem;
  --gds-line-height-6xl: 3rem;

  --gds-font-weight-regular: 400;
  --gds-font-weight-medium: 500;
  --gds-font-weight-bold: 700;
}

/*!***********************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[10].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[10].use[3]!./src/lib/styles/global.css ***!
  \***********************************************************************************************************************************************************************************************************************************************************************/
/* ============================================================
 * GDS layout tokens — source of truth (spacing / radius / shadow / depth)
 *
 * 방향: 카드와 그림자로 띄우지 않고, 헤어라인과 여백으로 나눈다.
 * 모서리는 거의 각지게 둔다 — 둥근 카드가 겹칠수록 화면이 물러진다.
 * ============================================================ */

:root {
  --gds-space-2xs: 0.25rem; /* 4 */
  --gds-space-xs: 0.5rem; /* 8 */
  --gds-space-sm: 0.75rem; /* 12 */
  --gds-space-md: 1rem; /* 16 */
  --gds-space-lg: 1.5rem; /* 24 */
  --gds-space-xl: 2rem; /* 32 */
  --gds-space-2xl: 3rem; /* 48 */
  --gds-space-3xl: 4rem; /* 64 */

  --gds-radius-sm: 0.125rem; /* 2 */
  --gds-radius-md: 0.1875rem; /* 3 */
  --gds-radius-lg: 0.25rem; /* 4 */
  --gds-radius-xl: 0.375rem; /* 6 */
  --gds-radius-pill: 62.5rem;

  /* 그림자는 떠 있어야 하는 것(드로어)에만 쓴다 */
  --gds-shadow-sm: none;
  --gds-shadow-md: none;
  --gds-shadow-lg: 0 0 0 1px rgb(28 25 23 / 0.06), 0 16px 40px rgb(28 25 23 / 0.18);

  --gds-depth-base: 0;
  --gds-depth-nav: 100;
  --gds-depth-overlay: 200;
  --gds-depth-modal: 300;
  --gds-depth-toast: 400;

  --gds-font-family-base:
    'Pretendard Variable', Pretendard, -apple-system, BlinkMacSystemFont, system-ui,
    'Apple SD Gothic Neo', 'Noto Sans KR', sans-serif;
  /* 출처·지문·수치처럼 "기록"으로 읽혀야 하는 값에 쓴다 */
  --gds-font-family-mono: ui-monospace, SFMono-Regular, 'SF Mono', Menlo, monospace;
}

/* ---------- reset ---------- */

*,
*::before,
*::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

html,
body {
  height: 100%;
}

body {
  font-family: var(--gds-font-family-base);
  font-size: var(--gds-font-size-md);
  line-height: var(--gds-line-height-md);
  color: var(--gds-text-primary);
  background: var(--gds-bg-page);
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}

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

button {
  font: inherit;
  color: inherit;
  background: none;
  border: none;
  cursor: pointer;
}

ul,
ol {
  list-style: none;
}

::selection {
  background: var(--gds-pine-20);
}

/* ---------- 공용 타이포 유틸 ---------- */

/* 섹션 위에 붙는 작은 분류 라벨. 대문자·자간으로 본문과 층을 나눈다. */
.eyebrow {
  font-family: var(--gds-font-family-mono);
  font-size: var(--gds-font-size-2xs);
  line-height: var(--gds-line-height-2xs);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--gds-text-tertiary);
}

/* iOS 확대 방지 — 입력 요소 기본 글자 크기 확보 */
@media (max-width: 900px) {
  input,
  select,
  textarea {
    font-size: var(--gds-font-size-lg);
  }
}

