/* Fulmor typography system v1
 * Loaded after every theme and section stylesheet.
 * Uses local system fonts only: no font request, no layout shift, no licence risk.
 */

:root {
  --fulmor-font-sans: "DengXian", "等线", "Avenir Next", Avenir, "Helvetica Neue", Helvetica, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --fulmor-font-ja: "DengXian", "等线", "Hiragino Sans", "Hiragino Kaku Gothic ProN", "Yu Gothic UI", "Yu Gothic", Meiryo, "Noto Sans JP", "Avenir Next", sans-serif;
  --fulmor-font-mono: ui-monospace, "SFMono-Regular", Menlo, Monaco, Consolas, "Liberation Mono", monospace;

  --fulmor-weight-regular: 400;
  --fulmor-weight-medium: 500;
  --fulmor-weight-semibold: 600;
  --fulmor-weight-bold: 700;

  --fulmor-type-body: 1rem;
  --fulmor-type-small: .875rem;
  --fulmor-type-ui: .8125rem;
  --fulmor-type-label: .75rem;
  --fulmor-leading-body: 1.65;
  --fulmor-leading-small: 1.55;
  --fulmor-leading-ui: 1.35;
  --fulmor-tracking-display: -.04em;
  --fulmor-tracking-heading: -.025em;
  --fulmor-tracking-ui: .07em;
  --fulmor-tracking-label: .09em;

  /* Horizon / native Shopify pages */
  --font-body--family: var(--fulmor-font-sans);
  --font-subheading--family: var(--fulmor-font-sans);
  --font-heading--family: var(--fulmor-font-sans);
  --font-accent--family: var(--fulmor-font-sans);
  --font-paragraph--family: var(--fulmor-font-sans);
  --font-body--style: normal;
  --font-subheading--style: normal;
  --font-heading--style: normal;
  --font-accent--style: normal;
  --font-paragraph--style: normal;
  --font-body--weight: 400;
  --font-subheading--weight: 500;
  --font-heading--weight: 400;
  --font-accent--weight: 600;
  --font-paragraph--weight: 400;
  --font-paragraph--size: 1rem;
  --font-paragraph--line-height: 1.65;
  --font-size--paragraph: 1rem;
  --font-size--body-md: 1rem;
  --font-size--3xs: .75rem;
  --font-size--2xs: .75rem;
  --font-size--xs: .8125rem;
  --font-h1--weight: 400;
  --font-h2--weight: 400;
  --font-h3--weight: 500;
  --font-h4--weight: 500;
  --font-h5--weight: 600;
  --font-h6--weight: 600;
  --letter-spacing--display-tight: -.04em;
  --letter-spacing--heading-tight: -.025em;
}

html {
  -webkit-text-size-adjust: 100%;
  font-family: var(--fulmor-font-sans);
  font-kerning: normal;
  text-rendering: optimizeLegibility;
}

body,
button,
input,
select,
textarea {
  font-family: var(--fulmor-font-sans);
}

button,
input,
select,
textarea {
  font: inherit;
}

body {
  font-size: var(--fulmor-type-body);
  font-weight: var(--fulmor-weight-regular);
  line-height: var(--fulmor-leading-body);
}

body :is(h1, h2) {
  font-family: var(--fulmor-font-sans);
  font-weight: var(--fulmor-weight-regular);
}

body :is(h3, h4) {
  font-family: var(--fulmor-font-sans);
  font-weight: var(--fulmor-weight-medium);
}

body :is(h5, h6, button, .button) {
  font-family: var(--fulmor-font-sans);
  font-weight: var(--fulmor-weight-semibold);
}

body :is(strong, b) {
  font-weight: var(--fulmor-weight-semibold);
}

/* Native Shopify pages in Japanese also need an explicit Japanese family on
 * text elements because Horizon assigns font-family directly to headings and
 * controls instead of relying only on body inheritance. */
html[lang^="ja"] body {
  font-family: var(--fulmor-font-ja) !important;
  line-height: 1.8;
}

html[lang^="ja"] body :is(
  h1, h2, h3, h4, h5, h6,
  p, a, span, small, strong, b, em,
  li, dt, dd, th, td,
  label, legend, summary,
  button, input, select, textarea
) {
  font-family: var(--fulmor-font-ja) !important;
}

