/* Bootstrap mods */
.tasks .col-md-4:nth-child(3n+1){
    clear: left;
}

.h1, .h2, .h3 {
    margin: 0;
}

.tooltip-inner {
    background: #eee;
    border: solid 1px #337ab7;
    color: #000;
}
.tooltip.in {
    opacity: 1 !important;
}
.tooltip.top .tooltip-arrow {
    border-top-color: #337ab7;
}
.tooltip.bottom .tooltip-arrow {
    border-bottom-color: #337ab7;
}
.tooltip.left .tooltip-arrow {
    border-left-color: #337ab7;
}
.tooltip.right .tooltip-arrow {
    border-right-color: #337ab7;
}

.dropdown-menu li.divider {
    height: 0;
    margin: 0.5rem 0;
    border-bottom: 1px solid #dddddd;
    background-color: transparent;
    overflow: hidden;
}

.navbar {
    margin-bottom: 0;
    border-width: 0 0 1px;
    border-radius: 0;
}
.navbar .alert {
    padding: 0;
    margin-bottom: 0;
    border-radius: 0;
}
.navbar .alert > div {
    display: flex;
    justify-content: center;
    align-items: flex-start;
    padding: 1rem 2rem;
}
.navbar .alert > div > div:not(:last-child) {
     margin-right: 1rem;
}

/*
 *
 */
html {
    margin: 0;
    height: 100%;
}

body {
    margin: 0;
    height: 100%;
    overflow-y: auto;
    background-color: #eee;
    font-family: system-ui,
        -apple-system,
        "Segoe UI",
        Roboto,
        "Helvetica Neue",
        "Noto Sans",
        "Liberation Sans",
        Arial,
        sans-serif,
        "Apple Color Emoji",
        "Segoe UI Emoji",
        "Segoe UI Symbol",
        "Noto Color Emoji";
}

/*
 * text
 */
.text-bold {
    font-weight: bold;
}

.semi-bold {
    font-weight: 600;
}

.text-strike {
    text-decoration: line-through;
}

.text-sm {
    font-size: small;
}

.text-md {
    font-size: medium;
}

.text-lg {
    font-size: large;
}

/*
 * flex
 */
.flex-start,
.flex-between,
.flex-end {
    display: flex;
    gap: 1rem 1.5rem;
    align-items: flex-start;
    flex-wrap: wrap;
}

.flex-start {
    justify-content: flex-start;
}

.flex-between {
    justify-content: space-between;
}

.flex-end {
    justify-content: flex-end;
}

.flex-1,
.flex-start > div,
.flex-between > div,
.flex-end > div {
    flex: 1;
}

/*
 * table settings
 *
 */
.table-settings-heading {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    margin-bottom: 0.75rem;
    border-bottom: 1px solid #ccc;
}

.side-opt form {
    margin-bottom: 1.25rem;
}

.table-settings-title,
.table-settings-subtitle {
    display: flex;
    gap: 1rem;
    justify-content: flex-start;
    align-items: center;
    font-size: x-large;
}

.table-settings-subtitle {
    font-size: medium;
}

.table-settings-link {
    font-size: medium;
    text-decoration: none;
    user-select: none;
}

/*
 * table data
 */
.home-container {
    position: relative;
    display: flex;
    flex-direction: column;
    height: 100%;
    justify-content: space-between;
    align-items: stretch;
}

.home-table {
    flex: 1 1 100%;
    overflow-y: auto;
    border-top: 1px solid #ccc;
}

.home-paging {
    gap: 2rem;
    border-top: 1px solid #ccc;
    flex: 0 1 auto;
    display: flex;
    align-items: center;
    justify-content: flex-start;
    padding-top: 10px;
    background: #eee;
}

.table-home {
    position: relative;
}

.table-home thead tr th {
    position: sticky;
	top: 0;
	background-color: #eee;
	z-index: 10;
    border-bottom: none;
}

.table-home thead tr th:after {
	content: '';
	position: absolute;
	left: 0;
	width: 100%;
	bottom: -1px;
	border-bottom: 1px solid #ccc;
}

/*
 * rate structure
 */
.panel-rates .panel-heading {
     display: flex;
     gap: 1rem;
     align-items: center;
}

.table-rates thead tr th,
.table-rates tbody tr td {
    padding: 8px 15px;
}

/*
 * field review
 */
.field-review-container {
    display: flex;
    flex-direction: column;
    min-height: 100%;
    max-height: 100%;
}

.field-review-main {
    display: flex;
    flex-direction: column;
    flex: 1;
    background: #ddd;
    border-radius: 1rem;
    overflow-y: auto;
}

.field-review-grid {
    flex: 1;
    display: grid;
    align-items: start;
    justify-content: space-between;
    grid-template-columns: minmax(min-content, 1fr) 8.5in minmax(min-content, 1fr);
}

.field-review-info-container {
    height: 100%;
    overflow-y: auto;
}

.field-review-info {
    background: #f9f9f9;
    padding: 2rem;
    min-width: 220px;
    max-width: fit-content;
    height: 100%;
    border-left: 1px solid #ddd;
    overflow-y: auto;
}

.field-review-info > div {
    margin-bottom: 2rem;
}

/* field review page */
.field-review-page {
    font-family: "Lato", "Aptos", "Calibri", sans-serif;
    font-size: 11pt;
    line-height: 1.15;
    position: relative;
    margin: auto;
    width: 8.5in;
    min-width: 8.5in;
    max-width: 8.5in;
    height: 100%;
    background: white;
    padding-left: 2.54cm;
    padding-right: 2.54cm;
    padding-top: 1.25cm;
    padding-bottom: 1.59cm;
    flex: 1;
    grid-column-start: 2;
    overflow-y: auto;
}

.field-review-page-marker {
     color: #ddd;
     position: absolute;
     top: 11in;
     left: 0;
     width: 100%;
     border-top: 2px dotted rgba(0,0,0,0.125);
}

/* field review vars */
:root {
    /* margin */
    --fr-margin-page-left: 2.54cm;
    --fr-margin-page-right: 2.54cm;
    --fr-margin-page-top: 1.25cm;
    --fr-margin-page-bottom: 1.59cm;
    /* padding */
    --fr-padding-table-page-diff: 0.27cm;
    --fr-padding-table-cell: 0.19cm;
    --fr-padding-table-cell-both: 0.38cm;
    --fr-padding-tiny-mce: 9px;
    --fr-padding-form-control: 12px;
    --fr-padding-form-control-both: 24px;
    /* border */
    --fr-border-form-control: 2px;
    /* width */
    --fr-width-column-left: 10.48cm;
    --fr-width-property-label: 3.81cm;
    --fr-width-table-border: 4px;
}

/* header */
.field-review-header {
    font-family: "Khula", "Aptos", "Calibri", sans-serif;
    width: 100%;
    margin-bottom: 16pt;
}

.field-review-header-title {
    vertical-align: bottom;
    font-size: 16pt;
    font-weight: bold;
    width: 7.94cm;
    padding: 0 var(--fr-padding-table-cell);
}

/* logo */
.field-review-qe {
    vertical-align: top;
    width: fit-content;
    text-align: right;
    width: 8.89cm;
    padding: 0 var(--fr-padding-table-cell);
}

/* img */
.field-review-qe-img {
    width: 5.12cm;
    height: auto;
    padding-bottom: 0.02cm;
}

/* address */
.field-review-qe-addr {
    font-family: "Khula";
    font-size: 8pt;
    margin: 0;
    padding: 0;
    background-color: transparent;
    border: none;
    overflow: unset;
}

/* body */
.field-review-body {
    font-family: "Lato", "Aptos", "Calibri", sans-serif;
    font-size: 11pt;
    border-bottom: 0.5pt solid black;
    margin-bottom: 1.65rem;
    table-layout: fixed;
}

.field-review-body-left {
    vertical-align: top;
    width: 10.48cm;
    padding: 0 var(--fr-padding-table-cell);
}

.field-review-body-right {
    vertical-align: top;
    width: 6.38cm;
    padding: 0 var(--fr-padding-table-cell);
}

/* properties */
.field-review-properties {
    width: 100%;
    margin-bottom: -2px;
}

.field-review-properties tr td {
    padding: 0;
    vertical-align: top;
    padding-bottom: 2rem;
}

.field-review-properties tr td.first {
    width: calc(3.81cm + var(--fr-width-table-border) - var(--fr-padding-table-cell));
}

.field-review-properties tr td.sm {
    width: calc(2.2cm + var(--fr-width-table-border) - var(--fr-padding-table-cell));
}

.field-review-properties tr td.lg {
    width: calc(5.37cm + var(--fr-width-table-border) - var(--fr-padding-table-cell));
}

.field-review-properties tr td.last.follow-up {
    font-family: sans-serif;
    font-weight: bold;
}

/* contents */
.field-review-contents {
    line-height: 1.15;
    font-family: "Lato";
    font-size: 11pt;
    padding-right: var(--fr-padding-table-page-diff);
}

