/*
    COLORS
    base:   #1340D3
    ligth:  #a2b5f6
    desat:  #e1edf9
*/

/*
    OPINIONATED DEFAULTS
*/
* {
	font-family: quicksand, arial, sans-serif;
	font-size: 12px;
	color: #101010;
	font-weight: normal;
	-webkit-box-sizing: border-box;
	/* Safari/Chrome, other WebKit */
	-moz-box-sizing: border-box;
	/* Firefox, other Gecko */
	box-sizing: border-box;
	line-height: 1.4em;
	border-radius: 0px;
	-webkit-margin-before: 0px;
	-webkit-margin-after: 0px;
	-webkit-margin-start: 0px;
	-webkit-margin-end: 0px;
}

body {
	min-height: 100%;
}

@font-face {
	font-family: 'quicksand';
	src: url('../fonts/quicksand-regular-webfont.eot');
	src: url('../fonts/quicksand-regular-webfont.eot?') format('embedded-opentype'), url('../fonts/quicksand-regular-webfont.otf') format('truetype'), url('../fonts/quicksand-regular-webfont.woff') format('woff'), url('../fonts/quicksand-regular-webfont.ttf') format('truetype');
}


/* 					
    HELPERS
*/
.do_not_display_it {
	display: none;
}

.display_it {
	display: block;
}

.opacity_zero {
	opacity: 0;
}

.opacity_one {
	opacity: 1;
}



/* 					
    LAYOUT					
*/
header {
	padding-top: 2rem;
	padding-bottom: 2rem;
	background-color: #1340D3;
}

body {
	background-color: #fff;
}

#page_title,
#page_footer_content,
#page_footer_content a {
	color: #fff;
    text-align: center;
}

#page_body {
    margin-top: 2rem;
    margin-bottom: 192px; /* footer blank */
}

#page_footer {
    background-color: #1340D3;
    position: fixed;
    width: 100%;
    bottom: 0;
}
#page_footer_content {
    padding: 2rem 0;
    z-index: 500;
    /* must hide menu responsive */
    position: relative;
    width: 100%;
    background: #1340D3;
}

#modal_toolbox_response {
	padding: 4rem 0;
}
.container {
    /* max-width: 1440px; */
    max-width: 900px;
    margin: auto;
}
#ctrls-container{
    background-color: #a2b5f6;

}

/* 
    ELEMENTS
*/
#page_title {
	font-size: 48px;
}

h1#mode_title {
	font-size: 40px;	
}
h2 {
	font-size: 32px;
}
.select-ctn {
    text-align: center;
    margin-bottom: 2rem;
}
.select-ctn-inner {
    display:inline-block;
}
#ctrls-container .select-ctn {
    margin-bottom: 1rem;    
}

#select-ctn-oct label,
#ctn-ctrl-vol label,
#select-ctn-preset label {
    text-align: center;
}
#ctrls-menu {
    max-height: 0px;
    /* overflow: hidden; */
    transition: all 0.3s linear;
}
#ctrls-menu.open {
    max-height: 240px;
}
@media (min-width:576px) {
    #menu-responsive-icon {
        display:none;
    }
    #select-ctn-oct,
    #select-ctn-oct label {
        text-align: left;
    }
    #ctn-ctrl-vol label {
        text-align: center;
    }
    #select-ctn-preset,
    #select-ctn-preset label {
        text-align: right;
    }
    #ctrls-menu {
        max-height: 100%;    
    }
}

#ctrls-container .select-ctn {
    margin-bottom: 1rem;    
}
#oscilloscope-ctn {
    position: fixed;
    bottom: 4rem;
    right: 4rem;
    background: #fff;
    border: 2px solid #0C32AD;
    border-radius: 4px;
    box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23); 
    z-index:501;
}

/* 
    PLAYABLES 
*/
.keyboard .key_in_use,
.chord_players > span,
.chord_row span.note,
.chord_btn {
    background-color: #e1edf9;
    cursor: pointer;
}
.keyboard .key_in_use:hover,
.chord_players > span:hover,
.chord_row span.note:hover,
.chord_btn:hover {
    background-color: #e1edf9;
    cursor: pointer;
}
#display_result.playable .keyboard .key_in_use,
#display_result.playable .chord_players > span,
#display_result.playable .chord_row span.note,
#display_result.playable .chord_btn {
    background-color: #a2b5f6;
    cursor: pointer;
}
#display_result.playable .keyboard .key_in_use:hover,
#display_result.playable .chord_players > span:hover,
#display_result.playable .chord_row span.note:hover,
#display_result.playable .chord_btn:hover {
    background-color: #1340D3;
    color: #fff;
}



