@import url('https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;1,100&display=swap');
:root {
    --bg: #202026;
    --bg-2: #23232A;
    --bg-3: #282830;
    --bg-4: #2B2B30;
    --bg-5: #303035;
    --bg-6: #37373C;
    --bg-7: #B4B4B4;
    --primary: #c21212;
}

html {
    scroll-behavior: smooth;
  	scrollbar-width: thin;
  	scrollbar-color: var(--primary) rgba(0, 0, 0, 0);
}

*::-webkit-scrollbar {
	width: 6px;
	height: 6px;
	border: none;
}

*::-webkit-scrollbar-track {
	background: rgba(0, 0, 0, 0);
}

*::-webkit-scrollbar-thumb {
	background-color: var(--primary);
	border-radius: 3px;
	margin-right: 10px;
}

body {
	background-color: var(--bg);
	padding: 0px;
	margin: 0px;
	font-family: 'Poppins', arial, sans-serif;

	&.full {
		&::before {
			content: "";
			background-color: var(--bg);
			width: 100vw; height: 20px;
			position: fixed; top: 0px; left: 0px; z-index: 9999;

			@media (max-width: 500px) {
				height: 10px;
			}
		}

		&::after {
			content: "";
			background-color: var(--bg);
			width: 100vw; height: 20px;
			position: fixed; bottom: 0px; left: 0px; z-index: 9999;

			@media (max-width: 500px) {
				height: 10px;
			}
		}
	}
}

.hamburger {
	display: block;
}

aside {
	color: white;
	background-color: var(--bg-3);
	box-shadow: 0px 0px 10px 0px #191919;
	overflow: auto;
	scroll-behavior: smooth;
	scrollbar-width: none;
	transition: left 1s, padding-right 1s;

	.social {
		background-color: var(--bg-4);
		display: flex;
		transition: 1s;
	}
}

/* Desktop */
@media (min-width: 900px) {
	.hamburger {
		display: none;
	}
	aside {
		position: fixed; top: 10px; left: 20px; z-index: 10;
		padding: 20px; padding-bottom: 40px;
		height: calc(100vh - 90px);
		width: 20em;
		transition: 1s;

		.social {
			position: fixed; bottom: 20px; left: 20px;
			height: 40px;
			width: calc(20em + 40px);
		}
	}
}

/* Touche tablet */
@media (max-width: 900px) and (min-width: 500px) {
	aside {
		position: fixed; top: 20px; left: -19em; z-index: 10;
		padding: 1em; padding-bottom: 2em;
		height: calc(100dvh - 4em);
		width: 20em;
		transition: left 1s;

		&.opened {
			left: 20px;
		}

		.social {
			position: fixed; bottom: 20px; left: -19em;
			height: 3em;
			width: 22em;

			aside.opened & {
				left: 20px;
			}
		}
	}
}

/* Mobile */
@media (max-width: 500px) {
	aside {
		position: fixed; top: 10px; z-index: 10;
		padding: 20px; padding-bottom: 40px;
		height: calc(100dvh - 80px);
		width: calc(100vw - 60px);
		left: calc(-100vw + 40px);
		padding-right: 50px;

		&.opened {
			left: 10px;
			padding-right: 20px;
		}

		.social {
			position: fixed; bottom: 10px;
			height: 40px;
			left: calc(-100vw + 20px);
			width: calc(100vw - 20px); min-width: 320px;
			padding-right: 50px;

			aside.opened & {
				left: 10px;
				padding-right: 0px;
			}
		}
	}
}

aside iframe {
	width: 100%; height: 100%;
	border: none;
}


aside::-webkit-scrollbar {
	display: none;
}

figure.avatar {
	display: flex;
	width: 40%;
	aspect-ratio: 1 / 1;
	margin: auto;
	transition: .25s;

	&:hover {
		width: 80%;
	}

	img {
		width: 100%; height: 100%;
		border-radius: 50%;
	}
}

