/* LOGIN MODAL */

#login-modal .modal-dialog {
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    width: 100vw;
    max-width: 80vw;
}

@media (max-width: 992px) {
    #login-modal .modal-content {
        min-height: auto;
    }

    #login-modal .modal-body {
        display: flex;
        align-items: center;
        justify-content: center;
    }
}

@media (min-width: 992px) {
    #login-modal .modal-dialog {
        max-width: 40vw;
    }
}

@media (min-width: 1400px) {
    #login-modal .modal-dialog {
        max-width: 30vw;
    }
}

#error-message-box:empty,
#success-message-box:empty,
#alert-message-box:empty {
    display: none;
}

.modal-loading {
    pointer-events: none;
}

#loading,
#success-check-container {
    text-align: center;
    position: absolute;
    height: -webkit-fill-available;
    width: -webkit-fill-available;
    display: flex;
    justify-content: center;
    align-items: center;
    z-index: 1;
    background-color: #0000000a;
    pointer-events: none;
    left: 0;
    top: 0;
}

#loading:before {
    content: "";
    display: inline-block;
    width: 40px;
    height: 40px;
    margin-right: 10px;
    border: 2px solid #888;
    border-right-color: transparent;
    border-radius: 50%;
    animation: spin 1s linear infinite;
}

@keyframes spin {
    to {
        transform: rotate(1turn);
    }
}

.checkmark {
    width: 50px;
    height: 50px;
    border-radius: 50%;
    display: block;
    stroke-width: 2;
    stroke: #000;
    stroke-miterlimit: 10;
    box-shadow: inset 0px 0px 0px #5cb85c;
    animation: fill 0.4s ease-in-out 0.4s forwards, scale 0.3s ease-in-out 0.9s both;
}

.checkmark::after {
    content: '';
    display: block;
    width: 6px;
    height: 12px;
    border: solid white;
    border-width: 0 2px 2px 0;
    position: absolute;
    transform: rotate(45deg);
    left: 22px;
    top: 17px;
    opacity: 0;
    animation: checkmark 0.8s ease-in-out 0.9s forwards;
}

@keyframes scale {
  0%, 100% {
    transform: none;
  }
  50% {
    transform: scale3d(1.1, 1.1, 1);
  }
}

@keyframes fill {
  100% {
    box-shadow: inset 0px 0px 0px 30px #5cb85c;
  }
}

@keyframes checkmark {
  0% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}

/* Política de segurança de senha */
.password-strength-meter .progress-bar {
  transition: width 0.5s ease-in-out;
}

.password-strength-meter .progress {
  background: #E1E0EB;
}

.password-strength-meter .requirements {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.password-strength-meter .requirement {
  display: flex;
  align-items: center;
  gap: 8px;
  color: #6c757d;
}

.password-strength-meter .requirement i {
  font-size: 18px;
}

.password-strength-meter .requirement.valid i {
  animation: checkmark 0.2s ease-in-out;
}

@keyframes checkmark {
  0% { transform: scale(0.8); }
  50% { transform: scale(1.2); }
  100% { transform: scale(1); }
}

.progress-bar.weak { background-color: #dc3545; }
.progress-bar.medium { background-color: #ffc107; }
.progress-bar.strong { background-color: #198754; }
