/* Shared text tokens. Keep the root font size unchanged so headings retain their sizing. */
:root {
  --zj-copy-size: 18px;
  --zj-ink: #1f2937;
  --zj-muted: #4b5563;
  --zj-dark: #0f3d4e;
  --zj-on-dark: #ffffff;
  --zj-muted-on-dark: #cfe3d8;
  --foreground: #1f2937;
  --muted-foreground: #4b5563;
}
body, html[dir="rtl"] body { font-size: var(--zj-copy-size); line-height: 1.6; color: var(--zj-ink); }
.zjc-curated-catalog, .zjc-curated-product, .zjc-range-card {
  --zjc-ink: #1f2937;
  --zjc-muted: #4b5563;
  --zjc-green: #006b45;
}

/* Body copy only: h1–h6, statistics and display numerals keep their existing sizes. */
body #main-content :is(p, li, td, th, dd, dt, label, figcaption),
body footer.reference-footer .footer-desktop p,
body footer.reference-footer .footer-mobile p,
body .reference-footer :is(.wp-footer-links a, .footer-desktop > div > a:not(.footer-wordmark), .footer-mobile [data-slot="accordion-content"] a),
body #main-content :is(.custom-features span, .field input, .field textarea, .contact-form select, .select-trigger, .zjc-product-search input, .zjc-mobile-categories select) {
  font-size: var(--zj-copy-size);
  line-height: 1.6;
}
body #main-content p { max-inline-size: 62ch; }
body footer.reference-footer p { max-inline-size: 62ch; }
body #main-content :is(.article-body, .zj-guide-content) { max-inline-size: 62ch; }
body #main-content :is(.article-body, .zj-guide-content, .content-block) :is(ul, ol) { max-inline-size: 62ch; line-height: 1.6; }
body #main-content :is(.center-heading, .custom-content) > p { margin-inline: auto; }
body #main-content .privacy-note { font-size: var(--zj-copy-size) !important; line-height: 1.6; }

/* Light surfaces: no translucent placeholder text or low-contrast muted grays. */
body #main-content :is(p, li, td, th, dd, dt, label, .field input, .field textarea, .contact-form select),
body #main-content .zjc-curated-product .zjc-buyer-table :is(th, td) { color: var(--zj-ink); }
body #main-content :is(.eyebrow, .center-heading > p, .breadcrumbs, .catalog-count, .category-links span,
  .product-category, .brochure-name, .source-link, .spec-note, .article-meta, .field-hint,
  .optional-details-toggle span, .notification-state, .zjc-source-note, .zjc-result-count,
  .zj-report-reference, .facts-grid span, .detail-photo > span, .proof-strip span, figcaption),
