/* Select2 — Bootstrap 4 theme, primary blue styling */

label.form-label:has(+ .select2-container),
label.form-label:has(+ * .select2-container) {
	color: var(--bs-primary);
	font-weight: 500;
}

label.form-label:has(+ .select2-container) .bx,
label.form-label:has(+ * .select2-container) .bx {
	margin-right: 0.15rem;
}

.select2-container--bootstrap4 .select2-selection {
	border-radius: 0.5rem;
	border-color: rgba(var(--bs-primary-rgb), 0.35);
	min-height: calc(1.5em + 0.75rem + 2px);
	padding: 0;
}

.select2-container--bootstrap4 .select2-selection--single {
	height: calc(1.5em + 0.75rem + 2px);
}

.select2-container--bootstrap4 .select2-selection--single .select2-selection__rendered {
	padding-left: 0.85rem;
	padding-right: 2rem;
	color: var(--bs-body-color);
	line-height: calc(1.5em + 0.75rem);
}

.select2-container--bootstrap4 .select2-selection--single .select2-selection__placeholder {
	color: #adb5bd;
}

.select2-container--bootstrap4 .select2-selection--single .select2-selection__arrow {
	right: 0.65rem;
	height: 100%;
}

.select2-container--bootstrap4 .select2-selection--single .select2-selection__arrow b {
	border-color: var(--bs-primary) transparent transparent transparent;
	border-width: 6px 5px 0 5px;
	margin-top: -3px;
}

.select2-container--bootstrap4.select2-container--open .select2-selection--single .select2-selection__arrow b {
	border-color: transparent transparent var(--bs-primary) transparent;
	border-width: 0 5px 6px 5px;
	margin-top: -4px;
}

.select2-container--bootstrap4.select2-container--focus .select2-selection,
.select2-container--bootstrap4.select2-container--open .select2-selection {
	border-color: var(--bs-primary);
	box-shadow: 0 0 0 0.2rem rgba(var(--bs-primary-rgb), 0.15);
}

.select2-container--bootstrap4 .select2-dropdown {
	border-color: var(--bs-primary);
	border-radius: 0 0 0.5rem 0.5rem;
	box-shadow: 0 0.5rem 1rem rgba(var(--bs-primary-rgb), 0.12);
	overflow: hidden;
	padding: 0;
}

.select2-container--bootstrap4 .select2-dropdown.select2-dropdown--above {
	border-radius: 0.5rem 0.5rem 0 0;
}

.select2-container--bootstrap4 .select2-search--dropdown {
	padding: 0.65rem 0.75rem 0.5rem;
}

.select2-container--bootstrap4 .select2-search--dropdown .select2-search__field {
	border: 1px solid rgba(var(--bs-primary-rgb), 0.45);
	border-radius: 0.5rem;
	padding: 0.45rem 0.75rem;
	color: var(--bs-body-color);
}

.select2-container--bootstrap4 .select2-search--dropdown .select2-search__field:focus {
	border-color: var(--bs-primary);
	box-shadow: 0 0 0 0.2rem rgba(var(--bs-primary-rgb), 0.15);
	outline: 0;
}

.select2-container--bootstrap4 .select2-results > .select2-results__options {
	max-height: 16rem;
	padding: 0.25rem 0;
}

.select2-container--bootstrap4 .select2-results__option {
	padding: 0.55rem 0.85rem;
}

.select2-container--bootstrap4 .select2-results__option--highlighted,
.select2-container--bootstrap4 .select2-results__option--highlighted.select2-results__option[aria-selected="true"] {
	background-color: var(--bs-gray-200);
	color: var(--bs-body-color);
}

.select2-container--bootstrap4 .select2-results__option[aria-selected="true"] {
	background-color: rgba(var(--bs-primary-rgb), 0.1);
	color: var(--bs-primary);
}

.select2-container--bootstrap4 .select2-selection__clear {
	margin-top: 0.55rem;
	margin-right: 1.75rem;
}

html.dark-theme .select2-container--bootstrap4 .select2-selection {
	background-color: #2b3035;
	border-color: rgba(255, 255, 255, 0.15);
	color: #e4e5e6;
}

html.dark-theme .select2-container--bootstrap4 .select2-selection--single .select2-selection__rendered {
	color: #e4e5e6;
}

html.dark-theme .select2-container--bootstrap4 .select2-dropdown {
	background-color: #2b3035;
	border-color: rgba(var(--bs-primary-rgb), 0.55);
}

html.dark-theme .select2-container--bootstrap4 .select2-search--dropdown .select2-search__field {
	background-color: #212529;
	border-color: rgba(var(--bs-primary-rgb), 0.45);
	color: #e4e5e6;
}