html[lang^="ja"] body :is(h1, h2, h3, h4, h5, h6) {
  letter-spacing: .01em !important;
  line-height: 1.18 !important;
  text-transform: none !important;
}

html[lang^="ja"] body :is(nav a, button, label, legend, summary) {
  letter-spacing: .02em !important;
  text-transform: none !important;
}

body :is(.price, [class*="price"], [class*="metric"], [class*="counter"], [class*="stat"]) {
  font-variant-numeric: tabular-nums lining-nums;
}

/* Shared custom-page foundation. Reset legacy fractional weights, then restore
 * a deliberate 400 / 500 / 600 / 700 hierarchy below. */
:is(.home-page, .order-conversion-page.product-order-page, .fulmor-reference-page, .fulmor-subpage-v2),
:is(.home-page, .order-conversion-page.product-order-page, .fulmor-reference-page, .fulmor-subpage-v2) * {
  font-weight: var(--fulmor-weight-regular) !important;
}

:is(.home-page, .order-conversion-page.product-order-page, .fulmor-reference-page, .fulmor-subpage-v2) {
  font-family: var(--fulmor-font-sans) !important;
  font-size: var(--fulmor-type-body);
  line-height: var(--fulmor-leading-body);
}

:is(.home-page, .order-conversion-page.product-order-page, .fulmor-reference-page, .fulmor-subpage-v2) :is(h1, h2) {
  font-family: var(--fulmor-font-sans) !important;
  font-weight: var(--fulmor-weight-regular) !important;
  letter-spacing: var(--fulmor-tracking-display) !important;
}

:is(.home-page, .order-conversion-page.product-order-page, .fulmor-reference-page, .fulmor-subpage-v2) :is(h3, h4) {
  font-family: var(--fulmor-font-sans) !important;
  font-weight: var(--fulmor-weight-medium) !important;
  letter-spacing: var(--fulmor-tracking-heading) !important;
}

:is(.home-page, .order-conversion-page.product-order-page, .fulmor-reference-page, .fulmor-subpage-v2) :is(h5, h6) {
  font-family: var(--fulmor-font-sans) !important;
  font-weight: var(--fulmor-weight-semibold) !important;
  letter-spacing: -.01em !important;
}

:is(.home-page, .order-conversion-page.product-order-page, .fulmor-reference-page, .fulmor-subpage-v2) :is(strong, b) {
  font-weight: var(--fulmor-weight-semibold) !important;
}

:is(.home-page, .order-conversion-page.product-order-page, .fulmor-reference-page, .fulmor-subpage-v2) :is(
  button,
  [class*="button"],
  [class*="submit"],
  nav a,
  label > span,
  summary,
  [class*="-cta"],
  [class*="__order"]
) {
  font-weight: var(--fulmor-weight-semibold) !important;
}

:is(.home-page, .order-conversion-page.product-order-page, .fulmor-reference-page, .fulmor-subpage-v2) :is(p, li, dd) {
  line-height: var(--fulmor-leading-body);
}

:is(.home-page, .order-conversion-page.product-order-page, .fulmor-reference-page, .fulmor-subpage-v2) sub {
  font-size: max(.75em, 12px) !important;
  line-height: 0;
}

/* English display and interface rhythm */
:is(.home-page, .order-conversion-page.product-order-page, .fulmor-reference-page, .fulmor-subpage-v2):not([lang^="ja"]) h1 {
  letter-spacing: -.04em !important;
}

:is(.home-page, .order-conversion-page.product-order-page, .fulmor-reference-page, .fulmor-subpage-v2):not([lang^="ja"]) h2 {
  letter-spacing: -.035em !important;
}

:is(.home-page, .order-conversion-page.product-order-page, .fulmor-reference-page, .fulmor-subpage-v2):not([lang^="ja"]) h3 {
  letter-spacing: -.02em !important;
}

:is(.home-page, .order-conversion-page.product-order-page, .fulmor-reference-page, .fulmor-subpage-v2):not([lang^="ja"]) :is(
  nav a,
  button,
  [class*="button"],
  [class*="eyebrow"],
  [class*="kicker"],
  [class*="micro-label"],
  label > span
) {
  letter-spacing: var(--fulmor-tracking-ui) !important;
}

/* Japanese: use native Japanese glyphs and spacing instead of English display
 * rules. This intentionally removes monospace from Japanese sentences. */
