/*=====
Theme Name: Pedro Gris
Author: Pedro Gris
Author URI: https://pedrogris.es
Description: A custom WordPress theme developed with ♥ by Pedro Gris. All rights reserved. This theme is not intended for redistribution, modification, or resale.
Version: 1.1.0
Requires at least: 5.0
Tested up to: 6.6.1
Requires PHP: 7.0
License: Proprietary - All Rights Reserved
License URI: https://pedrogris.es/license
Text Domain: pedro-gris
Tags: custom, modern, responsive, SEO-friendly, accessible
=======*/



/* FONT */
@font-face {
	font-family: 'ClashGrotesk';
	src: url('assets/fonts/ClashGrotesk-Variable.woff2') format('woff2'),
		 url('assets/fonts/ClashGrotesk-Variable.woff') format('woff'),
		 url('assets/fonts/ClashGrotesk-Variable.ttf') format('truetype'),
		 url('assets/fonts/ClashGrotesk-Variable.eot') format('eot');
	font-weight: 200 700;
	font-display: swap;
	font-style: normal;
}

@font-face {
	font-family: 'Albert';
	src: url('assets/fonts/Albert-extrabold.woff2') format('woff2'),
		url('assets/fonts/Albert-extrabold.woff') format('woff');
	font-weight: 200 800;
	font-display: swap;
	font-style: normal;
}

/* BASIC */

:root {
	--black: #000;
	--white: #fff;
	--gray: #808080;
	--cubic-bezier: cubic-bezier(0.5, 0, 0.5, 1);
	--gap-big: 25svh;
	--gap-medium: 10svh;
	--gap-small: 5svh;
	--gap-tiny: 10px;
	--padding-section: calc(125px + 15svh) 10px 0;
	interpolate-size: allow-keywords;

	@media (max-width:950px) {
		--gap-big: 17svh;
		--gap-medium: 5svh;
		--gap-small: 2svh;
		--gap-tiny: 5px;
		--padding-section: calc(125px + 15svh) 10px 0;
	}
}


::-moz-selection {
	color: var(--black);
	background: var(--white);
}
  
::selection {
	color: var(--black);
	background: var(--white);
}

.nojq  {
	display: none;
}

* {
	/* Designer mode */
	/* outline: 1px solid blue; */
	margin: 0;
	padding: 0;
	-webkit-tap-highlight-color: rgba(0,0,0,0);
}

body,
html {
	overflow-x:hidden;
}

body {
	width: 100%;
	height: 100%;
	font-family: 'ClashGrotesk', sans-serif;
	font-weight: 500;
	font-variation-settings: 'wght' 450;
	letter-spacing: 0.05ch;
	color: var(--black);
	background-color: var(--white);
	font-size: 14.5px;
	font-weight: 400;
	margin: 0;
	padding: 0;
	transition: color .3s, background-color .3s;

	@media (max-width:950px) {
		& {
			font-variation-settings: 'wght' 500;
		}
	}
}

h1,
h2,
h3,
h4,
h5,
h6 {
	font-weight: 700;
	line-height: 0.9;
}

h1 {
	font-size: 78.54px;
	font-family: 'Albert', sans-serif;
}

h2 {
	font-size: 58.92px;
}

h3 {  
	font-size: 44.2px;  
}

h4 {  
	font-size: 33.16px;  
}

h5 {  
	font-size: 24.88px;  
}

h6 {  
	font-size: 18.66px;  
}

p {
	font-size: 14px;
}

a {
	text-decoration: none;
	color: var(--white);
	width: fit-content;
	height: fit-content;
}

b {
	font-weight: 700;
}

/* ANIMATION */
@-webkit-keyframes noise {
	to { transform: translate3d(-7rem,0,0) }
}

