.vertical-align-middle {
    vertical-align: middle !important;
}

.text-right {
    text-align: right !important;
}

.text-center {
    text-align: center !important;
}

.text-left {
    text-align: left !important;
}

.d-none { display: none !important; }
.d-flex { display: flex !important; }
.d-block { display: block !important; }
.d-inline { display: inline !important; }
.d-inline-block { display: inline-block !important; }

.ml-0, .mx-0, .m-0 { margin-left: 0 !important; }
.mr-0, .mx-0, .m-0 { margin-right: 0 !important; }
.mt-0, .my-0, .m-0 { margin-top: 0 !important; }
.mb-0, .my-0, .m-0 { margin-bottom: 0 !important; }

.ml-1, .mx-1, .m-1 { margin-left: 10px !important; }
.mr-1, .mx-1, .m-1 { margin-right: 10px !important; }
.mt-1, .my-1, .m-1 { margin-top: 10px !important; }
.mb-1, .my-1, .m-1 { margin-bottom: 10px !important; }

.ml-2, .mx-2, .m-2 { margin-left: 20px !important; }
.mr-2, .mx-2, .m-2 { margin-right: 20px !important; }
.mt-2, .my-2, .m-2 { margin-top: 20px !important; }
.mb-2, .my-2, .m-2 { margin-bottom: 20px !important; }

.ml-3, .mx-3, .m-3 { margin-left: 30px !important; }
.mr-3, .mx-3, .m-3 { margin-right: 30px !important; }
.mt-3, .my-3, .m-3 { margin-top: 30px !important; }
.mb-3, .my-3, .m-3 { margin-bottom: 30px !important; }

.ml-4, .mx-4, .m-4 { margin-left: 40px !important; }
.mr-4, .mx-4, .m-4 { margin-right: 40px !important; }
.mt-4, .my-4, .m-4 { margin-top: 40px !important; }
.mb-4, .my-4, .m-4 { margin-bottom: 40px !important; }

.ml-5, .mx-5, .m-5 { margin-left: 50px !important; }
.mr-5, .mx-5, .m-5 { margin-right: 50px !important; }
.mt-5, .my-5, .m-5 { margin-top: 50px !important; }
.mb-5, .my-5, .m-5 { margin-bottom: 50px !important; }

.ml--1, .mx--1, .m--1 { margin-left: -10px !important; }
.mr--1, .mx--1, .m--1 { margin-right: -10px !important; }
.mt--1, .my--1, .m--1 { margin-top: -10px !important; }
.mb--1, .my--1, .m--1 { margin-bottom: -10px !important; }

.ml--2, .mx--2, .m--2 { margin-left: -20px !important; }
.mr--2, .mx--2, .m--2 { margin-right: -20px !important; }
.mt--2, .my--2, .m--2 { margin-top: -20px !important; }
.mb--2, .my--2, .m--2 { margin-bottom: -20px !important; }

.ml--3, .mx--3, .m--3 { margin-left: -30px !important; }
.mr--3, .mx--3, .m--3 { margin-right: -30px !important; }
.mt--3, .my--3, .m--3 { margin-top: -30px !important; }
.mb--3, .my--3, .m--3 { margin-bottom: -30px !important; }

.ml--4, .mx--4, .m--4 { margin-left: -40px !important; }
.mr--4, .mx--4, .m--4 { margin-right: -40px !important; }
.mt--4, .my--4, .m--4 { margin-top: -40px !important; }
.mb--4, .my--4, .m--4 { margin-bottom: -40px !important; }

.ml--5, .mx--5, .m--5 { margin-left: -50px !important; }
.mr--5, .mx--5, .m--5 { margin-right: -50px !important; }
.mt--5, .my--5, .m--5 { margin-top: -50px !important; }
.mb--5, .my--5, .m--5 { margin-bottom: -50px !important; }

.pl-0, .px-0, .p-0 { padding-left: 0 !important; }
.pr-0, .px-0, .p-0 { padding-right: 0 !important; }
.pt-0, .py-0, .p-0 { padding-top: 0 !important; }
.pb-0, .py-0, .p-0 { padding-bottom: 0 !important; }

