@layer components {
	/* PROGRESSIVE BLUR */
	.navigation-backdrop {
		--fade-direction: to bottom;

		position: fixed;
		z-index: 9;

		inset-inline: 0;
		inset-block-end: 0;
		block-size: calc(10rem + env(safe-area-inset-bottom, 0px));
		pointer-events: none;

		background: linear-gradient(var(--fade-direction), transparent,
		rgb(245 247 250 / 65%) 65%, var(--color-background));
	}

	.navigation-backdrop > span {
		position: absolute;
		inset: 0;
		-webkit-backdrop-filter: blur(var(--blur));
		backdrop-filter: blur(var(--blur));
		mask-image: linear-gradient(var(--fade-direction), transparent var(--fade-start), black var(--fade-end));
	}

	.navigation-backdrop > span:nth-child(1) {
		--blur: 2px;
		--fade-start: 0%;
		--fade-end: 40%;
	}

	.navigation-backdrop > span:nth-child(2) {
		--blur: 6px;
		--fade-start: 25%;
		--fade-end: 70%;
	}

	.navigation-backdrop > span:nth-child(3) {
		--blur: 12px;
		--fade-start: 55%;
		--fade-end: 100%;
	}

	/* NAVBAR */
	.floating-navigation {
		--navigation-items: 4;
		--navigation-gap: 0.15rem;
		--navigation-padding: 0.35rem;
		--active-index: 0;
		--indicator-width: calc(
				(100% - var(--navigation-padding-inline) * 2 - var(--navigation-gap) * (var(--navigation-items) - 1)) /
				var(--navigation-items)
		);
		--indicator-extra: 3px;
		--navigation-padding-inline: calc(var(--navigation-padding) + var(--indicator-extra));

		position: fixed;
		z-index: 10;
		isolation: isolate;

		inset-inline: 0;
		inset-block-end: calc(var(--navigation-offset) + env(safe-area-inset-bottom, 0px));

		inline-size: min(336px, calc(100% - 24px));
		margin-inline: auto;

		display: grid;
		grid-template-columns: repeat(var(--navigation-items), minmax(0, 1fr));
		gap: var(--navigation-gap);
		padding-block: var(--navigation-padding);
		padding-inline: var(--navigation-padding-inline);

		background: var(--color-surface);
		border: 1px solid rgb(24 26 28 / 9%);
		border-radius: 999px;
		box-shadow: 0 2px 5px rgb(1 21 59 / 3%), 0 10px 30px rgb(1 21 59 / 7%);
	}

	.floating-navigation::before {
		content: "";

		position: absolute;
		z-index: 0;

		inset-block: var(--navigation-padding);
		inset-inline-start: calc(var(--navigation-padding-inline) - var(--indicator-extra));
		inline-size: calc(var(--indicator-width) + var(--indicator-extra) * 2);

		border-radius: 999px;
		background: color-mix(in oklch, var(--color-accent) 10%, white);

		opacity: 0;
		pointer-events: none;

		transform: translateX(calc(var(--active-index) * (100% - var(--indicator-extra) * 2 + var(--navigation-gap))));
		transition: transform 350ms cubic-bezier(0.2, 0.8, 0.2, 1);
	}

	.floating-navigation[data-has-active]::before {
		opacity: 1;
	}

	.navigation-item {
		display: flex;
		flex-direction: column;
		align-items: center;
		justify-content: center;

		position: relative;
		z-index: 1;

		min-inline-size: 0;
		min-block-size: 3.5rem;
		padding: 0.4rem 0.15rem;
		gap: 0.2rem;

		color: var(--color-text-muted);
		background: transparent;
		border-radius: 999px;
		-webkit-tap-highlight-color: transparent;

		font-size: 0.75rem;
		font-weight: 500;
		line-height: 1.15;
		text-align: center;
		text-decoration: none;
		overflow-wrap: anywhere;

		transition: color 180ms ease, background-color 180ms ease;
	}

	.navigation-icon {
		inline-size: 1.3rem;
		block-size: 1.3rem;
		flex-shrink: 0;

		fill: none;
		stroke: currentColor;
		stroke-width: 2.6;
		stroke-linecap: round;
		stroke-linejoin: round;
	}

	.floating-navigation[data-item-count="4"] .navigation-item {
		font-size: 0.7rem;
		gap: 0.15rem;
	}

	.floating-navigation[data-item-count="4"] .navigation-icon {
		inline-size: 1.2rem;
		block-size: 1.2rem;
	}

	.navigation-item span {
		white-space: nowrap;
	}

	.navigation-item[aria-current="page"] {
		color: var(--color-accent);
		background: transparent;
	}

	.navigation-icon-filled {
		fill: currentColor;
		stroke: none;
	}

	.navigation-item:focus-visible {
		outline: 2px solid var(--color-accent);
		outline-offset: -3px;
	}

	@media (hover: hover) {
		.navigation-item:hover:not([aria-current="page"]) {
			color: var(--color-accent);
			background: var(--color-surface-hover);
		}
	}

	@supports (backdrop-filter: blur(1rem)) {
		.floating-navigation {
			background: rgb(255 255 255 / 92%);
			backdrop-filter: blur(1rem);
		}
	}

	/* DESKTOP (navbar go to top) */
	@media (width >= 48rem) {
		.floating-navigation {
			inset-block-end: auto;
			inset-block-start: calc(var(--navigation-offset) + env(safe-area-inset-top, 0px));
		}

		.navigation-backdrop {
			--fade-direction: to top;
			inset-block-end: auto;
			inset-block-start: 0;
			block-size: calc(10rem + env(safe-area-inset-top, 0px));
		}
	}

	@media (prefers-reduced-motion: reduce) {
		.navigation-item {
			transition: none;
		}

		.floating-navigation::before {
			transition: none;
		}
	}
}