.toolbar.file-actions .iconbtn.btn-disabled,
.file-actions .iconbtn.btn-disabled,
button.iconbtn.btn-disabled,
#btnSave.btn-disabled,
#btnPrint.btn-disabled {
opacity: 0.35 !important;
cursor: not-allowed !important;
pointer-events: none !important;
filter: grayscale(80%) brightness(.7) !important;
transform: none !important;
box-shadow: none !important;
border: 2px dashed rgb(156 163 175 / .6) !important;
background: rgb(249 250 251 / .9) !important;
transition: all 0.3s ease !important;
position: relative;
}

.toolbar.file-actions .iconbtn.btn-disabled::after,
.file-actions .iconbtn.btn-disabled::after,
button.iconbtn.btn-disabled::after,
#btnSave.btn-disabled::after,
#btnPrint.btn-disabled::after {
content: ‘’;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgb(0 0 0 / .2);
border-radius: inherit;
pointer-events: none;
z-index: 1;
}

.toolbar.file-actions .iconbtn.btn-disabled svg,
.file-actions .iconbtn.btn-disabled svg,
button.iconbtn.btn-disabled svg,
#btnSave.btn-disabled svg,
#btnPrint.btn-disabled svg {
opacity: 0.5 !important;
filter: grayscale(100%) !important;
}

.toolbar.file-actions .iconbtn.btn-disabled:hover,
.toolbar.file-actions .iconbtn.btn-disabled:focus,
.toolbar.file-actions .iconbtn.btn-disabled:active,
.file-actions .iconbtn.btn-disabled:hover,
.file-actions .iconbtn.btn-disabled:focus,
.file-actions .iconbtn.btn-disabled:active,
button.iconbtn.btn-disabled:hover,
button.iconbtn.btn-disabled:focus,
button.iconbtn.btn-disabled:active,
#btnSave.btn-disabled:hover,
#btnSave.btn-disabled:focus,
#btnSave.btn-disabled:active,
#btnPrint.btn-disabled:hover,
#btnPrint.btn-disabled:focus,
#btnPrint.btn-disabled:active {
opacity: 0.35 !important;
transform: none !important;
box-shadow: none !important;
filter: grayscale(80%) brightness(.7) !important;
border: 2px dashed rgb(156 163 175 / .6) !important;
background: rgb(249 250 251 / .9) !important;
cursor: not-allowed !important;
}

.toolbar.file-actions .iconbtn.btn-loading,
.file-actions .iconbtn.btn-loading,
button.iconbtn.btn-loading,
#btnSave.btn-loading,
#btnPrint.btn-loading {
position: relative;
opacity: 0.7 !important;
pointer-events: none !important;
cursor: wait !important;
}

.toolbar.file-actions .iconbtn.btn-loading::before,
.file-actions .iconbtn.btn-loading::before,
button.iconbtn.btn-loading::before,
#btnSave.btn-loading::before,
#btnPrint.btn-loading::before {
content: ‘’;
position: absolute;
top: 50%;
left: 50%;
width: 20px;
height: 20px;
border: 2px solid #fff0;
border-top: 2px solid #3b82f6;
border-radius: 50%;
animation: btn-loading-spin 1s linear infinite;
transform: translate(-50%, -50%);
z-index: 2;
}

@keyframes btn-loading-spin {
0% {
transform: translate(-50%, -50%) rotate(0deg);
}
100% {
transform: translate(-50%, -50%) rotate(360deg);
}
}

.toolbar.file-actions .iconbtn.btn-loading svg,
.file-actions .iconbtn.btn-loading svg,
button.iconbtn.btn-loading svg,
#btnSave.btn-loading svg,
#btnPrint.btn-loading svg {
opacity: 0 !important;
}

