/* Shared Japanese typography. Keep the existing palette and desktop identity. */
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
body { overflow-x: visible; }
body :is(h1,h2,h3,h4,p,li,summary,address,.faq-answer) {
  word-break: normal;
  line-break: strict;
  overflow-wrap: break-word;
}
:where(h1,h2,h3,h4,summary) { text-wrap: balance; }
:where(p,li,address,.faq-answer) { text-wrap: pretty; }
/* Short editorial units stay together, with a fallback for enlarged text. */
.phrase {
  display: inline-block;
  max-inline-size: 100%;
  vertical-align: baseline;
  white-space: normal;
  word-break: normal;
  overflow-wrap: break-word;
}
.keep-word { display: inline-block; max-inline-size: 100%; white-space: normal; word-break: keep-all; overflow-wrap: anywhere; }
.for-you-copy h2 .heading-line { display: block; white-space: normal; }
.for-you-copy h2 .phrase { display: inline-block; white-space: normal; }
:where(.container,.narrow,.article-width,.hero-copy,.for-you-copy,.perspective,
  .audience-card,.worry-card,.service,.reason-card>div,.couple-title,
  .conversion-strip>div,.column-card,.step>div,.card,.footer-grid>div) { min-width: 0; }
.brand { min-width: 0; }
.brand>span:last-child { min-width: 0; }
.brand-mark,.mark,.menu-button { flex-shrink: 0; }
.brand-name,.brand-sub { overflow-wrap: break-word; line-break: strict; }
.advisor-identity strong,.advisor-identity small,.price-row strong {
  max-width: 100%; white-space: normal; word-break: keep-all; overflow-wrap: break-word;
}
.advisor-identity span { text-wrap: balance; }
.advisor-identity>span .phrase { display: inline-block; }
.button,.consultation-cta,.nav-cta,.nav .cta {
  max-inline-size: 100%;
  min-inline-size: 0;
  height: auto;
  text-align: center;
  white-space: normal;
  word-break: normal;
  line-break: strict;
}
.button-label { min-width: 0; text-wrap: balance; }
.consultation-cta::after,.nav-cta::after,.nav .cta::after,.consult .button::after { flex-shrink: 0; }
.header-inner,.header-in { min-width: 0; }
.header.menu-open .nav {
  position: absolute;
  inset: 100% 0 auto;
  max-height: calc(100dvh - 160px);
  overflow-y: auto;
}
.hero-intro .intro-paragraphs { width: 100%; margin: 18px auto 0; text-align: center; }
.hero-intro .intro-paragraphs p { margin: 0; }
.hero-intro .intro-copy { width: 100%; text-align: center; }
.hero-intro .intro-line,.hero-intro .intro-unit { display: inline; }
.description+.description { margin-top: 1em; }
.footer a[href^="mailto:"] { overflow-wrap: anywhere; }
.footer .brand-name .phrase { display: inline-block; }
.site-remarriage .header-in { height: auto; min-height: 72px; padding-block: 12px; flex-wrap: wrap; }
.site-remarriage .brand { line-height: 1.65; }
.site-article .article-body .dialogue { margin-bottom: 1.65em; }
.site-article .article-body h2 { overflow-wrap: break-word; }
.site-article .category { text-wrap: balance; }

