/* The public type scale is separate from the canvas and its viewport geometry.
   Load last: albums, saved choices and forms share the same readable lettering. */
html { overflow-x: hidden; overscroll-behavior-x: none; }
body { max-inline-size: 100%; overflow-x: clip; font: 300 17px/1.65 var(--sans); font-synthesis: none; font-optical-sizing: auto; }
body :is(h1, h2, h3, h1 em, h2 em, .signature-script, .footer-brand) {
  font-family: var(--script); font-weight: 300; font-style: italic;
}
body h1 { font-size: clamp(36px, 4vw, 54px); line-height: 1.2; }
body h2 { font-size: clamp(34px, 3.6vw, 46px); line-height: 1.25; }
body h3 { font-size: 28px; line-height: 1.25; }
body .opening h1 { font-size: clamp(36px, 3.6vw, 48px); line-height: 1.2; }
body .opening .opening-location { font-size: 15px; line-height: 1.5; }
body .opening .service-copy h3 { font-size: 27px; line-height: 1.2; font-style: italic; font-weight: 300; }
body :is(.service-copy h3, .project-card h3, .process-grid h3, .selection-work h3) { font-size: 28px; line-height: 1.25; }
body :is(.signature-copy h2, .service-hero h1) { font-size: clamp(36px, 3.7vw, 48px); line-height: 1.25; }
body :is(.eyebrow, .section:not(.opening) .eyebrow, .signature-copy > .eyebrow, .project-link > .eyebrow) {
  font-size: 13px; line-height: 1.55; letter-spacing: .035em;
}
body :is(.section-heading > p, .section-bottom p, .service-copy p, .process-grid p,
  .team-story p, .faq-list details p, .inquiry-intro > p, .service-hero p,
  .price-panel > p, .price-panel ul, .policy-page p, .gallery-description,
  .signature-copy p:not(.small-note), .selection-intro, .selection-empty) {
  font-size: 17px; line-height: 1.65;
}
body :is(.small-note, .inquiry-intro .small-note, .signature-copy .small-note,
  .service-details .small-note, .team-triptych figcaption, .review-author, .review-date,
  .footer-main nav, .footer-brand span, .footer-bottom, .breadcrumbs, .gallery-meta,
  .selection-photo figcaption, .selection-status, .selection-note, .selection-unavailable,
  .catalogue-control-error, .catalogue-period-note, .catalogue-restore-note,
  .project-disclosure, .portfolio-status, .frame-caption, .service-details .detail-list li) {
  font-size: 14px; line-height: 1.6;
}
body .project-date { font-size: 13px; line-height: 1.5; }
body .review-card blockquote { font-size: 18px; line-height: 1.65; }
body .faq-list summary { font-size: 18px; line-height: 1.55; }
body .signature-script { font-size: 32px; line-height: 1.3; }
body .footer-brand { font-size: 34px; line-height: 1.3; }
body :is(.footer-phone, .contact-phone) { font-size: 22px; line-height: 1.5; }
body .process-grid li > span { font-size: 18px; line-height: 1.4; }
body .selection-dialog { font-size: 17px; line-height: 1.65; }
body .selection-dialog h2 { font-size: 36px; line-height: 1.3; }
body :is(.form-grid label, .form-grid label > span, .consent, .form-status,
  .selection-form-summary, .catalogue-controls) { font-size: 14px; line-height: 1.6; }
body :is(.form-grid input, .form-grid select, .form-grid textarea,
  .form-grid input::placeholder, .form-grid textarea::placeholder,
  .catalogue-controls input, .catalogue-controls select) { font: 300 16px/1.5 var(--sans); }

/* Center the label itself. Trailing arrows sit outside the text flow with
   equal space reserved on both sides, so the label stays on the button axis. */
