

/* Palette couleur à définir en variable : cf. standard.css */
.cache{
	display: none !important;
}

.grise, .bouton:disabled{
	opacity: 60%;
	cursor: auto !important;	/* important obligatoire pour surcharger comportement par défaut du navigateur */
}

/*----------------------
	Libelle
-----------------------*/
label{
	margin-right: 5px;
}

/*----------------------
	Lien
-----------------------*/
a{
	color: var(--couleurPrincipale);
}

a:hover{
	color: var(--couleurPrincipaleVariante);
	cursor: pointer;
}


/*----------------------
	Bouton
-----------------------*/
/* attention la classe bouton a été considérée pour transformer un élément qui n'est pas en bouton (et qui n'en a pas la forme) pour fonctionner comme tel. Elle n'est donc pas ajouter aux règles ci-dessous s'appliquant aux vrais boutons. Sauf pour quelques éléments comme le pointeur... etc */
.bouton:hover{
	cursor: pointer;
}

button, input[type="button"], input[type="submit"]{
	min-height: 38px;
	margin-top: 5px;
	margin-right: 5px;	
	background-color: var(--couleurPrincipale);
	color: var(--couleurSurPrincipale);
	border: none;
	cursor: pointer;
	height: 42px;
	border-radius: 5px;
}

button:hover, input[type="button"]:hover, input[type="submit"]:hover{
	background-color: var(--couleurPrincipaleVariante);
	cursor: pointer;
}

button:disabled, input[type="button"]:disabled, input[type="submit"]:disabled{
	background-color: var(--couleurInactif);
	color : var(--couleurSurInactif);
	cursor: unset;
}

.boutonValider{
    background-color: var(--couleurValidation);
    color : var(--couleurSurValidation);
}
 
.boutonValider:hover{
    background-color: var(--couleurValidationVariante);
    color : var(--couleurSurValidation);
}
 
.boutonAnnuler{
    background-color: var(--couleurAnnulation);
    color : var(--couleurSurAnnulation);
}
 
.boutonAnnuler:hover{
    background-color: var(--couleurAnnulationVariante);
}

/*----------------------
	BoutonImage
-----------------------*/
.boutonImage:hover{
	cursor: pointer;
}

/*----------------------
	Saisie
-----------------------*/
input[type="number"]{
	/* pour supprimer les fleches sur firefox */
	-moz-appearance: textfield;
}

/* pour supprimer les flèches sur chrome */
input[type="number"]::-webkit-outer-spin-button, input[type="number"]::-webkit-inner-spin-button {
    -webkit-appearance: none;
    margin: 0;
}

textarea{
	padding: 1px 2px;
	font-family: "Roboto", sans-serif;
}

textarea, input[type="number"], input[type="text"], input[type="email"], input[type="search"], input[type="tel"], input[type="url"], input[type="week"], input[type="password"], select, input[type="date"]{
	font-size: 14px;
}

.saisieAvecIcone{
	position: relative;
}

.saisieAvecIcone input{
	padding-left: 30px;
	height: 30px;
	box-sizing: border-box;
}

.saisieAvecIcone svg{
	position: absolute;
	margin-left: 2px;
	width: 24px;
	height: 30px;
	fill: var(--couleurPrincipale);
}

/*----------------------
	Combo
-----------------------*/

.saisieAvecIcone select{
	padding-left: 30px;
	height: 30px;
	box-sizing: border-box;
}

/*----------------------
	Liste
-----------------------*/
.liste .element{
	padding: 10px;
	margin: 10px;
	background-color: var(--couleurFondConteneur);
	color: var(--couleurSurFondConteneur);	
	box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24);
	transition: all 0.3s cubic-bezier(.25,.8,.25,1);
}

.liste .element:hover{
	box-shadow: 0 14px 28px rgba(0,0,0,0.25), 0 10px 10px rgba(0,0,0,0.22);
	cursor: pointer;
}

.liste .element.elementAvecBoutonAction{
	display: flex;
}

.liste .element.elementAvecBoutonAction svg{
	margin: 0px 5px 0px 5px;
}

.liste .element.elementAvecBoutonAction .conteneurActionGauche{
	display: flex;
	align-items: center;
	justify-content: center;
}

.liste .element.elementAvecBoutonAction .conteneurLigne{
	flex: 1;
 	display: flex;
  	flex-direction: column;
}

.liste .element.elementAvecBoutonAction .conteneurActionDroite{
	display: flex;
	align-items: center;
	justify-content: center;
}

