/*
Theme Name: Fuel6
Theme URI: https://fuelmedical.com
Author: Fuel Medical
Description: A block theme created by Fuel Medical
Requires at least: 6.5
Tested up to: 7.0
Requires PHP: 8.0
Version: 6.4.5
*/

/*--------------------------------------------------------------
>>> TABLE OF CONTENTS:
----------------------------------------------------------------
# Custom Properties
# Fuel Normalize
# Helper Classes
# WordPress Blocks
# Header
# Footer
# Animations
# print
--------------------------------------------------------------*/

/*--------------------------------------------------------------
# Custom Properties
--------------------------------------------------------------*/
body {
	/* Structure - 1100px - for use outside of contain class */
	--contain-padding: clamp(1rem, calc(50vw - 29.93rem), 19rem);

	/* Design - Change in theme.json - DEPRECATED WITH PLANS TO REMOVE IN FAVOR OF VARIABLES CREATED BY THEME.JSON */
	--primary-color: var(--wp--preset--color--primary);
	--accent-color: var(--wp--preset--color--accent);
	--white: var(--wp--preset--color--white);
	--grey: var(--wp--preset--color--grey);
	--black: var(--wp--preset--color--black);

	/* Text */
	--title-font: var(--wp--preset--font-family--title);
	--title-color: var(--wp--preset--color--primary);
	--content-font: var(--wp--preset--font-family--content), sans-serif;
	--content-color: var(--wp--preset--color--content);
}

/*--------------------------------------------------------------
# Fuel Normalize
--------------------------------------------------------------*/
*,
*::before,
*::after {
	box-sizing: border-box;
}

html {
	font-size: clamp(125%, 1vw, 240%);
	-webkit-text-size-adjust: 100%;
	scroll-behavior: smooth;
	scrollbar-gutter: stable;
	min-width: 15rem;
}

html:has(.ios) {
	overscroll-behavior: none;
}

iframe,
img,
svg,
video {
	vertical-align: middle;
	max-width: 100vw;
}

img {
	object-fit: cover;
	width: -webkit-fill-available;
}

picture[style*="width"] {
	display: flex;
}

[hidden] {
	display: none;
}

@media only screen and (min-width: 68.5em) {
	*[id] {
		scroll-margin-top: 3rem;
	}
}

/*--------------------------------------------------------------
# Helper Classes
--------------------------------------------------------------*/
.contain {
	--contain-padding: clamp(var(--mobile-padding, 1rem), calc(50vw - 29.93rem), var(--desktop-padding, 19rem));
	display: block;
	position: relative;
	margin: auto;
	padding-right: var(--contain-padding);
	padding-left: var(--contain-padding);
	width: 100%;
}

.icon-item {
	display: block;
	position: relative;
	margin: 1em 0;
	padding: 0 0 0 1.8em;
}

.icon-item svg {
	position: absolute;
	top: 0.15em;
	left: 0;
	width: 1.2em;
	height: 1.2em;
}

.text-center {
	text-align: center;
}

@media (min-width: 68.5em) {
	.mobile-only {
		display: none !important;
	}
}

@media (max-width: 68.49em) {
	.desktop-only {
		display: none !important;
	}

	body {
		--center-on-mobile: center;
	}

	.text-center-on-mobile {
		text-align: var(--center-on-mobile);
	}

	.center-on-mobile {
		justify-content: var(--center-on-mobile);
	}

	.align-items-center-on-mobile {
		align-items: center;
	}

	.margin-center-on-mobile {
		margin-left: auto;
		margin-right: auto;
	}

	.stack-on-mobile {
		flex-direction: column;
	}

	.full-width-on-mobile {
		width: 100%;
		max-width: 100%;
	}

	.wrap-on-mobile {
		flex-wrap: wrap;
	}
}

.zebra > *:not(tbody):nth-child(odd) {
	background-color: var(--zebra, var(--wp--preset--color--grey));
}

.toggle-content:has(.zebra) {
	padding: 0;
}

