/* 
=====
Reset 
=====
*/

*{
	margin: 0;
	padding: 0;
	border: none;
	box-sizing: border-box;
}
a{
	text-decoration: none;
	color:inherit;
}

/* 
=========
Variables
=========
*/

:root
{
	--couleurTresSombre: rgb(26,30,36);
	--couleurSombre: rgb(32,36,43);
	--couleurMoyenne: rgb(39,43,52);
	--couleurMoyenneClaire1x: rgb(66,73,88);
	--couleurMoyenneClaire2x: rgb(82,90,102);
	--couleurClaire: rgb(166,174,186);
	--couleurClaireStrong: rgb(196, 204, 213);
	--couleurTresClaire: rgb(255,255,255);
	--couleurAttention: rgb(102,179,255);
	--couleurContenuSpecial: rgb(49, 54, 64);
	
	--fonteTitre: 'Montserrat', sans-serif;
    --fonteCorps: 'Roboto', sans-serif;
    --fonteCode:"Consolas", "Lucida Console", Courier, monospace;
	
	--fontSizeStandard: 1rem;
	--fontSizePetit: 0.84rem;
	
	--largeurMax: 1500px;
	--largeurNav: 250px;
	--largeurNavMoins: -250px;
	--largeurMaxSansNav: calc(var(--largeurMax) - var(--largeurNav));
}

/* 
===========
Généralités
===========
*/

.invisible
{
	display: none;
}

body
{
	font-family: var(--fonteCorps);
	background-color: var(--couleurSombre);
	font-size: var(--fontSizeStandard);
	line-height: 1.5rem;
	color: var(--couleurClaire);
	text-align: justify;
	overflow: hidden;
	min-width: 320px;
}

h1
{
	color:var(--couleurTresClaire);
	font-family: var(--fonteTitre);
	font-size: 2.4rem;
	line-height: 3rem;
}
h2
{
	font-family: var(--fonteTitre);
	font-size: 1.6rem;
	line-height: 2rem;
}
p
{
	margin-top:2rem;
}
b
{
	color:var(--couleurTresClaire);
}
p a,
ul a,
ol a,
table a
{
	color:var(--couleurAttention);
}
p a:hover,
ul a:hover,
ol a:hover,
table a:hover
{
	text-decoration: underline;
}
strong
{
	color:var(--couleurClaireStrong);
}
ul,
ol
{
	margin: 1rem 0 0 2rem;
}
li
{
	margin: 0.2rem 0;
}
li > ul,
li > ol
{
	margin-top:0.5rem;
	margin-bottom: 0.5rem;
}
pre,
code,
.infoLangage
{
    font-family: var(--fonteCode);
	font-size: 0.8rem;
    background-color: var(--couleurSombre);
}
h2 code
{
	font-size: 1.6rem;
}
code
{
	word-wrap: normal;
	border-radius: 0.3rem;
	padding: 0.2rem 0.3rem;
}
.blocCode
{
	margin: 2rem 0 0 0;
	position: relative;
}
.infoLangage
{
	position: absolute;
	top: -.75rem;
	right: .75rem;
	padding: 0 .6rem;
	border-radius: 0.3rem;
	color: var(--couleurMoyenneClaire2x);
}
pre
{
	border-radius: 0.3rem;
	text-align: left;
	line-height: 1rem;
	-moz-tab-size: 3;
	-o-tab-size: 3;
	tab-size: 3;
	overflow-y: hidden; 
	overflow-x: auto;
	scrollbar-width: thin;
	scrollbar-color: var(--couleurTresSombre) var(--couleurSombre);
	/* margin: 2rem 0 0 0; */
	padding: 1rem;
	white-space: pre;
	flex-basis: 100%;
}
pre code
{
    padding: 0;
}
.tableConteneur
{
	margin-top: 2rem;
	overflow-x: auto;
	scrollbar-width: thin;
	scrollbar-color: var(--couleurTresSombre) var(--couleurSombre);
} 
table
{
	border-collapse: collapse;
	border-spacing: 0;
	width: max-content; /* contraint par max-width des th/td */
	/* table-layout: fixed;  */
}
table th
{
	background-color: var(--couleurSombre); 
}
table th,
table td
{
	max-width: 25rem;
	padding: 0.6rem 1rem;
	vertical-align: top;
	/* Contraintes de largeur */
	/* min-width: 100px; */
	/* max-width: 400px; */
}
table tbody tr:nth-last-child(n+2)
{
	border-bottom: 1px solid var(--couleurContenuSpecial);
}
/* table thead tr
{
	border-bottom: 2px solid var(--couleurContenuSpecial);
} */
table tr:hover
{
	background-color: var(--couleurContenuSpecial);
}
figure
{
	margin-top: 2rem;
	text-align: center;
}
figure img
{
	max-width: 100%;	
}
figure img + figcaption
{
	font-size: var(--fontSizePetit);
	color:var(--couleurMoyenneClaire2x);
	max-width: 400px;
	line-height: 1.1rem;
	margin: 0.5rem auto 1rem auto;
}
figure img + figcaption code
{
	padding: 0 0.1rem;
	border-radius: 0.2rem;
}
figure figcaption a
{
	color:var(--couleurAttention);
}
figure figcaption a:hover
{
	text-decoration: underline;
}
figure figcaption strong
{
	color:inherit;
}
blockquote
{
	text-align: justify;
	border-left: 5px solid var(--couleurMoyenneClaire1x);
	padding: 2rem;
	margin-top:2rem;
	background-color: var(--couleurContenuSpecial);
}
blockquote + figcaption
{
	margin-top:1rem;
	text-align: right;
}
blockquote p:first-child
{
	margin-top: 0rem;
}