body :is(.button, .filter, .text-link, .menu-toggle, .theme-toggle,
  .selection-trigger, .favorite-button, .selection-remove,
  .selection-summary-open, .inquiry-recovery-action) {
  font-family: var(--sans); font-weight: 300; font-style: italic; font-size: 16px; line-height: 1.4;
  text-align: center; align-items: center; justify-content: center;
}
body .button { min-height: 48px; padding: 12px 22px; }
body .button.button, body .text-link.text-link { font-size: 16px; line-height: 1.4; font-style: italic; }
body .button.button:has(> svg) { position: relative; padding-inline: 46px; gap: 0; }
body .button > svg { position: absolute; right: 17px; top: 50%; transform: translateY(-50%); width: 20px; height: 20px; }
body .text-link.text-link:has(> svg) { position: relative; padding-inline: 28px; gap: 0; }
body .text-link.text-link > svg { position: absolute; right: 0; top: 50%; transform: translateY(-50%); }
body :is(.text-link, .selection-remove, .selection-summary-open, .inquiry-recovery-action):not([hidden]) { display: inline-flex; }
body :is(.team-story .text-link, .inquiry-intro .text-link) { font-size: 16px; line-height: 1.4; }
body .filter { min-height: 44px; padding: 10px 17px; }
body .opening-actions { align-items: stretch; }
body .opening-actions .button { font-size: 17px; line-height: 1.4; min-height: 49px; }
body .signature-copy .button { font-size: 16px; line-height: 1.4; }
body .menu-toggle { position: relative; display: inline-flex; flex-direction: row; padding-inline: 32px; min-width: 108px; height: 44px; gap: 0; font-size: 14px; }
body .menu-toggle .menu-label { display: block; line-height: 1.3; text-align: center; }
body .menu-toggle .menu-strokes { position: absolute; right: 11px; top: 50%; transform: translateY(-50%); width: 16px; flex-basis: 16px; }
body .menu-toggle[aria-expanded='true'] > .menu-strokes { transform: translateY(-50%); }
body .menu-toggle .menu-strokes span { width: 16px; }
body .mobile-nav a { font-size: 15px; line-height: 1.5; }
body .selection-trigger { position: relative; display: inline-flex; min-width: 132px; height: 44px; gap: 0; font-size: 14px; line-height: 1.3; padding: 8px 32px; }
body .selection-trigger > svg { position: absolute; left: 11px; top: 50%; transform: translateY(-50%); width: 19px; height: 19px; }
body .selection-trigger > span:not(.selection-count) { display: block; text-align: center; }
body .selection-trigger > .selection-count { position: absolute; right: 9px; top: 50%; transform: translateY(-50%); width: 16px; min-width: 0; font-size: 12px; line-height: 1.3; }
body :is(.case-favorite, .gallery-favorite) { position: relative; padding-inline: 44px; font-size: 15px; line-height: 1.4; }
body :is(.case-favorite, .gallery-favorite) > svg { position: absolute; left: 15px; top: 50%; transform: translateY(-50%); }
body :is(.dialog-close, .gallery-prev, .gallery-next) { display: grid; place-items: center; text-align: center; padding: 0; font-family: var(--sans); font-style: normal; }
body .dialog-close { font-size: 28px; line-height: 1; }
body .gallery-counter { font-family: var(--sans); font-size: 13px; }

@media (max-width: 760px) {
  body .opening h1 { font-size: 34px; height: auto; min-height: 0; line-height: 1.12; overflow: visible; }
  body .opening .opening-location { font-size: 13px; }
  body .opening .service-copy h3 { font-size: 23px; line-height: 1.15; }
  body :is(.project-card h3, .process-grid h3, .service-copy h3, .selection-work h3) { font-size: 25px; line-height: 1.25; }
  body .header-inner .selection-trigger { min-width: 124px; font-size: 14px; line-height: 1.3; gap: 0; padding: 8px 30px; }
  body .header-inner .selection-count { font-size: 12px; min-width: 0; }
  body .header-inner .nav-right { min-width: 0; }
  body .menu-toggle { min-width: 98px; padding-inline: 30px; }
  body .opening-actions .button { font-size: 15px; line-height: 1.4; min-height: 48px; padding: 10px; }
  body .opening-actions .button.button:has(> svg) { padding-inline: 10px; }
  body :is(.gallery-actions .button, .case-favorite, .gallery-favorite) { font-size: 15px; }
  body :is(.signature-copy h2, .service-hero h1) { font-size: 37px; line-height: 1.25; }
}
@media (max-width: 360px) {
  body .opening h1 { font-size: 30px; }
  body .opening .service-copy h3 { font-size: 21px; }
  body .header-inner .nav-right { min-width: 0; }
  body .menu-toggle { min-width: 94px; font-size: 13px; padding-inline: 30px; }
  body .opening-actions .button { font-size: 14px; }
}
@media (max-width: 760px) and (max-height: 590px) {
  body .opening h1 { font-size: 28px; }
  body .opening .service-copy h3 { font-size: 19px; line-height: 1.12; }
  body .opening-actions .button { min-height: 44px; }
}
@media (min-width: 761px) and (max-height: 520px) {
  body .opening h1 { font-size: 32px; }
  body .opening .service-copy h3 { font-size: 24px; }
  body .opening-actions .button { font-size: 16px; min-height: 44px; }
}

/* Keep the actual light text face throughout copy and controls; script uses its own real face. */
body :is(p, li, label, input, select, textarea, blockquote, strong, b, .eyebrow, .breadcrumbs, .footer-bottom, .catalogue-controls, .selection-note, .selection-status, .gallery-meta, .project-date, .mobile-nav a, .footer-phone, .contact-phone, .process-grid li > span) { font-weight: 300; }
body :is(.service-card-label > [data-site-field$="title"], .sb-copy h3) { font-family: var(--script); font-style: italic; font-weight: 300; }

/* A real Light face, including emphasis and counters; do not synthesize bold. */
body :is(strong, b, .review-author strong, .service-card-label, .selection-count, .gallery-counter, .frame-caption, .project-open, .footer-brand span) { font-weight: 300; }