/* Use on query loops to help change the order every other column */
.stagger > :nth-child(odd) .wp-block-columns {
	flex-direction: row-reverse;
}

/* Use to make link fill entire block - use when you can't wrap blocks with anchor tag */
.cover-link {
	position: absolute !important;
	inset: 0;
	width: 100%;
	z-index: 1;
	background: none !important;
}

:has(> .cover-link) {
	position: relative;
}

/*--------------------------------------------------------------
# WordPress Blocks - Use theme.json when possible
--------------------------------------------------------------*/
@media (max-width: 37.49em) {
	:where(.alignleft, .alignright):not(.wp-block-query .wp-block-post-featured-image) {
		float: none;
		margin: 0 auto 1rem;
	}
}

@media (min-width: 37.5em) {
	:where(.alignleft, .alignright):not(.wp-block-query .wp-block-post-featured-image) {
		max-width: 48%
	}
}

@media (min-width: 68.5em) {
	.is-position-sticky {
		transition: top 0.3s ease;
	}

	body:has(header.show-sticky) .is-position-sticky {
		top: 4rem;
	}
}

@media (max-width: 68.49em) {
	.entry-content .wp-block-buttons {
		justify-content: var(--center-on-mobile); /* Center buttons on mobile but not in menu */
	}
}

/*--------------------------------------------------------------
# Header
--------------------------------------------------------------*/
@media (max-width: 68.49em) {
	.show-sticky .fuel6-walker-menu:not(:has(.depth-0 > .menu-link[aria-expanded="true"])) {
		bottom: calc((var(--menu-height) + env(safe-area-inset-bottom) + 0.05rem) * -1);
	}
}

@media (min-width: 68.5em) {
	.header:not(.block-editor-block-list__block) {
		position: sticky;
		top: calc(var(--headerHeight, 11.7rem) * -1);
		z-index: 999;
		transition: top 0.5s ease;
	}

	body:not(.js-active) .header:not(.block-editor-block-list__block),
	.header:has(.depth-0 > .menu-link[aria-expanded="true"]),
	.header.show-sticky:not(.block-editor-block-list__block) {
		--menuTop: calc(var(--headerHeight, 11.7rem) - var(--menu-height, 3.2rem));
		top: calc(var(--menuTop, 8.5rem) * -1);
	}
}

.header-logo,
.footer-logo {
	--scale: 1.05;
}

.header-quicklinks a:is(:hover, :focus-visible) {
	--wp--preset--color--primary: var(--wp--preset--color--accent);
}

/*--------------------------------------------------------------
# Footer
--------------------------------------------------------------*/
.policy-menu li:nth-child(n+1):not(:last-child)::before {
	content: '|';
	position: absolute;
	right: -0.7rem;
}

/*--------------------------------------------------------------
# Animations
--------------------------------------------------------------*/
@keyframes spin {
	0% {
		transform: rotate(0deg);
	}
	100% {
		transform: rotate(var(--spin-rotation, 360deg));
	}
}

@keyframes fadein {
	0% {
		opacity: var(--o1, 0);
		transform: translate(var(--x1, 0), var(--y1, 5rem));
	}
	100% {
		opacity: var(--o2, 1);
		transform: translate(var(--x2, 0), var(--y2, 0));
	}
}

@keyframes fadeout {
	0% {
		opacity: var(--o2, 1);
		transform: translate(var(--x2, 0), var(--y2, 0));
	}
	100% {
		opacity: var(--o1, 0);
		transform: translate(var(--x1, 0), var(--y1, 5rem));
	}
}

@keyframes reveal {
	0% {
		opacity: var(--o1, 0);
		clip-path: inset(var(--reveal, 25%));
	}
	100% {
		opacity: var(--o2, 1);
		clip-path: inset(var(--reveal, 0%));
	}
}

@keyframes point {
	0% {
		transform: translate(0, 0);
	}
	50% {
		transform: translate(var(--x, 1rem), var(--y, 0));
	}
	100% {
		transform: translate(0, 0);
	}
}