html[lang^="ja"],
html[lang^="ja"] body,
html[lang^="ja"] button,
html[lang^="ja"] input,
html[lang^="ja"] select,
html[lang^="ja"] textarea,
:is(.home-page, .order-conversion-page.product-order-page, .fulmor-reference-page, .fulmor-subpage-v2)[lang^="ja"],
:is(.home-page, .order-conversion-page.product-order-page, .fulmor-reference-page, .fulmor-subpage-v2)[lang^="ja"] * {
  font-family: var(--fulmor-font-ja) !important;
  letter-spacing: 0 !important;
  text-transform: none !important;
}

:is(.home-page, .order-conversion-page.product-order-page, .fulmor-reference-page, .fulmor-subpage-v2)[lang^="ja"] {
  line-break: strict;
  overflow-wrap: break-word;
  word-break: normal;
}

:is(.home-page, .order-conversion-page.product-order-page, .fulmor-reference-page, .fulmor-subpage-v2)[lang^="ja"] :is(h1, h2, h3, h4, h5, h6) {
  font-feature-settings: "palt" 1;
  font-weight: var(--fulmor-weight-regular) !important;
  letter-spacing: .01em !important;
  line-height: 1.16 !important;
  text-transform: none !important;
}

:is(.home-page, .order-conversion-page.product-order-page, .fulmor-reference-page, .fulmor-subpage-v2)[lang^="ja"] :is(p, li, dd) {
  letter-spacing: .01em !important;
  line-height: 1.8;
}

:is(.home-page, .order-conversion-page.product-order-page, .fulmor-reference-page, .fulmor-subpage-v2)[lang^="ja"] :is(
  nav a,
  button,
  [class*="button"],
  [class*="submit"],
  [class*="eyebrow"],
  [class*="kicker"],
  [class*="micro-label"],
  [class*="language"],
  [class*="-cta"],
  [class*="__order"],
  label > span
) {
  font-weight: var(--fulmor-weight-semibold) !important;
  letter-spacing: .02em !important;
  text-transform: none !important;
}

/* Consistent controls. 16px prevents iOS input zoom. */
:is(.home-page, .order-conversion-page.product-order-page, .fulmor-reference-page, .fulmor-subpage-v2) :is(input, select, textarea) {
  font-family: inherit !important;
  font-size: 1rem !important;
  font-weight: var(--fulmor-weight-regular) !important;
  letter-spacing: 0 !important;
  line-height: 1.5 !important;
}

:is(.home-page, .order-conversion-page.product-order-page, .fulmor-reference-page, .fulmor-subpage-v2) :is(label > span, .variant-selector label, .quantity-row label) {
  font-size: .8125rem !important;
  font-weight: var(--fulmor-weight-semibold) !important;
  letter-spacing: .06em !important;
  line-height: 1.4 !important;
}

:is(.home-page, .order-conversion-page.product-order-page, .fulmor-reference-page, .fulmor-subpage-v2) :is(
  button,
  [class*="button"],
  [class*="submit"],
  [class*="-cta"],
  [class*="__order"]
) {
  font-size: max(.8125rem, 12px);
  line-height: var(--fulmor-leading-ui);
}

/* Home */
.home-page :is(.site-header nav a, .header-cta, .language-link, footer a) {
  font-size: .8125rem !important;
  letter-spacing: .07em !important;
}

.home-page :is(
  .hero-system-mark span,
  .hero-system-mark strong,
  .micro-label,
  .hero-trust-line,
  .hero-meta dt,
  .section-number,
  .mode-list dt span,
  .mode-list small,
  .callout span,
  .callout small,
  .science-grid article > div > span,
  .benefit-index,
  .use-steps article > span,
  .highlight-grid article > span,
  .included-list span,
  .scenario-counter,
  .scenario-active-copy > span,
  .scenario-tabs button span,
  .spec-index,
  .spec-list > div > span:not(.spec-index),
  .final-proofs span,
  .final-system-mark span,
  .final-system-mark strong,
  .faq-visual figcaption span,
  .site-footer > span
) {
  font-size: .75rem !important;
  letter-spacing: .09em !important;
  line-height: 1.45 !important;
}

.home-page .inline-link {
  font-size: .8125rem !important;
  letter-spacing: .07em !important;
}

