/* SEOPRO V14 readability. Load after each page's original stylesheet.
   Type size only: hero type, artwork, model-viewer and pointer geometry stay local. */
:root {
  --read-copy: clamp(18px, 1.35vw, 20px);
  --read-control: 16px;
  --read-secondary: 14px;
  --read-leading: 1.65;
}
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
body { font-size: var(--read-copy); }

/* Main studio: explanations and commercial scope carry the body hierarchy. */
body :is(
  .v4-hero-intro > p, .v4-experience-copy p,
  .v4-work-heading > p:last-child,
  .v3-services-heading > p:last-child, .v3-section-heading > p:last-child,
  .v3-service-list details > div, .v3-service-list details > div > p,
  .v3-package > p, .v3-package ul, .v3-extended-packages p,
  .v3-maintenance > p, .v3-approach-intro > p:not(.v3-label),
  .v3-process p, .v3-faq-list p,
  .showroom-heading > p:last-child, .showroom-business-copy,
  .calc-heading > p
) { font-size: var(--read-copy); line-height: var(--read-leading); }
body :is(.v4-hero-intro > p, .v4-experience-copy p, .showroom-business-copy) {
  max-width: 38rem;
}
body :is(
  .v4-studio-note, .v4-kicker, .v4-hero-top > span, .v4-payment-note,
  .v4-hero-footer, .v4-hero-footer > p, .v4-motion-toggle,
  .v4-scene-counter, .v4-experience-top .v4-kicker,
  .v4-scene-buttons > button > span, .v4-scene-disclaimer,
  .v4-project-caption span, .v4-project-caption p, .v4-project-caption > a,
  .v3-label, .v3-package-tag, .v3-package > small, .v3-package-note,
  .v3-process li > span, .v3-approach-note, .v3-maintenance small,
  .v3-contact-top, .v3-contact-top > span, .v3-contact-bottom > p,
  .v3-whatsapp span, .v4-footer > div, .v4-footer > small,
  .studio-social-links, .studio-contact-email,
  .showroom-object-name, .showroom-finishes legend, .showroom-control-hint,
  .showroom-brief-note, .showroom-credit, .showroom-scene-help,
  .showroom-scene-label, .calc-controls legend, .calc-type small,
  .calc-extra small, .calc-extra > b, .calc-included,
  .calc-price-row > span, .calc-price-row small, .calc-disclaimer
) { font-size: var(--read-secondary); line-height: 1.55; }
body[data-site-style] .v4-footer > p.studio-legal {
  font-size: var(--read-secondary); line-height: 1.6;
}
body :is(
  .v4-nav, .v4-header-cta, .v4-header .v4-menu, .v4-button,
  .v4-demo-open, .v4-scene-buttons > button, .v4-skip-experience,
  .v3-button, .v3-package > button, .v3-extended-packages button,
  .v3-maintenance button, .v3-service-list details > div button,
  .v3-whatsapp, .showroom-load, .showroom-brief, .calc-send
) { font-size: var(--read-control); line-height: 1.5; }
body :is(.v4-button, .v3-button, .v4-header-cta, .showroom-load, .calc-send) {
  white-space: normal; text-align: left;
}
body :is(.v3-faq-list summary, .calc-type strong, .calc-extra strong,
  .showroom-finishes button > span) { font-size: 17px; line-height: 1.5; }
body :is(.showroom-finishes button > small, .showroom-camera-controls button) {
  font-size: var(--read-secondary); line-height: 1.5;
}
/* Arrow-only camera controls retain their original size and hit target. */
body .showroom-camera-controls :is(#showroom-left, #showroom-right) {
  font-size: 20px; line-height: 1;
}
body .v4-nav { gap: clamp(16px, 2vw, 30px); }
body :is(.v4-hero-top, .v4-experience-top) { flex-wrap: wrap; gap: 14px; }
body .v4-experience-bottom { flex-wrap: wrap; }
body .v4-scene-buttons { flex-wrap: wrap; }
body :is(.v4-project-caption, .v4-hero-footer, .v4-footer > div) { flex-wrap: wrap; }
body :is(.v4-payment-note, .v4-skip-experience, .v4-project-caption > a) {
  white-space: normal;
}
body .v3-service-list details > div { max-width: 44rem; }
body .v3-package > p { min-height: 0; }

