/* Font sizes are independent of the original viewport-scaled layout unit. */
body {
  --reading-text: 1rem;
  --reading-h1: clamp(2rem, 3.1vw, 2.75rem);
  --reading-h2: clamp(1.5rem, 2.2vw, 2rem);
  --reading-h3: clamp(1.125rem, 1.5vw, 1.3125rem);
  font-size: var(--reading-text);
  line-height: 1.72;
}

html body.sitewide-rebuilt { font-size: var(--reading-text); line-height: 1.72; }

body.sitewide-rebuilt main p:not(:where(.eyebrow, .tag, .kicker, .small, .note, .hero-credit, .plan-price, .amount, .label, .num, .caption, .price)) {
  font-size: var(--reading-text);
}

body :is(.hero-copy h1, .hero-live h1, .hero h1, .es-main .es-hero h1, .vp-main .vp-hero h1, .thanks-content h1, .rw-title h1),
body.real-estate-page h1 {
  font-size: var(--reading-h1) !important;
  font-weight: 700;
  line-height: 1.24;
}

body .es-main .es-hero h1 strong {
  font-size: 1em;
  font-weight: inherit;
}

body.es-speed-page .es-main :is(p.es-hero-lede, p.es-hero-process, p.es-campaign) {
  font-size: var(--reading-text);
  font-weight: 600;
  line-height: 1.55 !important;
}
body.es-speed-page .es-main p.es-hero-lede { font-size: 1.1875rem; }

body :is(.hero-copy, .hero-live, .hero .hero-text) p:not(.eyebrow, .kicker, .hero-credit) {
  font-size: var(--reading-text);
  line-height: 1.65;
}

body :is(.section, .es-main, .real-estate-page, .ai-store-support, .final-contact, .scope-layout, .faq, .related-copy, .footer-top) h2,
body :is(.section-heading, .section-title-center, .safety-layout, .shoot-grid, .service-matrix, .website-grid, .remote-copy, .vp-main, .vp-service-pricing, .real-video-works) h2,
body.real-estate-page main h2,
body.page-social :is(#pickup, #official-sns) .heading h2,
body.dtp #service .heading h2,
body.page-corporation .split > div > div.heading h2,
body.sitewide-rebuilt .new-end h2,
body.sitewide-rebuilt :is(.drone-intro, .scope-layout, .safety-layout, .end-grid) h2,
body.management :is(.intro-support, .operation-layout, .flow-full) h2,
body.line-page .section .section-title-center h2,
body :is(.management, .sitewide-rebuilt) .section-heading h2 {
  font-size: var(--reading-h2);
  font-weight: 700;
  line-height: 1.36;
}

body :is(.section, .es-main, .ai-store-support, .real-estate-page) h3,
body :is(.feature, .price-card, .plain-rate, .editing-card, .task-copy, .option-row, .management-row) h3 {
  font-size: var(--reading-h3);
  font-weight: 700;
  line-height: 1.4;
}

body :is(.section .lede, .heading .lede, .es-checks, .es-other-plans p) {
  font-size: var(--reading-text);
  line-height: 1.7;
}

body .site-header :is(.nav-items > li > a, .nav-expand, .nav-link, .header-line),
body :is(.main-nav, .global-nav) > ul > li > a {
  font-size: .9375rem;
}

body .es-main :is(.es-button, .es-price-badge) { font-size: .9375rem; }
body .es-main .es-price-badge > strong { font-size: 1.1875rem; }

/* Keep descriptions readable in the narrow columns used by process steps. */
body.es-speed-page .es-main .es-flow-grid p:not(.es-time-start) {
  font-size: .9375rem;
  font-weight: 400;
  line-height: 1.65;
}

body.es-speed-page .es-main .es-audience-grid article > p {
  font-size: .9375rem;
  font-weight: 500;
  line-height: 1.65;
}

body.es-speed-page .es-main :is(.es-route-grid, .es-topic-grid) h2 {
  font-size: clamp(1.0625rem, 1.7vw, 1.25rem);
  font-weight: 700;
  line-height: 1.4;
}

@media (min-width: 701px) {
  body.es-speed-page .es-main .es-flow h2 { font-size: clamp(1.5rem, 2.2vw, 1.75rem); }
  body.es-speed-page .es-main .es-flow-grid h3 { font-size: 1.0625rem; min-height: 3.25rem; }
  body.es-speed-page .es-main .es-flow-grid .es-step-number { font-size: 1.75rem; font-weight: 700; }
}

@media (min-width: 1000px) {
  /* Older page templates size these descriptions independently of the body. */
  body main :is(.clarity-hero .hero-live > p, .clarity-hero .hero-copy > p, .vp-hero-description, .re-hero .hero-lede):not(.kicker):not(:where(.eyebrow, .hero-credit, .hero-image-credit)) {
    font-size: var(--reading-text) !important;
    line-height: 1.65;
  }

  body main :is(.section .lede, .heading > p, .section-title-center > p, .faq-intro > p, .faq details p, .related-copy > p,
    .feature > p, .checklist > li, .rebuilt-section article > p, .new-end article > p, .management-row > div > p,
    .choices article > p, .es-checks > li, .es-ad-consult > p, .lp-direct-guide > p, #web-design-offer p,
    .vp-shoot-add, .thanks-content > p, .pc-detail-lead, .rw-subtitle, .setup-copy .lede, .support-copy p.hours):not(:where(.amount, .price, .plan-price, .kicker, .eyebrow, .small, .note, .caption, .label, .hero-credit, .hero-image-credit)) {
    font-size: var(--reading-text) !important;
    line-height: 1.68;
  }

  body.page-drone-pr-guide-stay main .journal-row p:not(.kicker),
  body.korean main .k-fees article > p,
  body.face-page main #safety p,
  body.article-page main #scope p,
  body.ec main .scope-layout p,
  body.ec main .service-matrix p,
  body.page-drone-pr-guide-outdoor main .operator-banner p,
  body.web-prices main .management-row p.small { font-size: var(--reading-text); }
  body.page-sns-operation main #flow article > p { font-size: var(--reading-text); }
}

@media (max-width: 700px) {
  body {
    --reading-text: .975rem;
    --reading-h1: clamp(1.7rem, 7.1vw, 1.875rem);
    --reading-h2: clamp(1.375rem, 5.7vw, 1.5rem);
    --reading-h3: 1.125rem;
  }
  body.es-speed-page .es-main p.es-hero-lede { font-size: 1.0625rem; }
}