.field-review-contents p,
.field-review-contents li {
    line-height: 1;
    margin: 0 0 10pt;
}

.field-review-contents ol,
.field-review-contents ul {
    margin: 0;
}

/* footer */
.field-review-footer {
    line-height: 1;
}

/* edit page */
.field-review-page-edit {
    font-family: "Calibri", sans-serif;
    font-size: initial;
    padding-left: calc(var(--fr-margin-page-left) - var(--fr-padding-tiny-mce));
    padding-right: calc(var(--fr-margin-page-right) - var(--fr-padding-tiny-mce) + var(--fr-padding-table-page-diff));
    padding-top: 2rem;
    padding-bottom: 2rem;
}

.field-review-info.field-review-info-edit {
    padding: 2rem;
    max-width: 440px;
    height: 100%;
}

/* form */
.field-review-page-edit .form-control {
    font-family: "Lato";
    font-size: 11pt;
    line-height: 1.15;
}

.field-review-body-form .field-review-form-column-left .form-control {
    width: calc(var(--fr-width-column-left) - var(--fr-width-property-label) - var(--fr-padding-table-cell-both) + var(--fr-padding-form-control-both) - var(--fr-border-form-control));
}

textarea.form-control.form-control-field-review-address {
    height: calc(34px + 4rem);
    min-height: 34px;
    resize: vertical;
}

textarea.form-control.form-control-field-review-contents {
    font-family: "Lato";
    font-size: 11pt;
    min-height: 200px;
    height: 13cm;
    resize: vertical;
}

.form-control-field-review-comments {
    min-height: 100px;
    resize: vertical;
}

form.field-review-main .form-control-radio,
form.field-review-main .form-control-checkbox {
    font-family: "Calibri", sans-serif;
    user-select: none;
    width: 100%;
    height: auto;
    padding: 6px 12px;
    line-height: 1.42857143;
    border: 1px solid #ccc;
    border-radius: 4px;
    background-color: white;
}

form.field-review-main .form-control-radio label {
    display: block;
    font-weight: normal;
    font-size: initial;
    user-select: none;
    cursor: pointer;
}

/* notes */
.notes-main {
    display: flex;
    flex-direction: column;
    flex: 1;
    background: #ddd;
    border-radius: 1rem;
    height: 100%;
    overflow-y: auto;
}

.notes-grid {
    flex: 1;
    display: grid;
    align-items: start;
    justify-content: space-between;
    grid-template-columns: minmax(min-content, 1fr) 8.5in minmax(min-content, 1fr);
    box-shadow: 1px 1px 2px inset #aaa;
}

.notes-info-container {
    padding: 0;
    height: 100%;
    overflow-y: auto;
}

.notes-info {
    background: #f9f9f9;
    padding: 2rem;
    min-width: 220px;
    max-width: 400px;
    height: 100%;
    border-left: 1px solid #ddd;
    overflow-y: auto;
}

.notes-info.notes-info-edit {
    padding: 2rem;
    max-width: 440px;
    height: 100%;
}

.notes-info > div:not(:last-child) {
    margin-bottom: 2rem;
}

.notes-menu {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    justify-content: flex-start;
    align-items: flex-end;
    padding: 1rem 0;
    padding-left: 1rem;
    margin-left: auto;
    max-width: 220px;
    height: 100%;
    overflow-y: auto;
}

.notes-menu > div {
    padding: 0.5rem 1rem;
    width: 100%;
    background-color: #eee;
    border: 1px solid #f9f9f9;
    border-right: none;
    border-top-left-radius: 0.5rem;
    border-bottom-left-radius: 0.5rem;
}

.notes-menu > div.selected {
    background-color: #fff;
}

.notes-menu .notes-menu-title {
    text-overflow: ellipsis;
    white-space: nowrap;
    overflow: hidden;
    font-size: medium;
}

.notes-menu .notes-menu-date {
    display: flex;
    justify-content: space-between;
    gap: 1rem;
    text-overflow: ellipsis;
    white-space: nowrap;
    overflow: hidden;
    font-size: small;
}

/* notes page */
.notes-page {
    font-family: "Lato", "Aptos", "Calibri", sans-serif;
    font-size: 11pt;
    line-height: 1.15;
    position: relative;
    margin: auto;
    width: 8.5in;
    min-width: 8.5in;
    max-width: 8.5in;
    height: 100%;
    background: white;
    padding-left: 1in;
    padding-right: 1in;
    padding-top: 1in;
    padding-bottom: 1in;
    flex: 1;
    grid-column-start: 2;
    overflow-y: auto;
}

textarea.form-control.form-control-notes-contents {
    font-family: "Lato";
    font-size: 11pt;
    min-height: 200px;
    height: 100%;
    resize: vertical;
}

.notes-page-edit {
    display: flex;
    flex-direction: column;
    font-family: "Calibri", sans-serif;
    font-size: initial;
    padding-left: calc(var(--fr-margin-page-left) - var(--fr-padding-tiny-mce));
    padding-right: calc(var(--fr-margin-page-right) - var(--fr-padding-tiny-mce) + var(--fr-padding-table-page-diff));
    padding-top: 2rem;
    padding-bottom: 2rem;
}

.notes-info-edit .form-control-radio,
.notes-info-edit .form-control-checkbox {
    display: flex;
    justify-content: flex-start;
    gap: 2rem;
    font-family: "Calibri", sans-serif;
    user-select: none;
    width: 100%;
    height: auto;
    padding: 6px 12px;
    line-height: 1.42857143;
    border: 1px solid #ccc;
    border-radius: 4px;
    background-color: white;
}

.notes-info-edit .form-control-radio label {
    display: block;
    font-weight: normal;
    user-select: none;
    cursor: pointer;
    margin: 0;
}

/* project estimate */
.estimate-container {
    display: flex;
    flex-direction: column;
    min-height: 100%;
    max-height: 100%;
}

.estimate-grid {
    flex: 1;
    display: grid;
    grid-template-columns: minmax(auto, 1fr) minmax(0, 8.5in) minmax(auto, 1fr);
    gap: 2px;
    overflow-y: auto;
    padding: 1rem;
    width: 100%;
    max-height: 100%;
    background: #ddd;
    border-radius: 1rem;
    box-shadow: 1px 1px 2px inset #aaa;
}

.estimate-menu {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    justify-content: flex-start;
    overflow-y: auto;
    margin-left: auto;
    padding: 1.5rem;
    width: 200px;
    height: 100%;
    background: white;
    border-top-left-radius: 1rem;
    border-bottom-left-radius: 1rem;
}

.estimate-menu .nav-pills {
    width: 100%;
    overflow-y: auto;
    scroll-snap-stop: always;
    scroll-snap-type: y mandatory;
}

.estimate-menu .nav-pills li {
    scroll-snap-align: start;
}

