body{font-family:var(--font-body,system-ui,sans-serif);line-height:var(--text-line-height,1.68)}
h1,h2,h3,h4,h5,h6,.brand-copy strong{line-height:var(--heading-line-height,1.2);letter-spacing:var(--heading-letter-spacing,0)}
html:lang(ja){--font-body:-apple-system,BlinkMacSystemFont,"Hiragino Sans","Hiragino Kaku Gothic ProN","Yu Gothic UI","Yu Gothic",Meiryo,sans-serif}
html:lang(ko){--font-body:-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo","Malgun Gothic","Noto Sans KR",sans-serif}
html:lang(th){--font-body:Thonburi,"Leelawadee UI",Tahoma,"Noto Sans Thai",sans-serif}
html:lang(vi){--font-body:-apple-system,BlinkMacSystemFont,"Segoe UI","Arial",sans-serif}
html:lang(ru){--font-body:-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif}
html:lang(el){--font-body:-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Arial,sans-serif}
html:lang(cs),html:lang(pl),html:lang(hr),html:lang(sl),html:lang(hu),html:lang(ro){--font-body:-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif}
html:lang(da),html:lang(de),html:lang(nb),html:lang(sv),html:lang(fi),html:lang(nl),html:lang(fr),html:lang(it),html:lang(es),html:lang(pt){--font-body:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif}
:lang(ja) body,:lang(ko) body,:lang(th) body{word-break:normal;overflow-wrap:break-word}
:lang(ja) h1,:lang(ja) h2,:lang(ko) h1,:lang(ko) h2,:lang(th) h1,:lang(th) h2{letter-spacing:0;line-height:1.4}
:lang(ko) .category-heading h2,:lang(ko) .info-section h2{word-break:keep-all;overflow-wrap:anywhere}
:lang(ja) .section-description-text{line-break:strict}
:lang(th) .section-description{line-height:1.8}
:lang(th) .section-description-text{min-block-size:3.6em;max-block-size:3.6em}
:lang(th) .info-section,:lang(vi) .info-section{line-height:1.8}
:lang(ru) h1,:lang(ru) h2,:lang(el) h1,:lang(el) h2{letter-spacing:normal}
[dir="rtl"] .header-inner,[dir="rtl"] .footer-grid{direction:rtl}

/* shared review/detail rules aligned from the Chinese directory */
body {
  font-family: var(--font-body, -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", "Noto Sans CJK SC", "Noto Sans SC", sans-serif);
  line-height: var(--text-line-height, 1.66);
}
h1, h2, h3, h4, h5, h6,
.section-heading h2,
.page-header h1,
.category-heading h2,
.brand-copy strong {
  line-height: var(--heading-line-height, 1.28);
  letter-spacing: 0;
}
.eyebrow,
.review-mini,
.price-chip,
.demo-chip {
  letter-spacing: 0;
  text-transform: none;
}
.site-name-link,
.site-name-text,
.review-directory-title,
.review-related-name {
  letter-spacing: 0 !important;
}
@media (max-width: 640px) {
  :lang(zh-CN) body { font-size: 15px; }
}

/* Korean typography calibration — same treatment the Vietnamese and Chinese directories get.
   The AdultRankly-derived stack ships Manrope-calibrated weights (650 for card links and ranks,
   650 for the category headings); Hangul in the Korean system fallback renders those visibly
   heavier than the reference. Relax them for :lang(ko) and stop the browser from synthesising
   a fake bold face. Do not adjust other weights: this block is the whole calibration. */
:lang(ko) body { font-weight: 400; font-synthesis-weight: none; }
:lang(ko) .site-card:not(.site-card-compact) .site-name-text { font-weight: 500 !important; }
:lang(ko) .site-card-compact .site-name-link,
:lang(ko) .site-card-compact .site-name-text { font-weight: 500 !important; }
:lang(ko) .site-card-compact .site-rank { font-weight: 500 !important; }
:lang(ko) .category-heading h2,
:lang(ko) .category-index-copy strong { font-weight: 600; }
:lang(ko) .see-all-link { font-weight: 550; }
:lang(ko) .review-directory-title h2,
:lang(ko) .prose-card h2 { font-weight: 600; }
:lang(ko) .button,
:lang(ko) button { font-weight: 600; }
