/* ============================================
   UNIKAIM PIANTI - STYLE.CSS OTTIMIZZATO
   Versione pulita senza duplicazioni e deprecati
   ============================================ */

/* ============================================
   0. CRITICAL CSS (da tpl.head.php inline)
   ============================================ */
:root {
	--tblr-font-sans-serif: 'Inter Var', -apple-system, BlinkMacSystemFont, San Francisco, Segoe UI, Roboto, Helvetica Neue, sans-serif;
}

body {
	font-feature-settings: "cv03", "cv04", "cv11";
}

/* ============================================
   1. UTILITY CLASSES
   ============================================ */
.hidden, .hide {
	display: none;
}

/* Animazione pulse per feedback cambio stato */
@keyframes pulse-success-animation {
	0% {
		box-shadow: 0 0 0 0 rgba(32, 201, 151, 0.7);
	}
	50% {
		box-shadow: 0 0 0 10px rgba(32, 201, 151, 0);
	}
	100% {
		box-shadow: 0 0 0 0 rgba(32, 201, 151, 0);
	}
}

.pulse-success {
	animation: pulse-success-animation 0.6s ease-out;
}

.bandaDev {
	background: crimson;
	color: #ffffff;
	text-align: center;
	position: fixed;
	width: 100%;
	z-index: 9999;
}

.bandaDev h3 {
	font-size: 1.4rem;
}

.inputIco {
	width: 50px;
	text-align: center;
	display: grid;
}

#eyePassword {
	cursor: pointer;
}

.clock {
	background-color: #000;
	color: #fff;
	position: absolute;
	padding: 10px 20px;
	font-size: 40px;
	border-radius: 5px;
	left: 50%;
	transform: translateX(-50%);
}

.logo-icon {
	width: 120px;
}

/* ============================================
   2. AG LOADER SYSTEM
   ============================================ */
@keyframes agLoaderFadeIn {
	from {
		opacity: 0;
		backdrop-filter: blur(0px);
	}
	to {
		opacity: 1;
		backdrop-filter: blur(16px);
	}
}

@keyframes agLoaderFadeOut {
	from {
		opacity: 1;
		backdrop-filter: blur(16px);
	}
	to {
		opacity: 0;
		backdrop-filter: blur(0px);
	}
}

@keyframes agLoaderSlideUp {
	0% {
		transform: translateY(60px) scale(0.9);
		opacity: 0;
		filter: blur(20px);
	}
	70% {
		transform: translateY(-8px) scale(1.03);
		filter: blur(0px);
	}
	100% {
		transform: translateY(0) scale(1);
		opacity: 1;
		filter: blur(0);
	}
}

@keyframes agLoaderSpinnerRotate {
	0% {
		transform: rotate(0deg);
	}
	100% {
		transform: rotate(360deg);
	}
}

/* Loader Spinner */
.ag-loader-spinner {
	display: inline-block;
	position: relative;
}

.ag-loader-spinner div {
	box-sizing: border-box;
	display: block;
	position: absolute;
	width: 100%;
	height: 100%;
	border: 4px solid;
	border-radius: 50%;
	animation: agLoaderSpinnerRotate 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;
	border-color: currentColor transparent transparent transparent;
}

.ag-loader-spinner div:nth-child(1) {
	animation-delay: -0.45s;
}

.ag-loader-spinner div:nth-child(2) {
	animation-delay: -0.3s;
}

.ag-loader-spinner div:nth-child(3) {
	animation-delay: -0.15s;
}

/* Overlay Loader */
.ag-loader-overlay {
	position: fixed;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	background: rgba(255, 255, 255, 0.95);
	backdrop-filter: blur(12px) saturate(180%);
	display: flex;
	justify-content: center;
	align-items: center;
	z-index: 99999;
	opacity: 0;
	animation: agLoaderFadeIn 0.3s ease-out forwards;
}

.ag-loader-overlay.ag-loader-fade-out {
	animation: agLoaderFadeOut 0.4s ease-out forwards;
}