.toolbar.file-actions .iconbtn:not(.btn-disabled):not(.btn-loading),
.file-actions .iconbtn:not(.btn-disabled):not(.btn-loading),
button.iconbtn:not(.btn-disabled):not(.btn-loading),
#btnSave:not(.btn-disabled):not(.btn-loading),
#btnPrint:not(.btn-disabled):not(.btn-loading) {
opacity: 1 !important;
filter: none !important;
pointer-events: auto !important;
cursor: pointer !important;
transition: all 0.2s ease !important;
border: 0 !important;
background: transparent !important;
}

.toolbar.file-actions .iconbtn:not(.btn-disabled):not(.btn-loading):hover,
.file-actions .iconbtn:not(.btn-disabled):not(.btn-loading):hover,
button.iconbtn:not(.btn-disabled):not(.btn-loading):hover,
#btnSave:not(.btn-disabled):not(.btn-loading):hover,
#btnPrint:not(.btn-disabled):not(.btn-loading):hover {
transform: translateY(-2px) !important;
box-shadow: 0 4px 12px rgb(0 0 0 / .15) !important;
}

.toolbar.file-actions .iconbtn:not(.btn-disabled):not(.btn-loading):focus-visible,
.file-actions .iconbtn:not(.btn-disabled):not(.btn-loading):focus-visible,
button.iconbtn:not(.btn-disabled):not(.btn-loading):focus-visible,
#btnSave:not(.btn-disabled):not(.btn-loading):focus-visible,
#btnPrint:not(.btn-disabled):not(.btn-loading):focus-visible {
outline: 3px solid var(–focus) !important;
outline-offset: 2px !important;
}

@keyframes auth-success-pulse {
0% {
transform: scale(1);
box-shadow: 0 0 0 0 rgb(34 197 94 / .7);
}
50% {
transform: scale(1.05);
box-shadow: 0 0 0 10px #fff0;
}
100% {
transform: scale(1);
box-shadow: 0 0 0 0 #fff0;
}
}

.auth-success-animation {
animation: auth-success-pulse 0.6s ease-out;
}

.toolbar.file-actions .iconbtn:not(.btn-disabled):not(.btn-loading)::before,
.file-actions .iconbtn:not(.btn-disabled):not(.btn-loading)::before,
button.iconbtn:not(.btn-disabled):not(.btn-loading)::before,
#btnSave:not(.btn-disabled):not(.btn-loading)::before,
#btnPrint:not(.btn-disabled):not(.btn-loading)::before {
content: ‘’;
position: absolute;
top: -2px;
right: -2px;
width: 8px;
height: 8px;
background: #22c55e;
border-radius: 50%;
border: 2px solid #fff;
opacity: 0;
transition: opacity 0.3s ease;
z-index: 1;
}

.toolbar.file-actions .iconbtn:not(.btn-disabled):not(.btn-loading):hover::before,
.file-actions .iconbtn:not(.btn-disabled):not(.btn-loading):hover::before,
button.iconbtn:not(.btn-disabled):not(.btn-loading):hover::before,
#btnSave:not(.btn-disabled):not(.btn-loading):hover::before,
#btnPrint:not(.btn-disabled):not(.btn-loading):hover::before {
opacity: 1;
}

@media (max-width: 920px) {
.toolbar.file-actions .iconbtn.btn-disabled,
.file-actions .iconbtn.btn-disabled,
button.iconbtn.btn-disabled,
#btnSave.btn-disabled,
#btnPrint.btn-disabled {
opacity: 0.4 !important;
}

.toolbar.file-actions .iconbtn.btn-disabled::after,
.file-actions .iconbtn.btn-disabled::after,
button.iconbtn.btn-disabled::after,
#btnSave.btn-disabled::after,
#btnPrint.btn-disabled::after {
background: rgb(0 0 0 / .25);
}
}

.debug-disabled-css #btnSave.btn-disabled,
.debug-disabled-css #btnPrint.btn-disabled {
border: 3px solid red !important;
}

.force-disabled {
opacity: 0.3 !important;
filter: grayscale(100%) !important;
pointer-events: none !important;
cursor: not-allowed !important;
}