/* DS contracts 0.1.4 typography. theme.json owns sizes and element defaults.
 * A selected size preset also applies its full text style, independent of heading level.
 * Keep selectors low-specificity so explicit block styles can override defaults.
 */
:is(
	.has-display-font-size,
	.has-heading-xxl-font-size, .has-heading-xl-font-size, .has-heading-lg-font-size,
	.has-heading-md-font-size, .has-heading-sm-font-size, .has-heading-xs-font-size,
	.has-heading-xxs-font-size,
	.has-body-lg-font-size, .has-body-md-font-size, .has-body-sm-font-size,
	.has-label-lg-font-size, .has-label-md-font-size, .has-label-sm-font-size,
	.has-link-lg-font-size, .has-link-md-font-size, .has-link-sm-font-size
) {
	font-family: var(--wp--preset--font-family--figtree);
	font-weight: 700;
	line-height: 1.5;
	letter-spacing: 0;
	text-decoration: none;
	overflow-wrap: anywhere;
}

:is(
	.has-display-font-size, .has-heading-xxl-font-size, .has-heading-xl-font-size,
	.has-heading-lg-font-size, .has-heading-md-font-size, .has-heading-sm-font-size
) {
	font-family: var(--wp--preset--font-family--sora);
	font-weight: 800;
}

.has-display-font-size { line-height: 1; }
:is(.has-heading-xxl-font-size, .has-heading-xl-font-size) { line-height: 1.1; }
.has-heading-lg-font-size { line-height: 1.2; }
:is(.has-heading-md-font-size, .has-heading-xs-font-size) { line-height: 1.3; }
:is(.has-heading-sm-font-size, .has-heading-xxs-font-size) { line-height: 1.4; }
:is(.has-body-lg-font-size, .has-body-md-font-size, .has-body-sm-font-size) { font-weight: 400; }

/* Link LG / MD / SM — sizes live in theme.json; decoration tokens under --wp--custom--link--* */
:is(.has-link-lg-font-size, .has-link-md-font-size, .has-link-sm-font-size) {
	text-decoration: none;
}

:is(.has-link-lg-font-size, .has-link-md-font-size, .has-link-sm-font-size) a,
a:is(.has-link-lg-font-size, .has-link-md-font-size, .has-link-sm-font-size),
a {
	text-decoration: underline;
	text-decoration-style: solid;
	text-decoration-thickness: var(--wp--custom--link--underline-thickness);
	text-underline-offset: var(--wp--custom--link--underline-offset);
}

:is(.has-link-lg-font-size, .has-link-md-font-size, .has-link-sm-font-size) a:hover,
a:is(.has-link-lg-font-size, .has-link-md-font-size, .has-link-sm-font-size):hover,
a:hover {
	text-decoration-thickness: var(--wp--custom--link--hover-underline-thickness);
}

/* Paragraph spacing belongs to paragraph blocks, not surrounding layout groups. */
p:is(
	.has-display-font-size, .has-heading-xxl-font-size, .has-heading-xl-font-size,
	.has-heading-lg-font-size, .has-heading-md-font-size, .has-heading-sm-font-size,
	.has-heading-xs-font-size, .has-heading-xxs-font-size, .has-body-sm-font-size,
	.has-label-lg-font-size, .has-label-md-font-size, .has-label-sm-font-size
) { margin-block-end: 0; }
p:is(.has-body-lg-font-size, .has-body-md-font-size) { margin-block-end: var(--ya-spacing-16); }
p:is(.has-link-lg-font-size, .has-link-md-font-size, .has-link-sm-font-size) { margin-block-end: var(--ya-spacing-08); }

/* Native controls not covered by theme.json's element selectors. */
:where(label) {
	font-family: var(--wp--preset--font-family--figtree);
	font-size: var(--wp--preset--font-size--label-md);
	font-weight: 700;
	line-height: 1.5;
}
:where(button, input, select, textarea) { font-family: inherit; }
:where(button, input[type="button"], input[type="submit"], input[type="reset"]) {
	font-family: var(--wp--preset--font-family--figtree);
	font-size: var(--wp--preset--font-size--label-md);
	font-weight: 700;
	line-height: 1.5;
}
