/* English uses SpaceX D-DIN Regular at every weight. D-DIN Bold is not used.
   Chinese stays PingFang SC / Hiragino Sans GB / Microsoft YaHei.
   Icon fonts are excluded. 2026-10-08. */
@font-face {
  font-family: "QM SpaceX DIN";
  src: url("fonts/D-DIN.woff2") format("woff2");
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  unicode-range: U+0000-024F, U+1E00-1EFF, U+2000-206F, U+20AC, U+2122, U+2190-21FF, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "QM SpaceX DIN Display";
  src: url("fonts/D-DIN.woff2") format("woff2");
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  unicode-range: U+0000-024F, U+1E00-1EFF, U+2000-206F, U+20AC, U+2122, U+2190-21FF, U+2212, U+2215, U+FEFF, U+FFFD;
}
html {
  --qm-english-text: "QM SpaceX DIN", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
  --qm-english-display: "QM SpaceX DIN Display", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
}
html body {
  font-family: var(--qm-english-text) !important;
}
html body :is(
  p, a, button, summary, dt, dd, li, label, input, textarea, select,
  small, time, em, strong, b, span, div, td, th, figcaption, blockquote,
  cite, abbr, h1, h2, h3, h4, h5, h6,
  section, article, main, header, footer, nav, ul, ol, figure, form, table, caption
):not(.eicon):not(.fa):not(.fas):not(.far):not(.fab):not(.fal):not(.ast-icon):not(.dashicons):not([class^="eicon-"]):not([class*=" eicon-"]):not([class^="fa-"]):not([class*=" fa-"]) {
  font-family: var(--qm-english-text) !important;
}
html body :is(
  h1, h2, h3, h4,
  .elementor-heading-title, .qmh-claim, .qm-hero-title, .qm-capability-title
):not(.eicon):not(.fa):not(.fas):not(.far):not(.fab):not(.fal):not(.ast-icon):not(.dashicons):not([class^="eicon-"]):not([class*=" eicon-"]):not([class^="fa-"]):not([class*=" fa-"]) {
  font-family: var(--qm-english-display) !important;
}
html body :is(h1, h2, h3, h4, .elementor-heading-title, .qmh-claim, .qm-hero-title, .qm-capability-title) :is(span, b, strong, em, a, small):not(.eicon):not(.fa):not(.fas):not(.far):not(.fab):not(.fal):not(.ast-icon):not(.dashicons):not([class^="eicon-"]):not([class*=" eicon-"]):not([class^="fa-"]):not([class*=" fa-"]) {
  font-family: var(--qm-english-display) !important;
}
html body #lcn :is(a, button, p, h1, h2, h3, h4, li, span, div, small, em, strong, b):not(.eicon):not(.fa):not(.fas):not(.far):not(.fab):not(.fal):not(.ast-icon):not(.dashicons):not([class^="eicon-"]):not([class*=" eicon-"]):not([class^="fa-"]):not([class*=" fa-"]) {
  font-family: var(--qm-english-text) !important;
}

/* ===== 2026-10-21 English weight hierarchy (SpaceX logic) =====
   SpaceX: D-DIN-Bold uppercase for h1/h2/nav/buttons/labels (letter-spacing .02em+),
   D-DIN Regular for body. Every rule needs html[data-qm-lang="en"]; Chinese untouched.
   Long strings (>48 chars, except h1) get [data-qm-en-long] from lincoln-nav.js and are never uppercased. */
