/* base.css — 모든 페이지가 함께 쓰는 뼈대예요.
 * 여기 있는 것만 고치면 6개 페이지 전부에 반영돼요.
 * 담는 것: 기본 리셋 · 레이아웃(.wrap) · 네비 · 버튼
 *          · 섹션 공통 · CTA · 푸터 · 딥씨(심해) 존 · 페이지 헤더 · 공통 반응형/모션
 * 페이지 전용 스타일은 각 페이지 CSS(home/about/service/expert/contact/test)에 있어요.
 * 디자인 토큰(tokens.css)은 @import가 아니라 각 html <head>에서 별도 <link>로 불러와요
 * — @import는 base.css를 받은 뒤에야 순서대로(직렬로) 요청돼서, 페이지 이동마다
 * 화면이 스타일 안 입은 채로 잠깐 보이는 원인이 됐어요.
 */

/* ── 네비 메뉴·CONTACT 버튼 전용 폰트(Roboto) — 구글 서버 대신 자체 호스팅 ──
 * 외부 서버 응답 속도에 따라 폰트가 그때그때 다르게 보이는 걸 막으려고,
 * 실제 쓰는 굵기(500·700)만 담은 파일 하나를 사이트 안에 넣어뒀어요.
 * (assets/fonts/roboto-latin.woff2, 두 굵기 다 이 파일 하나로 커버돼요) */
@font-face {
  font-family: "Roboto";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("assets/fonts/roboto-latin.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215;
}
@font-face {
  font-family: "Roboto";
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("assets/fonts/roboto-latin.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215;
}

/* ── 기본 ─────────────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; }

/* overflow-x만 clip이면 overflow-y도 clip으로 계산돼 스크롤이 막힘 — y축을 명시 */
html { overflow-x: clip; overflow-y: auto; scroll-behavior: smooth; }
body { overflow-x: clip; overflow-y: visible; }

body {
  margin: 0;
  background: var(--color-paper);
  color: var(--color-ink);
  font-family: var(--font-body);
  font-size: var(--text-base);
  font-weight: 400;
  line-height: 1.65;
  word-break: keep-all;
  padding-inline: max(0px, env(safe-area-inset-left));
}

h1, h2, h3 {
  font-family: var(--font-display);
  font-weight: 700;
  line-height: 1.25;
  letter-spacing: -0.012em;
  margin: 0;
  overflow-wrap: anywhere;
  min-width: 0;
}

p { margin: 0; }

a { color: inherit; }

:focus-visible {
  outline: 2px solid var(--color-focus);
  outline-offset: 3px;
  border-radius: 2px;
}

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

.wrap {
  max-width: 68rem;
  margin-inline: auto;
  padding-inline: clamp(1.25rem, 4vw, 2.5rem);
}

.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
  border: 0;
}

/* ── 네비 · N5 플로팅 필 ──────────────────────── */
.nav-pill {
  position: fixed;
  top: var(--space-md);
  left: 50%;
  transform: translateX(-50%);
  display: inline-flex;
  align-items: center;
  gap: var(--space-lg);
  padding: 0.5rem 0.75rem 0.5rem 1.25rem;
  background: color-mix(in oklch, var(--color-paper) 82%, transparent);
  backdrop-filter: blur(14px) saturate(120%);
  -webkit-backdrop-filter: blur(14px) saturate(120%);
  border: var(--rule-hair) solid var(--color-rule-2);
  border-radius: var(--radius-pill);
  box-shadow: var(--shadow-pill);
  z-index: var(--z-sticky);
  white-space: nowrap;
}

.wordmark {
  display: inline-flex;
  align-items: center;
  gap: 0.45em;
  font-weight: 800;
  font-size: 1.0625rem;
  text-decoration: none;
  letter-spacing: -0.01em;
}

.wordmark__core { flex: none; }
.wordmark__full { flex: none; display: block; height: 18px; width: auto; }

.nav-pill__links {
  display: flex;
  gap: var(--space-md);
  list-style: none;
  margin: 0;
  padding: 0;
}

.nav-pill__links a {
  font-family: Roboto, sans-serif;
  font-size: 14px;
  font-weight: 500;
  line-height: 1.5;
  letter-spacing: .05em;
  color: var(--color-ink-2);
  text-decoration: none;
  padding: 0.5rem 0.25rem;
  transition: color var(--dur-micro) var(--ease-out);
}

.nav-pill__links a:hover { color: var(--color-ink); }

.nav-pill__links a[aria-current="page"] {
  color: var(--color-accent);
  font-weight: 700;
}

/* CONTACT도 메뉴 항목 — 메뉴 타이포 반영(글자색·두께는 .btn 값 유지) */
.nav-pill .btn {
  font-family: Roboto, sans-serif;
  font-size: 14px;
  line-height: 1.5;
  letter-spacing: .05em;
}

/* ── 버튼 ─────────────────────────────────────── */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  padding: 0.75rem 1.5rem;
  border: none;
  border-radius: var(--radius-pill);
  background: var(--color-accent);
  color: var(--color-accent-ink);
  font-family: var(--font-body);
  font-size: var(--text-base);
  font-weight: 700;
  text-decoration: none;
  white-space: nowrap;
  cursor: pointer;
  transition: background-color var(--dur-short) var(--ease-out),
              transform var(--dur-micro) var(--ease-out);
}

