/* Composants : boutons, cartes produit emoji, panier, modal, FAB — "Souk joyeux" */

/* Boutons */
.btn{border:0;border-radius:999px;padding:.9rem 1.3rem;font-weight:800;font-family:var(--font-head);font-size:1.02rem;display:inline-flex;align-items:center;justify-content:center;gap:.45rem;cursor:pointer;transition:transform .18s cubic-bezier(.22,1,.36,1),background .18s ease,box-shadow .18s ease}
.btn:active{transform:scale(.96)}
.btn-primary{background:var(--gold);color:oklch(.32 .08 70);box-shadow:0 10px 24px oklch(.82 .15 85 / .45)}
.btn-primary:hover{background:oklch(.86 .15 86);transform:translateY(-2px)}
.btn-dark{background:var(--ink);color:var(--cream)}
.btn-dark:hover{background:oklch(.2 .03 155)}
/* CTA WhatsApp dominant */
.btn-soft{background:var(--wa);color:#063;box-shadow:0 10px 24px oklch(.76 .17 152 / .45)}
.btn-soft::before{content:"✆";font-size:1.1em}
.btn-soft:hover{background:oklch(.79 .17 152);transform:translateY(-2px)}
.full{width:100%}
.icon-btn{border:2px solid var(--ink);background:var(--card);border-radius:999px;width:42px;height:42px;font-size:1.4rem;cursor:pointer;transition:background .18s}
.icon-btn:hover{background:var(--cream-2)}

/* Champs */
.search-box input,.modal input,.modal select,.modal textarea,#lang-select{border:2px solid var(--line);border-radius:999px;padding:.9rem 1.1rem;background:var(--card);min-width:0;max-width:100%;font:inherit;font-size:16px}
.search-box{min-width:0}
.search-box input{min-width:220px}
.modal textarea{border-radius:18px}
.search-box input:focus,.modal input:focus,.modal select:focus,.modal textarea:focus{border-color:var(--forest)}

/* Filtres catégories — pastilles COLORÉES (rotation d'accents marché) */
.filters{display:flex;gap:.55rem;flex-wrap:wrap;margin-bottom:1.5rem}
.filter-btn{border:2px solid var(--ink);background:var(--card);border-radius:999px;padding:.6rem 1rem;font-weight:800;font-size:.95rem;font-family:var(--font-head);cursor:pointer;display:inline-flex;align-items:center;gap:.45rem;transition:transform .15s ease,background .18s,color .18s,border-color .18s}
.filter-btn:hover{transform:translateY(-2px)}
.filter-btn:nth-of-type(5n+1){border-color:var(--forest);color:var(--forest-dark)}
.filter-btn:nth-of-type(5n+2){border-color:var(--persimmon);color:var(--persimmon)}
.filter-btn:nth-of-type(5n+3){border-color:oklch(.6 .14 70);color:oklch(.5 .12 70)}
.filter-btn:nth-of-type(5n+4){border-color:var(--turquoise);color:oklch(.5 .1 200)}
.filter-btn:nth-of-type(5n+5){border-color:var(--berry);color:var(--berry)}
.filter-btn.active{background:var(--forest);color:#fff;border-color:var(--forest-dark)}
.filter-count{font-size:.78rem;font-weight:800;background:oklch(.26 .03 155 / .08);color:inherit;border-radius:999px;padding:.05rem .5rem}
.filter-btn.active .filter-count{background:oklch(1 0 0 / .25);color:#fff}

/* Carte produit — tuile emoji énergique */
.product-card{background:var(--card);border:2px solid var(--ink);border-radius:var(--radius-md);overflow:hidden;min-width:0;display:flex;flex-direction:column;box-shadow:var(--shadow-sm);transition:transform .2s cubic-bezier(.22,1,.36,1),box-shadow .2s ease}
.product-card:hover{transform:translateY(-6px);box-shadow:0 22px 48px oklch(.26 .03 155 / .16)}
.product-media{position:relative;aspect-ratio:4/3;background:var(--tile-bg,#f3f0e7);box-shadow:inset 0 0 0 2px var(--tile-ring,transparent);display:grid;place-items:center}
.product-media.has-photo{background:#fff;box-shadow:inset 0 0 0 1px var(--line,#e7e2d4)}
.product-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;padding:.5rem;transition:transform .25s cubic-bezier(.22,1,.36,1)}
.product-card:hover .product-photo{transform:scale(1.05)}
.product-emoji{font-size:clamp(3rem,7vw,4.6rem);line-height:1;filter:drop-shadow(0 8px 12px oklch(.26 .03 155 / .14));transition:transform .25s cubic-bezier(.22,1,.36,1)}
.product-card:hover .product-emoji{transform:scale(1.08) rotate(-3deg)}
.product-body{padding:1rem 1rem 1.1rem;display:flex;flex-direction:column;gap:.5rem;flex:1;min-width:0}
.product-cat{font-size:.74rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--persimmon);overflow-wrap:break-word}
.product-name{font-size:1.12rem;line-height:1.22;margin:0;font-weight:800;overflow-wrap:break-word;word-break:break-word}
.badge{position:absolute;top:.6rem;inset-inline-end:.6rem;background:var(--persimmon);color:#fff;border-radius:999px;padding:.3rem .65rem;font-size:.76rem;font-weight:800;white-space:nowrap;box-shadow:0 6px 14px oklch(.66 .19 38 / .4)}
.variants{display:grid;gap:.45rem;margin-top:auto;padding-top:.4rem}
.variant-row{display:flex;align-items:center;gap:.5rem;min-width:0;background:var(--cream);border:1.5px solid var(--line);border-radius:999px;padding:.3rem .35rem .3rem .9rem}
.variant-label{font-size:.9rem;color:var(--muted);font-weight:700;min-width:0;overflow-wrap:break-word;word-break:break-word}
.price{font-weight:800;color:var(--forest);margin-inline-start:auto;font-variant-numeric:tabular-nums;white-space:nowrap}
.btn-add{background:var(--forest);color:#fff;width:36px;height:36px;min-width:36px;padding:0;font-size:1.4rem;border-radius:999px;flex-shrink:0;box-shadow:0 6px 14px oklch(.57 .16 152 / .4)}
.btn-add:hover{background:var(--forest-dark);transform:scale(1.08)}
.catalog-empty{color:var(--muted);grid-column:1/-1;padding:2rem 0}

/* Tiroir panier */
.cart-drawer{position:fixed;inset-inline-end:1rem;top:1rem;bottom:1rem;width:min(430px,calc(100vw - 2rem));background:var(--cream);border:2px solid var(--ink);border-radius:var(--radius);box-shadow:var(--shadow);z-index:80;padding:1rem;display:flex;flex-direction:column;gap:1rem;transform:translateX(120%);transition:transform .3s cubic-bezier(.22,1,.36,1)}
body[dir="rtl"] .cart-drawer{transform:translateX(-120%)}
.cart-drawer.open{transform:none}
.drawer-head{display:flex;align-items:center;justify-content:space-between;gap:1rem}
.cart-items{overflow:auto;display:grid;gap:.7rem;flex:1}
.cart-line{background:var(--card);border:1.5px solid var(--line);border-radius:16px;padding:.75rem;display:grid;gap:.3rem}
.cart-line-row{display:flex;justify-content:space-between;gap:.5rem}
.free-progress progress{width:100%;height:.8rem;accent-color:var(--forest)}
.progress-label{display:flex;justify-content:space-between;color:var(--muted);font-size:.9rem;font-weight:700;margin-bottom:.3rem}
.upsell{border-top:1.5px solid var(--line);padding-top:.75rem}
.upsell button{margin:.25rem .25rem 0 0}
.cart-total{display:flex;justify-content:space-between;font-size:1.25rem;font-weight:800;border-top:1.5px solid var(--line);padding-top:.75rem}

/* Modal checkout */
.modal{position:fixed;inset:0;background:oklch(.26 .05 155 / .55);z-index:90;display:none;place-items:center;padding:1rem}
.modal.open{display:grid}
.modal-card{width:min(560px,100%);background:var(--cream);border-radius:var(--radius);padding:1.25rem;display:grid;gap:.6rem;border:2px solid var(--ink);box-shadow:var(--shadow);max-height:92vh;overflow:auto}
.modal-card label{font-weight:800;font-size:.92rem;margin-top:.2rem}
.modal-card input,.modal-card select,.modal-card textarea{width:100%}
.payment-options{display:flex;flex-wrap:wrap;gap:.5rem}
.payment-options button[role="radio"]{border:2px solid var(--line);background:var(--card);border-radius:999px;padding:.6rem .9rem;font-weight:800;cursor:pointer;transition:background .18s}
.payment-options button[aria-checked="true"]{background:var(--forest);color:#fff;border-color:var(--forest-dark)}
fieldset{border:0;padding:0;margin:0}
legend{font-weight:800;font-size:.92rem;margin-bottom:.4rem}

/* Bouton flottant WhatsApp — dominant */
.whatsapp-fab{position:fixed;inset-inline-end:1.2rem;bottom:1.2rem;width:64px;height:64px;border-radius:50%;background:var(--wa);color:#fff;display:grid;place-items:center;font-size:1.9rem;font-weight:900;box-shadow:0 12px 28px oklch(.76 .17 152 / .5),0 0 0 0 oklch(.76 .17 152 / .6);animation:pulse 2.4s infinite;z-index:70;text-decoration:none}
@keyframes pulse{70%{box-shadow:0 12px 28px oklch(.76 .17 152 / .5),0 0 0 20px oklch(.76 .17 152 / 0)}100%{box-shadow:0 12px 28px oklch(.76 .17 152 / .5),0 0 0 0 oklch(.76 .17 152 / 0)}}
@media (prefers-reduced-motion:reduce){.whatsapp-fab{animation:none}}

/* Assistant de commande (chat guidé) */
.chat-fab{position:fixed;inset-inline-end:1.2rem;bottom:calc(1.2rem + 78px);width:60px;height:60px;border-radius:50%;background:var(--forest);color:#fff;border:0;display:grid;place-items:center;font-size:1.6rem;cursor:pointer;box-shadow:var(--shadow-sm);z-index:70;transition:transform .16s}
.chat-fab:hover{transform:scale(1.07)}
.chat-panel{position:fixed;inset-inline-end:1.2rem;bottom:calc(1.2rem + 78px);width:min(380px,calc(100vw - 1.6rem));height:min(560px,calc(100vh - 6rem));background:var(--card);border:1px solid var(--line);border-radius:var(--radius-md);box-shadow:var(--shadow);display:none;flex-direction:column;overflow:hidden;z-index:80}
.chat-panel.open{display:flex}
.chat-head{display:flex;align-items:center;gap:.6rem;background:var(--forest);color:#fff;padding:.8rem 1rem}
.chat-avatar-lg{width:38px;height:38px;border-radius:50%;background:var(--gold);color:var(--forest-dark);display:grid;place-items:center;font-weight:800;font-size:.85rem;flex-shrink:0}
.chat-head-info{display:flex;flex-direction:column;line-height:1.25;flex:1}
.chat-head-info strong{font-family:var(--font-head)}
.chat-status{font-size:.72rem;opacity:.9;display:flex;align-items:center;gap:.35rem}
.chat-dot{width:7px;height:7px;border-radius:50%;background:var(--gold)}
.chat-close{color:#fff;background:transparent;border:0;font-size:1.4rem;cursor:pointer;line-height:1}
.chat-messages{flex:1;overflow-y:auto;padding:.9rem;display:flex;flex-direction:column;gap:.55rem;background:var(--cream)}
.chat-msg{display:flex;gap:.5rem;max-width:88%}
.chat-msg-bot{align-self:flex-start}
.chat-msg-user{align-self:flex-end;flex-direction:row-reverse}
.chat-avatar{width:24px;height:24px;border-radius:50%;background:var(--forest);color:#fff;display:grid;place-items:center;font-size:.62rem;font-weight:800;flex-shrink:0}
.chat-msg-user .chat-avatar{background:var(--gold);color:var(--forest-dark)}
.chat-bubble{padding:.55rem .8rem;border-radius:var(--radius-sm);font-size:.9rem;line-height:1.45;background:var(--card);border:1px solid var(--line)}
.chat-msg-user .chat-bubble{background:var(--forest);color:#fff;border-color:var(--forest-dark)}
.chat-chips{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.5rem}
.chat-chip{background:var(--card);border:1px solid var(--line);color:var(--ink);padding:.35rem .7rem;border-radius:999px;font-size:.78rem;cursor:pointer;transition:border-color .15s,background .15s}
.chat-chip:hover{border-color:var(--forest);background:var(--forest-soft)}
.chat-cart{background:var(--card);border:1px solid var(--forest);border-radius:var(--radius-sm);padding:.7rem .8rem;font-size:.82rem}
.chat-cart-title{color:var(--forest-dark);font-weight:800;margin-bottom:.45rem}
.chat-cart-line{display:flex;justify-content:space-between;gap:.6rem;padding:.15rem 0;color:var(--ink)}
.chat-cart-total{display:flex;justify-content:space-between;border-top:1px dashed var(--line);margin-top:.45rem;padding-top:.45rem;font-weight:800;color:var(--forest-dark)}
.chat-cart-free{color:var(--forest-dark);font-size:.74rem;margin-top:.3rem}
.chat-finalize{margin-top:.6rem;width:100%;background:var(--gold);color:var(--forest-dark);border:0;border-radius:999px;padding:.55rem;font-weight:800;cursor:pointer;font-family:var(--font-head)}
.chat-finalize:hover{filter:brightness(1.04)}
.chat-input-area{display:flex;align-items:center;gap:.5rem;padding:.7rem;border-top:1px solid var(--line);background:var(--card)}
.chat-input-area input{flex:1;border:1px solid var(--line);background:var(--cream);border-radius:999px;padding:.55rem .9rem;font-size:.9rem;font-family:var(--font-sans);outline:none}
.chat-input-area input:focus{border-color:var(--forest)}
.chat-send{background:var(--gold);color:var(--forest-dark);border:0;width:38px;height:38px;border-radius:50%;font-size:1.1rem;font-weight:800;cursor:pointer;flex-shrink:0}
@media (max-width:480px){.chat-panel{inset-inline:.8rem;width:auto;bottom:calc(1.2rem + 70px);height:min(72vh,560px)}}

/* Pages légales (CGV, confidentialité, mentions) */
.legal{max-width:820px;margin:0 auto;padding:clamp(1.5rem,5vw,3.5rem) 1rem}
.legal h1{font:800 clamp(2rem,4.4vw,3rem)/1.05 var(--font-head);letter-spacing:-.035em;margin:0 0 .35rem}
.legal-updated{color:var(--muted);font-weight:700;margin:0 0 1.8rem}
.legal h2{font-family:var(--font-head);font-size:1.3rem;margin:2rem 0 .55rem;color:var(--forest-dark)}
.legal p,.legal li{line-height:1.7}
.legal ul{padding-inline-start:1.2rem;display:flex;flex-direction:column;gap:.3rem;margin:.4rem 0}
.legal a{color:var(--forest);font-weight:700}
.legal-note{background:var(--gold-soft);border:1px solid var(--gold);border-radius:var(--radius-sm);padding:.85rem 1rem;margin:1rem 0}
.legal-todo{background:var(--persimmon-soft);border:1px dashed var(--persimmon);border-radius:var(--radius-sm);padding:.2rem .45rem;font-weight:700;color:oklch(.45 .15 38)}
.legal-back{display:inline-block;margin-bottom:1.4rem;color:var(--forest);font-weight:800;text-decoration:none}
.footer-links{display:flex;gap:1rem;flex-wrap:wrap;align-items:center}
.footer-links a{color:oklch(.95 .02 84 / .9);font-weight:700;text-decoration:underline}
