/* ═══════════════════════════════════════════════════════════════════════════
   KLPARTNERS — Mobile only (≤880px)
   세로 스크롤만 허용 · 가독성 · 후기 가로 슬라이드
   ═══════════════════════════════════════════════════════════════════════════ */

html {
  overflow-x: clip;
  max-width: 100%;
}

body,
#root {
  overflow-x: clip;
  max-width: 100%;
  width: 100%;
}

body {
  font-size: 16px;
  line-height: 1.72;
  -webkit-text-size-adjust: 100%;
}

/* 세로 스크롤 우선 — 메뉴 닫힘 시 가로 제스처가 페이지 스크롤을 막지 않도록 */
body:not(.is-menu-open) {
  touch-action: pan-y pinch-zoom;
  overflow-y: auto;
}

body:not(.is-menu-open) {
  padding-bottom: calc(60px + env(safe-area-inset-bottom, 0));
}

.container {
  width: 100%;
  max-width: 100%;
  min-width: 0;
}

.section,
.hero,
.site-header,
.site-mobile-menu,
.footer {
  max-width: 100%;
  min-width: 0;
}

/* 가로 슬라이드 애니메이션은 모바일에서 세로만 — 레이아웃 넘침·스크롤 끊김 방지 */
.reveal-left:not(.in),
.reveal-right:not(.in) {
  transform: translate3d(0, 28px, 0);
}

img,
video,
.hero-bg-img {
  max-width: 100%;
}

/* ─── Typography & readability ─── */
.h-section,
.h-display,
.lede,
p,
.service-card h3,
.service-card .desc,
.strength h3,
.strength p,
.process-step h4,
.process-step p,
.testimonial-card__body,
.stat .note,
.fund-row .name,
.faq-q .q-text,
.faq-a p,
.form-title,
.form-sub,
.footer-brand p,
.footer-biz-row dd {
  word-break: keep-all;
  overflow-wrap: break-word;
  line-height: 1.7;
}

.h-section br,
.contact-info .h-section br {
  display: none;
}

.h-section {
  font-size: clamp(26px, 6.8vw, 36px);
  line-height: 1.38;
  text-wrap: pretty;
  text-align: center;
}

.lede {
  font-size: 16px;
  line-height: 1.8;
  max-width: 100%;
  text-align: center;
  margin-left: auto;
  margin-right: auto;
}

.section-head,
.section-head .h-section,
.section-head .lede {
  text-align: center;
  margin-left: auto;
  margin-right: auto;
  max-width: 100%;
}

.section-head .eyebrow,
.about-grid .eyebrow,
.process .section-head .eyebrow,
.contact-info .eyebrow,
.faq .section-head .eyebrow {
  justify-content: center;
  width: 100%;
}

.section-head .eyebrow::before,
.about-grid .eyebrow::before,
.process .section-head .eyebrow::before,
.contact-info .eyebrow::before,
.faq .section-head .eyebrow::before {
  display: none;
}

/* 배경 이미지 섹션 — 타이틀 카드는 중앙 정렬 + 글자 선명 */
.section--photo .section-head {
  margin-left: auto;
  margin-right: auto;
  text-align: center;
}
.section--photo .section-head .eyebrow {
  justify-content: center;
  width: 100%;
}
.section--photo .section-head .eyebrow::before {
  display: block;
}

/* ─── Layout blocks ─── */
.about-grid {
  grid-template-columns: 1fr;
  text-align: center;
}

.about-grid .h-section,
.about-grid .lede {
  text-align: center;
  margin-left: auto;
  margin-right: auto;
}

.service-card,
.strength,
.process-step,
.stat,
.fund-row {
  text-align: center;
}

.service-card h3,
.strength h3,
.process-step h4,
.process-step .step-tag,
.stat .note,
.fund-row .name,
.form-title,
.footer-business-title,
.footer-brand .en,
.footer-brand .kr {
  text-align: center;
}

.service-card .ic-wrap,
.process-step .num-wrap,
.strength-num {
  margin-left: auto;
  margin-right: auto;
}

.service-card .features {
  text-align: left;
  max-width: 280px;
  margin-left: auto;
  margin-right: auto;
}

.service-card .more {
  justify-content: center;
  width: 100%;
}

.services-grid,
.strengths,
.stats-grid,
.funds-wrap,
.process-grid,
.contact-grid,
.footer-top {
  width: 100%;
  max-width: 100%;
}

.btn {
  max-width: 100%;
}

.hero {
  min-height: min(100svh, 900px);
}

.hero-grid,
.hero-copy,
.hero-action-block {
  width: 100%;
  max-width: 100%;
}

.hero-cta-row {
  width: 100%;
}

.hero-cta-row .btn {
  max-width: 100%;
  width: 100%;
}

.hero-meta {
  width: 100%;
}

/* ─── 상담(Contact) — 1열 · 카드·폼 100% · 오른쪽 넘침 방지 ─── */
.contact.section--photo > .container {
  overflow-x: clip;
}

.contact-grid {
  grid-template-columns: 1fr !important;
  gap: clamp(20px, 5vw, 28px);
  min-width: 0;
  width: 100%;
}