.ag-loader-content {
	text-align: center;
	padding: 48px;
	border-radius: 24px;
	background: rgba(255, 255, 255, 0.8);
	backdrop-filter: blur(16px);
	box-shadow: 0 24px 64px rgba(0, 0, 0, 0.12), 0 0 0 1px rgba(0, 0, 0, 0.05);
	animation: agLoaderSlideUp 0.6s cubic-bezier(0.34, 1.56, 0.64, 1) forwards;
	max-width: 400px;
}

.ag-loader-icon {
	margin: 0 auto 24px;
	width: 64px;
	height: 64px;
	color: #206bc4;
}

.ag-loader-text {
	font-size: 18px;
	font-weight: 600;
	color: #1e293b;
	margin: 0;
	letter-spacing: -0.02em;
}

.ag-loader-subtext {
	font-size: 14px;
	color: #64748b;
	margin: 8px 0 0;
}

/* ============================================
   3. FLOATING LABEL ANIMATION
   ============================================ */
.input-icon-top,
.mb-3,
.input-group {
	position: relative;
}

label.inputText,
label.inputData,
label.inputFile,
label.labelIco {
	position: absolute;
	top: 50%;
	left: 12px;
	transform: translateY(-50%);
	padding: 0 4px;
	margin: 0;
	font-size: 1rem;
	color: #6c757d;
	background-color: transparent;
	pointer-events: none;
	transition: all 0.2s ease;
	z-index: 10;
}

label.inputText.active,
label.inputData.active,
label.inputFile.active,
label.labelIco.active,
label.active,
label.dataSelect {
	top: -8px;
	transform: translateY(0);
	font-size: 0.75rem;
	font-weight: 600;
	color: #206bc4;
	background-color: #fff;
	padding: 0 4px;
}

.form-control {
	font-size: 0.9rem;
}

/* ============================================
   4. NOTIFICATIONS
   ============================================ */
.lobibox-notify .lobibox-notify-body {
	margin: 10px 35px 10px 90px;
}

/* ============================================
   5. LAYOUT & RESPONSIVE
   ============================================ */
@media screen and (min-width: 1400px) {
	.page-wrapper {
		padding-left: 0;
		padding-right: 0;
	}
	
	.container,
	.container-lg,
	.container-md,
	.container-sm,
	.container-xl,
	.container-xxl {
		max-width: 98%;
	}
}

.navbar-brand-image {
	height: 2.5rem;
}

/* ============================================
   6. HEADER STICKY - Fixed menu durante scroll
   ============================================ */

header.navbar {
	position: sticky !important;
	top: 0 !important;
	z-index: 1030 !important;
	background: #fff !important;
	box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08) !important;
	transition: all 0.3s ease !important;
}

.navbar-expand-md {
	position: sticky !important;
	top: 64px !important;
	z-index: 1029 !important;
	background: #fff !important;
	box-shadow: 0 2px 6px rgba(0, 0, 0, 0.06) !important;
}

/* ============================================
   7. DATATABLES CUSTOMIZATION
   ============================================ */

/* Checkbox dimensioni professionali */
table.dataTable input[type="checkbox"],
table.dataTable thead input[type="checkbox"],
table.dataTable tbody input[type="checkbox"] {
	width: 20px !important;
	height: 20px !important;
	min-width: 20px !important;
	min-height: 20px !important;
	max-width: 20px !important;
	max-height: 20px !important;
	margin: 0 !important;
	padding: 0 !important;
	vertical-align: middle !important;
	flex-shrink: 0 !important;
	cursor: pointer !important;
	accent-color: #206bc4 !important;
	border-radius: 4px !important;
	transition: all 0.2s ease !important;
}

table.dataTable input[type="checkbox"]:hover {
	transform: scale(1.1) !important;
	box-shadow: 0 0 0 3px rgba(32, 107, 196, 0.1) !important;
}

/* Allineamento checkbox con padding colonna */
.card-table tr td:first-child,
.card-table tr th:first-child {
	padding-left: 0.7rem;
	border-left: 0;
}