/* Five-direction chooser: readable labels, same visual swatches. */
body :is(.style-launchbar > p, .style-palette-kicker,
  .style-palette-header p:last-child, .style-selected,
  .style-selected span, .style-option > strong, .style-floating-number) {
  font-size: var(--read-secondary); line-height: 1.5;
}
body :is(.style-inline-trigger, .style-floating, .style-project-cta) {
  font-size: var(--read-control); line-height: 1.5;
}
body :is(.style-option > strong, .style-project-cta, .style-launchbar > p) {
  overflow-wrap: anywhere;
}
body .style-project-cta { white-space: normal; }
body .style-selected { max-width: none; min-width: 0; }
body .style-palette-bottom { flex-wrap: wrap; }
body .style-launchbar { align-items: center; flex-wrap: wrap; }
body .style-launchbar > p { max-width: 29rem; }

/* Main brief and private receipt/inbox: no 12px input or iOS focus zoom. */
body :is(.brief-intro > p:last-child, #form-success > p, .brief-summary) {
  font-size: var(--read-copy); line-height: var(--read-leading);
}
body :is(.field, .field label, .field legend, .consent, .choices label,
  .chips label, .upload strong) { font-size: var(--read-control); line-height: 1.55; }
body :is(.choices strong, .chips span) { font-size: 16px; line-height: 1.5; }
body .choices small { font-size: 14px; line-height: 1.6; }
body :is(.field > small, .field legend small, .field-help, .upload small,
  .form-error, .style-brief-chip small, .style-brief-chip strong,
  .style-brief-note, .calc-brief-chip small, .calc-brief-chip strong,
  .calc-brief-note, .brief-intro .eyebrow) {
  font-size: var(--read-secondary); line-height: 1.6;
}
body :is(.form-navigation .primary, .form-navigation .text-link) {
  font-size: var(--read-control); line-height: 1.5;
}
body :is(input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),
  textarea, select) { font-size: var(--read-control); line-height: 1.5; }
body :is(input, textarea)::placeholder { font-size: inherit; }
body textarea { line-height: 1.6; }
body .privacy-page { max-width: 56rem; }
body .privacy-page :is(p, li) { font-size: var(--read-copy); line-height: 1.7; }
body:has(#receipt-status, #inbox-status, #form-result) :is(p, li, dt, dd, label, input, textarea, select, button) {
  font-size: var(--read-copy); line-height: 1.65;
}
body:has(#receipt-status, #inbox-status, #form-result) .eyebrow {
  font-size: var(--read-secondary); line-height: 1.5;
}

/* Optional analytics controls: readable while preserving voluntary dialog behavior. */
body :is(.analytics-footer, .analytics-settings) {
  font-size: var(--read-secondary); line-height: 1.6;
}
body .analytics-consent { font-size: 16px; line-height: 1.6; }
body .analytics-consent h2 { font-size: 21px; line-height: 1.4; }
body .analytics-consent :is(p, .analytics-providers fieldset p) {
  font-size: 16px; line-height: 1.6;
}
body .analytics-consent-actions button { font-size: 16px; line-height: 1.5; }
body .analytics-consent-close { font-size: 24px; line-height: 1; }

/* Shared demo navigation and explanatory notes. This excludes text painted on objects. */
body :is(.demo-banner, .demo-strip, .demo-bar, .demo-note, .demo-notice,
  .demo-notice a, .demo-banner a, .demo-strip a, .demo-bar a,
  .demo-note a, .notice, .demo-header > span, .demo-eyebrow,
  .eyebrow, .section-label, .chapter, .chapter span:last-child,
  .header-note, .site-footer > p, .site-footer > a:last-child,
  .footer-bottom, .footer-bottom > span, .footer p, .footer > a:last-child,
  .footer-return, .demo-footer, .fine-print, .plan-disclaimer,
  .price-note, .local-note) {
  font-size: var(--read-secondary); line-height: 1.6;
}
body :is(.demo-banner, .demo-strip, .demo-bar, .demo-note, .demo-notice, .notice) {
  flex-wrap: wrap;
}
body :is(.navigation, .site-nav, .header nav, .site-header nav,
  .menu-toggle, .header-action, .cart-toggle, .demo-button,
  .filter-list button, .filters button, .filter, .view-switch button,
  .solid-button, .reset-button, .summary-return, .save-button,
  .text-link, .hero-discover, .contact-link, .button,
  .photo-open, .photo-button, .clear-cart, .add-product) {
  font-size: var(--read-control); line-height: 1.5;
}
body :is(.navigation, .site-nav, .header nav, .site-header nav, .filters) {
  flex-wrap: wrap; gap: 12px 22px;
}
body :is(.text-link, .solid-button, .save-button, .button, .contact-link) {
  white-space: normal;
}

