/* Opt-in only. 16 → 19px (+18.75%); rem typography follows, including the
   13px eyebrow → 15.44px. App shells never receive the preference. */
html[data-text-size="large"]:not([data-app]) {
  font-size: 118.75%;
  --large-text-min: 0.8125rem;
}

html[data-text-size="large"]:not([data-app]) body {
  overflow-wrap: anywhere;
}

html[data-text-size="large"]:not([data-app]) :is(.button, .btn) {
  font-size: var(--text-button, 1.0625rem);
  white-space: normal;
  height: auto;
  max-width: 100%;
  line-height: 1.3;
}

/* Legacy fixed-size copy in shared product, menu and cookie surfaces. */
html[data-text-size="large"]:not([data-app]) :is(.pd-story p, .pd-compare-item p, .rv-card-body, .pd-form label, .pd-caution) {
  font-size: var(--text-small);
}

html[data-text-size="large"]:not([data-app]) :is(.pd-order-note, .pd-variant-label, .pd-option, .rv-card-author, .rv-card-full, .pd-form .pd-form-consent, .draft-cg-variant-label, .draft-cg-variant-option, .cookie-notice__copy span, .site-menu__tab, .lp-age__label, .lp-band__num, .club-band__num) {
  font-size: var(--text-eyebrow);
}

html[data-text-size="large"]:not([data-app]) .footer-rights {
  white-space: normal;
  overflow: visible;
}

html[data-text-size="large"]:not([data-app]) :is(.product-listing-card__name, .repeat-only-card__name) {
  font-size: var(--text-body);
  -webkit-line-clamp: unset;
}

html[data-text-size="large"]:not([data-app]) :is(.product-listing-card__price, .repeat-only-card__price) {
  font-size: var(--text-button);
  flex-wrap: wrap;
}

html[data-text-size="large"]:not([data-app]) :is(.product-listing-card__category, .product-listing-card__reviews, .product-listing-card__photo, .repeat-only-card__tag, .repeat-only-card__link, .repeat-only-card__photo, .product-card-price__w, .product-card-price__pv, .product-soldout, .rv-card-more, .article-toc-panel strong) {
  font-size: var(--text-eyebrow);
}

html[data-text-size="large"]:not([data-app]) :is(.pd-stories-all-link, .pd-nav a, .pd-nav-fab-sheet a, .article-toc-panel li) {
  font-size: var(--text-meta);
  white-space: normal;
}

/* Fixed-px copy that rem scaling cannot reach (global.css, product-detail-draft.css).
   Each group keeps the original hierarchy: 19/18px -> body, 16px -> small,
   13-15.5px -> meta, <=13px -> eyebrow (15.4px floor). */
html[data-text-size="large"]:not([data-app]) :is(.wide-row__label, .article-numbered-row h3, .article-faq-item h3, .pd-story h3, .pd-faq summary, .product-official details summary) {
  font-size: var(--text-body);
}

html[data-text-size="large"]:not([data-app]) :is(.wide-row__text, .pd-compare-item strong, .pd-short-title, [data-product-detail] .rv-card-title) {
  font-size: var(--text-small);
}

html[data-text-size="large"]:not([data-app]) :is(.doc-row__note, .doc-row__more summary, .doc-row__more p, .article-fact-box__label, .article-fact-box__text, .article-2col-card p, .home-primary-route > span:not(.home-primary-route-index), .home-primary-route em, .contact-tile__value, .lp-video__play, .sel__option) {
  font-size: var(--text-meta);
}

html[data-text-size="large"]:not([data-app]) :is(.home-primary-route-index, .home-quick-item span, .product-intro-chip, .content-access-lock:not(.home-trust-card__cta):not(.pd-stories-lock), .site-menu-toggle, .pd-compare-col-title, .pd-compare-mark, .pd-story small, .pd-placeholder-note, .pd-short-tag, .pd-short-num, .rv-card-tag, .rv-card-city, .rv-card-lock) {
  font-size: var(--text-eyebrow);
}

html[data-text-size="large"]:not([data-app]) .article-hook {
  font-size: calc(clamp(18px, 1.5vw, 20px) * 1.1875);
}

/* Component-scoped px copy: article cards, reviews page chrome, FAQ price notes. */
html[data-text-size="large"]:not([data-app]) :is(.article-card__title) {
  font-size: var(--text-body);
}

html[data-text-size="large"]:not([data-app]) :is(.article-card__text, .article-card__link, .article-featured__text, .article-featured__link, .rv-stat-label, .rv-closed__more) {
  font-size: var(--text-meta);
}

html[data-text-size="large"]:not([data-app]) :is(.article-card__meta, .article-featured__meta, .article-cover__caption, .rv-filter-label, .rv-tag, .rv-tag-count, .rv-closed__legal, .share-price__local, .share-price__note, .calc-toggle__label) {
  font-size: var(--text-eyebrow);
}

html[data-text-size="large"]:not([data-app]) .article-featured__title {
  font-size: calc(clamp(24px, 2.6vw, 32px) * 1.1875);
}