aside {
	h1 {
		text-align: center;
		margin-bottom: 0;
		font-size: 1.5rem;
	}
	h3 {
		text-align: center;
		margin: 0 0 1.5rem 0;
		color: var(--bg-7);
		font-size: 1rem;
	}
}

hr {
	height: 1px; width: 100%;
	text-align: center;
	border: none; border-top: 1px solid var(--bg-6);
	margin: 4rem 0 1rem;
}

h2 {
	margin-top: 0;
	font-size: 1.5em;
}

h3 {
	margin: 2rem 0 0;
}

a {
	color: white;
	text-decoration: none;
}

aside table {
	text-align: left;
	border: none;
	width: 100%;

	th {
		text-align: left;
	}
	td {
		padding: 5px;
	}
}

.progress {
	display: block;
	position: relative;
	margin-bottom: 10px;
}

.progress-value {
	position: absolute; top: 0px; right: 0px;
	color: var(--bg-7);
}

.progress-base {
	display: block;
	width: 100%;
	height: 4px;
	margin-top: 3px;
	border-radius: 2px;
	background-color: var(--bg-5);
}

.progress-bar {
	display: block;
	position: relative; top: -4px;
	width: 100%;
	height: 4px;
	border-radius: 2px;
	background-color: var(--primary);
}

.circle-charts {
	display: flex;
	justify-content: space-around;
}

.circle-chart {
    display: flex;
    flex-direction: column;
	text-align: center;

	svg text tspan {
		fill: var(--bg-7);
	}
}

aside hr {
	height: 1px; width: 100%;
	text-align: center;
	border: none; border-top: 1px solid var(--bg-5);
	margin-top: 20px; margin-bottom: 10px;
}

ul {
	li {
		margin-bottom: 5px;
		list-style: inside;
	}

	&.check {
		padding: 0; padding-left: 10px;
		display: flex;
		flex-wrap: wrap;
		justify-content: space-between;

		li {
			list-style: none;
			width: 50%;

			i {
				color: var(--primary);
				margin-right: 5px;
			}
		}
	}
}


/* Social */

.social a {
	font-size: 1.5em;
	margin: auto;
	transition: .25s;
	&:hover {
		transform: scale(1.1);
	}
}


/* Hamburger */

.hamburger {
	width: 30px; height: 30px;
	position: fixed; top: 30px; left: 10px;
	cursor: pointer;
	transition: 1s;

	span {
		display: block;
		width: 30px; height: 5px;
		margin-bottom: 5px;
		background-color: white;
		border-radius: 5px;
		transition: .5s;
	}
}

aside.opened .hamburger {
	left: calc(100vw - 50px);

	span:nth-child(1) {
		transform: rotate(45deg) translateY(13.5px);
	}
	span:nth-child(2) {
		transform: scaleX(0);
	}
	span:nth-child(3) {
		transform: rotate(-45deg) translateY(-13.5px);
	}
}


/* Lang selection */

#lang-selector {
	position: absolute; top: 4em; right: 4em;
	z-index: 1;
	display: flex;

	@media (max-width: 900px) {
		top: 30px; right: 30px;
	}

	a {
		margin: auto; margin-left: .75em;
		transition: .25s;
		&:hover {
			transform: scale(1.1);
		}
	}
}

#lang-selector img {
	width: 2em; height: 1.435em;
}
#lang-selector a.current img {
	background-color: white;
	padding: 2px;
	border-radius: 5px;
}


/* Content */

.back-button {
	display: block;
	transform: translateY(.7rem) translateX(.5rem);
}

main.content {
	background-color: var(--bg-2);
	color: white;
}

main.content {
	@media (min-width: 900px) {
		width: calc(100vw - 20em - 130px);
		margin-left: calc(20em + 60px);
		margin-top: 10px;
		padding: 20px;
	}
	@media (max-width: 900px) and (min-width: 500px) {
		width: calc(100vw - 95px);
		margin-left: calc(1em + 30px);
		margin-top: 20px;
		padding: 20px;
	}
	@media (max-width: 500px) {
		width: calc(100vw - 80px);
		margin-left: 50px;
		margin-top: 10px;
		padding: 10px;
	}
}