html.dark-theme .select2-container--bootstrap4 .select2-results__option--highlighted,
html.dark-theme .select2-container--bootstrap4 .select2-results__option--highlighted.select2-results__option[aria-selected="true"] {
	background-color: #3a4047;
	color: #e4e5e6;
}

html.dark-theme .select2-container--bootstrap4 .select2-results__option[aria-selected="true"] {
	background-color: rgba(var(--bs-primary-rgb), 0.2);
	color: #9ec5fe;
}

html.dark-theme table.dataTable {
	color: #e4e5e6;
}

html.dark-theme table.dataTable thead th {
	border-bottom-color: rgba(255, 255, 255, 0.12);
}

html.dark-theme table.dataTable tbody td {
	border-color: rgba(255, 255, 255, 0.08);
}

html.dark-theme .dataTables_wrapper .dataTables_filter input,
html.dark-theme .dataTables_wrapper .dataTables_length select {
	background-color: #2b3035;
	border-color: rgba(255, 255, 255, 0.15);
	color: #e4e5e6;
}

/* DataTables — responsive mobile / tablet */

.datatable-wrap {
	width: 100%;
	overflow: visible;
}

.datatable-wrap--scroll {
	overflow-x: auto;
	-webkit-overflow-scrolling: touch;
}

.datatable-wrap--scroll .dataTables_wrapper,
.datatable-wrap--scroll .dataTables_scroll,
.datatable-wrap--scroll .dataTables_scrollBody {
	overflow-x: auto !important;
	-webkit-overflow-scrolling: touch;
}

.datatable-wrap--scroll table.dataTable {
	width: max-content !important;
	min-width: 100%;
}

.datatable-wrap--scroll table.dataTable thead th,
.datatable-wrap--scroll table.dataTable tbody td {
	white-space: nowrap;
	vertical-align: middle;
}

.datatable-wrap .dataTables_wrapper {
	width: 100%;
}

div.dataTables_wrapper div.dataTables_length,
div.dataTables_wrapper div.dataTables_filter,
div.dataTables_wrapper div.dataTables_info,
div.dataTables_wrapper div.dataTables_paginate {
	width: 100%;
	text-align: left;
}

div.dataTables_wrapper div.dataTables_filter {
	margin-top: 0.75rem;
}

div.dataTables_wrapper div.dataTables_filter label,
div.dataTables_wrapper div.dataTables_length label {
	width: 100%;
	white-space: normal;
}

div.dataTables_wrapper div.dataTables_filter input {
	width: 100%;
	max-width: 100%;
	margin-left: 0;
	margin-top: 0.35rem;
}

div.dataTables_wrapper div.dataTables_length select {
	width: auto;
	min-width: 4.5rem;
}

div.dataTables_wrapper div.dataTables_paginate {
	margin-top: 0.75rem;
}

div.dataTables_wrapper div.dataTables_paginate .pagination {
	flex-wrap: wrap;
	justify-content: flex-start;
	gap: 0.25rem;
}

table.dataTable.dtr-inline.collapsed > tbody > tr > td.dtr-control,
table.dataTable.dtr-inline.collapsed > tbody > tr > th.dtr-control {
	position: relative;
	padding-left: 2.15rem;
	cursor: pointer;
}

table.dataTable.dtr-inline.collapsed > tbody > tr > td.dtr-control:before,
table.dataTable.dtr-inline.collapsed > tbody > tr > th.dtr-control:before {
	top: 50%;
	left: 0.55rem;
	height: 1rem;
	width: 1rem;
	margin-top: -0.5rem;
	display: block;
	position: absolute;
	color: var(--bs-primary);
	border: 1px solid rgba(var(--bs-primary-rgb), 0.45);
	border-radius: 0.25rem;
	box-shadow: none;
	box-sizing: border-box;
	text-align: center;
	font-family: "Courier New", Courier, monospace;
	line-height: 0.85rem;
	content: "+";
	background-color: rgba(var(--bs-primary-rgb), 0.08);
}

table.dataTable.dtr-inline.collapsed > tbody > tr.parent > td.dtr-control:before,
table.dataTable.dtr-inline.collapsed > tbody > tr.parent > th.dtr-control:before {
	content: "-";
	background-color: rgba(var(--bs-primary-rgb), 0.18);
}

table.dataTable > tbody > tr.child ul.dtr-details {
	display: block;
	width: 100%;
	margin: 0.35rem 0 0;
	padding: 0;
	list-style: none;
}

table.dataTable > tbody > tr.child ul.dtr-details > li {
	display: flex;
	flex-direction: column;
	gap: 0.15rem;
	padding: 0.55rem 0;
	border-bottom: 1px solid rgba(0, 0, 0, 0.06);
}

table.dataTable > tbody > tr.child ul.dtr-details > li:last-child {
	border-bottom: 0;
}