.card-table tr td:first-child input[type="checkbox"],
.card-table tr th:first-child input[type="checkbox"] {
	margin-left: 0 !important;
}

/* DataTables Fixed Header floating position — top calcolato dinamicamente da JS via --ag-sticky-total-height */
.dtfh-floatingparenthead {
	top: var(--ag-sticky-total-height, 119px) !important;
	z-index: 1020 !important;
	background: #e2e8f0 !important;
	box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important;
}

.dataTables_wrapper .dataTables_length {
	float: right;
	margin-bottom: 1rem;
	margin-top: 1rem;
	background: transparent !important;
}

.dataTables_wrapper .dataTables_length label {
	display: flex;
	align-items: center;
	gap: 0.5rem;
	margin: 0;
	font-weight: 500;
	color: #475569;
}

.dataTables_wrapper .dataTables_length select {
	margin: 0 0.5rem;
	padding: 0.375rem 2rem 0.375rem 0.75rem;
	min-width: 4rem;
}

.dataTables_wrapper .dataTables_info {
	padding-top: 1rem;
	padding-bottom: 1rem;
	color: #64748b;
	font-size: 0.875rem;
	background: transparent !important;
}

/* Rimuove sfondo grigio da wrapper DataTables */
.dataTables_wrapper {
	background: transparent !important;
}

.dataTables_wrapper > .row {
	background: transparent !important;
}


table.dataTable {
	width: 100% !important;
	border-spacing: 0 !important;
	border-collapse: collapse !important;
}

.dataTables_wrapper .dataTables_paginate {
	float: right;
	text-align: right;
	padding-top: 0.25em;
}

.dataTables_wrapper .dataTables_paginate .paginate_button {
	box-sizing: border-box;
	display: inline-block;
	min-width: 1.5em;
	padding: 0.5em 1em;
	margin-left: 2px;
	text-align: center;
	text-decoration: none !important;
	cursor: pointer;
	color: #333 !important;
	border: 1px solid transparent;
	border-radius: 2px;
}