.estimate-menu .nav-pills li a {
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.estimate-menu-title {
    font-size: large;
    margin-bottom: 1rem;
}

.estimate-page {
    position: relative;
    display: flex;
    flex-direction: column;
    overflow-y: auto;
    padding: 0;
    width: 100%;
    height: 100%;
    background: white;
    border-top-right-radius: 1rem;
    border-bottom-right-radius: 1rem;
}

.estimate-grid .tag-page-selected {
    border-top-left-radius: 1rem;
    border-bottom-left-radius: 1rem;
    border-top-right-radius: 1rem;
    border-bottom-right-radius: 1rem;
}

.estimate-tabs {
    background: white;
    padding: 1rem;
    padding-bottom: 0;
    border-radius: 1rem;
}

.project-estimate .tab-content {
    overflow-y: auto;
    padding: 1rem 0;
    flex: 1;
    display: flex;
    flex-direction: column;
    overflow-y: auto;
}

.estimate-page .tab-content > .active {
    display: flex;
    flex-direction: column;
}

.project-estimate .tab-pane {
    padding: 0 2rem;
    min-width: 4.25in;
    overflow-y: auto;
}

/* table */
.project-estimate .table:not(.table-project) {
    min-width: 3.5in;
    max-width: 100%;
    width: 100%;
}

.project-estimate .estimate-td-total {
    border-top: 5px double #ddd !important;
    text-align: right;
}

/* table inputs */
.project-estimate tr td.td-input {
    padding: 4px 3px;
}

.project-estimate  td.td-input .form-control {
    padding: 4px 5px;
    height: auto;
}

/* action button */
.project-estimate .estimate-th-btn {
    display: flex;
    gap: 1rem;
    align-items: flex-end;
}

/* columns */
.project-estimate .estimate-columns {
    display: block;
}

/* columns tables */
.project-estimate .estimate-columns .table {
    margin-bottom: 0;
}

.project-estimate .estimate-columns .estimate-columns .table {
    margin-bottom: 1.5rem;
}

@media (min-width: 992px) {
    /* table */
    .project-estimate .table:not(.table-project) {
        max-width: 4.5in;
    }

    /* rate buttons */
    .project-estimate .rate-structure {
        max-width: 4.5in;
    }

    /* columns */
    .project-estimate .estimate-columns {
        display: flex;
        flex-wrap: wrap;
        gap: 0 2rem;
        align-items: flex-start;
        justify-content: flex-start;
    }
}

/* project table */
.project-estimate table.table-project tbody tr th {
    width: 1.1in;
}

.project-estimate table.table-project tbody th,
.project-estimate table.table-project tbody td {
    border: none;
}

.project-estimate table.table-project tbody tr th {
    font-weight: normal;
    color: #777;
}

.project-estimate table.table-project tr + tr.extra-space > th,
.project-estimate table.table-project tr + tr.extra-space > td {
    padding-bottom: 28px;
}

/* tags */
.tag-page-container {
    padding: 0 1rem;
    height: 100%;
    max-height: 100%;
    overflow-y: auto;
    display: flex;
    gap: 1rem;
    flex-direction: column;
}

.tag-page {
    flex: 1;
    padding: 0;
    background-color: #ddd;
    border-radius: 1rem;
    overflow-y: auto;
    display: grid;
    align-items: stretch;
    justify-content: space-between;
    grid-template-columns: 1fr minmax(auto, 8.5in) 1fr;
}

.tag-page-entry {
    width: 100%;
    background-color: white;
    display: flex;
    gap: 0 1.5rem;
    flex-direction: column;
    overflow-y: auto;
    grid-column-start: 2;
}

/* selected tag panel */
.tag-page-selected {
    background-color: #f9f9f9;
    padding: 2rem 0;
    width: fit-content;
    max-width: 33%;
    min-width: 200px;
    height: 100%;
    border-left: 1px solid #ddd;
    overflow-y: auto;
}

/* tag nav tabs */
.tag-page-nav-tabs {
    padding: 1rem;
}

/* tag header */
.tag-page-header {
    display: flex;
    gap: 1rem;
    justify-content: flex-start;
    align-items: center;
    margin-bottom: 0.75rem;
    padding: 0 1.5rem;
}

/* tag header title */
.tag-page-title {
    display: flex;
    gap: 1.5rem;
}

/* tag header btns */
.tag-page-header-buttons {
    display: flex;
    gap: 0.5rem;
    align-items: center;
    justify-content: flex-end;
    flex: 1;
}

/* all tags table container */
.all-tags {
    padding: 0 1rem;
    overflow-y: auto;
    scrollbar-width: thin;
}

/* all tag entry table */
.table-tag-entry {
    position: relative;
    margin-bottom: 1rem;
}

.table-tag-entry thead {
    position: sticky;
	top: 0;
	background-color: white;
	z-index: 3;
    padding: 1rem 0.5rem;
}

.table-tag-entry thead .form-control,
.table-tag-entry thead .btn {
    border-width: 2px;
}

/* tag project select */
.tag-project-selection {
    display: flex;
    gap: 1rem;
    align-items: flex-end;
    justify-content: flex-start;
    margin-bottom: 1rem;
}

/* project job type */
.tag-project-job-type {
    display: flex;
    gap: 1rem;
    align-items: flex-end;
    justify-content: space-between;
    margin-bottom: 1rem;
}

/* tag project selection component */
.tag-project-component {
    overflow-y: auto;
    scrollbar-width: thin;
    position: relative;
}

/* tag project selection section */
.tag-project-section {
    padding: 0.75rem 1.5rem;
    background-color: #fff;
}

.tag-project-section .form-control,
.tag-project-section .btn {
    border-width: 2px;
}

/* sticky section */
.tag-project-section-sticky {
    position: sticky;
	top: 0;
    z-index: 10;
}

/* tag section inner */
.tag-project-section-inner {
    display: flex;
    gap: 1rem;
    align-items: center;
    justify-content: flex-start;
    white-space: nowrap;
}

/* category heading */
.tag-list-category-heading {
    font-weight: bold;
    text-transform: capitalize;
    margin-bottom: 0.75rem;
}

/* selected tags list */
.tag-select-list {
    display: flex;
    gap: 1rem;
    flex-wrap: wrap;
    justify-content: flex-start;
    align-items: flex-start;
}

/* selectable tag */
.tag-select-item {
    background-color: #fff;
    border: 1px solid #ddd;
    border-radius: 1rem;
    padding: 0.375rem 0.75rem;
    text-transform: capitalize;
    width: fit-content;
}

/* job type default title */
.job-type-default-title {
    font-size: medium;
    font-weight: bold;
    margin-top: 1rem;
    margin-bottom: 0.5rem;
    padding: 0 1.5rem;
}

/* job type preset table */
.table-job-type-preset {
    user-select: none;
}

.table-job-type-preset td {
    width: 33%;
}

.table-job-type-preset tr {
    cursor: pointer;
}

.table-job-type-preset tr.job-type-selected {
    outline: 2px solid #66afe9;
    border-radius: 4px;
}

/*
 * dashboard
 */
.dash-container {
    max-width: 1400px;
    margin: 0 auto;
    margin-bottom: 2rem;
    padding: 0 1rem;
}

.dash-container div {
    min-width: fit-content;
}

.dash-container div.h2 {
    font-weight: bold;
}

.dash-container div.h3 {
    font-size: x-large;
    font-weight: bold;
    margin-bottom: 1.5rem;
}

.dash-container div.h4 {
    font-size: large;
    margin-bottom: 0.75rem;
}

.dash-box {
    background-color: #f5f5f5;
    border: 1px solid #ddd;
    border-radius: 5px;
    padding: 1.5rem;
}

.dash-date {
    font-size: large;
    color: black;
    white-space: nowrap;
    margin-bottom: 1.5rem;
}

.dash-money {
    font-family: monospace;
    font-size: x-large;
    color: black;
    white-space: nowrap;
    margin-bottom: 1.5rem;
}

/*
 *
 */
.web-layout {
    display: flex;
    flex-flow: column;
    height: 100%;
    overflow-y: auto;
}

.web-header {
    flex-basis: 51px;
}

.web-main {
    flex: 1 1 auto;
    overflow-y: auto;
    background-color: #eee;
    display: flex;
    flex-direction: row;
    flex-wrap: nowrap;
    justify-content: flex-start;
    align-items: stretch;
}

.web-footer {
    background: #222;
    border-top: 1px solid #080808;
}

.web-content {
    margin: 0;
    overflow-x: auto;
    overflow-y: scroll;
}

.web-content.side-nav {
    flex: 0 0 auto;
    max-width: 200px;
    overflow-y: auto;
    background: #eee;
    z-index: 20;
    scrollbar-width: thin;
}

.web-content.side-opt {
    flex: 0 0 300px;
    padding: 10px;
    overflow-y: auto;
    scrollbar-width: thin;
}

.web-content.main {
    flex: 1 1 auto;
    overflow-x: auto;
    overflow-y: auto;
    padding: 10px;
}

.web-content.main.flex {
    flex: 1 1;
    overflow-x: auto;
    overflow-y: auto;
    padding: 0px;
}

.flex-col {
    display: flex;
    flex-direction: column;
    flex-wrap: nowrap;
    justify-content: space-between;
    align-items: stretch;
}

.flex-row {
    flex: 1 1;
    overflow-y: auto;
    padding: 10px;
}

#page-content-split {
    margin-left: -15px;
    margin-right: -15px;
}

.web-content.toggle {
    flex: 0 0 15px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    margin: 0;
    padding: 0;
    overflow-x: hidden;
    overflow-y: hidden;
    text-align: center;
    color: #222;
    background-color: #ddd;
    border-left: 1px solid #ddd;
    border-right: 1px solid #f9f9f9;
    cursor: pointer;
    z-index: 21;
}

/* cpd grid */
.cpd-grid {
    display: grid;
    grid-template-columns: min-content 1fr;
    grid-template-rows: auto 1fr;
    column-gap: 0;
    row-gap: 0;
    justify-items: start;
    align-items: start;
    align-content: stretch;
    box-sizing: border-box;
    width: 100%;
    height: 100%;
    min-width: 0;
    min-height: 0;
    border: 1px solid #ccc;
    border-radius: 3px;
    overflow: hidden;
}

.cpd-grid-menu {
    z-index: 11;
    grid-column: 1 / 3;
    grid-row: 1 / 3;
    border-right: 1px solid #ccc;
    background-color: #eee;
    width: 100%;
    height: 100%;
    min-width: 0;
    min-height: 0;
    width: 0;
    opacity: 0;
    transition: width 250ms, opacity 375ms;
    overflow: hidden;
}

.cpd-grid-menu.shift {
    max-width: 100%;
    width: 550px;
    opacity: 1;
    transition: width 250ms;
}

.cpd-grid-header {
    z-index: 10;
    grid-column: 1 / 3;
    grid-row: 1 / 2;
    width: 100%;
    height: 100%;
    min-width: 0;
    min-height: 0;
    overflow: hidden;
}