@keyframes noise {
	0% { transform: translate3d(0,9rem,0) }
	10% { transform: translate3d(-1rem,-4rem,0) }
	20% { transform: translate3d(-8rem,2rem,0) }
	30% { transform: translate3d(9rem,-9rem,0) }
	40% { transform: translate3d(-2rem,7rem,0) }
	50% { transform: translate3d(-9rem,-4rem,0) }
	60% { transform: translate3d(2rem,6rem,0) }
	70% { transform: translate3d(7rem,-8rem,0) }
	80% { transform: translate3d(-9rem,1rem,0) }
	90% { transform: translate3d(6rem,-5rem,0) }
	to { transform: translate3d(-7rem,0,0) }
}

@keyframes float {
	0% { transform: translate3d(-177%, 180%, 0); }
	9% { transform: translate3d(-23%, -61%, 0); }
	18% { transform: translate3d(45%, -19%, 0); }
	27% { transform: translate3d(-67%, 54%, 0); }
	36% { transform: translate3d(33%, -72%, 0); }
	45% { transform: translate3d(-58%, 29%, 0); }
	54% { transform: translate3d(71%, -41%, 0); }
	63% { transform: translate3d(-39%, 68%, 0); }
	72% { transform: translate3d(56%, -83%, 0); }
	81% { transform: translate3d(-91%, 12%, 0); }
	90% { transform: translate3d(24%, -65%, 0); }
	100% { transform: translate3d(-177%, 180%, 0); }
}

/* NOT FOUND */
.not-found {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	text-align: center;
	min-height: 100svh;

	h1 {
		font-size: 5vw;
		text-transform: uppercase;
		font-family: 'Albert', sans-serif;
	}

	h2 {
		font-size: clamp(20px, 3vw, 30px);
		margin-top: 20px;
	}

	a {
		margin-top: clamp(20px, 3vw, 30px);
		padding: 10px 20px;
		background-color: var(--black);
		color: var(--white);
		text-transform: uppercase;
		border-radius: 40px;
		border: none;
		font-family: 'Albert', sans-serif;
		font-size: 18px;
	}

	@media (max-width: 950px) {
		h2 {
			font-size: 18px;
		}

		a {
			font-size: 14px;
			padding: 8px 16px;
		}
	}
}

/* CURSOR */
.cursor-1,
.cursor-2 {
	position: fixed;
	border-radius: 500px;
	mix-blend-mode: difference;
	pointer-events: none;
	transition: background-color .15s, border .15s, width .3s ease-out, height .3s ease-out;
}

.cursor-1 {
	width: 25px;
	height: 25px;
	background-color: var(--white);
	border: 1px solid var(--white);
	z-index: 10;
	animation: easeInCursorSmall .3s cubic-bezier(0.215, 0.610, 0.355, 1);

	&.hovering {
		background-color: transparent;
	}
}

.cursor-2 {
	width: 250px;
	height: 250px;
	background-color: var(--white);
	z-index: 9;
	filter: blur(10px);
	border: 10px solid #601010;
	animation: easeInCursorBig .6s cubic-bezier(0.215, 0.610, 0.355, 1);

	&.hovering {
		width: 150px;
		height: 150px;
	}
}

/* NAV */
header {
	position: fixed;
	inset: 0 0 auto 0;
	display: grid;
	grid-template-columns: repeat(12, 1fr);
	gap: var(--gap-tiny);
	padding: 10px;
	mix-blend-mode: difference;
	z-index: 9999;

	.logo {
		width: 12vw;
		max-width: 120px;
		min-width: 80px;
		height: fit-content;
	}

	.menu {
		grid-column: 4 / 10;
		display: flex;
		justify-content: space-around;

		a {
			position: relative;
			display: inline-block;
			padding: 3px 4px;
			text-transform: uppercase;

			&:last-of-type {
				background-color: var(--white);
				color: var(--black);
			}

			@media (min-width:950px) {
				&:hover {
					font-style: italic;
				}
			}
		}
	}

	.theme-toggle {
		grid-column: 13;
		justify-self: end;
		width: 25px;
		height: 25px;
		background-color: var(--white);
		border: none;
		border-radius: 50%;
		cursor: pointer;
	}

	@media (max-width:950px) {
		grid-template-columns: repeat(6, 1fr);

		/* .logo {
			width: 15vw;
			max-width: 120px;
			min-width: 80px;
		} */

		.menu {
			grid-column: 4 / 6;
			display: flex;
			flex-direction: column;
			align-items: flex-end;
			gap: 0;

			a {
				font-size: 14px;
				display: none;

				&:last-of-type {
					display: block;
					padding: 3px;
					/* margin-top: 3px; */
				}
			}
		}

		.theme-toggle {
			grid-column: 6;
		}
	}
}