@font-face {
  font-family: "QM DIN EN";
  src: url("fonts/D-DIN.woff2") format("woff2");
  font-weight: 100 500; font-style: normal; font-display: swap;
}
@font-face {
  font-family: "QM DIN EN";
  src: url("fonts/D-DIN-Bold.woff2") format("woff2");
  font-weight: 600 900; font-style: normal; font-display: swap;
}
html[data-qm-lang="en"] {
  --qm-english-text: "QM DIN EN", "Helvetica Neue", Arial, sans-serif;
  --qm-english-display: "QM DIN EN", "Helvetica Neue", Arial, sans-serif;
}
/* Astra sets body{text-transform:capitalize}; English body copy is sentence case (inherited only) */
html[data-qm-lang="en"] body { text-transform: none; }
/* body copy: regular 400, never thin */
html[data-qm-lang="en"]:not(#qx1):not(#qx2):not(#qx3):not(#qx4):not(#qx5):not(#qx6) body :is(p, li, dd, td, blockquote, figcaption, span, div, small, label, input, textarea) {
  font-weight: 400 !important;
}
/* headlines: bold uppercase, tight */
html[data-qm-lang="en"]:not(#qx1):not(#qx2):not(#qx3):not(#qx4):not(#qx5):not(#qx6) body :is(h1, h2, .qmh-claim, .qm-hero-title, .qm-capability-title),
html[data-qm-lang="en"]:not(#qx1):not(#qx2):not(#qx3):not(#qx4):not(#qx5):not(#qx6) body :is(h1, h2, .qmh-claim, .qm-hero-title, .qm-capability-title) :is(span, b, strong, em, a) {
  font-weight: 700 !important;
  text-transform: uppercase !important;
  letter-spacing: .02em !important;
  line-height: 1.05 !important;
}
/* sub-heads: bold, keep case */
html[data-qm-lang="en"]:not(#qx1):not(#qx2):not(#qx3):not(#qx4):not(#qx5):not(#qx6) body :is(h3, h4, h5, h6, strong, b, dt, th),
html[data-qm-lang="en"]:not(#qx1):not(#qx2):not(#qx3):not(#qx4):not(#qx5):not(#qx6) body :is(h3, h4, h5, h6) :is(span, a) {
  font-weight: 700 !important;
  letter-spacing: .01em !important;
}
/* nav, buttons, CTAs, eyebrows/labels: bold uppercase tracked */
html[data-qm-lang="en"]:not(#qx1):not(#qx2):not(#qx3):not(#qx4):not(#qx5):not(#qx6) body :is(nav, .elementor-nav-menu) :is(a, button, summary),
html[data-qm-lang="en"]:not(#qx1):not(#qx2):not(#qx3):not(#qx4):not(#qx5):not(#qx6) body :is(nav, .elementor-nav-menu) :is(a, button, summary) > span:not([aria-hidden="true"]),
html[data-qm-lang="en"]:not(#qx1):not(#qx2):not(#qx3):not(#qx4):not(#qx5):not(#qx6) body :is(.qac-nav-label, .qac-nav-main summary, .qac-nav-contact),
html[data-qm-lang="en"]:not(#qx1):not(#qx2):not(#qx3):not(#qx4):not(#qx5):not(#qx6) body :is(button, .elementor-button, .elementor-button-text, .ast-button, input[type="submit"], input[type="button"]),
html[data-qm-lang="en"]:not(#qx1):not(#qx2):not(#qx3):not(#qx4):not(#qx5):not(#qx6) body :is([class*="-btn"], [class*="btn-"], [class*="-button"], [class*="-cta"], [class*="cta-"]):not(footer *),
html[data-qm-lang="en"]:not(#qx1):not(#qx2):not(#qx3):not(#qx4):not(#qx5):not(#qx6) body :is(.qac-text-link, .hm-explore, .qmh-client-index-link, .qma-cta, .qh-more, .qm-lab-entry-link, .qm-evidence-footer a, .qm-capability-overview, .qm-system-link, .qa-home-link),
html[data-qm-lang="en"]:not(#qx1):not(#qx2):not(#qx3):not(#qx4):not(#qx5):not(#qx6) body :is([class*="eyebrow"], [class*="kicker"], [class*="overline"], .qma-eb, .qal-eb, .qmk-eb),
html[data-qm-lang="en"]:not(#qx1):not(#qx2):not(#qx3):not(#qx4):not(#qx5):not(#qx6) body :is(.qm-pill-cta, .qm-research-head a, #lcn .lcn-k, #lcn .lcn-t, #lcn .lcn-ul > li > a, #lcn .lcn-ul > li > a > span:not([aria-hidden="true"]), #lcn .lcn-card span, #lcn .lcn-pl, #lcn .lcn2-pt, #lcn .qmk-fk, #lcn .qmk-fl, #lcn .qmk-client-index),
html[data-qm-lang="en"]:not(#qx1):not(#qx2):not(#qx3):not(#qx4):not(#qx5):not(#qx6) body :is(button, .elementor-button, .qac-text-link, .hm-explore, .qmh-client-index-link, .qma-cta, .qh-more, .qm-lab-entry-link, .qm-evidence-footer a, .qm-capability-overview, .qm-system-link, .qa-home-link, .qm-research-head a, #lcn .qmk-fl) :is(span, b, strong, em):not([aria-hidden="true"]) {
  font-weight: 700 !important;
  text-transform: uppercase !important;
  letter-spacing: .08em !important;
}
/* top bar: bold uppercase, tighter tracking so 6 items fit beside the descriptor at 1280 */
html[data-qm-lang="en"]:not(#qx1):not(#qx2):not(#qx3):not(#qx4):not(#qx5):not(#qx6) body #lcn .lcn-bar :is(.lcn-link, .lcn-lb, .lcn-tools a, .lcn-tools button, .lcn-tools span) {
  font-weight: 700 !important;
  text-transform: uppercase !important;
  letter-spacing: .06em !important;
}
@media (max-width: 1399px) {
  html[data-qm-lang="en"]:not(#qx1):not(#qx2):not(#qx3):not(#qx4):not(#qx5):not(#qx6) body #lcn .lcn-bar .lcn-link { padding-left: 7px !important; padding-right: 7px !important; }
  html[data-qm-lang="en"]:not(#qx1):not(#qx2):not(#qx3):not(#qx4):not(#qx5):not(#qx6) body #lcn .lcn-bar :is(.lcn-link, .lcn-lb) { letter-spacing: .03em !important; }
}
/* mega panels: group heads bold uppercase, items + descriptions regular */
html[data-qm-lang="en"]:not(#qx1):not(#qx2):not(#qx3):not(#qx4):not(#qx5):not(#qx6) body #lcn :is(.qmk-gh, .qmk-ov, .qmk-eb, .qmk-ft) {
  font-weight: 700 !important; text-transform: uppercase !important; letter-spacing: .06em !important;
}
html[data-qm-lang="en"]:not(#qx1):not(#qx2):not(#qx3):not(#qx4):not(#qx5):not(#qx6) body #lcn :is(.qmk-it, .qmk-tag, .qmk-foot span, .qac-menu-panel a) {
  font-weight: 400 !important; text-transform: none !important; letter-spacing: .01em !important;
}
/* footer: headings bold, links regular (beats the nav rule: same specificity, later) */
html[data-qm-lang="en"]:not(#qx1):not(#qx2):not(#qx3):not(#qx4):not(#qx5):not(#qx6) body footer :is(h1, h2, h3, h4, h5, h6, .elementor-heading-title) { font-weight: 700 !important; text-transform: uppercase !important; letter-spacing: .06em !important; }
html[data-qm-lang="en"]:not(#qx1):not(#qx2):not(#qx3):not(#qx4):not(#qx5):not(#qx6) body footer :is(a, p, li, span, summary) { font-weight: 400 !important; text-transform: none !important; letter-spacing: .02em !important; }
/* keep the logo descriptor compact so it doesn't collide with the menu */
html[data-qm-lang="en"]:not(#qx1):not(#qx2):not(#qx3):not(#qx4):not(#qx5):not(#qx6) body #lcn .lcn-brand-descriptor,
html[data-qm-lang="en"]:not(#qx1):not(#qx2):not(#qx3):not(#qx4):not(#qx5):not(#qx6) body #lcn .lcn-brand-descriptor * { font-weight:400 !important; text-transform:none !important; letter-spacing:.02em !important; }
/* Elementor "heading" widgets used as paragraphs (<p>/<div>) stay body copy */
html[data-qm-lang="en"]:not(#qx1):not(#qx2):not(#qx3):not(#qx4):not(#qx5):not(#qx6) body :is(p, div, span).elementor-heading-title {
  font-weight: 400 !important; text-transform: none !important; letter-spacing: .01em !important; line-height: 1.6 !important;
}
/* long strings flagged by lincoln-nav.js: never uppercase (weight stays) */
html[data-qm-lang="en"]:not(#qx1):not(#qx2):not(#qx3):not(#qx4):not(#qx5):not(#qx6) body [data-qm-en-long],
html[data-qm-lang="en"]:not(#qx1):not(#qx2):not(#qx3):not(#qx4):not(#qx5):not(#qx6) body [data-qm-en-long] :is(span, b, strong, em, a) {
  text-transform: none !important; letter-spacing: .01em !important;
}
/* 2026-10-22: page redesign files (.qma modular, e.g. media) force 500/600; English headings stay bold */
html[data-qm-lang="en"]:not(#qx1):not(#qx2):not(#qx3):not(#qx4):not(#qx5):not(#qx6) body #page #content :is(.qma, .qa-modular) :is(h1, h2, h3, h4, .qma-num, .qma-eb, .qma-cta),
html[data-qm-lang="en"]:not(#qx1):not(#qx2):not(#qx3):not(#qx4):not(#qx5):not(#qx6) body #page #content :is(.qma, .qa-modular) :is(h1, h2) :is(span, b, strong, em, a) {
  font-weight: 700 !important;
}
/* 2026-10-22 CTA pass: SpaceX buttons/text-links = D-DIN-Bold, uppercase, tracked. Page CSS forces 400/500, so extra specificity. */
html[data-qm-lang="en"]:not(#qy1):not(#qy2):not(#qy3):not(#qy4):not(#qy5):not(#qy6):not(#qy7):not(#qy8):not(#qy9):not(#qy10) body :is(
  .ipx-btn, .ip-button, .ip-field-link, .qac-text-link, .qmm-text-link, .sr-text-link, .qi-link, .qlp-link, .qa-more, .qsc-directory, .qsc-bottom a, .qma-back a, .qma-cta,
  [class*="-actions"] > a, [class*="-acts"] > a, [class*="text-link"], [class*="-btn"]:is(a, button), [class*="-button"]:is(a, button)
):not(footer *):not(.skip-link),
html[data-qm-lang="en"]:not(#qy1):not(#qy2):not(#qy3):not(#qy4):not(#qy5):not(#qy6):not(#qy7):not(#qy8):not(#qy9):not(#qy10) body :is(
  .ipx-btn, .ip-button, .ip-field-link, .qac-text-link, .qmm-text-link, .sr-text-link, .qi-link, .qlp-link, .qa-more, .qsc-directory, .qsc-bottom a, .qma-back a, .qma-cta,
  [class*="-actions"] > a, [class*="-acts"] > a, [class*="text-link"], [class*="-btn"]:is(a, button), [class*="-button"]:is(a, button)
):not(footer *):not(.skip-link) :is(span, b, strong, em):not([aria-hidden="true"]) {
  font-weight: 700 !important;
  letter-spacing: .06em !important;
}
html[data-qm-lang="en"]:not(#qy1):not(#qy2):not(#qy3):not(#qy4):not(#qy5):not(#qy6):not(#qy7):not(#qy8):not(#qy9):not(#qy10) body :is(
  .ipx-btn, .ip-button, .ip-field-link, .qac-text-link, .qmm-text-link, .sr-text-link, .qi-link, .qlp-link, .qa-more, .qsc-directory, .qsc-bottom a, .qma-back a, .qma-cta,
  [class*="-actions"] > a, [class*="-acts"] > a, [class*="text-link"], [class*="-btn"]:is(a, button), [class*="-button"]:is(a, button)
):not(footer *):not(.skip-link):not([data-qm-en-long]) { text-transform: uppercase !important; }
/* innovation-projects closing links + FAQ/fold questions: bold (questions keep sentence case) */
html[data-qm-lang="en"]:not(#qy1):not(#qy2):not(#qy3):not(#qy4):not(#qy5):not(#qy6):not(#qy7):not(#qy8):not(#qy9):not(#qy10) body :is(.ip-specialist-grid, .ip-closing-grid, [class*="ip-"][class*="-grid"]) > div > a:last-child {
  font-weight: 700 !important; letter-spacing: .06em !important; text-transform: uppercase !important;
}
html[data-qm-lang="en"]:not(#qy1):not(#qy2):not(#qy3):not(#qy4):not(#qy5):not(#qy6):not(#qy7):not(#qy8):not(#qy9):not(#qy10) body :is([class*="faq"], [class*="fold"], details) > summary, html[data-qm-lang="en"]:not(#qy1):not(#qy2):not(#qy3):not(#qy4):not(#qy5):not(#qy6):not(#qy7):not(#qy8):not(#qy9):not(#qy10) body :is([class*="faq"], [class*="fold"], details) > summary :is(span, b, strong, em):not([aria-hidden="true"]) {
  font-weight: 700 !important; letter-spacing: .01em !important;
}