.dataTables_wrapper .dataTables_paginate .paginate_button.current,
.dataTables_wrapper .dataTables_paginate .paginate_button.current:hover {
	color: #333 !important;
	border: 1px solid #979797;
	background-color: white;
	background: linear-gradient(to bottom, #fff 0%, #dcdcdc 100%);
}

.dataTables_wrapper .dataTables_paginate .paginate_button.disabled,
.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover,
.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active {
	cursor: default;
	color: #666 !important;
	border: 1px solid transparent;
	background: transparent;
	box-shadow: none;
}

.dataTables_wrapper .dataTables_paginate .paginate_button:hover {
	color: white !important;
	border: 1px solid #111;
	background-color: #585858;
	background: linear-gradient(to bottom, #585858 0%, #111 100%);
}

.dataTables_wrapper .dataTables_paginate .paginate_button:active {
	outline: none;
	background-color: #2b2b2b;
	background: linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%);
	box-shadow: inset 0 0 3px #111;
}

.dataTables_wrapper .dataTables_paginate .ellipsis {
	padding: 0 1em;
}

/* DataTables sorting columns padding */
table.dataTable thead > tr > th.sorting_asc,
table.dataTable thead > tr > th.sorting_desc,
table.dataTable thead > tr > th.sorting,
table.dataTable thead > tr > td.sorting_asc,
table.dataTable thead > tr > td.sorting_desc,
table.dataTable thead > tr > td.sorting {
	padding-right: 30px;
}

table.dataTable thead > tr > th:active,
table.dataTable thead > tr > td:active {
	outline: none;
}

table.dataTable thead .sorting,
table.dataTable thead .sorting_asc,
table.dataTable thead .sorting_desc,
table.dataTable thead .sorting_asc_disabled,
table.dataTable thead .sorting_desc_disabled {
	cursor: pointer;
	position: relative;
}

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,
.dtfh-floatingparenthead table thead .sorting:before,
.dtfh-floatingparenthead table thead .sorting:after,
.dtfh-floatingparenthead table thead .sorting_asc:before,
.dtfh-floatingparenthead table thead .sorting_asc:after,
.dtfh-floatingparenthead table thead .sorting_desc:before,
.dtfh-floatingparenthead table thead .sorting_desc:after {
	position: absolute;
	bottom: 0.9em;
	display: block;
	opacity: 0.3;
}

table.dataTable thead .sorting:before,
table.dataTable thead .sorting_asc:before,
table.dataTable thead .sorting_desc:before,
table.dataTable thead .sorting_asc_disabled:before,
table.dataTable thead .sorting_desc_disabled:before {
	right: 1em;
	content: "↑";
}

table.dataTable thead .sorting:after,
table.dataTable thead .sorting_asc:after,
table.dataTable thead .sorting_desc:after,
table.dataTable thead .sorting_asc_disabled:after,
table.dataTable thead .sorting_desc_disabled:after {
	right: 0.5em;
	content: "↓";
}

table.dataTable thead .sorting_asc:before,
table.dataTable thead .sorting_desc:after,
.dtfh-floatingparenthead table thead .sorting_asc:before,
.dtfh-floatingparenthead table thead .sorting_desc:after {
	opacity: 1;
}

table.dataTable thead .sorting_asc_disabled:before,
table.dataTable thead .sorting_desc_disabled:after {
	opacity: 0;
}

/* Professional DataTable Header - Tabler Style */
table.dataTable thead th,
table.table.dataTable thead th,
.card-table.dataTable thead th,
.dtfh-floatingparenthead table thead th {
	background: #e2e8f0 !important;
	color: #334155 !important;
	font-weight: 600;
	font-size: 0.75rem;
	text-transform: uppercase;
	letter-spacing: 0.5px;
	padding: 0.75rem 1rem !important;
	border-bottom: 2px solid #cbd5e1 !important;
	border-top: none !important;
	border-right: 1px solid #cbd5e1 !important;
	position: relative;
}

table.dataTable thead th:last-child,
.dtfh-floatingparenthead table thead th:last-child {
	border-right: none !important;
}

/* DataTable body cells - bordi verticali */
table.dataTable tbody td,
table.table.dataTable tbody td,
.card-table.dataTable tbody td {
	border-right: 1px solid #e2e8f0 !important;
}

table.dataTable tbody td:last-child,
table.table.dataTable tbody td:last-child,
.card-table.dataTable tbody td:last-child {
	border-right: none !important;
}

/* Righe alternate più scure con box-shadow */
table.dataTable tbody tr.odd-row,
table.dataTable tbody tr.odd {
	box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.03) !important;
}

/* ============================================
   7. FORM ELEMENTS
   ============================================ */
.form-control:focus {
	border-color: #206bc4;
	box-shadow: 0 0 0 0.25rem rgba(32, 107, 196, 0.25);
}

select.form-control {
	appearance: none;
}

/* ============================================
   8. BUTTONS
   ============================================ */
.btn {
	border-radius: 4px;
	transition: all 0.2s ease;
}

.btn:hover {
	transform: translateY(-1px);
	box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
}

.btn:active {
	transform: translateY(0);
}

/* ============================================
   9. CUSTOM COMPONENTS
   ============================================ */
.password-length-info {
	font-size: 0.875rem;
	color: #6c757d;
	margin-top: 0.25rem;
}

.password-meter {
	margin-top: 0.5rem;
}

/* ============================================
   10. HOVER EFFECTS
   ============================================ */
/* Fix hover on striped rows - usa box-shadow come DataTables */
table.dataTable.table-striped tbody tr.odd-row:not(.selected):hover,
table.dataTable.table-striped tbody tr.even-row:not(.selected):hover,
table.dataTable tbody tr.odd-row:not(.selected):hover,
table.dataTable tbody tr.even-row:not(.selected):hover,
table.dataTable tbody tr.odd:not(.selected):hover,
table.dataTable tbody tr.even:not(.selected):hover,
table.dataTable tbody tr:not(.selected):hover {
	background-color: #dbeafe !important;
	box-shadow: inset 0 0 0 9999px #dbeafe !important;
}

