/* Shared reading scale for all visitor pages. */
:root { --muted: #56635a; }
body {font-size: 17px;}
.eyebrow {font-size: 12px;}
.button, .text-link {font-size: 15px; min-height: 44px;}
.desktop-nav {font-size: 14px; gap: 24px; margin-right: 16px;}
.header-quote {font-size: 14px;}
.language-button {font-size: 13px; min-width: 36px;}
.hero-description {font-size: 17px; max-width: 460px;}
.hero-footnote, .hero-caption small {font-size: 12px;}
.hero-caption strong {font-size: 15px;}
.hero-actions .button, .hero-actions .text-link {font-size: 15px;}
.ribbon-inner {font-size: 13px;}
.section-heading > p, .page-intro-copy {font-size: 17px; max-width: 580px;}
.process-item p, .partner-section p, details p {font-size: 17px; color: var(--text);}
.process-item h3 {font-size: 24px;}
.partner-section p {color: #e0e6dd; max-width: 560px;}
.partner-section .button {font-size: 15px;}
summary {font-size: 18px; line-height: 1.5;}
.mini-cta p {font-size: 17px;}

/* Gallery captions and filters remain readable outside the image. */
.filter-bar button {font-size: 14px; min-height: 44px; padding: 10px 17px;}
.project-caption h3 {font-size: 22px; line-height: 1.35;}
.project-caption p {font-size: 15px; line-height: 1.6;}
.project-caption > span {font-size: 13px;}
.gallery-bottom p, .gallery-bottom .text-link {font-size: 14px; max-width: none;}
.dialog-copy > p:not(.eyebrow) {font-size: 17px;}
.dialog-copy > .button {font-size: 15px;}
.dialog-close {width: 44px; height: 44px;}
.privacy-dialog p {font-size: 16px;}

/* Reference rates: keep price, unit and scope visually separate. */
.price-card {padding: 30px 24px;}
.price-card h3 {font-size: 23px; line-height: 1.3; min-height: 60px;}
.price-from {font-size: 14px;}
.price-value {font-size: 44px;}
.price-value small {font-size: 14px;}
.price-description {font-size: 16px; min-height: 82px; color: var(--text);}
.price-card .text-link {font-size: 15px; margin-top: auto; padding-top: 20px; max-width: none;}
.price-note p {font-size: 15px; color: var(--text);}

.about-copy > p:not(.eyebrow), .about-line p {font-size: 17px;}
.photo-label {font-size: 12px; letter-spacing: .06em;}
.contact-card p {font-size: 17px;}
.contact-person {display: grid; grid-template-columns: 40px minmax(0, 1fr); gap: 6px 14px;}
.person-initial {width: 40px; height: 40px; font-size: 15px; grid-column: 1; grid-row: 1 / 3; align-self: start;}
.contact-person > div {grid-column: 2; min-width: 0;}
.contact-person strong {font-size: 18px;}
.contact-person > div > span {font-size: 15px; max-width: none;}
.contact-person > a {font-size: 17px; grid-column: 2; justify-self: start; margin: 0; min-height: 44px; display: inline-flex; align-items: center;}
.email-link {font-size: 17px; overflow-wrap: anywhere; min-height: 44px;}
.contact-hours {font-size: 14px; line-height: 1.8;}

/* Keep the quote form before contact details in document and phone order. */
.quote-layout {grid-template-columns: .95fr 1.05fr; gap: 26px 65px; align-items: start;}
.quote-copy {grid-column: 1; grid-row: 1;}
.quote-copy > p:not(.eyebrow):not(.contact-hours) {font-size: 17px; max-width: 460px; margin-bottom: 0;}
.quote-form {grid-column: 2; grid-row: 1 / 3; padding: 34px;}
.quote-contacts {grid-column: 1; grid-row: 2;}
.quote-contacts h2 {font-size: 24px; line-height: 1.4; margin-bottom: 20px;}
.quote-form label {font-size: 15px;}
.quote-form label > span {font-size: 13px;}
.quote-form input, .quote-form select, .quote-form textarea {font-size: 16px; padding: 13px; min-height: 50px;}
.quote-form input::placeholder, .quote-form textarea::placeholder {font-size: 15px; color: #59675c;}
.quote-form textarea {min-height: 136px;}
.form-heading h3 {font-size: 24px; line-height: 1.35;}
.photo-tip p {font-size: 14px;}
.form-submit {font-size: 16px; min-height: 56px;}
.form-privacy {font-size: 13px;}
.form-privacy button {min-height: 32px;}
.quote-status {font-size: 15px;}
.footer-top > p {font-size: 15px;}
.footer-top > .text-link {font-size: 14px;}
.footer-bottom {font-size: 13px;}
.footer-bottom button {min-height: 32px;}
.mobile-contact {font-size: 15px; min-height: 48px;}

@media (max-width: 1100px) {
  .desktop-nav {gap: 16px; font-size: 13px; margin-right: 0;}
  .quote-layout {gap: 25px 35px;}
  .price-card {padding: 26px 20px;}
}
@media (max-width: 980px) {
  .desktop-nav {display: none;}
  .header-actions {margin-left: auto;}
  .menu-button {display: block; width: 24px; height: 44px; position: relative; padding: 0;}
  .menu-button > span {display: block; position: absolute; width: 22px; height: 1px; background: var(--ink); left: 0; top: 16px; transition: transform .2s;}
  .menu-button > span + span {top: 23px;}
  .menu-button[aria-expanded=true] > span:first-child {transform: translateY(3.5px) rotate(45deg);}
  .menu-button[aria-expanded=true] > span:last-child {transform: translateY(-3.5px) rotate(-45deg);}
  .project-grid {grid-template-columns: repeat(2, minmax(0, 1fr));}
  .price-grid {grid-template-columns: repeat(2, minmax(0, 1fr));}
  .price-card:nth-child(3) {border-left: 0; border-top: 1px solid var(--line);}
  .price-card:nth-child(4) {border-top: 1px solid var(--line);}
  .quote-layout {grid-template-columns: 1fr; gap: 32px; max-width: 680px;}
  .quote-copy, .quote-form, .quote-contacts {grid-column: 1; grid-row: auto;}
  .quote-copy > p:not(.eyebrow):not(.contact-hours) {max-width: 600px;}
  .contact-page {gap: 32px;}
}
@media (max-width: 640px) {
  .eyebrow {font-size: 11px;}
  .button, .text-link {font-size: 15px;}
  .hero-actions .button {font-size: 14px;}
  .hero-actions .text-link {font-size: 14px;}
  .hero-description, .section-heading > p, .page-intro-copy {font-size: 16px;}
  .hero-footnote {font-size: 12px;}
  .hero-caption small {font-size: 10px;}
  .hero-caption strong {font-size: 14px;}
  .ribbon-inner {font-size: 12px;}
  .process-item p, .partner-section p, details p {font-size: 16px;}
  .process-item h3 {font-size: 22px;}
  summary {font-size: 17px;}
  .mini-cta p {font-size: 16px;}
  .project-grid {grid-template-columns: 1fr;}
  .project-caption h3 {font-size: 22px;}
  .gallery-bottom {align-items: start; flex-direction: column; gap: 14px;}
  .dialog-copy h2 {font-size: 29px;}
  .dialog-copy > p:not(.eyebrow) {font-size: 16px;}
  .price-grid {grid-template-columns: 1fr;}
  .price-card {padding: 27px;}
  .price-card + .price-card {border-left: 0; border-top: 1px solid var(--line);}
  .price-card h3 {min-height: 0; font-size: 24px;}
  .price-icon {margin-bottom: 16px;}
  .price-description {min-height: 0; margin-bottom: 10px;}
  .price-note p {font-size: 14px;}
  .about-copy > p:not(.eyebrow), .about-line p, .contact-card p {font-size: 16px;}
  .photo-label {font-size: 10px;}
  .quote-section {padding-top: 40px;}
  .quote-copy > p:not(.eyebrow):not(.contact-hours) {font-size: 16px; margin-bottom: 0;}
  .quote-form {padding: 25px 20px;}
  .quote-contacts h2, html[lang=zh-CN] .quote-contacts h2 {font-size: 24px;}
  .quote-contacts {padding-top: 12px;}
  .contact-person {gap: 5px 12px;}
  .contact-person > a {font-size: 17px; margin: 0;}
  .contact-person > div > span {font-size: 14px;}
  .quote-form label {font-size: 15px;}
  .quote-form select {font-size: 16px;}
  .form-heading h3 {font-size: 22px;}
  .form-submit {font-size: 16px;}
  .form-privacy {font-size: 13px;}
  .footer-top > p {font-size: 14px;}
  .footer-bottom {font-size: 12px;}
  .footer-bottom > span:nth-child(2) {font-size: 12px;}
}