.pl-1, .px-1, .p-1 { padding-left: 10px !important; }
.pr-1, .px-1, .p-1 { padding-right: 10px !important; }
.pt-1, .py-1, .p-1 { padding-top: 10px !important; }
.pb-1, .py-1, .p-1 { padding-bottom: 10px !important; }

.pl-2, .px-2, .p-2 { padding-left: 20px !important; }
.pr-2, .px-2, .p-2 { padding-right: 20px !important; }
.pt-2, .py-2, .p-2 { padding-top: 20px !important; }
.pb-2, .py-2, .p-2 { padding-bottom: 20px !important; }

.pl-3, .px-3, .p-3 { padding-left: 30px !important; }
.pr-3, .px-3, .p-3 { padding-right: 30px !important; }
.pt-3, .py-3, .p-3 { padding-top: 30px !important; }
.pb-3, .py-3, .p-3 { padding-bottom: 30px !important; }

.pl-4, .px-4, .p-4 { padding-left: 40px !important; }
.pr-4, .px-4, .p-4 { padding-right: 40px !important; }
.pt-4, .py-4, .p-4 { padding-top: 40px !important; }
.pb-4, .py-4, .p-4 { padding-bottom: 40px !important; }

.pl-5, .px-5, .p-5 { padding-left: 50px !important; }
.pr-5, .px-5, .p-5 { padding-right: 50px !important; }
.pt-5, .py-5, .p-5 { padding-top: 50px !important; }
.pb-5, .py-5, .p-5 { padding-bottom: 50px !important; }

.panel .panel-heading,
.panel .panel-body {
    border: 1px solid #ddd;
}

.panel .panel-heading {
    padding: 6px 10px;
    border-top-left-radius: 3px;
    border-top-right-radius: 3px;
    background: #ededed;
}

.panel .panel-body {
    padding: 10px;
    border-top: none;
    border-bottom-left-radius: 3px;
    border-bottom-right-radius: 3px;
}


.form + .form {
    margin-top: 15px;
}

.form select, .form input:not([type="hidden"]):not([type="checkbox"]):not([type="radio"]) {
    margin: 0;
}

.form .input-row {
    display: flex;
}

.form .input-row:not(:last-child) {
    margin-bottom: 10px;
}

.form .input-row > * {
    flex-grow: 0;
    margin: 0;
}

.form .input-row > *:last-child {
    flex-grow: 1;
}

.form .input-row > label {
    border: 1px solid #d3dbe2;
    padding: 4px 10px;
    background: #eee;
    text-align: right;
    white-space: nowrap;
}

.form .input-row > *,
.form .input-row > .autocomplete > .shac > input {
    border-radius: 0;
}

.form .input-row > *:first-child,
.form .input-row > .autocomplete:first-child > .shac > input {
    border-bottom-left-radius: 3px;
    border-top-left-radius: 3px;
}

.form .input-row > *:last-child,
.form .input-row > .autocomplete:last-child > .shac > input {
    border-bottom-right-radius: 3px;
    border-top-right-radius: 3px;
}


.form .input-row > :not(input:not([type="hidden"])):not(select):not(textarea) + input,
.form .input-row > :not(input:not([type="hidden"])):not(select):not(textarea) + select,
.form .input-row > :not(input:not([type="hidden"])):not(select):not(textarea) + textarea,
.form .input-row > :not(input:not([type="hidden"])):not(select):not(textarea) + .autocomplete {
    margin-left: -1px !important;
}

.form .field-row {
    display: flex;
}

.form .autocomplete {
    flex-grow: 1;
}

.form .autocomplete > * {
    width: 100%;
}

.form .field-row > *:not(:last-child) {
    margin-right: 10px !important;
}

.form .field-row:not(:last-child) {
    margin-bottom: 10px;
}



.img-fit {
    display: inline-block;
    background-size: contain;
    background-color: transparent;
    background-position: center center;
    background-repeat: no-repeat;
    /* Need to define width, height & background-image within style attribute */
}

.img-fit, .img-fit + * {
    vertical-align: middle;
}

body.modal-open {
    overflow: hidden;
}

.middle-wrapper > * {
    vertical-align: middle !important;;
}