/*  ==========================================================
    BLOCKS
    ========================================================== */

/**
 * The block layer is where styles for specific components such as cards, avatars, and buttons are set up.
 * An example of a block is styles created for a team card element.
 *
 * # What should a block do?
 *   - Extend the work already done by the global CSS, composition and utility layers
 *   - Apply a collection of design tokens within a concise group
 *   - Create a namespace or specificity boost to control a specific context
 *
 * # What should NOT a block do?
 *   - Grow to anything larger than a handful of CSS rules (max 80-100 lines)
 *   - Solve more than one contextual problem. For example: styling a card and a button in one file
 */

/** Btns and links style */
.btn {
	display: block;
	max-inline-size: fit-content;
	padding: var(--space-2xs) var(--space-m);
	background-color: hsl(var(--color-light));
	font-family: var(--accent-font);
	color: hsl(var(--color-dark));
	text-decoration: none;
	font-size: var(--step-1);
	border-radius: var(--border-radius);
	box-shadow: var(--shadow-around);
	cursor: pointer;
	transition: background-color var(--anim-fast), box-shadow var(--anim-fast), color var(--anim-fast);

	--flow-space: 2em;
}

.btn:hover {
	background-color: hsl(var(--color-secondary));
	color: hsl(var(--color-light));
	box-shadow: none;
}

.sidebar-element a {
    transition: translate var(--anim-fast);
}

.sidebar-element a:hover {
    translate: 0.25em 0;
}

header {
	position: sticky;
	top: 0;
	background-color: hsl(var(--color-light));
	box-shadow: var(--shadow-basic);
	z-index: 999;

	--flex-justify-content: space-between;
}

.main-nav {
	inline-size: 100%;
}

.main-nav a,
.grid-nav a {
	font-weight: var(--fw-black);
	text-decoration: none;
	color: hsl(var(--color-dark));
	text-transform: uppercase;
	margin-block-start: 0.25em;
}

.main-nav i {
	font-size: var(--step-2);
	transition: color var(--anim-fast);
}

.main-nav i:hover {
	color: hsl(var(--color-dark));
}

.header-logo img {
	block-size: var(--space-2xl);
}

.header-logo,
.hamburger-menu {
	z-index: 99999999;
}

/* Hamburger menu */
.hamburger-menu {
	cursor: pointer;
}

.hamburger-menu span {
	--inline-size: 2rem;
	--block-size: 2px;
	--space: 6px;

	display: block;
	inline-size: var(--inline-size);
	block-size: var(--block-size);
	background: hsl(var(--color-primary));
	border-radius: 2px;
	transition: all var(--anim-fast);
}

.hamburger-menu > span + span {
	margin-block-start: var(--space);
}

.hamburger-menu span:nth-of-type(2) {
	inline-size: calc(var(--inline-size) * 0.75);
}

.hamburger-menu span:nth-of-type(3) {
	inline-size: calc(var(--inline-size) * 0.5);
}

/* Hamburger animation */
.hamburger-menu.active span {
	inline-size: var(--inline-size);
}

.hamburger-menu.active span:first-of-type {
	translate: 0 calc(var(--space) + var(--block-size));
	rotate: 45deg;
}

.hamburger-menu.active span:nth-of-type(2) {
	opacity: 0;
}

.hamburger-menu.active span:last-of-type {
	translate: 0 calc(-1 * (var(--space) + var(--block-size)));
	rotate: -45deg;
}

.hamburger-menu.active span:first-of-type {
	translate: 0 calc(var(--space) + var(--block-size));
}

.mobile-menu {
	position: fixed;
	inset: 0;
	padding-block-start: var(--space-4xl);
	padding-block-end: var(--space-4xl);
	display: none;
	translate: -100% 0;
	background: hsl(var(--color-light));
	opacity: 0;
	z-index: 9999999;

	--flex-direction: column;
	--flex-gap: var(--space-2xl);

	& ul {
		height: 100%;
		display: flex;
		flex-flow: column wrap;
		justify-content: center;
		align-items: center;
		gap: var(--inverse-clamp);

		& li {
			inline-size: 100%;
			border-radius: var(--border-radius);
			translate: -10% 0;
			opacity: 0;
			transition: background-color var(--anim-fast) ease, color var(--anim-fast) ease;

			& figure {
				border-radius: var(--border-radius);

				& img {
					max-block-size: var(--space-m);
				}
			}

			& a {
				inline-size: 100%;
				block-size: 100%;
				padding: 0.5em;
				display: flex;
				justify-content: center;
				align-items: center;
				font-size: var(--step-2);
			}
		}

		& li:hover {
			background-color: hsl(var(--color-primary));

			& a {
				color: hsl(var(--color-light)) !important;
			}
		}
	}
}

