:root {
    --poudre: #F5EAE5;
    --vieux-rose: #D1B8AD;
    --or-blush: #C5A059;
    --texte: #5F4B42;
    --blanc: #FFFFFF;
    --serif: 'Playfair Display', serif;
    --sans: 'Montserrat', sans-serif;
    --shadow-douce: 0 10px 30px rgba(136, 100, 85, 0.05);
}

* { box-sizing: border-box; -webkit-tap-highlight-color: transparent; }

body {
    font-family: var(--sans);
    background-color: var(--poudre);
    color: var(--texte);
    margin: 0; padding: 20px;
    font-weight: 300;
    -webkit-font-smoothing: antialiased;
}

header { text-align: center; margin-bottom: 30px; padding-top: 30px; }
.logo-wrapper { margin: 15px auto; max-width: 160px; filter: drop-shadow(0 4px 8px rgba(0, 0, 0, 0.03)); }
.main-logo { width: 100%; height: auto; display: block; }
.separator { width: 40px; height: 1px; background: var(--or-blush); margin: 15px auto; }
.pre-title { text-transform: uppercase; letter-spacing: 3px; font-size: 0.7rem; opacity: 0.6; }
.subtitle { font-family: var(--serif); font-style: italic; font-size: 1rem; }

/* Menu Filtres */
.filter-menu { display: flex; justify-content: center; gap: 8px; margin-bottom: 30px; }
.filter-btn {
    background: white; border: 1px solid var(--vieux-rose); padding: 8px 18px;
    border-radius: 20px; cursor: pointer; transition: 0.3s; font-size: 0.8rem;
}
.filter-btn.active { background: var(--vieux-rose); color: white; }

/* Layout */
.container { display: grid; grid-template-columns: 1fr 340px; gap: 30px; max-width: 1200px; margin: auto; }

@media (max-width: 900px) {
    .container { grid-template-columns: 1fr; }
    .checkout-section { position: relative; top: 0; }
}

/* Grille & Cartes */
.catalogue {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
    gap: 20px;
}

.card {
    background: var(--blanc);
    border-radius: 15px;
    overflow: hidden;
    box-shadow: var(--shadow-douce);
    transition: transform 0.4s cubic-bezier(0.165, 0.84, 0.44, 1), opacity 0.4s ease;
    border: 1px solid rgba(136, 100, 85, 0.06);
    display: flex; flex-direction: column;
    max-width: 280px; width: 100%; margin: 0 auto;
}

.card.hidden { opacity: 0; transform: scale(0.95); display: none; }

model-viewer { width: 100%; height: 220px; background: radial-gradient(circle, #ffffff 0%, #fafafa 100%); }

.card h3 { font-family: var(--serif); padding: 12px 15px 4px; margin: 0; font-size: 1.1rem; font-weight: 500; }
.card-footer { padding: 10px 15px 15px; display: flex; justify-content: space-between; align-items: center; border-top: 1px solid rgba(136, 100, 85, 0.03); }
.price { color: var(--or-blush); font-weight: 600; }

.order-controls { display: flex; gap: 5px; }
.qty { width: 40px; border: 1px solid #eee; border-radius: 5px; text-align: center; font-size: 0.8rem; }
.btn-add { background: var(--vieux-rose); color: white; border: none; padding: 6px 12px; border-radius: 5px; cursor: pointer; font-size: 0.8rem; }

/* Sidebar */
.checkout-section {
    background: var(--blanc); padding: 25px; border-radius: 20px;
    height: fit-content; position: sticky; top: 20px; box-shadow: var(--shadow-douce);
}
.panier-scroll { margin: 15px 0; max-height: 250px; overflow-y: auto; }
.total-panier { display: flex; justify-content: space-between; font-weight: 600; padding: 10px 0; border-top: 1px solid #eee; margin-bottom: 15px; }

.form-commande input { width: 100%; padding: 12px; margin-bottom: 12px; border: 1px solid rgba(136, 100, 85, 0.1); border-radius: 10px; }
.address-wrapper { display: flex; gap: 5px; margin-bottom: 12px; }
.address-wrapper input { margin-bottom: 0; }
.btn-gps { background: transparent; border: 1px solid var(--vieux-rose); color: var(--vieux-rose); border-radius: 10px; padding: 0 15px; cursor: pointer; }

.btn-whatsapp {
    background-color: #25D366; color: white; width: 100%; padding: 15px; border: none;
    border-radius: 12px; font-weight: 600; display: flex; align-items: center; justify-content: center; gap: 10px; cursor: pointer;
    box-shadow: 0 8px 15px rgba(37, 211, 102, 0.15);
}

footer { text-align: center; padding: 40px; opacity: 0.4; font-size: 0.8rem; }