.clickable {
    cursor: pointer;
}

.clickable:hover {
    color: #424242;
}

/*#region Custom Files */
    .progress-bar {
        height: 10px;
        border-radius: 3px;
    }

    .custom-file-input {
        border: 2px dashed black;
        text-align: center;
        cursor: pointer;
        display: inline-block;
        margin: 5px 0;
        text-align: center;
    }

    .custom-file-input-wrapper {
        display: table-cell;
        vertical-align: middle;
        width: 250px;
        height: 150px;
        padding-bottom: 10px;
    }

    .custom-file-input i {
        font-size: 40px;
    }

    .custom-file-input input[type=file] {
        display: none;
    }

    .custom-file-input.drag {
        border: 2px solid #424242;
        color: #424242;
    }

    .custom-file-input:hover {
        border: 2px dashed #424242;
        color: #424242;
    }

    .custom-file-beforeupload {
        display: inline-block;
    }

    .custom-file-afterupload {
        display: none;
    }
    
    .custom-file-label {
        overflow-wrap: anywhere;
        padding: 10px;
    }
/*#endregion*/

/*#region Floating Labels */
    .floating-labels {
        position: relative;
        margin-top: 15px;
    }

    .floating-labels input {
        height: 2.75em;
    }

    .floating-labels input, .floating-labels textarea {
        font-size: 1em;
    }

    .floating-labels label {
        position: absolute;
        padding: 0;
        transition: top 0.1s, left 0.1s, font-size 0.1s, margin-left 0.1s, color 0.1s;
        cursor: text;
        padding: 0 0.25em;
    }

    .floating-labels > input:placeholder-shown ~ label, .floating-labels > textarea:placeholder-shown ~ label {
        top: 0.65em;
        left: 0.75em;
        color: #999;
    }

    .floating-labels > input:focus ~ label, .floating-labels > input:not(:placeholder-shown) ~ label, .floating-labels > textarea:focus ~ label, .floating-labels > textarea:not(:placeholder-shown) ~ label {
        top: -0.8em;
        left: 0.75em;
        font-size: 0.75em;
        background-color: white;
        color: inherit;
    }

    .floating-labels .form-control[readonly], .floating-labels .form-control[disabled] {
        background-color: white;
    }

    /* Let the user click on the element behind the label */
    .floating-labels label {
        pointer-events: none;
    }
/*#endregion*/

/*#region Autocomplete */
    .autocomplete-items {
        position: absolute;
        border: 1px solid #ced4da;
        z-index: 99;
        top: 100%;
        left: 0;
        right: 0;
        cursor: pointer;
        max-height: 200px;
        overflow-y: auto;
    }

    .autocomplete-items div:hover {
        background-color: #0d6efd;
        color: #fff;
        border-color: #0d6efd;
    }
/*#endregion*/

/*#region Icon Buttons */
    .icon-button {
        padding: 0;
    }

    .icon-button span, .icon-button .icon {
        padding: .4em .8em;
        display: inline-block;
    }

    .icon-button .icon {
        background: rgba(0, 0, 0, 0.15);
    }

    .icon-button .icon .spinner-border {
        width: 1em;
        height: 1em;
        border-width: .2em;
    }

    .icon-button.btn-dark .icon, .icon-button-dark .icon {
        background: rgba(255, 255, 255, 0.15);
    }
/*#endregion*/