.home-page .benefits-footer a {
  font-size: .8125rem !important;
  font-weight: var(--fulmor-weight-semibold) !important;
  letter-spacing: .07em !important;
  line-height: var(--fulmor-leading-ui) !important;
}

.home-page.locale-ja :is(
  .primary-button,
  .inline-link,
  .hero-trust-line,
  .hero-meta dt,
  .mode-list dt span,
  .mode-list small,
  .callout span,
  .callout small,
  .benefit-index,
  .benefits-footer a,
  .scenario-tabs button span,
  .final-proofs span
) {
  font-family: var(--fulmor-font-ja) !important;
  letter-spacing: .02em !important;
  text-transform: none !important;
}

/* Product / order */
.order-conversion-page.product-order-page :is(
  .nav-links a,
  .order-language-link,
  .order-header-cta,
  .order-mobile-menu-toggle,
  .order-mobile-menu-links a
) {
  font-size: .8125rem !important;
  letter-spacing: .07em !important;
}

.order-conversion-page.product-order-page :is(
  .order-breadcrumb,
  .checkout-options summary > span,
  .eyebrow,
  .section-kicker,
  .checkout-price-row > div > span,
  .variant-availability,
  .order-unavailable-card > span,
  .checkout-option > span,
  .checkout-option > small,
  .checkout-trust-grid span,
  .product-info-panels article > span,
  .checkout-benefits article > span,
  .order-structure-legend span,
  .order-structure-legend b,
  .checkout-spec-table dt,
  .checkout-flow-grid article > span,
  .footer
) {
  font-size: .75rem !important;
  letter-spacing: .08em !important;
  line-height: 1.45 !important;
}

.order-conversion-page.product-order-page .button {
  font-size: .8125rem !important;
  letter-spacing: .07em !important;
}

.order-conversion-page.product-order-page.locale-ja :is(
  .nav-links a,
  .order-header-cta,
  .order-mobile-menu-toggle,
  .order-mobile-menu-links a,
  .order-breadcrumb,
  .eyebrow,
  .section-kicker,
  .order-structure-legend span
) {
  letter-spacing: .02em !important;
  text-transform: none !important;
}

/* Partner / Community / Support */
.fulmor-reference-page :is(.frp-nav a, .frp-language a, .frp-order-link) {
  font-size: .8125rem !important;
  letter-spacing: .07em !important;
}

.fulmor-reference-page :is(
  .frp-eyebrow,
  .frp-business-form label > span,
  .frp-topic-form label > span,
  .frp-article-grid article > span,
  .frp-article-grid small,
  .frp-article-dialog__type,
  .frp-research-library a > span,
  .frp-search-hint,
  .frp-footer p,
  small
) {
  font-size: .75rem !important;
  letter-spacing: .08em !important;
  line-height: 1.5 !important;
}

.fulmor-reference-page :is(.frp-hero-product figcaption span, .frp-hero-product figcaption strong) {
  font-size: .75rem !important;
  letter-spacing: .07em !important;
  line-height: 1.4 !important;
}

.fulmor-reference-page :is(.frp-submit, .frp-tabs button, .frp-support-cta a) {
  font-size: .8125rem !important;
  font-weight: var(--fulmor-weight-semibold) !important;
  letter-spacing: .06em !important;
}

.fulmor-reference-page[lang^="ja"] :is(
  .frp-nav a,
  .frp-language a,
  .frp-order-link,
  .frp-eyebrow,
  .frp-tabs button,
  .frp-article-grid article > span,
  .frp-submit
) {
  letter-spacing: .02em !important;
  text-transform: none !important;
}

/* About and policy pages */
.fulmor-subpage-v2 :is(
  .fulmor-subnav__links > a,
  .fulmor-subnav__language,
  .fulmor-subnav__order,
  .fulmor-subfooter nav a
) {
  font-size: .8125rem !important;
  letter-spacing: .07em !important;
}