.cpd-grid-main {
    z-index: 10;
    grid-column: 1 / 3;
    grid-row: 2 / 3;
    width: 100%;
    height: 100%;
    min-width: 0;
    min-height: 0;
    overflow: hidden;
}

.cpd-grid-overlay {
    z-index: 20;
    grid-column: 2 / 3;
    grid-row: 2 / 3;
    width: 100%;
    height: 100%;
    min-width: 0;
    min-height: 0;
    overflow: hidden;
    display: flex;
    justify-content: center;
    align-items: flex-start;
    text-align: center;
    background-color: white;
    font-size: 2em;
    user-select: none;
    pointer-events: none;
    opacity: 0;
    visibility: hidden;
    transition: opacity 1s 100ms, visibility 1s 100ms;
}
.cpd-grid-overlay.vis {
    user-select: auto;
    pointer-events: auto;
    opacity: 1;
    visibility: visible;
    transition: none;
}

/* columns */
@media (min-width: 992px) {
    .cpd-grid-menu {
        grid-column: 1 / 2;
    }
    .cpd-grid-header {
        grid-column: 2 / 3;
    }
    .cpd-grid-main {
        grid-column: 2 / 3;
    }
}

/* cpd menu */
.cpd-grid-menu-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    padding: 10px;
    border-bottom: 1px solid #ccc;
    white-space: nowrap;
}

.cpd-grid-menu-header > div:first-child {
    display: flex;
    align-items: flex-end;
}

.cpd-grid-menu-header > div:last-child .close {
    font-size: 24pt;
    user-select: none;
}

.cpd-grid-menu-header > div > div {
    margin-right: 1rem;
}

.cpd-grid-menu-header > div > div > h3 {
    margin: 0;
}

.cpd-grid-menu-content {
    display: flex;
    flex-direction: column;
    width: 100%;
    height: 100%;
}

.cpd-grid-menu-inputs {
    flex: 1;
    padding: 10px;
    overflow-y: scroll;
}

.cpd-grid-menu-inputs textarea {
    resize: vertical;
}

/* cpd main */
.cpd-grid-main-header {
    display: flex;
    justify-content: space-between;
    margin-bottom: 1rem;
    overflow-x: auto;
}

.cpd-page-title {
    display: flex;
    gap: 1rem;
    align-items: center;
    min-height: 30px;
    margin-right: 1rem;
    flex: 1;
}

.cpd-page-title > h3 {
    margin: 0;
    margin-right: 1rem;
}

.cpd-grid-main-content {
    display: flex;
    flex-direction: column;
    margin: 0 auto;
    height: 100%;
    padding: 0.15in;
    background-color: white;
    overflow-y: hidden;
}

.cpd-grid-main-menu {
    display: flex;
    justify-content: flex-start;
    align-items: flex-end;
    position: relative;
    overflow-x: auto;
    margin-bottom: 1rem;
}

.cpd-grid-main-menu-btns {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-start;
    align-items: flex-end;
    padding-right: 4rem;
    border-bottom: 1px solid #ddd;
}

.cpd-grid-main-menu-btns > div {
    margin-right: 1rem;
    margin-bottom: 1rem;
}

.cpd-grid-main-menu > .nav-tabs {
    display: flex;
}

.cpd-grid-main-filters {
    border-bottom: 1px solid #ddd;
}
.cpd-grid-main-filters > div {
    margin-right: 2rem;
    margin-bottom: 1rem !important;
}

.cpd-grid-main-content > .tab-content {
    flex: 1;
    overflow: auto;
}

.cpd-plan-selected {
    border-left: 4px solid #337ab7;
    border-top-left-radius: 0;
    border-bottom-left-radius: 0;
    margin-left: -3px;
}

/* cpd table */
.cpd-table {
    margin: 0;
    margin-bottom: 2rem;
    position: relative;
    border-collapse: separate;
}
.table.cpd-table > thead > tr > th {
    position: sticky;
    top: 0;
    background: #ffffff;
}
.cpd-table > tbody > tr:first-child > td {
    border-top: 0;
}
.table.cpd-table tr:not([style*="display: none"]).total-row + tr > td {
    border-color: #808080;
}
.table.cpd-table tr.is-selected {
    background: rgba(0,0,0,0.125);
}
.table.cpd-table > tbody > tr > td > div {
    white-space: pre-wrap;
}
.table.cpd-table tr.total-row > td {
    border-color: #808080;
    background-color: #f0f8ff;
    white-space: nowrap;
}
.table.cpd-table > tfoot > tr.total-row > td {
    border-bottom: 1px solid #808080;
}

/* cpd plan */
.cpd-plan {
    max-width: 11in;
    min-width: 8.5in;
    margin: auto;
}

.cpd-plan-title {
    display: flex;
    justify-content: space-between;
    align-items: flex-end;
    margin: 0;
    margin-bottom: 1rem;
}

.cpd-plan-status {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    font-size: 0.75em;
}

.cpd-plan textarea {
    height: 100%;
    resize: vertical;
}

.cpd-plan-box {
    margin-bottom: 2rem;
    border: 1px solid #ccc;
}

.cpd-plan-header {
    display: flex;
    text-align: center;
    font-weight: bold;
    background-color: #eee;
}

.cpd-plan-header > div {
    flex: 1;
    padding: 6px;
}

.cpd-plan-header > div:not(:first-child) {
    border-left: 1px solid #ccc;
}

.cpd-plan-inputs {
    display: flex;
}

.cpd-plan-input {
    flex: 1;
    padding: 6px;
}

.cpd-plan-input:not(:last-child) {
    border-right: 1px solid #ccc;
}

.cpd-plan-label {
    padding: 6px;
    font-weight: bold;
    padding-right: 3rem;
}

.cpd-plan-label:not(:last-child) {
    border-right: 1px solid #ccc;
}

.cpd-plan-box > div:not(:last-child) {
    border-bottom: 1px solid #ccc;
}

.cpd-plan-label:first-child {
    width: 315px;
}

.cpd-plan-label.sm:first-child {
    width: 278px;
}

.cpd-plan-inputs > div:not(.cpd-plan-label) {
    flex: 1;
}

.cpd-plan-activity {
    display: flex;
    padding: 6px;
    border-bottom: 1px solid #ccc
}

.cpd-plan-activity > span {
    white-space: nowrap;
    margin-right: 2rem;
}

/* risk assessment tool */
.cpd-plan-inputs .checkbox {
    display: flex;
    justify-content: space-between;
    align-items: center;
    text-align: center;
}

.cpd-plan-inputs .checkbox > label {
    flex: 1;
}

.cpd-plan-risk-total {
    display: flex;
    justify-content: space-between;
    align-items: center;
    text-align: center;
}

.cpd-plan-risk-total > div:first-child {
    padding: 1rem;
    text-align: right;
    flex: 1;
}

.cpd-plan-risk-question {
    padding: 1rem;
    padding-bottom: 0;
    max-width: 90%;
}

.cpd-plan-risk-score {
    display: flex;
    justify-content: center;
    align-items: center;
    max-width: 10%;
}
.cpd-plan-risk-score > span {
    font-size: 1.1em;
}

.cpd-risk-assessment {
    text-align: center;
    padding: 1rem;
    margin: 1rem;
    display: flex;
    justify-content: space-between;
    align-items: center;
}
.cpd-risk-assessment > div {
    flex: 1;
    display: flex;
    justify-content: space-evenly;
    align-items: center;
    text-align: center;
    border: 1px solid #ccc;
    margin: 1rem;
    padding: 0.75rem 1.5rem;
    font-size: 1.1em;
    font-weight: bold;
}
.cpd-risk-assessment > div > div {
    flex: 1 0 14px;
}

.cpd-risk-assessment > div.cpd-risk-assessment-low.checked {
    background-color: #92d050;
    border-color: #92d050;
}
.cpd-risk-assessment > div.cpd-risk-assessment-moderate.checked {
    background-color: #ffff00;
    border-color: #ffff00;
}
.cpd-risk-assessment > div.cpd-risk-assessment-high.checked {
    background-color: #ffc000;
    border-color: #ffc000;
}
.cpd-risk-assessment > div.cpd-risk-assessment-very-high.checked {
    background-color: #ff0000;
    border-color: #ff0000;
}

/* loading indicator */
.cpd-spin {
    animation-name: spin;
    animation-duration: 1s;
    animation-iteration-count: infinite;
    animation-timing-function: ease-in-out;
    opacity: 0;
    transition: opacity 1s;
    transition-delay: 100ms;
}
.cpd-spin.go {
    opacity: 1;
    transition: opacity 100ms;
    transition-delay: 100ms;
}

/* cpd pdf */
.cpd-pdf {
    width: calc(11in - 0.3in);
    padding: 0.15in;
    margin: auto;
    overflow: hidden;
}
.cpd-pdf .cpd-plan {
    width: initial;
    margin: 0;
    padding: 0;
}
.cpd-pdf input,
.cpd-pdf textarea {
    border: none;
    padding: 0;
    box-shadow: none;
}
.cpd-pdf .table.cpd-table tr.is-selected {
    background: transparent;
}
.cpd-pdf .cpd-plan-status {
    display: none;
}

