.sidebar-transition {
    transition: transform 0.3s ease-in-out;
}
.cart-transition {
    transition: transform 0.3s ease-in-out;
}
input:invalid {
    border-color: #EA2B35; /* Rojo de Acento */
}
input:valid {
    border-color: #4D4D4D; /* Gris Oscuro para validación */
}
.product-image {
    aspect-ratio: 4 / 3;
    object-fit: contain; /* Evita que la imagen se corte */
    background-color: #f8f9fa;
    min-height: 180px;
}
.loader {
    border: 4px solid #DDDDDD; /* Gris Claro */
    border-top: 4px solid #1D1D1D; /* Negro Principal */
    border-radius: 50%;
    width: 40px;
    height: 40px;
    animation: spin 1s linear infinite;
}
@keyframes spin {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}
.text-overlay {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    white-space: nowrap;
}
.variation-button {
    border: 1px solid #DDDDDD; /* Gris Claro */
    border-radius: 0.5rem;
    padding: 0.5rem 1rem;
    cursor: pointer;
    transition: all 0.2s ease-in-out;
}
.variation-button.selected {
    border-color: #1D1D1D; /* Negro Principal */
    background-color: #DDDDDD; /* Gris Claro */
}
/* Estilos para las notificaciones */
.notification-container {
    position: fixed;
    top: 20px;
    right: 20px;
    display: flex;
    flex-direction: column-reverse; /* Las nuevas notificaciones aparecen arriba */
    gap: 10px;
    z-index: 1000;
}
.notification {
    padding: 15px 20px;
    border-radius: 8px;
    color: white;
    font-family: sans-serif;
    font-size: 14px;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
    opacity: 0;
    transform: translateY(20px);
    transition: opacity 0.3s ease-in-out, transform 0.3s ease-in-out;
}
.notification.show {
    opacity: 1;
    transform: translateY(0);
}
.notification.success {
    background-color: #4D4D4D; /* Gris Oscuro para éxito */
}
.notification.error {
    background-color: #EA2B35; /* Rojo de Acento para error */
}