/* MAIN CONTENT */
main {
	display: flex;
	flex-direction: column;
}

.grain-overlay {
	position: fixed;
	inset: 0;
	pointer-events: none;
	opacity: 0.6;
	z-index: 100;

	&:before {
		content: "";
		top: -10rem;
		left: -10rem;
		width: calc(100% + 20rem);
		height: calc(100% + 20rem);
		z-index: 9999;
		position: fixed;
		background-image: url(assets/images/gaussian_noise.webp);
		opacity: 0.15;
		pointer-events: none;
		-webkit-animation: noise 1s steps(2) infinite;
		animation: noise 1s steps(2) infinite;
	}
}

.banner {
	width: calc(100% - 20px);
	height: calc(100svh - 20px);
	min-height: 600px;
	display: flex;
	flex-direction: column;
	justify-content: flex-end;
	align-items: center;
	gap: 30svh;
	position: relative;
	padding: 10px;

	.headline {
		color: var(--white);
		mix-blend-mode: difference;
		z-index: 1;

		p {
			max-width: 30ch;
		}
	}

	.main-content {
		width: 100%;
		display: flex;
		flex-direction: row;
		justify-content: space-between;
		align-items: flex-end;

		h1,
		h2 {
			color: var(--white);
			mix-blend-mode: difference;
			z-index: 2;

			.word {
				opacity: 0;
			}
		}

		h1 {
			font-size: 6vw;
			text-transform: uppercase;
			text-wrap: balance;
			max-width: 70vw;
		}

		h2 {
			text-transform: uppercase;
			font-size: clamp(20px, 3vw, 30px);
			text-wrap: nowrap;
			width: fit-content;
			text-align: right;
			display: flex;
			flex-direction: column;
			align-items: flex-end;
		}
	}

	.background {
		position: absolute;
		top: 0;
		left: 0;
		width: 100%;
		height: 100%;
		overflow: hidden;

		span {
			position: absolute;
			display: block;
			width: 120vw;
			transform: translate3d(-77%, 0%, 0);
			aspect-ratio: 1;
			background: var(--white);
			border-radius: 50%;
            mix-blend-mode: difference;
            filter: blur(50px);
			border: 15px solid #601010;
			animation: float 30s var(--cubic-bezier) infinite;
		}

		span:nth-child(2) {
			animation-delay: 2s;
		}
	}

	@media (max-width:950px) {
		& {
			flex-direction: column;
            justify-content: flex-end;
            align-items: flex-start;
			gap: 10svh;

			.main-content {
				flex-direction: column;
				gap: 30svh;
				align-items: flex-start;

				h1 {
					font-size: 7.5vw;
					max-width: 90vw;
					align-self: flex-end;
                    text-align: right;
				}

				h2 {
					align-items: flex-start;
					text-align: left;
					font-size: 18px;
				}
			}

			.background {
				span {
					width: 150vw;
				}
			}
		}
	}
}