table.dataTable tbody tr:not(.selected):hover td {
	background-color: #dbeafe !important;
	box-shadow: inset 0 0 0 9999px #dbeafe !important;
}

/* ============================================
   11. PRINT STYLES
   ============================================ */
@media print {
	.no-print,
	.navbar,
	.sidebar,
	.ag-loader-overlay {
		display: none !important;
	}
	
	.page-wrapper {
		margin: 0 !important;
		padding: 0 !important;
	}
}

/* ============================================
   12. CARD HEADER STYLE - Professional gradient
   ============================================ */
.card-header {
	background: linear-gradient(135deg, #f9f9f9 0%, #188aff4d 100%);
	border-bottom: 2px solid #5093ed;
	padding: 1.0rem 1.5rem;
}

/* Card header con icona e titolo */
.card-header .avatar.rounded {
	background: #206bc4;
	width: 2.5rem;
	height: 2.5rem;
	display: flex;
	align-items: center;
	justify-content: center;
}

.card-header .avatar.rounded i {
	font-size: 1.25rem;
	color: #fff;
}

.card-header .card-title {
	color: #1e293b;
	font-size: 1.125rem;
	font-weight: 600;
	margin-bottom: 0.25rem;
}

.card-header .text-muted {
	font-size: 0.8125rem;
}

.card-body  {
	padding-top: 30px;
	padding-top: 30px;
}


/* ============================================
   13. CAPTCHA STYLES - Professional refresh button
   ============================================ */
.captcha-image-container {
	position: relative;
	display: inline-block;
}

.captcha-image-container .refresh-captcha {
	    position: absolute;
    top: 8px;
    right: 8px;
    z-index: 10;
    cursor: pointer;
    background: #206BC4;
    border-radius: 50%;
    padding: 5px;
    font-size: 1.2rem;
    color: #ffffff;
  
    border: 2px solid #8d8d8d;
}

.captcha-image-container .refresh-captcha:hover {
	background: #fff;
	color: #1862ab;
	transform: rotate(180deg);
	box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);
}

.captcha-image-container .captcha-image {
	border: 1px solid #ddd;
	border-radius: 4px;
	display: block;
}

/* ============================================
   14. USER FORM - Professional form styling
   ============================================ */

.user-form-container {
	padding: 1.5rem;
}

.form-header {
	margin-bottom: 2rem;
	padding-bottom: 1rem;
	border-bottom: 2px solid #e2e8f0;
}

.form-header .avatar-lg {
	width: 4rem;
	height: 4rem;
	font-size: 2rem;
}

.form-section {
	background: #f8fafc;
	border-radius: 8px;
	padding: 1.5rem;
	border: 1px solid #e2e8f0;
}

.section-header {
	margin-bottom: 1.5rem;
	padding-bottom: 0.75rem;
	border-bottom: 2px solid #cbd5e1;
}

.section-title {
	color: #1e293b;
	font-size: 1.125rem;
	font-weight: 600;
	margin: 0;
	display: flex;
	align-items: center;
}

.section-title i {
	color: #206bc4;
	font-size: 1.25rem;
}

.section-body {
	padding-top: 0.5rem;
}

/* Password Requirements */
.password-requirements {
	margin-top: 1rem;
}

.requirements-list {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
	gap: 0.5rem;
	margin-top: 0.75rem;
}

.requirement-item {
	display: flex;
	align-items: center;
	gap: 0.5rem;
	font-size: 0.875rem;
	padding: 0.25rem 0;
}

.criteria-icon {
	font-weight: bold;
	font-size: 1rem;
	width: 20px;
	text-align: center;
}

.criteria-text.text-success {
	color: #2fb344 !important;
}