table.dataTable > tbody > tr.child span.dtr-title {
	display: block;
	font-weight: 600;
	color: var(--bs-secondary-color);
	font-size: 0.78rem;
	text-transform: uppercase;
	letter-spacing: 0.02em;
}

table.dataTable > tbody > tr.child span.dtr-data {
	display: block;
	word-break: break-word;
}

html.dark-theme table.dataTable > tbody > tr.child ul.dtr-details > li {
	border-bottom-color: rgba(255, 255, 255, 0.08);
}

.dtr-bs-modal .modal-body {
	padding-top: 0.25rem;
}

@media (max-width: 991.98px) {
	div.dataTables_wrapper .row:first-child > [class*="col-"] {
		width: 100%;
		max-width: 100%;
		flex: 0 0 100%;
	}

	table.dataTable .btn-group,
	table.dataTable .btn {
		flex-wrap: wrap;
	}
}

@media (max-width: 991.98px) and (min-width: 576px) {
	.datatable-wrap--responsive table.dataTable thead th,
	.datatable-wrap--responsive table.dataTable tbody td {
		white-space: normal;
		vertical-align: middle;
	}
}

@media (max-width: 575.98px) {
	div.dataTables_wrapper div.dataTables_paginate .page-link {
		padding: 0.3rem 0.55rem;
		font-size: 0.85rem;
	}
}

.flatpickr-wrapper {
	display: block;
	width: 100%;
}

.flatpickr-wrapper .form-control {
	width: 100%;
}

/* Hide flatpickr's hidden original input when alt display input is used */
.flatpickr-wrapper > input.datepicker.flatpickr-input[tabindex="-1"] {
	position: absolute !important;
	width: 1px !important;
	height: 1px !important;
	padding: 0 !important;
	margin: -1px !important;
	border: 0 !important;
	opacity: 0 !important;
	pointer-events: none !important;
	clip: rect(0, 0, 0, 0) !important;
	overflow: hidden !important;
	white-space: nowrap !important;
}

.flatpickr-calendar {
	max-width: calc(100vw - 1.5rem);
}

html.dark-theme .flatpickr-calendar {
	background: #2b3035;
	border-color: rgba(255, 255, 255, 0.15);
	box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.35);
}

html.dark-theme .flatpickr-months .flatpickr-month,
html.dark-theme .flatpickr-weekdays,
html.dark-theme span.flatpickr-weekday {
	background: #2b3035;
	color: #e4e5e6;
}

html.dark-theme .flatpickr-day {
	color: #e4e5e6;
}

html.dark-theme .flatpickr-day:hover,
html.dark-theme .flatpickr-day:focus {
	background: #3a4047;
	border-color: #3a4047;
}

html.dark-theme .flatpickr-day.selected {
	background: #5e72e4;
	border-color: #5e72e4;
}

html.dark-theme .flatpickr-time input,
html.dark-theme .flatpickr-time .flatpickr-am-pm {
	color: #e4e5e6;
}

/* Login watermark only — rest uses Bootstrap */
body.login-page {
	background-color: #eef1f6;
}

body.login-page .login-page__backdrop::before {
	content: "";
	position: absolute;
	inset: -20px;
	background-image: var(--login-watermark);
	background-size: 80px auto;
	background-repeat: repeat;
	opacity: 0.055;
}

body.login-page .login-page__backdrop {
	position: fixed;
	inset: 0;
	pointer-events: none;
	overflow: hidden;
}

body.login-page .login-card {
	border: 0;
}

body.login-page .login-input-wrap:focus-within {
	border-color: var(--bs-primary) !important;
	box-shadow: 0 0 0 0.2rem rgba(var(--bs-primary-rgb), 0.15);
}

.drag-handle {
	cursor: grab;
}

.drag-handle:active {
	cursor: grabbing;
}

/* App-wide responsive layout */

.page-content {
	overflow-x: clip;
}

.page-wrapper,
.wrapper,
.page-content .card {
	max-width: 100%;
}

.select2-container {
	max-width: 100%;
}

.chart-js-container1,
.chart-js-container2 {
	width: 100%;
	max-width: 100%;
	position: relative;
}

.topbar .navbar {
	flex-wrap: wrap;
	gap: 0.25rem;
}

.user-box {
	min-width: 0;
}

.user-box .nav-link {
	min-width: 0;
}

@media (max-width: 991.98px) {
	.page-content {
		padding: 1rem;
	}

	.card-header.d-flex {
		align-items: flex-start !important;
	}
}

