.heading {
	--heading-font-size: 1rem;
	--heading-line-height: 1.25rem;
	--heading-margin-block-start: 0;
	--heading-margin-block-end: 0;

	font-weight: 600;
	font-size: var(--heading-font-size);
	line-height: var(--heading-line-height);
	margin-block-start: var(--heading-margin-block-start);
	margin-block-end: var(--heading-margin-block-end);
}

/*
	Size independent variants
	============================================================= */
.heading[data-variant*="uppercase"] {
	text-transform: uppercase;
}

.heading[data-variant*="thin"] {
	font-weight: 400;
}

/*
	Icon support for block-level and paragraph-level headings
	============================================================= */
.heading[data-mode*="icon-"]:is([data-scheme="block"], [data-scheme="paragraph"]) {
	background-repeat: no-repeat;
	background-size: var(--heading-icon-size) var(--heading-icon-size);
	background-image: var(--icon-image-url);
	display: flex;
	align-items: center;
}

.heading[data-mode="icon-before"]:is([data-scheme="block"], [data-scheme="paragraph"]) {
	--heading-icon-size: 3rem;
	--heading-icon-gap: 0.5rem;
	--heading-vertical-padding-split: calc((var(--heading-icon-size) - var(--heading-font-size)) / 2);

	padding-block-start: var(--heading-vertical-padding-split);
	padding-block-end: var(--heading-vertical-padding-split);
	padding-inline-start: calc(var(--heading-icon-size) + var(--heading-icon-gap));
	background-position: top 50% left 0;
}

.heading[data-mode="icon-above"]:is([data-scheme="block"], [data-scheme="paragraph"]) {
	--heading-icon-size: 3rem;
	--heading-icon-gap: 1.25rem;

	padding-block-start: calc(var(--heading-icon-size) + var(--heading-icon-gap));
	background-position: 0 0;
}

/*
	Mobile screen sizes (Default)
	============================================================= */
.heading[data-scheme="page"] {
	--heading-font-size: 1.5rem;
	--heading-line-height: 1.75rem;
	/* No margins on this heading please */
}

.heading[data-scheme="section"] {
	--heading-font-size: 1.125rem;
	--heading-line-height: 1.5rem;
	--heading-margin-block-end: 1.25rem;
}

.heading[data-scheme="block"] {
	--heading-font-size: 1rem;
	--heading-line-height: 1.25rem;
	--heading-margin-block-end: 1.25rem;
}

.heading[data-scheme="paragraph"] {
	/* Use default font-size and line-height set above */
	--heading-margin-block-end: 1.25rem;
}

/* 
	Larger screen sizes 
	============================================================= */
@media (min-width: 640px) {
	.heading[data-scheme="page"] {
		--heading-font-size: 2rem;
		--heading-line-height: 2.5rem;
	}
	
	.heading[data-scheme="section"] {
		--heading-font-size: 1.5rem;
		--heading-line-height: 1.75rem;
	}
	
	.heading[data-scheme="block"] {
		--heading-font-size: 1.25rem;
		--heading-line-height: 1.5rem;
	}
	
	.heading[data-scheme="paragraph"] {
		/* Use default font-size and line-height set above */
	}
}