/*#region Tables */
    .nslib-table {
        border: 1px solid #dfe0e1;
        border-radius: 7px;
        padding: 15px;
    }

    .nslib-table-wrapper {
        overflow-x: auto;
        width: 100%;
        margin-bottom: 15px;
    }

    .nslib-table table {
        min-width: 700px;
    }

    .nslib-table-nooutline {
        border: none;
        border-radius: none;
        padding: 0;
    }

    .nslib-table-nooutline table {
        border: 1px solid #dfe0e1;
    }

    .nslib-table th, .nslib-table tr, .nslib-table td {
        padding: 8px 15px;
        vertical-align: middle;
    }

    .nslib-table-rowhover tbody tr:hover {
        -webkit-filter: brightness(95%);
        filter: brightness(95%);
        transition: filter 0.1s;
    }

    .nslib-table td a {
        color: black;
        text-decoration: none;
    }

    .nslib-table-span-sortable {
        cursor: pointer;
        user-select: none;
    }

    .nslib-table-iconbtn {
        padding: 0.1em 0.35em;
        font-size: 12px;
        margin-left: 5px;
    }

    .nslib-table-filter-dropdown {
        max-height: 500px;
        overflow-y: auto;
    }

    .nslib-table-iconbtn {
        color: var(--bs-table-striped-color);
        background-color: var(--bs-table-bg);
        border: 1px solid var(--bs-table-striped-color);
        transition: filter 0.1s;
    }

    .nslib-table-iconbtn:hover {
        filter: brightness(90%);
    }

    .table-dark .nslib-table-iconbtn:hover {
        filter: brightness(110%);
        color: inherit;
    }

    .nslib-table-rowcount {
        display: inline-block;
        border-radius: 3px;
    }

    .nslib-table-searchbox {
        float: right;
        max-width: 300px;
        margin: 0 0 5px 10px;
    }

    .nslib-table-rowcountselect {
        display: inline-block;
    }

    .nslib-table-rowcount-dropdownbutton {
        margin-left: 5px;
        height: 41.6px;
        border-radius: 3px;
    }

    .nslib-table-rowcountselect .dropdown-menu li .dropdown-item, .nslib-table-prevnext .page-link {
        cursor: pointer;
        user-select: none;
    }

    .nslib-table-prevnext {
        user-select: none;
    }

    .nslib-table-navbuttons {
        float: right;
    }

    .nslib-table-navbuttons button {
        border: 1px solid rgba(0,0,0,.125);
        margin: 0 2.5px;
        border-radius: 3px;
    }

    .nslib-table-sticky thead th {
        position: sticky;
        top: 0;
        z-index: 2;
        box-shadow: 0 1.5px 0 0 black;
    }
    
    .nslib-table-actions .dropdown-menu li {
        cursor: pointer;
    }

    .nslib-table-actions {
        float: right;
        margin: 0 0 5px 10px;
    }

    .nslib-table-actions button {
        height: 45.6px;
        margin-bottom: 5px;
    }

    .nslib-table-header {
        display: inline;
    }

    .nslib-table-editbutton {
        margin-left: 10px;
        cursor: pointer;
    }

    .nslib-table-editbox {
        width: calc(100% - 35px);
        display: inline-block;
        padding: 0.1rem 0.75rem;
        font-size: 14px;
    }

    @media screen and (max-width: 750px) {
        .nslib-table-searchbox, .nslib-table-actions button, .nslib-table-rowcount, .nslib-table-rowcountselect {
            margin: 5px 0;
            width: 100%;
            text-align: center;
        }

        .nslib-table-actions, .nslib-table-actions .dropdown-menu, .nslib-table-rowcountselect button {
            width: 100%;
            margin: 0;
        }

        .nslib-table-navbuttons {
            width: 100%;
            display: contents;
        }

        .nslib-table-navbuttons button {
            width: calc(50% - 5px);
            display: inline-block;
            text-align: center;
        }
    }

    .nslib-columnhider-menu {
        padding: 1rem;
    }
/*#endregion*/

/*#region Context Menu */
    .nslib-context-menu {
        border-radius: 4px;
        filter: drop-shadow(1px 1px 3px rgba(0, 0, 0, 0.5));
        display: none;
        position: absolute;
        z-index: 999;
    }

    .nslib-context-menu .list-group-item {
        cursor: pointer;
        border: none;
    }

    .nslib-context-menu .list-group-item .bi-check-square, .nslib-context-menu .list-group-item .bi-square {
        margin-right: 8px;
    }

    .nslib-context-menu .list-group-item:hover {
        color: white;
        background-color: #0d6efd;
    }

    .nslib-context-menu hr {
        margin: 0;
        color: black;
        opacity: 0.125;
    }
/*#endregion*/

/*#region Icon Textbox */
    .icon-textbox {
        display: flex;
        flex-wrap: wrap;
        padding: 0 0.75em;
        font-weight: 400;
        color: #212529;
        background-color: #fff;
        background-clip: padding-box;
        border: 1px solid #ced4da;
        -webkit-appearance: none;
        -moz-appearance: none;
        appearance: none;
        border-radius: .25em;
        transition: border-color .15s ease-in-out,box-shadow .15s ease-in-out;
        vertical-align: top;
    }

    .icon-textbox .form-control {
        border: none;
        box-shadow: none;
        padding: 0.375em 0.25em;
        flex: 1 0 0%;
        font-size: 1em;
    }

    .icon-textbox .icon {
        flex: 0;
        padding: 0.4em 0.25em 0 0.25em;
    }

    .icon-textbox.floating-labels .icon {
        padding-top: 0.6em;
    }

    .icon-textbox.floating-labels > input:placeholder-shown ~ label {
        left: 2.5em;
    }

    .icon-textbox-right.floating-labels > input:placeholder-shown ~ label {
        left: 0.75em;
    }

    .icon-textbox.floating-labels > input:focus ~ label, .icon-textbox.floating-labels > input:not(:placeholder-shown) ~ label {
        left: 0.75em;
    }
    
    .icon-textbox .icon .spinner-border {
        width: 1em;
        height: 1em;
        border-width: 0.2em;
    }

    .icon-textbox:has(.is-invalid), .floating-labels:has(.is-invalid) {
        border-color: var(--bs-form-invalid-border-color);
    }

    .icon-textbox:has(.is-valid), .floating-labels:has(.is-valid) {
        border-color: var(--bs-form-valid-border-color);
    }

    .icon-textbox input.is-invalid:focus, .floating-labels input.is-invalid:focus, .icon-textbox input.is-valid:focus, .floating-labels input.is-valid:focus {
        box-shadow: none;
    }
/*#endregion*/