/* NAIA resort: the reading column, planner and result remain distinct. */
body:has(.planner) :is(.hero-description, .intro-text, .section-heading > p,
  .room-copy > p:not(.eyebrow), .horizon-copy > p:not(.eyebrow),
  .plan-intro > p:not(.eyebrow), .faq-list details p, .summary-details > div) {
  font-size: var(--read-copy); line-height: var(--read-leading);
}
body:has(.planner) :is(.planner legend, .form-field > label, .breakfast-option,
  .faq-list summary, .room-facts dd) { font-size: 16px; line-height: 1.55; }
body:has(.planner) :is(.room-facts dt, .option-pair label small,
  .field-hint, .breakfast-option small, .quote-preview > span,
  .quote-preview > small, .planner-error, .gallery-caption,
  .gallery-controls p, .summary-disclaimer, .summary-cost span) {
  font-size: var(--read-secondary); line-height: 1.6;
}
body:has(.planner) .gallery-dialog h2 { font-size: 20px; line-height: 1.4; }
body:has(.planner) :is(.hero-foot, .hero-foot > span, .hero-foot a,
  .gallery-item > span, .studio-cta > span) { font-size: 14px; line-height: 1.5; }

/* MODO kitchens: meaningful configuration labels, not product drawing marks. */
body:has(.config-form) :is(.hero-aside p, .approach-intro > p, .principles p,
  .config-heading > p, .ending-bottom > p,
  dialog > p:not(.eyebrow):not(.local-note), dialog pre) {
  font-size: var(--read-copy); line-height: var(--read-leading);
}
body:has(.config-form) :is(legend, .material-choice, .compact-choice,
  .material-note strong) { font-size: 16px; line-height: 1.5; }
body:has(.config-form) :is(legend > span, .material-choice small,
  .material-note p, .estimate-detail, .estimate small,
  .estimate > p:first-child, .scene-caption, .photo-label,
  .hero-photo figcaption, .hero-bottom, .principle-number) {
  font-size: var(--read-secondary); line-height: 1.6;
}
body:has(.config-form) .material-choice { min-width: 0; }
body:has(.config-form) .header nav .nav-cta {
  display: inline-flex; align-items: center; gap: 8px;
  font-size: 16px; line-height: 1.5; min-height: 44px;
  max-width: 100%; white-space: normal;
}

/* LUME skincare: product facts and cart controls preserve the display type. */
body:has(.cart-drawer) :is(.hero-description, .section-heading > p,
  .ritual-copy > p:not(.eyebrow), .details-intro > p:not(.eyebrow),
  .faq details > div, .footer-top > p, .cart-description, .cart-empty) {
  font-size: var(--read-copy); line-height: var(--read-leading);
}
body:has(.cart-drawer) :is(.product-description, .product-price,
  .faq summary, .cart-item h3, .cart-item-price, .line-total,
  .cart-total > span, .quantity-control output) { font-size: 16px; line-height: 1.5; }
body:has(.cart-drawer) :is(.product-kind, .product-tag, .cart-footnote,
  .remove-item, .photo-caption, .hero-foot, .hero-foot p > span,
  .ritual-notes span, .ritual-image > span) {
  font-size: var(--read-secondary); line-height: 1.6;
}
body:has(.cart-drawer) .product-tag { max-width: calc(100% - 24px); }
body:has(.cart-drawer) .collection-tools { flex-wrap: wrap; gap: 14px; }
body:has(.cart-drawer) .cart-drawer .button {
  font-size: 16px; line-height: 1.5;
  white-space: normal; min-height: 48px;
}
body:has(.cart-drawer) .cart-item .remove-item {
  font-size: 14px; line-height: 1.5;
  min-height: 36px; padding: 6px 4px;
}
body:has(.cart-drawer) .cart-item-head { flex-wrap: wrap; }

