/* ============================================================
   Readability polish
   - 見出しの強制改行を廃止
   - 日本語の文節単位で自然に折り返す
   - 小さすぎる補助文字を全体的に引き上げる
   ============================================================ */

body {
  font-size: 17px;
  line-height: 1.8;
}

/* 見出しはHTML上の強制改行を使わず、文節単位で折り返す */
.visual-page h1,
.visual-page h2,
.visual-page h3 {
  max-width: 100%;
  word-break: auto-phrase;
  line-break: strict;
  overflow-wrap: normal;
  text-wrap: balance;
}

.visual-page h1 br,
.visual-page h2 br,
.visual-page h3 br {
  display: none;
}

/* Header / footer */
.desktop-nav a,
.header-cta {
  font-size: 15px !important;
  white-space: nowrap;
}

.brand-copy-clean small {
  font-size: 13px !important;
  letter-spacing: .08em !important;
}

.mobile-menu nav a,
.mobile-menu-cta {
  font-size: 17px !important;
}

.mobile-menu nav a span {
  font-size: 15px !important;
}

.site-footer,
.site-footer p,
.site-footer a,
.footer-links span,
.footer-bottom {
  font-size: 15px !important;
}

/* Common labels and body copy */
.visual-label {
  margin-bottom: 18px !important;
  font-size: 16px !important;
  letter-spacing: .08em !important;
  text-transform: none !important;
}

.visual-kicker {
  font-size: clamp(19px, 1.4vw, 22px) !important;
}

.visual-button {
  font-size: 17px !important;
}

.visual-mini-flow {
  font-size: 16px !important;
}

.visual-page p,
.visual-page li,
.visual-page dd {
  line-height: 1.8;
}

/* Hero: second phrase must fit on one line at desktop widths */
.visual-hero-card {
  width: min(860px, 68vw) !important;
}

.visual-hero h1 {
  font-size: clamp(62px, 6vw, 90px) !important;
  line-height: 1.12 !important;
  letter-spacing: -.065em !important;
}

.visual-hero-lead {
  font-size: clamp(19px, 1.45vw, 23px) !important;
}

/* Section headings: large, but not so large that a word splits */
.visual-section-head h2 {
  font-size: clamp(50px, 5.4vw, 78px) !important;
  line-height: 1.14 !important;
  letter-spacing: -.06em !important;
}

.visual-problem-copy {
  max-width: 980px;
}

.visual-problem-copy h2 {
  font-size: clamp(52px, 5.8vw, 82px) !important;
  line-height: 1.12 !important;
  letter-spacing: -.06em !important;
}

.visual-problem-copy > p:last-child {
  font-size: 19px !important;
}

.visual-problem-points strong {
  font-size: 18px !important;
}

.visual-problem-points span {
  font-size: 21px !important;
}

.visual-steps > li > span {
  font-size: 36px !important;
}

.visual-steps h3 {
  font-size: clamp(30px, 2.8vw, 42px) !important;
}

.visual-steps p {
  font-size: 17px !important;
}

.visual-photo-card-copy span {
  font-size: 16px !important;
  letter-spacing: .08em !important;
}

.visual-photo-card-copy h3 {
  font-size: clamp(40px, 4.2vw, 60px) !important;
  line-height: 1.14 !important;
  letter-spacing: -.055em !important;
}

.visual-photo-card-copy p {
  font-size: 18px !important;
}

.visual-user-value p {
  font-size: 17px !important;
}

.visual-region h2,
.visual-mission h2 {
  font-size: clamp(54px, 6vw, 86px) !important;
  line-height: 1.12 !important;
  letter-spacing: -.06em !important;
}

.visual-region-copy > p:last-child,
.visual-mission-copy > p:last-child {
  font-size: 19px !important;
}

/* Programs */
.visual-program-card small,
.visual-program-card span {
  font-size: 15px !important;
}

.visual-program-card strong {
  font-size: clamp(24px, 2vw, 31px) !important;
}

/* Founder / company */
.visual-founder-copy h2 {
  font-size: clamp(46px, 4.7vw, 68px) !important;
  line-height: 1.18 !important;
}

.visual-founder-copy > p {
  font-size: 18px !important;
}

.visual-founder-name span,
.visual-founder-tags span {
  font-size: 15px !important;
}

.visual-company-list dt {
  font-size: 16px !important;
}

.visual-company-list dd {
  font-size: 18px !important;
}

/* Contact */
.visual-contact-copy h2 {
  font-size: clamp(48px, 5vw, 74px) !important;
  line-height: 1.16 !important;
}

.visual-contact-copy > p,
.visual-contact-copy > a {
  font-size: 18px !important;
}

.visual-form-field label {
  font-size: 16px !important;
}

.visual-form-field label span {
  font-size: 15px !important;
}

.visual-form-field input,
.visual-form-field select,
.visual-form-field textarea {
  font-size: 17px !important;
}

.visual-privacy {
  font-size: 15px !important;
}

.visual-submit {
  font-size: 17px !important;
}

@media (max-width: 820px) {
  .visual-hero-card {
    width: 100% !important;
  }

  .visual-hero h1 {
    font-size: clamp(42px, 10vw, 56px) !important;
    line-height: 1.14 !important;
  }

  .visual-section-head h2,
  .visual-problem-copy h2,
  .visual-region h2,
  .visual-mission h2,
  .visual-founder-copy h2,
  .visual-contact-copy h2 {
    font-size: clamp(40px, 9.8vw, 58px) !important;
    line-height: 1.16 !important;
  }

  .visual-photo-card-copy h3 {
    font-size: clamp(38px, 9vw, 52px) !important;
  }
}

@media (max-width: 560px) {
  body {
    font-size: 16px;
  }

  .visual-label {
    font-size: 15px !important;
  }

  .visual-kicker,
  .visual-hero-lead,
  .visual-problem-copy > p:last-child,
  .visual-region-copy > p:last-child,
  .visual-mission-copy > p:last-child,
  .visual-photo-card-copy p {
    font-size: 17px !important;
  }

  .visual-mini-flow {
    display: flex !important;
    flex-wrap: wrap;
    gap: 8px 10px !important;
  }

  .visual-mini-flow i {
    width: 16px !important;
    height: 1px !important;
    margin: 0 !important;
  }

  .visual-problem-points span {
    font-size: 18px !important;
  }

  .visual-program-card small,
  .visual-program-card span,
  .visual-founder-name span,
  .visual-founder-tags span,
  .visual-company-list dt,
  .visual-privacy {
    font-size: 15px !important;
  }
}
