/* Shared reading scale: body 16px, controls 14px+, metadata 12px+. */
body { font-size: 1rem; line-height: 1.6; }
button, input, select, textarea { font-family: inherit; }
h1, h2, h3, h4 { text-wrap: balance; overflow-wrap: break-word; }
p, li, dd { overflow-wrap: break-word; }
button, a, summary { -webkit-tap-highlight-color: transparent; }
button:focus-visible, a:focus-visible, summary:focus-visible {
  outline: 3px solid #60a5fa; outline-offset: 4px;
}
header { gap: 1rem; min-height: 5.25rem; height: auto; padding-block: .75rem; }
header .brand { flex-shrink: 0; }
.brand b { letter-spacing: -.045em; line-height: 1.15; }
.brand > i { font-size: .75rem; line-height: 1.4; letter-spacing: .14em; }
header nav a { font-size: .875rem; white-space: nowrap; }
header .btn, .account-link { font-size: .875rem; min-height: 2.75rem; }
.hamb { flex-shrink: 0; min-width: 2.75rem; min-height: 2.75rem; }
.mobile { top: calc(100% + .5rem); max-height: calc(100dvh - 7rem); overflow-y: auto; }
.mobile a { font-size: 1rem; }
.hero { grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr); gap: clamp(2rem, 4vw, 4rem); }
.hero-copy, .mock-wrap { min-width: 0; }
.hero h1 { font-size: clamp(2.5rem, 4.8vw, 4.5rem); line-height: 1.09; letter-spacing: -.045em; }
.eyebrow { font-size: .875rem; line-height: 1.5; border-radius: 1rem; }
.hero-copy > p { font-size: 1.125rem; line-height: 1.75; }
.hero-buttons { flex-wrap: wrap; gap: 1rem 1.5rem; }
.hero-buttons .btn.big { font-size: 1rem; }
.hero-buttons > a { min-height: 2.75rem; font-size: 1rem; }
.trust span, .clarity-flow span { font-size: .875rem; line-height: 1.6; }
.clarity-flow { flex-wrap: wrap; gap: .75rem 1.75rem; }
.clarity-flow span { white-space: normal; }
.title label, .analyzer-copy > label, .faq-title > label { font-size: .875rem; letter-spacing: .09em; }
.title h2, .analyzer h2, .faq-title h2 { font-size: clamp(1.875rem, 3vw, 2.875rem); line-height: 1.2; letter-spacing: -.03em; }
.title p, .steps p, .doc-grid article p, .faq-title > p { font-size: 1rem; line-height: 1.7; color: #536579; }
.steps article > strong, .steps small { font-size: .75rem; }
.steps small { color: #5b6b7a; }
.steps article > i { color: #60758b; font-size: 2rem; line-height: 1; }
.steps h3, .doc-grid article h3 { font-size: 1.125rem; line-height: 1.4; }
.steps p { min-height: 0; }
.doc-grid article > div { min-width: 0; }
.mock-top, .mock-foot { height: auto; min-height: 3.5rem; gap: .5rem; padding: .875rem; flex-wrap: wrap; }
.mock-top > span, .mock-top b, .mock-top b i, .mock-result > label,
.mock-result > small, .jpdoc small, .facts small, .todo small,
.float small, .mock-foot, .mock-action { font-size: .75rem; line-height: 1.5; }
.mock-top > span, .mock-result > small, .facts small, .todo small, .float small { color: #536579; }
.mock-body { grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr); gap: .875rem; }
.mock-result h3 { font-size: 1.125rem; line-height: 1.4; }
.facts { grid-template-columns: 1fr; }
.facts b, .todo b, .float b { font-size: .875rem; line-height: 1.5; }
.float { display: none; }
.jpdoc b { font-size: .875rem; }
.analyzer { grid-template-columns: minmax(0, .85fr) minmax(0, 1.15fr); gap: clamp(2rem, 4vw, 4.5rem); }
.analyzer-copy li { font-size: 1rem; }
.analyzer .workspace-content .result-facts small { font-size: .875rem; letter-spacing: 0; }
.analyzer .workspace-content .result-facts b { font-size: 1.25rem; line-height: 1.4; margin-top: .5rem; font-variant-numeric: tabular-nums; }
.workspace-head span, .photo-guide p, .workspace-panel .context-note { font-size: 1rem; }
.workspace-head small, .mini-glossary small, .workspace-note { font-size: .875rem !important; }
.workspace-content p { line-height: 1.75; }
.workspace-content [lang="ja"] { line-height: 1.9; word-break: normal; overflow-wrap: anywhere; }
.stage-card p { font-size: 1rem; }
.stage-card span { font-size: .75rem; }
.single-analysis { flex-wrap: wrap; gap: 1rem 1.5rem; margin-top: 0; }
.single-analysis span { font-size: .75rem; }
.single-analysis strong { font-size: 1.125rem; }
.single-analysis small, .single-analysis > b small { font-size: .875rem; color: #536579; }
.single-analysis > b { font-size: 2rem; font-variant-numeric: tabular-nums; }
.single-analysis .checkout { font-size: .875rem; min-height: 3rem; white-space: normal; text-align: center; }
.billing-toggle { margin: 1.5rem auto 1rem; }
.billing-toggle button { font-size: 1rem; line-height: 1.5; }
.billing-toggle button:last-child span { font-size: .75rem; }
.billing-summary { font-size: 1rem; font-weight: 600; }
.prices { align-items: stretch; gap: 1.5rem; padding-top: 1rem; }
.prices article { display: flex; flex-direction: column; padding: 2rem 1.5rem; min-width: 0; }
.prices .featured { transform: none; }
.prices article > label { font-size: .875rem; line-height: 1.5; letter-spacing: .09em; }
.prices .featured > label { color: #a8caff; }
.prices .featured > i { font-size: .75rem; max-width: calc(100% - 1rem); white-space: normal; text-align: center; }
.prices h3 { font-size: 1.125rem; line-height: 1.5; min-height: 3.375rem; margin: .75rem 0 1.5rem; text-wrap: auto; }
.prices article > div { display: flex; align-items: baseline; flex-wrap: wrap; gap: .375rem; }
.prices article > div b { font-size: clamp(2.25rem, 3.4vw, 3.25rem); line-height: 1.15; letter-spacing: -.035em; font-variant-numeric: lining-nums tabular-nums; white-space: nowrap; }
.prices article > div .price-period { font-size: 1rem; color: #52647a; white-space: nowrap; }
.prices .featured > div .price-period { color: #d2e1f0; }
.prices .unit-value { display: block; font-size: 1rem; font-weight: 650; line-height: 1.6; padding: .875rem; margin: 1.25rem 0 0; }
.prices .annual-detail { font-size: .875rem; font-weight: 600; line-height: 1.7; padding: .875rem; }
.prices ul { margin: 1.5rem 0; }
.prices li { display: block; font-size: 1rem; line-height: 1.65; margin: .75rem 0; }
.prices article > .checkout, .prices article > button { margin-top: auto; min-height: 3rem; font-size: .875rem; line-height: 1.5; padding: .875rem; text-align: center; }
.payment-trust { max-width: 52rem; font-size: .875rem; font-weight: 400; line-height: 1.75; }
.faqs summary { min-height: 2.75rem; align-items: center; font-size: 1rem; line-height: 1.6; }
.faqs summary b { flex: none; }
.faqs details p { font-size: 1rem; padding-right: 0; color: #536579; }
.cta h2 { line-height: 1.2; letter-spacing: -.03em; }
.cta > small, .cta > i { font-size: .875rem; }
.cta button { min-height: 3rem; white-space: normal; }
footer { padding-bottom: 2rem; }
footer > div > p, footer > div > b, footer > div > a:not(.brand) { font-size: .875rem; line-height: 1.7; }
footer > div > a:not(.brand) { padding-block: .375rem; }
footer > small { position: static; grid-column: 1 / -1; font-size: .75rem; color: #bbcbdc; }
.legal-main article p, .legal-main li, .commercial-info dt, .commercial-info dd { font-size: 1rem; line-height: 1.75; }
.legal-main > a, .legal-note { font-size: .875rem; }
.legal-main h1 { letter-spacing: -.035em; line-height: 1.2; }
.account-main { grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr); gap: 3rem; }
.account-card { min-width: 0; min-height: 0; }
.account-intro h1 { font-size: clamp(2.25rem, 4vw, 3.5rem); line-height: 1.15; letter-spacing: -.035em; }
.account-card h2 { font-size: 1.75rem; line-height: 1.3; letter-spacing: -.02em; }
.account-card input { font-size: 1rem; }
#code { font-size: 1.5rem; letter-spacing: .2em; font-variant-numeric: tabular-nums; }
.account-card form > p, .upload-document > p { font-size: 1rem; line-height: 1.7; }
.balance strong { font-size: 3.5rem; line-height: 1.1; font-variant-numeric: tabular-nums; }
.balance small, .upload-document > span, .upload-document .privacy-note, .history-item small { font-size: .875rem; }
.account-page.is-signed-in .account-intro { display: none; }
.account-page.is-signed-in .account-main { display: block; max-width: 56rem; padding-top: 2.5rem; }
.account-page.is-signed-in .account-card { padding: clamp(1.25rem, 4vw, 2.5rem); }
.account-card .file-button { font-size: 1rem; padding: .75rem; text-align: center; }
.upload-document:has(#camera:focus-visible) label[for="camera"],
.upload-document:has(#document:focus-visible) label[for="document"] { outline: 3px solid #2563eb; outline-offset: 3px; }
.history > div:first-child { flex-wrap: wrap; gap: .75rem; }
.history #refresh-history { min-height: 2.75rem; padding: .5rem .75rem; font-size: .875rem; }
.history #history-list .history-item { border: 1px solid #d7e1ea; background: #f7fafc; font-size: 1rem; }
.history-item strong { white-space: normal; overflow-wrap: anywhere; line-height: 1.5; }
.history-item b { font-size: .875rem; }
.analysis-result { overflow-wrap: anywhere; }
.analysis-result h4 { font-size: 1rem; text-transform: none; letter-spacing: 0; }
.result-head, .result-head small, .suggested-reply small { font-size: .875rem; letter-spacing: 0; }
.account-status { overflow-wrap: anywhere; }
.account-back { min-height: 2.75rem; display: inline-flex; align-items: center; font-size: .875rem; }
@media (max-width: 1200px) {
  header nav, .head-actions { display: none; }
  .hamb { display: grid; place-items: center; }
  .mobile.open { display: flex; }
}
@media (max-width: 960px) {
  .hero, .analyzer { grid-template-columns: minmax(0, 1fr); }
  .hero-copy { max-width: 42rem; }
  .mock-wrap { max-width: 38rem; }
  .prices { grid-template-columns: 1fr; max-width: 38rem; gap: 2rem; }
  .prices h3 { min-height: 0; }
  .prices article > div b { font-size: 3rem; }
  .steps { gap: 1rem; }
  .steps article { padding: 1.5rem; }
}
@media (max-width: 820px) {
  .account-main { grid-template-columns: minmax(0, 1fr); gap: 1.5rem; }
}
@media (max-width: 680px) {
  header { min-height: 4.75rem; }
  .hero { padding-top: 2.5rem; padding-bottom: 4rem; gap: 2rem; }
  .hero h1 { font-size: clamp(2.125rem, 9.5vw, 2.875rem); line-height: 1.13; letter-spacing: -.035em; }
  .hero-copy > p { font-size: 1rem; }
  .eyebrow { font-size: .75rem; padding: .625rem .75rem; }
  .hero-buttons { margin-block: 1.5rem; }
  .mock-wrap { min-height: 0; }
  .mock-body { grid-template-columns: minmax(0, 1fr); padding: 1rem; }
  .mock-top > b { display: none; }
  .facts { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .facts > span { min-width: 0; }
  .facts b { font-size: 1rem; }
  .mock-foot { padding: .75rem; }
  .mock-foot > span { flex: 1 1 8rem; }
  .clarity-flow { margin-top: 0; }
  .section, .analyzer { padding-top: 3.5rem; padding-bottom: 3.5rem; }
  .title h2, .analyzer h2, .faq-title h2 { font-size: 1.875rem; }
  .steps, .doc-grid { grid-template-columns: minmax(0, 1fr); }
  .doc-grid article { padding: 1.125rem; }
  .doc-grid article p { font-size: 1rem; }
  .stage-card { margin-top: 0; }
  .billing-toggle { width: 100%; }
  .billing-toggle button { flex: 1 1 100%; }
  .prices article { padding: 2rem 1.25rem; }
  .prices .unit-value { font-size: 1rem; }
  .account-page .legal-head { flex-wrap: wrap; gap: .5rem 1rem; }
  .account-intro h1 { font-size: 2.25rem; }
  .account-card { padding: 1.5rem 1.25rem; }
  .account-card .btn { white-space: normal; }
}
@media (max-width: 360px) {
  header .brand { gap: .375rem; }
  header .brand b { font-size: 1.25rem; }
  header .brand > i { padding: .375rem; }
  header .brand > i::before { display: none; }
  .prices article > div b { font-size: 2.5rem; }
}