/* avoid page breaks */
.cpd-table tr,
.cpd-table td,
.cpd-table th,
.cpd-plan-box > div,
.cpd-plan-inputs,
.cpd-plan-input {
    break-inside: avoid-page;
}

/* qecrm modal */
dialog.qecrm-modal {
	display: flex;
	flex-direction: column;
	background-color: #f8f8f8;
	border: 2px solid #f8f8f8;
	border-radius: 5px;
	padding: 0;
	width: 75vw;
	max-width: 695px;
	max-height: 60vh;
}

dialog.qecrm-modal:not([open]) {
	display: none !important;
}

dialog.qecrm-modal::backdrop {
	backdrop-filter: grayscale(100%) brightness(50%);
}

dialog.qecrm-modal .qecrm-modal-header {
	font-size: large;
	display: flex;
	justify-content: space-between;
	align-items: center;
	background-color: #eee;
	padding: 1rem;
	border-bottom: 1px solid #ccc;
}

dialog.qecrm-modal .qecrm-modal-header .glyphicon {
    top: unset;
}

dialog.qecrm-modal .qecrm-modal-header .qecrm-modal-title {
	display: flex;
	gap: 0.5rem;
	align-items: center;
}

dialog.qecrm-modal .qecrm-modal-body {
    padding: 1rem;
	overflow-y: auto;
}

dialog.qecrm-modal .qecrm-modal-body > p {
	font-size: medium;
	padding: 0 1rem;
	margin-bottom: 1.5rem;
}

dialog.qecrm-modal .qecrm-modal-footer {
	font-size: large;
	margin: 0;
	display: flex;
	gap: 1rem;
	justify-content: flex-end;
	align-items: center;
	background-color: #eee;
	padding: 1rem;
	border-top: 1px solid #ccc;
}

dialog.qecrm-modal .qecrm-modal-footer a {
	color: #fff;
}

/*
 * invoice create/edit
 */
#invoice-summary {
    margin-top: -10px;
    background: #ddd;
}
#invoice-summary .close {
    float: none;
    position: absolute;
    right: 3px
}
#invoice-summary textarea {
    height: 68px;
    resize: vertical;
}

#invoice-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    margin: 0 auto;
}
#invoice-footer {
    margin: 0 auto;
}
#invoice-header .form-control,
#invoice-footer .form-control {
    font-family: 'Calibri', sans-serif;
    font-size: 11pt;
    padding-left: 1.9mm;
    padding-right: 1.9mm;
}
#invoice-header .form-control {
    line-height: 1.08;
    width: 8.38cm;
}
#invoice-footer .form-control {
    line-height: 1.15;
    width: 16.77cm;
    height: 112px;
    resize: vertical;
}

#line-items {
    margin-bottom: 10px;
}
#line-items .table {
    width: 100% !important;
    margin: 0 auto;
}
#line-items .table td {
    font-family: 'Calibri', sans-serif;
    font-size: 11pt;
    line-height: 1.08;
}

#line-items .text {
    display: inline-block;
    padding-left: 1.9mm;
    padding-right: 1.9mm;
}

#line-items .form-control {
    display: inline-block;
    font-family: 'Calibri', sans-serif;
    font-size: 11pt;
    line-height: 1.08;
    padding-left: 1.9mm;
    padding-right: 1.9mm;
}

#line-items .col-line-items,
#line-items .col-quantity,
#line-items .col-rate,
#line-items .col-rate-descriptor,
#line-items .col-total {
    vertical-align: middle;
}

#line-items .col-desc .form-control {
    width: 10.6cm;
}

#line-items .col-line-items .text,
#line-items .col-line-items .form-control {
    width: 10.6cm;
}

#line-items .col-quantity .text,
#line-items .col-quantity .form-control {
    text-align: center;
    width: 1.42cm;
}

#line-items .col-rate .text,
#line-items .col-rate .form-control {
    width: 1.78cm;
}

#line-items .col-rate-descriptor .text,
#line-items .col-rate-descriptor .form-control {
    width: 1.78cm;
}

#line-items .col-total .text,
#line-items .col-total .form-control {
    width: 2.16cm;
}

#re-description .form-control {
    font-family: "Calibri", "sans-serif";
    font-size: 12pt;
    line-height: 1.15;
    padding-left: 1.9mm;
    padding-right: 1.9mm;
    width: 15.88cm;
}

#invoice-summary .table td.arrows {
    max-width: 0.2in;
    font-size: 9pt;
    line-height: 1.5;
}
#invoice-summary .table td.arrows a {
    color: #DDD;
}
#invoice-summary .table td.arrows a:hover {
    color: #777;
}

.itemgroup-excluded {
    opacity: 0.3;
}

/*
 * invoice view
 */
.invoice-page {
    font-family: "Calibri", sans-serif;
    font-size: 11pt;
    line-height: 1.15;
    position: relative;
    margin: auto;
    min-width: 8.5in;
    max-width: 8.5in;
    width: 8.5in;
    min-height: 11in;
    background: white;
}
.invoice-body {
    padding: 44.15mm 19mm 15mm 25.4mm;
}

.invoice-header-table {
    width: 100%;
    margin: 0;
    border-collapse: collapse;
    border-spacing: 0;
}
.invoice-header-td {
    width: 8.76cm;
    padding: 0;
    vertical-align: top;
}

.invoice-re {
    position: relative;
    font-size: 12pt;
}
.invoice-re-lastline {
    margin-left: 1.24cm;
    font-size: 14pt;
}

.invoice-items-table {
    width: 100%;
    margin: 0;
    border-collapse: collapse;
    border-spacing: 0;
    border-top: 1px solid black;
    border-left: 1px solid black;
    border-bottom: 1px solid black;
}
.invoice-items-th {
    border-right: 1px solid black;
    border-bottom: 1px solid black;
    padding-left: 1.9mm;
    padding-right: 1.9mm;
}
.invoice-items-td {
    border-right: 1px solid black;
    padding-left: 1.9mm;
    padding-right: 1.9mm;
}

.invoice-total-td {
    padding-left: 1.9mm;
    padding-right: 1.9mm;
}

.invoice-th-desc {
    width: 10.98cm;
    padding-left: 1.9mm;
}
.invoice-th-qty {
    width: 1.9cm;
}
.invoice-th-rate {
    width: 2.16cm;
}
.invoice-th-amount {
    width: 2.54cm;
}

.invoice-summary-total {
    border-top: 1px solid black;
}


/*
 *
 */
.width-margins {
    margin-left: 16px;
    margin-right: 16px;
}

.height-margins {
    margin-top: 16px;
    margin-bottom: 16px;
}

.height-margins-top {
    margin-top: 16px;
}
.height-margins-btm {
    margin-bottom: 16px;
}

.num-input {
    width: 70px;
}

.checkbox-tax {
    font-weight: bold;
    cursor: pointer;
    -moz-user-select: none;
    -webkit-user-select: none;
    user-select: none;
}
.checkbox-tax input[type="checkbox"] {
    margin-left: 12px;
}

.checkbox.border {
    background: #eee;
    border: 1px solid #ccc;
    border-radius: 4px;
    padding-right: 25px;
    padding-top: 3px;
    padding-bottom: 3px;
}

.modal-title-flex {
    display: flex;
    justify-content: flex-start;
    align-items: center;
}

.modal-inputs {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    align-items: flex-start;
}

.modal-inputs > div {
    padding: 5px;
    flex: 1;
}


/* Sidebar navigation */
.nav-sidebar {
  margin-bottom: 20px;
}

.nav-sidebar > .active > a,
.nav-sidebar > .active > a:hover,
.nav-sidebar > .active > a:focus {
  color: #fff;
  background-color: #428bca;
}
.nav-sidebar .nav-divider {
    height: 0;
    margin: 0.125rem 0;
    border-bottom: 1px solid #cccccc;
    background-color: transparent;
    overflow: hidden;
}
.nav-sidebar > li > a {
    padding: 7px 15px;
}

.nav > li > a:hover,
.nav > li > a:focus {
    background-color: #f9f9f9;
}


/*
 *
 */
.table-hover tbody tr td {
    position: relative;
    background-color: transparent;
    isolation: isolate;
}

.table-hover tbody tr td::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background-color: #428BCA;
    opacity: 0;
    transition: opacity 0.3s;
    pointer-events: none;
    z-index: -1;
}

.table-hover tbody tr:hover td::before {
    opacity: 1;
    transition: opacity 0s;
}

.table-hover tbody tr:hover td {
    cursor: pointer;
    color: white;
}

.table-hover tbody tr:hover td a {
    color: white;
}

.table tr > td.valign-middle {
    vertical-align: middle;
}

.table tr > td.subtotal-cell {
    border-top: 1px solid black;
}