.liste .element .ligneTrace{
	font-style: italic;
  	color: #999;
 	font-size: 12px;
}

.liste .indication{
	margin-top: 10px;
	text-align: center;
}

.liste .barreProgressionIndefinie{
	margin-top: 10px;
}

.liste .element.selectionne{
	transition: border 0s;
	border: 3px solid var(--couleurPrincipale);
}

/*----------------------
	Mosaique
-----------------------*/

.mosaique{
	flex: 1;
	display: flex;
	align-items: flex-start;
	justify-content: center;
	flex-wrap: wrap;
	overflow-y: auto;
	padding: 10px;
}

.mosaique .element{
	padding: 10px;
	margin: 10px;
	background-color: var(--couleurFondConteneur);
	color: var(--couleurSurFondConteneur);		
	box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24);
	transition: all 0.3s cubic-bezier(.25,.8,.25,1);
}

.mosaique .element:hover{
	box-shadow: 0 14px 28px rgba(0,0,0,0.25), 0 10px 10px rgba(0,0,0,0.22);
	cursor: pointer;
}

.liste .element.selectionne{
	border: 3px solid var(--couleurPrincipale);
}

/*----------------------
	BarreProgression
-----------------------*/

progress[value] {
	/* je désactive les styles par défaut des navigateurs*/
	-webkit-appearance: none;
	-moz-appearance: none;
	appearance: none;

	border: none;
	
	background-color: white;	
	
	height: 4px;
}

progress{
	background-color: #E5E5E5;
}

progress::-webkit-progress-bar{
	background-color: #E5E5E5;
}

/* pour chrome */
progress[value]::-webkit-progress-value {
	background-color: var(--couleurPrincipale);	
}

/* pour firefox */
progress[value]::-moz-progress-bar { 
	background-color: var(--couleurPrincipale);	
}

/* pour chrome */
.progressionRouge[value]::-webkit-progress-value {
	background-color: red;	
}

/* pour firefox */
.progressionRouge[value]::-moz-progress-bar { 
	background-color: red;	
}

/*----------------------
	ChampUpload
-----------------------*/

.champUpload input[type="file"]{
	/* comme chaque navigateur fait sa sauce, je supprime le champs, et je 
	laisse mettre un message dans le label correspondant qui dit de cliquer
	ici pour télécharger le fichier*/
	display:none;
}

.champUpload label{
	/* simulera un lien */ 
	text-decoration: none;
	cursor: pointer;
}

.champUpload label:hover{
	color: var(--couleurPrincipaleVariante);	
}


.champUpload .liste .ligne{	
	display: flex;
	align-items: center;
	
	width: 100%;
	height: 40px;
}

.champUpload .liste .ligne svg{
	height: 25px;
	width: 25px;
	cursor: pointer;
}

.champUpload .liste .ligne .boutonRelancer{
	margin-right: 10px;
}

.champUpload .liste .ligne .description{
	flex: 1;
	display: flex;
	flex-direction : column;
	margin-left: 10px;
	margin-right: 10px;
	height: 40px;
	
	justify-content: center;
}

.champUpload .liste .ligne img{
	width: 48px; 
	max-height: 40px;
	margin-left: 10px;
}

.champUpload .liste .ligne .description progress{
	margin-top : 2px;
	width: 100%;
}

.champUpload .liste .ligne .erreur progress[value]{
	background-color: var(--couleurErreur);		
}

.champUpload .liste .ligne .erreur progress[value]::-webkit-progress-bar {
	background-color: var(--couleurErreur);	
}

.champUpload .liste .ligne .boutonAnnuler {
	background-color: unset;
}

/*----------------------
	BarreProgression
-----------------------*/
.pointageImage{
	position: relative;
	overflow: hidden;
	border: solid 2px #e4e4e4;
}

.pointageImage .point{
	position: absolute;
}

/*----------------------
	Conteneur volant
-----------------------*/
.conteneurVolant{
	position: absolute; 
	background-color: var(--couleurFondConteneur);
	color: var(--couleurSurFondConteneur);	
	box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24);
	padding: 20px 20px 20px 20px;
	z-index: 9990;	/* pour s'afficher par dessus tout sauf certains éléments qui devront se répartir sur 10 valeurs restantes (div chargement, ...) */
	border: solid 2px #e4e4e4;
}

/*----------------------
	interrupteur bascule
----------------------*/

.interrupteurBascule label{
	position: relative;
	display: inline-block;
	width: 100%;
	height: 34px;
	margin: 0px; /* label global à une margin right de 5 donc je la désactive */
}