/* EMBER architecture: body copy and gallery metadata, not dramatic display headings. */
body:has(.lightbox) :is(.hero-bottom > p,
  .project-description > p:not(.large-copy), .approach-intro > p,
  .approach-list p, .materials-intro > p:last-child,
  .fragments-heading > p, .contact-concept > p:not(.eyebrow),
  .lightbox-bottom > p) { font-size: var(--read-copy); line-height: var(--read-leading); }
body:has(.lightbox) :is(.project-facts dd, .approach-list h3, .material-label h3) {
  font-size: 17px; line-height: 1.5;
}
body:has(.lightbox) :is(.project-facts dt, .viewer-caption,
  .viewer-caption > p, .viewer-caption > span, .material-label > span,
  .material-label p, .fragment figcaption, .fragment figcaption > span:first-child,
  .lightbox-top p, .lightbox-controls > span, .frame-note,
  .hero-bottom p span, .approach-number, .footer-top > a:not(.wordmark)) {
  font-size: var(--read-secondary); line-height: 1.6;
}
body:has(.lightbox) :is(.viewer-caption, .fragment figcaption, .footer-bottom) {
  flex-wrap: wrap;
}

/* SCOPE analytics: actual figures and table text, including generated rows. */
body:has(.kpi-grid) :is(.page-description, .studio-card p,
  .report-card > p:not(.eyebrow)) { font-size: var(--read-copy); line-height: var(--read-leading); }
body:has(.kpi-grid) :is(.nav-link, .back-link, .studio-card a,
  .period-control button, .metric-control button, .download-button,
  .source-control select) { font-size: 16px; line-height: 1.5; }
body:has(.kpi-grid) :is(.workspace strong, .workspace div > span,
  .nav-caption, .breadcrumb, .demo-status, .notice-label,
  .date-range, .source-control label, .kpi-label, .kpi-detail,
  .panel-heading .eyebrow, .chart-summary, .chart-summary > span:last-child,
  .chart-tooltip span, .chart-bottom, .subtle-badge,
  .table-note, .report-card .eyebrow, .report-format,
  .dashboard-footer, .dashboard-footer p, .dashboard-footer a) {
  font-size: var(--read-secondary); line-height: 1.55;
}
body:has(.kpi-grid) :is(table, th, td, .source-name, tfoot td) {
  font-size: 15px; line-height: 1.55;
}
body:has(.kpi-grid) .chart-tooltip strong { font-size: 18px; line-height: 1.5; }
body:has(.kpi-grid) .sources-card h2 { font-size: 23px; line-height: 1.35; }
body:has(.kpi-grid) .source-control { min-width: 0; }
body:has(.kpi-grid) .source-control select { width: auto; min-width: 150px; max-width: 100%; }
body:has(.kpi-grid) .filter-row { flex-wrap: wrap; }
body:has(.kpi-grid) .nav-link { height: auto; min-height: 48px; padding-block: 11px; }
body:has(.kpi-grid) .sidebar { overflow-y: auto; }
body:has(.kpi-grid) .lower-grid { grid-template-columns: minmax(0, 1fr) minmax(260px, .42fr); }

/* AURA botanical concept: forms and rituals; painted bottle labels stay miniature. */
body:has(.aura-art) :is(.hero-description, .approach-bottom p,
  .section-head > p, .ritual-title p, .collection-caption p,
  .choose-intro > p:not(.eyebrow), .demo-explanation p, .form-result p) {
  font-size: var(--read-copy); line-height: var(--read-leading);
}
body:has(.aura-art) :is(.hero-note, .hero-foot, .section-note,
  .ritual-number, .ritual-tag, .collection-meta, .form-eyebrow,
  .field-hint, .field-error, .check-field label,
  .footer-top p, .footer-bottom, .art-caption) {
  font-size: var(--read-secondary); line-height: 1.6;
}
body:has(.aura-art) .field label { font-size: 16px; line-height: 1.5; }
/* Existing AURA mobile caption was important; this remains an actual caption. */
@media (max-width: 390px) {
  body:has(.aura-art) .art-caption { font-size: 14px !important; }
}

