/* ---------------------------------- HERO ---------------------------------- */

.hero-section {
	display: flex;
	justify-content: space-between;
	align-items: center;

	padding: 0 50px;
	margin: 50px 0;
	margin-bottom: 100px;
	gap: 40px;
}

.hero-section .text {
	flex: 5;
}

.hero-section .text .typewriter {
	font-size: var(--fs-xxl);
}

.hero-section .text .typewriter div {
	display: flex;
	align-items: center;
}

.hero-section .text .typewriter span {
	margin-right: 10px;
	white-space: nowrap;
}

.hero-section .text .typewriter p {
	font-family: monospace;
	overflow: hidden;
	border-right: 1px solid;
	width: 0;
	/* steps = number of characters */
	animation:
		typing 3s steps(7) forwards,
		blink 1s 3s step-end infinite;
}

@keyframes typing {
	from {
		width: 0;
	}

	to {
		width: 7ch;
	}
}

@keyframes blink {
	50% {
		border-color: transparent;
	}
}

.hero-section .text .social-links {
	margin-top: 25px;
}

.hero-section .text .social-links a {
	color: var(--blue);
	display: inline-block;
	padding: 5px 10px;
	border: 2px solid var(--blue);
	border-radius: 10px;
	margin-right: 10px;
	margin-bottom: 10px;
	transition: .5s;
}

.hero-section .text .social-links a:hover {
	color: var(--red);
	border: 2px solid var(--red);
}

.hero-section .headshot {
	flex: 2;
	display: flex;
	justify-content: right;
}

.hero-section .headshot img {
	width: 350px;
	border-radius: 50%;
}

/* -------------------------------- PROJECTS -------------------------------- */

.projects-section {
	justify-content: space-between;
	align-items: center;

	padding: 0 50px;
	margin: 50px 0;
	margin-bottom: 100px;
}

.projects-section h2 {
	font-size: var(--fs-xxl);
}

.project-slider {
	display: flex;
	align-items: center;
	justify-content: space-between;
	margin-top: 30px;
	position: relative;
	width: 100%;
}

.slider-btn {
	background-color: var(--light_white);
	border: none;
	border-radius: 50%;
	width: 40px;
	height: 40px;
	cursor: pointer;
	transition: 0.5s;
	margin: 0 10px;
}

.slider-btn:hover {
	background-color: var(--red);
}

.project-cards {
	display: flex;
	overflow-x: hidden;
	scroll-behavior: smooth;
	width: calc(100% - 100px);
	margin: 0 auto;
	gap: 20px;
}

.project-card {
	min-width: 300px;
	max-width: 350px;
	border-radius: 10px;
	overflow: hidden;
	transition: .5s;
	flex: 1;
}

.project-card:hover {
	transform: translateY(-5px);
	box-shadow: 0 0px 5px var(--red);
}

.project-image {
	height: 200px;
	overflow: hidden;
}

.project-image img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: .5s;
}

.project-card:hover .project-image img {
	transform: scale(1.05);
}

.project-info {
	padding: 5px;
}

.project-info h3 {
	margin-bottom: 10px;
}

.project-info p {
	font-size: var(--fs-sm);
	margin-bottom: 5px;
}

.tech-tags {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin-bottom: 10px;
}

.tech-tags .tag {
	background-color: var(--blue);
	color: var(--light_white);
	padding: 5px 10px;
	border-radius: 20px;
	font-size: var(--fs-xs);
	font-weight: 600;
}

.tech-tags .tag i {
	font-size: var(--fs-base);
	margin-right: 5px;
}

.project-links {
	display: flex;
	margin: 0 5px;
	gap: 15px;
}

.project-links a {
	display: flex;
	align-items: center;
	gap: 5px;
	color: var(--blue);
	font-weight: 600;
	transition: .5s;
}

.project-links a:hover {
	color: var(--red);
}

.slider-dots {
	display: flex;
	justify-content: center;
	gap: 10px;
	margin-top: 20px;
}

.slider-dots .dot {
	width: 10px;
	height: 10px;
	border-radius: 50%;
	background-color: var(--white);
	cursor: pointer;
	transition: .5s;
}

.slider-dots .dot.active {
	background-color: var(--red);
}

/* --------------------------------- CONTACT -------------------------------- */

.contact-section {
	padding: 0 50px;
	margin-bottom: 100px;
}

.contact-section h2 {
	font-size: var(--fs-xxl);
	margin-bottom: 20px;
}

.contact-section form {
	display: flex;
	flex-direction: column;
}

.contact-section form input,
.contact-section form textarea {
	font-family: "Poppins", sans-serif;
	border: 2px solid var(--blue);
	background-color: transparent;
	padding: 10px;
	margin-bottom: 15px;

	outline: none;
	resize: none;
	transition: .5s;
}

.contact-section form input:focus,
.contact-section form textarea:focus {
	border: 2px solid var(--red);
	box-shadow: 0 0 5px var(--red);
}

.contact-section form button {
	font-size: var(--fs-base);
	color: var(--light_white);
	background-color: var(--blue);
	border: none;
	height: 50px;
	cursor: pointer;
	transition: .5s;
}

.contact-section form button:hover {
	background-color: var(--red);
	transform: translateY(-2px);
}

.contact-section .error {
	color: var(--red);
}

/* ------------------------------- RESPONSIVE ------------------------------- */

@media (max-width: 740px) {
	/* ---------------------------------- HERO ---------------------------------- */

	.hero-section {
		flex-direction: column-reverse;
	}

	.hero-section .headshot img {
		width: 300px;
	}

	/* -------------------------------- PROJECTS -------------------------------- */
	.project-cards {
		width: calc(100% - 80px);
	}

	.project-card {
		min-width: 250px;
	}
}

@media (max-width: 600px) {
	/* ---------------------------------- HERO ---------------------------------- */

	.hero-section {
		padding: 0 20px;
	}

	/* -------------------------------- PROJECTS -------------------------------- */

	.projects-section {
		padding: 0 20px;
	}

	.slider-btn {
		margin: 10px 0;
	}

	.project-cards {
		width: 100%;
		overflow-x: auto;
		padding: 10px 0;
	}

	.project-card {
		min-width: 230px;
	}

	/* --------------------------------- CONTACT -------------------------------- */

	.contact-section {
		padding: 0 20px;
	}
}

@media (max-width: 375px) {
	.hero-section .text .typewriter span {
		font-size: var(--fs-xxl);
	}

	.hero-section .text .typewriter p {
		font-size: var(--fs-xxl);
	}
}