@media (max-width: 767.98px) {
	.page-content {
		padding: 0.75rem;
	}

	.card-body {
		padding: 1rem;
	}

	.card-header h4 {
		font-size: 1.15rem;
	}

	.card-header .btn,
	.card-header .d-flex.gap-2 {
		width: 100%;
	}

	.card-header .btn {
		justify-content: center;
	}

	.card-body form.row [class*="col-"] {
		flex: 0 0 100%;
		max-width: 100%;
	}

	.card-body form .d-flex.gap-2:not(.flex-nowrap) {
		flex-wrap: wrap;
	}

	.card-body form .d-flex.gap-2 > .btn {
		flex: 1 1 auto;
		min-width: 0;
	}

	.topbar .navbar {
		padding-left: 0.5rem;
		padding-right: 0.5rem;
	}

	.user-box {
		padding-left: 0.5rem !important;
		padding-right: 0.5rem !important;
	}

	.select2-container--bootstrap4 .select2-selection {
		min-height: 2.5rem;
	}

	.flatpickr-calendar {
		left: 50% !important;
		transform: translateX(-50%);
	}
}

@media (max-width: 575.98px) {
	.page-content {
		padding: 0.65rem;
	}

	.card.radius-10 {
		border-radius: 0.65rem !important;
	}

	.card-body form .col-md-3.d-flex,
	.card-body form .col-md-4.d-flex,
	.card-body form .col-md-6.d-flex {
		flex-direction: column;
	}

	.card-body form .col-md-3.d-flex > .btn,
	.card-body form .col-md-4.d-flex > .btn {
		width: 100%;
	}

	div.dataTables_wrapper .dataTables_length,
	div.dataTables_wrapper .dataTables_filter,
	div.dataTables_wrapper .dataTables_info,
	div.dataTables_wrapper .dataTables_paginate {
		margin-bottom: 0.5rem;
	}
}

/* SweetAlert2 — match app light/dark themes (override global dark-theme h2 on popup) */

html.dark-theme .swal2-popup,
.swal2-popup.swal2-theme-dark {
	--swal2-background: #2b3035;
	--swal2-color: #e4e5e6;
	--swal2-title-color: #ffffff;
	--swal2-html-container-color: #dee2e6;
	--swal2-input-background: #343a40;
	--swal2-input-color: #e9ecef;
	--swal2-input-border: 1px solid #495057;
	--swal2-validation-message-background: #343a40;
	--swal2-validation-message-color: #f8d7da;
	--swal2-footer-border-color: #495057;
	background: var(--swal2-background);
	color: var(--swal2-color);
}

html.dark-theme .swal2-popup .swal2-title,
.swal2-popup.swal2-theme-dark .swal2-title {
	color: var(--swal2-title-color) !important;
}

html.dark-theme .swal2-popup .swal2-html-container,
.swal2-popup.swal2-theme-dark .swal2-html-container {
	color: var(--swal2-html-container-color);
}

html.dark-theme .swal2-popup .swal2-close,
.swal2-popup.swal2-theme-dark .swal2-close {
	color: #adb5bd;
}

html.light-theme .swal2-popup .swal2-title,
html.minimal-theme .swal2-popup .swal2-title,
html.semi-dark .swal2-popup .swal2-title,
.swal2-popup.swal2-theme-light .swal2-title {
	color: #595959 !important;
}

html.light-theme .swal2-popup .swal2-html-container,
html.minimal-theme .swal2-popup .swal2-html-container,
html.semi-dark .swal2-popup .swal2-html-container,
.swal2-popup.swal2-theme-light .swal2-html-container {
	color: #545454;
}

.item-summary-compact {
	font-family: monospace;
	font-size: 13px;
	line-height: 1.6;
	background-color: #f8f9fa;
	color: #212529;
	border: 1px dashed #ced4da;
	padding: 1rem;
	border-radius: 0.5rem;
	white-space: pre-wrap;
}

.item-summary-doc {
	color: #212529;
}

html.dark-theme .item-summary-compact {
	background-color: #2b3035;
	color: #e4e5e6;
	border-color: rgba(255, 255, 255, 0.2);
}

html.dark-theme .item-summary-doc {
	background-color: #2b3035 !important;
	color: #e4e5e6;
	border-color: rgba(255, 255, 255, 0.15) !important;
}

html.dark-theme .item-summary-doc .table {
	--bs-table-color: #e4e5e6;
	--bs-table-border-color: rgba(255, 255, 255, 0.12);
}

html.dark-theme .item-summary-doc .text-secondary {
	color: #adb5bd !important;
}

html.dark-theme .item-summary-doc .text-success {
	color: #75e6a5 !important;
}

@media print {
	body > *:not(#printArea) {
		display: none !important;
	}

	#printArea {
		display: block !important;
		visibility: visible !important;
		padding: 1rem;
	}

	#printArea .item-summary-doc {
		border: none !important;
		background: #fff !important;
		color: #000 !important;
	}

	#printArea .item-summary-doc .text-secondary,
	#printArea .item-summary-doc .text-success {
		color: #000 !important;
	}

	#printArea table,
	#printArea th,
	#printArea td {
		color: #000 !important;
		border-color: #000 !important;
	}
}
