/* 見出しを本文とのバランスに合わせて整える共通設定 */
html[lang="ja"] body {
  word-break: auto-phrase;
  line-break: strict;
  text-wrap: pretty;
}

.home-page .hero h1 { font-size: clamp(30px, 3.1vw, 40px); line-height: 1.34; }
.home-page .company h2,
.home-page .cost-guide h2,
.home-page .intro h2,
.home-page .products h2,
.home-page .creative h2,
.home-page .lab-image-copy h2,
.home-page .process h2,
.home-page .contact h2 { font-size: clamp(27px, 2.6vw, 38px); line-height: 1.4; }
.home-page .loop-card h3,
.home-page .creative-card h3 { font-size: 16px; }

.page-hero h1 { font-size: clamp(30px, 3.2vw, 42px); line-height: 1.36; }
.section-intro h2,
.page-cta h2 { font-size: clamp(27px, 2.6vw, 36px); line-height: 1.42; }
.feature-card h3,
.step-card h3,
.category-card h3 { font-size: 17px; }

.guide-hero h1,
.section-heading h2,
.guide-note h2,
.guide-cta h2 { font-size: clamp(30px, 3.2vw, 42px); line-height: 1.4; }
.story-copy h2 { font-size: clamp(27px, 2.7vw, 36px); line-height: 1.42; }
.benefit-grid h3 { font-size: 22px; }
.driver-grid h3 { font-size: 17px; }

.contact-hero h1 { font-size: clamp(30px, 3.2vw, 42px); line-height: 1.36; }

/* 本文は固定改行を使わず、画面幅に合わせて自然に折り返す */
.home-page .hero-text br,
.home-page .company-lead > p br,
.home-page .company-details dd br,
.home-page .lab-image-copy p br,
.home-page .products-lead > p br,
.page-hero p br,
.section-intro > p br,
.body-copy p br,
.guide-hero p br,
.fit-section p br,
.permit-panel p br,
.story-copy > p br,
.section-heading > p br,
.guide-cta > p br,
.contact-hero > div > p br { display: none; }

@media (max-width: 800px) {
  .home-page .hero h1 { font-size: clamp(29px, 7.4vw, 34px); line-height: 1.34; }
  .home-page .company h2,
  .home-page .cost-guide h2,
  .home-page .intro h2,
  .home-page .products h2,
  .home-page .creative h2,
  .home-page .lab-image-copy h2,
  .home-page .process h2,
  .home-page .contact h2 { font-size: clamp(25px, 6.6vw, 30px); line-height: 1.42; }
  .home-page .loop-card h3,
  .home-page .creative-card h3 { font-size: 16px; }

  .page-hero h1 { font-size: clamp(23px, 6.2vw, 28px); line-height: 1.4; }
  .section-intro h2,
  .page-cta h2 { font-size: clamp(25px, 6.5vw, 30px); line-height: 1.42; }
  .feature-card h3,
  .step-card h3,
  .category-card h3 { font-size: 16px; }

  .guide-hero h1,
  .section-heading h2,
  .guide-note h2,
  .guide-cta h2 { font-size: clamp(25px, 6.6vw, 31px); line-height: 1.42; }
  .story-copy h2 { font-size: clamp(25px, 6.5vw, 30px); }
  .benefit-grid h3 { font-size: 20px; }
  .driver-grid h3 { font-size: 16px; }
  .contact-hero h1 { font-size: clamp(27px, 7vw, 32px); line-height: 1.4; }
}

/* 読みやすさを最優先にした再調整：語句が途中で切れない幅と文字サイズにする */
.reveal,
.reveal.is-visible {
  opacity: 1;
  transform: none;
  transition: none;
}

@media (min-width: 801px) {
  .home-page .hero-grid {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  }

  .home-page .hero-copy {
    max-width: none;
    padding: 70px 4vw 72px 5vw;
  }

  .home-page .hero h1 {
    font-size: 32px;
    line-height: 1.45;
    letter-spacing: .015em;
  }

  .home-page .hero-text {
    max-width: 590px;
    font-size: 15px;
    line-height: 2;
  }

  .home-page .hero-actions .button {
    min-width: 238px;
    white-space: nowrap;
  }

  .home-page .company,
  .home-page .lab-image-inner {
    grid-template-columns: minmax(0, .95fr) minmax(0, 1.05fr);
    gap: 7vw;
  }

  .home-page .company h2,
  .home-page .lab-image-copy h2,
  .home-page .cost-guide h2,
  .home-page .intro h2,
  .home-page .creative h2,
  .home-page .process h2,
  .home-page .contact h2 {
    font-size: 29px;
    line-height: 1.5;
    letter-spacing: .015em;
  }

  .home-page .company-lead > p:last-child,
  .home-page .lab-image-copy p,
  .home-page .products-lead > p:last-child,
  .home-page .company-details dd {
    font-size: 15px;
    line-height: 2;
  }

  .home-page .products {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 5vw;
    padding: 110px 6vw;
  }

  .home-page .products h2 {
    font-size: 27px;
    line-height: 1.5;
    letter-spacing: .01em;
  }

  .home-page .product-copy h3 {
    font-size: 21px;
    line-height: 1.55;
  }

  .page-hero h1,
  .contact-hero h1 {
    font-size: 33px;
    line-height: 1.45;
    letter-spacing: .015em;
  }

  .section-intro h2,
  .page-cta h2,
  .story-copy h2 {
    font-size: 29px;
    line-height: 1.5;
    letter-spacing: .015em;
  }

  .guide-hero h1,
  .section-heading h2,
  .guide-note h2,
  .guide-cta h2 {
    font-size: 31px;
    line-height: 1.48;
    letter-spacing: .015em;
  }

  .guide-hero-copy > p:not(.eyebrow),
  .section-heading > p:not(.eyebrow),
  .permit-panel p,
  .guide-note > div:last-child > p,
  .guide-cta > p:not(.eyebrow) {
    font-size: 15px;
    line-height: 2;
  }
}

@media (max-width: 800px) {
  .home-page .hero h1 {
    font-size: clamp(26px, 7vw, 29px);
    line-height: 1.46;
  }

  .home-page .company h2,
  .home-page .cost-guide h2,
  .home-page .intro h2,
  .home-page .products h2,
  .home-page .creative h2,
  .home-page .lab-image-copy h2,
  .home-page .process h2,
  .home-page .contact h2 {
    font-size: clamp(24px, 6.4vw, 27px);
    line-height: 1.5;
    letter-spacing: .01em;
  }

  .home-page .hero-text,
  .home-page .company-lead > p:last-child,
  .home-page .lab-image-copy p,
  .home-page .products-lead > p:last-child {
    font-size: 15px;
    line-height: 2;
  }

  .home-page .hero-actions .button {
    min-width: 220px;
    white-space: nowrap;
  }

  .page-hero h1,
  .contact-hero h1 {
    font-size: clamp(25px, 6.7vw, 28px);
    line-height: 1.46;
  }

  .section-intro h2,
  .page-cta h2,
  .story-copy h2,
  .guide-hero h1,
  .section-heading h2,
  .guide-note h2,
  .guide-cta h2 {
    font-size: clamp(24px, 6.4vw, 27px);
    line-height: 1.5;
  }
}
