/**
 * Home Page v2 — Dynamic sections only (Courses / Free Guide / Blog)
 *
 * 정적 섹션 (Hero / Stats / Problem / Solution / Roadmap / FAQ / Final CTA)
 * 은 Elementor 위젯으로 시각 편집되므로 본 파일에 포함하지 않습니다.
 *
 * 동적 섹션은 숏코드로 출력되며, 다음 클래스들을 사용합니다:
 *   [terra_courses_grid]  → .courses
 *   [terra_freepdf_cta]   → .guide
 *   [terra_blog_grid]     → .blog
 *
 * 공통 유틸 (.wrap, .eyebrow, .h-section, .lead, .section-header, .btn-*) 도
 * 위 동적 섹션 안에서만 쓰이도록 정의했습니다.
 *
 * @package HelloElementorChild
 * @since   3.0.0
 */

/* ── Design Tokens ── */
:root {
  --flow-1:#1D4ED8; --flow-2:#3B82F6; --flow-3:#06B6D4; --flow-4:#22D3EE;
  --flow-grad:linear-gradient(135deg,#1D4ED8 0%,#06B6D4 100%);
  --flow-grad-h:linear-gradient(90deg,#1D4ED8 0%,#06B6D4 100%);
  --flow-soft:rgba(29,78,216,.06);
  --flow-soft2:rgba(29,78,216,.10);
  --flow-glow:rgba(29,78,216,.22);

  --bg:#FFFFFF; --bg-soft:#F8FAFB; --bg-tint:#F0F9FF;
  --surface:#F1F5F9; --border:#E2E8F0; --border-2:#CBD5E1;
  --navy:#0F172A; --ink:#1E293B; --slate:#475569; --muted:#64748B; --muted2:#94A3B8;
  --green:#10B981; --red:#EF4444; --amber:#F59E0B;

  --container:1200px;
  --shadow-sm:0 1px 2px rgba(15,23,42,.04),0 1px 3px rgba(15,23,42,.03);
  --shadow-md:0 4px 6px -1px rgba(15,23,42,.05),0 2px 4px -2px rgba(15,23,42,.04);
  --shadow-lg:0 10px 15px -3px rgba(15,23,42,.06),0 4px 6px -4px rgba(15,23,42,.04);
  --shadow-xl:0 20px 25px -5px rgba(15,23,42,.08),0 8px 10px -6px rgba(15,23,42,.04);
  --shadow-flow:0 12px 32px -8px rgba(29,78,216,.28);
}

/* ── Section base (scoped to dynamic sections only) ── */
.courses, .hc-freepdf, .blog {
  padding: clamp(70px, 8.5vw, 120px) 0;
  position: relative;
  font-family: 'Noto Sans KR', 'Inter', sans-serif;
  color: var(--ink);
  line-height: 1.65;
  -webkit-font-smoothing: antialiased;
  overflow: hidden;
}
/* Embedded mode — Elementor 래퍼 섹션이 padding/background 제공할 때 inner 섹션 중복 제거 */
.courses.is-embedded, .blog.is-embedded {
  padding: 0;
  background: transparent;
  overflow: visible;
}
.courses.is-embedded .wrap, .blog.is-embedded .wrap { padding: 0; }
.courses *, .courses *::before, .courses *::after,
.hc-freepdf *, .hc-freepdf *::before, .hc-freepdf *::after,
.blog *, .blog *::before, .blog *::after { box-sizing: border-box; }
.courses img, .courses svg,
.hc-freepdf img, .hc-freepdf svg,
.blog img, .blog svg { display: block; max-width: 100%; }
/* SVG safety guard — width/height 미지정 svg 폭발 방지 */
.courses svg:not([width]):not([height]),
.hc-freepdf svg:not([width]):not([height]),
.blog svg:not([width]):not([height]),
.thv2-hero svg:not([width]):not([height]),
.thv2-stats svg:not([width]):not([height]),
.thv2-problem svg:not([width]):not([height]),
.thv2-solution svg:not([width]):not([height]),
.thv2-roadmap svg:not([width]):not([height]),
.thv2-faq svg:not([width]):not([height]),
.thv2-final-cta svg:not([width]):not([height]) {
  width: 1em;
  height: 1em;
}
.courses a, .hc-freepdf a, .blog a { color: inherit; text-decoration: none; }

.courses .wrap, .blog .wrap {
  max-width: var(--container);
  margin: 0 auto;
  padding: 0 24px;
}
.courses .eyebrow, .blog .eyebrow {
  display: inline-flex; align-items: center; gap: 10px;
  font-family: 'Inter', sans-serif;
  font-size: 11px; font-weight: 800;
  letter-spacing: .2em; text-transform: uppercase;
  color: var(--flow-1); margin-bottom: 18px;
}
.courses .eyebrow::before, .blog .eyebrow::before {
  content: ''; width: 28px; height: 2px;
  background: var(--flow-grad-h); border-radius: 1px;
}
.courses .h-section, .blog .h-section {
  font-family: 'Noto Sans KR', sans-serif;
  font-size: clamp(28px, 4vw, 46px);
  font-weight: 900; line-height: 1.22;
  letter-spacing: -.022em; color: var(--navy);
}
.courses .h-section .accent, .blog .h-section .accent { color: var(--flow-1); }
.courses .lead, .blog .lead {
  font-size: clamp(15px, 1.35vw, 17px);
  color: var(--slate); line-height: 1.85; max-width: 720px;
}
.courses .section-header, .blog .section-header {
  text-align: center; max-width: 780px;
  margin: 0 auto clamp(40px, 5vw, 60px);
}
.courses .section-header .lead, .blog .section-header .lead { margin: 18px auto 0; }

/* ── COURSES ─────────────────────────────────────────── */
.courses { background: #fff; }
.course-grid {
  display: grid; grid-template-columns: repeat(3, 1fr);
  gap: 22px; margin-top: 50px; align-items: stretch;
}
.course-card {
  background: #fff; border: 1px solid var(--border); border-radius: 20px;
  padding: 38px 34px; position: relative; transition: all .3s ease;
  box-shadow: var(--shadow-sm);
  display: flex; flex-direction: column;
}
.course-card:hover {
  border-color: rgba(29,78,216,.3);
  transform: translateY(-4px);
  box-shadow: var(--shadow-xl);
}
.course-card.featured {
  border: 2px solid var(--flow-1);
  background: linear-gradient(180deg, #fff 0%, var(--bg-tint) 100%);
  box-shadow: var(--shadow-lg), 0 0 0 6px rgba(29,78,216,.06);
  transform: scale(1.02);
}
.course-card.featured:hover { transform: scale(1.02) translateY(-4px); }
.course-thumb {
  display: block;
  margin: -38px -34px 22px;
  aspect-ratio: 16 / 10;
  overflow: hidden;
  border-radius: 20px 20px 0 0;
  background: linear-gradient(135deg, var(--flow-1), var(--flow-3));
  position: relative;
}
.course-thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform .4s ease;
}
.course-card:hover .course-thumb img { transform: scale(1.04); }
.course-card.featured .course-thumb { border-radius: 18px 18px 0 0; }
.course-thumb.is-placeholder {
  display: flex;
  align-items: center;
  justify-content: center;
}
.course-thumb.is-placeholder::before {
  content: '';
  position: absolute; inset: 0;
  background-image:
    linear-gradient(rgba(255,255,255,.06) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.06) 1px, transparent 1px);
  background-size: 28px 28px;
  pointer-events: none;
}
.course-thumb.is-placeholder::after {
  content: '';
  position: absolute; inset: 0;
  background: radial-gradient(circle at 30% 30%, rgba(255,255,255,.18), transparent 60%);
  pointer-events: none;
}
.course-thumb-label {
  position: relative;
  z-index: 1;
  font-family: 'Inter', sans-serif;
  font-size: 13px;
  font-weight: 800;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: #fff;
}
.course-badge {
  position: absolute; top: -12px; left: 50%; transform: translateX(-50%);
  font-family: 'Inter', sans-serif;
  font-size: 10px; font-weight: 900;
  letter-spacing: .14em; text-transform: uppercase;
  color: #fff; background: var(--flow-grad);
  padding: 8px 16px; border-radius: 20px;
  box-shadow: var(--shadow-flow);
}
.course-level {
  font-family: 'Inter', sans-serif;
  font-size: 11px; font-weight: 800;
  letter-spacing: .16em; color: var(--flow-1);
  text-transform: uppercase; margin-bottom: 12px;
}
.course-title {
  font-size: 20px; font-weight: 900; color: var(--navy);
  line-height: 1.35; margin-bottom: 16px;
}
.course-meta {
  display: flex; gap: 12px; margin-bottom: 22px;
  font-size: 12px; color: var(--muted);
  padding-bottom: 22px; border-bottom: 1px solid var(--border);
}
.course-meta span { display: inline-flex; align-items: center; gap: 5px; }
.course-meta svg { width: 14px; height: 14px; color: var(--flow-1); }
.course-feat {
  list-style: none; padding: 0; margin: 0 0 28px;
  display: flex; flex-direction: column; gap: 10px; flex: 1;
}
.course-feat li {
  font-size: 13.5px; color: var(--slate); line-height: 1.65;
}
.course-price {
  margin-bottom: 20px;
  text-align: right;
}
.course-save {
  display: inline-block;
  margin-bottom: 8px;
  font-size: 11px; font-weight: 800; color: var(--red);
  background: rgba(239,68,68,.08); padding: 3px 8px; border-radius: 4px;
}
.course-price-row {
  display: flex;
  align-items: baseline;
  justify-content: flex-end;
  gap: 8px;
}
.course-old {
  font-size: 14px; color: var(--muted2);
  text-decoration: line-through;
}
.course-new {
  font-family: 'Inter', sans-serif;
  font-size: 30px; font-weight: 900;
  color: var(--navy); letter-spacing: -.01em;
}
.course-new .krw {
  font-size: .55em; color: var(--muted);
  margin-right: 4px; font-weight: 700;
}
.course-cta {
  display: block; width: 100%; padding: 15px;
  text-align: center; border-radius: 10px;
  font-weight: 800; font-size: 14px; transition: all .2s;
  font-family: 'Noto Sans KR', sans-serif;
}
.course-card:not(.featured) .course-cta {
  background: #fff; border: 1.5px solid var(--border-2); color: var(--navy);
}
.course-card:not(.featured) .course-cta:hover {
  border-color: var(--flow-1); color: var(--flow-1); background: var(--flow-soft);
}
.course-card.featured .course-cta {
  background: var(--flow-grad); color: #fff;
  box-shadow: var(--shadow-flow); border: none;
}
.course-card.featured .course-cta:hover { transform: translateY(-2px); }
.course-all { text-align: center; margin-top: 40px; }
.course-all a {
  display: inline-flex; align-items: center; gap: 6px;
  font-size: 14px; font-weight: 700; color: var(--flow-1);
}
.course-all a:hover { color: var(--flow-3); }

/* ── FREE PDF (기존 hc-freepdf 디자인 + 블루톤) ─────────── */
.hc-freepdf {
  background: linear-gradient(160deg, #F0F9FF 0%, #FFFFFF 40%, #E8F0FE 100%);
  overflow: hidden;
  /* full-bleed: Elementor 부모 컬럼/섹션의 max-width 를 깨고 viewport 전체로 확장 */
  width: 100vw;
  position: relative;
  left: 50%;
  right: 50%;
  margin-left: -50vw;
  margin-right: -50vw;
}
.hc-freepdf::before {
  content: '';
  position: absolute;
  top: -100px;
  right: -100px;
  width: 400px;
  height: 400px;
  background: radial-gradient(circle, rgba(29,78,216,.10) 0%, transparent 70%);
  border-radius: 50%;
  pointer-events: none;
}
.hc-freepdf::after {
  content: '';
  position: absolute;
  bottom: -120px;
  left: -120px;
  width: 360px;
  height: 360px;
  background: radial-gradient(circle, rgba(6,182,212,.08) 0%, transparent 70%);
  border-radius: 50%;
  pointer-events: none;
}
.hc-freepdf-inner {
  max-width: var(--container);
  margin: 0 auto;
  padding: 0 24px;
  position: relative;
  z-index: 1;
}
.hc-freepdf-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 60px;
  align-items: center;
}
.hc-freepdf-left { position: relative; z-index: 1; }
.hc-freepdf-label {
  display: inline-flex; align-items: center; gap: 10px;
  font-family: 'Inter', sans-serif;
  font-size: 11px; font-weight: 800;
  letter-spacing: .2em; text-transform: uppercase;
  color: var(--flow-1); margin-bottom: 18px;
}
.hc-freepdf-label::before {
  content: ''; width: 28px; height: 2px;
  background: var(--flow-grad-h); border-radius: 1px;
}
.hc-freepdf-left h2 {
  font-family: 'Noto Sans KR', sans-serif;
  font-size: clamp(28px, 4vw, 42px);
  font-weight: 900;
  color: var(--navy);
  line-height: 1.25;
  letter-spacing: -.022em;
  margin: 0 0 16px;
}
.hc-freepdf-left h2 span {
  color: var(--flow-1);
}
.hc-freepdf-left > p {
  font-size: 16px;
  color: var(--slate);
  line-height: 1.8;
  margin: 0 0 28px;
  max-width: 540px;
}
.hc-freepdf-features {
  list-style: none;
  padding: 0;
  margin: 0 0 32px;
}
.hc-freepdf-features li {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  margin-bottom: 14px;
  font-size: 15px;
  color: var(--ink);
  line-height: 1.6;
}
.hc-freepdf-features li svg {
  flex-shrink: 0;
  width: 20px;
  height: 20px;
  color: var(--flow-1);
  margin-top: 2px;
}
.hc-freepdf-kakao {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  background: #fff;
  color: var(--flow-1);
  font-family: 'Noto Sans KR', sans-serif;
  font-weight: 800;
  font-size: 15px;
  padding: 16px 28px;
  border-radius: 12px;
  transition: all .2s;
  box-shadow: 0 14px 32px -8px rgba(0,0,0,.25);
}
.hc-freepdf-kakao:hover {
  transform: translateY(-2px);
  background: #F8FAFB;
  box-shadow: 0 18px 38px -10px rgba(0,0,0,.3);
}
.hc-freepdf-kakao svg { width: 18px; height: 18px; }
.hc-freepdf-micro {
  font-size: 13px;
  color: var(--muted);
  margin: 14px 0 0;
  display: flex;
  align-items: center;
  gap: 8px;
}
.hc-freepdf-micro .dot {
  width: 8px; height: 8px; border-radius: 50%;
  background: var(--green);
  animation: hc-freepdf-pulse 2s infinite;
}
.hc-freepdf-micro strong { color: var(--flow-1); font-weight: 800; }
@keyframes hc-freepdf-pulse { 0%,100% { opacity: 1; } 50% { opacity: .55; } }

.hc-freepdf-right { position: relative; z-index: 1; }
.hc-freepdf-cover {
  background: linear-gradient(145deg, #1D4ED8, #06B6D4);
  border-radius: 20px;
  padding: 48px 40px;
  color: #fff;
  text-align: left;
  box-shadow: 0 20px 60px rgba(29,78,216,.28);
  position: relative;
  overflow: hidden;
  /* 우측 컬럼 안에서 80% 너비 좌측 정렬 + 책 표지 비율 (높이 80%) */
  max-width: 80%;
  aspect-ratio: 5 / 5.6;
  margin-left: 0;
  margin-right: auto;
  display: flex;
  flex-direction: column;
}
/* 카카오 버튼 — cover 카드 안 checklist 하단 여백에 가운데 정렬 + 풀폭 */
.hc-freepdf-cover .hc-freepdf-kakao {
  display: flex;
  width: 100%;          /* cover 안 inner area 전체 너비 */
  align-self: stretch;
  margin-top: auto;     /* checklist 와 cover bottom 사이 여백을 위로 push */
  margin-bottom: auto;  /* margin auto 양쪽 → vertical center */
  margin-left: 0;
  margin-right: 0;
  justify-content: center;
  padding: 18px 32px;   /* base 16px 28px 에서 좌우 패딩 증가 */
}
.hc-freepdf-cover::before {
  content: '';
  position: absolute;
  top: -30px; right: -30px;
  width: 120px; height: 120px;
  background: rgba(255,255,255,.10);
  border-radius: 50%;
}
.hc-freepdf-cover::after {
  content: '';
  position: absolute;
  bottom: -20px; left: -20px;
  width: 80px; height: 80px;
  background: rgba(255,255,255,.08);
  border-radius: 50%;
}
.hc-freepdf-cover-tag {
  display: inline-block;
  font-family: 'Inter', sans-serif;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 2px;
  text-transform: uppercase;
  background: rgba(255,255,255,.20);
  padding: 4px 14px;
  border-radius: 20px;
  margin-bottom: 24px;
  position: relative;
  z-index: 1;
}
.hc-freepdf-cover h3 {
  font-family: 'Noto Sans KR', sans-serif;
  font-size: 24px;
  font-weight: 800;
  line-height: 1.4;
  margin: 0 0 12px;
  position: relative;
  z-index: 1;
}
.hc-freepdf-cover p {
  font-size: 14px;
  color: #fff;
  line-height: 1.6;
  margin: 0;
  position: relative;
  z-index: 1;
}
.hc-freepdf-checklist {
  list-style: none;
  padding: 20px 0 0;
  margin: 24px 0 0;
  text-align: left;
  border-top: 1px solid rgba(255,255,255,.20);
  position: relative;
  z-index: 1;
}
.hc-freepdf-checklist li {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  margin-bottom: 12px;
  font-size: 14px;
  color: rgba(255,255,255,.92);
  line-height: 1.5;
}
.hc-freepdf-checklist li:last-child { margin-bottom: 0; }
.hc-freepdf-checklist li svg {
  flex-shrink: 0;
  width: 18px;
  height: 18px;
  color: #fff;
  margin-top: 2px;
}

/* ── BLOG ─────────────────────────────────────────────── */
.blog { background: #fff; }
.blog-grid {
  display: grid; grid-template-columns: repeat(3, 1fr);
  gap: 24px; margin-top: 50px;
}
.blog-card {
  background: #fff; border: 1px solid var(--border);
  border-radius: 16px; overflow: hidden;
  transition: all .3s ease; box-shadow: var(--shadow-sm);
  display: flex; flex-direction: column;
}
.blog-card:hover {
  border-color: rgba(29,78,216,.3);
  transform: translateY(-4px);
  box-shadow: var(--shadow-lg);
}
.blog-thumb {
  aspect-ratio: 16/9;
  background: linear-gradient(135deg, var(--flow-1), var(--flow-3));
  position: relative;
  display: flex; align-items: center; justify-content: center;
  color: #fff;
  font-family: 'Bebas Neue', sans-serif;
  font-size: 34px; letter-spacing: .06em;
  overflow: hidden;
}
.blog-thumb img {
  position: absolute; inset: 0;
  width: 100%; height: 100%; object-fit: cover;
  z-index: 2;
}
.blog-thumb::before {
  content: ''; position: absolute; inset: 0;
  background: radial-gradient(circle at 30% 30%, rgba(255,255,255,.18), transparent 60%);
}
.blog-thumb::after {
  content: ''; position: absolute; inset: 0;
  background-image: linear-gradient(rgba(255,255,255,.06) 1px, transparent 1px),
                    linear-gradient(90deg, rgba(255,255,255,.06) 1px, transparent 1px);
  background-size: 28px 28px;
}
.blog-thumb span { position: relative; z-index: 1; }
.blog-body {
  padding: 26px 24px 28px;
  flex: 1; display: flex; flex-direction: column;
}
.blog-meta {
  display: flex; gap: 10px;
  font-size: 11px; color: var(--muted);
  font-weight: 700; letter-spacing: .04em;
  margin-bottom: 12px; text-transform: uppercase;
}
.blog-meta .tag {
  color: var(--flow-1); background: var(--flow-soft);
  padding: 3px 8px; border-radius: 4px;
}
.blog-title {
  font-size: 16.5px; font-weight: 900;
  color: var(--navy); line-height: 1.45;
  margin-bottom: 10px; flex: 1;
}
.blog-excerpt {
  font-size: 13.5px; color: var(--muted); line-height: 1.7;
}
.blog-all { text-align: center; margin-top: 44px; }
.blog-all a {
  display: inline-flex; align-items: center; gap: 6px;
  font-size: 14px; font-weight: 700; color: var(--flow-1);
}
.blog-all a:hover { color: var(--flow-3); }

/* ── RESPONSIVE ───────────────────────────────────────── */
@media (max-width: 980px) {
  .course-grid, .blog-grid { grid-template-columns: 1fr; }
  .course-card.featured { transform: scale(1); order: -1; }
  .hc-freepdf-grid { grid-template-columns: 1fr; gap: 40px; }
  .hc-freepdf-left h2 { font-size: 26px; }
  .hc-freepdf-cover { padding: 40px 28px; }
  .courses, .hc-freepdf, .blog { padding: 70px 0; }
}
@media (max-width: 640px) {
  .courses .wrap, .blog .wrap, .hc-freepdf-inner { padding: 0 18px; }
  .hc-freepdf-kakao { width: 100%; justify-content: center; }
}

/* ═════════════════════════════════════════════════════════
 * STATIC SECTIONS (Hero / Stats / Problem / Solution / Roadmap / FAQ / Final CTA)
 *
 * 클래스 충돌 방지를 위해 섹션 element 에 `thv2-` 프리픽스 사용.
 * 서브 element 클래스는 디자인 원본 그대로 사용하되 부모 selector 로 스코프.
 * ═════════════════════════════════════════════════════════ */

/* 공통 base — 7개 정적 섹션에 모두 적용 */
.thv2-hero, .thv2-stats, .thv2-problem, .thv2-solution,
.thv2-roadmap, .thv2-faq, .thv2-final-cta {
  position: relative;
  font-family: 'Noto Sans KR', 'Inter', sans-serif;
  color: var(--ink);
  line-height: 1.65;
  -webkit-font-smoothing: antialiased;
  overflow: hidden; /* 데코레이티브 ::before/::after 가 viewport 밖으로 새는 것 방지 */
}
.thv2-hero *, .thv2-hero *::before, .thv2-hero *::after,
.thv2-stats *, .thv2-stats *::before, .thv2-stats *::after,
.thv2-problem *, .thv2-problem *::before, .thv2-problem *::after,
.thv2-solution *, .thv2-solution *::before, .thv2-solution *::after,
.thv2-roadmap *, .thv2-roadmap *::before, .thv2-roadmap *::after,
.thv2-faq *, .thv2-faq *::before, .thv2-faq *::after,
.thv2-final-cta *, .thv2-final-cta *::before, .thv2-final-cta *::after { box-sizing: border-box; }
.thv2-hero img, .thv2-hero svg,
.thv2-stats img, .thv2-stats svg,
.thv2-problem img, .thv2-problem svg,
.thv2-solution img, .thv2-solution svg,
.thv2-roadmap img, .thv2-roadmap svg,
.thv2-faq img, .thv2-faq svg,
.thv2-final-cta img, .thv2-final-cta svg { display: block; max-width: 100%; }
.thv2-hero a, .thv2-stats a, .thv2-problem a, .thv2-solution a,
.thv2-roadmap a, .thv2-faq a, .thv2-final-cta a { color: inherit; text-decoration: none; }

/* .wrap utility — 7개 정적 섹션 컨테이너 */
.thv2-hero .wrap, .thv2-stats .wrap, .thv2-problem .wrap, .thv2-solution .wrap,
.thv2-roadmap .wrap, .thv2-faq .wrap, .thv2-final-cta .wrap {
  max-width: var(--container);
  margin: 0 auto;
  padding: 0 24px;
  position: relative;
  z-index: 2;
}

/* .eyebrow / .h-section / .lead / .section-header — 정적 섹션용 */
.thv2-problem .eyebrow, .thv2-solution .eyebrow, .thv2-roadmap .eyebrow,
.thv2-faq .eyebrow, .thv2-final-cta .eyebrow {
  display: inline-flex; align-items: center; gap: 10px;
  font-family: 'Inter', sans-serif;
  font-size: 11px; font-weight: 800;
  letter-spacing: .2em; text-transform: uppercase;
  color: var(--flow-1); margin-bottom: 18px;
}
.thv2-problem .eyebrow::before, .thv2-solution .eyebrow::before, .thv2-roadmap .eyebrow::before,
.thv2-faq .eyebrow::before, .thv2-final-cta .eyebrow::before {
  content: ''; width: 28px; height: 2px;
  background: var(--flow-grad-h); border-radius: 1px;
}
.thv2-problem .h-section, .thv2-solution .h-section, .thv2-roadmap .h-section,
.thv2-faq .h-section, .thv2-final-cta .h-section {
  font-family: 'Noto Sans KR', sans-serif;
  font-size: clamp(28px, 4vw, 46px);
  font-weight: 900; line-height: 1.22;
  letter-spacing: -.022em; color: var(--navy);
  margin: 0;
}
.thv2-problem .h-section .accent, .thv2-solution .h-section .accent,
.thv2-roadmap .h-section .accent, .thv2-faq .h-section .accent { color: var(--flow-1); }
.thv2-problem .h-section .underline, .thv2-solution .h-section .underline {
  background: linear-gradient(180deg, transparent 62%, rgba(6,182,212,.28) 62%);
  padding: 0 4px;
}
.thv2-problem .lead, .thv2-solution .lead, .thv2-roadmap .lead, .thv2-faq .lead {
  font-size: clamp(15px, 1.35vw, 17px);
  color: var(--slate); line-height: 1.85; max-width: 720px;
  margin: 0;
}
.thv2-problem .section-header, .thv2-solution .section-header,
.thv2-roadmap .section-header, .thv2-faq .section-header {
  text-align: center; max-width: 780px;
  margin: 0 auto clamp(40px, 5vw, 60px);
}
.thv2-problem .section-header .lead, .thv2-solution .section-header .lead,
.thv2-roadmap .section-header .lead, .thv2-faq .section-header .lead { margin: 18px auto 0; }

/* btn utility — 정적 섹션 안에서만 */
.thv2-hero .btn, .thv2-final-cta .btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 10px;
  padding: 14px 26px; border-radius: 10px;
  font-weight: 800; font-size: 14px;
  transition: all .22s ease;
  cursor: pointer; white-space: nowrap;
  font-family: 'Noto Sans KR', sans-serif;
  border: none;
}
.thv2-hero .btn-primary {
  background: var(--flow-grad); color: #fff;
  box-shadow: var(--shadow-flow), inset 0 1px 0 rgba(255,255,255,.25);
}
.thv2-hero .btn-primary:hover {
  transform: translateY(-2px);
  box-shadow: 0 18px 38px -10px rgba(29,78,216,.4);
}
.thv2-hero .btn-ghost {
  border: 1.5px solid var(--border-2);
  color: var(--navy); background: #fff;
}
.thv2-hero .btn-ghost:hover {
  border-color: var(--flow-1);
  color: var(--flow-1);
  background: var(--flow-soft);
}
.thv2-hero .btn-lg, .thv2-final-cta .btn-lg {
  padding: 18px 34px; font-size: 15.5px; border-radius: 12px;
}

/* ── HERO ─────────────────────────────────────────────── */
.thv2-hero {
  padding: 140px 0 90px;
  overflow: hidden;
  background: linear-gradient(180deg, #F8FAFB 0%, #F0F9FF 60%, #FFFFFF 100%);
}
.thv2-hero::before {
  content: ''; position: absolute; inset: 0;
  background:
    radial-gradient(ellipse 700px 500px at 18% 10%, rgba(29,78,216,.11), transparent 60%),
    radial-gradient(ellipse 600px 400px at 88% 85%, rgba(6,182,212,.11), transparent 60%);
  pointer-events: none;
}
.thv2-hero::after {
  content: ''; position: absolute; inset: 0;
  background-image:
    linear-gradient(rgba(29,78,216,.05) 1px, transparent 1px),
    linear-gradient(90deg, rgba(29,78,216,.05) 1px, transparent 1px);
  background-size: 60px 60px;
  mask-image: radial-gradient(ellipse 80% 60% at 50% 30%, #000, transparent 75%);
  -webkit-mask-image: radial-gradient(ellipse 80% 60% at 50% 30%, #000, transparent 75%);
  pointer-events: none;
}
.thv2-hero .hero-inner {
  display: grid;
  grid-template-columns: 1.1fr .9fr;
  gap: 60px;
  align-items: center;
}
.thv2-hero .hero-tag {
  display: inline-flex; align-items: center; gap: 10px;
  padding: 8px 16px; border-radius: 999px;
  background: #fff;
  border: 1.5px solid var(--flow-soft2);
  font-family: 'Inter', sans-serif;
  font-size: 11px; font-weight: 800;
  letter-spacing: .14em; color: var(--flow-1);
  margin-bottom: 24px;
  text-transform: uppercase;
  box-shadow: var(--shadow-sm);
}
.thv2-hero .hero-tag svg { width: 14px; height: 14px; color: var(--flow-1); }
.thv2-hero h1 {
  font-family: 'Noto Sans KR', sans-serif;
  font-size: clamp(34px, 4.8vw, 62px);
  font-weight: 900; line-height: 1.14;
  letter-spacing: -.025em; color: var(--navy);
  margin: 0 0 24px;
}
.thv2-hero h1 .accent { color: var(--flow-1); }
.thv2-hero h1 .underline {
  background: linear-gradient(180deg, transparent 60%, rgba(6,182,212,.28) 60%);
  padding: 0 6px;
}
.thv2-hero .hero-sub {
  font-size: clamp(15px, 1.35vw, 18px);
  color: var(--slate); line-height: 1.8;
  max-width: 560px;
  margin: 0 0 34px;
}
.thv2-hero .hero-cta-row {
  display: flex; flex-wrap: wrap; gap: 12px;
  align-items: center; margin-bottom: 30px;
}
.thv2-hero .hero-micro {
  display: flex; align-items: center; gap: 14px;
  font-size: 13px; color: var(--muted);
  flex-wrap: wrap;
}
.thv2-hero .hero-avatars { display: flex; }
.thv2-hero .hero-avatars span {
  width: 30px; height: 30px; border-radius: 50%;
  background: var(--flow-grad); border: 2px solid #fff;
  margin-left: -8px;
  display: flex; align-items: center; justify-content: center;
  color: #fff; font-size: 11px; font-weight: 800;
  font-family: 'Inter', sans-serif;
}
.thv2-hero .hero-avatars span:first-child { margin-left: 0; }
.thv2-hero .hero-micro strong { color: var(--flow-1); font-weight: 800; }

/* HERO VISUAL — Floating Feature Hub */
.thv2-hero .hero-visual {
  position: relative;
  min-height: 420px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.thv2-hero .hero-hub {
  position: relative;
  width: 100%;
  max-width: 440px;
  aspect-ratio: 1;
  margin: 0 auto;
}
.thv2-hero .hero-hub-center {
  position: absolute; top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  width: 70px; height: 70px;
  border-radius: 50%;
  background: var(--flow-grad);
  display: flex; align-items: center; justify-content: center;
  color: #fff;
  box-shadow: 0 20px 50px -12px rgba(29,78,216,.45);
  z-index: 3;
}
.thv2-hero .hero-hub-center svg { width: 35px; height: 35px; }
.thv2-hero .hero-hub-center-label {
  position: absolute; bottom: -30px; left: 50%;
  transform: translateX(-50%);
  font-size: 12px; font-weight: 800;
  color: var(--flow-1); letter-spacing: .06em;
  white-space: nowrap;
}
.thv2-hero .hero-orbit {
  position: absolute; inset: 24px;
  border-radius: 50%;
  border: 1.5px dashed rgba(29,78,216,.18);
  z-index: 1;
}
.thv2-hero .hero-orbit-2 {
  position: absolute; inset: -12px;
  border-radius: 50%;
  border: 1px dashed rgba(6,182,212,.12);
  z-index: 0;
}
.thv2-hero .hero-feat {
  position: absolute;
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 14px;
  padding: 14px 18px;
  box-shadow: var(--shadow-lg);
  display: flex; align-items: center; gap: 12px;
  z-index: 4;
  transition: all .35s ease;
  cursor: default;
  min-width: 170px;
}
.thv2-hero .hero-feat:hover {
  transform: scale(1.05);
  box-shadow: var(--shadow-xl);
  border-color: rgba(29,78,216,.3);
}
.thv2-hero .hero-feat-icon {
  width: 42px; height: 42px;
  border-radius: 10px;
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.thv2-hero .hero-feat-icon svg { width: 22px; height: 22px; }
.thv2-hero .hero-feat-text {
  font-size: 13px; font-weight: 800;
  color: var(--navy); line-height: 1.3;
}
.thv2-hero .hero-feat-sub {
  font-size: 10.5px; color: var(--muted);
  font-weight: 600; margin-top: 2px;
}
.thv2-hero .hf-1 { top: 2%; left: 50%; transform: translateX(-50%); animation: thv2-hfloat 3.2s ease-in-out infinite; }
.thv2-hero .hf-2 { top: 22%; right: -10px; animation: thv2-hfloat 3.6s ease-in-out -.6s infinite; }
.thv2-hero .hf-3 { bottom: 18%; right: -6px; animation: thv2-hfloat 3s ease-in-out -1.2s infinite; }
.thv2-hero .hf-4 { bottom: 0%; left: 50%; transform: translateX(-50%); animation: thv2-hfloat 3.4s ease-in-out -1.8s infinite; }
.thv2-hero .hf-5 { bottom: 22%; left: -10px; animation: thv2-hfloat 3.8s ease-in-out -2.4s infinite; }
.thv2-hero .hf-6 { top: 22%; left: -10px; animation: thv2-hfloat 3.1s ease-in-out -3s infinite; }
.thv2-hero .hf-1:hover, .thv2-hero .hf-4:hover { transform: translateX(-50%) scale(1.05); }
@keyframes thv2-hfloat {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-7px); }
}
.thv2-hero .hf-1 { animation-name: thv2-hfloat-h; }
.thv2-hero .hf-4 { animation-name: thv2-hfloat-h; }
@keyframes thv2-hfloat-h {
  0%, 100% { transform: translateX(-50%) translateY(0); }
  50% { transform: translateX(-50%) translateY(-7px); }
}
.thv2-hero .hero-person {
  position: absolute;
  width: 36px; height: 36px;
  border-radius: 50%;
  background: var(--flow-soft);
  border: 2px solid #fff;
  display: flex; align-items: center; justify-content: center;
  color: var(--flow-1);
  box-shadow: 0 4px 12px rgba(29,78,216,.18);
  z-index: 2;
}
.thv2-hero .hero-person svg { width: 18px; height: 18px; }
.thv2-hero .hp-1 { top: 14%; left: 22%; animation: thv2-hfloat 4s ease-in-out -1s infinite; }
.thv2-hero .hp-2 { top: 10%; right: 24%; animation: thv2-hfloat 3.5s ease-in-out -2s infinite; }
.thv2-hero .hp-3 { bottom: 12%; left: 18%; animation: thv2-hfloat 4.2s ease-in-out -.5s infinite; }
.thv2-hero .hp-4 { bottom: 10%; right: 20%; animation: thv2-hfloat 3.8s ease-in-out -3s infinite; }
.thv2-hero .hp-5 { top: 46%; right: 4%; animation: thv2-hfloat 4s ease-in-out -1.5s infinite; }
.thv2-hero .hp-6 { top: 48%; left: 2%; animation: thv2-hfloat 3.6s ease-in-out -2.5s infinite; }

/* ── STATS STRIP ──────────────────────────────────────── */
.thv2-stats {
  padding: 54px 0;
  background: #fff;
  border-top: 1px solid var(--border);
  border-bottom: 1px solid var(--border);
}
.thv2-stats .stats-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 24px;
  text-align: center;
}
.thv2-stats .stat-num {
  font-family: 'Bebas Neue', 'Inter', sans-serif;
  font-size: clamp(42px, 5.2vw, 64px);
  color: var(--flow-1);
  line-height: 1;
  letter-spacing: .02em;
  font-weight: 700;
}
.thv2-stats .stat-num .small {
  font-size: .55em;
  color: var(--flow-3);
  margin-left: 3px;
}
.thv2-stats .stat-label {
  font-size: 11.5px;
  color: var(--muted);
  letter-spacing: .14em;
  text-transform: uppercase;
  font-weight: 700;
  margin-top: 10px;
}

/* ── PROBLEM ──────────────────────────────────────────── */
.thv2-problem {
  padding: clamp(70px, 8.5vw, 120px) 0;
  background: var(--bg-soft);
}
.thv2-problem .prob-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 22px;
  margin-top: 48px;
}
.thv2-problem .prob-card {
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 16px;
  padding: 34px 28px;
  transition: all .25s ease;
  box-shadow: var(--shadow-sm);
  position: relative;
}
.thv2-problem .prob-card:hover {
  border-color: rgba(239,68,68,.3);
  transform: translateY(-3px);
  box-shadow: var(--shadow-lg);
}
.thv2-problem .prob-num {
  font-family: 'Bebas Neue', 'Inter', sans-serif;
  font-size: 44px;
  color: rgba(239,68,68,.22);
  line-height: 1;
  margin-bottom: 12px;
  font-weight: 700;
}
.thv2-problem .prob-icon {
  position: absolute;
  top: 30px; right: 28px;
  width: 44px; height: 44px;
  border-radius: 10px;
  background: rgba(239,68,68,.08);
  display: flex; align-items: center; justify-content: center;
  color: var(--red);
}
.thv2-problem .prob-icon svg { width: 22px; height: 22px; }
.thv2-problem .prob-title {
  font-size: 18px;
  font-weight: 900;
  color: var(--navy);
  margin-bottom: 10px;
  line-height: 1.4;
}
.thv2-problem .prob-desc {
  font-size: 14px;
  color: var(--slate);
  line-height: 1.8;
}

/* ── SOLUTION ─────────────────────────────────────────── */
.thv2-solution {
  padding: clamp(70px, 8.5vw, 120px) 0;
  background: #fff;
}
.thv2-solution .sol-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 22px;
  margin-top: 50px;
}
.thv2-solution .sol-card {
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 18px;
  padding: 38px 32px;
  transition: all .3s ease;
  box-shadow: var(--shadow-sm);
  position: relative;
  overflow: hidden;
}
.thv2-solution .sol-card::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 3px;
  background: var(--flow-grad-h);
  transform: scaleX(0);
  transition: transform .35s ease;
  transform-origin: left;
}
.thv2-solution .sol-card:hover::before { transform: scaleX(1); }
.thv2-solution .sol-card:hover {
  border-color: rgba(29,78,216,.3);
  transform: translateY(-4px);
  box-shadow: var(--shadow-xl);
}
.thv2-solution .sol-icon {
  width: 64px; height: 64px;
  border-radius: 14px;
  background: var(--flow-grad);
  display: flex; align-items: center; justify-content: center;
  color: #fff;
  margin-bottom: 22px;
  box-shadow: 0 10px 24px -8px rgba(29,78,216,.4);
}
.thv2-solution .sol-icon svg { width: 30px; height: 30px; }
.thv2-solution .sol-num {
  font-family: 'Inter', sans-serif;
  font-size: 11px; font-weight: 800;
  letter-spacing: .16em;
  color: var(--flow-1);
  text-transform: uppercase;
  margin-bottom: 8px;
}
.thv2-solution .sol-title {
  font-size: 21px;
  font-weight: 900;
  color: var(--navy);
  margin-bottom: 12px;
  line-height: 1.35;
}
.thv2-solution .sol-desc {
  font-size: 14.5px;
  color: var(--slate);
  line-height: 1.85;
}

/* ── ROADMAP ──────────────────────────────────────────── */
.thv2-roadmap {
  padding: clamp(70px, 8.5vw, 120px) 0;
  background: var(--bg-soft);
}
.thv2-roadmap .road-grid {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 20px;
  margin-top: 50px;
}
.thv2-roadmap .road-card {
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 16px;
  padding: 32px 24px;
  text-align: center;
  box-shadow: var(--shadow-sm);
  transition: all .3s ease;
  position: relative;
}
.thv2-roadmap .road-card:hover {
  border-color: rgba(29,78,216,.3);
  transform: translateY(-4px);
  box-shadow: var(--shadow-lg);
}
.thv2-roadmap .road-card-icon {
  width: 64px; height: 64px;
  border-radius: 14px;
  background: var(--flow-soft);
  color: var(--flow-1);
  display: flex; align-items: center; justify-content: center;
  margin: 0 auto 20px;
  transition: all .3s;
}
.thv2-roadmap .road-card:hover .road-card-icon {
  background: var(--flow-grad);
  color: #fff;
  box-shadow: 0 10px 24px -8px rgba(29,78,216,.4);
}
.thv2-roadmap .road-card-icon svg { width: 30px; height: 30px; }
.thv2-roadmap .road-card-num {
  font-family: 'Inter', sans-serif;
  font-size: 11px; font-weight: 800;
  letter-spacing: .16em;
  color: var(--flow-1);
  text-transform: uppercase;
  margin-bottom: 8px;
}
.thv2-roadmap .road-card-title {
  font-size: 16px;
  font-weight: 900;
  color: var(--navy);
  margin-bottom: 8px;
  line-height: 1.35;
}
.thv2-roadmap .road-card-desc {
  font-size: 13px;
  color: var(--slate);
  line-height: 1.65;
}

/* ── FAQ ──────────────────────────────────────────────── */
.thv2-faq {
  padding: clamp(70px, 8.5vw, 120px) 0;
  background: var(--bg-soft);
}
.thv2-faq .faq-list {
  max-width: 780px;
  margin: 50px auto 0;
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.thv2-faq .faq-item {
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 14px;
  overflow: hidden;
  transition: all .2s;
  box-shadow: var(--shadow-sm);
}
.thv2-faq .faq-item[open] {
  border-color: var(--flow-soft2);
  box-shadow: var(--shadow-md);
}
.thv2-faq .faq-item summary {
  padding: 24px 30px;
  font-size: 16px;
  font-weight: 800;
  color: var(--navy);
  cursor: pointer;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  list-style: none;
  line-height: 1.4;
}
.thv2-faq .faq-item summary::-webkit-details-marker { display: none; }
.thv2-faq .faq-item summary::after {
  content: '+';
  font-family: 'Inter', sans-serif;
  font-size: 26px;
  color: var(--flow-1);
  transition: transform .25s;
  flex-shrink: 0;
  line-height: 1;
  font-weight: 500;
}
.thv2-faq .faq-item[open] summary::after { transform: rotate(45deg); }
.thv2-faq .faq-body {
  padding: 0 30px 26px;
  font-size: 14.5px;
  color: var(--slate);
  line-height: 1.85;
}
.thv2-faq .faq-body strong { color: var(--flow-1); font-weight: 800; }

/* ── FINAL CTA ────────────────────────────────────────── */
.thv2-final-cta {
  padding: clamp(70px, 8.5vw, 120px) 0;
  background: linear-gradient(135deg, #1D4ED8 0%, #06B6D4 100%);
  overflow: hidden;
  color: #fff;
  text-align: center;
}
.thv2-final-cta::before {
  content: '';
  position: absolute; inset: 0;
  background-image:
    radial-gradient(circle at 20% 20%, rgba(255,255,255,.15), transparent 50%),
    radial-gradient(circle at 80% 80%, rgba(255,255,255,.10), transparent 50%);
  pointer-events: none;
}
.thv2-final-cta::after {
  content: '';
  position: absolute; inset: 0;
  background-image:
    linear-gradient(rgba(255,255,255,.06) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.06) 1px, transparent 1px);
  background-size: 60px 60px;
  mask-image: radial-gradient(ellipse 80% 60% at 50% 30%, #000, transparent 75%);
  -webkit-mask-image: radial-gradient(ellipse 80% 60% at 50% 30%, #000, transparent 75%);
  pointer-events: none;
}
.thv2-final-cta .eyebrow { color: rgba(255,255,255,.85); }
.thv2-final-cta .eyebrow::before { background: rgba(255,255,255,.7); }
.thv2-final-cta h2 {
  font-family: 'Noto Sans KR', sans-serif;
  font-size: clamp(32px, 4.6vw, 54px);
  font-weight: 900;
  line-height: 1.2;
  letter-spacing: -.025em;
  color: #fff;
  margin: 0 0 20px;
}
.thv2-final-cta p {
  font-size: clamp(15px, 1.3vw, 17px);
  color: rgba(255,255,255,.85);
  line-height: 1.8;
  max-width: 620px;
  margin: 0 auto 36px;
}
.thv2-final-cta .final-cta-row {
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: 14px;
}
.thv2-final-cta .btn-primary {
  background: #fff;
  color: var(--flow-1);
  box-shadow: 0 14px 32px -8px rgba(0,0,0,.3);
}
.thv2-final-cta .btn-primary:hover { background: #F8FAFB; }
.thv2-final-cta .btn-ghost {
  background: transparent;
  border: 1.5px solid rgba(255,255,255,.35);
  color: #fff;
}
.thv2-final-cta .btn-ghost:hover {
  background: rgba(255,255,255,.10);
  border-color: #fff;
  color: #fff;
}

/* ── 정적 섹션 RESPONSIVE ─────────────────────────────── */
@media (max-width: 1080px) {
  .thv2-hero .hero-inner { grid-template-columns: 1fr; gap: 60px; }
  .thv2-hero .hero-visual { max-width: 420px; margin: 0 auto; min-height: 380px; }
}
@media (max-width: 980px) {
  .thv2-hero { padding: 120px 0 60px; }
  .thv2-problem .prob-grid, .thv2-solution .sol-grid { grid-template-columns: 1fr; }
  .thv2-stats .stats-grid { grid-template-columns: repeat(2, 1fr); gap: 34px; }
  .thv2-roadmap .road-grid { grid-template-columns: repeat(2, 1fr); gap: 16px; }
  .thv2-problem, .thv2-solution, .thv2-roadmap, .thv2-faq, .thv2-final-cta { padding: 70px 0; }
}
@media (max-width: 640px) {
  .thv2-hero .wrap, .thv2-stats .wrap, .thv2-problem .wrap, .thv2-solution .wrap,
  .thv2-roadmap .wrap, .thv2-faq .wrap, .thv2-final-cta .wrap { padding: 0 18px; }
  .thv2-hero h1 { font-size: 32px; }
  .thv2-hero .hero-cta-row { flex-direction: column; align-items: stretch; }
  .thv2-hero .hero-cta-row .btn { width: 100%; }
  .thv2-roadmap .road-grid { grid-template-columns: 1fr; }
  .thv2-stats { padding: 40px 0; }
}

/* ═════════════════════════════════════════════════════════
 * ELEMENTOR WIDGET BASE STYLES — Editing-friendly
 *
 * 사용자가 Elementor 편집기에서 widget 의 typography/color/padding/border
 * 등을 변경하면 (specificity 0,3,0 의 inline CSS) 우리 base CSS (0,2,0) 를
 * 항상 override. !important 사용하지 않음.
 * ═════════════════════════════════════════════════════════ */

/* Section header (eyebrow / h2 / lead) */
.thv2-eyebrow { text-align: center; }
.thv2-eyebrow .elementor-heading-title {
  display: inline-flex; align-items: center; gap: 10px;
  font-family: 'Inter', sans-serif;
  font-size: 11px; font-weight: 800;
  letter-spacing: .2em; text-transform: uppercase;
  color: var(--flow-1);
}
.thv2-eyebrow .elementor-heading-title::before {
  content: ''; width: 28px; height: 2px;
  background: var(--flow-grad-h); border-radius: 1px;
}
.thv2-h2 .elementor-heading-title {
  font-family: 'Noto Sans KR', sans-serif;
  font-size: clamp(28px, 4vw, 46px);
  font-weight: 900; line-height: 1.22;
  letter-spacing: -.022em; color: var(--navy);
}
.thv2-h2 .elementor-heading-title .accent { color: var(--flow-1); }
.thv2-h2 .elementor-heading-title .underline {
  background: linear-gradient(180deg, transparent 62%, rgba(6,182,212,.28) 62%);
  padding: 0 4px;
}
.thv2-lead p, .thv2-lead .elementor-text-editor {
  font-size: clamp(15px, 1.35vw, 17px);
  color: var(--slate); line-height: 1.85;
  max-width: 720px; margin: 0 auto;
}

/* Hero h1 / subtitle */
.thv2-hero-h1 .elementor-heading-title {
  font-family: 'Noto Sans KR', sans-serif;
  font-size: clamp(34px, 4.8vw, 62px);
  font-weight: 900; line-height: 1.14;
  letter-spacing: -.025em; color: var(--navy);
}
.thv2-hero-h1 .elementor-heading-title .accent { color: var(--flow-1); }
.thv2-hero-h1 .elementor-heading-title .underline {
  background: linear-gradient(180deg, transparent 60%, rgba(6,182,212,.28) 60%);
  padding: 0 6px;
}
.thv2-hero-sub p {
  font-size: clamp(15px, 1.35vw, 18px);
  color: var(--slate); line-height: 1.8;
  max-width: 560px;
}

/* Stats */
.thv2-stat-num .elementor-heading-title {
  font-family: 'Bebas Neue', 'Inter', sans-serif;
  font-size: clamp(42px, 5.2vw, 64px);
  color: var(--flow-1);
  line-height: 1; letter-spacing: .02em;
  font-weight: 700;
  text-align: center;
}
.thv2-stat-num .elementor-heading-title .small {
  font-size: .55em;
  color: var(--flow-3);
  margin-left: 3px;
}
.thv2-stat-label .elementor-heading-title {
  font-size: 11.5px;
  color: var(--muted);
  letter-spacing: .14em;
  text-transform: uppercase;
  font-weight: 700;
  text-align: center;
  margin-top: 10px;
}

/* Problem card */
.thv2-prob-card .elementor-element-populated {
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 16px;
  padding: 34px 28px;
  box-shadow: var(--shadow-sm);
  transition: all .25s ease;
}
.thv2-prob-card:hover .elementor-element-populated {
  border-color: rgba(239,68,68,.3);
  transform: translateY(-3px);
  box-shadow: var(--shadow-lg);
}
.thv2-prob-num .elementor-heading-title {
  font-family: 'Bebas Neue', 'Inter', sans-serif;
  font-size: 44px;
  color: rgba(239,68,68,.22);
  line-height: 1;
  font-weight: 700;
  margin-bottom: 12px;
}
.thv2-prob-title .elementor-heading-title {
  font-size: 18px;
  font-weight: 900;
  color: var(--navy);
  line-height: 1.4;
  margin-bottom: 10px;
}
.thv2-card-desc p, .thv2-card-desc .elementor-text-editor {
  font-size: 14px;
  color: var(--slate);
  line-height: 1.8;
}

/* Solution card */
.thv2-sol-card .elementor-element-populated {
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 18px;
  padding: 38px 32px;
  box-shadow: var(--shadow-sm);
  transition: all .3s ease;
  position: relative;
  overflow: hidden;
}
.thv2-sol-card .elementor-element-populated::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 3px;
  background: var(--flow-grad-h);
  transform: scaleX(0);
  transition: transform .35s ease;
  transform-origin: left;
}
.thv2-sol-card:hover .elementor-element-populated::before { transform: scaleX(1); }
.thv2-sol-card:hover .elementor-element-populated {
  border-color: rgba(29,78,216,.3);
  transform: translateY(-4px);
  box-shadow: var(--shadow-xl);
}
.thv2-sol-icon .elementor-icon {
  width: 64px; height: 64px;
  border-radius: 14px;
  background: var(--flow-grad);
  color: #fff;
  display: inline-flex; align-items: center; justify-content: center;
  margin-bottom: 22px;
  box-shadow: 0 10px 24px -8px rgba(29,78,216,.4);
  font-size: 30px;
}
.thv2-sol-icon .elementor-icon i,
.thv2-sol-icon .elementor-icon svg { color: #fff; width: 30px; height: 30px; }
.thv2-sol-num .elementor-heading-title {
  font-family: 'Inter', sans-serif;
  font-size: 11px; font-weight: 800;
  letter-spacing: .16em;
  color: var(--flow-1);
  text-transform: uppercase;
  margin-bottom: 8px;
}
.thv2-sol-title .elementor-heading-title {
  font-size: 21px;
  font-weight: 900;
  color: var(--navy);
  line-height: 1.35;
  margin-bottom: 12px;
}
.thv2-sol-desc p, .thv2-sol-desc .elementor-text-editor {
  font-size: 14.5px;
  color: var(--slate);
  line-height: 1.85;
}

/* Roadmap card */
.thv2-road-card .elementor-element-populated {
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 16px;
  padding: 32px 24px;
  text-align: center;
  box-shadow: var(--shadow-sm);
  transition: all .3s ease;
}
.thv2-road-card:hover .elementor-element-populated {
  border-color: rgba(29,78,216,.3);
  transform: translateY(-4px);
  box-shadow: var(--shadow-lg);
}
.thv2-road-icon .elementor-icon {
  width: 64px; height: 64px;
  border-radius: 14px;
  background: var(--flow-soft);
  color: var(--flow-1);
  display: inline-flex; align-items: center; justify-content: center;
  margin: 0 auto 20px;
  font-size: 30px;
  transition: all .3s;
}
.thv2-road-icon .elementor-icon i,
.thv2-road-icon .elementor-icon svg { width: 30px; height: 30px; }
.thv2-road-card:hover .thv2-road-icon .elementor-icon {
  background: var(--flow-grad);
  color: #fff;
  box-shadow: 0 10px 24px -8px rgba(29,78,216,.4);
}
.thv2-road-num .elementor-heading-title {
  font-family: 'Inter', sans-serif;
  font-size: 11px; font-weight: 800;
  letter-spacing: .16em;
  color: var(--flow-1);
  text-transform: uppercase;
  margin-bottom: 8px;
  text-align: center;
}
.thv2-road-title .elementor-heading-title {
  font-size: 16px;
  font-weight: 900;
  color: var(--navy);
  line-height: 1.35;
  margin-bottom: 8px;
  text-align: center;
}
.thv2-road-desc p, .thv2-road-desc .elementor-text-editor {
  font-size: 13px;
  color: var(--slate);
  line-height: 1.65;
  text-align: center;
}

/* FAQ toggle */
.thv2-faq-toggle .elementor-toggle-item {
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 14px;
  margin-bottom: 14px;
  overflow: hidden;
  box-shadow: var(--shadow-sm);
}
.thv2-faq-toggle .elementor-toggle-item.elementor-active {
  border-color: var(--flow-soft2);
  box-shadow: var(--shadow-md);
}
.thv2-faq-toggle .elementor-tab-title {
  padding: 24px 30px;
  font-size: 16px;
  font-weight: 800;
  color: var(--navy);
  cursor: pointer;
  border: none;
}
.thv2-faq-toggle .elementor-tab-title .elementor-toggle-icon {
  color: var(--flow-1);
  font-size: 14px;
}
.thv2-faq-toggle .elementor-tab-content {
  padding: 0 30px 26px;
  font-size: 14.5px;
  color: var(--slate);
  line-height: 1.85;
  border: none;
}
.thv2-faq-toggle .elementor-tab-content strong {
  color: var(--flow-1);
  font-weight: 800;
}

/* Final CTA */
.thv2-final-cta-h2 .elementor-heading-title {
  font-family: 'Noto Sans KR', sans-serif;
  font-size: clamp(32px, 4.6vw, 54px);
  font-weight: 900;
  line-height: 1.2;
  letter-spacing: -.025em;
  color: #fff;
  text-align: center;
}
.thv2-final-cta-p p, .thv2-final-cta-p .elementor-text-editor {
  font-size: clamp(15px, 1.3vw, 17px);
  color: rgba(255,255,255,.85);
  line-height: 1.8;
  max-width: 620px;
  margin: 0 auto;
  text-align: center;
}

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
  .courses *, .courses *::before, .courses *::after,
  .hc-freepdf *, .hc-freepdf *::before, .hc-freepdf *::after,
  .blog *, .blog *::before, .blog *::after,
  .thv2-hero *, .thv2-stats *, .thv2-problem *, .thv2-solution *,
  .thv2-roadmap *, .thv2-faq *, .thv2-final-cta * {
    animation-duration: .01ms !important;
    transition-duration: .01ms !important;
  }
}

/* ═══════════════════════════════════════════════════════════
 * 검수 미통과 #128 / #131 — Final CTA 2 버튼 레이아웃
 * 데스크톱: 가로 중앙 정렬 / 모바일: 세로 stack
 * ═══════════════════════════════════════════════════════════ */
.thv2-final-cta .elementor-widget.thv2-final-cta-btn {
  display: inline-block;
  width: auto;
  vertical-align: middle;
  margin: 0 6px;
}
.thv2-final-cta .elementor-widget.thv2-final-cta-btn .elementor-button {
  min-width: 220px;
}
.thv2-final-cta .thv2-final-cta-btn--ghost .elementor-button {
  backdrop-filter: blur(2px);
}
.thv2-final-cta .thv2-final-cta-btn--ghost .elementor-button:hover {
  background: rgba(255,255,255,0.1) !important;
  border-color: #fff !important;
}
@media (max-width: 640px) {
  .thv2-final-cta .elementor-widget.thv2-final-cta-btn {
    display: block;
    width: 100%;
    max-width: 300px;
    margin: 0 auto 12px;
  }
  .thv2-final-cta .elementor-widget.thv2-final-cta-btn:last-child {
    margin-bottom: 0;
  }
  .thv2-final-cta .elementor-widget.thv2-final-cta-btn .elementor-button {
    width: 100%;
    min-width: 0;
  }
}

/* ═══════════════════════════════════════════════════════════
 * 검수 미통과 #130 — FreePDF 모바일 우측 잘림 수정
 * full-bleed (100vw + -50vw margin) 기법이 모바일에서 스크롤바 포함
 * 뷰포트 폭으로 계산돼 수평 overflow 가 발생, 우측 콘텐츠가 잘리는
 * 현상. 뷰포트 경계 내로 clamp 하고 inner padding 을 넉넉히 확보.
 * ═══════════════════════════════════════════════════════════ */
.hc-freepdf {
  max-width: 100vw;
}
@media (max-width: 640px) {
  .hc-freepdf {
    /* full-bleed 해제: 모바일에선 부모 컨테이너 폭을 그대로 사용 */
    width: auto;
    left: auto;
    right: auto;
    margin-left: 0;
    margin-right: 0;
  }
  .hc-freepdf-inner {
    padding: 0 20px;
  }
  .hc-freepdf-cover {
    max-width: 100%;
    box-sizing: border-box;
  }
}
/* #148: 모바일에서 FreePDF 카드 하단 여백 부족 — 카드 아래 32px 추가 */
@media (max-width: 640px) {
  .hc-freepdf {
    padding-bottom: 32px;
  }
}
/* 페이지 수평 overflow 방지 — full-bleed hack safety net */
html, body {
  overflow-x: clip;
}

/* ═══════════════════════════════════════════════════════════
 * #124: sticky 헤더 가림 방지 — 앵커 클릭 시 헤더 높이만큼 offset
 * Desktop 헤더 ~64px, mobile 헤더 ~56px. 안전치 80px scroll-margin.
 * ═══════════════════════════════════════════════════════════ */
[id] { scroll-margin-top: 80px; }
