.product-card { background-color: var(--surface); border: 2px solid var(--category-color, white); border-radius: 15px; overflow: hidden; display: flex; flex-direction: column; width: 100%; touch-action: manipulation; -webkit-tap-highlight-color: transparent; transition: all 0.3s ease; cursor: default; /* ✅ Pas de cursor pointer */ } .product-card:hover { transform: scale(1.08); box-shadow: 0 8px 25px color-mix(in srgb, var(--category-color, white) 40%, transparent); z-index: 10; } .product-card:active { transform: scale(0.97); background-color: var(--surface-2); } .product-card-content { cursor: default; /* ✅ Pas de cursor pointer */ } .product-image-container { width: 100%; aspect-ratio: 1; background-color: var(--surface-2); display: flex; align-items: center; justify-content: center; overflow: hidden; position: relative; } .sold-out-overlay { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); text-align: center; z-index: 5; pointer-events: none; background-color: rgba(0, 0, 0, 0.8); color: rgba(255, 0, 0, 0.95); border: 6px solid rgba(255, 0, 0, 0.95); padding: clamp(0.5rem, 2vw, 0.8rem) clamp(1.5rem, 5vw, 2.5rem); font-size: clamp(1.3rem, 5.5vw, 2.2rem); font-weight: 900; letter-spacing: 3px; text-transform: uppercase; white-space: nowrap; box-shadow: 0 0 8px rgba(255, 0, 0, 0.6); text-shadow: 2px 2px 6px rgba(0, 0, 0, 0.9), -2px -2px 6px rgba(0, 0, 0, 0.9), 0 0 10px rgba(255, 0, 0, 0.5); } .coming-soon-overlay { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%) rotate(-15deg); text-align: center; z-index: 5; pointer-events: none; background-color: rgba(0, 0, 0, 0.8); color: rgba(34, 197, 94, 0.95); border: 6px solid rgba(34, 197, 94, 0.95); padding: clamp(0.5rem, 2vw, 0.8rem) clamp(1.5rem, 5vw, 2.5rem); font-size: clamp(1.1rem, 4.5vw, 1.8rem); font-weight: 900; letter-spacing: 3px; text-transform: uppercase; white-space: nowrap; box-shadow: 0 0 8px rgba(34, 197, 94, 0.6); text-shadow: 2px 2px 6px rgba(0, 0, 0, 0.9), -2px -2px 6px rgba(0, 0, 0, 0.9); } .product-card.out-of-stock { opacity: 0.75; } .product-card.out-of-stock .product-image { filter: grayscale(100%) brightness(0.6) blur(1.5px); } .product-image3 { width: 100%; height: 100%; object-fit: cover; } .product-info { padding: clamp(0.8rem, 3vw, 1.2rem); background-color: var(--surface); border-top: 1px solid var(--border); } .product-name { color: var(--text); margin: 0 0 0.5rem 0; font-size: clamp(1rem, 3.5vw, 1.2rem); font-weight: 600; text-align: center; } .product-price { color: #4ade80; margin: 0; font-size: clamp(1.1rem, 4vw, 1.4rem); font-weight: bold; text-align: center; } .product-stock { color: var(--text-muted); font-size: clamp(0.85rem, 2.5vw, 1rem); text-align: center; padding: clamp(0.6rem, 2vw, 0.8rem); background-color: var(--bg); border-top: 1px solid var(--border); } .quick-add-section { padding: clamp(0.8rem, 3vw, 1rem); background-color: var(--bg); border-top: 1px solid var(--border); display: flex; flex-direction: column; gap: 0.6rem; } .quick-add-btn { width: 100%; padding: clamp(0.7rem, 2.5vw, 0.9rem) clamp(1rem, 3vw, 1.5rem); background: linear-gradient(135deg, #4ade80 0%, #22c55e 100%); color: #000; border: none; border-radius: 8px; font-size: clamp(0.9rem, 3vw, 1.05rem); font-weight: 700; cursor: pointer; transition: all 0.2s ease; text-transform: uppercase; letter-spacing: 0.5px; box-shadow: 0 2px 8px rgba(74, 222, 128, 0.3); } .quick-add-btn:hover { background: linear-gradient(135deg, #22c55e 0%, #16a34a 100%); transform: translateY(-2px); box-shadow: 0 4px 12px rgba(74, 222, 128, 0.4); } .quick-add-btn:active { transform: translateY(0); box-shadow: 0 1px 4px rgba(74, 222, 128, 0.3); } /* ===== BOUTON "AJOUTER RAPIDEMENT" PAR CATÉGORIE ===== */ /* Catégorie: weed&hash - VERT */ div[data-category="weed&hash"] .quick-add-btn { background: linear-gradient(135deg, #10b981 0%, #059669 100%); color: white; box-shadow: 0 2px 8px rgba(16, 185, 129, 0.4); } div[data-category="weed&hash"] .quick-add-btn:hover { background: linear-gradient(135deg, #059669 0%, #047857 100%); box-shadow: 0 4px 12px rgba(16, 185, 129, 0.5); } div[data-category="weed&hash"] .quick-add-btn:active { box-shadow: 0 1px 4px rgba(16, 185, 129, 0.4); } /* Catégorie: tous - VIOLET */ div[data-category="tous"] .quick-add-btn { background: linear-gradient(135deg, #9333ea 0%, #7e22ce 100%); color: white; box-shadow: 0 2px 8px rgba(147, 51, 234, 0.4); } div[data-category="tous"] .quick-add-btn:hover { background: linear-gradient(135deg, #7e22ce 0%, #6b21a8 100%); box-shadow: 0 4px 12px rgba(147, 51, 234, 0.5); } div[data-category="tous"] .quick-add-btn:active { box-shadow: 0 1px 4px rgba(147, 51, 234, 0.4); } /* Catégorie: zipette&co - BLANC CASSÉ */ div[data-category="zipette&co"] .quick-add-btn { background: linear-gradient(135deg, #f5f5f0 0%, #e8e8e0 100%); color: #1a1a1a; box-shadow: 0 2px 8px rgba(245, 245, 240, 0.4); } div[data-category="zipette&co"] .quick-add-btn:hover { background: linear-gradient(135deg, #e8e8e0 0%, #dcdcd0 100%); box-shadow: 0 4px 12px rgba(245, 245, 240, 0.5); } div[data-category="zipette&co"] .quick-add-btn:active { box-shadow: 0 1px 4px rgba(245, 245, 240, 0.4); } /* Catégorie: gros&semi - BLEU CIEL */ div[data-category="gros&semi"] .quick-add-btn { background: linear-gradient(135deg, #3dc2f7 0%, #0ea5e9 100%); color: white; box-shadow: 0 2px 8px rgba(61, 194, 247, 0.4); } div[data-category="gros&semi"] .quick-add-btn:hover { background: linear-gradient(135deg, #0ea5e9 0%, #0284c7 100%); box-shadow: 0 4px 12px rgba(61, 194, 247, 0.5); } div[data-category="gros&semi"] .quick-add-btn:active { box-shadow: 0 1px 4px rgba(61, 194, 247, 0.4); } .quick-add-btn.disabled { background: linear-gradient(135deg, #666 0%, #444 100%); cursor: not-allowed; opacity: 0.6; box-shadow: none; } .quick-add-btn.disabled:hover { transform: none; background: linear-gradient(135deg, #666 0%, #444 100%); } .quantity-select { width: 100%; padding: clamp(0.7rem, 2.5vw, 0.9rem); background-color: var(--surface-2); color: var(--text); border: 2px solid #4ade80; border-radius: 8px; font-size: clamp(0.9rem, 3vw, 1.05rem); font-weight: 600; cursor: pointer; transition: all 0.2s ease; appearance: none; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%234ade80' d='M6 9L1 4h10z'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 0.8rem center; padding-right: 2.5rem; } .quantity-select:hover { border-color: #22c55e; background-color: var(--surface); } .quantity-select:focus { outline: none; border-color: #22c55e; box-shadow: 0 0 0 3px rgba(74, 222, 128, 0.2); } /* ===== SELECT "CHOISIR UNE QUANTITÉ" PAR CATÉGORIE ===== */ /* Catégorie: weed&hash - VERT */ div[data-category="weed&hash"] .quantity-select { border-color: #10b981; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%2310b981' d='M6 9L1 4h10z'/%3E%3C/svg%3E"); } div[data-category="weed&hash"] .quantity-select:hover { border-color: #059669; background-color: var(--surface); } div[data-category="weed&hash"] .quantity-select:focus { border-color: #059669; box-shadow: 0 0 0 3px rgba(16, 185, 129, 0.3); } /* Catégorie: tous - VIOLET */ div[data-category="tous"] .quantity-select { border-color: #9333ea; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%239333ea' d='M6 9L1 4h10z'/%3E%3C/svg%3E"); } div[data-category="tous"] .quantity-select:hover { border-color: #7e22ce; background-color: var(--surface); } div[data-category="tous"] .quantity-select:focus { border-color: #7e22ce; box-shadow: 0 0 0 3px rgba(147, 51, 234, 0.3); } /* Catégorie: zipette&co - BLANC CASSÉ */ div[data-category="zipette&co"] .quantity-select { border-color: #f5f5f0; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23F5F5F0' d='M6 9L1 4h10z'/%3E%3C/svg%3E"); } div[data-category="zipette&co"] .quantity-select:hover { border-color: #e8e8e0; background-color: var(--surface); } div[data-category="zipette&co"] .quantity-select:focus { border-color: #e8e8e0; box-shadow: 0 0 0 3px rgba(245, 245, 240, 0.3); } /* Catégorie: gros&semi - BLEU CIEL */ div[data-category="gros&semi"] .quantity-select { border-color: #3dc2f7; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%233dc2f7' d='M6 9L1 4h10z'/%3E%3C/svg%3E"); } div[data-category="gros&semi"] .quantity-select:hover { border-color: #0ea5e9; background-color: var(--surface); } div[data-category="gros&semi"] .quantity-select:focus { border-color: #0ea5e9; box-shadow: 0 0 0 3px rgba(61, 194, 247, 0.3); } .quantity-select option { background-color: var(--surface-2); color: var(--text); padding: 0.5rem; } .success-message { width: 100%; padding: clamp(0.7rem, 2.5vw, 0.9rem); background: linear-gradient(135deg, #22c55e 0%, #16a34a 100%); color: white; border-radius: 8px; font-size: clamp(0.9rem, 3vw, 1.05rem); font-weight: 700; text-align: center; animation: successPulse 0.5s ease; } /* ===== MESSAGE DE SUCCÈS "✓ AJOUTÉ !" PAR CATÉGORIE ===== */ /* Catégorie: weed&hash - VERT */ div[data-category="weed&hash"] .success-message { background: linear-gradient(135deg, #10b981 0%, #059669 100%); color: white; } /* Catégorie: tous - VIOLET */ div[data-category="tous"] .success-message { background: linear-gradient(135deg, #9333ea 0%, #7e22ce 100%); color: white; } /* Catégorie: zipette&co - BLANC CASSÉ */ div[data-category="zipette&co"] .success-message { background: linear-gradient(135deg, #f5f5f0 0%, #e8e8e0 100%); color: #1a1a1a; } /* Catégorie: gros&semi - BLEU CIEL */ div[data-category="gros&semi"] .success-message { background: linear-gradient(135deg, #3dc2f7 0%, #0ea5e9 100%); color: white; } @keyframes successPulse { 0% { transform: scale(0.95); opacity: 0; } 50% { transform: scale(1.05); } 100% { transform: scale(1); opacity: 1; } } /* ===== ICÔNE MÉDIA (CAMÉRA) - CLIQUABLE ===== */ .media-indicator { position: absolute; top: 12px; right: 12px; background: rgba(0, 0, 0, 0.75); backdrop-filter: blur(8px); border-radius: 50%; width: 48px; height: 48px; min-width: 48px; min-height: 48px; display: flex; align-items: center; justify-content: center; overflow: visible; z-index: 3; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3); transition: all 0.3s ease; border: 2px solid rgba(255, 255, 255, 0.3); cursor: pointer; } .media-indicator:hover { background: rgba(0, 0, 0, 0.9); transform: scale(1.15); border-color: rgba(255, 255, 255, 0.5); } .media-indicator:active { transform: scale(1.05); } .media-indicator svg { color: #ffffff; width: 24px; height: 24px; min-width: 24px; min-height: 24px; flex-shrink: 0; animation: cameraPulse 2s ease-in-out infinite; } @keyframes cameraPulse { 0%, 100% { opacity: 1; transform: scale(1); } 50% { opacity: 0.7; transform: scale(1.1); } } /* Variantes par catégorie pour l'icône caméra */ div[data-category="weed&hash"] .media-indicator { background: rgba(16, 185, 129, 0.9); border-color: rgba(16, 185, 129, 0.5); } div[data-category="weed&hash"] .media-indicator:hover { background: rgba(16, 185, 129, 1); border-color: #10b981; } div[data-category="tous"] .media-indicator { background: rgba(147, 51, 234, 0.9); border-color: rgba(147, 51, 234, 0.5); } div[data-category="tous"] .media-indicator:hover { background: rgba(147, 51, 234, 1); border-color: #9333ea; } div[data-category="zipette&co"] .media-indicator { background: rgba(245, 245, 240, 0.9); border-color: rgba(245, 245, 240, 0.5); } div[data-category="zipette&co"] .media-indicator:hover { background: rgba(245, 245, 240, 1); border-color: #f5f5f0; } div[data-category="zipette&co"] .media-indicator svg { color: #1a1a1a; } div[data-category="gros&semi"] .media-indicator { background: rgba(61, 194, 247, 0.9); border-color: rgba(61, 194, 247, 0.5); } div[data-category="gros&semi"] .media-indicator:hover { background: rgba(61, 194, 247, 1); border-color: #3dc2f7; } /* ===== BOUTON DÉTAILS ===== */ .details-button { position: absolute; bottom: 12px; left: 50%; transform: translateX(-50%); background: rgba(0, 0, 0, 0.85); backdrop-filter: blur(10px); color: white; border: 2px solid rgba(255, 255, 255, 0.3); border-radius: 25px; padding: 8px 20px; font-size: 14px; font-weight: 600; cursor: pointer; display: flex; align-items: center; gap: 8px; z-index: 4; transition: all 0.3s ease; opacity: 0; pointer-events: none; } .product-image-container:hover .details-button { opacity: 1; pointer-events: auto; } .details-button:hover { background: rgba(255, 255, 255, 0.95); color: #1a1a1a; border-color: white; transform: translateX(-50%) scale(1.05); } .details-button:active { transform: translateX(-50%) scale(0.95); } .details-button i { font-size: 16px; } .details-button span { font-size: 14px; letter-spacing: 0.5px; } /* Variantes par catégorie pour le bouton détails */ div[data-category="weed&hash"] .details-button:hover { background: #10b981; color: white; border-color: #10b981; } div[data-category="tous"] .details-button:hover { background: #9333ea; color: white; border-color: #9333ea; } div[data-category="zipette&co"] .details-button:hover { background: #f5f5f0; color: #1a1a1a; border-color: #f5f5f0; } div[data-category="gros&semi"] .details-button:hover { background: #3dc2f7; color: white; border-color: #3dc2f7; } /* ===== MODAL VIDÉO ===== */ .video-modal { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0, 0, 0, 0.95); backdrop-filter: blur(10px); z-index: 9999; display: flex; align-items: center; justify-content: center; padding: 8px; animation: fadeIn 0.3s ease; } @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } .video-modal-content { position: relative; width: 100%; max-width: 98vw; max-height: calc(100vh - 16px); display: flex; flex-direction: column; background: #000; border-radius: 10px; overflow: hidden; box-shadow: 0 10px 40px rgba(0, 0, 0, 0.5); animation: scaleIn 0.3s ease; } @keyframes scaleIn { from { transform: scale(0.9); opacity: 0; } to { transform: scale(1); opacity: 1; } } .video-close-btn { position: absolute; top: 15px; right: 15px; background: rgba(255, 255, 255, 0.1); backdrop-filter: blur(10px); border: 2px solid rgba(255, 255, 255, 0.3); color: white; width: 48px; height: 48px; min-width: 48px; min-height: 48px; border-radius: 50%; display: flex; align-items: center; justify-content: center; overflow: visible; cursor: pointer; z-index: 10; transition: all 0.3s ease; } .video-close-btn:hover { background: rgba(255, 255, 255, 0.2); border-color: rgba(255, 255, 255, 0.5); transform: scale(1.1); } .video-close-btn:active { transform: scale(0.95); } .video-close-btn svg { width: 24px; height: 24px; min-width: 24px; min-height: 24px; flex-shrink: 0; } .video-player { width: 100%; height: auto; max-height: calc(100vh - 16px); display: block; object-fit: contain; background: #000; } /* ===== RESPONSIVE ===== */ /* Version mobile - bouton détails toujours visible */ @media (max-width: 768px) { .details-button { opacity: 1; pointer-events: auto; padding: 6px 16px; font-size: 13px; } .details-button i { font-size: 14px; } .details-button span { font-size: 13px; } .video-modal { padding: 0; } .video-modal-content { max-width: 100%; max-height: 100vh; border-radius: 0; } .video-close-btn { top: 10px; right: 10px; width: 44px; height: 44px; min-width: 44px; min-height: 44px; } .video-close-btn svg { width: 20px; height: 20px; min-width: 20px; min-height: 20px; } .video-player { max-height: 100vh; } } /* Petits écrans */ @media (max-width: 480px) { .details-button { padding: 5px 14px; font-size: 12px; gap: 6px; } .details-button i { font-size: 13px; } .details-button span { font-size: 12px; } .media-indicator { width: 44px; height: 44px; min-width: 44px; min-height: 44px; top: 10px; right: 10px; } .media-indicator svg { width: 20px; height: 20px; min-width: 20px; min-height: 20px; } } /* Désactiver hover sur tactile */ @media (hover: none) { .product-card:hover { transform: none; background-color: var(--surface); } .quick-add-btn:hover { transform: none; } }