/* Styles pour le conteneur principal de la boutique */
#products-container {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: 25px;
    padding: 20px;
    max-width: 1200px;
    margin: 20px auto;
    background-color: #f8f8f8; /* Légèrement plus clair que le fond général */
    border-radius: 8px;
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.08);
}

/* Styles pour chaque carte produit */
.product-card {
    background-color: #ffffff;
    border-radius: 10px;
    box-shadow: 0 3px 8px rgba(0, 0, 0, 0.1);
    overflow: hidden;
    display: flex;
    flex-direction: column;
    transition: transform 0.2s ease-in-out, box-shadow 0.2s ease-in-out;
}

.product-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 6px 15px rgba(0, 0, 0, 0.15);
}

.product-card img {
    width: 100%;
    height: 180px; /* Hauteur fixe pour les images */
    object-fit: cover; /* Assure que l'image couvre la zone sans déformation */
    border-bottom: 1px solid #eee;
}

.product-card-content {
    padding: 15px;
    flex-grow: 1; /* Permet au contenu de prendre l'espace restant */
    display: flex;
    flex-direction: column;
}

.product-card h3 {
    font-size: 1.3em;
    color: #333;
    margin-top: 0;
    margin-bottom: 10px;
    min-height: 2.6em; /* Espace réservé pour deux lignes de titre */
    overflow: hidden;
    text-overflow: ellipsis;
    display: -webkit-box;
    -webkit-line-clamp: 2; /* Limite le titre à 2 lignes (peut être conservé pour les titres car souvent plus courts) */
    -webkit-box-orient: vertical;
}

.product-card p.description {
    font-size: 0.9em;
    color: #666;
    line-height: 1.5;
    margin-bottom: 10px;
    flex-grow: 1;
    
    /* --- NOUVELLE LOGIQUE POUR LE ROGNAGE DU TEXTE (environ 3 lignes) --- */
    max-height: 4.5em; /* Environ 3 lignes (3 * 1.5em line-height) */
    overflow: hidden; /* Cache le texte qui dépasse */
    text-overflow: ellipsis; /* Ajoute des points de suspension si le texte est rogné */
    white-space: normal; /* Assure que le texte passe à la ligne */
    /* --- FIN DE LA NOUVELLE LOGIQUE --- */
}

.product-card .price {
    font-size: 1.4em;
    color: #007bff; /* Couleur primaire */
    font-weight: bold;
    margin-bottom: 10px;
}

.product-card .stock {
    font-size: 0.85em;
    color: #888;
    margin-bottom: 15px;
}

.product-card button {
    background-color: #28a745; /* Couleur de succès */
    color: white;
    border: none;
    padding: 12px 15px;
    border-radius: 5px;
    cursor: pointer;
    font-size: 1em;
    transition: background-color 0.2s ease-in-out;
    width: 100%; /* Bouton pleine largeur */
}

.product-card button:hover {
    background-color: #218838;
}

.product-card button:disabled {
    background-color: #cccccc;
    cursor: not-allowed;
}

/* Styles pour les messages de chargement/erreur */
#loading-message, #error-message {
    text-align: center;
    font-size: 1.1em;
    color: #555;
    padding: 30px;
}
#error-message {
    color: #dc3545; /* Couleur d'erreur */
}

/* Ajustements responsives */
@media (max-width: 768px) {
    #products-container {
        grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
        padding: 15px;
    }
}

@media (max-width: 480px) {
    #products-container {
        grid-template-columns: 1fr; /* Une seule colonne sur les très petits écrans */
        padding: 10px;
    }
    .product-card {
        margin-bottom: 15px; /* Espace entre les cartes en mode mono-colonne */
    }
}