/* ===================================================== CLALMOBILE PRODUCT CARDS v1.0 Luxury Feel with Subtle Animations ===================================================== */ /* ===== PRODUCT CARD BASE — Premium ===== */ .product-card { display: flex; flex-direction: column; background: var(--bg-2); border: 1px solid var(--stroke); border-radius: var(--r-lg); overflow: hidden; transition: all 0.35s cubic-bezier(0.16, 1, 0.3, 1); position: relative; box-shadow: 0 4px 16px rgba(0,0,0,.2); } @media (min-width: 768px) { .product-card { border-radius: var(--r-2xl); } } .product-card:hover { border-color: var(--stroke-hover); box-shadow: var(--shadow-card-hover, 0 16px 48px rgba(0,0,0,.5), 0 0 24px rgba(225,29,72,.08)); transform: translateY(-4px); } /* Clickable card link overlay */ .product-card-link { position: absolute; inset: 0; z-index: 1; } /* ===== PRODUCT IMAGE ===== */ .product-card-image { position: relative; aspect-ratio: 4 / 3; max-height: 140px; background: linear-gradient(180deg, var(--bg-3) 0%, var(--bg-2) 100%); overflow: hidden; } @media (min-width: 480px) { .product-card-image { max-height: 160px; } } @media (min-width: 768px) { .product-card-image { aspect-ratio: 1 / 1; max-height: none; } } .product-card-image img { width: 100%; height: 100%; object-fit: contain; padding: var(--space-2); transition: transform 0.4s cubic-bezier(0.16, 1, 0.3, 1); } @media (min-width: 768px) { .product-card-image img { padding: var(--space-5); } } .product-card:hover .product-card-image img { transform: scale(1.06); } /* Placeholder when no image */ .product-card-image.no-image { display: flex; align-items: center; justify-content: center; } .product-card-image.no-image::after { content: ""; width: 48px; height: 48px; background: var(--muted-2); mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2'%3E%3Crect x='3' y='3' width='18' height='18' rx='2' ry='2'/%3E%3Ccircle cx='8.5' cy='8.5' r='1.5'/%3E%3Cpolyline points='21 15 16 10 5 21'/%3E%3C/svg%3E") center / contain no-repeat; opacity: 0.3; } /* ===== BADGES ===== */ .product-badges { position: absolute; top: var(--space-2); left: var(--space-2); right: var(--space-2); display: flex; flex-wrap: wrap; gap: var(--space-1); z-index: 2; } [dir="rtl"] .product-badges { left: var(--space-2); right: var(--space-2); } .product-badge { display: inline-flex; align-items: center; padding: var(--space-1) var(--space-2); font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.5px; border-radius: var(--r-sm); } .product-badge-sale { background: var(--accent); color: white; } .product-badge-new { background: var(--accent-2); color: white; } .product-badge-hot { background: linear-gradient(135deg, #f59e0b, #ef4444); color: white; } .product-badge-out { background: var(--muted-2); color: var(--text-3); } /* ===== PRODUCT INFO ===== */ .product-card-info { display: flex; flex-direction: column; gap: 2px; padding: 6px 6px 8px; flex: 1; } @media (min-width: 768px) { .product-card-info { gap: var(--space-2); padding: var(--space-3) var(--space-4) var(--space-4); } } /* Brand */ .product-card-brand { font-size: var(--text-xs); color: var(--muted-1); font-weight: 500; text-transform: uppercase; letter-spacing: 0.5px; } /* Title */ .product-card-title { font-size: 11px; font-weight: 600; color: var(--text-1); line-height: 1.35; display: -webkit-box; line-clamp: 2; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; letter-spacing: 0.2px; } @media (min-width: 768px) { .product-card-title { font-size: var(--text-sm); line-height: var(--leading-snug); } } /* Specs/Features */ .product-card-specs { display: flex; flex-wrap: wrap; gap: var(--space-1); } .product-spec-tag { display: inline-flex; align-items: center; padding: 2px 6px; background: var(--bg-3); border-radius: var(--r-sm); font-size: 10px; color: var(--text-3); } /* ===== PRICING ===== */ .product-card-pricing { display: flex; flex-direction: column; gap: var(--space-1); margin-top: auto; padding-top: var(--space-2); } .product-price-row { display: flex; align-items: baseline; gap: var(--space-2); } .product-price { font-size: var(--text-lg); font-weight: 800; color: var(--text-1); letter-spacing: -0.02em; } @media (min-width: 768px) { .product-price { font-size: var(--text-xl); } } .product-price-original { font-size: var(--text-sm); color: var(--muted-1); text-decoration: line-through; } .product-price-discount { font-size: var(--text-xs); font-weight: 700; color: var(--accent); background: rgba(225, 29, 72, 0.1); padding: 2px 6px; border-radius: var(--r-sm); } /* Monthly payment */ .product-monthly { font-size: var(--text-xs); color: var(--muted-1); } .product-monthly strong { color: var(--text-2); font-weight: 600; } /* ===== CARD ACTIONS ===== */ .product-card-actions { display: flex; gap: var(--space-2); padding: 0 var(--space-3) var(--space-3); position: relative; z-index: 2; } @media (min-width: 768px) { .product-card-actions { padding: 0 var(--space-4) var(--space-4); } } .product-card-btn { flex: 1; display: flex; align-items: center; justify-content: center; gap: var(--space-2); height: var(--btn-height-sm); padding: 0 var(--space-3); font-size: var(--text-sm); font-weight: 600; border-radius: var(--r-lg); border: none; cursor: pointer; transition: all var(--duration-fast) var(--ease-out); } .product-card-btn-primary { background: var(--accent); color: white; } .product-card-btn-primary:hover { background: var(--accent-hover); } .product-card-btn-secondary { background: var(--bg-3); color: var(--text-1); } .product-card-btn-secondary:hover { background: var(--muted-2); } .product-card-btn svg { width: 16px; height: 16px; } /* ===== WISHLIST BUTTON ===== */ .product-wishlist-btn { position: absolute; top: var(--space-2); right: var(--space-2); width: 36px; height: 36px; display: flex; align-items: center; justify-content: center; background: var(--bg-1); border: none; border-radius: var(--r-full); cursor: pointer; color: var(--muted-1); z-index: 3; transition: all var(--duration-fast) var(--ease-out); box-shadow: var(--shadow-sm); } [dir="rtl"] .product-wishlist-btn { right: auto; left: var(--space-2); } .product-wishlist-btn:hover { color: var(--accent); transform: scale(1.1); } .product-wishlist-btn.active { color: var(--accent); } .product-wishlist-btn.active svg { fill: var(--accent); } .product-wishlist-btn svg { width: 20px; height: 20px; } /* ===== QUICK VIEW BUTTON ===== */ .product-quickview-btn { position: absolute; bottom: var(--space-2); left: 50%; transform: translateX(-50%) translateY(10px); opacity: 0; padding: var(--space-2) var(--space-4); background: var(--bg-1); border: none; border-radius: var(--r-full); cursor: pointer; color: var(--text-1); font-size: var(--text-xs); font-weight: 600; z-index: 3; transition: all var(--duration-fast) var(--ease-out); box-shadow: var(--shadow-md); white-space: nowrap; } .product-card:hover .product-quickview-btn { opacity: 1; transform: translateX(-50%) translateY(0); } .product-quickview-btn:hover { background: var(--accent); color: white; } /* ===== ACCESSORY CARD (Smaller variant) ===== */ .accessory-card { display: flex; flex-direction: column; background: var(--bg-2); border: 1px solid var(--stroke); border-radius: var(--r-lg); overflow: hidden; transition: all 0.35s cubic-bezier(0.16, 1, 0.3, 1); position: relative; } .accessory-card .product-card-image { aspect-ratio: 4 / 3; } .accessory-card .product-card-image img { padding: var(--space-3); } .accessory-card .product-card-info { padding: var(--space-2) var(--space-3); } .accessory-card .product-card-title { font-size: var(--text-sm); line-clamp: 1; -webkit-line-clamp: 1; } .accessory-card .product-price { font-size: var(--text-base); } /* ===== SKELETON LOADING ===== */ .product-card-skeleton { background: var(--bg-2); border: 1px solid var(--border); border-radius: var(--r-xl); overflow: hidden; } .skeleton-box { background: linear-gradient( 90deg, var(--bg-3) 25%, var(--muted-2) 50%, var(--bg-3) 75% ); background-size: 200% 100%; animation: skeleton-shimmer 1.5s ease-in-out infinite; } @keyframes skeleton-shimmer { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } } .product-card-skeleton .product-card-image { aspect-ratio: 1 / 1; } .product-card-skeleton .product-card-info { padding: var(--space-4); } .product-card-skeleton .skeleton-title { height: 20px; border-radius: var(--r-sm); margin-bottom: var(--space-2); } .product-card-skeleton .skeleton-price { height: 28px; width: 60%; border-radius: var(--r-sm); } /* ===== HORIZONTAL CARD (for cart/checkout) ===== */ .product-card-horizontal { display: flex; flex-direction: row; background: var(--bg-2); border: 1px solid var(--border); border-radius: var(--r-xl); overflow: hidden; gap: var(--space-3); padding: var(--space-3); } .product-card-horizontal .product-card-image { width: 100px; min-width: 100px; aspect-ratio: 1 / 1; border-radius: var(--r-lg); } .product-card-horizontal .product-card-info { flex: 1; padding: 0; gap: var(--space-1); } .product-card-horizontal .product-card-title { font-size: var(--text-sm); } .product-card-horizontal .product-price { font-size: var(--text-base); } /* ===== COLOR VARIANTS ===== */ .product-colors { display: flex; gap: var(--space-1); margin-top: var(--space-1); } .product-color-swatch { width: 16px; height: 16px; border-radius: var(--r-full); border: 2px solid var(--bg-1); cursor: pointer; transition: transform var(--duration-fast) var(--ease-out); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.1); } .product-color-swatch:hover { transform: scale(1.2); } .product-color-swatch.active { box-shadow: 0 0 0 2px var(--accent); } /* ===== OUT OF STOCK STATE ===== */ .product-card.out-of-stock { opacity: 0.7; } .product-card.out-of-stock .product-card-image::after { content: ""; position: absolute; inset: 0; background: rgba(0, 0, 0, 0.3); } .product-card.out-of-stock .product-card-btn-primary { background: var(--muted-2); color: var(--text-3); cursor: not-allowed; } /* Mobile styles now in /css/mobile-premium.css */