/* Position --------------- */

.absolute {
    position: absolute;
}

.relative {
    position: relative;
}

.fixed {
    position: fixed;
}

@media screen and (min-width: 30rem) {
	.sticky {
		--top: 0;
		position: sticky;
		top: var(--top);
	}
}

.inset-0	{
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
}

.z-1 {
	z-index: 1;
}


/* Layout --------------- */

.container {
    position: relative;
    max-width: var(--container);
    margin: 0 auto;
    padding: 0 var(--container-padding);
}

.container-m {
    position: relative;
    max-width: var(--container-m);
    margin: 0 auto;
    padding: 0 var(--container-padding);
}

.container-s {
    position: relative;
    max-width: var(--container-s);
    margin: 0 auto;
    padding: 0 var(--container-padding);
}

.container-xs {
    position: relative;
    max-width: var(--container-xs);
    margin: 0 auto;
    padding: 0 var(--container-padding);
}

.narrow > .column {
	max-width: var(--container-s);
    margin: 0 auto;
    padding: 0 var(--container-padding);
}

.flex {
    --gap: 0;
    display: flex;
}

.flex-column {
    flex-direction: column;
}

.flex-wrap {
    flex-wrap: wrap;
}

.flex-grow {
    flex-grow: 1;
}

.flex-shrink-0 {
    flex-shrink: 0;
}

.items-start {
    align-items: flex-start;
}

.items-center {
    align-items: center;
}

.items-end {
    align-items: flex-end;
}

.justify-between {
    justify-content: space-between;
}

.justify-center {
    justify-content: center;
}

.overflow-hidden {
    overflow: hidden;
}

.grid {
    display: grid;
}

.grid.col-2 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.height-80 {
    min-height: 80vh;
}

.height-90 {
    min-height: 90vh;
}

.height-100 {
    min-height: 100vh;
}


/* Display --------------- */

.block {
    display: block;
}

.hidden {
    display: none !important;
}

@media screen and (max-width: 767px) {
	.hide-mobile {
		display: none;
	}	
}

@media screen and (min-width: 768px) {
	.hide-desktop {
		display: none;
	}	
}

.inline-flex {
    display: inline-flex;
}


/* Style --------------- */

.rounded {
	border-radius: var(--rounded);
}

.text-center {
    text-align: center;
}

.text-right {
    text-align: right;
}

.list-none {
	list-style: none;
}

.shadow {
	box-shadow: var(--shadow);
}

.shadow-lg {
	box-shadow: var(--shadow-lg);
}

.shadow-xl {
	box-shadow: var(--shadow-xl);
}

.border-top {
	border-top: var(--line) solid;
}

.border-bottom {
	border-bottom: var(--line) solid;
}

.border-y {
	border-top: var(--line) solid;
	border-bottom: var(--line) solid;
}


/* Spacing --------------- */

.mt-24 {
	margin-top: var(--spacing-24);
}

.mt-36 {
	margin-top: var(--spacing-36);
}

.mt-42 {
	margin-top: var(--spacing-42);
}

.mb-0 {
	margin-bottom: 0;
}

.mb-1 {
	margin-bottom: var(--spacing-1);
}

.mb-2 {
	margin-bottom: var(--spacing-2);
}

.mb-3 {
	margin-bottom: var(--spacing-3);
}

.mb-6 {
	margin-bottom: var(--spacing-6);
}

.mb-12 {
	margin-bottom: var(--spacing-12);
}

.mb-24 {
	margin-bottom: var(--spacing-24);
}

.mb-36 {
	margin-bottom: var(--spacing-36);
}

.mb-42 {
	margin-bottom: var(--spacing-42);
}

.ml-auto {
	margin-left: auto;
}

.mr-1 {
	margin-right: var(--spacing-1);
}

.mr-3 {
	margin-right: var(--spacing-3);
}

.mx-1 {
	margin-left: var(--spacing-1);
	margin-right: var(--spacing-1);
}

.mx-auto {
	margin-left: auto;
	margin-right: auto;
}

.p-container {
	padding: var(--container-padding);
}

.p-1 {
	padding: var(--spacing-1);
}

.p-3 {
	padding: var(--spacing-3);
}

.p-6 {
	padding: var(--spacing-6);
}

.p-12 {
	padding: var(--spacing-12);
}

.p-24 {
	padding: var(--spacing-24);
}

.pt-1 {
	padding-top: var(--spacing-1);
}

.pt-3 {
	padding-top: var(--spacing-3);
}

.pt-6 {
	padding-top: var(--spacing-6);
}