/* Form Actions Footer */
.form-actions {
	background: #f8fafc;
	margin: 1.5rem -1.5rem -1.5rem;
	padding: 1.5rem;
	border-radius: 0 0 8px 8px;
}

/* Form Switch Large */
.form-switch-lg .form-check-input {
	width: 3rem;
	height: 1.5rem;
	cursor: pointer;
}

.form-switch-lg .form-check-label {
	margin-left: 0.5rem;
	cursor: pointer;
}

/* Responsive adjustments */
@media (max-width: 768px) {
	.user-form-container {
		padding: 1rem;
	}
	
	.form-section {
		padding: 1rem;
	}
	
	.requirements-list {
		grid-template-columns: 1fr;
	}
	
	.form-actions .btn-group {
		flex-direction: column;
		width: 100%;
	}
	
	.form-actions .btn-group .btn {
		width: 100%;
		margin-bottom: 0.5rem;
	}
}

/* ============================================
   FORM VALIDATION FEEDBACK
   ============================================ */

/* Stato validazione campo */
.form-control.is-valid,
.form-select.is-valid {
	border-color: #2fb344;
	padding-right: calc(1.5em + 0.75rem);
	background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%232fb344' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");
	background-repeat: no-repeat;
	background-position: right calc(0.375em + 0.1875rem) center;
	background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
}

.form-control.is-invalid,
.form-select.is-invalid {
	border-color: #d63939;
	padding-right: calc(1.5em + 0.75rem);
	background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23d63939'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23d63939' stroke='none'/%3e%3c/svg%3e");
	background-repeat: no-repeat;
	background-position: right calc(0.375em + 0.1875rem) center;
	background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
}

/* Stato validazione in corso */
.form-control.validating {
	border-color: #0054a6;
	background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230054a6' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='23 4 23 10 17 10'%3e%3c/polyline%3e%3cpolyline points='1 20 1 14 7 14'%3e%3c/polyline%3e%3cpath d='M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15'%3e%3c/path%3e%3c/svg%3e");
	background-repeat: no-repeat;
	background-position: right calc(0.375em + 0.1875rem) center;
	background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
	animation: spin 1s linear infinite;
}

@keyframes spin {
	from { background-position: right calc(0.375em + 0.1875rem) center; }
	to { background-position: right calc(0.375em + 0.1875rem) center; }
}

/* Messaggi feedback */
.valid-feedback,
.invalid-feedback {
	display: none;
	width: 100%;
	margin-top: 0.25rem;
	font-size: 0.875rem;
}

.valid-feedback.d-block {
	display: block !important;
	color: #2fb344;
}

.d-block {
    position:absolute;
	margin-top: .25rem;
    font-size: 85.714285%;
    color: #616876;
}
.invalid-feedback.d-block {
	display: block !important;
	color: #d63939;
}

.valid-feedback i,
.invalid-feedback i {
	font-size: 1rem;
	vertical-align: middle;
}

/* Fix per campo con toggle password */
.form-control.pe-5.is-valid,
.form-control.pe-5.is-invalid,
.form-control.pe-5.validating {
	padding-right: 3rem !important; /* Spazio per icona + bottone toggle */
	background-position: right 2.5rem center;
}

/* Bottoni disabilitati durante validazione */
button.disabled,
button:disabled {
	opacity: 0.65;
	pointer-events: none;
	cursor: not-allowed;
}

/* ============================================
   SELECT2 - OVERRIDE GLOBALE TABLER THEME
   Uniforma stile Select2 con .form-select native di Tabler
   Sovrascrive select2-bootstrap-5-theme.min.css
   ============================================ */

/* Container principale - IDENTICO a .form-select Tabler */
.select2-container--bootstrap-5 .select2-selection--single {
        padding: 0.4375rem 2.25rem 0.4375rem 0.75rem !important;
        font-size: 0.875rem !important;
        line-height: 1.4285714286 !important;
        font-weight: 400 !important;
        height: auto !important;
        min-height: calc(1.5em + 0.875rem + 2px) !important;
}