.table tr > td.total-cell {
    border-top: 4px double black;
}

.table tr.hover:hover {
    background-color: #f5f5f5;
}

.table tr > th.border-top {
    border-top: 1px solid #000000;
}

.table tr.border-none-outside > td:first-child,
.table tr.border-none-outside > th:first-child,
.table tr.border-none-outside > td:last-child,
.table tr.border-none-outside > th:last-child {
    border: none;
    background: #eee;
}

.table tr.defer td {
    background: #ccc;
    opacity: 0.4;
}

.table tr.defer td:last-child {
    background: transparent;
    opacity: 1.0;
}

.table tr.defer td:nth-child(7),
.table tr.defer td:nth-child(8) input[type="text"],
.table tr.defer td:nth-child(12) {
    text-decoration: line-through;
}

.table tr.defer.expense td:nth-child(9),
.table tr.defer.expense td:nth-child(10) input[type="text"] {
    text-decoration: line-through;
}

.table tr.hidden-item-group.timelog td:nth-child(7),
.table tr.hidden-item-group.timelog td:nth-child(8) input[type="text"],
.table tr.hidden-item-group.timelog td:nth-child(12) {
    text-decoration: line-through;
}

.table tr.hidden-item-group.expense td:nth-child(7),
.table tr.hidden-item-group.expense td:nth-child(9),
.table tr.hidden-item-group.expense td:nth-child(10) input[type="text"] {
    text-decoration: line-through;
}

.table tr[data-url].selected {
    background: #428BCA;
    color: #fff;
}

.table tr.info.info-border > td {
    border-top: 1px solid #428bca;
    border-bottom: 1px solid #428bca;
    vertical-align: top;
}

.table tr.no-invoice {
    background: #e6e6fa !important;
}
.table tr.no-invoice > td {
    border-top: 1px solid #9370DB;
    border-bottom: 1px solid #9370DB;
    vertical-align: top;
}

/* analytics */
.user-rate th,
.user-rate td {
    min-width: 100px;
}

/* project scheduling */
.activity-table-label {
    padding: 0 0.5rem;
    padding-bottom: 0.25rem;
}

label.sub {
    font-weight: normal;
    margin-right: 0.5rem;
}

.input-group.date-time-inputs {
    display: flex;
}
.input-group.date-time-inputs > input {
    padding: 0 0.75rem;
    width: auto;
}
.input-group.date-time-inputs > input:not(:last-child) {
    border-right: 0;
}

.activity-tab-row {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    flex-wrap: wrap;
}
.activity-tab-row > div {
    margin-bottom: 1.25rem;
}
.activity-tab-row > div:not(:last-child) {
    margin-right: 1rem;
}

.table.project-scheduling td.arrows {
    font-size: 9pt;
    line-height: 1.5;
}
.table.project-scheduling td.arrows a {
    color: #dddddd;
}
.table.project-scheduling td.arrows a:hover {
    color: #777777;
}

.table.project-scheduling tr:first-child > td.arrows > div:first-child,
.table.project-scheduling tr:last-child > td.arrows > div:last-child {
    visibility: hidden;
}

/*
 * project label
 */
 .project-label {
    line-height: 1;
    table-layout: fixed;
    width: 82.55mm;
    height: 22.225mm;
    page-break-inside: avoid;
}
.label-address {
    width: 60%;
    height: 11.1125mm;
    vertical-align: middle;
    padding: 0;
    font-size: 11pt;
}
.label-number {
    height: 11.1125mm;
    text-align: right;
    vertical-align: top;
    font-size: 24pt;
    padding: 0;
    padding-right: 3.175mm;
}
.label-desc {
    height: 11.1125mm;
    vertical-align: top;
    font-size: 12pt;
    padding: 0;
    padding-top: 1.5875mm;
}


/*
 *
 */
.confirm-action {
    cursor: pointer;
    vertical-align: middle;
    -moz-user-select: none;
    user-select: none;
}


/*
 * spin
 */
@-moz-keyframes spin {
    from { -moz-transform: rotate(0deg); }
    to { -moz-transform: rotate(360deg); }
}
@-webkit-keyframes spin {
    from { -webkit-transform: rotate(0deg); }
    to { -webkit-transform: rotate(360deg); }
}
@keyframes spin {
    from { transform: rotate(0deg); }
    to { transform: rotate(360deg); }
}
.traveldistance-spin {
    color: #428BCA;
    -moz-animation-name: spin;
    -moz-animation-duration: 2000ms;
    -moz-animation-iteration-count: infinite;
    -moz-animation-timing-function: linear;
    -webkit-animation-name: spin;
    -webkit-animation-duration: 2000ms;
    -webkit-animation-iteration-count: infinite;
    -webkit-animation-timing-function: linear;
    animation-name: spin;
    animation-duration: 2000ms;
    animation-iteration-count: infinite;
    animation-timing-function: linear;
}


/*
 *
 */
.opacity-transparent {
    opacity: 0;
    transition: opacity 0.5s;
}
.opacity-opaque {
    opacity: 1;
    transition: opacity 0.5s;
}


/*
 *  Tasks
 */
.tasks .task-row {
    display: flex;
    flex-flow: row;
}
.tasks .task-column {
    flex: 1 1;
    padding: 0 10px;
    border-left: 2px solid #e3e3e3;
}
.tasks .column-heading {
    margin: 0;
    margin-bottom: 15px;
}
.tasks .panel-heading {
    cursor: pointer;
}
#column-view.tasks .panel-footer {
    cursor: move;
}
.tasks .panel-heading .panel-btn-menu {
    visibility: hidden;
    position: absolute;
    right: -1px;
    top: -11px;
    z-index: 2;
}
.tasks .panel-heading:hover .panel-btn-menu {
    visibility: visible;
}

.tasks .task-heading-left,
.tasks .task-heading-right {
    margin-bottom: 0.5rem;
}

.tasks .task-heading-right,
.tasks .task-footer-right {
    text-align: left;
}
@media (min-width: 992px) {
    .tasks .task-heading-right,
    .tasks .task-footer-right {
        text-align: right;
    }
}
.tasks .task-heading-right > div,
.tasks .task-heading-right > div:not(:empty) ~ div {
    font-weight: normal;
}
.tasks .task-heading-right > div:not(:empty) {
    font-weight: bold;
}

/*
 *
 */
#timesheet-table td {
    position: relative;
}
#timesheet-table tr.strikeout td:before {
    content: " ";
    position: absolute;
    top: 50%;
    left: 0;
    border-bottom: 1px solid #111;
    width: 100%;
}
#timesheet-table tr.strikeout td:after {
    content: " ";
}

.submit-na {
    background: white;
}
.submit-pending {
    background: #CCC;
}
.submit-approved {
    background: #DFF0D8;
}
.submit-denied {
    background: #F2DEDE;
}


/*
 * Login form
 */
.form-signin {
    max-width: 320px;
    padding: 20px;
    margin: 0px auto;
    padding-top: 5vh;
}
.form-signin .form-signin-heading,
.form-signin .checkbox {
  margin-bottom: 10px;
}
.form-signin .checkbox {
  font-weight: normal;
}
.form-signin .form-control {
  position: relative;
  height: auto;
  -webkit-box-sizing: border-box;
     -moz-box-sizing: border-box;
          box-sizing: border-box;
  padding: 10px;
  font-size: 16px;
}
.form-signin .form-control:focus {
  z-index: 2;
}
.form-signin input[type="text"] {
  margin-bottom: -1px;
  border-bottom-right-radius: 0;
  border-bottom-left-radius: 0;
}
.form-signin input[type="password"] {
  margin-bottom: 10px;
  border-top-left-radius: 0;
  border-top-right-radius: 0;
}
.form-signin input[type="email"] {
  margin-bottom: 10px;
}


/* nav menu */
.nav-menu {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    align-items: center;
    justify-content: flex-start;
    width: auto;
    padding: 0.5rem 1rem;
}

.nav-group {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    align-items: center;
    justify-content: flex-start;
    background-color: #e3e3e3;
    width: 100%;
    border-radius: 1rem;
    padding: 0.5rem;
}

a.nav-item {
    display: flex;
    gap: 1rem;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    border-radius: 1rem;
   /* padding: 0.5rem;*/
    cursor: pointer;
    text-decoration: none;
    position: relative;
}

a.nav-item.active {
    background-color: #f7f7f7;
    outline: 1px solid #337ab7;
}

a.nav-item:focus,
a.nav-item.active:focus {
    outline: 2px dotted #337ab7;
}

a.nav-item:hover {
    background-color: #f0f0f0;
}

.nav-item-title {
    display: flex;
    gap: 1rem;
    align-items: center;
    justify-content: center;
}

.nav-title-icon {
    width: 32px;
    height: 32px;
}

.nav-title-text {
    font-size: medium;
    color: #2e6da4;
}