/* 
    DISPLAY NOTES & CHORDS 
*/
#keyboard_mode {
    padding-bottom: 2rem;
}
.chord_ctn_min {
    padding:.5rem;
}
.chord_ctn_full {
    width: 100%;
}
.chord_ctn_inner {
    border: 1px dashed #ccc;
    padding:.5rem;
    margin-bottom:0;
    background: #fff;
}
.chord_row {
	list-style: none;
	padding-top: 2rem;
    /* padding: 8px 0; */
    border-radius: 4px;
    transition: all 0.3s cubic-bezier(.25,.8,.25,1);
    -webkit-user-select: none; /* Safari */
    -ms-user-select: none; /* IE 10 and IE 11 */
    user-select: none; /* Standard syntax */
}
.chord_row.chord_ctn_min {
	padding: 0.5rem;
}
.chord_row .handle {
	position:absolute;
    top:1rem;
    right:1rem;
    width: 1.5rem;
}
.chord_row .handle img {
    width: 1.5rem;
    filter: opacity(50%);
    background:#eee;
    border: 1px solid #000;
    border-radius: 100%;
}
.chord_row > div {
    /* margins for all childs */
	/* margin-top: 2rem; */
	/* margin-bottom: 2rem; */
}
.chord_row:hover {
	background: #e8edfd;
}

.chord_btn {
	display: inline-block;
    vertical-align: top;
    padding: 0.9rem 1.6rem;
    border-radius: 4px;
    width:80px;
    height:80px;
    margin-bottom: 4px;
}
.chord_btn .chord_base_note {
	font-size: 32px;    
}
.chord_btn .chord_name {
	font-size: 12px;    
}

.chord_players > span,
.chord_btn {
    transition: all 0.3s cubic-bezier(.25,.8,.25,1);
}

.chord_name {
	display: inline-block;
	font-size: 16px;
	width: 256px;
	margin-right: 16px;
}

.chord_btn,
.chord_prog,
.chord_rev,
.chord_shuffle {
    cursor: pointer;
    border: 1px solid #888;
    -webkit-user-select: none; /* Safari */
    -ms-user-select: none; /* IE 10 and IE 11 */
    user-select: none; /* Standard syntax */
}
span[class=note],
.chord_players > span {
	display: inline-block;
	min-width: 36px;
	margin: 4px 4px 4px 0;
	padding: 2px 4px;
    border-radius: 4px;
}
span[class=note] {
 	background-color: #CCC;   
}
.chord_notes{
    padding-bottom:1rem;
}



/* 
    KEYBOARD 
*/
.keyboard {
	display: inline-block;
	vertical-align: top;
	margin-right: 16px;
    transition: all 0.3s cubic-bezier(.25,.8,.25,1);
    height: 64px;
    overflow: hidden;
}

.white_key,
.black_key {
	display: inline-block;
    transition: all 0.3s cubic-bezier(.25,.8,.25,1);
}

.white_key {
	height: 64px;
	width: 16px;
	background-color: #fff;
	border: 1px solid #555;
	/* border-collapse: collapse; */
    border-right: none;
}
.white_key:last-child {
    border-right: 1px solid #555;
}

.black_key {
	position: relative;
	vertical-align: top;
	margin-right: -12px;
	left: -6px;
	height: 48px;
	width: 12px;
	background-color: #ccc;
	border: 1px solid #555;
	/* border-collapse: collapse; */
}




.mark-used {
	position: relative;
	top: 48px;
	left: 1px;
	width: 12px;
	height: 12px;
	background: #db0e0e;
	border-radius: 100%;
	border: 0;
}

.black_key>.mark-used {
	top: 34px;
	left: 0;
}


/*
    FORM
*/
form {
    width:100%;
}

legend {
	font-size: 20px;
}

input[type=text],
input[type=email],
input[type=password],
textarea {
	display: inline-block;
	border: none;
	width: 80%;
	margin: 8px;
}

label {
	font-size: 12px;
    display: block;
    text-align:left;
}

#btn_get_chords {
	display: block;
	font-size: 32px;
	height: 96px;
	margin: auto;
    margin-top:4rem;
	width: 320px;
	border: none;
	color: #fff;
	background-color: #0C32AD;
}
.custom_select,
#btn_get_chords {
    transition: all 0.3s cubic-bezier(.25,.8,.25,1);
}
.custom_select:hover,
#btn_get_chords:hover {
    box-shadow: 0 14px 28px rgba(0,0,0,0.25), 0 10px 10px rgba(0,0,0,0.22);
}

select {
	font-size: 16px;
}

option {
	color: #fff;
}

.custom_select {
    position: relative;
    text-align: left;
	cursor: pointer;
	-webkit-user-select: none;
	-moz-user-select: none;
	-ms-user-select: none;
	user-select: none;
}