.fulmor-subpage-v2 :is(
  .fulmor-subeyebrow,
  .fulmor-submetrics span,
  .fulmor-subcards article > span,
  .fulmor-subhero__visual figcaption > span,
  .fulmor-subfooter p,
  .fulmor-subfooter > div > span,
  .fulmor-subdetail__visual figcaption span,
  .fulmor-subdetail__visual figcaption strong,
  .fulmor-shipping-route small,
  .fulmor-shipping-route b,
  .fulmor-subdetail__copy li > span,
  .fulmor-policy-signal__core span,
  .fulmor-policy-signal__core em,
  .fulmor-policy-signal__rail i,
  .fulmor-warranty-mark__seal strong,
  .fulmor-warranty-mark__seal em,
  .fulmor-warranty-mark__note,
  .fulmor-privacy-flow__core span,
  .fulmor-privacy-flow__core em,
  .fulmor-privacy-flow__node,
  .fulmor-terms-framework__core span,
  .fulmor-terms-framework__core em,
  .fulmor-terms-framework__node
) {
  font-size: .75rem !important;
  letter-spacing: .07em !important;
  line-height: 1.4 !important;
}

.fulmor-subpage-v2 :is(.fulmor-subbutton, .fulmor-subform button) {
  font-size: .8125rem !important;
  letter-spacing: .07em !important;
}

.fulmor-subpage-v2 .fulmor-policy-signal__rail i {
  width: 46px;
  height: 34px;
}

.fulmor-subpage-v2 .fulmor-warranty-mark__seal {
  inset: 26%;
}

.fulmor-subpage-v2 :is(.fulmor-privacy-flow__core, .fulmor-terms-framework__core) {
  inset: 29%;
}

.fulmor-subpage-v2 :is(.fulmor-warranty-mark__note, .fulmor-privacy-flow__node, .fulmor-terms-framework__node) {
  min-width: 88px;
}

.fulmor-subpage-v2[lang^="ja"] :is(
  .fulmor-subnav__links > a,
  .fulmor-subnav__language,
  .fulmor-subnav__order,
  .fulmor-subfooter nav a,
  .fulmor-subeyebrow,
  .fulmor-subbutton
) {
  letter-spacing: .02em !important;
  text-transform: none !important;
}

/* Independent theme entry points: storefront password and gift card. */
:is(.password-main-content, .password-dialog, .gift-card) {
  font-family: var(--fulmor-font-sans) !important;
  font-size: 1rem;
  line-height: 1.65;
}

:is(.password-main-content, .password-dialog, .gift-card) :is(button, input, select, textarea) {
  font-family: inherit !important;
}

:is(.password-main-content, .password-dialog) :is(input, select, textarea) {
  font-size: 1rem !important;
}

.gift-card :is(.gift-card__badge, .form__message) {
  font-size: .75rem;
  line-height: 1.5;
}

.gift-card .button {
  font-size: .8125rem;
  font-weight: var(--fulmor-weight-semibold);
}

/* Native Shopify pages: readable floor for utility and legal text. */
body:not(:has(.home-page, .product-order-page, .fulmor-reference-page, .fulmor-subpage-v2)) :is(
  small,
  .caption,
  [class*="caption"],
  [class*="fine-print"],
  [class*="tax-note"],
  [class*="payment-terms"]
) {
  font-size: .75rem;
  line-height: 1.55;
}

@media (max-width: 760px) {
  input,
  select,
  textarea {
    font-size: 1rem !important;
  }

  .home-page :is(.site-header nav a, .header-cta, .language-link),
  .order-conversion-page.product-order-page :is(.order-language-link, .order-header-cta, .order-mobile-menu-toggle),
  .fulmor-reference-page :is(.frp-language a, .frp-order-link),
  .fulmor-subpage-v2 :is(.fulmor-subnav__language, .fulmor-subnav__order) {
    font-size: .75rem !important;
    letter-spacing: .05em !important;
  }

  :is(.home-page, .order-conversion-page.product-order-page, .fulmor-reference-page, .fulmor-subpage-v2)[lang^="ja"] h1 {
    font-size: clamp(2.25rem, 10.2vw, 2.75rem) !important;
    line-height: 1.15 !important;
  }

  :is(.home-page, .order-conversion-page.product-order-page, .fulmor-reference-page, .fulmor-subpage-v2)[lang^="ja"] h2 {
    line-height: 1.2 !important;
  }

  .fulmor-subpage-v2 :is(.fulmor-warranty-mark__note, .fulmor-privacy-flow__node, .fulmor-terms-framework__node) {
    min-width: 78px;
    padding: 8px 6px;
    font-size: .75rem !important;
  }
}

@media (max-width: 599px) {
  .fulmor-reference-page[lang^="ja"] .frp-research-article__header h1 {
    font-size: 34px !important;
    line-height: 1.1 !important;
  }
}
