.de-portfolio-grid {
	--de-pg-gap: 14px;
	--de-pg-radius: 10px;
	--de-pg-shadow: 0 6px 24px rgba(0, 0, 0, 0.12);
	--de-pg-shadow-hover: 0 14px 40px rgba(0, 0, 0, 0.2);
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	grid-template-rows: repeat(2, minmax(0, 1fr));
	gap: var(--de-pg-gap);
	width: 100%;
	/* Container um pouco mais largo → tiles levemente verticais (~9:10), sem exagero */
	height: auto !important;
	aspect-ratio: var(--de-pg-aspect, 9 / 5) !important;
	min-height: 280px;
	isolation: isolate;
}

.de-portfolio-grid__slot {
	position: relative;
	display: block;
	overflow: hidden;
	border-radius: var(--de-pg-radius);
	background: #111;
	box-shadow: var(--de-pg-shadow);
	text-decoration: none;
	color: inherit;
	min-width: 0;
	min-height: 0;
	transform: translateZ(0);
	transition:
		transform 0.45s cubic-bezier(0.22, 1, 0.36, 1),
		box-shadow 0.45s ease,
		filter 0.45s ease;
	cursor: pointer;
}

.de-portfolio-grid__slot--hero {
	grid-column: 1 / span 2;
	grid-row: 1 / span 2;
}

.de-portfolio-grid__slot--tile:nth-child(2) {
	grid-column: 3;
	grid-row: 1;
}

.de-portfolio-grid__slot--tile:nth-child(3) {
	grid-column: 4;
	grid-row: 1;
}

.de-portfolio-grid__slot--tile:nth-child(4) {
	grid-column: 3;
	grid-row: 2;
}

.de-portfolio-grid__slot--tile:nth-child(5) {
	grid-column: 4;
	grid-row: 2;
}

.de-portfolio-grid__media {
	position: absolute;
	inset: 0;
	overflow: hidden;
	display: block;
}

.de-portfolio-grid__media picture,
.de-portfolio-grid__media img {
	display: block;
	width: 100%;
	height: 100%;
}

.de-portfolio-grid__media img {
	object-fit: cover;
	object-position: center 35%;
	transform: scale(1.08);
	transform-origin: center center;
	transition:
		opacity 0.55s ease,
		filter 0.45s ease;
	will-change: transform, opacity;
	animation: de-pg-kenburns 9s ease-in-out infinite;
}

.de-portfolio-grid__slot--hero .de-portfolio-grid__media img {
	animation-duration: 11s;
}

.de-portfolio-grid__slot:nth-child(2) .de-portfolio-grid__media img {
	animation-delay: -2s;
}

.de-portfolio-grid__slot:nth-child(3) .de-portfolio-grid__media img {
	animation-delay: -5s;
}

.de-portfolio-grid__slot:nth-child(4) .de-portfolio-grid__media img {
	animation-delay: -8s;
}

.de-portfolio-grid__slot:nth-child(5) .de-portfolio-grid__media img {
	animation-delay: -11s;
}

.de-portfolio-grid__caption {
	position: absolute;
	inset: auto 0 0 0;
	padding: 1.15rem 1rem 0.95rem;
	background: linear-gradient(to top, rgba(0, 0, 0, 0.72) 0%, rgba(0, 0, 0, 0.28) 55%, transparent 100%);
	opacity: 0;
	transform: translateY(10px);
	transition:
		opacity 0.35s ease,
		transform 0.45s cubic-bezier(0.22, 1, 0.36, 1);
	pointer-events: none;
	z-index: 2;
}

.de-portfolio-grid__caption-text {
	display: block;
	color: #fff;
	font-size: clamp(0.85rem, 1.4vw, 1.05rem);
	font-weight: 600;
	letter-spacing: 0.01em;
	line-height: 1.25;
	text-shadow: 0 1px 2px rgba(0, 0, 0, 0.35);
}

.de-portfolio-grid__slot--hero .de-portfolio-grid__caption-text {
	font-size: clamp(1rem, 1.8vw, 1.35rem);
}

.de-portfolio-grid__slot:hover,
.de-portfolio-grid__slot:focus-visible,
.de-portfolio-grid__slot.is-active {
	z-index: 3;
	transform: translateY(-4px) scale(1.015);
	box-shadow: var(--de-pg-shadow-hover);
	outline: none;
}