.contact-grid > * {
  min-width: 0;
  width: 100%;
  max-width: 100%;
}

.contact-info,
.contact-form {
  width: 100%;
  max-width: 100%;
  margin-left: auto;
  margin-right: auto;
  box-sizing: border-box;
}

.section--photo .contact-info,
.section--photo .contact-form {
  padding: clamp(22px, 5vw, 28px);
}

.contact-info .h-section,
.contact-info .lede {
  text-align: left;
  margin-left: 0;
  margin-right: 0;
}

.contact-info-item {
  grid-template-columns: 1fr;
  text-align: left;
  gap: 6px;
  min-width: 0;
}

.contact-info-item .k {
  padding-top: 0;
}

.contact-info-item .v,
.contact-info-item .v .small {
  text-align: left;
  overflow-wrap: break-word;
  word-break: keep-all;
}

.contact-form .form-title,
.contact-form .form-sub {
  text-align: left;
}

.contact-form .form-field input,
.contact-form .form-field select,
.contact-form .form-field textarea {
  width: 100%;
  max-width: 100%;
}

.form-consent > span {
  overflow-wrap: break-word;
}

.footer-top,
.footer-brand,
.footer-business,
.footer-bottom-copy {
  text-align: center;
}

.footer-contact span {
  justify-content: center;
}

.footer-contact strong {
  min-width: 0;
  width: 100%;
  text-align: center;
}

.footer-biz-row,
.footer-biz-row dt,
.footer-biz-row dd {
  text-align: center;
}

.footer-bottom {
  flex-direction: column;
  align-items: center;
  text-align: center;
}

.footer-bottom .legal {
  justify-content: center;
}

/* ─── Testimonials: 가로 슬라이드 (페이지 가로 스크롤 없음) ─── */
.testimonials {
  overflow: hidden;
  width: 100%;
}

.testimonials .container {
  padding-left: 0;
  padding-right: 0;
  overflow: hidden;
}

.testimonials .section-head {
  padding-left: var(--gutter);
  padding-right: var(--gutter);
}

.testimonials-slider {
  width: 100%;
  max-width: 100%;
  overflow: hidden;
}

.testimonials-slider__hint {
  display: block;
  text-align: center;
  font-size: 12px;
  color: var(--ink-mute);
  margin: 0 0 10px;
  padding: 0 var(--gutter);
  letter-spacing: -0.02em;
}

.testimonials-slider__viewport {
  width: 100%;
  max-width: 100%;
  margin: 0;
  padding: 4px var(--gutter) 16px;
  overflow-x: auto;
  overflow-y: hidden;
  overscroll-behavior-x: contain;
  overscroll-behavior-y: none;
  touch-action: pan-x;
  scroll-snap-type: x mandatory;
  -webkit-overflow-scrolling: touch;
  isolation: isolate;
  contain: inline-size;
}

.testimonials-slider__track {
  display: flex;
  flex-direction: row;
  flex-wrap: nowrap;
  gap: 14px;
  width: max-content;
  max-width: none;
  contain: layout style;
}

.testimonial-card {
  flex: 0 0 min(288px, calc(100vw - var(--gutter) * 2 - 28px));
  width: min(288px, calc(100vw - var(--gutter) * 2 - 28px));
  max-width: min(288px, calc(100vw - var(--gutter) * 2 - 28px));
  min-width: 0;
  scroll-snap-align: center;
  scroll-snap-stop: normal;
}

.testimonial-card__body {
  font-size: 15px;
  line-height: 1.78;
}

.testimonial-card__meta {
  text-align: left;
}

.testimonials-slider__dots {
  padding: 0 var(--gutter);
  flex-wrap: wrap;
  gap: 6px;
}

/* ─── ≤640px fine-tune ─── */
@media (max-width: 640px) {
  :root {
    --gutter: clamp(16px, 5vw, 24px);
    --section-pad: clamp(56px, 12vw, 88px);
  }

  .btn {
    padding: 14px 22px;
    font-size: 15px;
    width: 100%;
  }

  .section-head {
    margin-bottom: 32px;
  }

  .service-card {
    padding: 28px 20px;
  }

  .service-card h3 {
    font-size: 21px;
    line-height: 1.45;
  }

  .strength {
    padding: 24px 20px;
  }

  .strength h3 {
    font-size: 20px;
    line-height: 1.45;
  }

  .fund-row {
    padding: 18px 20px;
  }

  .stat {
    padding: 32px 20px;
  }

  .process-step h4 {
    font-size: 20px;
    line-height: 1.45;
  }

  .contact-form input,
  .contact-form textarea,
  .contact-form select {
    font-size: 16px;
  }

  .faq-q {
    text-align: left;
    align-items: flex-start;
  }

  .faq-q .q-text {
    text-align: left;
    line-height: 1.65;
  }

  .testimonial-card {
    flex: 0 0 min(272px, calc(100vw - var(--gutter) * 2 - 24px));
    width: min(272px, calc(100vw - var(--gutter) * 2 - 24px));
    max-width: min(272px, calc(100vw - var(--gutter) * 2 - 24px));
  }
}