/* 
===============
En-tête du site
===============
*/

header
{
    width: 100vw;
    background-color: var(--couleurTresSombre);
	overflow: hidden;
}
header div
{
	max-width: var(--largeurMax);
	margin: 0 auto;
	display: flex;
	align-items: center;
	line-height: 0;
	padding: 0.7rem 0.5rem;
}
header #menuBtn 
{
	padding:0.7rem;
}
header #menuBtn #svgPath
{
	fill:var(--couleurMoyenneClaire2x);
}
header #menuBtn:hover #svgPath
{
	fill: var(--couleurClaire);
}
header .titre
{
	font-family: var(--fonteTitre);
	font-size: var(--fontSizePetit);
	color:var(--couleurTresClaire);
	padding:1.15rem 0.9rem;
}
header .titre:hover
{
	color:var(--couleurClaire);
}
@media screen and (min-width:900px)
{
	header #menuBtn
	{
		display: none;
	}
}

/* 
===================== 
Mise en page générale 
=====================
*/

.principal
{
	display: flex;
	height: calc(100vh - 3.7rem);
	overflow: hidden;
	position: relative;
}
/* .colVide utilisée seulement en HTML pour identifier la colonne vide ^^ */
.colVide
{
	flex:1;
}
nav
{	
	flex-basis: var(--largeurNav);
	/* shrink par défaut à 1*/
	flex-shrink: 0; 
	overflow: hidden;
	position:absolute;
	z-index: 1;
	width: var(--largeurNav);
	height: 100%;
	background-color: var(--couleurSombre);
	transform: translateX(var(--largeurNavMoins));
	transition: transform 0.25s ease-in-out;
}
nav.ouvrir
{
	transform: translateX(0);
}
nav.ouvrir + main
{
	filter: blur(6px) brightness(35%);
}
nav.ouvrir + main .mainConteneur
{
	pointer-events: none;
}
main
{
	flex-grow: 1;
	flex-basis: var(--largeurMaxSansNav);
	background-color: var(--couleurMoyenne);
	/* Pour que <pre> se redimensionne 
	https://weblog.west-wind.com/posts/2016/feb/15/flexbox-containers-pre-tags-and-managing-overflow 
	*/
	min-width: 0; 
	transition: filter 0.25s ease-in-out;
}
.mainConteneur
{
	max-width: var(--largeurMaxSansNav);
	height: 100%;
	display: flex;
}
@media screen and (min-width:900px)
{
	nav
	{
		position:relative;
		transform: translateX(0);
		transition: none;
	}
} 

/* 
============
Barre de nav
============
*/