.interrupteurBascule label input { 
	opacity: 0;
	width: 0;
	height: 0;
}

.interrupteurBascule label .slider {
	position: absolute;
	cursor: pointer;
	top: 0;
	left: 0;
	right: 0;
	bottom: 0;
	background-color: #ccc;
	transition: .4s;
	display: flex;
	align-items: center;
}

.interrupteurBascule label .slider:before {
	position: absolute;
	content: "";
	height: 26px;
	width: 50%;
	left: 4px;
	bottom: 4px;
	background-color: white;
	transition: .4s;
	opacity: 50%;
}

.interrupteurBascule label input:checked + .slider:before {
	transform: translateX(calc(100% - 8px));	/* largeur width - largeur before - left before x 2 */
}

.interrupteurBascule label .slider {
	border-radius: 34px;
}

.interrupteurBascule label .slider:before {
	border-radius: 34px;
}

.interrupteurBascule label .slider b{
	flex: 1;
	z-index: 99;
	position: relative;
	text-align: center;
	user-select: none;
}

.interrupteurBascule label .slider b:first-child{
	margin-left: 5px;
}

.interrupteurBascule label .slider b:not(:first-child){
	margin-right: 5px;
}

/*----------------------
	barreProgressionIndefinie
----------------------*/

.barreProgressionIndefinie{
	width:100%;
	height: 10px;
	overflow: hidden;
	position: relative;
}

.barreProgressionIndefinie > div > div {
	width: 6px;
	height: 6px;
	position: absolute;
	left: -20px;
	background-color: var(--couleurPrincipale); 
	border-radius: 50%;
	animation: deplacementPointBarreProgressionIndefinie 4s infinite cubic-bezier(.2,.64,.81,.23);
}

.barreProgressionIndefinie > div > div:nth-child(2) {
	animation-delay: 150ms;
}

.barreProgressionIndefinie > div > div:nth-child(3) {
	animation-delay: 300ms;
}

.barreProgressionIndefinie > div > div:nth-child(4) {
	animation-delay: 450ms;
}

@keyframes deplacementPointBarreProgressionIndefinie {
	0% {left: 0%;}
	75% {left:100%;}
	100% {left:100%;}
}

.viewportImage{
	overflow: auto;

}

.viewportImage.sansAscenseur{
	-ms-overflow-style: none;  /* IE and Edge */
	scrollbar-width: none;  /* Firefox */
}

.viewportImage .conteneur{
	position: relative;
	overflow: hidden;
}

.viewportImage .imageFond{
	width: 100%;
	height: 100%;
	position: absolute;
	top: 0px;
	left: 0px;	
}

.viewportImage .element{
	position: absolute;
	display: flex;	/* sinon garde une hauteur minimum */
}

.viewportImage .bulle{
	background-color: var(--couleurFondConteneur);
	color: var(--couleurSurFondConteneur);	
	border-radius: 15px; 
	padding: 15px; 
	box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23); 
}

.viewportImage img{
	user-select: none;
}

/*----------------------
	indication
----------------------*/
.indication{
	font-size: 12px;
}

.indication.erreur{
	color: var(--couleurErreur);
}

.indication.avertissement{
	color: var(--couleurAvertissement);
}

/*----------------------
	Piano
----------------------*/

.piano {
    display: flex;
}

.piano .element{ 
    display: flex;
	flex: 1;
    justify-content: center;
    align-items: center;
	height: 32px;
    font-size: 13px;
	background-color: var(--couleurFond);
    color: var(--couleurSurFond);
	cursor: pointer;
}

.piano .element img, .piano .element svg{
    width: 16px;
    margin-right: 5px;
}

.piano .element:hover{ 
    background-color: var(--couleurPrincipaleVariante);
	color: var(--couleurSurPrincipaleVariante);
}

.piano .element:first-child{
    border-radius: 10px 0px 0px 10px;
    border-right: 1px solid lightgray;
}

.piano .element:not(:last-child){
    border-right: 1px solid lightgray;
}

.piano .element:last-child{
    border-radius: 0px 10px 10px 0px;
}

.piano .element.selectionne{
    background-color: var(--couleurPrincipale);
	color:  var(--couleurSurPrincipale);
}

.piano .element svg:hover{
	fill: var(--couleurPrincipaleSurVariante);
}

.piano .element.selectionne svg{
    fill: var(--couleurSurPrincipale);
}
