/* TESKA type roles. Keep this after component styles on every page.
   At the browser's default size: reading 16px, UI 14px, metadata 12px.
   rem units retain the visitor's preferred text size. Display headings keep
   their existing scale; content text never shrinks at mobile breakpoints. */
:root {
  --text-reading: 1rem;
  --text-ui: .875rem;
  --text-meta: .75rem;
  --leading-reading: 1.7;
  --leading-ui: 1.5;
}
html { font-size: 100%; }
body { font-size: var(--text-reading); }

/* Reading text, including prose imported with unwrapped text nodes. */
.content-prose,
.content-prose :is(p, li),
.content-intro > p:last-child,
.story > div > p:not(.eyebrow),
.slide-copy > p:not(.eyebrow),
.showroom-section p:not(.eyebrow),
.section-head > p:not(.eyebrow),
.manufacturing-top > p,
.manufacturing-process article p,
.newsletter-premium .newsletter-heading > p:not(.eyebrow),
.about-page .about-summary,
.about-page .about-story p,
.about-page .about-film p,
.contact-source-info > p,
.contact-info-block :is(p, a),
.contact-source-heading p,
.form-unified .unified-form-heading p,
.faq-page > div > p,
.faq-list.teska-faq .faq-answer,
.faq-list.teska-faq .faq-answer p,
.form-page aside p,
.support-hub p,
.timeline-page article > div,
.symbols-page p,
.collection-intro > div:last-child > p,
.collection-related-heading p,
.collection-page #catalog-empty,
.product-summary .product-description,
.product-facts,
.product-facts li,
.product-specs :is(p, dd),
.drawing-section p,
.location p:not(.city),
.policy-dialog p {
  font-size: var(--text-reading);
  line-height: var(--leading-reading);
}
.faq-list.teska-faq summary {
  font-size: var(--text-reading);
  line-height: var(--leading-reading);
}

/* Navigation and editable controls are readable on touch screens, too. */
.savoy-header .nav-trigger,
.savoy-header .header-contact,
.mobile-drawer .drawer-row,
.mobile-drawer .drawer-group summary,
.collection-selector > summary,
.search input,
.search-dialog input,
.location-toolbar :is(input, select),
.collection-page .collection-toolbar input,
.catalog-toolbar input,
.newsletter-premium input[type=email],
.form-unified .form-fields input:not([type=file]),
.form-unified .form-fields textarea,
.form-unified .form-fields select {
  font-size: var(--text-reading);
  line-height: var(--leading-ui);
}
.form-unified .form-fields textarea { line-height: var(--leading-reading); }
.collection-page .collection-toolbar input::placeholder { font-size: inherit; }
.search input { width: 230px; max-width: 100%; }
@media (max-width: 650px) { .search input { width: 100%; } }

/* Labels, secondary navigation and text actions. Icon-only controls stay intact. */
.button,
.text-link,
.slider-link,
.showroom-contact,
.manufacturing-link,
.faq-studio .faq-home-link,
.featured-footer .text-link,
.filters button,
.mega-column :is(p, a),
.mobile-drawer .drawer-links a,
.mobile-drawer .drawer-bottom > a,
.drawer-back span,
.savoy-header .english,
.collection-nav :is(summary, .collection-all),
.collection-nav details > div a,
.collection-intro > div:last-child > a,
.collection-page .catalog-pagination a,
.form-unified .form-fields > label,
.form-unified .field-label,
.form-unified .form-consent,
.form-unified .file-upload-drop strong,
.form-unified .unified-form-bottom .button,
.form-unified .form-status,
.newsletter-premium form > label,
.newsletter-premium button,
.product-summary .product-document,
.product-summary .product-inquiry,
.product-summary .finish-label,
.product-summary .finish-option strong,
.product-heading-row .share-options a,
.product-specs dt,
.contact-source-map > a,
.location a,
.support-hub > a > span,
.certificate > span,
.news-index > a > span,
.news-card > span,
.premium-footer .footer-directory a,
.premium-footer .footer-address p,
.premium-footer .footer-talk,
.premium-footer .footer-legal a,
.premium-footer .footer-legal button {
  font-size: var(--text-ui);
  line-height: var(--leading-ui);
}
.form-unified .form-consent,
.form-unified .form-status,
.newsletter-premium .consent,
.premium-footer .footer-address p { line-height: var(--leading-reading); }

/* Captions and supporting information. Heading sizes are intentionally separate. */
.eyebrow,
.slide-copy .eyebrow,
.manufacturing .eyebrow,
.product-summary .product-heading-row > .eyebrow,
.products-section .product-card .eyebrow,
.catalog-grid .eyebrow,
.news-card .eyebrow,
.page-label,
.about-label,
.collection-intro > div:first-child > p,
.breadcrumb,
.small,
figcaption,
.manufacturing-index,
.manufacturing-process article > span,
.faq-aside-note,
.drawer-label,
.drawer-back:not([hidden]) + .drawer-label,
.collection-nav a > span,
.collection-selector > summary small,
.collection-toolbar p,
.featured-footer > span,
.product-summary .detail-code,
.product-summary .detail-code strong,
.product-summary .finish-picker > small,
.product-card .code,
.products-section .product-card .code,
.product-symbols span,
.location .city,
.location-toolbar > span,
.people-grid p,
.form-unified .field-label span,
.form-unified .file-upload-drop small,
.form-unified .file-preview .file-name,
.form-unified .file-upload-status,
.form-unified .form-preview-note,
.newsletter-premium form .small,
.news-index time,
.news-article > time,
.premium-footer .footer-bottom,
.pswp .pswp__button--original,
.pswp .teska-pswp-caption {
  font-size: var(--text-meta);
  line-height: var(--leading-ui);
}
.form-unified .form-preview-note,
.newsletter-premium form .small { line-height: var(--leading-reading); }
.pswp .pswp__counter { font-size: var(--text-meta); }
/* Imported text can contain long links, addresses or product codes. */
.content-prose, .contact-info-block, .location p,
.premium-footer .footer-address { overflow-wrap: anywhere; }