.custom_select::after {
	content: "";
	display: inline-block;
	position: absolute;
    right: 8px;
    top: 20px;
	width: 16px;
	height: 8px;
	background-image: url('arrow_d.svg');
	background-repeat: no-repeat;
	background-size: 100%;
}

.custom_select_button {
	width: 168px;
	height: 48px;
	background-color: #0C32AD;
	color: #fff;
	font-size: 14px;
	padding-left: 8px;
	padding-top: 12px;
	padding-right: 32px;
}

.custom_select ul {
	position: absolute;
	padding: 0px;
	z-index: 500;
}
.unfold-up .custom_select ul {
    bottom: 64px;
}

.custom_select ul li {
	width: 168px;
	height: 24px;
	list-style-type: none;
	background-color: #a2b7f9;
	padding-left: 16px;
	padding-top: 4px;
	color: #fff;
}

.custom_select ul li:hover {
	background-color: #09247b !important;
}

.custom_select_selected {
	background-color: #09247b !important;
}

input[type=checkbox] {
	width: 16px;
	margin: 0px;
	/* repérage de position */
}

.append_checkbox {
	position: relative;
	display: inline-block;
	width: 16px;
	height: 16px;
	left: -16px;
	/* retrouver la position */
	background-color: #fff;
	cursor: pointer;
}

input[type=checkbox]:checked+.append_checkbox {
	background-color: #0C32AD;
}

input[type=checkbox]:checked+.append_checkbox::after {
	/* affichage de la coche par ajout d'un pseudo-élément ::after */
	position: absolute;
	content: '\2714';
	color: #fff;
	font-size: 18px;
	bottom: 0px;
	left: 4px;
}

input[type=checkbox]:focus+.append_checkbox {}

.append_checkbox:hover {
	background-color: #09247b;
}

#my_custom_disclaimer {
	position: absolute;
	left: 256px;
	width: 320px;
	height: 128px;
	margin: 0px;
	overflow: hidden;
	/* required by text-overflow */
	background-color: #0C32AD;
	z-index: 80000;
}

#my_custom_disclaimer div {
	width: 320px;
	padding: 16px;
	font-size: 14px;
	color: #fff;
}

#print_disclaimer {
	display: none;
}



/*
    AT MEDIA
*/
@media only screen and (max-device-width: 1448px) {
	#page_body {
		width: 100%;
	}
}

@media only screen and (max-device-width: 1096px) {
	main {}
	h1 {
		font-size: 40px;
	}
	h2 {
		font-size: 24px;
	}
}

@media only screen and (max-device-width: 952px) {
	main {
		width: 100%;
		padding-left: 16px;
	}
	#options_box,
	main {
		display: block;
	}
}

/* afficher le background des touches appuyées */
.mark-used {
    -webkit-print-color-adjust:exact !important;
    print-color-adjust:exact !important;
    background:#444;
}

#chords {
    position: relative; /* SICK FUCK https://stackoverflow.com/questions/7706504/page-break-inside-doesnt-work-in-chrome */
}

@media print {
	header,
	footer,
	form,
	#options_box {
		display: none;
	}
    
	h1#mode_title {
        font-size: 18px;
        margin-top: 16px;
    }
    
    .keyboard .key_in_use {
        -webkit-print-color-adjust: exact !important;   /* Chrome, Safari 6 – 15.3, Edge */
        color-adjust: exact !important;                 /* Firefox 48 – 96 */
        print-color-adjust: exact !important;           /* Firefox 97+, Safari 15.4+ */
    }

    .chord_players,
    .handle.ui-sortable-handle {
        display: none;
    }

    /* pas de page break au milieu d'une vignette */
    .list_chords {
        position: relative; /* SICK FUCK https://stackoverflow.com/questions/7706504/page-break-inside-doesnt-work-in-chrome */
        break-inside: avoid;
        page-break-inside: avoid;
    }
    
	#page_body,
	#display_result,
	#modal_toolbox_response {
		width: 100%;
	}

	.list_chords,
	#modal_toolbox_response li {
		page-break-inside: avoid;
	}
	
	#print_disclaimer {
		/* display: block; */
	}
}


/*  
    SHADOWS  
*/
header,
#page_footer,
.custom_select,
#btn_get_chords,
.keyboard {
    box-shadow: 0 10px 20px rgba(0,0,0,0.19), 0 6px 6px rgba(0,0,0,0.23);
}

.chord_btn,
.chord_players > span,
span[class=note] {
    box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23);  
}

.custom_select:hover,
#btn_get_chords:hover,
.chord_btn:hover,
.chord_players > span:hover,
.keyboard:hover {
    box-shadow: 0 14px 28px rgba(0,0,0,0.25), 0 10px 10px rgba(0,0,0,0.22); 
}


/*  
    COLOR SELECT  
*/
::-moz-selection {
	background: #0C32AD;
	color: #fff;
	text-shadow: none;
}