/* Testo selezionato - allineamento identico */
.select2-container--bootstrap-5 .select2-selection--single .select2-selection__rendered {
        line-height: 1.4285714286 !important;
        padding: 0 !important;
        font-size: 0.875rem !important;
}

/* DROPDOWN - Singola opzione */
.select2-container--bootstrap-5 .select2-dropdown .select2-results__option {
        padding: 0.5rem 0.75rem !important;
        font-size: 0.875rem !important;
        line-height: 1.4285714286 !important;
}

/* HOVER - Opzione in evidenza (sfondo blu chiaro Tabler) */
.select2-container--bootstrap-5 .select2-results__option--highlighted,
.select2-container--bootstrap-5 .select2-results__option--highlighted[aria-selected],
.select2-container--bootstrap-5 .select2-dropdown .select2-results__options .select2-results__option--highlighted {
        background-color: rgba(32, 107, 196, 0.06) !important;
        color: inherit !important;
}

/* SELECTED - Opzione selezionata (sfondo blu chiaro + testo blu + grassetto Tabler) */
.select2-container--bootstrap-5 .select2-results__option[aria-selected="true"],
.select2-container--bootstrap-5 .select2-results__option--selected,
.select2-container--bootstrap-5 .select2-dropdown .select2-results__options .select2-results__option[aria-selected="true"],
.select2-container--bootstrap-5 .select2-dropdown .select2-results__options .select2-results__option--selected {
        background-color: rgba(32, 107, 196, 0.06) !important;
        color: #206bc4 !important;
        font-weight: 600 !important;
}

/* SELECTED + HOVER - Opzione selezionata in hover (sfondo più scuro) */
.select2-container--bootstrap-5 .select2-results__option--highlighted[aria-selected="true"],
.select2-container--bootstrap-5 .select2-dropdown .select2-results__options .select2-results__option--highlighted[aria-selected="true"] {
	color: #206bc4 !important;
	font-weight: 600 !important;
}
/* ============================================
   AG FRAMEWORK - READONLY FIELDS STYLING
   Stile globale per campi readonly/disabled
   ============================================ */

/* Input readonly - Sfondo grigio chiaro per indicare disabilitazione */
input[readonly].form-control,
textarea[readonly].form-control,
select[readonly].form-select,
input[disabled].form-control,
textarea[disabled].form-control,
select[disabled].form-select {
	background-color: #f8f9fa !important;
	border-color: #e9ecef !important;
	color: #6c757d !important;
	cursor: not-allowed !important;
	opacity: 0.75;
}

/* Focus su readonly - Rimuove effetto focus */
input[readonly].form-control:focus,
textarea[readonly].form-control:focus,
select[readonly].form-select:focus {
	background-color: #f8f9fa !important;
	border-color: #e9ecef !important;
	box-shadow: none !important;
}

/* Small text sotto readonly fields */
input[readonly] + small.text-muted,
textarea[readonly] + small.text-muted,
select[readonly] + small.text-muted {
	font-size: 0.75rem;
	font-style: italic;
	color: #6c757d;
	display: block;
	margin-top: 0.25rem;
}

/* Form floating custom con readonly - Label sempre sopra */
.form-floating-ag input[readonly].form-control,
.form-floating-ag textarea[readonly].form-control {
	padding-top: 1.625rem;
	padding-bottom: 0.625rem;
}

.form-floating-ag input[readonly].form-control ~ label,
.form-floating-ag textarea[readonly].form-control ~ label {
	opacity: 0.65;
	transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);
}

/* ============================================
   AG FRAMEWORK - READONLY FIELDS STYLING
   Stile globale per campi readonly/disabled
   ============================================ */
