/**
 * Base typography
 *
 * Reproduces the global type rules from the mockup's <helmet><style> block,
 * expressed through tokens. Component-level type (product titles, footer
 * headings, badges) lives in the component files, not here.
 *
 * @package Printmania
 */

/* Running text fills its lines. ACSS defaults body, p and li to
   text-wrap: pretty, which pulls the last words of a paragraph onto the next
   line and leaves a ragged gap; headings keep ACSS's own setting. */
:root {
	--text-text-wrap: wrap;
}

/* Original: the mockup's global body rule — the display font stack,
   plus colour, line-height, tracking and antialiasing — all tokenized below. */
body {
	font-family: var( --font-body );
	font-size: var( --text-base );
	line-height: var( --lh-body );
	letter-spacing: var( --ls-body );
	color: var( --color-text );
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}

h1,
h2,
h3,
h4,
h5,
h6 {
	margin: 0;
	font-family: var( --font-display );
	font-weight: var( --fw-black );
	color: inherit;
}

h1 {
	font-size: var( --text-display-hero );
	line-height: var( --lh-hero );
	letter-spacing: var( --ls-display-xl );
}

h2 {
	font-size: var( --text-display-section );
	line-height: var( --lh-tight );
	letter-spacing: var( --ls-display );
}

h3 {
	font-size: var( --text-display-newsletter );
	line-height: var( --lh-tight );
	letter-spacing: var( --ls-tight );
}

h4 {
	font-size: var( --text-base );
	font-weight: var( --fw-bold );
	line-height: var( --lh-snug );
}

h5,
h6 {
	font-size: var( --text-xs );
	line-height: var( --lh-body );
	letter-spacing: var( --ls-caps );
	text-transform: uppercase;
}

/* The mockup zeroes paragraph margins everywhere and spaces blocks with the
   parent's gap/margin instead. Long-form editor content re-adds its own rhythm. */
p {
	margin: 0;
}

strong,
b {
	font-weight: var( --fw-bold );
}

small {
	font-size: var( --text-xs );
}

/* Headline fragments painted with a brand gradient — hero and B2B h2. */
.text-gradient {
	background-image: var( --gradient-brand-text );
	-webkit-background-clip: text;
	background-clip: text;
	-webkit-text-fill-color: transparent;
	color: transparent;
}

.text-gradient--tri {
	background-image: var( --gradient-brand-text-3 );
}

/* Links inside running text (editor content, term and product descriptions,
   consent notes) — cyan and underlined so they read as links. UI links (nav,
   cards, pills, buttons) keep their own styling. `.pm-prose` (pages/info.css)
   and the blog prose carry their own link style. */
.pm-cat__intro a,
.pm-model__intro a,
.wa-is-desc__body a,
.pm-product__prose a:not( .pm-button, .button, .wp-element-button ),
.pm-faq__a a,
.pm-section > .type-page > :is( p, ul, ol, dl, blockquote, table ) a:not( .pm-button, .button, .wp-element-button ),
.woocommerce-privacy-policy-text a {
	color: var( --color-secondary );
	text-decoration: underline;
}

.pm-cat__intro a:hover,
.pm-cat__intro a:focus-visible,
.pm-model__intro a:hover,
.pm-model__intro a:focus-visible,
.wa-is-desc__body a:hover,
.wa-is-desc__body a:focus-visible,
.pm-product__prose a:not( .pm-button, .button, .wp-element-button ):hover,
.pm-product__prose a:not( .pm-button, .button, .wp-element-button ):focus-visible,
.pm-faq__a a:hover,
.pm-faq__a a:focus-visible,
.pm-section > .type-page > :is( p, ul, ol, dl, blockquote, table ) a:not( .pm-button, .button, .wp-element-button ):hover,
.pm-section > .type-page > :is( p, ul, ol, dl, blockquote, table ) a:not( .pm-button, .button, .wp-element-button ):focus-visible,
.woocommerce-privacy-policy-text a:hover,
.woocommerce-privacy-policy-text a:focus-visible {
	color: var( --color-primary );
}
