/* ver.10: responsive reading rhythm for the existing Ouchi brand. */
:root {
  --page-gutter: clamp(14px, 4.6vw, 22px);
  --dock-clearance: 108px;
  --header-clearance: 84px;
}
:root {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
  scroll-padding-top: var(--header-clearance);
  scroll-padding-bottom: var(--dock-clearance);
}
body {
  font-size: 16px;
  line-height: 1.8;
  overflow-wrap: break-word;
  padding-bottom: var(--dock-clearance);
}
*, *::before, *::after { box-sizing: border-box; }
.wrap {
  width: calc(100% - var(--page-gutter) * 2) !important;
  max-width: 436px !important;
}
.section { padding-block: clamp(36px, 10vw, 46px); }
.section h2 {
  font-size: clamp(1.5rem, 6.3vw, 1.75rem);
  line-height: 1.55;
  letter-spacing: -.025em;
  margin-bottom: 24px;
}
h2 .keep, h3 .keep { max-width: 100%; }
.section-kicker { font-size: .875rem !important; line-height: 1.6; }
.section-kicker::before, .section-kicker::after { width: 24px; flex-shrink: 0; }
.section-lead, .section-foot {
  font-size: 1rem !important;
  line-height: 1.85;
}
.fine-print, .hero-note, .v7-under {
  font-size: .8125rem !important;
  line-height: 1.8;
  color: #526580;
}
.section-action { margin-top: 24px; }
.section-action p { font-size: .875rem; line-height: 1.7; }
.button {
  min-height: 56px;
  min-width: 0;
  padding: 14px 16px;
  font-size: 1.0625rem;
  line-height: 1.55;
  gap: 10px;
}
.section-action .button { min-width: 0; width: 100%; }
.button .icon { width: 20px; height: 20px; flex-shrink: 0; }
.text-link { font-size: .9375rem; line-height: 1.65; padding-block: 8px; }
a, button, input, select, textarea, summary { touch-action: manipulation; }
:where(a, button, input, select, textarea, summary):focus-visible {
  outline: 3px solid #10365d;
  outline-offset: 4px;
}
:where(section, [id], input, select, textarea, summary) { scroll-margin-top: 16px; }
input, select, textarea { max-width: 100%; }
img { height: auto; }

/* First screen: keep the headline, family photograph and action in balance. */
.header-inner { gap: 12px; min-height: 62px; height: auto; padding-block: 9px; }
.site-header { padding-top: env(safe-area-inset-top, 0px); }
.brand { min-width: 0; max-width: 100%; }
.brand img { max-width: 100%; }
.brand span { font-size: .625rem; line-height: 1.5; }
.hero-grid { padding-block: 22px 28px; }
.eyebrow { font-size: .875rem; line-height: 1.65; white-space: normal; }
.hero .eyebrow span { display: inline-block; max-width: 100%; }
.hero h1 { font-size: clamp(2rem, 8.6vw, 2.5rem); line-height: 1.3; }
.hero-lead { font-size: 1rem; line-height: 1.8; letter-spacing: 0; }
.hero-lead .lead-sentence > span { max-width: 100%; }
.assurances { gap: 7px; }
.assurances li {
  flex-direction: column;
  gap: 7px;
  padding: 12px 5px;
  font-size: .8125rem;
  line-height: 1.6;
  min-width: 0;
  text-align: center;
}
.assurances .icon { width: 30px; height: 30px; flex-shrink: 0; }
.assurances li > span { min-width: 0; max-width: 100%; }
.hero-action .button { font-size: 1.125rem; min-height: 58px; padding: 14px 16px; }
.hero-action > .text-link { font-size: .9375rem; line-height: 1.7; }