.de-portfolio-grid__slot:hover .de-portfolio-grid__media img,
.de-portfolio-grid__slot:focus-visible .de-portfolio-grid__media img,
.de-portfolio-grid__slot.is-active .de-portfolio-grid__media img {
	transform: scale(1.18);
	animation-play-state: paused;
	filter: brightness(1.05);
	transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1), opacity 0.55s ease, filter 0.45s ease;
}

.de-portfolio-grid__slot:hover .de-portfolio-grid__caption,
.de-portfolio-grid__slot:focus-visible .de-portfolio-grid__caption,
.de-portfolio-grid__slot.is-active .de-portfolio-grid__caption {
	opacity: 1;
	transform: translateY(0);
}

/* Swap animation states driven by JS */
.de-portfolio-grid__slot.is-swapping-out .de-portfolio-grid__media img {
	opacity: 0;
	transform: scale(1.18);
	filter: blur(4px);
	animation: none;
}

.de-portfolio-grid__slot.is-swapping-in .de-portfolio-grid__media img {
	animation: de-pg-swap-in 0.7s cubic-bezier(0.22, 1, 0.36, 1) both;
}

.de-portfolio-grid.is-paused .de-portfolio-grid__media img {
	animation-play-state: paused;
}

.de-portfolio-grid__slot.is-flash {
	animation: de-pg-flash 0.7s ease;
}

@keyframes de-pg-kenburns {
	0% {
		transform: scale(1.08) translate3d(0, 0, 0);
	}
	25% {
		transform: scale(1.16) translate3d(-2.4%, 1.6%, 0);
	}
	50% {
		transform: scale(1.22) translate3d(1.8%, -1.4%, 0);
	}
	75% {
		transform: scale(1.14) translate3d(-1.6%, -1.8%, 0);
	}
	100% {
		transform: scale(1.08) translate3d(0, 0, 0);
	}
}

@keyframes de-pg-swap-in {
	from {
		opacity: 0;
		transform: scale(1.28);
		filter: blur(6px);
	}
	to {
		opacity: 1;
		transform: scale(1.08);
		filter: blur(0);
	}
}

@keyframes de-pg-flash {
	0% {
		box-shadow: var(--de-pg-shadow);
	}
	40% {
		box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.55), 0 10px 28px rgba(0, 0, 0, 0.18);
	}
	100% {
		box-shadow: var(--de-pg-shadow);
	}
}

@media (prefers-reduced-motion: reduce) {
	.de-portfolio-grid__media img,
	.de-portfolio-grid__slot,
	.de-portfolio-grid__caption {
		animation: none !important;
		transition: none !important;
	}

	.de-portfolio-grid__media img {
		transform: none;
	}

	.de-portfolio-grid__caption {
		opacity: 1;
		transform: none;
		background: linear-gradient(to top, rgba(0, 0, 0, 0.55), transparent);
	}
}

@media (max-width: 900px) {
	.de-portfolio-grid {
		--de-pg-gap: 10px;
		aspect-ratio: 8 / 5 !important;
	}
}

@media (max-width: 767px) {
	.de-portfolio-grid {
		--de-pg-gap: 8px;
		--de-pg-radius: 8px;
		grid-template-columns: repeat(2, minmax(0, 1fr));
		/* Hero em 2 linhas → mesma proporção dos tiles (~como no desktop) */
		grid-template-rows: repeat(4, minmax(0, 1fr));
		aspect-ratio: 4 / 5 !important;
		height: auto !important;
	}

	.de-portfolio-grid__slot--hero {
		grid-column: 1 / span 2;
		grid-row: 1 / span 2;
	}

	.de-portfolio-grid__slot--tile:nth-child(2) {
		grid-column: 1;
		grid-row: 3;
	}

	.de-portfolio-grid__slot--tile:nth-child(3) {
		grid-column: 2;
		grid-row: 3;
	}

	.de-portfolio-grid__slot--tile:nth-child(4) {
		grid-column: 1;
		grid-row: 4;
	}

	.de-portfolio-grid__slot--tile:nth-child(5) {
		grid-column: 2;
		grid-row: 4;
	}
}