.featured-projects {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: 10px;
	padding: var(--padding-section);

	.project {
		display: flex;
		flex-direction: column;
		gap: 10px;

		.video-container {
			width: 100%;
			height: 100%;
			position: relative;

			&::after {
				content: "";
				position: absolute;
				inset: 0;
				background-color: var(--gray);
				z-index: -1;
			}

			video {
				width: 100%;
				height: 100%;
				object-fit: cover;
				aspect-ratio: 16 / 9;
			}
		}

		.project-info {
			display: flex;
			flex-direction: row;
			justify-content: space-between;
			gap: 10px;

			h3 {
				font-size: clamp(20px, 3vw, 30px);
			}
		}
	}

	@media (max-width:1150px) {
		& {
			.project {
				.project-info {
					.top-info,
					.bottom-info {
						grid-column: auto;
					}

					h3 {
						font-size: 20px;
					}
				}
			}
		}
	}

	@media (max-width:850px) {
		& {
			grid-template-columns: repeat(1, 1fr);
			gap: var(--gap-small);
			
			.project {
				.video-container {
					grid-column: 1;
				}

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

.visit-button {
	display: flex;
	flex-direction: row;
	align-items: center;
	gap: 10px;
	background-color: var(--black);
	color: var(--white);
	text-transform: uppercase;
	padding: 10px 20px;

	svg {
		transition: transform .3s var(--cubic-bezier);

		path {
			fill: var(--white);
		}
	}

	@media (min-width:950px) {
		&:hover {
			svg {
				transform: translateX(5px);
			}
		}
	}
}

.projects {
	display: flex;
	flex-direction: column;
	gap: var(--gap-small);
	padding: var(--padding-section);

	h3 {
		font-size: 10.8vw;
		display: flex;
		justify-content: center;
		text-transform: uppercase;
		font-family: 'Albert', sans-serif;
		text-align: center;
	}

	.post-grid {
		display: flex;
		flex-direction: column;
		padding: 20px 0;

		.post {
			display: grid;
			grid-template-columns: repeat(12, 1fr);
			border-top: 1px solid var(--gray);
			padding: 5px 0;
			width: 100%;
			position: relative;
			color: inherit;
			transition: border .3s;

			&:last-of-type {
				border-bottom: 1px solid var(--gray);
			}

			h4 {
				grid-column: 1 / 6;
				font-size: clamp(20px, 3vw, 30px);
			}

			span {
				text-transform: uppercase;
			}

			.year {
				grid-column: 6 / 7;
				letter-spacing: 0;
			}

			.type {
				grid-column: 7 / 11;
			}

			img {
				grid-column: 12 / 13;
				width: 100%;
				height: auto;
				filter: saturate(0);
			}

			&:after {
				content: "";
				position: absolute;
				inset: -1px -10px;
				background-color: var(--black);
				pointer-events: none;
				z-index: -1;
				opacity: 0;
				transition: opacity .1s;
			}

			@media (min-width:950px) {
				&:hover {
					font-style: italic;
					color: var(--white);

					&:after {
						opacity: 1;
					}
				}
			}

			@media (max-width:950px) {
				& {
					grid-template-columns: repeat(6, 1fr);

					h4 {
						grid-column: 1 / 4;
						font-size: initial;
					}

					.year {
						grid-column: 4 / 5;
					}

					.type {
						grid-column: 5 / 6;
					}

					img {
						grid-column: 6 / 7;
					}
				}
			}

			@media (max-width:550px) {
				& {
					padding: 5px 0 0;
					gap: var(--gap-tiny);
					grid-template-areas:
						"a a a"
						"b c c"
						"b c c";

					h4 {
                        order: 1;
						grid-column: 1 / 4;
                        grid-row: 1 / 2;
					}

					.year {
                        order: 3;
						grid-column: 1 / 2;
                        align-self: end;
					}

					.type {
                        order: 4;
						grid-column: 2 / 4;
                        align-self: end;
						text-align: right;
					}

					img {
						order: 2;
                        grid-column: 4 / 7;
                        grid-row: 1 / 3;
					}
				}
			}
		}

		@media (max-width:950px) {
			& {
				padding: 0;
			}
		}
	}

	@media (max-width: 950px) {
		& {
			h3 {
				font-size: 10.5vw;
			}
		}
	}
}

.about {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: var(--gap-small);
	padding: var(--padding-section);

	h3 {
		grid-column: 1 / 3;
		font-size: 10.8vw;
		justify-content: center;
		display: flex;
		text-transform: uppercase;
		font-family: 'Albert', sans-serif;
		text-align: center;
	}

	.about-content {
		display: flex;
		flex-direction: column;
		justify-content: space-between;

		.skills {
			display: flex;
			flex-direction: row;
			flex-wrap: wrap;
			gap: var(--gap-tiny);
			max-width: 60rem;

			span {
				font-size: clamp(20px, 3vw, 30px);
				padding: 0.25vw 0.75vw;
				border-radius: 100px;
				border: 1px solid var(--gray);
			}
		}
	}

	.description {
		max-width: 80ch;

		/* p {
			font-size: clamp(14px, 2vw, 18px);
			text-transform: uppercase;
		} */
	}

	img {
		width: 100%;
        height: auto;
		min-height: 800px;
		max-height: 1200px;
        object-fit: cover;
	}

	@media (max-width:950px) {
		& {
			grid-template-columns: repeat(1, 1fr);

			h3 {
				grid-column: 1 / 2;
				font-size: 10.5vw;
			}

			.about-content {
				gap: 40px;
				padding: 0 10px;

				.skills {
					justify-content: center;
					max-width: 600px;
					margin: auto;

					span {
						font-size: 18px;
					}
				}

				.description {
					padding: 10vw;
					text-align: center;
				}
			}
		}
	}

	@media (max-width:550px) {
		& {
			.about-content {
				.description {
					padding: 5vw;
				}
			}
		}
	}
}

footer {
	display: flex;
	flex-direction: column;
	gap: 20svh;
	padding: 20svh 10px 10px;
	position: relative;

	a {
		color: inherit;
	}

	.social-links {
		display: flex;
		flex-direction: column;
		align-items: center;

		h4 {
			/* text-transform: uppercase; */
			font-size: clamp(16px, 2vw, 20px);
			max-width: 25ch;
			margin: auto;
			text-align: center;
			padding: 0 var(--gap-tiny);
			text-wrap: balance;
			margin-bottom: 50px;
		}

		.social-link {
			font-size: 11.25vw;
			display: flex;
			justify-content: center;
			text-transform: uppercase;
			font-family: 'Albert', sans-serif;
			text-align: center;

			@media (min-width:950px) {
				&:hover {
					font-style: italic;
				}
			}

			@media (max-width: 950px) {
				& {
					font-size: 11vw;
				}
			}
		}
	}

	.legal {
		display: flex;
		flex-direction: row;
		align-items: center;
		justify-content: space-between;

		.budget-trigger,
		.volver-arriba,
		a {
			text-transform: uppercase;
			font-size: clamp(20px, 3vw, 36px);
			cursor: pointer;
			line-height: 105%;

			&:last-of-type {
				text-align: right;
			}

			@media (min-width:950px) {
				&:hover {
					font-style: italic;
				}
			}

			@media (max-width:950px) {
				& {
					font-size: clamp(14px, 2vw, 18px);
					padding: 5px 0;
				}
			}
		}

		@media (max-width:550px) {
			& {
				flex-direction: column;
			}
		}
	}
}

.char {
	display: block;
	margin: -0.01ch;
}

.legal-content {
	display: flex;
	flex-direction: column;
	max-width: 600px;
	margin: auto;
	padding: 100px 10px 10px;

	h1,
	h2,
	h3,
	h4,
	h5,
	h6 {
		padding-top: 20px;
	}

	ul,
	p {
		padding-top: 10px;
	}

	a {
		color: inherit;
		text-decoration: underline;
	}

	ul {
		padding-left: 30px;
	}
}

input:-webkit-autofill,
input:-webkit-autofill:hover,
input:-webkit-autofill:focus,
input:-webkit-autofill:active {
    -webkit-animation: autofill 0s forwards;
    animation: autofill 0s forwards;
}

.notification {
	position: fixed;
	left: 50%;
	bottom: 50%;
	transform: translateX(-50%);
	margin: 0;
	background-color: var(--black);
	color: var(--white);
	display: flex;
	flex-direction: row;
	align-items: center;
	justify-content: center;
	gap: 10px;
	padding: 10px 6px;
	height: fit-content;
	width: fit-content;
	transform-origin: center center !important;
	animation: notificationIn .3s var(--cubic-bezier);

	p {
		white-space: nowrap;
	}

	svg {
		display: block;
		width: 20px;
		height: 20px;

		path {
		fill: var(--white);
		}
	}
}

@keyframes autofill {
    100% {
        background: transparent;
        color: inherit;
    }
}

@-webkit-keyframes autofill {
    100% {
        background: transparent;
        color: inherit;
    }
}

@keyframes notificationIn {
	from {
		transform: translateX(-50%) scale(0.7);
		filter: blur(10px);
		opacity: 0;
	}
	to {
		transform: translateX(-50%) scale(1);
		filter: blur(0);
		opacity: 1;
	}
}

@keyframes notificationOut {
	from {
		transform: translateX(-50%) scale(1);
		filter: blur(0);
		opacity: 1;
	}
	to {
		transform: translateX(-50%) scale(0.7);
		filter: blur(10px);
		opacity: 0;
	}
}

@keyframes easeInCursorSmall {
	from {
		width: 0;
		height: 0;
	}
	to {
		width: 25px;
		height: 25px;
	}
}

@keyframes easeInCursorBig {
	from {
		width: 0;
		height: 0;
	}
	to {
		width: 250px;
		height: 250px;
	}
}

.services-section {
	padding: var(--padding-section);

	#canvas-container {
		height: 100svh;
		z-index: -100;

		canvas {
			display: block;
			filter: saturate(0.8);
			pointer-events: none;
		}
	}

	h3 {
		font-size: 10.8vw;
		display: flex;
		justify-content: center;
		text-transform: uppercase;
		font-family: 'Albert', sans-serif;
		text-align: center;
	}

	.services {
		display: grid;
		grid-template-columns: repeat(2, 1fr);
		gap: 10px;

		.section {
            min-height: 100svh;
			display: flex;
			flex-direction: column;
			justify-content: center;
			gap: 30px;
			padding: 50px 0;

			h2 {
				font-family: 'Albert', sans-serif;
				font-size: clamp(25px, 4vw, 46px);
				max-width: 20ch;
				text-transform: uppercase;
				text-wrap: balance;
			}

			.content {
				display: flex;
				flex-direction: column;

				p {
					margin-top: 10px;
					max-width: 50ch;
				}

				strong {
					font-weight: 700;
					font-variation-settings: 'wght' 600;
				}
			}

			.list {
				display: flex;
				flex-direction: column;
				text-transform: uppercase;

				span {
					width: 100%;
					border-top: 1px solid var(--gray);
					padding: 2px 0;
					/* font-size: clamp(12px, 1.8vw, 16px); */

					&:last-of-type {
						border-bottom: 1px solid var(--gray);
					}
				}
			}
		}
	}

	@media (max-width: 950px) {
		& {
			h3 {
				font-size: 10.5vw;
			}

			.services {
				display: flex;
				flex-direction: column;
				position: relative;

				#scroll-content {
					order: 1;
				}

				#canvas-container {
					order: 2;
					position: absolute;
					top: 0;
					left: 0;
					width: 100%;
					height: 100svh;
					max-height: 500px;
					min-height: 220px;
					pointer-events: none;
				}

				h2 {
					font-size: 18px;
				}

				.section {
					min-height: auto;
					padding: 100px 0;
				}
			}
		}
	}
}

.inspiring-phrase {
	padding: var(--padding-section);

	h3 {
		display: flex;
		flex-wrap: wrap;
		justify-content: center;
		gap: 0 0.3em;
		font-size: clamp(25px, 4vw, 46px);
		line-height: 100%;
		width: 75vw;
		max-width: 1300px;
		text-wrap: balance;
		margin: auto;
		text-transform: uppercase;
		font-family: 'Albert', sans-serif;
		text-align: center;

		.word {
			display: inline-flex;

			.char {
				display: inline-block;
				padding: 6px 0 0;
				overflow: hidden;

				span {
					display: inline-block;
				}
			}
		}
	}

	@media (max-width:950px) {
		& {
			h3 {
				width: 90vw;
				font-size: clamp(20px, 4vw, 46px);
			}
		}
	}
}

.dark-mode {
	background-color: var(--black);
	color: var(--white);

	.notification {
		background-color: var(--white);
		color: var(--black);

		svg path {
			fill: var(--black);
		}
	}

	.not-found a {
		background-color: var(--white);
		color: var(--black);
	}

	.projects .post {
		&:after {
			background-color: var(--white);
		}

		@media (min-width:950px) {
			&:hover {
				color: var(--black);
			}
		}

		img {
			filter: saturate(0) invert(1);
		}
	}

	.visit-button {
		background-color: var(--white);
		color: var(--black);

		svg path {
			fill: var(--black);
		}
	}

	.budget-dialog {
		background-color: var(--black);
		color: var(--white);
		box-shadow: 0 20px 60px rgba(0, 0, 0, 0.8);
		scrollbar-color: var(--gray) var(--black);

		&::-webkit-scrollbar {
			width: 8px;
		}

		&::-webkit-scrollbar-track {
			background: var(--black);
		}

		&::-webkit-scrollbar-thumb {
			background: var(--white);
		}
	}

	.budget-close {
		background-color: var(--black);
	}

	.budget-card {
		color: var(--white);

		&:hover {
			border-color: var(--white);
		}

		&:has(input:checked) {
			background-color: var(--white);
			color: var(--black);
			border-color: var(--white);
		}
	}

	.budget-fields {
		input,
		textarea {
			color: var(--white);

			&:focus {
				border-color: var(--white);
			}
		}
	}

	.budget-summary {
		background-color: rgba(255, 255, 255, 0.05);
	}

	.budget-submit {
		background-color: var(--white);
		color: var(--black);
		border-color: var(--white);

		&:hover:not(:disabled) {
			background-color: var(--black);
			color: var(--white);
		}
	}
}

/* ────────────────────────────────────────────────
   CALCULADORA DE PRESUPUESTO
   ──────────────────────────────────────────────── */

.budget-trigger {
	background: none;
	border: none;
	text-transform: uppercase;
	font-size: clamp(20px, 3vw, 36px);
	color: inherit;
	cursor: pointer;
	line-height: 105%;

	@media (max-width:950px) {
		& {
			font-size: clamp(14px, 2vw, 18px);
		}
	}
}

.budget-modal {
	position: fixed;
	inset: 0;
	z-index: 10000;
	display: none;
	pointer-events: none;
}

.budget-modal.is-open {
	display: block;
	pointer-events: auto;
}

.budget-backdrop {
	position: absolute;
	inset: 0;
	background-color: rgba(0, 0, 0, 0.6);
	backdrop-filter: blur(8px);
	-webkit-backdrop-filter: blur(8px);
}

.budget-dialog {
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
	width: min(680px, calc(100vw - 40px));
	max-height: calc(100svh - 150px);
	overflow-y: auto;
	background-color: var(--white);
	color: var(--black);
	padding: 40px;
	display: flex;
	flex-direction: column;
	box-shadow: 0 20px 60px rgba(0, 0, 0, 0.4);

	@media (max-width: 950px) {
		padding: 24px 20px;
		width: calc(100vw - 20px);
		max-height: calc(100svh - 20px);
	}
}

.budget-close {
	position: sticky;
	top: 0;
	align-self: flex-end;
	margin-bottom: 8px;
	width: 32px;
	height: 32px;
	display: flex;
	align-items: center;
	justify-content: center;
	background-color: var(--white);
	border: none;
	border-radius: 50%;
	color: inherit;
	cursor: pointer;
	padding: 0;
	z-index: 2;
	transition: transform 0.2s var(--cubic-bezier);

	svg {
		display: block;

		line {
			transform-origin: center;
			transition: transform 0.2s var(--cubic-bezier);
		}
	}

	&:hover {
		svg {
			line:first-of-type {
				transform: rotate(90deg);
			}
			line:last-of-type {
				transform: rotate(-90deg);
			}
		}
	}
}

.budget-form {
	display: flex;
	flex-direction: column;
	gap: 28px;

	h3 {
		font-family: 'Albert', sans-serif;
		font-size: clamp(24px, 3vw, 36px);
		text-transform: uppercase;
		line-height: 100%;
		margin-bottom: 8px;
	}
}

.budget-step {
	border: none;
	padding: 0;
	margin: 0;
	display: flex;
	flex-direction: column;
	gap: 12px;

	legend {
		font-size: clamp(14px, 1.4vw, 16px);
		text-transform: uppercase;
		letter-spacing: 0.05em;
		padding: 0;
		margin-bottom: 4px;

		small {
			text-transform: none;
			letter-spacing: 0;
			margin-left: 6px;
			font-size: 0.85em;
		}
	}
}

.budget-cards {
	display: grid;
	gap: 8px;
}

.budget-cards--two {
	grid-template-columns: 1fr 1fr;
	gap: 10px;

	@media (max-width: 600px) {
		grid-template-columns: 1fr;
	}
}

.budget-cards--pages {
	grid-template-columns: repeat(5, 1fr);

	@media (max-width: 600px) {
		grid-template-columns: repeat(3, 1fr);
	}
}

.budget-cards--features {
	grid-template-columns: repeat(2, 1fr);

	@media (max-width: 600px) {
		grid-template-columns: 1fr;
	}
}

.budget-card {
	display: flex;
	flex-direction: column;
	gap: 4px;
	padding: 14px 16px;
	border: 1px solid var(--gray);
	cursor: pointer;
	transition: background-color 0.2s var(--cubic-bezier), border-color 0.2s var(--cubic-bezier), color 0.2s var(--cubic-bezier);
	color: var(--black);

	input {
		position: absolute;
		opacity: 0;
		pointer-events: none;
	}

	&:hover {
		border-color: var(--black);
	}

	&:has(input:checked) {
		background-color: var(--black);
		color: var(--white);
		border-color: var(--black);
	}
}

.budget-card-title {
	text-transform: uppercase;
	font-size: clamp(14px, 1.4vw, 16px);
}

.budget-card-desc {
	font-size: 12.5px;
	line-height: 130%;
	opacity: 0.75;
}

.budget-card--compact {
	flex-direction: row;
	justify-content: center;
	align-items: center;
	padding: 12px 10px;
	text-align: center;
	text-transform: uppercase;
	font-size: 13px;
}

.budget-fields {
	display: flex;
	flex-direction: column;
	gap: 10px;

	input,
	textarea {
		padding: 12px 14px;
		border: 1px solid var(--gray);
		background: transparent;
		color: var(--black);
		font-family: inherit;
		font-size: 14.5px;
		font-weight: inherit;
		letter-spacing: inherit;
		transition: border-color 0.2s var(--cubic-bezier);

		&::placeholder {
			color: var(--gray);
			opacity: 0.7;
		}

		&:focus {
			outline: none;
			border-color: var(--black);
		}
	}

	textarea {
		resize: vertical;
		min-height: 80px;
		font-family: inherit;
	}
}

.budget-summary {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	padding: 16px 18px;
	border: 1px solid var(--gray);
	background-color: rgba(0, 0, 0, 0.03);
}

.budget-summary-label {
	display: flex;
	flex-direction: column;
	gap: 2px;

	span {
		font-family: 'Albert', sans-serif;
		text-transform: uppercase;
		font-size: 14px;
		letter-spacing: 0.05em;
	}

	small {
		font-size: 11.5px;
		color: var(--gray);
		line-height: 120%;
	}
}

.budget-total {
	font-family: 'Albert', sans-serif;
	font-size: clamp(22px, 3vw, 32px);
	font-weight: 600;
	white-space: nowrap;
}

.budget-submit {
	background-color: var(--black);
	color: var(--white);
	border: 1px solid var(--black);
	padding: 16px 24px;
	font-family: 'Albert', sans-serif;
	text-transform: uppercase;
	font-size: clamp(14px, 1.4vw, 16px);
	letter-spacing: 0.05em;
	cursor: pointer;
	transition: background-color 0.2s var(--cubic-bezier), color 0.2s var(--cubic-bezier);

	&:hover:not(:disabled) {
		background-color: var(--white);
		color: var(--black);
	}

	&:disabled {
		opacity: 0.6;
		cursor: progress;
	}
}