.nav-item-indicator {
    border: 1px solid #004943;
    border-radius: 1rem;
    padding: 0 0.5rem;
    color: #004943;
    font-size: smaller;
    align-self: flex-start;
}

.side-nav .nav-options {
    padding: 0.375rem 0;
}

.side-nav .nav-menu .nav-option-collapsed {
    display: none;
}

/* nav menu page */
.nav-menu-grid {
    flex: 1;
    display: grid;
    grid-template-columns: minmax(auto, 1fr) minmax(0, 1200px) minmax(auto, 1fr);
    gap: 2px;
    overflow-y: auto;
    padding: 1rem;
    width: 100%;
    max-height: 100%;
    background: #ddd;
    border-radius: 1rem;
}

.nav-menu-page {
    grid-column-start: 2;
    position: relative;
    height: 100%;
    max-height: 100%;
    display: flex;
    gap: 1rem;
    overflow-y: auto;
}

.nav-menu-page-fav {
    flex: 1;
    min-width: 250px;
    display: flex;
    flex-direction: column;
    max-height: 100%;
    overflow-y: auto;
}

.nav-menu-page-all {
    flex: 3;
    display: flex;
    flex-direction: column;
    max-height: 100%;
    overflow-y: auto;
}

/* navigation menu - alt */
.nav-menu.alt {
    flex-direction: row;
    flex-wrap: wrap;
    align-items: stretch;
    overflow-y: auto;
}

.nav-menu.alt .nav-group {
    width: fit-content;
    align-items: stretch;
}

.nav-menu.alt .nav-group a.nav-item {
    width: min-content;
    justify-content: center;
}

.nav-menu.alt .nav-group a.nav-item.selected {
    background-color: #f7f7f7;
}

.nav-menu.alt .nav-group a.nav-item .nav-item-title {
    gap: 0;
    flex-direction: column;
    text-align: center;
    line-height: normal;
    min-width: 96px;
}

.nav-menu.alt .nav-group a.nav-item .nav-title-icon {
    width: 48px;
    height: 48px;
}

.nav-menu.alt .nav-group a.nav-item .nav-item-indicator {
    position: absolute;
    right: 1rem;
}

/* navigation menu - favourites */
.nav-menu.favourites-menu {
    align-items: flex-start;
    justify-content: flex-start;
    flex: 1;
    overflow-y: auto;
}
.nav-menu.favourites-menu .nav-group {
    align-items: flex-start;
    justify-content: flex-start;
}

.nav-menu.favourites-menu:not(.view) .nav-group a.nav-item {
    cursor: grab;
    user-select: none;
}

.nav-menu.favourites-menu .nav-group a.nav-item:hover {
    transition: background-color 0.125s ease-in;
}

.nav-menu.favourites-menu .nav-group.no-hover a.nav-item:hover {
    background-color: #e3e3e3;
    transition: background-color 0s;
}

.nav-menu.favourites-menu .nav-group.no-hover a.nav-item:hover::after {
    opacity: 0;
    transition: opacity 0s;
}

.nav-menu.favourites-menu .nav-group a.nav-item.dragged-item {
    pointer-events: none;
    filter: sepia(100%);
    background-color: #f0f0f0;
    outline: 2px dotted #337ab7;
}

.nav-menu.favourites-menu .nav-group a.nav-item .nav-item-title {
    pointer-events: none;
}

.nav-menu.favourites-menu .nav-group a.nav-item .nav-title-icon {
    width: 48px;
    height: 48px;
}

/* draggable indicator */
.nav-menu.favourites-menu .nav-group a.nav-item::after {
    font-family: 'Glyphicons Halflings';
    content:"\e068";
    background-color: #e3e3e3;
    color: #333;
    border-radius: 50%;
    padding: 2px;
    margin-right: 1rem;
    width: fit-content;
    min-width: 32px;
    min-height: 32px;
    text-align: center;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: grab;
    opacity: 0;
    transition: opacity 0.125s ease-in;
}

.nav-menu.favourites-menu .nav-group a.nav-item:hover::after {
    opacity: 1;
}

/* nav menu collapsed */
.side-nav.collapsed .nav-menu {
    justify-content: center;
}
.side-nav.collapsed .nav-menu .nav-group {
    justify-content: center;
    width: auto;
    flex-direction: column;
}

.side-nav.collapsed .nav-menu a.nav-item {
    justify-content: center;
    width: auto;
    text-align: center;
}

.side-nav.collapsed .nav-menu .nav-option,
.side-nav.collapsed .nav-menu .nav-title-text {
    display: none;
}

.side-nav.collapsed .nav-menu .nav-option-collapsed {
    display: block;
}

.side-nav.collapsed .nav-menu .nav-item-indicator {
    position: absolute;
    top: -0.5rem;
    right: -0.5rem;
}

/* nav menu dark */
body.theme-dark .web-content.side-nav {
    background-color: #000;
}

body.theme-dark .nav-menu .nav-group {
    background-color: #222;
}

body.theme-dark .nav-menu a.nav-item.active {
    background: #2E3946;
}

body.theme-dark .nav-menu a.nav-item:hover {
    background: #385270;
}

body.theme-dark .nav-menu .nav-title-text {
    background: linear-gradient(90deg, #00dff0, #006ff0);
    background-clip: text;
    color: transparent;
}

body.theme-dark .nav-menu .nav-item-indicator {
    color: #006ff0;
    border-color: #006ff0;
}

/* project nav */
.nav-project.nav-pills {
    margin-bottom: 1rem;
}

.nav-project.nav-pills > li > a {
    padding: 4px 8px;
    border-radius: 1rem;
}

.nav-project.nav-pills > li.active > a,
.nav-project.nav-pills > li.active > a:active,
.nav-project.nav-pills > li.active > a:focus,
.nav-project.nav-pills > li.active > a:hover
{
	color: #2e6da4;
	background-color: #f7f7f7;
    outline: 1px solid #337ab7;
}

.nav-project.nav-pills > li.active > a:focus,
.nav-project.nav-pills > li > a:focus
{
    outline: 2px dotted #337ab7;
}

/* page header */
.page-header {
    display: flex;
    gap: 1rem 2rem;
    justify-content: flex-start;
    align-items: center;
    width: fit-content;
    flex-wrap: wrap;
    border: 0;
    padding: 0;
    margin: 0;
    margin-bottom: 1rem;
}

.page-heading {
    display: flex;
    gap: 1rem;
    justify-content: flex-start;
    align-items: center;
}

.heading-title {
  /*  background: linear-gradient(#00dff0, #006ff0);
    background-clip: text;
    color: transparent;    */
    color: #428bca;
    font-size: 18pt;
}

.heading-subtitle {
    font-size: 14pt;
    color: #777;
}

.heading-subtitle:empty {
    display: none;
}

.header-btns {
    display: flex;
    gap: 1rem;
    justify-content: flex-start;
    align-items: center;
    flex-wrap: wrap;
}

.section-title {
    font-weight: 600;
    font-size: medium;
    text-transform: uppercase;
    margin-bottom: 0.375rem;
}

/* avatar image */
.avatar-img {
  background-position: center;
  background-size: cover;
  background-repeat: no-repeat;
  border-radius: 50%;
  width: 64px;
  height: 64px;
  border: 2px solid #fff;
  background-color: #ddd;
  color: #222;
  display: flex;
  justify-content: center;
  align-items: center;
  text-transform: uppercase;
  font-size: x-large;
}

.avatar-title {
    font-size: 18pt;
}

.avatar-sm {
    width: 32px;
    height: 32px;
    font-size: small;
    border: 1px solid #fff;
    padding-bottom: 1px;
}

/* profile image */
.profile-img {
    width: auto;
    height: auto;
    max-width: 400px;
    max-height: 100px;
}

/* upload file table */
.table-upload tr td {
    width: 50%;
    vertical-align: top;
    text-align: center;
    height: auto;
}

/* file upload */
.file-upload-container {
    display: flex;
    flex-direction: column;
}

/* file input */
.custom-file-input {
    cursor: pointer;
    height: 30px;
    width: 100%;
}

/* upload file input */
.file-select-btn {
    position: relative;
    margin-bottom: 1rem;
}

.file-select-btn .btn {
    pointer-events: none;
    position: absolute;
    top: 0;
    left: 0;
    height: 100%;
}

.file-select-btn:hover .btn {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}

/* file drop */
.file-view-area,
.file-drop-area {
    border: 2px dashed #ddd;
    border-radius: 1rem;
    padding: 0.5rem;
    margin-bottom: 1rem;
    color: #777;
    display: flex;
    align-items: center;
    justify-content: center;
}

.file-view-area {
    border: 2px dashed transparent;
}

/* file preview */
.file-view,
.file-preview {
    background-position: center;
    background-size: cover;
    background-repeat: no-repeat;
    background-clip: content-box;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    border-radius: 50%;
    width: 128px;
    height: 128px;
    color: inherit;
    white-space: nowrap;
    font-size: small;
    font-weight: normal;
    user-select: none;
    pointer-events: none;
}

/* file preview alt */
.file-preview-contain {
    background-size: contain;
    width: 100%;
    height: auto;
    min-width: 128px;
    min-height: 128px;
    border-radius: 1rem;
    background-color: transparent;
    border-color: transparent;
}

/* file drop events */
.file-drop-enter {
    background-color: #9acbff;
    border: 2px dashed #007bff;
    color: #222;
    cursor: copy;
}

/* project-risk-assessment */
.project-risk-assessment {
    padding-left: 1in;
    padding-right: 1in;
    padding-top: 0.75in;
    padding-bottom: 0.75in;
    line-height: normal;
}

.project-risk-assessment div {
    margin-bottom: 0.5rem;
}

.project-risk-assessment .table {
    margin-bottom: 0;
}

.project-risk-assessment .table th {
    padding: 0.375rem;
}

.project-risk-assessment .table td {
    padding: 0.375rem;
}

.project-risk-assessment .table.score th:last-child,
.project-risk-assessment .table.score td:last-child {
    text-align: right;
}

.project-risk-assessment .heading {
    font-size: medium;
    font-weight: bold;
    margin-top: 1rem;
    margin-bottom: 0.5rem;
}

.project-risk-assessment .heading.lg {
    margin-top: 0;
    font-size: large;
}

.project-risk-assessment .help {
    width: fit-content;
    text-decoration: underline dotted;
    cursor: help;
}

/* project-checklist */
.project-checklist {
    padding-left: 1in;
    padding-right: 1in;
    padding-top: 0.75in;
    padding-bottom: 0.75in;
    line-height: normal;
}

.project-checklist section {
    margin-bottom: 2.75rem;
}

.project-checklist header {
    display: flex;
    gap: 1.625rem;
}

.project-checklist h1,
.project-checklist h2,
.project-checklist h3 {
    margin: 0;
    padding: 0;
    font-weight: bold;
}

.project-checklist h1 {
    font-size: x-large;
    margin-bottom: 1rem;
}

.project-checklist h2,
.project-checklist h3 {
    font-size: large;
    margin-bottom: 1rem;
    display: flex;
    align-items: center;
    gap: 1.625rem;
}

.project-checklist h2 div,
.project-checklist h3 div {
    display: flex;
    align-items: center;
    gap: 0.625rem;
}

.project-checklist h3 {
    font-size: medium;
    margin-bottom: 0.75rem;
}

.project-checklist .table {
    margin-bottom: 1rem;
    table-layout: fixed;
}

.project-checklist .table th {
    width: 1.375in;
    max-width: 1.375in;
}

.project-checklist .table th,
.project-checklist .table td {
    border: none;
}

.project-checklist .project-add-engineer {
    min-width: 50%;
    max-width: fit-content;
}

.project-checklist .project-add-engineer textarea {
    margin-bottom: 1rem;
    min-width: 50%;
    max-width: 100%;
    height: 80px;
    min-height: 40px;
}

.project-checklist .btn {
    display: flex;
    gap: 0.5rem;
    align-items: center;
    justify-content: center;
}

.project-checklist .btn .glyphicon {
    top: 0;
}

.project-checklist .project-engineers .project-engineer {
    padding: 1rem 0;
}

.project-checklist .project-engineers .project-engineer:first-child {
    padding-top: 0;
}

.project-checklist .project-engineers .project-engineer:last-child {
    border-bottom: none;
    padding-bottom: 0;
}

.project-checklist .project-engineers .project-engineer .table {
    margin-bottom: 0;
}

.project-checklist .project-engineers .project-engineer.edit-engineer tr:last-child td,
.project-checklist .project-engineers .project-engineer.edit-engineer tr:nth-last-child(2) td {
    text-decoration: line-through;
    color: #8a6d3b;
}

/* project page */
#projectPage h1,
#projectPage h2,
#projectPage h3,
#projectPage h4 {
    margin-top: 0;
}