article, footer {
	background-color: var(--bg-4);
	padding: 25px;

	@media (max-width: 500px) {
		padding: 15px;
	}
}

footer {
	margin-top: 20px;
	font-size: .85em;
	text-align: center;
}

.button {
	display: block;
	width: fit-content;
	padding: .5em 1em;
	border: var(--primary) 1px solid;
	margin: 0 auto;
	border-radius: 3rem;
	text-align: center;
	transition: .5s;
	&:hover {
		background-color: var(--primary);
	}
}

.float {
	float: right;
	max-width: 30%;

	.right {
		float: left;
	}
}

.tags {
	&:is(span) {
		margin-left: .5rem;
	}
	&:is(:not(span)) {
		display: flex;
		flex-wrap: wrap;
		align-items: center;
		margin-top: .5rem;
	}
	gap: 0.5em;
	margin: 0;

	@media (max-width: 500px) {
		justify-content: center;
		margin-top: .2rem;
	}
}

.tags span {
	color: var(--primary);
	font-size: .75em;
	background-color: var(--bg-2);
	border-radius: 1em;
	padding: .35em 1em;
	margin: 0;
	white-space: pre;
	position: relative; top: -.175rem;

	@media (max-width: 500px) {
		font-size: .65em;
		padding: .25em .75em;
	}
}

/* Formation et Stages */

#formation > div {
	position: relative;
}

:is(#formation, #stages, #exp-pro) {
	h3 {
		margin: 0 0 .5rem;
		font-size: 1.25em;
		line-height: 1.75;
	}

	h4 {
		color: var(--primary);
		margin: 0;
		margin-top: 1rem;
	}

	p {
		color: var(--bg-7);
		margin: 0;
	}
}

#formation img {
	float: right;
	max-width: 30%;
	max-height: 5rem;
	&::after {
		content: "";
		display: block;
		clear: both;
	}
}


/* Engagements */

.timeline {
	display: flex;
	position: relative;
}

.timeline-list {
	width: 100%;

	.elmt {
		min-height: 150px;
		position: relative;
		margin-right: 20px;
		box-shadow:0px 0px 10px 0px var(--bg-2);
		padding: 20px;

		@media (max-width: 900px) {
			margin-right: 10px;
			padding-top: 3.5rem;
		}
		@media (max-width: 500px) {
			.timeline-list .elmt {
				padding: 3.5rem 10px 10px;
			}
		}

		.infos {
			overflow: hidden;
		}
		
		img {
			display: block;
			width: 150px;
			margin-right: 1rem;
			float: left;

			@media (max-width: 900px) {
				max-height: 150px; width: auto;
				max-width: 100%;
				float: none;
				margin: auto; margin-bottom: .5rem;
			}

			& + img {
				@media (min-width: 500px) {
					float: right;
					margin-left: 10px;
				}
			}
			&::after {
				content: "";
				display: block;
				clear: both;
			}
		}

		& + .elmt {
			margin-top: 1rem;
			@media (min-width: 500px) {
				margin-top: 50px;
			}
		}
	}
}

.timeline .elmt h4 {
	color: var(--primary);
	position: absolute; top: 12px; right: -10px;
	font-size: 1em;
	background-color: var(--bg-2);
	border-radius: 50px;
	padding: 5px; padding-left: 10px; padding-right: 10px;
	margin: 0;
	z-index: 1;

	@media (max-width: 500px) {
		top: 12px; right: 5px;
		width: calc(100% - 30px);
		text-align: center;
	}

	&::before {
		position: absolute; top: .65rem; right: -19px;
		content: ""; display: block;
		height: 10px; width: 10px;
		border-radius: 50%; border: 2px solid var(--primary);
		background-color: var(--bg);
		z-index: 1;

		@media (max-width: 500px) {
			right: -24px;
		}
	}
}

