/* Radio buttons */
.custom-radio { cursor: pointer; }
.custom-radio * { vertical-align: middle; }
.custom-radio input[type='radio'] { width: 0; height: 0; margin: 0; padding: 0; border: none; transform: scale(0); }
.custom-radio input[type='radio'] + span { display: inline-block; width: 18px; height: 18px; border-radius: 50%; border: 1px solid #3088f4; position: relative; transition: border-color .15s ease; }
.custom-radio input[type='radio'] + span::before { content: ' '; position: absolute; top: 0; left: 0px; right:0; bottom:0; margin:auto; width: 12px; height: 12px; border-radius:50%;  background-color:#3088f4; opacity: 0; transform: scale(0) rotate(-15deg); transition: all .25s cubic-bezier(0.46, 0.08, 0.43, 1.63); }
.custom-radio input[type='radio']:checked + span { }
.custom-radio input[type='radio']:checked + span::before { transform: scale(1) rotate(0); transform-origin: center; opacity: 1; }
.custom-radio input[type='radio']:focus + span { box-shadow: 0 0 3px rgba(0, 0, 0, 0.23); }
.custom-radio input[type='radio'] + span + .label { display: inline-block; margin: auto; margin-left: 10px; position: relative; top: 1px; font-size:.85em; }

/* Checkboxes */
.custom-checkbox { cursor: pointer; }
.custom-checkbox * { vertical-align: middle; }
.custom-checkbox input[type='checkbox'] { width: 0; height: 0; margin: 0; padding: 0; border: none; transform: scale(0); }
.custom-checkbox input[type='checkbox'] + span { display: inline-block; width: 18px; height: 18px; border: 1px solid #3088f4; position: relative; transition: border-color .15s ease; }
.custom-checkbox input[type='checkbox'] + span::before { content: 'X'; font-size:.75em; font-weight:bold; position: absolute; top: 0; left: 0px; right:0; bottom:0; margin:auto; width: 16px; height: 18px; text-align:center; line-height:18px; color:#3088f4; opacity: 0; transform: scale(0) rotate(-15deg); transition: all .25s cubic-bezier(0.46, 0.08, 0.43, 1.63); }
.custom-checkbox input[type='checkbox']:checked + span {}
.custom-checkbox input[type='checkbox']:checked + span::before { transform: scale(1) rotate(0); transform-origin: center; opacity: 1; }
.custom-checkbox input[type='checkbox']:focus + span { box-shadow: 0 0 3px rgba(0, 0, 0, 0.23); }
.custom-checkbox input[type='checkbox'] + span + .label { display: inline-block; margin: auto; margin-left: 10px; position: relative; top: 1px; font-size:.85em; }

/* File inputs */
.custom-file-input { cursor: pointer; }
.custom-file-input input[type='file'] { width: 0; height: 0; margin: 0; padding: 0; border: none; transform: scale(0); }
.custom-file-input input[type='file'] + .button { display: inline-block; width: 100%; padding: 10px; padding-right: 50px; border: 1px solid #ccc; color: #ccc; transition: border-color .15s ease; }
.custom-file-input input[type='file'] + .button .icon { font-size: 1.5em; line-height: 0; vertical-align: middle; transition: all .25s ease; }
.custom-file-input input[type='file'] + .button .label { margin-left: 10px; font-weight:normal;}
.custom-file-input input[type='file']:focus + .button { color: #3898EC; border-color: #3898EC; color: #3898EC;  }
.custom-file-input input[type='file']:hover + .button .icon {color: #3898EC; transform: rotate(10deg); transform-origin: center; transition: all .35s cubic-bezier(0.25, 0.1, 0.15, 5.03); }
.custom-file-input.has-file input[type='file'] + .button .label { color: #ccc; }

/* Custom select dropdowns */
.custom-select { padding: 10px 35px 10px 20px; min-height: 40px; cursor: default; line-height:20px;  color:#ccc;  background-color: #fff; text-align: left; position: relative; outline: none; border: 1px solid #ccc; }
.custom-select:hover { cursor: pointer; }
.custom-select.open { border:2px solid #3898EC; color:#3898EC;}
.custom-select.disabled { color: #ccc; }
.custom-select select { display: none; }
.custom-select .fa.fa-input { color:#ccc; position: absolute; top: 0px; right: 5px; bottom: 0px; width: 25px; height: 25px; margin-top: auto; margin-bottom: auto; line-height: 25px; text-align: center; }
.custom-select .fa.fa-input::before{content:"\f0d7";}
.custom-select .selected { height: 20px; overflow: hidden; word-break: break-all; }
.custom-select .select-options { position: absolute; top: calc(100% + 2px); left: -2px; min-width: calc(100% + 4px); background-color:#e6edf6; max-height: 0; overflow: hidden; z-index: 1000; transition: all .25s ease; }
.custom-select .select-options div[data-value] {  font-size: .85em; padding:15px 20px; line-height: 1em; font-weight:normal; color:#000; transition: all .15s ease; }
.custom-select .select-options div[data-value].focus { background-color: #eee; }
.custom-select .select-options div[data-value].disabled { color: #ccc; }
.custom-select .select-options div[data-value]:hover:not(.disabled) { background-color: #3898EC; color: #fff; cursor:pointer; }
.custom-select.open .select-options { max-height: 250px; overflow: auto;}