/* Shared type scale, loaded after page styles on every public route. */
:root {
  --font-text: "Microsoft YaHei", "PingFang SC", "Noto Sans CJK SC", sans-serif;
  --font-number: var(--font-text);
  --type-display: clamp(36px, 4.5vw, 64px);
  --type-section: clamp(28px, 3.2vw, 44px);
  --type-card: clamp(20px, 1.8vw, 24px);
  --type-body: 15px;
  --type-small: 13px;
}
/* Keep all page components and CMS inline text in the shared typeface. */
body, body *, body *::before, body *::after {
  font-family: var(--font-text) !important;
}
body {
  font-family: var(--font-text);
  font-size: var(--type-body);
  line-height: 1.8;
  font-weight: 400;
  font-kerning: normal;
  font-variant-numeric: lining-nums;
}
button, input, select, textarea { font-family: var(--font-text); }
h1, h2, h3, h4, h5, h6 {
  font-family: var(--font-text);
  font-weight: 600;
  letter-spacing: 0;
  line-height: 1.4;
  text-wrap: balance;
}
.hero-copy h1, .cms-hero .hero-copy h2, .page-hero h1 {
  font-size: var(--type-display);
  font-weight: 600;
  line-height: 1.25;
  letter-spacing: .01em;
}
.article-hero h1 { font-size: clamp(30px, 3.5vw, 48px); line-height: 1.4; letter-spacing: 0; }
/* CMS emphasis should not make page banner titles heavier than the heading. */
.page-hero h1, .page-hero h1 * { font-weight: 600 !important; }
.page-breadcrumb, .article-breadcrumb { font-size: 18px; font-weight: 500; line-height: 1.7; }
.section-heading h2, .capability-copy h2, .about-copy h2, .contact-copy h2,
.company-story h2, .annotation-layout h2, .clients-heading h2, .page-cta h2 {
  font-size: var(--type-section);
  font-weight: 600;
  line-height: 1.35;
  letter-spacing: .01em;
}
.product-copy h3 { font-size: clamp(26px, 2.6vw, 36px); line-height: 1.4; letter-spacing: 0; }
.news-card h3, .solution-copy h3, .cms-section .solution-card h3,
.cms-center-card h3, .cms-news-list-copy h3, .solution-detail-card h2 {
  font-size: var(--type-card);
  font-weight: 600;
  line-height: 1.5;
  letter-spacing: 0;
}
.cms-scene-card h3 { font-weight: 600; }
.hero-copy > p, .hero-copy > .cms-rich-text,
.page-hero-inner > p, .page-hero-inner > .cms-rich-text {
  font-size: clamp(16px, 1.3vw, 18px);
  line-height: 1.9;
}
.section-heading > p, .section-heading > .cms-rich-text,
.product-copy > p, .product-copy > .cms-rich-text,
.cms-center-card-copy > p, .cms-center-card-copy > .cms-rich-text {
  font-size: var(--type-body);
  line-height: 1.85;
}
.main-nav > a, .nav-product-trigger { font-size: 14px; font-weight: 500; line-height: 1.5; }
.button, .text-link, .product-tabs button, .cms-center-categories button { font-size: 14px; font-weight: 600; letter-spacing: 0; line-height: 1.5; }
.product-popover { font-family: "Microsoft YaHei", sans-serif; }
.product-popover-intro > span { font-size: 12px; line-height: 1.6; }
.product-popover-intro h3 { font-size: 24px; line-height: 1.5; }
.product-popover-intro p, .product-category-grid a { font-size: 16px; line-height: 1.8; }
.product-popover-intro ul { font-size: 15px; line-height: 1.8; }
.product-popover-intro > a { font-size: 16px; line-height: 1.6; }
.product-category-grid h3,
.product-category-grid .cms-menu-group > a,
.product-category-grid .cms-menu-group > .cms-menu-label { font-size: 18px; font-weight: 600; line-height: 1.6; }
.product-category-grid a { min-height: 36px; }
.product-category-grid .hot { font-size: 11px; line-height: 1.4; }
/* Card titles no longer reserve a row for decorative sequence numbers. */
.cms-feature-grid .flight-module-card h3,
.flight-module-card h3,
.annotation-feature-grid h3,
.annotation-steps h3 { margin-top: 0; }
.flight-module-card > div + h3 { margin-top: 20px; }
.news-meta, .article-meta, .footer-bottom, .form-status { font-size: var(--type-small); line-height: 1.7; }
/* Footer typography applies to both static and CMS-rendered navigation. */
.site-footer { font-size: 14px; line-height: 1.8; }
.site-footer .brand-copy strong { font-size: 20px; font-weight: 600; line-height: 1.4; letter-spacing: .04em; }
.site-footer .brand-copy small { font-size: 11px; font-weight: 400; line-height: 1.5; letter-spacing: .12em; }
.site-footer .footer-top > div > p { font-size: 14px; line-height: 1.8; }
.site-footer .footer-links strong,
.site-footer .footer-links .cms-menu-group > a,
.site-footer .footer-links .cms-menu-group > .cms-menu-label {
  font-size: 16px; font-weight: 600; line-height: 1.5; letter-spacing: .02em;
}
.site-footer .footer-links a { font-size: 14px; font-weight: 400; line-height: 1.8; }
.site-footer .footer-social figcaption { font-size: 14px; font-weight: 500; line-height: 1.7; }
.site-footer .footer-social-image span { font-size: 14px; line-height: 1.7; }
.site-footer .footer-bottom { font-size: 13px; line-height: 1.8; }
.article-body, .article-body p, .article-body li { font-size: 16px; line-height: 1.95; }
.article-body h2 { font-size: clamp(24px, 2.4vw, 30px); line-height: 1.45; letter-spacing: 0; }
.article-body h3 { font-size: 22px; line-height: 1.5; }
.article-body p { margin-bottom: 1.4em; }
.cms-rich-text h2, .cms-rich-text h3 { letter-spacing: 0; }
/* Proportional body text; aligned, open and consistent figures for data. */
time, .news-list-date, .news-list-date strong, .news-list-date span,
.cms-news-list-card .news-list-date strong, .cms-history time,
.cms-product-timeline time, .cms-milestone-icon, .cms-card-index, .card-number,
.console-stats strong, .flight-status strong, .model-meta strong,
.model-orbit strong, .data-core, .section-index {
  font-family: var(--font-number);
  font-variant-numeric: lining-nums tabular-nums;
  letter-spacing: .02em;
}
.news-list-date strong, .cms-news-list-card .news-list-date strong { font-size: 34px; font-weight: 600; line-height: 1.1; }
.news-list-date span { font-size: 12px; line-height: 1.5; }
.cms-history time, .cms-product-timeline time { font-size: 15px; font-weight: 600; line-height: 1.5; }
.console-bar, .view-meta, .model-head, .detect-box span,
.strip-title, .solution-top span, .pipeline article small, .dark-card small {
  font-family: var(--font-text);
  font-variant-numeric: lining-nums tabular-nums;
}
.console-stats strong, .flight-status strong, .model-meta strong { font-size: 12px; line-height: 1.4; }
.solution-feature-list { width: 100%; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.solution-feature-list span { min-width: 0; font-size: 15px; line-height: 1.7; }
.solution-tags b { font-size: 14px; line-height: 1.5; padding: 8px 12px; }
/* Feature labels and capability icons share a readable scale across pages. */
.hero-features, .capability-strip > div span, .product-points span,
.solution-feature-list span, .annotation-chips span, .cms-format-list span,
.integration-support li, .card-tag, .flight-support > span {
  font-size: 15px;
  line-height: 1.7;
}
.hero-features { gap: 14px 24px; }
.hero-features span, .capability-strip > div span, .product-points span,
.solution-feature-list span { gap: 10px; min-width: 0; }
.hero-features b, .product-points span::before, .solution-feature-list span::before {
  width: 6px; height: 6px; flex: 0 0 6px;
}
.capability-strip > div { flex-wrap: wrap; gap: 16px 28px; }
.capability-strip svg, .product-tabs button svg {
  width: 20px; height: 20px; flex: 0 0 20px; stroke-width: 1.8;
}
.hero-features svg, .product-points svg, .solution-feature-list svg,
.annotation-chips svg { width: 20px; height: 20px; flex: 0 0 20px; }
@media (max-width: 600px) {
  .article-body, .article-body p, .article-body li { font-size: 15px; }
  .main-nav > a, .nav-product-trigger { font-size: 14px; }
}
