:root {
  --primary: #4f46e5;
  --primary-dark: #4338ca;
  --accent: #f59e0b;
  --danger: #dc2626;
  --success: #16a34a;
  --bg: #f6f7fb;
  --card: #ffffff;
  --text: #1f2937;
  --muted: #6b7280;
  --border: #e5e7eb;
  --radius: 14px;
  --shadow: 0 4px 18px rgba(17, 24, 39, .07);
}
* { box-sizing: border-box; }
[hidden] { display: none !important; }
body { margin: 0; font-family: 'Segoe UI', system-ui, -apple-system, Roboto, sans-serif; background: var(--bg); color: var(--text); }
a { color: var(--primary); text-decoration: none; }
button { font: inherit; cursor: pointer; }
input, select, textarea { font: inherit; padding: 10px 12px; border: 1px solid var(--border); border-radius: 10px; background: #fff; width: 100%; }
input:focus, select:focus, textarea:focus { outline: 2px solid var(--primary); border-color: transparent; }
label { display: block; font-size: 14px; font-weight: 600; margin-bottom: 6px; color: #374151; }

.btn { border: 0; border-radius: 10px; padding: 10px 18px; font-weight: 600; background: var(--primary); color: #fff; transition: .15s; display: inline-flex; align-items: center; gap: 6px; }
.btn:hover { background: var(--primary-dark); }
.btn.secondary { background: #eef2ff; color: var(--primary); }
.btn.secondary:hover { background: #e0e7ff; }
.btn.danger { background: #fee2e2; color: var(--danger); }
.btn.danger:hover { background: #fecaca; }
.btn.ghost { background: transparent; color: var(--text); border: 1px solid var(--border); }
.btn.small { padding: 6px 12px; font-size: 14px; }
.btn:disabled { opacity: .5; cursor: not-allowed; }

/* ---------- En-tête boutique ---------- */
.topbar { background: #111827; color: #d1d5db; font-size: 13px; text-align: center; padding: 6px 16px; }
header.site { background: #fff; border-bottom: 1px solid var(--border); position: sticky; top: 0; z-index: 20; }
.header-inner { max-width: 1240px; margin: auto; padding: 14px 16px; display: flex; align-items: center; gap: 16px; }
.logo { font-size: 22px; font-weight: 800; color: var(--text); white-space: nowrap; }
.logo span { color: var(--primary); }
.search { flex: 1; position: relative; }
.search input { padding-left: 38px; border-radius: 999px; background: var(--bg); border-color: transparent; }
.search::before { content: '🔍'; position: absolute; left: 13px; top: 50%; transform: translateY(-50%); font-size: 14px; }
.cart-btn { position: relative; background: var(--primary); color: #fff; border: 0; border-radius: 999px; padding: 10px 16px; font-weight: 600; white-space: nowrap; }
.cart-count { background: var(--accent); color: #111; border-radius: 999px; padding: 1px 8px; margin-left: 4px; font-size: 13px; }

.cat-nav { max-width: 1240px; margin: auto; padding: 0 16px 10px; display: flex; gap: 8px; overflow-x: auto; scrollbar-width: thin; }
.chip { border: 1px solid var(--border); background: #fff; border-radius: 999px; padding: 7px 14px; white-space: nowrap; font-size: 14px; color: var(--text); }
.chip.active, .chip:hover { background: var(--primary); color: #fff; border-color: var(--primary); }

/* ---------- Hero ---------- */
.hero { max-width: 1240px; margin: 20px auto 0; padding: 0 16px; }
.hero-box { background: linear-gradient(120deg, #4f46e5, #7c3aed 60%, #db2777); color: #fff; border-radius: 22px; padding: 40px 36px; display: flex; justify-content: space-between; align-items: center; gap: 20px; }
.hero-box h1 { margin: 0 0 8px; font-size: clamp(24px, 4vw, 38px); }
.hero-box p { margin: 0 0 18px; opacity: .9; }
.hero-box .btn { background: #fff; color: var(--primary); }
.hero-emoji { font-size: 90px; line-height: 1; }
.perks { max-width: 1240px; margin: 16px auto 0; padding: 0 16px; display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 12px; }
.perk { background: #fff; border-radius: var(--radius); padding: 14px 16px; display: flex; gap: 10px; align-items: center; font-size: 14px; box-shadow: var(--shadow); }
.perk b { display: block; }

/* ---------- Catalogue ---------- */
main.shop { max-width: 1240px; margin: auto; padding: 24px 16px 60px; }
.toolbar { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-bottom: 16px; flex-wrap: wrap; }
.toolbar h2 { margin: 0; font-size: 22px; }
.toolbar select { width: auto; }
.grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 18px; }
.card { background: var(--card); border-radius: var(--radius); box-shadow: var(--shadow); overflow: hidden; display: flex; flex-direction: column; transition: .2s; position: relative; }
.card:hover { transform: translateY(-3px); box-shadow: 0 10px 28px rgba(17, 24, 39, .12); }
.card .visual { aspect-ratio: 1 / 1; background: linear-gradient(135deg, #eef2ff, #fdf2f8); display: grid; place-items: center; cursor: pointer; overflow: hidden; }
.card .visual img { width: 100%; height: 100%; object-fit: cover; }
.card .visual .emoji { font-size: 84px; }
.badge { position: absolute; top: 10px; left: 10px; background: var(--danger); color: #fff; font-size: 12px; font-weight: 700; padding: 3px 9px; border-radius: 999px; }
.badge.star { left: auto; right: 10px; background: var(--accent); color: #111; }
.card .body { padding: 14px; display: flex; flex-direction: column; gap: 6px; flex: 1; }
.card .cat { font-size: 12px; color: var(--muted); text-transform: uppercase; letter-spacing: .04em; }
.card h3 { margin: 0; font-size: 16px; cursor: pointer; }
.price { font-size: 18px; font-weight: 800; color: var(--primary); }
.old { color: var(--muted); text-decoration: line-through; font-size: 14px; font-weight: 400; margin-left: 6px; }
.stock-low { font-size: 12px; color: #b45309; }
.stock-out { font-size: 12px; color: var(--danger); font-weight: 600; }
.card .btn { margin-top: auto; justify-content: center; }
.empty { text-align: center; padding: 60px 20px; color: var(--muted); }

/* ---------- Tiroir panier & modales ---------- */
.overlay { position: fixed; inset: 0; background: rgba(17, 24, 39, .45); z-index: 40; display: none; }
.overlay.open { display: block; }
.drawer { position: fixed; top: 0; right: 0; height: 100%; width: min(420px, 100%); background: #fff; z-index: 50; transform: translateX(100%); transition: .25s; display: flex; flex-direction: column; }
.drawer.open { transform: none; }
.drawer-head { padding: 18px 20px; border-bottom: 1px solid var(--border); display: flex; justify-content: space-between; align-items: center; }
.drawer-head h3 { margin: 0; }
.close { background: none; border: 0; font-size: 26px; line-height: 1; color: var(--muted); }
.drawer-body { flex: 1; overflow-y: auto; padding: 12px 20px; }
.drawer-foot { border-top: 1px solid var(--border); padding: 16px 20px; }
.line { display: flex; gap: 12px; align-items: center; padding: 12px 0; border-bottom: 1px solid var(--border); }
.line .thumb { width: 58px; height: 58px; border-radius: 10px; background: #eef2ff; display: grid; place-items: center; overflow: hidden; flex-shrink: 0; }
.line .thumb img { width: 100%; height: 100%; object-fit: cover; }
.line .thumb .emoji { font-size: 30px; }
.line .info { flex: 1; min-width: 0; }
.line .info b { display: block; font-size: 14px; }
.qty { display: inline-flex; align-items: center; border: 1px solid var(--border); border-radius: 8px; margin-top: 4px; }
.qty button { background: none; border: 0; width: 28px; height: 28px; }
.qty span { min-width: 24px; text-align: center; font-size: 14px; }
.totals div { display: flex; justify-content: space-between; margin: 4px 0; }
.totals .grand { font-size: 18px; font-weight: 800; margin-top: 8px; }

.modal { position: fixed; inset: 0; z-index: 60; display: none; place-items: center; padding: 16px; }
.modal.open { display: grid; }
.modal-box { background: #fff; border-radius: 18px; width: min(760px, 100%); max-height: 92vh; overflow-y: auto; position: relative; }
.modal-box .close { position: absolute; right: 14px; top: 10px; z-index: 2; }
.detail { display: grid; grid-template-columns: 1fr 1fr; }
.detail .visual { background: linear-gradient(135deg, #eef2ff, #fdf2f8); display: grid; place-items: center; min-height: 300px; }
.detail .visual img { width: 100%; height: 100%; object-fit: cover; }
.detail .visual .emoji { font-size: 140px; }
.detail .info { padding: 28px; display: flex; flex-direction: column; gap: 12px; }
.detail h2 { margin: 0; }
.form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.form-grid .full { grid-column: 1 / -1; }
.pad { padding: 28px; }

.toast { position: fixed; bottom: 24px; left: 50%; transform: translateX(-50%) translateY(120px); background: #111827; color: #fff; padding: 12px 20px; border-radius: 12px; z-index: 100; transition: .25s; font-size: 14px; }
.toast.show { transform: translateX(-50%) translateY(0); }

footer.site { background: #111827; color: #9ca3af; padding: 30px 16px; text-align: center; font-size: 14px; }
footer.site a { color: #c7d2fe; }

/* ---------- Admin ---------- */
.admin-layout { display: grid; grid-template-columns: 240px 1fr; min-height: 100vh; }
.sidebar { background: #111827; color: #d1d5db; padding: 20px 14px; display: flex; flex-direction: column; gap: 4px; }
.sidebar .logo { color: #fff; padding: 0 10px 18px; font-size: 20px; }
.sidebar button { background: none; border: 0; color: inherit; text-align: left; padding: 11px 12px; border-radius: 10px; font-weight: 500; }
.sidebar button:hover, .sidebar button.active { background: #1f2937; color: #fff; }
.sidebar .bottom { margin-top: auto; display: flex; flex-direction: column; gap: 4px; }
.admin-main { padding: 28px; overflow-x: hidden; }
.admin-main h1 { margin: 0 0 18px; font-size: 26px; }
.panel { background: #fff; border-radius: var(--radius); box-shadow: var(--shadow); padding: 20px; margin-bottom: 20px; }
.stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 14px; margin-bottom: 20px; }
.stat { background: #fff; border-radius: var(--radius); box-shadow: var(--shadow); padding: 18px; }
.stat small { color: var(--muted); }
.stat b { display: block; font-size: 26px; margin-top: 4px; }
.table-wrap { overflow-x: auto; }
table { width: 100%; border-collapse: collapse; font-size: 14px; }
th, td { text-align: left; padding: 10px; border-bottom: 1px solid var(--border); vertical-align: middle; }
th { color: var(--muted); font-weight: 600; font-size: 13px; text-transform: uppercase; letter-spacing: .03em; }
td .thumb { width: 44px; height: 44px; border-radius: 8px; background: #eef2ff; display: grid; place-items: center; overflow: hidden; }
td .thumb img { width: 100%; height: 100%; object-fit: cover; }
td .thumb .emoji { font-size: 24px; }
td input.inline { width: 100px; padding: 6px 8px; }
.row-actions { display: flex; gap: 6px; }
.filters { display: flex; gap: 10px; margin-bottom: 14px; flex-wrap: wrap; }
.filters input, .filters select { width: auto; flex: 1; min-width: 160px; }
.pill { display: inline-block; padding: 3px 10px; border-radius: 999px; font-size: 12px; font-weight: 600; }
.pill.on { background: #dcfce7; color: var(--success); }
.pill.off { background: #f3f4f6; color: var(--muted); }
.pill.new { background: #dbeafe; color: #1d4ed8; }
.pill.done { background: #dcfce7; color: var(--success); }
.pill.cancel { background: #fee2e2; color: var(--danger); }
.login { min-height: 100vh; display: grid; place-items: center; padding: 16px; background: linear-gradient(120deg, #4f46e5, #7c3aed); }
.login .panel { width: min(380px, 100%); }
.img-preview { width: 120px; height: 120px; border-radius: 12px; background: #eef2ff; display: grid; place-items: center; overflow: hidden; }
.img-preview img { width: 100%; height: 100%; object-fit: cover; }
.img-preview .emoji { font-size: 60px; }
.check { display: flex; align-items: center; gap: 8px; font-weight: 500; }
.check input { width: auto; }
.hint { font-size: 13px; color: var(--muted); }

@media (max-width: 800px) {
  .header-inner { flex-wrap: wrap; }
  .search { order: 3; flex-basis: 100%; }
  .hero-emoji { display: none; }
  .detail, .form-grid { grid-template-columns: 1fr; }
  .admin-layout { grid-template-columns: 1fr; }
  .sidebar { flex-direction: row; overflow-x: auto; padding: 10px; }
  .sidebar .logo { display: none; }
  .sidebar .bottom { margin: 0; flex-direction: row; }
  .sidebar button { white-space: nowrap; }
  .admin-main { padding: 16px; }
}

/* =========================================================
   ANIMATIONS & ARRIÈRE-PLAN
   ========================================================= */

/* ---------- Arrière-plan animé ---------- */
body {
  background:
    radial-gradient(circle at 1px 1px, rgba(79, 70, 229, .07) 1px, transparent 0) 0 0 / 26px 26px,
    linear-gradient(-45deg, #eef2ff, #fdf2f8, #ecfeff, #f5f3ff);
  background-size: 26px 26px, 400% 400%;
  background-attachment: fixed;
  animation: bgShift 22s ease infinite;
  min-height: 100vh;
}
@keyframes bgShift {
  0%, 100% { background-position: 0 0, 0% 50%; }
  50% { background-position: 0 0, 100% 50%; }
}
.bg-scene { position: fixed; inset: 0; z-index: -1; overflow: hidden; pointer-events: none; }
.blob { position: absolute; border-radius: 50%; filter: blur(70px); opacity: .45; animation: blobMove 26s ease-in-out infinite alternate; }
.b1 { width: 460px; height: 460px; background: #a5b4fc; top: -120px; left: -100px; }
.b2 { width: 380px; height: 380px; background: #f9a8d4; top: 30%; right: -120px; animation-duration: 30s; animation-delay: -6s; }
.b3 { width: 340px; height: 340px; background: #67e8f9; bottom: -120px; left: 25%; animation-duration: 34s; animation-delay: -12s; }
.b4 { width: 260px; height: 260px; background: #fcd34d; top: 55%; left: -80px; opacity: .3; animation-duration: 28s; animation-delay: -18s; }
@keyframes blobMove {
  0% { transform: translate(0, 0) scale(1); }
  33% { transform: translate(90px, 60px) scale(1.15); }
  66% { transform: translate(-60px, 110px) scale(.9); }
  100% { transform: translate(40px, -50px) scale(1.08); }
}
.float-icon { position: absolute; bottom: -60px; font-size: 26px; opacity: 0; animation: floatUp var(--d, 25s) linear infinite; animation-delay: var(--delay, 0s); }
@keyframes floatUp {
  0% { transform: translateY(0) rotate(0); opacity: 0; }
  10% { opacity: .35; }
  90% { opacity: .35; }
  100% { transform: translateY(-115vh) rotate(360deg); opacity: 0; }
}

/* ---------- En-tête effet verre ---------- */
header.site { background: rgba(255, 255, 255, .72); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); border-bottom-color: rgba(229, 231, 235, .6); }
.topbar { background: linear-gradient(90deg, #111827, #312e81, #111827); background-size: 200% 100%; animation: bgSlide 8s linear infinite; }
@keyframes bgSlide { to { background-position: -200% 0; } }
.logo { display: inline-block; transition: transform .3s; }
.logo:hover { transform: scale(1.05) rotate(-1deg); }
.logo span { background: linear-gradient(90deg, #4f46e5, #db2777, #4f46e5); background-size: 200% auto; -webkit-background-clip: text; background-clip: text; color: transparent; animation: bgSlide 4s linear infinite; }
.cart-btn { transition: transform .2s, box-shadow .2s; }
.cart-btn:hover { transform: translateY(-2px); box-shadow: 0 8px 20px rgba(79, 70, 229, .35); }
.cart-btn.bump { animation: bump .5s; }
@keyframes bump { 0%, 100% { transform: scale(1); } 30% { transform: scale(1.18); } 60% { transform: scale(.95); } }
.chip { transition: all .2s; }
.chip:hover { transform: translateY(-2px); box-shadow: 0 4px 12px rgba(79, 70, 229, .2); }

/* ---------- Bannière ---------- */
.hero-box { background: linear-gradient(120deg, #4f46e5, #7c3aed, #db2777, #f59e0b, #4f46e5); background-size: 300% 300%; animation: bgShift2 12s ease infinite; position: relative; overflow: hidden; box-shadow: 0 20px 50px rgba(124, 58, 237, .3); }
@keyframes bgShift2 { 0%, 100% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } }
.hero-box::after { content: ''; position: absolute; inset: 0; background: linear-gradient(115deg, transparent 40%, rgba(255, 255, 255, .25) 50%, transparent 60%); transform: translateX(-100%); animation: shine 6s ease-in-out infinite; pointer-events: none; }
@keyframes shine { 0%, 60% { transform: translateX(-100%); } 100% { transform: translateX(100%); } }
.hero-box h1 { animation: slideIn .8s cubic-bezier(.2, .8, .2, 1) both; }
.hero-box p { animation: slideIn .8s .15s cubic-bezier(.2, .8, .2, 1) both; }
.hero-box .btn { animation: slideIn .8s .3s cubic-bezier(.2, .8, .2, 1) both, pulse 2.5s 1.2s infinite; }
@keyframes slideIn { from { opacity: 0; transform: translateX(-40px); } to { opacity: 1; transform: none; } }
@keyframes pulse { 0%, 100% { box-shadow: 0 0 0 0 rgba(255, 255, 255, .6); } 50% { box-shadow: 0 0 0 12px rgba(255, 255, 255, 0); } }
.hero-emoji { position: relative; margin-right: 50px; animation: floaty 4s ease-in-out infinite; }
@keyframes floaty { 0%, 100% { transform: translateY(0) rotate(-4deg); } 50% { transform: translateY(-16px) rotate(4deg); } }
.orbit { position: absolute; font-size: 28px; top: 50%; left: 50%; margin: -14px; animation: orbit 7s linear infinite; }
.orbit.o2 { animation-delay: -2.33s; }
.orbit.o3 { animation-delay: -4.66s; }
@keyframes orbit { from { transform: rotate(0) translateX(85px) rotate(0); } to { transform: rotate(360deg) translateX(85px) rotate(-360deg); } }

/* ---------- Avantages ---------- */
.perk { background: rgba(255, 255, 255, .8); backdrop-filter: blur(8px); transition: transform .25s, box-shadow .25s; animation: fadeUp .7s both; }
.perk:nth-child(2) { animation-delay: .1s; }
.perk:nth-child(3) { animation-delay: .2s; }
.perk:nth-child(4) { animation-delay: .3s; }
.perk:hover { transform: translateY(-4px); box-shadow: 0 12px 28px rgba(79, 70, 229, .15); }
@keyframes fadeUp { from { opacity: 0; transform: translateY(24px); } to { opacity: 1; transform: none; } }

/* ---------- Cartes produits ---------- */
.card { transition: transform .3s cubic-bezier(.2, .8, .2, 1), box-shadow .3s, opacity .6s; }
.card.reveal { opacity: 0; transform: translateY(30px) scale(.97); }
.card.reveal.in { opacity: 1; transform: none; transition-delay: var(--stagger, 0s); }
.card.reveal.in:hover, .card:hover { transform: translateY(-6px); box-shadow: 0 18px 40px rgba(79, 70, 229, .18); transition-delay: 0s; }
.card .visual img, .card .visual .emoji { transition: transform .5s cubic-bezier(.2, .8, .2, 1); }
.card:hover .visual img { transform: scale(1.08); }
.card:hover .visual .emoji { transform: scale(1.15); animation: wiggle .6s .2s; }
@keyframes wiggle { 0%, 100% { rotate: 0deg; } 25% { rotate: 8deg; } 75% { rotate: -8deg; } }
.badge { z-index: 1; animation: pop .5s .3s both; }
.badge.star { animation: pop .5s .4s both, glow 2s 1s infinite; }
@keyframes pop { from { transform: scale(0); } 70% { transform: scale(1.2); } to { transform: scale(1); } }
@keyframes glow { 0%, 100% { box-shadow: 0 0 0 0 rgba(245, 158, 11, .5); } 50% { box-shadow: 0 0 0 6px rgba(245, 158, 11, 0); } }
.stock-low { animation: blink 1.6s infinite; }
@keyframes blink { 50% { opacity: .45; } }

/* Effet de brillance sur les boutons */
.btn { position: relative; overflow: hidden; }
.btn::after { content: ''; position: absolute; top: 0; left: -75%; width: 50%; height: 100%; background: linear-gradient(120deg, transparent, rgba(255, 255, 255, .45), transparent); transform: skewX(-20deg); transition: left .6s; pointer-events: none; }
.btn:hover:not(:disabled)::after { left: 130%; }
.btn:active:not(:disabled) { transform: scale(.96); }

/* Article qui « vole » vers le panier */
.fly { position: fixed; z-index: 200; font-size: 40px; pointer-events: none; transition: transform .75s cubic-bezier(.5, -.3, .7, 1), opacity .75s; }
.fly img { width: 60px; height: 60px; object-fit: cover; border-radius: 12px; }

/* ---------- Panier, fenêtres, notifications ---------- */
.overlay.open { backdrop-filter: blur(3px); animation: fadeIn .25s; }
@keyframes fadeIn { from { opacity: 0; } }
.drawer { transition: transform .4s cubic-bezier(.2, .8, .2, 1); }
.drawer.open .line { animation: fadeUp .4s both; }
.drawer.open .line:nth-child(2) { animation-delay: .05s; }
.drawer.open .line:nth-child(3) { animation-delay: .1s; }
.drawer.open .line:nth-child(4) { animation-delay: .15s; }
.modal.open .modal-box { animation: zoomIn .35s cubic-bezier(.2, .8, .2, 1.2); }
@keyframes zoomIn { from { opacity: 0; transform: scale(.88) translateY(20px); } }
.detail .visual .emoji { animation: floaty 4s ease-in-out infinite; }
.toast { transition: transform .4s cubic-bezier(.2, .8, .2, 1.3); }
.grid .empty { animation: fadeUp .5s; }
footer.site { background: linear-gradient(135deg, #111827, #1e1b4b); }

/* ---------- Admin ---------- */
.login { background: linear-gradient(-45deg, #4f46e5, #7c3aed, #db2777, #0ea5e9); background-size: 400% 400%; animation: bgShift2 15s ease infinite; }
.login .panel { animation: zoomIn .5s cubic-bezier(.2, .8, .2, 1.2); }
.stat { transition: transform .25s, box-shadow .25s; }
.stat:hover { transform: translateY(-4px); box-shadow: 0 12px 28px rgba(79, 70, 229, .15); }

/* =========================================================
   AVIS CLIENTS
   ========================================================= */
.stars { display: inline-flex; gap: 1px; line-height: 1; vertical-align: middle; }
.stars .star { position: relative; color: #e5e7eb; font-size: 15px; }
.stars .star::before { content: '★'; position: absolute; left: 0; top: 0; width: var(--fill); overflow: hidden; color: #f59e0b; }
.stars.lg .star { font-size: 22px; }
.rating { display: flex; align-items: center; gap: 6px; font-size: 13px; color: var(--muted); cursor: pointer; }
.rating.muted { cursor: default; font-size: 12px; color: #9ca3af; }
.reviews { border-top: 1px solid var(--border); padding: 24px 28px 28px; }
.reviews h3 { margin: 0 0 16px; }
.reviews-summary { display: flex; gap: 24px; align-items: center; background: #f9fafb; border-radius: 14px; padding: 16px 20px; margin-bottom: 16px; flex-wrap: wrap; }
.reviews-summary .big { display: flex; flex-direction: column; align-items: center; gap: 4px; }
.reviews-summary .big b { font-size: 40px; line-height: 1; }
.dist { display: flex; align-items: center; gap: 8px; font-size: 13px; color: var(--muted); margin: 3px 0; }
.dist .bar { flex: 1; height: 8px; background: #e5e7eb; border-radius: 99px; overflow: hidden; min-width: 100px; }
.dist .bar i { display: block; height: 100%; background: linear-gradient(90deg, #f59e0b, #fbbf24); border-radius: 99px; animation: growBar 1s cubic-bezier(.2, .8, .2, 1); }
@keyframes growBar { from { width: 0; } }
.review { padding: 14px 0; border-bottom: 1px solid var(--border); animation: fadeUp .4s both; }
.review p { margin: 8px 0 0; line-height: 1.55; color: #374151; }
.review-head { display: flex; gap: 10px; align-items: center; font-size: 14px; }
.avatar { width: 38px; height: 38px; border-radius: 50%; background: linear-gradient(135deg, #4f46e5, #db2777); color: #fff; display: grid; place-items: center; font-weight: 700; flex-shrink: 0; }
.reply { margin: 10px 0 0 48px; background: #eef2ff; border-left: 3px solid var(--primary); border-radius: 8px; padding: 10px 12px; font-size: 14px; }
.reply p { margin: 4px 0 0; }
.review-form { margin-top: 20px; background: #f9fafb; border-radius: 14px; padding: 18px; }
.review-form h4 { margin: 0 0 8px; }
.star-input { display: inline-flex; margin-bottom: 10px; }
.star-input button { background: none; border: 0; font-size: 32px; color: #d1d5db; padding: 0 2px; transition: transform .15s, color .15s; }
.star-input button.on { color: #f59e0b; }
.star-input:hover button { color: #f59e0b; }
.star-input button:hover ~ button { color: #d1d5db; }
.star-input button:hover { transform: scale(1.25); }
.nav-badge { background: #ef4444; color: #fff; border-radius: 99px; font-size: 11px; padding: 1px 7px; margin-left: 4px; font-weight: 700; animation: pop .4s; }

/* =========================================================
   PAGE D'ACCUEIL À FORT IMPACT
   ========================================================= */
.hero { margin-top: 16px; }
.hero-box { display: grid; grid-template-columns: 1.15fr .85fr; gap: 36px; align-items: center; padding: 28px 44px; min-height: 0; }
.perks { margin-top: 12px; }
.hero-box.has-media { background: #111827; animation: none; }
.hero-bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; background-size: cover; background-position: center; animation: kenburns 24s ease-in-out infinite alternate; }
@keyframes kenburns { from { transform: scale(1); } to { transform: scale(1.1); } }
.hero-shade { position: absolute; inset: 0; background: linear-gradient(90deg, rgba(17, 24, 39, .82), rgba(17, 24, 39, .4) 60%, rgba(17, 24, 39, .15)); }
.hero-text, .hero-showcase { position: relative; z-index: 1; min-width: 0; }
.hero-kicker { display: inline-block; background: rgba(255, 255, 255, .18); border: 1px solid rgba(255, 255, 255, .35); padding: 6px 14px; border-radius: 99px; font-size: 13px; font-weight: 600; margin-bottom: 14px; backdrop-filter: blur(6px); animation: slideIn .8s both; }
.hero-box h1 { font-size: clamp(28px, 4.2vw, 48px); line-height: 1.08; letter-spacing: -.02em; margin: 0 0 14px; }
.hero-box p { font-size: 17px; line-height: 1.5; max-width: 520px; margin: 0 0 26px; }
.hero-ctas { display: flex; gap: 12px; flex-wrap: wrap; }
.hero-box .btn.cta { background: #fff; color: var(--primary); padding: 15px 30px; font-size: 17px; font-weight: 700; box-shadow: 0 10px 30px rgba(0, 0, 0, .25); }
.hero-box .btn.cta:hover { background: #fff; transform: translateY(-2px) scale(1.03); }
.hero-box .btn.cta2 { background: rgba(255, 255, 255, .12); color: #fff; border: 1.5px solid rgba(255, 255, 255, .65); padding: 14px 24px; font-size: 16px; animation: slideIn .8s .4s both; }
.hero-box .btn.cta2:hover { background: rgba(255, 255, 255, .25); }
.hero-trust { margin-top: 22px; font-size: 14px; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; animation: slideIn .8s .45s both; }
.hero-trust .stars .star { color: rgba(255, 255, 255, .35); }

/* Vitrine du produit phare */
.hero-showcase .btn { animation: none; background: var(--primary); color: #fff; }
.hero-showcase .btn:hover { background: var(--primary-dark); }
.showcase-card { background: rgba(255, 255, 255, .97); color: var(--text); border-radius: 20px; padding: 14px; box-shadow: 0 25px 60px rgba(0, 0, 0, .28); position: relative; animation: showcaseIn .6s cubic-bezier(.2, .8, .2, 1); }
@keyframes showcaseIn { from { opacity: 0; transform: translateY(14px) scale(.97); } }
.showcase-tag { position: absolute; top: 24px; left: 24px; z-index: 1; background: #111827; color: #fff; font-size: 12px; font-weight: 700; padding: 4px 10px; border-radius: 99px; }
.showcase-card .badge { top: 24px !important; right: 24px !important; }
.showcase-visual { height: 175px; border-radius: 14px; background: linear-gradient(135deg, #eef2ff, #fdf2f8); display: grid; place-items: center; overflow: hidden; cursor: pointer; }
.showcase-visual img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s; }
.showcase-visual:hover img { transform: scale(1.06); }
.showcase-visual .emoji { font-size: 110px; animation: floaty 4s ease-in-out infinite; }
.showcase-info { display: flex; justify-content: space-between; align-items: flex-end; gap: 12px; padding: 12px 4px 2px; }
.showcase-info b { display: block; font-size: 17px; cursor: pointer; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.showcase-info .btn { flex-shrink: 0; }
.showcase-thumbs { display: flex; gap: 10px; justify-content: center; margin-top: 12px; }
.showcase-thumbs button { width: 54px; height: 54px; border-radius: 12px; border: 2px solid rgba(255, 255, 255, .4); background: rgba(255, 255, 255, .85); display: grid; place-items: center; overflow: hidden; padding: 0; transition: .2s; }
.showcase-thumbs button:hover { transform: translateY(-2px); }
.showcase-thumbs button.on { border-color: #fff; transform: translateY(-3px) scale(1.08); box-shadow: 0 8px 18px rgba(0, 0, 0, .25); }
.showcase-thumbs img { width: 100%; height: 100%; object-fit: cover; }
.showcase-thumbs .emoji { font-size: 28px; }

/* Avantages avec icônes épurées */
.perk { gap: 14px; padding: 12px 16px; }
.perk b { font-size: 15px; }
.perk span:not(.perk-ico) { color: var(--muted); font-size: 13px; }
.perk-ico { width: 46px; height: 46px; border-radius: 14px; background: linear-gradient(135deg, #eef2ff, #fce7f3); color: var(--primary); display: grid; place-items: center; flex-shrink: 0; transition: .3s; }
.perk:hover .perk-ico { transform: rotate(-8deg) scale(1.08); background: var(--primary); color: #fff; }
.ico { width: 24px; height: 24px; }

/* Sections best-sellers / nouveautés */
.home-section { max-width: 1240px; margin: 22px auto 0; padding: 0 16px; }
.section-head { display: flex; justify-content: space-between; align-items: flex-end; gap: 12px; margin-bottom: 14px; }
.section-head h2 { margin: 0; font-size: 24px; }
.section-head .hint { margin: 4px 0 0; }

/* Aperçu dans l'admin */
.home-preview { width: 100%; height: 140px; border-radius: 12px; background: linear-gradient(120deg, #4f46e5, #7c3aed, #db2777); background-size: cover; background-position: center; display: grid; place-items: center; color: #fff; font-weight: 700; overflow: hidden; }
.home-preview video { width: 100%; height: 100%; object-fit: cover; }
.perk-edit { display: grid; grid-template-columns: 200px 1fr 1fr; gap: 10px; margin-bottom: 10px; }

@media (max-width: 900px) {
  .hero-box { grid-template-columns: 1fr; padding: 28px 22px; gap: 24px; }
  .showcase-visual { height: 170px; }
  .perk-edit { grid-template-columns: 1fr; padding-bottom: 10px; border-bottom: 1px solid var(--border); }
}

/* =========================================================
   FICHE PRODUIT
   ========================================================= */
.modal-box.wide { width: min(1120px, 100%); }
.pdp { display: grid; grid-template-columns: 1.05fr 1fr; gap: 32px; padding: 28px; }
.pdp-gallery { position: sticky; top: 0; align-self: start; min-width: 0; }
.pdp-main { position: relative; aspect-ratio: 1 / 1; border-radius: 18px; overflow: hidden; background: linear-gradient(135deg, #eef2ff, #fdf2f8); display: grid; place-items: center; }
.pdp-main.swap > *:first-child { animation: fadeSwap .4s; }
@keyframes fadeSwap { from { opacity: .2; transform: scale(.98); } }
.pdp-main video, .pdp-main iframe { width: 100%; height: 100%; object-fit: cover; border: 0; background: #000; }
.pdp-emoji { font-size: 170px; animation: floaty 4s ease-in-out infinite; }
.pdp-badge { top: 16px !important; left: 16px !important; font-size: 14px; padding: 5px 12px; }
.zoom { width: 100%; height: 100%; overflow: hidden; cursor: zoom-in; }
.zoom img { width: 100%; height: 100%; object-fit: cover; transition: transform .25s ease-out; transform-origin: var(--x, 50%) var(--y, 50%); }
.zoom.zooming img { transform: scale(2.2); }
.zoom-hint { position: absolute; bottom: 12px; left: 50%; transform: translateX(-50%); background: rgba(17, 24, 39, .65); color: #fff; font-size: 12px; padding: 5px 12px; border-radius: 99px; pointer-events: none; white-space: nowrap; transition: opacity .3s; }
.pdp-main:hover .zoom-hint { opacity: 0; }
.pdp-thumbs { display: flex; gap: 10px; margin-top: 12px; overflow-x: auto; padding-bottom: 4px; }
.pdp-thumbs button { flex: 0 0 72px; height: 72px; border-radius: 12px; border: 2px solid transparent; background: #f3f4f6; padding: 0; overflow: hidden; display: grid; place-items: center; transition: .2s; opacity: .7; }
.pdp-thumbs button:hover { opacity: 1; }
.pdp-thumbs button.on { border-color: var(--primary); opacity: 1; box-shadow: 0 4px 12px rgba(79, 70, 229, .25); }
.pdp-thumbs img { width: 100%; height: 100%; object-fit: cover; }
.pdp-thumbs .play { width: 34px; height: 34px; border-radius: 50%; background: var(--primary); color: #fff; display: grid; place-items: center; font-size: 13px; }

.pdp-info { display: flex; flex-direction: column; gap: 14px; min-width: 0; }
.crumbs { font-size: 13px; color: var(--muted); }
.crumbs a { cursor: pointer; color: var(--muted); }
.crumbs a:hover { color: var(--primary); text-decoration: underline; }
.pdp-title { margin: 0; font-size: clamp(24px, 3vw, 32px); line-height: 1.15; letter-spacing: -.01em; }
.pdp-tagline { margin: -6px 0 0; font-size: 17px; color: #4b5563; }
.pdp-price { display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; }
.pdp-price .now { font-size: 34px; font-weight: 800; color: var(--primary); letter-spacing: -.02em; }
.pdp-price .was { font-size: 19px; color: var(--muted); text-decoration: line-through; }
.save-badge { background: var(--danger); color: #fff; font-weight: 700; font-size: 14px; padding: 4px 10px; border-radius: 8px; align-self: center; }
.save-line { background: #fef3c7; color: #92400e; padding: 8px 12px; border-radius: 10px; font-size: 14px; margin: 4px 0; }

.opt-head { font-size: 14px; color: var(--muted); margin-bottom: 8px; }
.opt-head b { color: var(--text); }
.opt-values { display: flex; flex-wrap: wrap; gap: 10px; }
.swatch { width: 38px; height: 38px; border-radius: 50%; background: var(--c); border: 3px solid #fff; box-shadow: 0 0 0 1px var(--border); transition: transform .15s, box-shadow .15s; position: relative; padding: 0; }
.swatch:hover { transform: scale(1.1); }
.swatch.on { box-shadow: 0 0 0 2px var(--primary); transform: scale(1.08); }
.opt-pill { min-width: 52px; padding: 9px 14px; border-radius: 10px; border: 1.5px solid var(--border); background: #fff; font-weight: 600; transition: .15s; display: inline-flex; flex-direction: column; align-items: center; line-height: 1.2; }
.opt-pill small { font-weight: 500; font-size: 11px; color: var(--muted); }
.opt-pill:hover { border-color: var(--primary); }
.opt-pill.on { border-color: var(--primary); background: var(--primary); color: #fff; box-shadow: 0 4px 12px rgba(79, 70, 229, .3); }
.opt-pill.on small { color: #e0e7ff; }
.swatch.na::after, .opt-pill.na::after { content: ''; position: absolute; inset: 0; background: linear-gradient(to top right, transparent calc(50% - 1px), #ef4444 50%, transparent calc(50% + 1px)); border-radius: inherit; }
.opt-pill.na { position: relative; color: #9ca3af; background: #f9fafb; }

.stock-ok { color: var(--success); font-weight: 600; font-size: 14px; }
.pdp-stock .stock-low, .pdp-stock .stock-out { font-size: 14px; }
.pdp-buy { display: flex; gap: 12px; align-items: stretch; flex-wrap: wrap; }
.qty.big { margin: 0; border-radius: 12px; }
.qty.big button { width: 42px; height: 52px; font-size: 20px; }
.qty.big span { min-width: 30px; font-weight: 700; font-size: 16px; }
.btn.buy { flex: 1; min-width: 220px; justify-content: center; font-size: 17px; padding: 15px 22px; border-radius: 12px; box-shadow: 0 10px 25px rgba(79, 70, 229, .3); }

.benefits { background: linear-gradient(135deg, #f5f3ff, #fdf2f8); border-radius: 16px; padding: 16px 18px; }
.benefits h4 { margin: 0 0 10px; font-size: 16px; }
.benefits ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 9px; }
.benefits li { display: flex; gap: 10px; align-items: flex-start; font-size: 15px; line-height: 1.45; }
.benefits .ico.check { width: 20px; height: 20px; color: var(--success); flex-shrink: 0; margin-top: 1px; }
.pdp-trust { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.pdp-trust div { display: flex; flex-direction: column; align-items: center; gap: 6px; text-align: center; font-size: 12px; color: var(--muted); background: #f9fafb; border-radius: 12px; padding: 10px 6px; }
.pdp-trust .ico { color: var(--primary); }

.pdp-tabs { border-top: 1px solid var(--border); }
.tab-bar { display: flex; gap: 4px; padding: 0 28px; border-bottom: 1px solid var(--border); overflow-x: auto; }
.tab-bar button { background: none; border: 0; padding: 16px 14px; font-weight: 600; color: var(--muted); border-bottom: 3px solid transparent; white-space: nowrap; }
.tab-bar button.on { color: var(--primary); border-bottom-color: var(--primary); }
.tab-panel { padding: 22px 28px 28px; animation: fadeUp .3s; }
.tab-panel .reviews { border: 0; padding: 0; }
.tab-panel .reviews h3 { display: none; }
.pdp-desc { line-height: 1.7; color: #374151; margin: 0; white-space: pre-line; }
table.specs { width: 100%; max-width: 640px; }
table.specs th { width: 40%; text-transform: none; letter-spacing: 0; font-size: 14px; color: var(--muted); background: #f9fafb; }

/* Pastilles sur les cartes */
.card-swatches { display: flex; align-items: center; gap: 5px; flex-wrap: wrap; }
.card-swatches i { width: 14px; height: 14px; border-radius: 50%; background: var(--c); box-shadow: 0 0 0 1px rgba(0, 0, 0, .15); }
.card-swatches small { color: var(--muted); font-size: 12px; }

/* Visionneuse plein écran */
.lightbox { position: fixed; inset: 0; z-index: 300; background: rgba(10, 10, 20, .94); display: none; place-items: center; }
.lightbox.show { display: grid; animation: fadeIn .2s; }
.lightbox img { max-width: 92vw; max-height: 88vh; object-fit: contain; border-radius: 8px; animation: zoomIn .3s; }
.lb-btn { position: absolute; background: rgba(255, 255, 255, .12); color: #fff; border: 0; width: 52px; height: 52px; border-radius: 50%; font-size: 30px; line-height: 1; display: grid; place-items: center; transition: background .2s; }
.lb-btn:hover { background: rgba(255, 255, 255, .25); }
.lb-close { top: 18px; right: 18px; }
.lb-prev { left: 18px; top: 50%; transform: translateY(-50%); }
.lb-next { right: 18px; top: 50%; transform: translateY(-50%); }
.lightbox.single .lb-prev, .lightbox.single .lb-next { display: none; }
.lb-count { position: absolute; bottom: 20px; left: 50%; transform: translateX(-50%); color: #fff; font-size: 14px; opacity: .8; }

/* Admin : galerie & variantes */
.gallery-edit { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 10px; }
.gallery-edit .gi { position: relative; width: 96px; height: 96px; border-radius: 12px; overflow: hidden; background: #f3f4f6; border: 2px solid var(--border); }
.gallery-edit .gi.main { border-color: var(--primary); }
.gallery-edit .gi img { width: 100%; height: 100%; object-fit: cover; }
.gallery-edit .gi .num { position: absolute; top: 4px; left: 4px; background: rgba(17, 24, 39, .75); color: #fff; font-size: 11px; font-weight: 700; padding: 1px 7px; border-radius: 99px; }
.gallery-edit .gi .tools { position: absolute; bottom: 0; left: 0; right: 0; display: flex; justify-content: space-between; background: rgba(17, 24, 39, .7); }
.gallery-edit .gi .tools button { background: none; border: 0; color: #fff; font-size: 13px; padding: 4px 6px; }
.gallery-edit .gi .tools button:hover { background: rgba(255, 255, 255, .2); }
.form-section { border-top: 1px solid var(--border); margin-top: 18px; padding-top: 16px; }
.form-section > h3 { margin: 0 0 4px; font-size: 17px; }
.form-section > .hint { margin: 0 0 12px; }
.var-opt { border: 1px solid var(--border); border-radius: 12px; padding: 12px; margin-bottom: 12px; background: #fafafa; }
.var-opt-head { display: flex; gap: 8px; margin-bottom: 10px; }
.var-opt-head input { flex: 1; }
.var-opt-head select { width: auto; }
.var-row { display: grid; grid-template-columns: 1.4fr 56px 110px 130px 70px 36px; gap: 6px; align-items: center; margin-bottom: 6px; }
.var-row.no-color { grid-template-columns: 1.4fr 110px 130px 70px 36px; }
.var-row input, .var-row select { padding: 7px 8px; font-size: 14px; }
.var-row input[type=color] { padding: 2px; height: 36px; }
.var-row .check { font-size: 13px; }
.var-head { font-size: 12px; color: var(--muted); font-weight: 600; }
.meter { height: 8px; background: #e5e7eb; border-radius: 99px; overflow: hidden; margin: 6px 0; }
.meter i { display: block; height: 100%; background: var(--success); border-radius: 99px; }
.meter.warn i { background: var(--accent); }
.meter.full i { background: var(--danger); }

@media (max-width: 860px) {
  .pdp { grid-template-columns: 1fr; padding: 16px; gap: 20px; }
  .pdp-gallery { position: static; }
  .tab-bar { padding: 0 12px; }
  .tab-panel { padding: 18px 16px 24px; }
  .var-row, .var-row.no-color { grid-template-columns: 1fr 1fr; }
  .var-head { display: none; }
}

/* =========================================================
   FINITIONS DESIGN
   ========================================================= */
body { font-family: 'Plus Jakarta Sans', 'Segoe UI', system-ui, -apple-system, Roboto, sans-serif; -webkit-font-smoothing: antialiased; }
h1, h2, h3, .logo { letter-spacing: -.02em; }
::selection { background: #c7d2fe; }
.eyebrow { display: block; font-size: 12px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--primary); margin-bottom: 4px; }
.eyebrow.light { color: #fde68a; }
.btn { border-radius: 12px; }
.btn:not(.secondary):not(.ghost):not(.danger):not(.cta):not(.cta2) { background: linear-gradient(135deg, #6366f1, #4f46e5 55%, #7c3aed); box-shadow: 0 6px 16px rgba(79, 70, 229, .25); }
.btn:not(.secondary):not(.ghost):not(.danger):not(.cta):not(.cta2):hover { box-shadow: 0 10px 24px rgba(79, 70, 229, .35); transform: translateY(-1px); }

/* En-tête : barre de catégories sans barre de défilement + repli au défilement */
.cat-nav { scrollbar-width: none; -webkit-mask-image: linear-gradient(90deg, #000 92%, transparent); mask-image: linear-gradient(90deg, #000 92%, transparent); padding-bottom: 12px; transition: max-height .3s, padding .3s, opacity .3s; max-height: 70px; }
.cat-nav::-webkit-scrollbar { display: none; }
.chip { font-weight: 600; font-size: 13.5px; }
header.site { transition: box-shadow .3s; }
body.scrolled header.site { box-shadow: 0 8px 30px rgba(17, 24, 39, .08); }
@media (max-width: 800px) {
  body.scrolled .cat-nav { max-height: 0; padding-bottom: 0; opacity: 0; overflow: hidden; }
  .header-inner { padding: 10px 16px; gap: 10px; }
  .search input { padding-top: 9px; padding-bottom: 9px; }
}

/* Cartes produits */
.grid { gap: 22px; }
.grid.row { grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); }
.grid.row .card { max-width: 340px; }
.card { border-radius: 20px; border: 1px solid rgba(229, 231, 235, .7); background: rgba(255, 255, 255, .92); }
.card .visual { margin: 10px 10px 0; border-radius: 14px; position: relative;
  background: radial-gradient(circle at 30% 20%, rgba(255, 255, 255, .85), transparent 55%), linear-gradient(135deg, var(--t1, #eef2ff), var(--t2, #fdf2f8)); }
.card .visual .emoji, .showcase-visual .emoji, .pdp-emoji, .pb-vis .emoji { filter: drop-shadow(0 14px 14px rgba(17, 24, 39, .18)); }
.card .visual .emoji { font-size: 92px; }
.quick { position: absolute; left: 50%; bottom: 12px; transform: translate(-50%, 10px); opacity: 0; background: rgba(255, 255, 255, .95); color: var(--text); font-size: 13px; font-weight: 600; padding: 7px 14px; border-radius: 99px; box-shadow: 0 6px 18px rgba(0, 0, 0, .12); transition: .25s; white-space: nowrap; pointer-events: none; }
.card:hover .quick { opacity: 1; transform: translate(-50%, 0); }
.badge { top: 18px; left: 18px; box-shadow: 0 4px 10px rgba(220, 38, 38, .3); }
.badge.star { right: 18px; box-shadow: 0 4px 10px rgba(245, 158, 11, .3); }
.card .body { padding: 14px 16px 16px; gap: 7px; }
.card .cat { display: inline-block; align-self: flex-start; color: var(--accent-c, var(--primary)); background: color-mix(in srgb, var(--accent-c, #4f46e5) 10%, white); padding: 3px 9px; border-radius: 99px; font-weight: 700; font-size: 11px; }
.card h3 { font-size: 16px; font-weight: 700; line-height: 1.3; }
.card h3:hover { color: var(--primary); }
.price { font-size: 19px; }
.card .btn { margin-top: 6px; }
.showcase-visual, .pdp-main { background: radial-gradient(circle at 30% 20%, rgba(255, 255, 255, .85), transparent 55%), linear-gradient(135deg, var(--t1, #eef2ff), var(--t2, #fdf2f8)); }

/* Titres de sections */
.section-head h2, .toolbar h2 { font-size: clamp(22px, 2.6vw, 30px); font-weight: 800; margin: 0; }
.home-section { margin-top: 48px; }
main.shop { padding-top: 48px; }

/* Tuiles catégories */
.cat-tiles { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 14px; }
.cat-tile { border: 0; border-radius: 20px; padding: 20px 12px 16px; display: flex; flex-direction: column; align-items: center; gap: 6px; text-align: center;
  background: radial-gradient(circle at 30% 15%, rgba(255, 255, 255, .9), transparent 60%), linear-gradient(145deg, var(--t1), var(--t2)); color: var(--text);
  transition: transform .3s cubic-bezier(.2, .8, .2, 1), box-shadow .3s; box-shadow: 0 4px 14px rgba(17, 24, 39, .06); }
.cat-tile:hover { transform: translateY(-5px) rotate(-1deg); box-shadow: 0 16px 30px rgba(17, 24, 39, .12); }
.ct-icon { width: 70px; height: 70px; border-radius: 50%; background: rgba(255, 255, 255, .75); display: grid; place-items: center; font-size: 36px; margin-bottom: 6px; box-shadow: 0 6px 16px rgba(17, 24, 39, .08); transition: transform .4s; }
.cat-tile:hover .ct-icon { transform: scale(1.12) rotate(8deg); }
.cat-tile b { font-size: 15px; }
.cat-tile small { color: var(--accent-c); font-weight: 600; font-size: 12px; }

/* Bandeau promo */
.promo-band { position: relative; overflow: hidden; border-radius: 26px; padding: 36px 40px; color: #fff; display: grid; grid-template-columns: 1fr 1.2fr; gap: 28px; align-items: center;
  background: radial-gradient(circle at 85% 20%, rgba(219, 39, 119, .55), transparent 45%), radial-gradient(circle at 10% 90%, rgba(245, 158, 11, .35), transparent 40%), linear-gradient(135deg, #1e1b4b, #312e81); box-shadow: 0 25px 50px rgba(30, 27, 75, .3); }
.promo-band h2 { font-size: clamp(24px, 3vw, 36px); margin: 4px 0 10px; line-height: 1.15; }
.promo-band p { opacity: .85; margin: 0 0 20px; }
.pb-pct { background: linear-gradient(90deg, #fbbf24, #f472b6); -webkit-background-clip: text; background-clip: text; color: transparent; }
.promo-band .btn.cta { background: #fff; color: #312e81; font-weight: 700; padding: 13px 24px; }
.promo-band > * { min-width: 0; }
.pb-items { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.pb-item { border: 0; border-radius: 18px; background: rgba(255, 255, 255, .1); backdrop-filter: blur(6px); color: #fff; padding: 10px; display: flex; flex-direction: column; gap: 6px; text-align: left; transition: transform .3s, background .3s; }
.pb-item:hover { transform: translateY(-4px); background: rgba(255, 255, 255, .18); }
.pb-vis { aspect-ratio: 1; border-radius: 12px; background: linear-gradient(135deg, var(--t1), var(--t2)); display: grid; place-items: center; overflow: hidden; }
.pb-vis img { width: 100%; height: 100%; object-fit: cover; }
.pb-vis .emoji { font-size: 54px; }
.pb-item b { font-size: 13px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pb-item s { opacity: .6; font-size: 12px; }
.pb-item strong { color: #fde68a; }

/* Témoignages */
.testis { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 18px; }
.testi { margin: 0; background: #fff; border-radius: 20px; padding: 22px; box-shadow: var(--shadow); display: flex; flex-direction: column; gap: 12px; position: relative; }
.testi::before { content: '“'; position: absolute; top: -6px; right: 18px; font-size: 90px; line-height: 1; color: #e0e7ff; font-family: Georgia, serif; }
.testi blockquote { margin: 0; font-size: 15px; line-height: 1.6; color: #374151; }
.testi figcaption { display: flex; gap: 10px; align-items: center; margin-top: auto; font-size: 14px; }
.testi figcaption a { display: block; font-size: 12px; color: var(--muted); cursor: pointer; }

/* Pied de page */
footer.site { margin-top: 70px; padding: 0; text-align: left; color: #9ca3af; background: linear-gradient(160deg, #0f172a, #1e1b4b); }
.footer-inner { max-width: 1240px; margin: auto; padding: 50px 16px 30px; display: grid; grid-template-columns: 1.4fr 1fr 1fr 1.2fr; gap: 30px; }
.f-logo { color: #fff; font-size: 24px; margin-bottom: 10px; }
.f-brand p { margin: 6px 0; font-size: 14px; line-height: 1.6; max-width: 320px; }
footer.site h4 { color: #fff; margin: 4px 0 14px; font-size: 15px; }
footer.site ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 9px; font-size: 14px; }
footer.site ul a { color: #cbd5e1; cursor: pointer; transition: color .2s, padding .2s; }
footer.site ul a:hover { color: #fff; padding-left: 4px; }
.f-perks li { line-height: 1.5; }
.footer-bottom { max-width: 1240px; margin: auto; padding: 18px 16px 26px; border-top: 1px solid rgba(255, 255, 255, .08); display: flex; justify-content: space-between; gap: 12px; flex-wrap: wrap; font-size: 13px; }
.footer-bottom a { color: #a5b4fc; }

/* Bouton retour en haut */
.to-top { position: fixed; right: 20px; bottom: 20px; z-index: 30; width: 48px; height: 48px; border-radius: 50%; border: 0; color: #fff; font-size: 20px; font-weight: 700;
  background: linear-gradient(135deg, #6366f1, #7c3aed); box-shadow: 0 10px 24px rgba(79, 70, 229, .4); opacity: 0; transform: translateY(20px) scale(.8); pointer-events: none; transition: .3s; }
.to-top.show { opacity: 1; transform: none; pointer-events: auto; }
.to-top:hover { transform: translateY(-3px); }

@media (max-width: 900px) {
  .promo-band { grid-template-columns: 1fr; padding: 26px 22px; }
  .footer-inner { grid-template-columns: 1fr 1fr; }
  .f-brand { grid-column: 1 / -1; }
}
@media (max-width: 520px) {
  .grid, .grid.row { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
  .card .visual .emoji { font-size: 60px; }
  .card .body { padding: 10px 12px 12px; }
  .card h3 { font-size: 14px; }
  .price { font-size: 16px; }
  .card .btn { padding: 9px 10px; font-size: 13px; }
  .card .old { display: block; margin-left: 0; }
  .quick { display: none; }
  .cat-tiles { display: flex; overflow-x: auto; gap: 10px; scroll-snap-type: x mandatory; scrollbar-width: none; margin: 0 -16px; padding: 4px 16px 10px; }
  .cat-tiles::-webkit-scrollbar { display: none; }
  .cat-tile { flex: 0 0 108px; scroll-snap-align: start; }
  .ct-icon { width: 54px; height: 54px; font-size: 28px; }
  .cat-tile { padding: 14px 6px 12px; }
  .cat-tile b { font-size: 13px; }
  .pb-items { gap: 8px; }
  .footer-inner { grid-template-columns: 1fr; }
  .perks { grid-template-columns: 1fr 1fr; }
  .perk { flex-direction: column; align-items: flex-start; gap: 8px; }
}

/* =========================================================
   SUIVI DE COMMANDE
   ========================================================= */
.track-btn { border: 1.5px solid var(--border); background: rgba(255, 255, 255, .8); color: var(--text); border-radius: 999px; padding: 9px 14px; font-weight: 600; white-space: nowrap; transition: .2s; }
.track-btn:hover { border-color: var(--primary); color: var(--primary); transform: translateY(-1px); }
.f-track { color: #fde68a !important; font-weight: 600; }
.track-box { width: min(860px, 100%); }
.track-wrap { padding: 32px; display: flex; flex-direction: column; gap: 18px; }
.track-hero { text-align: center; }
.track-hero h2 { margin: 2px 0 6px; font-size: clamp(24px, 3vw, 30px); }
.track-hero-ico { width: 68px; height: 68px; border-radius: 20px; margin: 0 auto 12px; display: grid; place-items: center; color: #fff; background: linear-gradient(135deg, #6366f1, #db2777); box-shadow: 0 12px 26px rgba(124, 58, 237, .35); animation: floaty 4s ease-in-out infinite; }
.track-hero-ico .ico { width: 34px; height: 34px; }
.seg { display: flex; background: #f3f4f6; border-radius: 12px; padding: 4px; max-width: 520px; margin: 0 auto; width: 100%; }
.seg button { flex: 1; border: 0; background: none; border-radius: 9px; padding: 10px 8px; font-weight: 600; color: var(--muted); font-size: 14px; transition: .2s; }
.seg button.on { background: #fff; color: var(--primary); box-shadow: 0 2px 8px rgba(17, 24, 39, .08); }
.track-form { display: flex; flex-direction: column; gap: 14px; max-width: 520px; margin: 0 auto; width: 100%; }
.track-form .hint { margin: -4px 0 0; }
.track-error { background: #fef2f2; color: #b91c1c; border: 1px solid #fecaca; border-radius: 10px; padding: 10px 12px; font-size: 14px; animation: shake .4s; }
@keyframes shake { 25% { transform: translateX(-5px); } 75% { transform: translateX(5px); } }

.track-top { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; flex-wrap: wrap; }
.track-top h2 { margin: 0; font-size: 26px; }
.track-top .hint { margin: 4px 0 0; }
.status-pill { display: inline-flex; align-items: center; gap: 8px; padding: 8px 14px; border-radius: 99px; font-weight: 700; font-size: 14px; background: #eef2ff; color: var(--primary); }
.status-pill.done { background: #dcfce7; color: var(--success); }
.status-pill.cancel { background: #fee2e2; color: var(--danger); }
.status-pill i { width: 9px; height: 9px; border-radius: 50%; background: currentColor; animation: livePulse 1.6s infinite; }
@keyframes livePulse { 0% { box-shadow: 0 0 0 0 rgba(79, 70, 229, .5); } 70% { box-shadow: 0 0 0 9px rgba(79, 70, 229, 0); } 100% { box-shadow: 0 0 0 0 rgba(79, 70, 229, 0); } }

/* Barre de progression */
.progress { list-style: none; margin: 8px 0 0; padding: 0; display: grid; grid-template-columns: repeat(5, 1fr); position: relative; }
.progress::before, .progress::after { content: ''; position: absolute; top: 23px; left: 10%; height: 4px; border-radius: 4px; }
.progress::before { right: 10%; background: #e5e7eb; }
.progress::after { width: calc(80% * var(--p)); background: linear-gradient(90deg, #22c55e, #4f46e5); animation: growLine 1.2s cubic-bezier(.2, .8, .2, 1); }
@keyframes growLine { from { width: 0; } }
.progress li { position: relative; z-index: 1; display: flex; flex-direction: column; align-items: center; text-align: center; gap: 6px; padding: 0 4px; }
.progress .dot { width: 50px; height: 50px; border-radius: 50%; display: grid; place-items: center; background: #fff; border: 3px solid #e5e7eb; color: #9ca3af; transition: .3s; }
.progress .dot .ico { width: 22px; height: 22px; }
.progress li.done .dot { background: #22c55e; border-color: #22c55e; color: #fff; }
.progress li.current .dot { background: var(--primary); border-color: #c7d2fe; color: #fff; box-shadow: 0 0 0 6px rgba(79, 70, 229, .15); animation: pop .5s .4s both; }
.progress b { font-size: 13px; line-height: 1.25; }
.progress li:not(.done):not(.current) b { color: #9ca3af; font-weight: 600; }
.progress small { font-size: 11.5px; color: var(--muted); }

.track-msg { display: flex; gap: 14px; align-items: center; background: linear-gradient(135deg, #eef2ff, #fdf2f8); border-radius: 16px; padding: 16px 18px; }
.track-msg p { margin: 2px 0 0; color: #4b5563; font-size: 14px; }
.track-msg.cancel { background: #fef2f2; display: block; }
.tm-ico { width: 46px; height: 46px; flex-shrink: 0; border-radius: 14px; background: #fff; color: var(--primary); display: grid; place-items: center; box-shadow: 0 4px 12px rgba(79, 70, 229, .15); }
.track-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.track-card { border: 1px solid var(--border); border-radius: 16px; padding: 16px 18px; background: #fff; }
.track-card h4 { margin: 0 0 12px; font-size: 15px; }
.carrier-name { font-weight: 700; margin: 0 0 10px; }
.parcel { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; background: #f9fafb; border: 1px dashed #d1d5db; border-radius: 10px; padding: 8px 10px; margin-bottom: 10px; }
.parcel span { font-size: 12px; color: var(--muted); }
.parcel code { font-size: 15px; font-weight: 700; letter-spacing: .04em; flex: 1; }
.parcel.big { max-width: 340px; margin: 6px auto 12px; justify-content: center; }
.parcel.big code { font-size: 20px; flex: 0 1 auto; }
.carrier-link { width: 100%; font-size: 15px !important; padding: 12px 16px !important; text-decoration: none; }
.addr { margin-top: 14px; font-size: 14px; line-height: 1.55; }
.addr span { display: block; font-size: 12px; color: var(--muted); font-weight: 600; text-transform: uppercase; letter-spacing: .04em; margin-bottom: 2px; }
.timeline { list-style: none; margin: 0; padding: 0 0 0 18px; border-left: 2px solid #e5e7eb; display: flex; flex-direction: column; gap: 14px; }
.timeline li { position: relative; font-size: 14px; }
.timeline li::before { content: ''; position: absolute; left: -25px; top: 4px; width: 12px; height: 12px; border-radius: 50%; background: #c7d2fe; border: 2px solid #fff; }
.timeline li:first-child::before { background: var(--primary); box-shadow: 0 0 0 4px rgba(79, 70, 229, .15); }
.timeline small { display: block; color: var(--muted); font-size: 12px; }
.timeline p { margin: 4px 0 0; background: #fffbeb; border-radius: 8px; padding: 6px 8px; font-size: 13px; }
.track-items { list-style: none; margin: 0 0 10px; padding: 0; }
.track-items li { display: flex; align-items: center; gap: 12px; padding: 8px 0; border-bottom: 1px solid var(--border); }
.ti-vis { width: 48px; height: 48px; border-radius: 10px; overflow: hidden; display: grid; place-items: center; background: linear-gradient(135deg, var(--t1, #eef2ff), var(--t2, #fdf2f8)); flex-shrink: 0; }
.ti-vis img { width: 100%; height: 100%; object-fit: cover; }
.ti-vis .emoji { font-size: 26px; }
.ti-name { flex: 1; font-size: 14px; }
.ti-name small { display: block; color: var(--muted); }
.track-help { display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; background: #f9fafb; border-radius: 16px; padding: 14px 18px; }
.track-help p { margin: 2px 0 0; }

/* Confirmation de commande */
.confirm { text-align: center; }
.confirm-ico { font-size: 64px; animation: pop .6s; }
.confirm h2 { margin: 6px 0 14px; }
.confirm-actions { display: flex; gap: 10px; justify-content: center; flex-wrap: wrap; margin-top: 18px; }
.confirm-actions .btn.buy { flex: 0 1 auto; min-width: 0; }

/* Admin : fiches commandes */
.order-card .oc-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 10px; flex-wrap: wrap; }
.oc-id { font-size: 17px; }
.oc-progress { display: grid; grid-template-columns: repeat(5, 1fr); gap: 4px; margin: 12px 0; }
.oc-progress span { height: 6px; border-radius: 6px; background: #e5e7eb; }
.oc-progress span.on { background: linear-gradient(90deg, #22c55e, #4f46e5); }
.oc-grid { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 18px; font-size: 14px; }
.oc-grid h4 { margin: 0 0 8px; font-size: 14px; }
.oc-grid label { font-size: 12px; margin-bottom: 4px; }
.oc-grid select, .oc-grid input { padding: 7px 9px; font-size: 14px; width: 100%; }
.oc-history { margin-top: 12px; font-size: 14px; }
.oc-history summary { cursor: pointer; color: var(--primary); font-weight: 600; }
.oc-history ul { margin: 8px 0 0; padding-left: 18px; }

@media (max-width: 760px) {
  .track-btn span { display: none; }
  .track-btn { padding: 9px 11px; }
  .track-wrap { padding: 22px 16px; }
  .track-grid, .oc-grid { grid-template-columns: 1fr; }
  .stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .progress { grid-template-columns: 1fr; gap: 0; }
  .progress::before, .progress::after { top: 25px; bottom: 25px; left: 23px; width: 4px; height: auto; right: auto; }
  .progress::after { height: calc((100% - 50px) * var(--p)); bottom: auto; width: 4px; animation: none; }
  .progress li { flex-direction: row; text-align: left; gap: 12px; padding: 4px 0; flex-wrap: wrap; }
  .progress li b { flex: 1; }
  .progress small { width: 100%; padding-left: 62px; margin-top: -14px; }
}

/* =========================================================
   NOTIFICATIONS D'ACTIVITÉ
   ========================================================= */
.social-pop { position: fixed; left: 20px; bottom: 20px; z-index: 35; width: min(360px, calc(100vw - 32px)); background: #fff; border: 1px solid rgba(229, 231, 235, .8); border-radius: 18px; box-shadow: 0 18px 40px rgba(17, 24, 39, .18);
  transform: translateY(140%); opacity: 0; transition: transform .5s cubic-bezier(.2, .9, .3, 1.2), opacity .4s; pointer-events: none; }
.social-pop.show { transform: none; opacity: 1; pointer-events: auto; }
.sp-body { display: flex; gap: 12px; align-items: center; padding: 12px 34px 12px 12px; cursor: pointer; }
.sp-vis { width: 56px; height: 56px; flex-shrink: 0; border-radius: 12px; overflow: hidden; display: grid; place-items: center; background: linear-gradient(135deg, var(--t1, #eef2ff), var(--t2, #fdf2f8)); }
.sp-vis img { width: 100%; height: 100%; object-fit: cover; }
.sp-vis .emoji { font-size: 30px; }
.sp-text { min-width: 0; font-size: 13.5px; line-height: 1.4; }
.sp-text p { margin: 2px 0; color: var(--text); }
.sp-text small { color: var(--muted); font-size: 12px; }
.sp-kicker { display: flex; align-items: center; gap: 6px; font-size: 11.5px; font-weight: 700; color: var(--primary); text-transform: uppercase; letter-spacing: .04em; }
.sp-kicker .stars .star { font-size: 12px; }
.sp-close { position: absolute; top: 6px; right: 8px; border: 0; background: none; color: #9ca3af; font-size: 18px; line-height: 1; padding: 4px; }
.sp-close:hover { color: var(--text); }
.pdp-social { display: flex; flex-direction: column; gap: 6px; font-size: 14px; font-weight: 600; }
.pdp-social span { display: inline-flex; align-items: center; gap: 8px; align-self: flex-start; background: #fff7ed; color: #c2410c; padding: 6px 12px; border-radius: 99px; }
.pdp-social .ps-live { background: #eef2ff; color: var(--primary); }
.ps-live i { width: 8px; height: 8px; border-radius: 50%; background: #22c55e; animation: livePulse 1.6s infinite; }
@media (max-width: 520px) {
  .social-pop { left: 12px; bottom: 12px; width: calc(100vw - 84px); } /* place pour le bouton ↑ */
  .sp-vis { width: 46px; height: 46px; }
}

/* =========================================================
   PAIEMENTS
   ========================================================= */
.pay-methods { display: flex; flex-direction: column; gap: 8px; }
.pay-opt { display: flex; gap: 12px; align-items: flex-start; border: 1.5px solid var(--border); border-radius: 12px; padding: 12px 14px; cursor: pointer; font-weight: 500; margin: 0; transition: .2s; }
.pay-opt:hover { border-color: #c7d2fe; }
.pay-opt.on { border-color: var(--primary); background: #f5f7ff; box-shadow: 0 0 0 3px rgba(79, 70, 229, .1); }
.pay-opt input { width: auto; margin-top: 3px; accent-color: var(--primary); }
.po-main { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; flex: 1; }
.po-main small { width: 100%; color: var(--muted); font-weight: 400; line-height: 1.45; }
.po-fee { font-size: 12px; font-weight: 700; color: #b45309; background: #fef3c7; padding: 2px 8px; border-radius: 99px; }
.po-cards { display: inline-flex; gap: 4px; }
.card-badge { display: inline-block; font-size: 10.5px; font-weight: 800; letter-spacing: .02em; padding: 3px 7px; border-radius: 5px; border: 1px solid var(--border); background: #fff; color: #1f2937; }
.cb-visa { color: #1a1f71; } .cb-mastercard { color: #eb001b; } .cb-amex { color: #2e77bc; } .cb-maestro { color: #0099df; } .cb-cb { color: #0b7a3b; }
.f-cards { display: flex; gap: 4px; flex-wrap: wrap; }
.pay-info { text-align: left; border: 1px solid var(--border); border-radius: 14px; padding: 14px 16px; margin-top: 14px; background: #fff; }
.pay-info.compact { margin-top: 12px; }
.pi-head { display: flex; justify-content: space-between; align-items: center; gap: 8px; flex-wrap: wrap; font-weight: 700; }
.pay-info p { color: #4b5563; font-size: 14px; margin: 8px 0; }
.bank-box { background: #f9fafb; border-radius: 10px; padding: 10px 12px; margin-top: 8px; display: flex; flex-direction: column; gap: 6px; }
.bank-box.ref { background: #eef2ff; }
.bb-title { font-size: 13px; }
.bb-row { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; font-size: 14px; }
.bb-row > span { width: 130px; color: var(--muted); font-size: 13px; flex-shrink: 0; }
.bb-row code { font-size: 14.5px; font-weight: 700; letter-spacing: .03em; }
.bb-row .btn { padding: 3px 9px; font-size: 12px; }

/* Admin : zone sécurisée */
.lock-panel { text-align: center; }
.lock-panel h3 { margin: 6px 0; }
.lock-ico { font-size: 44px; }
.steps { line-height: 1.7; padding-left: 20px; }
.recovery { display: grid; grid-template-columns: repeat(auto-fill, minmax(130px, 1fr)); gap: 8px; margin: 12px 0; }
.recovery code { background: #fff; border: 1px dashed #d97706; border-radius: 8px; padding: 8px; text-align: center; font-size: 15px; font-weight: 700; letter-spacing: .05em; }
.pm-list { display: flex; flex-direction: column; gap: 10px; margin-bottom: 10px; }
.pm-item, .bank-edit { border: 1px solid var(--border); border-radius: 12px; padding: 12px; background: #fafafa; transition: opacity .2s; }
.bank-edit { margin-bottom: 12px; }
.pm-item.off, .bank-edit.off { opacity: .6; }
.pm-head { display: flex; gap: 8px; align-items: center; margin-bottom: 8px; flex-wrap: wrap; }
.pm-head > input { flex: 1; min-width: 160px; }
.pm-head select { width: auto; }
.pm-item textarea { font-size: 14px; }
.fee { display: flex; align-items: center; gap: 4px; }
.fee input { width: 90px; }
.switch { position: relative; width: 44px; height: 24px; flex-shrink: 0; margin: 0; }
.switch input { opacity: 0; width: 0; height: 0; position: absolute; }
.switch span { position: absolute; inset: 0; background: #d1d5db; border-radius: 99px; cursor: pointer; transition: .2s; }
.switch span::before { content: ''; position: absolute; width: 18px; height: 18px; left: 3px; top: 3px; background: #fff; border-radius: 50%; transition: .2s; box-shadow: 0 1px 3px rgba(0, 0, 0, .2); }
.switch input:checked + span { background: var(--success); }
.switch input:checked + span::before { transform: translateX(20px); }
.switch input:focus-visible + span { outline: 2px solid var(--primary); outline-offset: 2px; }
.v-ok { color: var(--success); font-weight: 700; font-size: 12px; }
.v-bad { color: var(--danger); font-weight: 700; font-size: 12px; }
.card-checks { display: flex; flex-wrap: wrap; gap: 14px; }
.save-bar { position: sticky; bottom: 12px; z-index: 5; display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap;
  background: #fff; border: 1px solid #c7d2fe; border-radius: 14px; padding: 12px 16px; box-shadow: 0 10px 30px rgba(79, 70, 229, .15); margin-bottom: 20px; }
.ro-list { list-style: none; padding: 0; margin: 0 0 10px; display: flex; flex-direction: column; gap: 6px; font-size: 14px; }
tr.audit-warn td { background: #fffbeb; }

/* =========================================================
   NAVIGATION PAR CATÉGORIE / ARTICLE / SOUS-ARTICLE
   ========================================================= */
body.listing #hero, body.listing #perks, body.listing #homeSections { display: none; }
body.listing main.shop { padding-top: 22px; min-height: 70vh; }
.crumbs.big { font-size: 14px; margin-bottom: 8px; }
.crumbs b { color: var(--text); }
.page-title { margin: 4px 0 14px; font-size: clamp(26px, 3.4vw, 38px); font-weight: 800; letter-spacing: -.02em; }
.page-desc { margin: -6px 0 14px; color: #4b5563; max-width: 720px; }
.group-tiles { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 14px; margin-bottom: 26px; }
.group-tile { border: 0; border-radius: 18px; padding: 16px; display: flex; gap: 14px; align-items: center; text-align: left; color: var(--text);
  background: radial-gradient(circle at 20% 10%, rgba(255, 255, 255, .9), transparent 60%), linear-gradient(135deg, var(--t1), var(--t2));
  box-shadow: 0 4px 14px rgba(17, 24, 39, .06); transition: transform .25s, box-shadow .25s; }
.group-tile:hover { transform: translateY(-3px); box-shadow: 0 14px 28px rgba(17, 24, 39, .12); }
.gt-icon { width: 58px; height: 58px; border-radius: 16px; background: rgba(255, 255, 255, .8); display: grid; place-items: center; font-size: 30px; flex-shrink: 0; }
.gt-text { flex: 1; min-width: 0; }
.gt-text b { display: block; font-size: 16px; }
.gt-text small { display: block; color: #4b5563; font-size: 12.5px; margin-top: 3px; line-height: 1.4; }
.gt-count { background: #fff; color: var(--accent-c); font-weight: 800; font-size: 13px; border-radius: 99px; padding: 3px 10px; }
.sub-label { font-size: 13px; font-weight: 700; color: var(--muted); margin-bottom: 8px; text-transform: uppercase; letter-spacing: .04em; }
.sub-chips { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 24px; }
.sub-chip { border: 1.5px solid var(--border); background: #fff; border-radius: 12px; padding: 9px 14px; font-weight: 600; font-size: 14px; display: inline-flex; align-items: center; gap: 8px; transition: .2s; }
.sub-chip span { background: #f3f4f6; color: var(--muted); border-radius: 99px; font-size: 12px; padding: 1px 8px; }
.sub-chip:hover { border-color: var(--primary); color: var(--primary); }
.sub-chip.on { background: var(--primary); border-color: var(--primary); color: #fff; box-shadow: 0 6px 16px rgba(79, 70, 229, .3); }
.sub-chip.on span { background: rgba(255, 255, 255, .25); color: #fff; }
.filter-bar { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 18px; background: #fff; border: 1px solid var(--border); border-radius: 14px; padding: 10px 14px; margin-bottom: 18px; font-size: 14px; }
.filter-bar .check { margin: 0; font-weight: 500; }
.fb-title { font-weight: 700; }
.fb-price { display: flex; align-items: center; gap: 6px; margin: 0; font-weight: 500; }
.fb-price input { width: 82px; padding: 6px 8px; }
.fb-count { margin-left: auto; color: var(--muted); }

/* Menu déroulant */
.mega { position: absolute; left: 0; right: 0; top: 100%; background: #fff; border-top: 1px solid var(--border); box-shadow: 0 24px 40px rgba(17, 24, 39, .12); animation: fadeIn .2s; }
.mega-inner { max-width: 1240px; margin: auto; padding: 20px 16px 22px; display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 18px 24px; }
.mega-col { display: flex; flex-direction: column; gap: 6px; }
.mega-col a { color: #4b5563; font-size: 14px; cursor: pointer; }
.mega-col a:hover { color: var(--primary); }
.mega-col .mega-group { color: var(--text); font-weight: 800; font-size: 15px; margin-bottom: 2px; }
.mega-all { grid-column: 1 / -1; font-weight: 700; cursor: pointer; border-top: 1px solid var(--border); padding-top: 12px; }
header.site { position: sticky; }
@media (max-width: 900px) { .mega { display: none; } }
@media (max-width: 520px) {
  .group-tiles { grid-template-columns: 1fr; gap: 10px; }
  .fb-count { margin-left: 0; }
}

/* =========================================================
   CARROUSEL D'ACCUEIL
   ========================================================= */
.carousel { position: relative; border-radius: 26px; overflow: hidden; box-shadow: 0 22px 50px rgba(79, 70, 229, .25); outline: none; }
.carousel:focus-visible { box-shadow: 0 0 0 3px #fff, 0 0 0 6px var(--primary); }
.car-track { display: flex; transition: transform .75s cubic-bezier(.65, 0, .25, 1); will-change: transform; }
.car-slide { position: relative; flex: 0 0 100%; min-height: 390px; display: grid; grid-template-columns: 1.15fr .85fr; gap: 30px; align-items: center;
  padding: 40px 70px 64px; color: #fff; overflow: hidden; }
.car-slide::after { content: ''; position: absolute; inset: 0; background: radial-gradient(circle at 85% 15%, rgba(255, 255, 255, .22), transparent 45%); pointer-events: none; }
.car-bg { position: absolute; inset: 0; background-size: cover; background-position: center; transform: scale(1.08); transition: transform 7s ease-out; }
.car-slide.active .car-bg { transform: scale(1); }
.car-slide .hero-shade { z-index: 0; }
.car-text, .car-visual { position: relative; z-index: 1; min-width: 0; }
.car-text h1, .car-text h2 { font-size: clamp(28px, 4vw, 46px); line-height: 1.08; letter-spacing: -.02em; margin: 0 0 14px; font-weight: 800; }
.car-text p { font-size: 17px; line-height: 1.5; max-width: 520px; margin: 0 0 24px; opacity: .95; }
.carousel .btn.cta { background: #fff; color: var(--primary); padding: 14px 28px; font-size: 16px; font-weight: 700; box-shadow: 0 10px 30px rgba(0, 0, 0, .2); }
.carousel .btn.cta:hover { background: #fff; transform: translateY(-2px) scale(1.03); }
.carousel .btn.cta2 { background: rgba(255, 255, 255, .14); color: #fff; border: 1.5px solid rgba(255, 255, 255, .65); padding: 13px 22px; font-size: 15px; }
.carousel .btn.cta2:hover { background: rgba(255, 255, 255, .26); }
/* Le texte de la diapositive active entre en douceur */
.car-text > * { opacity: 0; transform: translateY(18px); transition: opacity .6s, transform .6s cubic-bezier(.2, .8, .2, 1); }
.car-slide.active .car-text > * { opacity: 1; transform: none; }
.car-slide.active .car-text > *:nth-child(2) { transition-delay: .1s; }
.car-slide.active .car-text > *:nth-child(3) { transition-delay: .2s; }
.car-slide.active .car-text > *:nth-child(4) { transition-delay: .3s; }
.car-slide.active .car-text > *:nth-child(5) { transition-delay: .4s; }
.car-visual { display: grid; place-items: center; opacity: 0; transform: translateX(40px) scale(.95); transition: opacity .7s .2s, transform .8s .2s cubic-bezier(.2, .8, .2, 1); }
.car-slide.active .car-visual { opacity: 1; transform: none; }
.car-emoji { font-size: 150px; line-height: 1; filter: drop-shadow(0 25px 30px rgba(0, 0, 0, .3)); animation: floaty 4.5s ease-in-out infinite; }
.car-product { position: relative; width: min(300px, 100%); background: rgba(255, 255, 255, .97); color: var(--text); border-radius: 20px; padding: 12px; cursor: pointer;
  box-shadow: 0 25px 50px rgba(0, 0, 0, .28); transition: transform .3s; }
.car-product:hover { transform: translateY(-4px) rotate(-1deg); }
.car-product .badge { top: 22px; left: 22px; }
.cp-vis { height: 170px; border-radius: 14px; display: grid; place-items: center; overflow: hidden;
  background: radial-gradient(circle at 30% 20%, rgba(255, 255, 255, .9), transparent 55%), linear-gradient(135deg, var(--t1, #eef2ff), var(--t2, #fdf2f8)); }
.cp-vis img { width: 100%; height: 100%; object-fit: cover; }
.cp-vis .emoji { font-size: 96px; filter: drop-shadow(0 14px 14px rgba(17, 24, 39, .18)); animation: floaty 4s ease-in-out infinite; }
.cp-info { padding: 10px 4px 2px; }
.cp-info b { display: block; font-size: 15px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cp-cta { display: block; text-align: right; font-size: 13px; font-weight: 700; color: var(--primary); padding: 2px 4px; }

.car-arrow { position: absolute; top: 50%; transform: translateY(-50%); z-index: 2; width: 46px; height: 46px; border-radius: 50%; border: 0;
  background: rgba(255, 255, 255, .2); color: #fff; font-size: 30px; line-height: 1; display: grid; place-items: center; backdrop-filter: blur(6px); transition: background .2s, transform .2s; }
.car-arrow:hover { background: rgba(255, 255, 255, .38); transform: translateY(-50%) scale(1.08); }
.car-arrow.prev { left: 14px; } .car-arrow.next { right: 14px; }
.car-bottom { position: absolute; left: 0; right: 0; bottom: 18px; z-index: 2; display: flex; justify-content: center; align-items: center; gap: 12px; }
.car-dots { display: flex; gap: 8px; }
.car-dots button { width: 10px; height: 10px; border-radius: 99px; border: 0; padding: 0; background: rgba(255, 255, 255, .45); overflow: hidden; transition: width .35s, background .2s; position: relative; }
.car-dots button:hover { background: rgba(255, 255, 255, .75); }
.car-dots button.on { width: 42px; background: rgba(255, 255, 255, .35); }
.car-dots button i { position: absolute; left: 0; top: 0; bottom: 0; width: 0; background: #fff; border-radius: 99px; }
.car-dots button.on i { width: 100%; }
@keyframes carProgress { from { width: 0; } to { width: 100%; } }
.car-pause { width: 30px; height: 30px; border-radius: 50%; border: 0; background: rgba(255, 255, 255, .2); color: #fff; font-size: 11px; display: grid; place-items: center; backdrop-filter: blur(6px); }
.car-pause:hover { background: rgba(255, 255, 255, .38); }

@media (max-width: 900px) {
  .car-slide { grid-template-columns: 1fr; padding: 30px 26px 66px; min-height: 0; gap: 18px; }
  .car-emoji { font-size: 96px; }
  .car-arrow { display: none; } /* sur mobile : glisser du doigt */
  .car-product { width: min(260px, 100%); }
  .cp-vis { height: 130px; }
}
@media (max-width: 520px) {
  .car-slide { padding: 24px 20px 60px; }
  .car-text h1, .car-text h2 { font-size: 26px; }
  .car-text p { font-size: 15px; margin-bottom: 18px; }
  .car-visual { display: none; } /* place au texte et aux boutons */
}
@media (prefers-reduced-motion: reduce) {
  .car-text > *, .car-visual { opacity: 1 !important; transform: none !important; }
}

/* Admin : import CSV */
.import-drop { border: 2px dashed #c7d2fe; border-radius: 14px; padding: 22px; display: flex; gap: 12px; align-items: center; justify-content: center; flex-wrap: wrap; background: #f8faff; transition: .2s; }
.import-drop.over { background: #eef2ff; border-color: var(--primary); }
.import-table { max-height: 50vh; overflow: auto; border: 1px solid var(--border); border-radius: 12px; }
.import-table th { position: sticky; top: 0; background: #fff; z-index: 1; }
tr.imp-err td { background: #fef2f2; }
code.sku { font-size: 11.5px; background: #f3f4f6; padding: 1px 6px; border-radius: 5px; color: #4b5563; }

/* Admin : éditeur du carrousel */
.slides-edit { display: flex; flex-direction: column; gap: 14px; }
.slide-edit { display: grid; grid-template-columns: 220px 1fr; gap: 16px; border: 1px solid var(--border); border-radius: 14px; padding: 12px; background: #fafafa; transition: opacity .2s; }
.slide-edit.off { opacity: .55; }
.se-preview { align-self: start; aspect-ratio: 16 / 10; border-radius: 12px; min-height: 130px; color: #fff; padding: 12px; display: flex; flex-direction: column; justify-content: flex-end; gap: 4px; position: relative; overflow: hidden; }
.se-preview::before { content: ''; position: absolute; inset: 0; background: linear-gradient(0deg, rgba(0, 0, 0, .35), transparent 60%); }
.se-preview > * { position: relative; }
.se-preview span { font-size: 40px; line-height: 1; margin-bottom: auto; }
.se-preview b { font-size: 15px; line-height: 1.25; }
.se-preview small { opacity: .8; font-size: 12px; }
.se-fields .pm-head > input { font-size: 14px; }
@media (max-width: 760px) { .slide-edit { grid-template-columns: 1fr; } }

/* Barre de menu par pièce + menu déroulant en tuiles */
.cat-nav .chip { display: inline-flex; align-items: center; gap: 4px; }
.chev { font-size: 10px; opacity: .55; transition: transform .2s; }
.chip.hover .chev, .chip:hover .chev { transform: rotate(180deg); }
.chip.hover { border-color: var(--primary); color: var(--primary); }
.promo-chip { color: #b91c1c; border-color: #fecaca; background: #fff5f5; font-weight: 700; }
.promo-chip.active { background: #dc2626; border-color: #dc2626; color: #fff; }
.mega-inner { grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 10px 20px; }
.mega-tile { display: flex; align-items: center; gap: 14px; padding: 8px; border-radius: 14px; cursor: pointer; color: var(--text); transition: background .2s; }
.mega-tile:hover { background: #f5f7ff; color: var(--primary); }
.mega-tile b { display: block; font-size: 15px; }
.mega-tile small { color: var(--muted); font-size: 12px; }
.mt-vis, .st-vis { width: 74px; height: 58px; border-radius: 12px; overflow: hidden; display: grid; place-items: center; flex-shrink: 0;
  background: radial-gradient(circle at 30% 20%, rgba(255, 255, 255, .9), transparent 60%), linear-gradient(135deg, var(--t1), var(--t2)); }
.mt-vis img, .st-vis img { width: 100%; height: 100%; object-fit: cover; }
.mt-vis .emoji, .st-vis .emoji { font-size: 32px; filter: drop-shadow(0 6px 6px rgba(17, 24, 39, .15)); transition: transform .3s; }
.mega-tile:hover .emoji, .sub-tile:hover .st-vis .emoji { transform: scale(1.15) rotate(-5deg); }
.sub-tiles { display: grid; grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); gap: 10px; margin-bottom: 26px; }
.sub-tile { display: flex; align-items: center; gap: 12px; text-align: left; border: 1.5px solid var(--border); background: #fff; border-radius: 14px; padding: 8px 12px 8px 8px; color: var(--text); transition: .2s; }
.sub-tile b { display: block; font-size: 14.5px; }
.sub-tile small { color: var(--muted); font-size: 12px; }
.sub-tile:hover { border-color: #a5b4fc; transform: translateY(-2px); box-shadow: 0 8px 18px rgba(79, 70, 229, .12); }
.sub-tile.on { border-color: var(--primary); box-shadow: 0 0 0 3px rgba(79, 70, 229, .15); }
.sub-tile.on b { color: var(--primary); }
.sub-tile { min-width: 0; }
.sub-tile > span:last-child { min-width: 0; }
.sub-tile b { overflow-wrap: anywhere; hyphens: auto; }
@media (max-width: 520px) {
  .sub-tiles { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
  .sub-tile { gap: 8px; padding: 6px 8px 6px 6px; }
  .sub-tile b { font-size: 13.5px; }
  .st-vis { width: 52px; height: 44px; }
  .st-vis .emoji { font-size: 24px; }
}
.ts-photo { width: 28px; height: 28px; border-radius: 50%; background: #f3f4f6; display: grid; place-items: center; overflow: hidden; cursor: pointer; font-size: 13px; margin: 0; flex-shrink: 0; }
.ts-photo img { width: 100%; height: 100%; object-fit: cover; }
.tree-sub .ts-icon { width: 30px; text-align: center; padding: 2px 0; }

/* Admin : arborescence des catégories */
.tree-cat summary { cursor: pointer; display: flex; justify-content: space-between; align-items: center; gap: 10px; flex-wrap: wrap; list-style: none; }
.tree-cat summary::-webkit-details-marker { display: none; }
.tree-cat summary::before { content: '▸'; color: var(--muted); margin-right: 4px; transition: transform .2s; }
.tree-cat[open] summary::before { transform: rotate(90deg); }
.tc-title { flex: 1; font-size: 17px; }
.tc-edit { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin: 14px 0; padding-bottom: 14px; border-bottom: 1px solid var(--border); }
.tree-group { border: 1px solid var(--border); border-left: 4px solid var(--primary); border-radius: 12px; padding: 12px; margin-bottom: 12px; background: #fafafa; }
.tg-head { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.tg-name { flex: 1; min-width: 160px; font-weight: 700; }
.tg-desc { width: 100%; margin-top: 8px; font-size: 13px; }
.tg-subs { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; align-items: center; }
.tree-sub { display: inline-flex; align-items: center; gap: 4px; background: #fff; border: 1px solid #c7d2fe; border-radius: 99px; padding: 3px 6px 3px 10px; }
.tree-sub input { border: 0; padding: 2px; width: auto; font-size: 14px; font-weight: 600; background: transparent; }
.tree-sub small { background: #eef2ff; color: var(--primary); border-radius: 99px; padding: 0 7px; font-size: 12px; font-weight: 700; }
.tree-sub button { border: 0; background: none; color: #9ca3af; font-size: 13px; padding: 2px 4px; }
.tree-sub button:hover { color: var(--danger); }
.tree-add { display: inline-flex; gap: 4px; }
.tree-add input { width: 150px; padding: 5px 9px; font-size: 13px; border-radius: 99px; }
.tree-new-group { border: 1.5px dashed #c7d2fe; border-radius: 12px; padding: 12px; margin-top: 4px; }

.warn-banner { background: #fef3c7; border: 1px solid #fcd34d; color: #92400e; }
.warn-banner a { color: #92400e; text-decoration: underline; font-weight: 700; }

/* Respect de la préférence système « réduire les animations » */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; }
  .card.reveal { opacity: 1; transform: none; }
  .float-icon { display: none; }
}

/* =================== Animations e-commerce (attirer sans gêner) =================== */
/* Barre de progression de lecture en haut de l'écran */
.scroll-progress { position: fixed; top: 0; left: 0; right: 0; height: 3px; z-index: 300; transform: scaleX(0); transform-origin: 0 50%;
  background: linear-gradient(90deg, #4f46e5, #db2777, #f59e0b); pointer-events: none; transition: transform .1s linear; }

/* Apparition au défilement des blocs (sections, pièces, promo, avis…) */
.reveal:not(.card) { opacity: 0; transform: translateY(28px); transition: opacity .7s cubic-bezier(.2, .8, .2, 1), transform .7s cubic-bezier(.2, .8, .2, 1); transition-delay: var(--stagger, 0s); }
.reveal.in:not(.card) { opacity: 1; transform: none; }
.section-head h2 { position: relative; display: inline-block; }
.section-head h2::after { content: ''; position: absolute; left: 0; bottom: -6px; height: 3px; width: 46px; border-radius: 3px;
  background: linear-gradient(90deg, #4f46e5, #db2777); transform-origin: 0 50%; }
.section-head.reveal h2::after { transform: scaleX(0); transition: transform .8s .35s cubic-bezier(.2, .8, .2, 1); }
.section-head.reveal.in h2::after { transform: scaleX(1); }

/* Fiche article : la 2ᵉ photo apparaît au survol (comme les grandes boutiques) */
.card .visual.has-alt { position: relative; }
.card .visual img.alt { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: 0; transition: opacity .45s ease, transform .6s cubic-bezier(.2, .8, .2, 1); pointer-events: none; }
@media (hover: hover) {
  .card:hover .visual.has-alt img.alt.loaded { opacity: 1; transform: scale(1.04); }
  .card:hover .visual.has-alt img:not(.alt) { opacity: 0; }
}
.card .visual img:not(.alt) { transition: opacity .45s ease, transform .5s cubic-bezier(.2, .8, .2, 1); }

/* Photos : reflet pendant le chargement, puis fondu */
.card .visual:has(> img:not(.alt):not(.loaded)), .pb-vis:has(> img:not(.loaded)) {
  background: linear-gradient(100deg, #eef2ff 30%, #fdf2f8 50%, #eef2ff 70%); background-size: 200% 100%; animation: bgSlide 1.4s linear infinite; }
.card .visual > img:not(.alt), .pb-vis > img, .pdp-main img { opacity: 0; }
.card .visual > img.loaded:not(.alt), .pb-vis > img.loaded, .pdp-main img.loaded { opacity: 1; }

/* Onde au clic sur les boutons */
.btn, .cart-btn, .chip { position: relative; overflow: hidden; }
.ripple { position: absolute; border-radius: 50%; background: rgba(255, 255, 255, .45); transform: scale(0); pointer-events: none; animation: rippleOut .65s ease-out forwards; }
.btn.secondary .ripple, .chip .ripple { background: rgba(79, 70, 229, .18); }
@keyframes rippleOut { to { transform: scale(1); opacity: 0; } }

/* Tuiles de pièces : léger soulèvement et icône qui s'anime au survol */
.cat-tile { transition: transform .3s cubic-bezier(.2, .8, .2, 1), box-shadow .3s; }
.cat-tile:hover { transform: translateY(-5px); box-shadow: 0 16px 34px rgba(79, 70, 229, .16); }
.cat-tile:hover .ct-icon { animation: wiggle .6s; }

/* Pourcentage de la bande promo qui « respire » */
.pb-pct { display: inline-block; animation: pctBeat 2.4s ease-in-out infinite; }
@keyframes pctBeat { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.08); } }

@media (prefers-reduced-motion: reduce) {
  .reveal:not(.card) { opacity: 1; transform: none; }
  .section-head.reveal h2::after { transform: none; }
  .scroll-progress, .ripple { display: none; }
  .card .visual > img, .pb-vis > img, .pdp-main img { opacity: 1; }
}

/* Article visible mais pas encore en vente (prix à 0 € dans l'admin) */
.price-soon { font-size: 15px; font-weight: 700; color: #b45309; background: #fef3c7; border-radius: 99px; padding: 3px 12px; }
.pdp-price .price-soon { font-size: 18px; padding: 6px 16px; }