/* Credibility: retain a compact three-column comparison, readable captions. */
.v7-proof-card { padding: 20px 12px 16px; }
.v7-proof-ttl { font-size: .8125rem; }
.v7-pl, .v7-proof-list small { font-size: .8125rem; line-height: 1.6; }
.v7-proof-list b { font-size: clamp(25px, 7.2vw, 30px); line-height: 1.2; }
.v7-proof-list .v7-star { font-size: .6875rem; letter-spacing: .02em; }
.v7-award { gap: 12px; align-items: flex-start; }
.v7-award img { width: 72px; }
.v7-award figcaption { min-width: 0; }
.v7-award figcaption b { font-size: .9375rem; }
.v7-award figcaption li { font-size: .8125rem; line-height: 1.75; }
.v7-proof-fn { font-size: .8125rem; color: #526580; line-height: 1.75; }

/* Questions, service cards and the planning artwork. */
.concern-grid { gap: 12px; }
.concern-grid a { padding: 16px 14px; font-size: 1rem; gap: 12px; min-height: 88px; }
.concern-grid .icon-disc { flex-shrink: 0; }
.concern-grid a > span { min-width: 0; }
.value-card { padding: 20px 18px; }
.value-card h3 { font-size: 1.0625rem; line-height: 1.55; white-space: normal; }
.value-card p { font-size: .9375rem; line-height: 1.85; letter-spacing: 0; }
.planning-sheet { padding: 18px 10px 10px; }
.planning-sheet h3 { font-size: 1.125rem; white-space: normal; }
.sheet-columns { gap: 14px; }
.future { padding-top: 32px; }
.future h2 { padding-bottom: 14px; }
.v9-future-fig {
  margin-inline: calc(var(--page-gutter) * -1);
  width: calc(100% + var(--page-gutter) * 2);
}
.menu-row { padding: 20px 16px; row-gap: 10px; }
.menu-row h3 { font-size: 1.125rem; line-height: 1.6; }
.menu-row p { font-size: .9375rem; line-height: 1.85; }
.menu-row small { font-size: .8125rem; line-height: 1.75; }

/* Simulator: labels, choices and results remain readable at 320px. */
.v7-gap-card { padding: 22px 16px 42px; }
.v7-gap-row > p:first-child { font-size: .875rem; line-height: 1.75; }
.v7-pill { font-size: .875rem; }
.v7-gap-note { font-size: .8125rem; left: 63%; }
.v7-jump { width: 100%; text-align: center; }
.v7-jump > span { min-width: 0; }
.v7-jump .icon { flex-shrink: 0; }
.v7-sim-card { padding: 22px 16px; }
.v7-sim-f { margin-bottom: 24px; }
.v7-sim-h { gap: 8px; flex-wrap: wrap; }
.v7-sim-h label, .v7-sim-f legend { font-size: 1rem; }
.v7-sim-h output { font-size: 1.625rem; }
#v7-sim input[type=range] { height: 48px; }
.v7-sim-s { font-size: .8125rem; margin-top: 0; }
.v7-seg span { font-size: .9375rem; min-height: 56px; padding: 8px 4px; }
.v7-seg span small { font-size: .8125rem; line-height: 1.5; margin-top: 3px; }
.v7-res { padding: 20px 14px; }
.v7-res-cap { font-size: .875rem; line-height: 1.7; }
.v7-res-big { font-size: clamp(2rem, 10vw, 2.625rem); }
.v7-res-line { grid-template-columns: 78px minmax(20px, 1fr) auto; gap: 6px; }
.v7-res-line > span { font-size: .8125rem; }
.v7-res-line > b { font-size: .875rem; }
.v7-res-dl { grid-template-columns: 1fr 1fr; gap: 8px; }
.v7-res-dl div { padding: 12px 6px; }
.v7-res-dl dt { font-size: .8125rem; line-height: 1.6; }
.v7-res-dl dd { font-size: 1.0625rem; line-height: 1.6; }
.v7-res-dl .v7-hl { grid-column: 1 / -1; display: flex; align-items: baseline; justify-content: center; flex-wrap: wrap; gap: 4px 14px; }
.v7-res-msg { font-size: .9375rem; line-height: 1.85; }

/* Information sections: use the same reading size instead of tiny captions. */
.v7-gift { padding-block: 38px; }
.v7-gift-card { padding: 28px 18px 22px; }
.v7-gift-badge { font-size: .875rem; }
.v7-gift-t { font-size: 1.0625rem; line-height: 1.75; }
.v7-gift-s { font-size: .9375rem; line-height: 1.85; }
.v7-cmp table { font-size: .875rem; }
.v7-cmp th, .v7-cmp td { padding: 14px 5px; line-height: 1.7; overflow-wrap: anywhere; }
.v7-cmp thead th, .v7-cmp tbody th { font-size: .8125rem; line-height: 1.65; }
.v7-cmp thead th:first-child { width: 24%; }
.v7-cmp thead th.us { width: 30%; }
.v7-cmp td b { font-size: 1.25rem; margin-bottom: 6px; }
.v7-cases { padding: 22px 14px; }
.v7-cases ul { gap: 12px; }
.v7-cases li { padding: 16px 14px; }
.v7-cases b { font-size: 1rem; line-height: 1.65; }
.v7-cases span { font-size: .9375rem; line-height: 1.8; margin-top: 5px; }
.v7-cases .icon { flex-shrink: 0; }
.free p, .representative-copy p, .voice-grid p, .step-grid p, .store-card p {
  font-size: 1rem;
  line-height: 1.85;
}
.voice-grid article { padding: 22px 18px; }
.voice-grid h3 { font-size: 1.0625rem; line-height: 1.65; }
.voice-grid cite, .voice-grid a { font-size: .875rem; line-height: 1.7; }
.step-grid li { padding-block: 20px; }
.step-grid h3 { font-size: 1.125rem; line-height: 1.65; }
.v7-mid { padding-block: 38px; }
.v7-mid-t { font-size: 1.5rem; line-height: 1.6; }
.v7-mid-s { font-size: .9375rem; line-height: 1.8; }
.v7-mid-tel { flex-wrap: wrap; padding: 10px; min-height: 52px; }
.v7-mid-tel small { font-size: .8125rem; }
.faq-item summary { padding-block: 18px; min-height: 60px; }
.faq-question { font-size: 1rem; line-height: 1.7; }
.faq-answer { font-size: 1rem; line-height: 1.85; }
.store-card { padding: 24px 18px; }
.store-card h3 { font-size: 1.25rem; line-height: 1.6; }
.v7-map { font-size: .9375rem; padding-block: 8px; }

/* Form: larger targets and native-sized inputs avoid cramped mobile entry. */
.form-intro { font-size: 1rem; line-height: 1.8; }
.v7-form-assure { gap: 8px; margin-block: 14px 10px; }
.v7-form-assure li { font-size: .8125rem; padding: 4px 10px; }
.v7-chips { gap: 8px; }
.v7-chips button { min-height: 44px; font-size: .875rem; padding: 8px 12px; }
.field label, .field legend { line-height: 1.7; }
.field-help, .field-error, .form-note, .optional-label { font-size: .8125rem; line-height: 1.75; }
input[type=text], input[type=tel], input[type=email], input[type=date], select, textarea {
  font-size: max(16px, 1rem) !important;
  min-width: 0;
  min-height: 52px !important;
}
textarea { line-height: 1.8; }
.radio-group > label { min-height: 52px; padding-block: 12px; }
.consent { line-height: 1.8; }
.site-footer { padding-bottom: 28px; }
.site-footer p, .site-footer a { font-size: .8125rem; line-height: 1.8; }
.contact-phone, .store-phone {
  max-width: 100%;
  white-space: normal;
  overflow-wrap: anywhere;
  text-align: center;
}
.contact-phone { flex-wrap: wrap; justify-content: center; }
.contact-phone > .icon { flex-shrink: 0; }

/* Thumb-friendly dock with room for the iPhone home indicator. */
.mobile-cta { padding-bottom: env(safe-area-inset-bottom, 0px); }
.v7-dock-top { font-size: .75rem; line-height: 1.5; padding: 4px 8px; flex-wrap: wrap; }
.v7-dock-top span { font-size: .6875rem; }
.mobile-cta.v10-compact .v7-dock-top { display: none; }
.v7-dock-in {
  grid-template-columns: 48px 48px minmax(0, 1fr);
  gap: 6px;
  padding: 8px max(8px, env(safe-area-inset-right, 0px)) 8px max(8px, env(safe-area-inset-left, 0px));
}
.v7-dock-in > a { min-height: 52px; }
.v7-dock-in .sticky-phone, .v7-dock-line { font-size: .6875rem; }
.v7-dock-in .button { font-size: 1rem !important; min-height: 52px; padding: 8px !important; gap: 4px; }
.v7-dock-in .button .icon { width: 16px; height: 16px; }
@media (max-width: 359px) {
  .v7-dock-in .button { font-size: .875rem !important; }
  .v7-cmp table { font-size: .8125rem; }
  .v7-cmp th, .v7-cmp td { padding-inline: 4px; }
  .v7-proof-card { padding-inline: 10px; }
  .v7-res { padding-inline: 10px; }
  .v7-res-line { grid-template-columns: 72px minmax(16px, 1fr) auto; }
  .v7-res-line > span { font-size: .75rem; }
  .menu-row { padding-inline: 12px; column-gap: 8px; }
}
@media (orientation: landscape) and (max-height: 520px) {
  .site-header { position: relative; }
  .v7-dock-top { display: none; }
  .v7-dock-in { padding-block: 5px; }
  .v7-dock-in > a, .v7-dock-in .button { min-height: 46px; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto !important; }
  *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; }
}