::selection {
	background: #0C32AD;
	color: #fff;
	text-shadow: none;
}




input[type=range] {
  height: 48px;
  -webkit-appearance: none;
  width: 100%;
  transition: box-shadow 0.2s ease-in-out;
  background: #a2b5f6;
}
input[type=range]:focus {
  outline: none;
}
input[type=range]::-webkit-slider-runnable-track {
  width: 100%;
  height: 12px;
  cursor: pointer;
  animate: 0.2s;
  box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24);
  background: #7591f2;
  border-radius: 0px;
  border: 0px solid #000101;
}
input[type=range]::-webkit-slider-thumb {
  box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23); 
  border: 0px solid #000000;
  height: 39px;
  width: 12px;
  border-radius: 0px;
  background: #1340D3;
  cursor: pointer;
  -webkit-appearance: none;
  margin-top: -13.5px;
}
input[type=range]:focus::-webkit-slider-runnable-track {
  background: #7591f2;
}
input[type=range]::-moz-range-track {
  width: 100%;
  height: 12px;
  cursor: pointer;
  animate: 0.2s;
  box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24);
  background: #a2b5f6;
  border-radius: 0px;
  border: 0px solid #000101;
}
input[type=range]::-moz-range-thumb {
  box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23); 
  border: 0px solid #000000;
  height: 39px;
  width: 12px;
  border-radius: 0px;
  background: #1340D3;
  cursor: pointer;
}
input[type=range]::-ms-track {
  width: 100%;
  height: 12px;
  cursor: pointer;
  animate: 0.2s;
  background: transparent;
  border-color: transparent;
  color: transparent;
}
input[type=range]::-ms-fill-lower {
  background: #a2b5f6;
  border: 0px solid #000101;
  border-radius: 0px;
  box-shadow: 0px 0px 0px #000000;
}
input[type=range]::-ms-fill-upper {
  background: #a2b5f6;
  border: 0px solid #000101;
  border-radius: 0px;
  box-shadow: 0px 0px 0px #000000;
}
input[type=range]::-ms-thumb {
  margin-top: 1px;
  box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23); 
  border: 0px solid #000000;
  height: 39px;
  width: 12px;
  border-radius: 0px;
  background: #1340D3;
  cursor: pointer;
}
input[type=range]:focus::-ms-fill-lower {
  background: #a2b5f6;
}
input[type=range]:focus::-ms-fill-upper {
  background: #a2b5f6;
}
input[type=range]::-moz-range-progress {
  background-color: #1340D3;
  height:12px;
}
input[type=range]::-moz-range-track {
  background-color: #e1edf9;
}
input[type=range]::-ms-fill-lower {
  background-color: #1340D3;
}
input[type=range]::-webkit-range-track {
  background-color: #e1edf9;
}


#menu-responsive-icon{
    position:fixed;
    background: rgba(0,0,0,.75);
    border-radius: 4px;
    top:1em;
    right:1em;
    width:60px;
    height:60px;
    -webkit-transform:rotate(0deg);
    -moz-transform:rotate(0deg);
    -o-transform:rotate(0deg);
    transform:rotate(0deg);
    -webkit-transition:all .3s ease;
    -moz-transition:all .3s ease;
    -ms-transition:all .3s ease;
    -o-transition:all .3s ease;
    transition:all .3s ease;
    cursor:pointer;
    z-index:31
}
#menu-responsive-icon span{
    display:block;
    position:absolute;
    height:1px;
    width:50%;
    left:25%;
    background:#fff;
    opacity:1;
    -webkit-transform-origin:left center;
    -moz-transform-origin:left center;
    -o-transform-origin:left center;
    transform-origin:left center;
    -webkit-transform:rotate(0deg);
    -moz-transform:rotate(0deg);
    -o-transform:rotate(0deg);
    transform:rotate(0deg);
    -moz-transition: all .3s linear;
    -o-transition: all .3s linear;
    -webkit-transition: all .3s linear;
    transition: all .3s linear
}
#menu-responsive-icon span:nth-child(1){
    top:25%
}
#menu-responsive-icon span:nth-child(2){
    top:50%
}
#menu-responsive-icon span:nth-child(3){
    top:75%
}
#menu-responsive-icon.open span:nth-child(1){
    width:70.71067812%;
    -webkit-transform:rotate(45deg);
    -moz-transform:rotate(45deg);
    -o-transform:rotate(45deg);
    transform:rotate(45deg)
}
#menu-responsive-icon.open span:nth-child(2){
    width:0;
    opacity:0
}
#menu-responsive-icon.open span:nth-child(3){
    width:70.71067812%;
    -webkit-transform:rotate(-45deg);
    -moz-transform:rotate(-45deg);
    -o-transform:rotate(-45deg);
    transform:rotate(-45deg)
}