/* FORMA design objects and GRID catalogue retain their individual display faces. */
body:has(.hero-room) :is(.hero-description, .section-heading > div > p,
  .product details, .product details p, .approach-lead,
  .principles p, .closing-bottom p) {
  font-size: var(--read-copy); line-height: var(--read-leading);
}
body:has(.hero-room) :is(.hero-label, .room-caption, #catalog-count,
  .product-heading p, .catalog-note, .principles span, .site-footer) {
  font-size: var(--read-secondary); line-height: 1.6;
}
body.grid :is(.demo-hero p:not(.demo-eyebrow), .demo-result) {
  font-size: var(--read-copy); line-height: var(--read-leading);
}
body.grid :is(.product strong, .demo-inputs label) { font-size: 16px; line-height: 1.5; }
body.grid .product small { font-size: 14px; line-height: 1.6; }

/* NOVA technology concept uses inline legacy rules, so specificity is intentional. */
body:has(.cards) :is(.hero p:not(.eyebrow), .cards p, #result) {
  font-size: var(--read-copy); line-height: var(--read-leading);
}
body:has(.cards) :is(nav, .contact label, .button) { font-size: 16px; line-height: 1.5; }
body:has(.cards) footer { font-size: 14px; line-height: 1.6; }

@media (max-width: 1100px) {
  /* Typography now needs more header room; the existing mobile menu is functional. */
  body .v4-nav { display: none; }
  body .v4-header .v4-menu { display: flex; align-items: center; gap: 8px; min-height: 44px; }
  body .v4-header-cta { margin-left: auto; }
  body .v4-header { gap: 18px; }
  body .v4-experience-copy p { max-width: none; }
}
@media (max-width: 900px) {
  body:has(.kpi-grid) .lower-grid { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 760px) {
  :root { --read-copy: 17px; }
  body:has(.config-form) .header nav {
    width: 100%; margin-left: 0; justify-content: space-between;
  }
  body .v4-hero-intro { flex-wrap: wrap; }
  body .v4-hero-intro > p { max-width: none; flex: 1 1 100%; }
  body .v4-work-heading { grid-template-columns: minmax(0, 1fr); }
  body .v4-experience-copy { display: block; }
  body .v4-experience-copy h2 { margin-bottom: 18px; }
  body .v4-scene-buttons { gap: 14px 22px; }
  body .showroom-finishes { grid-template-columns: minmax(0, 1fr); }
  body .style-options { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  body .style-launchbar > p { max-width: none; }
  body .style-project-cta { flex: 1 1 220px; }
  body .calc-types { grid-template-columns: minmax(0, 1fr); }
  body .calc-type > span { flex-direction: row; min-height: 78px; flex-wrap: wrap; }
  body .calc-type small { font-size: 14px; max-width: none; text-align: left; }
  body .calc-extra { flex-wrap: wrap; }
  body .calc-extra > b { margin-left: 30px; white-space: normal; }
  body:has(.kpi-grid) .source-control select { min-width: 0; width: 100%; }
  body:has(.kpi-grid) .filter-row { align-items: flex-start; }
  body:has(.kpi-grid) .kpi-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 480px) {
  body .v4-header { flex-wrap: wrap; height: auto; min-height: 76px; padding-block: 12px; }
  body .v4-header-cta { display: none; }
  body .v4-header .v4-menu { margin-left: auto; }
  body .v4-mobile-nav { top: 100%; }
  body .v4-hero-footer { align-items: flex-start; gap: 15px; }
  body .v4-hero-footer > p { text-align: left; }
  body .v4-project-caption { gap: 14px; }
  body .v4-skip-experience { margin-left: 0; }
  body .style-options { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  body .field-row { grid-template-columns: minmax(0, 1fr); }
  body .form-navigation { gap: 12px; flex-wrap: wrap; }
  body .form-navigation .primary { padding: 14px 18px; }
  body .calc-result { grid-template-columns: minmax(0, 1fr); }
  body:has(.config-form) .material-options { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  body:has(.kpi-grid) .kpi-grid { grid-template-columns: minmax(0, 1fr); }
  body:has(.kpi-grid) .panel-heading { flex-wrap: wrap; gap: 12px; }
}