/* popAnimation Example: https://jsfiddle.net/KTC_88/8xkLv520/ */
@keyframes popAnimation {
	0% {
		transform: scale(0.5);
		opacity: 0;
	}
	60% {
		transform: scale(1.2)
	}
	100% {
		transform: scale(1);
		opacity: 1
	}
}

/**
 * Animation helper classes.
 */
@media (prefers-reduced-motion:no-preference) {

	/* Add to wrappers to animate children */
	.popin>* {
		transform: scale(0.5);
		opacity: 0;
	}

	.popin.js-intersected>* {
		--delay: calc(var(--i, 0) * 200ms);
		animation: popAnimation 400ms ease var(--delay) forwards
	}

	.fadein-items>* {
		opacity: 0;
		transform: translateY(0);
	}

	.fadein-items.js-intersected>* {
		--delay: calc(var(--i, 0) * 200ms);
		animation: fadein var(--time, 400ms) ease var(--delay) forwards;
	}

	/* Add directly to element that will be affected */
	.fadein {
		opacity: 0;
		transform: translateY(0);
		--y1: 0;
	}

	.fadeup {
		opacity: 0;
		transform: translateY(5rem);
	}

	.fadedown {
		opacity: 0;
		transform: translateY(-5rem);
		--y1: -5rem;
	}

	.fadeleft {
		opacity: 0;
		transform: translateX(-5rem);
		--x1: -5rem;
		--y1: 0;
	}

	.faderight {
		opacity: 0;
		transform: translateX(5rem);
		--x1: 5rem;
		--y1: 0;
	}

	.reveal {
		opacity: 0;
		clip-path: inset(25%);
	}

	.js-intersected:is(.fadein, .fadeup, .fadedown, .fadeleft, .faderight) {
		animation: fadein var(--time, 300ms) var(--easing, ease) var(--delay, 0s) forwards
	}

	.js-intersected.reveal {
		animation: reveal var(--time, 300ms) var(--easing, ease) var(--delay, 0s) forwards
	}
}

/* Used to make images in links grow when link is hovered - simply add .hover-img-grow to link or image block */
figure.hover-img-grow,
.hover-img-grow figure {
	overflow: hidden;
}

.hover-img-grow img {
	transition: transform var(--time, 0.3s);
}

a:has(+ .hover-img-grow):is(:hover, :focus-visible)+figure img,
a:has(.hover-img-grow):is(:hover, :focus-visible) img,
a.hover-img-grow:is(:hover, :focus-visible) img {
	transform: scale(var(--scale, 1.1));
}

/* Helper class adds growing underline on hover */
a.underline-on-hover,
.underline-on-hover a {
	width: fit-content;
	background: linear-gradient(0deg, currentColor, currentColor) no-repeat 0 bottom / 0 1px;
	transition: background-size 350ms;
}

a.underline-on-hover:is(:hover, :focus-visible),
.underline-on-hover a:is(:hover, :focus-visible) {
	background-size: 100% 1px;
}

a.underline-on-hover.icon-item,
.underline-on-hover a.icon-item {
	background-position-x: 1.6rem;
}

/* Helper class makes link scale on hover */
.scale-on-hover a,
a.scale-on-hover {
	transition: transform 0.3s ease;
}

.scale-on-hover a:is(:hover, :focus-visible),
a.scale-on-hover:is(:hover, :focus-visible) {
	transform: scale(var(--scale, 1.2));
}

/*--------------------------------------------------------------
# Print
--------------------------------------------------------------*/
@media print {
	* {
		background: transparent !important;
		color: initial !important;
		--wp--preset--color--white: initial !important;
	}

	.main-header {
		all: unset;
	}

	.main-title {
		margin: 1rem auto !important;
		padding-bottom: 1rem;
		border-bottom: 2px solid #000;
	}

	nav,
	#sidebar,
	.header,
	.footer,
	.pagination,
	.wp-prev-next,
	.main-header img,
	.wp-block-cover__image-background,
	.wp-block-cover__background,
	main + * {
		display: none !important;
	}
}