html { overflow-y: scroll; }
.remove-scrollbar { overflow: hidden; }

/* overwrite bootstrap primary color */
a, .btn-outline-primary, .page-link {
	color: #0073b1;
}
.text-primary {
	color: #0073b1 !important;
}
.bg-primary, .btn-primary, .btn-outline-primary:hover,
.custom-control-input:checked ~ .custom-control-label::before,
.page-item.active .page-link,
.dropdown-item.active, .dropdown-item:active,
.bootstrap-dialog.type-primary .modal-header {
	background-color: #0073b1 !important;
}
.btn-outline-primary {
	border-color: #0073b1 !important;
}

/* remove collapse animation */
.collapsing.no-animation {
	transition: none;
}

  /* helper */
.buttons-right {
	top: 0;
	right: 0;
}
.l-0 {
	left: 0;
}
tr.checked {
	background-color: #cce0c9 !important;
}
.list-group-hover-item li.list-group-item:hover {
	background-color: rgba(0,0,0,0.1);
}

.tooltip-tasks .tooltip-inner {
	text-align: left;
	max-width: 400px;
}
.contextmenu .dropdown-toggle {
	box-shadow: none;
	white-space: normal;
}
.dropdown-toggle.without-arrow::after {
	display: none;
}
.dropdown.contextmenu .dropdown-menu {
	min-width: 0;
	top: 0 !important;
	left: 0 !important;
	transform: none !important;
}

/* bootstrap modal, bootstrap-dialog */
.modal-iframe .modal-dialog {
	padding: 0;
}
.modal-iframe .modal-dialog {
	height: 80%;
}
.modal-iframe .modal-dialog.modal-xl {
	height: 98%;
	max-width: 98%;
	margin: 0.5rem;
}
.modal-iframe.modal-fullsize .modal-dialog {
	width: 100%;
	height: 100%;
	max-width: none;
	margin: 0;
}
.modal-iframe .modal-content, 
.modal-iframe .bootstrap-dialog-message {
	min-height: 100%;
}
.modal-iframe .modal-body {
	padding: 0;
}
.modal-iframe iframe {
	border: 0;
	position: absolute;
	width: 100%;
	height: 100%;
}

/* bootstratp-datepicker */
.date-weekday {
	display: inline-block;
	width: 3rem !important;
	text-align: center;
}
@media (max-width: 768px) {
	.date-weekday {
		width: auto !important;
	}
}

/* layouts */
body {
	display: grid;
	grid-template-columns: 1fr;
	grid-template-rows: 1fr;
}
.site-plain {display: inline;}
.site-login {
	grid-template-columns: minmax(auto, 576px);
	grid-template-rows: auto;
	align-content: center;
	justify-content: center;
}
.site-dashboard {
	grid-template-rows: auto 1fr; /* header content */
}
.site-tasklists, .site-datatable {
	grid-template-rows: repeat(3, auto) 1fr; /* header subheader settings content */
}
.site-form, .site-subdashboard {
	grid-template-rows: repeat(2, auto) 1fr; /* header subheader content */
}
.site-timeline {
	grid-template-columns: 20rem 1fr;
	grid-template-rows: repeat(3, auto) 1fr;
}
.site-timeline header {grid-column: span 2;}

/* main menu */
#mainmenu + div .fa
,#usermenu + div .fa {
	width: 2rem;
}

/* card hover effect */
.card .overlay {
	top: 0;
	left: 0;
	visibility: hidden;
	opacity: 0;
	transition: all 1s ease;
}
.card:hover .overlay {
	visibility: visible;
	opacity: 0.3;
	transition: opacity 0.1s ease;
}

/* btn-checkbox */
/*
<button type="button" class="btn btn-sm btn-checkbox checked" name="...." value="..."><i class="fa fa-check"></i></button>
 */
.btn-checkbox:not(.checked) > i {opacity: 0.2;}
.btn-checkbox:not(.checked):hover > i {opacity: 1;}
.btn-checkbox.checked > i {opacity: 1;}

/*** timeline ***********************/
.site-timeline #project-filterlabel {

}
.site-timeline #project-filter {

}
.site-timeline #label-header {

}
.site-timeline #timeline-header {

}
.site-timeline #timeline-rowlabels {

}
.site-timeline #timeline-rowcontent {

}
.site-timeline #timeline-rowcontent {

}


/* dataTables: change sort icon position */
table.dataTable > thead .sorting:before, 
table.dataTable > thead .sorting:after,
table.dataTable > thead .sorting_asc:before,
table.dataTable > thead .sorting_asc:after,
table.dataTable > thead .sorting_desc:before,
table.dataTable > thead .sorting_desc:after,
table.dataTable > thead .sorting_asc_disabled:before,
table.dataTable > thead .sorting_asc_disabled:after,
table.dataTable > thead .sorting_desc_disabled:before,
table.dataTable > thead .sorting_desc_disabled:after {
  position: static;
  display: inline;
}
table.dataTable > thead .sorting:not(.no-sort-text):before, 
table.dataTable > thead .sorting_asc:not(.no-sort-text):before, 
table.dataTable > thead .sorting_desc:not(.no-sort-text):before, 
table.dataTable > thead .sorting_asc_disabled:not(.no-sort-text):before, 
table.dataTable > thead .sorting_desc_disabled:not(.no-sort-text):before {
  margin-right: 0.4rem;
}
table.dataTable > thead .sorting:not(.no-sort-text):after, 
table.dataTable > thead .sorting_asc:not(.no-sort-text):after, 
table.dataTable > thead .sorting_desc:not(.no-sort-text):after, 
table.dataTable > thead .sorting_asc_disabled:not(.no-sort-text):after, 
table.dataTable > thead .sorting_desc_disabled:not(.no-sort-text):after {
  margin-left: 0.4rem;
  margin-right: 0.4rem;
}
table.dataTable > thead > tr > th:not(.sorting_disabled),
table.dataTable.table-sm > thead > tr > th:not(.sorting_disabled) {
  padding-right: revert;
}

.custom-control-input, .custom-control-label {
	cursor: pointer;
}

/* Spiegelklasse für Custom Controls (Radio/Checkbox) in BS 4.6 */
.custom-control-right {
  padding-right: 1.5rem;     /* Platz rechts für den Indikator schaffen */
  text-align: right;         /* mehrzeilige Labels sauber rechtsbündig */
}
.custom-control-right .custom-control-label {
  padding-right: 1.5rem;
}
/* Indikator (Kreis/Häkchen) von links nach rechts umhängen */
.custom-control-right .custom-control-label::before,
.custom-control-right .custom-control-label::after {
  left: auto;
  right: 0;
}
/* Optional: Validierungsfeedback rechtsbündig */
.custom-control-right .invalid-feedback,
.custom-control-right .valid-feedback {
  text-align: right;
}