.btn:hover {
  background: var(--color-accent-deep);
  transform: translateY(-1.5px);
}

.btn:active { transform: translateY(0); }

.btn--sm { min-height: 40px; padding: 0.5rem 1.25rem; font-size: var(--text-sm); }

.link-quiet {
  font-weight: 500;
  color: var(--color-ink-2);
  text-decoration: underline;
  text-decoration-color: var(--color-rule);
  text-underline-offset: 0.3em;
  white-space: nowrap;
  transition: text-decoration-color var(--dur-micro) var(--ease-out),
              color var(--dur-micro) var(--ease-out);
}

.link-quiet:hover { color: var(--color-ink); text-decoration-color: var(--color-accent); }

/* ── 섹션 공통 (S2 행잉 헤드 — 세로 스택) ─────── */
section h2 {
  font-size: var(--text-2xl);
  font-weight: 700;
  line-height: 1.16;
  letter-spacing: -0.018em;
}

.section-intro {
  margin-block-start: var(--space-md);
  max-width: 36rem;
  color: var(--color-muted);
}

/* 킥커 — 섹션 제목 위 편집형 라벨 */
.kicker {
  display: inline-flex;
  align-items: center;
  gap: 0.6em;
  margin-block-end: var(--space-sm);
  font-size: var(--text-sm);
  font-weight: 700;
  letter-spacing: 0.02em;
  color: var(--color-accent);
}
.kicker::before {
  content: "";
  inline-size: 1.6rem;
  block-size: 2px;
  border-radius: 2px;
  background: var(--color-accent);
}

/* ── CTA ──────────────────────────────────────── */
.contact { padding-block: var(--space-3xl); }

.contact__card {
  background: var(--color-paper-2);
  border-radius: var(--radius-md);
  padding: clamp(var(--space-xl), 5vw, var(--space-2xl));
  display: grid;
  gap: var(--space-md);
  justify-items: start;
}

.contact__card h2 { font-size: var(--text-xl); }
.contact__card p { max-width: 34rem; color: var(--color-ink-2); }
.contact__card .btn { margin-block-start: var(--space-xs); }
.contact__soft { font-size: var(--text-sm); color: var(--color-muted); }

/* ── 푸터 · Ft5 스테이트먼트 ──────────────────── */
.foot-stmt { padding-block: var(--space-2xl) var(--space-xl); }

.foot-stmt__line {
  font-family: var(--font-display);
  font-size: clamp(1.6rem, 4.5vw, 2.9rem);
  font-weight: 300;
  line-height: 1.2;
  letter-spacing: -0.015em;
  max-width: 22ch;
}

.foot-stmt__meta {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: var(--space-md);
  flex-wrap: wrap;
  margin-block-start: var(--space-xl);
  padding-block-start: var(--space-md);
  border-block-start: var(--rule-hair) solid var(--color-rule);
  font-size: var(--text-sm);
  color: var(--color-muted);
}

/* ── 물결 경계 — 아이보리 → 심해 ── */
.wave-divider {
  display: block;
  width: 100%;
  height: clamp(44px, 7vw, 90px);
  margin-block-end: -1px;
}

.wave-divider__back { fill: color-mix(in oklch, var(--color-teal) 42%, var(--color-paper)); opacity: 0.55; }
.wave-divider__front { fill: var(--color-deep); }

.deep--wave { border-block-start: 0; }

/* ── 딥씨 존 — 하단부 심해 네이비 (풀블리드, 진주 반전) ── */
.deep {
  background: var(--color-deep);
  color: var(--color-on-deep);
  /* 수면→심해로 내려가는 부드러운 진입 */
  border-block-start: var(--rule-hair) solid color-mix(in oklch, var(--color-teal) 40%, var(--color-deep));
  padding-block-start: var(--space-lg);
}

.deep .contact { padding-block: var(--space-section) var(--space-2xl); }

/* 딥씨 위 CTA 카드 — 한 단계 밝은 면 */
.deep .contact__card {
  background: var(--color-deep-2);
  border: var(--rule-hair) solid var(--color-deep-rule);
}
.deep .contact__card h2 { color: var(--color-on-deep); }
.deep .contact__card p { color: var(--color-on-deep-2); }
.deep .contact__soft { color: var(--color-on-deep-3); }

/* 딥씨 위 푸터 */
.deep .foot-stmt { padding-block: var(--space-md) var(--space-2xl); }
.deep .foot-stmt__line { color: var(--color-on-deep); }
.deep .foot-stmt__meta {
  color: var(--color-on-deep-3);
  border-block-start-color: var(--color-deep-rule);
}
.deep .foot-stmt__meta a { color: var(--color-on-deep-2); }
.deep .foot-stmt__meta a:hover { color: var(--color-accent); }

