/* Shared type rules: one bilingual rhythm across every MOKE AIGC page. */
:root {
  font-synthesis: none;
  text-rendering: optimizeLegibility;
}

html {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
  /* Keep content width stable while asynchronous panels change page height. */
  scrollbar-gutter: stable;
}

@supports not (scrollbar-gutter: stable) {
  html { overflow-y: scroll; }
}

body,
button,
input,
textarea,
select {
  font-family: "Noto Sans SC", "PingFang SC", "Hiragino Sans GB", "Helvetica Neue", sans-serif;
  font-kerning: normal;
}

/* Avoid the different visual widths caused by page-specific tracking. */
body * {
  letter-spacing: 0 !important;
}

/* Compact editorial hierarchy: titles stay present without taking over the page. */
body h1 {
  font-size: clamp(34px, 7.6vw, 112px) !important;
}

body .hero-title {
  font-size: clamp(34px, 7vw, 112px) !important;
}

body .article-header h2 {
  font-size: clamp(30px, 5.2vw, 68px) !important;
}

body .features-head h2 {
  font-size: clamp(22px, 3.2vw, 40px) !important;
}

body .page-panel h3 {
  font-size: clamp(24px, 3.8vw, 44px) !important;
}

body .section-head h2,
body .strip-head h2,
body .library-head h2 {
  font-size: clamp(22px, 2.6vw, 38px) !important;
}

body .card h2,
body .body h2 {
  font-size: clamp(18px, 2vw, 30px) !important;
}

body .block h3 {
  font-size: clamp(22px, 2.8vw, 42px) !important;
}

body .feature-card h3,
body .skill-card h3 {
  font-size: 23px !important;
}

@media (max-width: 680px) {
  html { font-size: 15px; }
}
