input, select {
  transition: all 0.3s;
  border: 2px solid #ccc;
  border-radius: 6px;
  padding: 10px;
  width: 100%;
}
input.sucesso { border-color:#28a745; background:#e8fce8; box-shadow:0 0 4px rgba(40,167,69,.3);}
input.erro, select.erro { border-color:#dc3545; background:#fff0f0; box-shadow:0 0 5px rgba(220,53,69,.3);}
.msg-erro{color:#dc3545;font-size:.9rem;margin-top:5px;display:none;}
.msg-erro.active{display:block;}

#toastContainer{top:1rem;right:1rem;z-index:2000;}

/* Animação suave ao entrar em READONLY */
input[readonly] {
  background-color: #f3f7ff !important;
  border-color: #8bb4ff !important;
  transition: all .35s ease;
  color: #555;
}

input:not([readonly]) {
  transition: all .35s ease;
}

#loader-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.48);
  backdrop-filter: blur(3px);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  z-index: 20000;
  opacity: 0;
  pointer-events: none;
  transition: opacity .3s ease;
}

#loader-overlay.active {
  opacity: 1;
  pointer-events: all;
}

.skeleton {
  background: linear-gradient(110deg, #ececec 8%, #f5f5f5 18%, #ececec 33%);
  background-size: 200% 100%;
  animation: skeleton-loading 1s linear infinite;
  color: transparent !important;
}

@keyframes skeleton-loading {
  to {
    background-position: -200% 0;
  }
}

#enviar:disabled {
  background: #a8b5c7 !important;
  border-color: #a8b5c7 !important;
  cursor: not-allowed;
  opacity: 0.7;
  pointer-events: none;
}