#navSectionMain,
#navSectionContenu
{
	height: 100%;
	width: var(--largeurNav);
	position: absolute;
	transition: transform 0.25s ease-in-out;
}
#navSectionMain
{
	overflow-y: auto;
	overflow-x: hidden;
	/* scrollbar Firefox */
	scrollbar-width: thin;
	scrollbar-color: var(--couleurTresSombre) var(--couleurSombre);
	/* Position par défaut */
	transform: translateX(0);
}
#navSectionMain.animer
{
	transform: translateX(var(--largeurNavMoins));
}
#navSectionContenu
{
	transform: translateX(var(--largeurNav));
}
#navSectionContenu.animer
{
	transform: translateX(0);
}
/* #navSectionContenu .scrollable
{
	height: calc(100% - 6.8rem);
} */
#navSectionContenu > section:nth-child(n+2)
{
	overflow-y: auto;
	overflow-x: hidden;
	/* scrollbar Firefox */
	scrollbar-width: thin;
	scrollbar-color: var(--couleurTresSombre) var(--couleurSombre);
	height: calc(100% - 6.8rem);
}
#navSectionMain a,
#retourAccueil,
#navSectionContenu > section:nth-child(n+2) section > a:first-child
{
	display: block;
	font-family: var(--fonteCorps);
	font-size: var(--fontSizePetit);
	font-weight: 700;
	padding: 0.8rem 1.3rem;
}
#navSectionMain a,
#navSectionContenu > section:nth-child(n+2) section
{
	border-bottom: 1px solid var(--couleurMoyenne);
}
nav a:hover
{
	background-color: var(--couleurMoyenne);
}
nav .titre
{
	border-bottom: 1px solid var(--couleurMoyenne);
}
#retourAccueil
{
	border:none;
	color: var(--couleurMoyenneClaire2x);
}
nav .titre div
{
	font-family: var(--fonteTitre);
	font-size: 1.3rem;
	color:var(--couleurTresClaire);
	padding: 1.1rem 1.3rem;
}
#navSectionContenu > section:nth-child(n+2) > section
{
	width: var(--largeurNav);
	overflow-y: hidden;
	max-height: 3.15rem; 
	transition: max-height 0.25s ease-in-out;
}
#navSectionContenu > section:nth-child(n+2) section > div a
{
	display: block;
	font-family: var(--fonteCorps);
	font-size: var(--fontSizePetit);
	padding: 0.5rem 1.3rem 0.6rem 2.4rem;
}
.chapitreChoisi
{
	background-color: var(--couleurMoyenne);
	color: var(--couleurAttention);
	position: relative;
}
.chapitreChoisi::before
{
	display: block;
	position:absolute;
	content: '';
	background-color: var(--couleurAttention);
	width: 3px;
	height: 100%;
	top:0;
	left:0;
}

/* 
===============
Contenu de page 
===============
*/

.mainContenu
{
	flex-grow: 1;
	flex-basis: 100%; 
	overflow-y: auto;
	overflow-x: hidden;
	/* scrollbar Firefox */
	scrollbar-width: thin;
	scrollbar-color: var(--couleurSombre) var(--couleurMoyenne);
	/* Firefox seul mais pas satisfaisant : */
	/* scroll-behavior: smooth; */
}
.mainContenu > section
{
	padding: 2rem 2rem 0rem 2rem;
}
@media screen and (min-width:900px)
{
	.mainContenu > section
	{
		padding: 0rem 3.6rem;
		padding: 3rem 3.6rem 0rem 3.6rem;
	}
}
.mainContenu > section:first-child > h1 + p
{
	font-weight: 700;
	color:var(--couleurMoyenneClaire2x);
	font-size: var(--fontSizePetit);
	margin-top: 0.3rem;
}
.mainContenu > section:first-child > h1 + p + p
{
	font-size: 1.1rem;
	margin-top: 0.5rem;
}
.mainContenu > section:nth-child(n+2)
{
	overflow: hidden;
	transition: max-height 0.25s ease-in-out;
	/* max-height non défini, voir js */
}
/* .mainContenu > section:nth-child(n+2).fermer
{
	max-height: 7rem;
} */
.sousTitre
{
	display: flex;
	justify-content: space-between;
	align-items: center;
	cursor: pointer;
	border-bottom: 1px solid var(--couleurMoyenneClaire1x);
	padding: 0.9rem 0rem;
}
.sousTitre img
{
	margin-left: 1rem;
	transition: transform 0.25s ease-in-out;
}
.rotation180
{
	transform: rotate(-180deg);
}
aside
{
	display: none;
}
@media screen and (min-width:1200px)
{
	aside
	{
		display: block;
		flex-grow: 0;
		flex-shrink: 0;
		flex-basis: 230px;
		font-size: var(--fontSizePetit);
		line-height: 1rem;
		padding: 1.2rem 0rem;
		overflow-y: auto;
		overflow-x: hidden;
		/* scrollbar Firefox */
		scrollbar-width: thin;
		scrollbar-color: var(--couleurSombre) var(--couleurMoyenne);
		border-left: 1px solid var(--couleurSombre);
	}
	aside a
	{
		display: block;
		text-align: left;
		padding: 0.5rem 1.8rem 0.6rem 1.8rem;
	}
	aside a:first-child
	{
		font-weight: 700;
	}
	aside a.articleSectionChoisie
	{
		color:var(--couleurAttention);
	}
	aside a:hover
	{
		background-color: var(--couleurContenuSpecial);
	}
}
.mainContenu > section.finDePage
{
    min-height: 2em;
    font-family: var(--fonteTitre);
    line-height: 1em;
	color: var(--couleurMoyenneClaire1x);
	text-align: right;
	padding-bottom:3rem;
}