#projectPage .panel {
    margin: 0;
}

#projectPage .panel:not(:last-child) {
    margin-bottom: 1.375rem;
}

#projectPage .table-responsive {
    border: none !important;
}

.project-main {
    display: flex;
    flex-direction: column;
    flex: 1;
    background: #ddd;
    border-radius: 1rem;
    height: 100%;
    padding: 1px;
    overflow-x: auto;
    box-shadow: 1px 1px 2px inset #aaa;
    container-type: inline-size;
}

.project-grid {
    padding: 1rem;
    flex: 1;
    overflow-y: auto;
}

@container (min-width: 768px) {
    .project-grid {
        display: grid;
        gap: 1rem;
        align-items: start;
        justify-content: space-between;
        grid-template-columns: minmax(min-content, 400px) minmax(50vw, 1fr);
    }
}

.project-grid-side-panel {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    margin-bottom: 1rem;
}

.project-grid-data {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    margin-bottom: 1rem;
    overflow-x: auto;
}

.project-page-section {
    background: #fff;
    border-radius: 1rem;
    padding: 1.5rem;
    box-shadow: 1px 1px 2px inset #aaa;
    container-type: inline-size;
}

.panel-table-heading td {
  font-weight: 600;
  font-size: small;
  color: #777;
  text-transform: uppercase;
}

/* project dashboard */
.project-dashboard {
    display: flex;
    flex-direction: column;
    gap: 1rem 32px;
    flex-wrap: wrap;
    overflow-x: auto;
}

.project-dashboard .table {
    width: 100%;
}

.project-dashboard .table td {
    font-size: medium;
}

@container (min-width: 800px) {
    .project-dashboard {
        flex-direction: row;
    }

    .project-dashboard .table {
        width: fit-content;
    }
}

.project-doc-checklist {
    font-size: large;
    font-weight: normal;
    border-top: 1px solid #ddd;
    padding: 1rem;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

/* timeline */
.timeline {
    display: flex;
    align-items: center;
    gap: 0.625rem;
    overflow-x: auto;
    padding-bottom: 2rem;
    margin-top: 1.25rem;
}

.timeline-step {
    display: flex;
    gap: 0.75rem;
    flex-direction: column;
    min-width: max-content;
    position: relative;
}

.timeline-step:last-child {
    flex: 1;
}

.timeline-step-dot-line {
    display: flex;
    align-items: center;
    width: 100%;
    gap: 0.625rem;
}

.timeline-step-info {
    display: flex;
    gap: 0.375rem;
    flex-direction: column;
    align-items: start;
    padding-right: 32px;
}

.timeline-text {
    font-weight: 600;
    font-size: large;
}

.timeline-date {
    padding: 0.25rem 0.375rem;
    border: 1px solid #ddd;
    border-radius: 1rem;
    background-color: #eee;
    font-weight: 600;
    white-space: nowrap;
    font-size: small;
}

.timeline-user {
    font-weight: 600;
}

.timeline-dot {
    color: #fff;
    width: 32px;
    height: 32px;
    background: #aaa;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    padding-left: 0.2rem;
    padding-bottom: 0.2rem;
}

.timeline-step:first-child .timeline-dot {
    background: #428bca;
}

.timeline-line {
    flex: 1;
    height: 2px;
    background: #ccc;
    min-width: 50px;
}

.timeline-step:last-child .timeline-line::after {
    position: absolute;
    right: 0;
    top: 4px;
    content: '';
    border-right: 2px solid #bbb;
    height: 24px;
}


/* home cards */
.home-cards {
    flex: 1 1 100%;
    overflow-y: auto;
    border-top: 1px solid #ccc;
    padding: 1.5rem;
    background: #ddd;
    border-radius: 1rem;
    box-shadow: 1px 1px 2px inset #aaa;
}

.home-cards .table-responsive {
    border: none !important;
}


/* project meeting */
.meeting-card {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    max-width: 1600px;
    margin: 0 auto;
    padding: 2rem;
    box-shadow: 1px 1px 2px inset #aaa;
    background-color: #fff;
    border: 1px solid #ccc;
    border-radius: 1rem;
}

.meeting-card:not(:last-child) {
    margin-bottom: 1.5rem;
}

.meeting-card-section {
    display: flex;
    gap: 1rem 2rem;
    align-items: flex-start;
    justify-content: flex-start;
    overflow-x: auto;
}

.meeting-card-section-title {
    text-transform: uppercase;
    font-size: medium;
    color: #777;
    margin-bottom: 0.375rem;
}

.meeting-card-column {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    align-items: flex-start;
    justify-content: flex-start;
}

/* meeting category label */
.meeting-category {
    padding: 0.25rem 0.375rem;
    border: 1px solid #ddd;
    border-radius: 1rem;
    background-color: #eee;
    font-weight: 600;
    white-space: nowrap;
    font-size: small;
    width: fit-content;
}

/* project people */
.table.table-project-people tr:not(:first-child) th,
.table.table-project-people tr:not(:first-child) td {
    border: 0;
}

.project-people {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.project-people-person {
    display: flex;
    gap: 0.5rem;
    align-items: center;
}