/* 워드마크 반전 — 잉크 글자는 아이보리로, 코럴 스파클은 유지 */
.deep .wordmark__full g[fill] { fill: var(--color-paper); }

/* ── 내부 페이지 헤더 (about · service · quiz) ── */
.page-hero { padding-block: clamp(7rem, 13vh, 8.5rem) var(--space-xl); }

.page-hero h1 {
  font-size: var(--text-display-s);
  max-width: 20ch;
}

.page-hero .lede {
  margin-block-start: var(--space-md);
  max-width: 36rem;
  font-size: var(--text-md);
  color: var(--color-ink-2);
}

/* ── 반응형 (공통) ── */
@media (max-width: 40rem) {
  /* 4페이지가 되면서 모바일에서도 링크가 보여야 함 — 필을 2단으로 랩 */
  .nav-pill {
    width: calc(100% - 1.5rem);
    max-width: 26rem;
    flex-wrap: wrap;
    justify-content: space-between;
    gap: 0 var(--space-sm);
    padding: 0.5rem 0.75rem 0.35rem 1rem;
    border-radius: 22px;
  }
  .nav-pill__links {
    order: 3;
    flex-basis: 100%;
    justify-content: space-between;
    gap: var(--space-xs);
    margin-block-start: 0.35rem;
    padding-block-start: 0.2rem;
    border-block-start: var(--rule-hair) solid var(--color-rule-2);
    overflow-x: auto;
    scrollbar-width: none;
  }
  .nav-pill__links::-webkit-scrollbar { display: none; }
  .nav-pill__links a { font-size: 0.8125rem; padding: 0.45rem 0.1rem; }
  .page-hero { padding-block-start: 8.5rem; }
}

@media (pointer: coarse) {
  .btn { min-height: 48px; }
}

/* ── 공유: 스테이지 뱃지 · 태그 · 타임라인 스텝 · 아이콘 젬 ── */
.stage {
  display: block;
  font-size: var(--text-sm);
  font-weight: 700;
  color: var(--color-accent);
  letter-spacing: 0.06em;
}

.way__tag {
  display: inline-block;
  margin-block-start: var(--space-xs);
  padding: 0.125rem 0.75rem;
  border-radius: var(--radius-pill);
  background: var(--color-paper-3);
  color: var(--color-ink-2);
  font-size: var(--text-sm);
  font-weight: 500;
}

.way { padding-block: var(--space-section); }

.way__steps {
  list-style: none;
  margin: var(--space-2xl) 0 0;
  padding: 0;
  display: grid;
  gap: 0;
  max-width: 44rem;
}

.way__steps li {
  position: relative;
  display: flex;
  align-items: center;
  gap: var(--space-2xl);
  padding: var(--space-xl) 0 var(--space-xl) calc(var(--space-xl) + 0.75rem);
  border-block-start: var(--rule-hair) solid var(--color-rule);
}

.way__content { flex: 1; }

.way__icon {
  flex-shrink: 0;
  width: clamp(64px, 8vw, 100px);
  height: auto;
  overflow: visible;
}

.way__steps li:first-child { border-block-start: none; padding-block-start: var(--space-md); }

.way__steps li::before {
  content: "";
  position: absolute;
  left: 0.5rem;
  top: 0;
  bottom: 0;
  width: 2px;
  background: var(--color-rule-2);
}

.way__steps li::after {
  content: "";
  position: absolute;
  left: calc(0.5rem - 5px);
  top: calc(var(--space-xl) + 0.5rem);
  width: 12px;
  height: 12px;
  border-radius: 50%;
  background: var(--color-accent);
  border: 3px solid var(--color-paper);
}

.way__steps li:first-child::after { top: calc(var(--space-md) + 0.5rem); }

.way__steps h3 {
  margin-block-start: var(--space-2xs);
  font-size: var(--text-lg);
  font-weight: 600;
}

.way__steps p { margin-block-start: var(--space-sm); max-width: 36rem; color: var(--color-muted); }

/* 아이콘 젬 애니메이션 — dm-live 공유 */
@keyframes dm-live {
  0%, 100% {
    transform: translateY(6px) scale(0.97) rotate(-2.4deg);
    filter: drop-shadow(0 8px 14px color-mix(in oklch, var(--color-accent) 26%, transparent));
  }
  50% {
    transform: translateY(-8px) scale(1.04) rotate(2.4deg);
    filter: drop-shadow(0 16px 28px color-mix(in oklch, var(--color-accent) 42%, transparent));
  }
}

.way-icon__gem {
  transform-box: fill-box;
  transform-origin: center;
  animation: dm-live 3s var(--ease-in-out) infinite;
}

@media (max-width: 40rem) {
  .way__steps li { padding-inline-start: var(--space-lg); }
  .way__icon { display: none; }
}

/* ── 모션 축소 (공통) ── */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after {
    animation-duration: 150ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 150ms !important;
  }
  .reveal { animation: reveal-reduced 150ms linear forwards; }
  @keyframes reveal-reduced { to { opacity: 1; transform: none; } }
}