.menu-link {
	font-weight: var(--fw-black);
}

.has-bg-img {
	position: relative;
}

.has-bg-img::before {
	content: "";
	position: absolute;
	inset: 0;
	background-color: hsla(var(--color-light), 0.25);
	z-index: -1;
}

.has-bg-img.very-opaque::before {
	content: "";
	position: absolute;
	inset: 0;
	background-color: hsla(var(--color-light), 0.75);
	z-index: -1;
}

.is-bg-img {
	position: absolute;
	inset: 0;
	inline-size: 100%;
	block-size: 100%;
	object-fit: cover;
	z-index: -2;
}

.line-clamp {
	display: -webkit-box;
	-webkit-box-orient: vertical;
	line-clamp: 2;
	-webkit-line-clamp: 2;
	overflow: hidden;
}

.boxed {
	padding-inline: var(--biggest-element-font-size, var(--step-0));
	padding-block-start: calc(var(--biggest-element-font-size, var(--step-0)) / var(--heading-line-height));
	padding-block-end: var(--biggest-element-font-size, var(--step-0));
	border-radius: calc(var(--biggest-element-font-size, var(--step-0)) / var(--heading-line-height));
}

.card {
	max-inline-size: var(--card-width);
	box-shadow: var(--shadow-basic);
	border-radius: var(--border-radius);
	background-color: hsl(var(--color-light));
	z-index: 2;

	& .card-content {
		text-decoration: none;
		color: hsl(var(--color-dark));

		& figure {
			overflow: hidden;
		}

		& img {
			inline-size: 100%;
			aspect-ratio: 16 / 9;
			object-fit: cover;
			border-top-left-radius: var(--border-radius);
			border-top-right-radius: var(--border-radius);
			transition: scale var(--anim-fast);
		}

		& img:hover {
			scale: 1.05;
		}
	}
}

.card:focus-within {
  outline: 2px solid hsl(var(--color-primary));
  outline-offset: 0.5ch;
  border-radius: var(--border-radius);
}

.article-sidebar {
	display: flex;
	flex-direction: column;
	gap: 1em;

	& li a {
		display: flex;
		justify-content: space-between;
	}
}

footer {
	min-block-size: unset !important;
	background-color: hsl(var(--color-dark));
	color: hsl(var(--color-light));
	font-size: var(--step--1);

	--padding-block-start: var(--space-m);
	--padding-block-end: calc(var(--inverse-clamp) * 2);
}

.form-container {
  inline-size: max(292px, 50%);
	font-family: var(--accent-font);

	& .privacy {
		--flex-wrap: nowrap;
		--flex-gap: 0;
	}
}

.social-share {
	--flex-direction: row;
	--flex-gap: var(--inverse-clamp);

	& i {
		font-size: var(--step-5);
		transition: color var(--anim-fast) ease;
	}

	& i:hover {
		color: hsl(var(--color-dark));
	}
}

.btn-container {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 2em;
}

.article-btns {
	inline-size: 100%;

	--grid-min-item-size: 32rem;
}

.article-btn {
	padding-block: 1em;
	max-inline-size: unset !important;
	inline-size: 100%;
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 2em;
	text-transform: none;
	background-color: hsl(var(--color-light));
	color: hsl(var(--color-dark));

	& i {
		font-size: var(--step-5);
	}

	& img {
	    display: none;
		width: 80px;
		min-height: 100%;
		object-fit: cover;
		align-self: stretch;
	}
}

@media(min-width: 500px) {
    .article-btn img {
        display: block;
    }
}

.btn-content {
	display: flex;
	align-items: center;
	gap: 1em;
}

.article-btn.inactive {
	display: none;
}

.article-btn:last-child {
	text-align: end;
}

.social-icons {
	font-size: var(--step-5);

	--flex-justify-content: flex-start;
}

/* Desktop menu */
#mobile-menu {
	display: flex;
}

#primary-nav {
	inline-size: 100dvw;
	display: none;
	justify-content: space-between;
	align-items: center;
	gap: 0.25em;
}

ul.menu {
	display: flex;
	gap: 1em;
}

@media(min-width: 769px) {
	#primary-nav {
		display: flex !important;
	}

	#mobile-menu {
		display: none !important;
	}
}
