/* Reading defaults for the page's primary audience. Keep content sizes in rem. */
:root { --muted: #4c6156; }
html { font-size: 100%; scroll-padding-top: 7rem; }
body { font-size: 1.125rem; line-height: 1.8; }
p, h1, h2, h3, a, button, label, legend { overflow-wrap: anywhere; }
button, a { touch-action: manipulation; }
.button, .button.small, .hero-actions .button, .consult-actions .button,
.memo-navigation .button, .memo-final-actions .button, .product-dialog-copy .button {
  font-size: 1.125rem; line-height: 1.5; min-height: 3.25rem;
  padding: .875rem 1.25rem; gap: .875rem; white-space: normal; min-width: 0;
}
.text-link, .hero-actions .text-link, .reason-source, .reason-bottom .text-link,
.story-copy .text-link, .product-dialog-copy .text-link, .memo-navigation .text-link {
  font-size: 1rem; line-height: 1.6; min-height: 2.75rem;
}
.text-link:hover { color: #36543c; text-decoration: underline; text-underline-offset: .2em; }
.eyebrow, .hero .eyebrow, .section-heading .eyebrow, .reason-body .eyebrow,
.story-copy .eyebrow, .consult-section .eyebrow, .modal .eyebrow,
.product-dialog-copy .eyebrow {
  font-size: .8125rem; line-height: 1.6; letter-spacing: .1em;
}
.header-inner { height: auto; min-height: 5.25rem; padding-top: .75rem; padding-bottom: .75rem; }
.brand>span { font-size: 1rem; }
.site-header nav { font-size: 1.125rem; gap: 1.5rem; }
.site-header nav>a { min-height: 2.75rem; display: flex; align-items: center; }
.hero h1 { font-size: clamp(3rem,5.1vw,4.5rem); line-height: 1.25; letter-spacing: -.045em; }
.hero-description { font-size: 1.125rem; line-height: 1.85; color: var(--muted); }
.hero-scroll, .hero-scroll strong { font-size: 1rem; }
.hero-image-tag { font-size: 1rem; }
.visual-caption { font-size: .8125rem; letter-spacing: .04em; flex-wrap: wrap; color: #334f43; background: rgba(246,245,239,.95); padding: .375rem .5rem; border-radius: 3px; }
.proof-band strong { font-size: 1.5rem; }
.proof-band span { font-size: 1rem; text-align: center; }
.proof-band { grid-template-columns: repeat(4,minmax(0,1fr)); }
.proof-band>div { min-width: 0; }
.proof-band strong, .proof-band span { max-width: 100%; overflow-wrap: anywhere; }
h2 { font-size: clamp(2rem,3.4vw,2.875rem); line-height: 1.4; letter-spacing: -.035em; }
.section-intro, .section-heading>.section-intro { font-size: 1.125rem; line-height: 1.85; }
.reason-tab { font-size: 1.125rem; min-height: 3.25rem; line-height: 1.6; color: #40574b; }
.reason-number { font-size: 1rem; color: #49634b; flex-shrink: 0; }
.reason-body h3 { font-size: 1.875rem; line-height: 1.5; letter-spacing: -.025em; }
.reason-body .reason-text { font-size: 1.125rem; line-height: 1.85; color: var(--muted); }
.reason-detail { font-size: 1rem!important; line-height: 1.8!important; color: var(--muted)!important; }
.reason-image .image-count { font-size: 1rem; letter-spacing: .05em; }
.reason-bottom { font-size: 1rem; gap: 1rem; flex-wrap: wrap; align-items: center; }
.reason-bottom>span { max-width: none; font-size: 1rem; }
.reason-bottom .text-link { white-space: normal; }
.product-filter { gap: .625rem; }
.product-filter button { min-height: 3rem; padding: .625rem 1rem; font-size: 1rem; line-height: 1.6; }
.product-filter button span { font-size: 1rem; opacity: 1; }
.product-meta .english { font-size: .875rem; letter-spacing: .06em; color: var(--muted); }
.product-meta h3 { font-size: 1.5rem; line-height: 1.5; letter-spacing: -.025em; margin: .375rem 0 .5rem; }
.product-meta p:last-child { font-size: 1.125rem; line-height: 1.8; color: var(--muted); }
.product-category { font-size: 1rem; line-height: 1.5; color: var(--ink); background: #fffffff5; }
.product-open { width: 2.75rem; height: 2.75rem; }
.product-note { font-size: 1rem; line-height: 1.8; color: var(--muted); text-align: left; }
.story-image>span { font-size: .875rem; letter-spacing: .08em; }
.story-copy h2 { font-size: 2.25rem; line-height: 1.5; }
.story-copy>p:not(.eyebrow) { font-size: 1.125rem; line-height: 1.85; color: #dae3dd; }
.story-copy .story-secondary { font-size: 1.125rem!important; color: #cad7ce!important; }
.faq-section h2 { font-size: 2.25rem; }
.faq-list summary { font-size: 1.125rem; line-height: 1.7; min-height: 3.25rem; }
.faq-list details>p { font-size: 1.125rem; line-height: 1.85; padding-right: 0; color: var(--muted); }
.consult-section h2 { font-size: 2.5rem; line-height: 1.4; }
.consult-section p:not(.eyebrow) { font-size: 1.125rem; line-height: 1.85; color: var(--muted); }
.consult-caption { font-size: 1rem; line-height: 1.8; color: var(--muted); }
.footer-top>p { font-size: 1.125rem; }
.footer-top>div, .footer-top button { font-size: 1rem; }
.footer-top a:not(.brand), .footer-top button { display: inline-flex; align-items: center; min-height: 2.75rem; }
.footer-bottom { flex-wrap: wrap; }
.footer-bottom p, .footer-bottom>span { font-size: 1rem; line-height: 1.8; color: var(--muted); white-space: normal; }
.back-top { width: 3rem; height: 3rem; font-size: 1.25rem; }
.modal-close { width: 3rem; height: 3rem; }
.modal:not(.product-modal) { padding-top: 4.75rem; }
.modal h2, .product-dialog-copy h2 { font-size: 1.875rem; line-height: 1.5; }
.modal-intro, .product-dialog-copy>p:not(.eyebrow), .product-dialog-copy ul {
  font-size: 1.125rem; line-height: 1.85; color: var(--muted);
}
.product-dialog-copy .type { font-size: 1rem; }
.product-dialog-copy .text-link { margin-top: 1rem; }
#sources-list strong { font-size: 1.125rem; line-height: 1.6; }
#sources-list span, .source-date { font-size: 1rem; line-height: 1.8; color: var(--muted); }
.memo-progress { font-size: 1rem; line-height: 1.6; gap: .5rem 1rem; flex-wrap: wrap; color: var(--muted); }
.memo-progress .done { color: #3e6039; }
.memo-modal legend, .field-label { font-size: 1.125rem; line-height: 1.7; }
.memo-modal fieldset { min-width: 0; }
.choice { min-height: 3rem; gap: .75rem; }
.choice strong { font-size: 1.125rem; line-height: 1.6; }
.choice small { font-size: 1rem; line-height: 1.8; color: var(--muted); }
.choice input, .memo-products input { width: 1.25rem; height: 1.25rem; flex-shrink: 0; }
.memo-products .choice { font-size: 1rem; line-height: 1.6; min-height: 3rem; }
.memo-modal textarea { font-size: 1.125rem; line-height: 1.8; }
.memo-modal textarea::placeholder { color: #5c6f63; }
.input-hint, .form-error, .memo-ready-note, .memo-contact { font-size: 1rem; line-height: 1.8; }
.form-error { color: #923a20; }
.memo-summary-heading { font-size: 1.375rem; line-height: 1.6; }
.memo-navigation { flex-wrap: wrap; }
.toast, .noscript { font-size: 1rem; line-height: 1.6; }

@media (max-width:1280px) { .brand>span { display: none; } }
@media (max-width:1100px) {
  .product-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .hero { grid-template-columns: minmax(0,1fr) minmax(0,1fr); }
}
@media (max-width:1000px) {
  .header-inner { min-height: 4.75rem; padding-left: 1.25rem; padding-right: 1.25rem; }
  .menu-toggle { display: flex; width: 3rem; height: 3rem; align-items: center; justify-content: center; flex-direction: column; gap: 6px; }
  .menu-toggle>span { width: 24px; height: 2px; background: var(--ink); transition: transform .2s; }
  .menu-toggle[aria-expanded=true]>span:first-child { transform: translateY(4px) rotate(45deg); }
  .menu-toggle[aria-expanded=true]>span:last-child { transform: translateY(-4px) rotate(-45deg); }
  .site-header nav { display: none; position: absolute; top: 100%; left: 0; right: 0; padding: 1rem 1.5rem; flex-direction: column; align-items: stretch; gap: .5rem; background: var(--paper); border-bottom: 1px solid var(--line); max-height: 75dvh; overflow-y: auto; }
  .site-header nav.open { display: flex; }
  .site-header nav>a { font-size: 1.125rem; padding: .625rem 0; }
  .site-header nav .button { margin-top: .5rem; }
}
@media (max-width:760px) {
  .hero h1 { font-size: 3rem; }
  .hero-copy { padding-top: 2rem; }
  .hero-actions { align-items: stretch; gap: .75rem; }
  .hero-actions .button { width: 100%; justify-content: space-between; }
  .hero-actions .text-link { padding: .5rem 0; }
  .proof-band>div { padding: 1.25rem .5rem; }
  .proof-band { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .proof-band strong { font-size: 1.375rem; }
  .section { padding-left: 1.25rem; padding-right: 1.25rem; }
  .section-heading>.section-intro, .faq-section>.section-intro { font-size: 1.125rem; }
  .reason-tabs { gap: .5rem; padding: .75rem; }
  .reason-tab { padding: .75rem .625rem; font-size: 1rem; gap: .5rem; min-height: 3.5rem; align-items: flex-start; }
  .reason-number { font-size: 1rem; width: 1.25rem; }
  .reason-body h3 { font-size: 1.75rem; }
  .reason-bottom { display: block; }
  .reason-bottom>span { display: block; margin-bottom: .5rem; }
  .product-filter button { font-size: 1rem; }
  .story-copy { padding: 2.5rem 1.5rem; }
  .story-copy h2, .faq-section h2, .consult-section h2 { font-size: 2rem; }
  .story-copy .text-link { font-size: 1rem; }
  .story-image>span { font-size: .875rem; }
  .consult-actions { flex-direction: column; align-items: stretch; }
  .footer { padding-bottom: 8rem; }
  .footer-top { grid-template-columns: 1fr; }
  .footer-top>p { text-align: left; }
  .footer-top>div { grid-column: auto; align-items: flex-start; flex-direction: column; gap: .25rem; }
  .footer-top button { font-size: 1rem; }
  .mobile-consult { padding: .75rem 1.25rem max(.75rem,env(safe-area-inset-bottom)); }
  .mobile-consult>span { display: none; }
  .mobile-consult button { font-size: 1.125rem; min-height: 3.25rem; width: 100%; padding: .75rem 1.25rem; align-items: center; justify-content: space-between; line-height: 1.5; }
  .back-top { bottom: 6.5rem; }
  .toast { bottom: 6.5rem; }
  .memo-products { grid-template-columns: 1fr; }
  .memo-final-actions { flex-direction: column; }
  .memo-final-actions .button { width: 100%; }
}
@media (max-width:600px) {
  .product-grid { grid-template-columns: minmax(0,1fr); gap: 2.5rem; }
  .product-image { aspect-ratio: 1.35; }
  .product-meta { padding-top: 1rem; }
  .product-category { left: .75rem; top: .75rem; padding: .375rem .625rem; }
}
@media (max-width:360px) {
  .reason-tabs { grid-template-columns: 1fr; }
  .reason-tab { font-size: 1.125rem; align-items: center; }
}
@media print { .footer { padding-bottom: 1rem; } }