.mr10{
	margin-right:0.5rem;
}
/* ============================================
   AG FRAMEWORK - views//index
   ============================================ */
    /* 🎨 Hover sulle righe della tabella */
    table.dataTable tbody tr:hover {
        background-color: #e3f2fd !important;
        cursor: pointer;
        transition: background-color 0.2s ease;
    }

    /* ✅ Riga selezionata (quando checkbox attivo) */
    table.dataTable tbody tr.selected {
        background-color: #206bc4 !important;
        color: white !important;
    }

    table.dataTable tbody tr.selected td {
        color: white !important;
    }

    /* Mantieni il colore dei bottoni nelle righe selezionate */
    table.dataTable tbody tr.selected .btn {
        color: white !important;
        border-color: white !important;
    }

    table.dataTable tbody tr.selected .btn-green {
        background-color: #2fb344 !important;
    }

    table.dataTable tbody tr.selected .btn-red {
        background-color: #d63939 !important;
    }

    table.dataTable tbody tr.selected .btn-primary {
        background-color: #1e3a8a !important;
    }

    /* 🎨 Stile bottone Export */
    .ag-datatable-exporter {
        margin-left: 15px;
    }
    
    .ag-datatable-exporter .btn-group {
        box-shadow: 0 1px 3px rgba(0,0,0,0.1);
    }
    
    .ag-datatable-exporter .dropdown-menu {
        min-width: 180px;
        box-shadow: 0 4px 12px rgba(0,0,0,0.15);
        border: 1px solid rgba(0,0,0,0.05);
    }
    
    .ag-datatable-exporter .dropdown-item {
        padding: 0.5rem 1rem;
        transition: all 0.2s ease;
    }
    
    .ag-datatable-exporter .dropdown-item:hover {
        background-color: #e3f2fd;
        padding-left: 1.2rem;
    }
    
    .ag-datatable-exporter .dropdown-item i {
        margin-right: 8px;
        opacity: 0.7;
    }

@keyframes progressBarOnce {
    0% { width: 0%; }
    100% { width: 100%; }
}
@keyframes colorShift {
    0%, 100% { filter: hue-rotate(0deg) brightness(1); }
    50% { filter: hue-rotate(20deg) brightness(1.1); }
}

/* ============================================
   AG FRAMEWORK - STICKY TABS SYSTEM
   Sistema centralizzato per tabs sticky durante scroll
   Usa position: sticky nativo per performance ottimali
   ============================================ */

/* Contenitore che abilita lo sticky */
.ag-tabs-sticky-container {
    position: relative;
}

/* Tabs con sticky nativo - molto più performante di fixed */
.nav-tabs.ag-tabs-sticky {
    position: sticky;
    top: var(--ag-navbar-height, 0px);
    z-index: 1020;
    background: #fff;
    transition: box-shadow 0.2s ease;
}

/* Ombra quando i tabs sono "attaccati" */
.nav-tabs.ag-tabs-sticky.is-stuck {
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}

/* ============================================
   SCROLL BUTTONS - Frecce per scroll pagina
   ============================================ */
.scroll-btn {
	position: fixed;
    right: 5px;
    width: 35px;
    height: 35px;
    border-radius: 50%;
    background: #206bc4;
    color: #fff;
    border: none;
    cursor: pointer;
    opacity: 0;
    visibility: hidden;
    transition: all 0.3s ease;
    z-index: 9999;
    box-shadow: 0 4px 12px rgba(32, 107, 196, 0.3);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 24px;
}

.scroll-btn:hover {
    background: #1a5ba8;
    transform: scale(1.1);
    box-shadow: 0 6px 16px rgba(32, 107, 196, 0.4);
}

.scroll-btn:active {
    transform: scale(0.95);
}

.scroll-btn.show {
    opacity: 1;
    visibility: visible;
}

.scroll-to-top {
    bottom: 20px;
}

.scroll-to-bottom {
    bottom: 20px;
}

/* Responsive */
@media (max-width: 768px) {
    .scroll-btn {
        width: 35px;
        height: 35px;
        right: 5px;
        font-size: 18px;
    }
    
    .scroll-to-top {
        bottom: 10px;
    }
    
    .scroll-to-bottom {
        bottom: 10px;
    }
}

/* Non mostrare in stampa */
@media print {
    .scroll-btn {
        display: none !important;
    }
}