body #main-content .reference-category > p,
body #main-content .zjc-curated-gallery .gallery-panel figcaption,
body #main-content #coffee-filter-formats .spec-table td::before { color: var(--zj-muted); }
body :is(input, textarea)::placeholder { color: #4b5563; opacity: 1; }
body #main-content :is(.text-link, .source-link, .zjc-card-link),
body #main-content .reference-category > span,
body .desktop-nav a:is(.active, [aria-current]),
body .text-link:hover { color: #006b45; }
body #main-content :is(.text-link, .source-link):is(:hover, :focus-visible) { color: #004c32; }
body #main-content .steps article::before { color: #4b5563; }

/* White type on green buttons remains above 4.5:1 in all states. */
body :is(.green, .teal, .whatsapp-float, .inquiry-band .button, .contact-form .button, .form-success .button) {
  color: #fff;
  background-color: #006d44;
}
body :is(.green, .teal, .whatsapp-float, .inquiry-band .button, .contact-form .button):hover {
  color: #fff;
  background-color: #005637;
}
body .carousel-controls .carousel-control { background: #006d44; color: #fff; }

/* Explicit dark components, including image-backed cards. */
body #main-content :is(.reference-hero-content, .hero-copy, .reference-about, .custom-content,
  .application-photo, .reference-news-card, .zj-stock-order-callout, .cta-section),
body .reference-footer { color: #fff; }
body #main-content :is(.reference-hero-content, .hero-copy, .reference-about, .custom-content,
  .application-photo, .reference-news-card, .zj-stock-order-callout, .cta-section) :is(p, li, dd, dt),
body .reference-footer :is(p, .footer-wordmark) { color: #fff; }
body #main-content :is(.reference-hero-content, .hero-copy, .reference-about, .custom-content,
  .application-photo, .reference-news-card, .zj-stock-order-callout, .cta-section) :is(.eyebrow, figcaption),
body #main-content :is(.about-heading > p, .reference-hero-content > p:first-child, .custom-content > p,
  .custom-features span, .reference-stats span, .reference-stats small, .reference-news-card > div > span:first-child),
body .reference-footer :is(.footer-bottom, .footer-bottom > span, .zj-location-credit) { color: #cfe3d8; }
body #main-content :is(.reference-hero-content, .hero-copy, .reference-about, .custom-content,
  .application-photo, .reference-news-card, .zj-stock-order-callout, .cta-section) :is(a, button),
body .reference-footer :is(a, button, summary),
body #main-content .reference-news-card .news-read {
  color: #fff;
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: .2em;
}
body #main-content :is(.application-photo, .reference-news-card) { text-decoration: none; }
body #main-content .application-photo > div { text-decoration: underline; text-underline-offset: .2em; }
body #main-content :is(.reference-hero-content, .reference-about, .custom-content, .zj-stock-order-callout) a:hover,
body .reference-footer a:is(:hover, :focus-visible, :visited) { color: #fff; }
body footer.reference-footer .footer-desktop > div > a:not(.footer-wordmark),
body footer.reference-footer .footer-mobile a {
  color: #fff;
  text-decoration: underline;
  text-underline-offset: .2em;
}
body #main-content :is(.reference-hero-content, .reference-about, .custom-content, .reference-news-card,
  .application-photo, .zj-stock-order-callout) :focus-visible,
body .reference-footer :focus-visible { outline: 3px solid #fff; outline-offset: 4px; }
body #main-content .reference-category:is(:hover, :focus-visible) :is(p, span, h3) { color: #fff; }
body #main-content .reference-category:is(:hover, :focus-visible) { background: #073b53; }
body #main-content .reference-category:is(:hover, :focus-visible) > span { text-decoration: underline; }

/* Photo overlays have an 85% dark floor. Even a white photo beneath gives
   #335a69, with contrast >=5.56:1 for #cfe3d8 and >=7.48:1 for white. */
body .hero-shade, body .custom-shade { background: rgb(15 61 78 / 85%); }
body .application-photo::after { background: linear-gradient(transparent 0%, rgb(15 61 78 / 85%) 35%); }
body .reference-news-card > div { background: rgb(15 61 78 / 85%); }
body .news-0 > div { background: #073b53; }
body :is(.news-4, .news-4 > div) { background: #006d44; }

/* Video labels use a solid backing; the photograph remains visible around them. */
body .zj-factory-video-play::after { content: none; }
body .zj-factory-video-control > span {
  color: #fff;
  background: #0f3d4e;
  padding: 6px 12px;
  border-radius: 4px;
  text-decoration: underline;
  text-underline-offset: .2em;
  text-shadow: none;
}
body #main-content .zj-factory-video-caption a.text-link,
body #main-content .zj-factory-video-caption a.text-link:is(:hover, :focus-visible, :visited) {
  color: #fff;
  background: #0f3d4e;
  border: 1px solid #cfe3d8;
  border-radius: 6px;
  padding: 8px 12px;
  text-decoration: underline;
  text-underline-offset: .2em;
  font-variant-emoji: text;
}
body #main-content .zj-factory-video-caption svg { color: #fff; stroke: currentColor; }
/* WordPress replaces the arrow with a colored emoji image. Render a white SVG
   icon in that same image box so its blue emoji tile cannot override the link. */
body #main-content .zj-factory-video-caption a img.emoji {
  content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 17 17 7M7 7h10v10'/%3E%3C/svg%3E");
}

@media (max-width: 740px) {
  :root { --zj-copy-size: 16px; }
}
