/*
 * Shared by the app and the lightweight public pages.
 * Essential text must not shrink to fit a phone. Wrap the layout instead.
 * These accessibility rules intentionally outrank legacy component type sizes,
 * including styles loaded with lazy routes.
 */
:root {
  --hova-body-size: 1rem;
  --hova-label-size: .9375rem;
  --hova-caption-size: .875rem;
  --hova-readable-muted: #4b6055;
}
html {
  font-size: 100%;
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}
body { font-size: var(--hova-body-size); line-height: 1.55; font-weight: 500; }
body :is(p, li, dd) {
  font-size: var(--hova-body-size) !important;
  line-height: 1.6 !important;
}
body small {
  font-size: var(--hova-caption-size) !important;
  line-height: 1.5 !important;
  font-weight: 500;
}
body :is(label, dt, .field-label, .content-label) {
  font-size: var(--hova-label-size) !important;
  font-weight: 700;
  line-height: 1.5;
}
body :is(button, .button, .text-button, .marketing-apply) {
  font-size: var(--hova-label-size) !important;
  font-weight: 700;
  line-height: 1.4;
  min-height: 44px;
}
body :is(input:not([type="checkbox"]):not([type="radio"]):not([type="file"]), textarea, select) {
  font-size: var(--hova-body-size) !important;
  line-height: 1.5;
  max-width: 100%;
}
body :is(input, textarea)::placeholder { color: #607167; opacity: 1; }
body :is(input, textarea, select, button, a, summary):focus-visible {
  outline: 3px solid #ac791b;
  outline-offset: 3px;
}
body :is(h2, h3, h4) { line-height: 1.3; overflow-wrap: break-word; }
body h2 { font-size: 1.625rem; }
body h3 { font-size: 1.25rem; }
body h4 { font-size: 1.125rem; }
body :is(.page-heading, .product-modal-head, .customer-editor-head) h1 {
  font-size: clamp(1.875rem, 5vw, 2.5rem);
  line-height: 1.15;
}
body :is(th, td) { font-size: var(--hova-label-size) !important; line-height: 1.5; }
body th { font-weight: 800; letter-spacing: .025em; }

/* Labels, status information and supporting text across seller/admin tools. */
body :is(
  .eyebrow, .nav-section, .hero-kicker, .pill, .muted,
  .product-meta, .product-photo-empty span, .saved-code span,
  .form-hint, .form-empty-note, .variant-editor-head, .color-chip,
  .image-search-disclosure, .image-file-name, .image-search-loading,
  .image-search-error, .image-result-head, .image-result-chip,
  .image-local-match, .product-notice, .qualification-status,
  .qualification-banner span, .setup-choice-help, .setup-required-note,
  .setup-optional-details > summary span, .ops-updated, .ops-metric-label,
  .ops-count, .ops-record-top span, .ops-record-top time, .ops-flags span,
  .ops-issue span:not(.ops-issue-symbol), .ops-issue strong,
  .ops-audit span, .ops-audit time, .ops-quiet-empty,
  .customer-total span, .customer-results-line, .customer-phone,
  .customer-context-label, .customer-context b, .customer-tags span,
  .customer-note span, .customer-whatsapp-disabled,
  .assistant-preview-label, .assistant-safety-note, .admin-owner,
  .admin-business-type, .admin-review-details b, .admin-review-details span,
  .admin-review-details a, .qualification-flags > b, .admin-note > b,
  .admin-empty span, .shop-link-label, .shop-share-link,
  .shop-share-notice, .shop-save-hint, .mobile-more-heading,
  .content-idea-label, .content-idea-note, .content-product-code,
  .content-caption-footer, .content-product-link, .content-notice,
  .content-privacy-note, .content-shop-link, .public-platform-note,
  .brand-media-count, .brand-media-disclosure, .brand-media-slot-heading > span,
  .brand-media-pending, .brand-media-remove, .brand-media-limit,
  .brand-media-upload-preview span, .brand-media-upload-note,
  .brand-media-status, .brand-media-error, .public-shop-links a,
  .public-gallery-figure figcaption, .platform-role-card > span,
  .platform-staff-identity > span, .platform-staff-footnote,
  .platform-staff-empty, .platform-price-footnote, .platform-price-submit > span,
  .storefront-search-label span, .storefront-search-feedback,
  .wholesale-search-feedback, .catalog-results-summary,
  .hovagene-context, .hovagene-role, .hovagene-warning,
  .hovagene-welcome-kicker, .hovagene-message-author,
  .hovagene-compose-foot, .hovagene-draft-mark,
  .hovagene-draft-head span:not(.hovagene-draft-mark), .hovagene-draft-note,
  .br-identity, .br-overline, .br-source-badge, .br-source-note,
  .br-refresh-time, .br-period-caption, .br-period-caption > span:last-child,
  .br-stat-top, .br-summary-period, .br-recommendation-count,
  .br-chart-empty, .br-legend-row, .br-legend-row strong, .br-finding-mark,
  .br-payment-label, .br-payment-label strong, .br-stock-count, .br-footnote,
  .rtl-kicker, .rtl-foot, .rtl-audit, .rtl-tag, .toast-message,
  .connection-status-copy, .connection-status-copy strong, .cached-data-warning,
  .error-state, .privacy-copy, .customer-privacy, .customer-form-error,
  .admin-success, .content-empty-products b
) {
  font-size: var(--hova-caption-size) !important;
  line-height: 1.5 !important;
  letter-spacing: .015em;
}
body :is(
  .nav-link, .mobile-more-link, .sidebar-shop b,
  .field label, .product-active-toggle b, .setup-choice,
  .customer-context b, .ops-issue b, .ops-audit b,
  .platform-role-card > b, .platform-staff-identity > b,
  .storefront-search-label strong, .content-product-summary b,
  .brand-media-item-copy b, .shop-share-panel-heading b,
  .image-result-head, .hovagene-draft-details dd
) { font-size: var(--hova-label-size) !important; line-height: 1.5; }
body .metric-card span { font-size: var(--hova-label-size) !important; line-height: 1.5; }
body :is(.saved-code b, .product-code) { font-size: 1rem !important; font-weight: 800; }
body :is(.field, .customer-field) > small { font-weight: 500; }
body :is(.field, .customer-field) :is(input, select) { min-height: 48px; }
body :is(.field, .customer-field) textarea { min-height: 110px; }
body :is(.form-section-title, .content-section-heading, .platform-staff-header) h3 {
  font-size: 1.25rem;
}

/* Dark text on light panels, without changing semantic error/success colours. */
body :is(
  .form-hint, .form-empty-note, .product-meta, .product-info p,
  .product-active-toggle small, .image-search-disclosure, .image-file-name,
  .image-search-copy p, .image-search-result p, .image-local-match,
  .product-attributes small, .public-product-attributes small,
  .form-section-title p, .field small, .customer-field > span,
  .admin-application-form small, .shop-save-hint, .shop-qr-content p,
  .brand-media-disclosure, .brand-media-item-copy small,
  .content-caption-footer, .content-privacy-note, .content-product-summary small,
  .platform-staff-identity > span, .platform-price-footnote,
  .br-source-note, .br-refresh-time, .br-period-caption,
  .br-stat small, .br-legend-row small, .br-payment-label small,
  .br-check-row small, .br-footnote, .hovagene-example,
  .hovagene-compose-foot, .storefront-search-label span
) { color: var(--hova-readable-muted) !important; }
body .business-report {
  --br-muted: #4b6055;
  --br-quiet: #4b6055;
}
body :is(.sidebar, .mobile-header) .hova-lockup small { color: #e3eee7 !important; }
body .sidebar :is(.nav-section, .sidebar-help) { color: #d8e8df; }
body :is(.sidebar-shop a, .link-row) { font-size: var(--hova-caption-size) !important; overflow-wrap: anywhere; }

/* Brand copy is readable at normal zoom, including the logo tagline. */
body :is(.hova-lockup small, .hova-landing-lockup small) {
  font-size: var(--hova-caption-size) !important;
  font-weight: 700;
  letter-spacing: 0 !important;
  line-height: 1.45;
}
body .hova-landing-lockup small { max-width: none; color: #3e5549; }
body .hova-landing-lockup b { font-size: 1.375rem; }
body .hova-lockup b { font-size: 1.25rem !important; overflow-wrap: anywhere; }
body .hova-shop-avatar { font-size: var(--hova-caption-size) !important; }
body :is(.hova-example-label, .hova-story-url, .hova-question span,
  .hova-product-copy > span, .hova-vendor-prompt small,
  .hova-request-tag, .hova-story-foot, .hova-footer-brand, .hova-footer-note,
  .hova-trust-line, .marketing-footer, .promo-caution) {
  font-size: var(--hova-caption-size) !important;
  line-height: 1.5;
  letter-spacing: .015em;
}
body :is(.hova-shop-name b, .hova-request-status b, .hova-vendor-prompt b) {
  font-size: 1rem !important;
  line-height: 1.4;
}
body .hova-product-copy b { font-size: 1.125rem; line-height: 1.3; }
body .hova-story-card { transform: none !important; }
body .hova-story-top { flex-wrap: wrap; gap: 8px 12px; }
body :is(.hova-shop-name, .hova-product-copy, .hova-request-status > div, .hova-vendor-prompt > div) {
  min-width: 0;
  overflow-wrap: anywhere;
}
body .hova-request-status { flex-wrap: wrap; }
body .hova-request-tag { margin-left: 0; }
body .hova-home .hova-question p { font-weight: 700; }
body .hova-hero-copy > p { font-size: 1.125rem !important; line-height: 1.65 !important; }
body .hova-brand-statement p { font-size: clamp(1.625rem, 4vw, 2.5rem) !important; line-height: 1.2 !important; }
body .hova-benefit-list h3 { font-size: 1.375rem; line-height: 1.3; }
body :is(.hova-home .landing-footer, .marketing-footer-inner) { flex-wrap: wrap; }
body .marketing-eyebrow { color: #73531e; font-size: var(--hova-caption-size); }
body .marketing-hero .marketing-eyebrow { color: #f2c85f; }
body .marketing-section.marketing-wrap { padding-inline: clamp(17px, 4vw, 24px); }

body .catalog-image-search > summary::after {
  font-size: var(--hova-caption-size) !important;
}

@media (max-width: 760px) {
  body .button { min-height: 48px; white-space: normal; text-align: center; }
  body :is(.mobile-nav a, .mobile-nav button) {
    font-size: .8125rem !important;
    min-height: 58px;
    line-height: 1.25;
    font-weight: 750;
  }
  body .mobile-more-link { min-height: 48px; }
  body .form-section-title { flex-wrap: wrap; align-items: flex-start; }
  body .form-section-title > div { flex: 1 1 170px; min-width: 0; }
  body :is(.product-modal-head, .customer-editor-head) > div { min-width: 0; }
  body .saved-code { flex-wrap: wrap; gap: 8px 12px; }
  body .saved-code small { flex-basis: 100%; margin-left: 0; }
  body .ops-record-top { flex-wrap: wrap; }
  body .hova-lockup > span:last-child { min-width: 0; }
  body .platform-role-grid { grid-template-columns: 1fr; }
  body .hova-hero .eyebrow { font-size: var(--hova-caption-size); letter-spacing: .04em; }
  body .hova-hero-actions { display: grid; grid-template-columns: minmax(0, 1fr); gap: 12px; }
  body .hova-hero-actions > .button { width: 100%; justify-content: center; }
  body .hova-hero-actions > .hova-text-link { justify-content: center; }
  body .hova-text-link { font-size: 1rem; min-height: 44px; }
  body .hova-product-example { margin-left: 0; }
  body .hova-benefits-heading .eyebrow { font-size: var(--hova-caption-size); letter-spacing: .04em; }
  body :is(.ops-updated, .ops-issue strong, .ops-audit time) {
    white-space: normal;
    max-width: 100%;
  }
  body :is(.br-period-caption, .br-stat-top) { flex-wrap: wrap; gap: 8px; }
  body .br-period-picker { flex-wrap: wrap; }
  body .hova-calendar .rdp-weekday { font-size: var(--hova-caption-size); }
}
@media (max-width: 600px) {
  body :is(.landing-nav, .hova-home .landing-nav) { flex-wrap: wrap; gap: 12px; padding: 12px 16px; }
  body .landing-nav > div { width: 100%; flex-wrap: wrap; }
  body .landing-nav > div .button { flex: 1; padding-inline: 12px; }
  body .hova-landing-lockup { gap: 10px; }
  body .hova-nav-mark { flex-shrink: 0; }
  body .hova-hero h1 { font-size: clamp(2.5rem, 11vw, 3.75rem); line-height: 1.06; }
  body .hova-brand-statement { column-gap: 14px; }
  body .hova-brand-statement .button { width: 100%; min-width: 0; white-space: normal; }
  body .marketing-header { flex-wrap: wrap; gap: 12px; }
  body .marketing-nav { flex-wrap: wrap; width: 100%; }
  body .marketing-nav .marketing-apply { flex: 1; }
}