@media (min-width: 821px) and (max-width: 1120px) {
  /* The two profiles need enough measure for names and their introductions. */
  .site-home .couple-top { grid-template-columns: minmax(0,1fr); }
  .site-home .audience-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .site-home .for-you-intro { gap: 36px; }
  .site-home .for-you-copy h2 { font-size: 2rem; }
  .site-home .worry-grid { grid-template-columns: minmax(0,1fr); }
}
@media (max-width: 1080px) {
  .site-home .header-inner { gap: 12px; }
  .site-home .header.menu-open .nav { padding-bottom: calc(24px + env(safe-area-inset-bottom)); }
}
@media (max-width: 980px) {
  .site-counseling .header-inner { gap: 12px; }
}
@media (max-width: 820px) {
  .site-home .for-you-intro { gap: 24px; }
  .site-home .for-you-copy { max-width: 42rem; }
  .site-home .reason-layout,.site-home .couple-top,.site-home .price-layout,
  .site-home .area-card,.site-home .column-feature { grid-template-columns: minmax(0,1fr); }
  .site-remarriage .hero-layout { grid-template-columns: minmax(0,1fr); }
}
@media (max-width: 720px) {
  body { font-size: 1rem; line-height: 1.95; }
  .container,.narrow,.article-width { width: calc(100% - 32px); }
  h1,h2,h3 { letter-spacing: .01em; }
  :is(h1,h2,h3) .desktop-break { display: none; }
  :where(p,li,address,.faq-answer) { line-height: 1.95; }
  .brand-name { font-size: 1rem; }
  .brand-sub { font-size: .75rem; line-height: 1.6; letter-spacing: 0; }
  .brand { gap: 9px; }
  .header-inner { height: auto; min-height: 70px; padding-block: 10px; }
  .menu-button { width: 44px; height: 44px; }
  .header.menu-open .nav a { white-space: normal; font-size: 1rem; }
  .nav .cta,.nav-cta,.consultation-cta,.button {
    min-height: 54px;
    font-size: 1rem;
    line-height: 1.65;
    padding: 12px 14px;
    gap: 8px;
  }
  .conversion-strip .button { white-space: normal; }
  .kicker,.eyebrow { letter-spacing: .08em; line-height: 1.6; }
  .kicker::before,.kicker::after { flex-shrink: 0; }
  .hero-intro { padding-inline: 0; }
  .hero-intro h2 { font-size: 1.625rem; letter-spacing: .01em; }
  .hero-intro .intro-paragraphs { margin-top: 20px; }
  .hero-intro .intro-paragraphs p+p { margin-top: 1em; }
  .hero-intro p { font-size: 1rem; line-height: 1.95; }
  .hero-intro .intro-copy { font-size: 1rem; line-height: 2; text-align: center; text-wrap: wrap; }
  .hero-intro .intro-line { display: block; margin: 0; }
  .hero-intro .intro-unit {
    display: inline-block;
    max-inline-size: 100%;
    white-space: normal;
    overflow-wrap: break-word;
    vertical-align: baseline;
  }
  .hero-cta-panel { padding-inline: 16px; }
  .hero-cta-panel .actions { min-width: 0; }
  .micro-proof,.proof { font-size: .875rem; }
  .proof-item { grid-template-columns: 36px minmax(0,1fr); padding: 22px 0; gap: 14px; }
  .proof-item b { font-size: 1rem; line-height: 1.7; }
  .proof-item small { font-size: .875rem; line-height: 1.85; }
  .section-head h2,.reason-intro h2,.area-card h2 { font-size: 1.75rem; line-height: 1.65; }
  .section-head p { text-align: left; }
  .for-you-copy h2 { font-size: 1.625rem; line-height: 1.7; letter-spacing: 0; }
  .for-you-intro { gap: 20px; }
  .for-you-copy>p:last-child { line-height: 1.95; }
  .audience-grid,.services-grid,.worry-grid { grid-template-columns: minmax(0,1fr); }
  .audience-card,.worry-card,.service { padding: 26px 20px; }
  .audience-card h3,.worry-card h3,.service h3,.reason-card h3,.perspective h3 { font-size: 1.25rem; line-height: 1.75; }
  .worry-card .question { padding-right: 28px; font-size: .875rem; letter-spacing: 0; }
  .worry-card::before { font-size: 2rem; right: 16px; top: 20px; opacity: .65; }
  .audience-card p,.worry-card p,.reason-card p,.perspective p,.service p,
  .conversion-strip p,.price-example p,.honesty,.flow-step p,.faq-answer,.column-card p {
    font-size: 1rem; line-height: 1.95;
  }
  .reason-card { grid-template-columns: minmax(0,1fr); gap: 16px; padding: 24px 20px; }
  .reason-card::before { width: 46px; height: 46px; font-size: 1.125rem; }
  .conversion-strip { padding: 28px 18px; text-align: left; }
  .conversion-strip h3 { font-size: 1.375rem; line-height: 1.75; }
  .conversion-strip .button { justify-self: stretch; }
  .couple-panel { padding: 30px 16px; }
  .couple-top { gap: 32px; }
  .perspectives { grid-template-columns: minmax(0,1fr); }
  .perspective { padding: 24px 16px; }
  .advisor-image-frame { max-width: 230px; }
  .advisor-identity span { font-size: .875rem; letter-spacing: .02em; }
  .advisor-identity strong { font-size: 1.375rem; }
  .advisor-identity small,.perspective .role { font-size: .875rem; }
  .credentials { gap: 10px; }
  .credential { max-width: 100%; font-size: .875rem; padding: 8px 10px; letter-spacing: 0; }
  .price-card,.support-card { padding: 28px 18px; }
  .price-card h3,.support-card h3 { font-size: 1.375rem; line-height: 1.7; }
  .price-row { align-items: baseline; flex-wrap: wrap; gap: 4px 12px; }
  .price-row strong { font-size: 1.25rem; margin-left: auto; }
  .price-example { padding: 20px 14px; }
  .price-example b { font-size: 1.125rem; line-height: 1.85; }
  .support-list { grid-template-columns: minmax(0,1fr); }
  .support-list li { font-size: 1rem; padding-inline: 12px; }
  .honesty { padding: 18px 14px; }
  /* No negative paragraph margins: headings may occupy as many lines as needed. */
  .flow-list { grid-template-columns: minmax(0,1fr); gap: 0; }
  .flow-step { display: grid; grid-template-columns: 46px minmax(0,1fr); grid-template-rows: auto auto; gap: 6px 14px; padding: 0 0 30px; text-align: left; }
  .flow-step::before { grid-column: 1; grid-row: 1 / 3; width: 44px; height: 44px; margin: 0; }
  .flow-step>h3 { grid-column: 2; grid-row: 1; margin: 2px 0 0; font-size: 1.125rem; line-height: 1.7; }
  .flow-step>p { grid-column: 2; grid-row: 2; margin: 0; }
  .flow-step:not(:last-child)::after { display: block; top: 44px; bottom: 0; left: 22px; right: auto; width: 1px; height: auto; }
  .mid-cta { padding: 32px 18px; }
  .mid-cta h3 { font-size: 1.5rem; line-height: 1.75; }
  .mid-cta p { text-align: left; }
  .faq summary { padding: 20px 42px 20px 18px; font-size: 1.0625rem; line-height: 1.85; text-wrap: pretty; }
  .faq summary::after { right: 14px; }
  .faq-answer { margin: 0 14px 18px; padding: 17px 12px; }
  .area-card { padding: 28px 18px; }
  .column-card { padding: 26px 18px; }
  .column-card h3 { font-size: 1.375rem; line-height: 1.75; }
  .column-card .read-more,.footer-links,.footer address { font-size: .875rem; }
  .footer-grid { grid-template-columns: minmax(0,1fr); }
  .footer-links { grid-template-columns: minmax(0,1fr); }
  .footer .brand { align-items: flex-start; }
  .footer .brand-name { font-size: 1rem; line-height: 1.7; }
  .footer .brand-sub { font-size: .75rem; }
  .footer-note { font-size: .8125rem; line-height: 1.9; }
  .site-home { padding-bottom: calc(86px + env(safe-area-inset-bottom)); }
  .mobile-cta .button { font-size: 1rem; line-height: 1.6; }

  .site-remarriage .header-in { gap: 8px 16px; }
  .site-remarriage .brand { font-size: 1rem; }
  .site-remarriage .home { margin-left: auto; font-size: .875rem; }
  .site-remarriage .hero h1 { font-size: 1.875rem; line-height: 1.7; }
  .site-remarriage .section h2 { font-size: 1.75rem; line-height: 1.7; }
  .site-remarriage .card h3 { font-size: 1.25rem; line-height: 1.75; }
  .site-remarriage .card p,.site-remarriage .step p { font-size: 1rem; }
  .site-remarriage .step { grid-template-columns: minmax(0,1fr); gap: 14px; padding: 24px 20px; }
  .site-remarriage .step h3 { font-size: 1.125rem; line-height: 1.75; }
  .site-remarriage .cta { padding: 40px 0; }
  .site-remarriage .cta h2 { font-size: 1.625rem; line-height: 1.75; }
  .site-remarriage .cta p { text-align: left; }
  .site-remarriage address { font-size: .875rem; }

  .site-counseling .page-hero h1 { font-size: 2rem; line-height: 1.7; letter-spacing: 0; }
  .site-counseling .page-hero p:last-child { text-align: left; }
  .site-counseling .guide-card { padding: 30px 18px; }
  .site-counseling .guide-card h2 { font-size: 1.625rem; line-height: 1.75; }
  .site-counseling .method-card { padding: 28px 16px; }
  .site-counseling .phone-link { max-width: 100%; font-size: 1.875rem; letter-spacing: 0; white-space: normal; overflow-wrap: break-word; }
  .site-counseling .phone-note { font-size: .875rem; }
  .site-counseling .form-heading h2 { font-size: 1.75rem; line-height: 1.65; }
  .site-counseling .form-section { padding: 30px 0 16px; }
  .site-counseling .form-heading { padding-inline: 16px; }
  .site-counseling .form-card { padding: 0; }
  .site-counseling .form-fallback { font-size: .875rem; }

  .site-blog .header-in,.site-article .header-in { gap: 12px; flex-wrap: wrap; padding-block: 10px; }
  .site-blog .header .nav,.site-article .header .nav { max-width: 100%; }
  .site-blog .header .nav .cta,.site-article .header .nav .cta { font-size: .875rem; padding-inline: 10px; }
  .site-blog .card { padding: 26px 18px; }
  .site-blog .card h2 { font-size: 1.5rem; line-height: 1.75; }
  .site-blog .card p { font-size: 1rem; }
  .site-article .article-head h1 { font-size: 1.875rem; line-height: 1.75; }
  .site-article .category { font-size: .875rem; padding: 8px 10px; }
  .site-article .article-body { font-size: 1rem; line-height: 2; }
  .site-article .article-body p br { display: none; }
  .site-article .article-body h2 { font-size: 1.5rem; line-height: 1.8; padding-left: 12px; }
  .site-article .article-body h3 { font-size: 1.1875rem; line-height: 1.8; }
  .site-article .article-body ul { padding: 22px 16px 22px 34px; }
  .site-article .article-body .dialogue { padding: 18px 14px; }
  .site-article .consult { padding: 30px 16px; }
  .site-article .consult h2 { padding: 0; font-size: 1.5rem; }
  .site-article .related { padding: 24px 16px; }
  .site-article .related h2 { padding: 0; font-size: 1.25rem; }
  .site-article .related-links { display: grid; grid-template-columns: minmax(0,1fr); }
  .site-blog .footer p,.site-article .footer p { font-size: .875rem; }
}
@media (max-width: 360px) {
  .site-home .header .brand-sub,.site-counseling .header .brand-sub { max-width: 12rem; }
  .site-home .header-inner,.site-counseling .header-inner { gap: 8px; }
}