.timeline .elmt h3 {
	margin: 0 0 .5rem;
	
	@media (min-width: 500px) {
		width: calc(100% - 6rem);
	}
}

.timeline .infos p {
	margin: auto;
}

.socials {
	display: flex;
	justify-content: flex-start;
	align-items: center;

	a {
		text-align: center;
		padding: 10px;
		font-size: 1.25rem;
		color: white;
		transition: .25s;

		&:hover {
			transform: scale(1.2);
		}
	}
}

a.main {
	display: block;
	transition: .25s;
	font-size: 1rem;
	&:hover {
		transform: translateX(10px);
	}
}


.timeline-bar {
	height: 100%; width: 5px;
	background-color: var(--bg);
	position: absolute; top: 0px; right: -5px;
	display: block;
	z-index: 0;
}


/* Zoom Projet */

#quesaco img {
	display: block;
	float: left;
	width: 150px;
	margin-right: 10px;
	& + img {
		float: right;
		margin-left: 10px;
	}
}


/* Développement info */

#dev-languages {
	display: flex;
	flex-direction: row;
	flex-wrap: wrap;
	justify-content: space-evenly;

	p {
		text-align: center;
	}

	& > div > div {
		display: flex;
		flex-direction: row;
		align-items: center;
		justify-content: center;

		i {
			font-size: 2em;
			margin: 5px;
			position: relative;

			&::after {
				content: attr(data-legend);
				display: none;
				position: absolute;
				top: 125%; left: 0;
				font-size: .5em;
				font-family: 'Poppins', arial, sans-serif;
				padding: 5px; border-radius: 5px;
				background-color: var(--bg-2);
				font-weight: normal;
				white-space: pre;
			}
			&:hover::after {
				display: block;
			}
		}
	}
}

:is(#stages, #exp-pro) > div {
	margin: 2rem 0;
}


.open-fullscreen-viewer {
	cursor: pointer;
	transition: .25s;
	&:hover {
		transform: scale(.9);
	}
}

#fullscreen-viewer {
	position: fixed; top: 20px; left: 20px; z-index: 100;
	width: calc(100dvw - 40px); height: calc(100dvh - 40px);
	background-color: rgba(0, 0, 0, .8);
	display: none;
	
	@media (max-width: 500px) {
		top: 10px; left: 50px;
		width: calc(100dvw - 60px);
		height: calc(100dvh - 20px);
	}

	img {
		position: absolute; top: 50%; left: 50%;
		transform: translate(-50%, -50%);
		max-width: 90%; max-height: 90%;
	}

	.close {
		position: absolute; top: 30px; right: 30px;
		font-size: 3rem;
		color: white;
		cursor: pointer;
		
		@media (max-width: 500px) {
			top: 0; right: 1rem;
		}
	}
}

@keyframes float {
	0% { transform: translateY(0) translateX(0); }
	20% { transform: translateY(-60%) translateX(0); }
	40% { transform: translateY(0) translateX(20%); }
	60% { transform: translateY(60%) translateX(0); }
	80% { transform: translateY(0) translateX(-20%); }
	100% { transform: translateY(0) translateX(0); }
}

.word-cloud {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	align-items: center;
	gap: 2em;
	cursor: default;

	li {
		list-style: none;
		margin: 0;
		transition: .25s;
		/* animation: float 30s infinite alternate cubic-bezier(.45,.05,.55,.95); */

		&:hover {
			transform: scaleX(1.05);
		}

		&:nth-child(odd) {
			animation-direction: reverse;
		}
		&:nth-child(n) {
			animation-delay: 0s;
		}
		&:nth-child(n+1) {
			animation-delay: 1s;
		}
		&:nth-child(n+2) {
			animation-delay: 2s;
		}
		&:nth-child(n+3) {
			animation-delay: 3s;
		}

	}
}