.pt-12 {
	padding-top: var(--spacing-12);
}

.pt-24 {
	padding-top: var(--spacing-24);
}

.pb-24 {
	padding-bottom: var(--spacing-24);
}

.px-1 {
	padding-left: var(--spacing-1);
	padding-right: var(--spacing-1);
}

.px-3 {
	padding-left: var(--spacing-3);
	padding-right: var(--spacing-3);
}

.px-6 {
	padding-left: var(--spacing-6);
	padding-right: var(--spacing-6);
}

.px-12 {
	padding-left: var(--spacing-12);
	padding-right: var(--spacing-12);
}

.py-1 {
	padding-bottom: var(--spacing-1);
	padding-top: var(--spacing-1);
}

.py-3 {
	padding-bottom: var(--spacing-3);
	padding-top: var(--spacing-3);
}

.py-6 {
	padding-bottom: var(--spacing-6);
	padding-top: var(--spacing-6);
}

.py-12 {
	padding-bottom: var(--spacing-12);
	padding-top: var(--spacing-12);
}

.py-16 {
	padding-bottom: var(--spacing-16);
	padding-top: var(--spacing-16);
}

.py-20 {
	padding-bottom: var(--spacing-20);
	padding-top: var(--spacing-20);
}

.py-24 {
	padding-bottom: var(--spacing-24);
	padding-top: var(--spacing-24);
}

.py-36 {
	padding-bottom: var(--spacing-36);
	padding-top: var(--spacing-36);
}

.py-42 {
	padding-bottom: var(--spacing-42);
	padding-top: var(--spacing-42);
}


/* Text --------------- */

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

.text-sm {
	font-size: var(--text-sm);
}

.text-base {
	font-size: var(--text-base);
}

.text-lg {
	font-size: var(--text-lg);
}

.text-xl {
	font-size: var(--text-xl);
}

.text-2xl {
	font-size: var(--text-2xl);
	line-height: 1.175em;
}

.text-3xl {
	font-size: var(--text-3xl);
	line-height: 1.175em;
}

.text-4xl {
	font-size: var(--text-4xl);
	line-height: 1.175em;
}

.text-5xl {
	font-size: var(--text-5xl);
	line-height: 1.175em;
}

.text-6xl {
	font-size: var(--text-6xl);
	line-height: 1.175em;
}

.underline {
	text-decoration: underline;
}

.w-100\% {
	width: 100%;
}

.w-auto {
	width: auto;
}

.w-full {
	width: 100vw;
	position: relative;
	left: 50%;
	right: 50%;
	margin-left: -50vw;
	margin-right: -50vw;
}

.whitespace-nowrap {
	white-space: nowrap;
}

.font-bold {
	font-weight: 700;
}


/* Featured Grid --------------- */

.featured-2,
.featured-3,
.featured-4 {
    display: grid;
    grid-gap: 40px;
}

@media screen and (min-width: 768px) {
	.featured-2,
	.featured-3,
	.featured-4 {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        column-gap: 4vw;
        row-gap: 6rem;
    }
}

@media screen and (min-width: 990px) {
	.featured-3 {
        grid-template-columns: repeat(3, minmax(0, 1fr));
        column-gap: 4vw;
        row-gap: 6rem;
    }
}

@media screen and (min-width: 1024px) {
	.featured-4 {
        grid-template-columns: repeat(4, minmax(0, 1fr));
        column-gap: 3vw;
        row-gap: 4rem;
    }
}


/* Split sections --------------- */

.split-img-rt .column:first-child {
    padding: var(--spacing-20);
}

@media screen and (min-width: 768px) {
	.split-img-rt .column:first-child {
		padding: var(--spacing-20);
		display: flex;
		align-items: center;
	}
}

.split-img-rt .column:last-child {
    position: relative;
}

@media screen and (max-width: 767px) {
	.split-img-rt .column:last-child {
		padding-bottom: 125%;
		order: -1;
	}
}

.split-img-rt .column:last-child figure {
    position: absolute;
    inset: 0;
}

.split-img-rt .column:last-child img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.split-img-lt .column:last-child {
    padding: var(--spacing-20);
    display: flex;
    align-items: center;
}

.split-img-lt .column:first-child {
    position: relative;
}

.split-img-lt .column:first-child figure {
    position: absolute;
    inset: 0;
}

.split-img-lt .column:first-child img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}


/* Images --------------- */

.image-wrapper {
	position: relative;
}

.image-wrapper img {
	position: absolute;
	width: 100%;
	height: 100%;
	top: 0;
	left: 0;
	object-fit: cover;
}