/* Shared consultation and LINE diagnosis entrances */
.dual-cta {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  justify-content: center;
  gap: 18px;
  margin-top: 30px;
}
.dual-cta-item {
  width: min(280px,100%);
  text-align: center;
}
.dual-cta .reservation-image-link,
.dual-cta .diagnosis-image-link {
  width: 100%;
  aspect-ratio: 2048 / 684;
}
.reservation-image-link,
.diagnosis-image-link {
  display: block;
  transition: transform .2s ease,filter .2s ease;
}
.reservation-image-link { width: min(280px,100%); }
.reservation-image-link:hover,
.diagnosis-image-link:hover { transform: translateY(-2px); filter: brightness(.98); }
.reservation-image-link:focus-visible,
.diagnosis-image-link:focus-visible { outline: 3px solid rgba(181,111,115,.4); outline-offset: 4px; }
.reservation-image-link img,
.diagnosis-image-link img {
  display: block;
  width: 100%;
  height: auto;
  border: 0;
}
.header .reservation-image-link { width: 210px; max-width: 42vw; flex: 0 0 auto; }
.nav > .reservation-image-link::after { display: none !important; }
.actions .reservation-image-link { margin-inline: auto; }
.conversion-strip .reservation-image-link { width: 280px; }
.mobile-cta .reservation-image-link { width: min(210px,100%); margin-inline: auto; }
.diagnosis-note {
  display: inline-block;
  margin: 9px 0 0;
  padding: 7px 11px;
  background: rgba(255,253,250,.96);
  color: #4A332B;
  font-family: "Noto Sans JP",sans-serif;
  font-size: clamp(15px,1.3vw,17px);
  font-weight: 700;
  line-height: 1.65;
  text-align: center;
}
.diagnosis-note span { display: block; white-space: nowrap; }
.footer .footer-dual-cta {
  margin: 0 auto 36px;
  padding-bottom: 34px;
  border-bottom: 1px solid rgba(255,255,255,.16);
}
.footer .diagnosis-note { color: #4A332B; }
.footer-cta-wrap { padding-top: 42px; background: #332c29; }
.footer-cta-wrap .footer-dual-cta { margin-top: 0; margin-bottom: 0; padding-bottom: 34px; border-bottom: 1px solid rgba(255,255,255,.16); }
.footer-cta-wrap .diagnosis-note { color: #4A332B; }
.article-end-prompt {
  margin: 3em 0 0 !important;
  text-align: center;
  font-weight: 700;
}
@media (max-width: 700px) {
  .dual-cta { display: grid; gap: 18px; }
  .dual-cta-item { width: min(100%,360px); margin-inline: auto; }
  .site-blog .header .reservation-image-link,
  .site-article .header .reservation-image-link { display: block !important; width: 170px; max-width: 55vw; }
  .header.menu-open .reservation-image-link { width: min(280px,100%); max-width: 100%; margin-inline: auto; padding: 0 !important; }
  .conversion-strip .reservation-image-link { width: min(280px,100%); margin-inline: auto; }
  .diagnosis-note { font-size: clamp(13px,4.2vw,16px); }
  .footer .footer-dual-cta { margin-bottom: 30px; padding-bottom: 28px; }
}
