/* Cards Styles */ .aibui-cards { margin: 20px 0; } .aibui-cards-container { display: grid; gap: 20px; max-width: 1200px; margin: 0 auto; padding: 0 20px; width: 100%; box-sizing: border-box; } .aibui-single-card { background-color: #ffffff; border-radius: 12px; padding: 20px; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); border: 1px solid #e5e7eb; position: relative; transition: transform 0.2s ease, box-shadow 0.2s ease; display: flex; flex-direction: column; width: 100%; box-sizing: border-box; overflow: hidden; } .aibui-single-card:hover { transform: translateY(-2px); box-shadow: 0 8px 25px rgba(0, 0, 0, 0.15); } /* Card Badge */ .aibui-card-badge { position: absolute; top: 12px; right: 12px; padding: 4px 8px; border-radius: 4px; font-size: 12px; font-weight: 600; text-transform: uppercase; color: #ffffff; z-index: 2; } /* Card Image */ .aibui-card-image { width: 100%; height: 200px; background-size: cover; background-position: center; border-radius: 8px; margin-bottom: 16px; overflow: hidden; } .aibui-card-image img { width: 100%; height: 100%; object-fit: cover; } /* Card Content */ .aibui-card-title { font-size: 18px; font-weight: 600; margin: 0 0 8px 0; color: #111827; line-height: 1.4; } .aibui-card-description { font-size: 14px; color: #6b7280; margin: 0 0 16px 0; line-height: 1.5; flex-grow: 1; } /* Card Pricing */ .aibui-card-pricing { display: flex; align-items: center; gap: 8px; margin-bottom: 16px; } .aibui-card-price { font-size: 20px; font-weight: 700; color: #111827; } .aibui-card-original-price { font-size: 14px; color: #9ca3af; text-decoration: line-through; } /* Card Button */ .aibui-card-button { width: 100%; padding: 12px 16px; border-radius: 8px; border: none; font-size: 14px; font-weight: 600; cursor: pointer; transition: all 0.2s ease; text-decoration: none; text-align: center; display: block; box-sizing: border-box; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } .aibui-card-button:hover { opacity: 0.9; transform: translateY(-1px); } .aibui-card-button:active { transform: translateY(0); } /* Responsive Design */ @media (max-width: 1024px) { .aibui-cards-container { grid-template-columns: repeat(2, 1fr) !important; } } @media (max-width: 768px) { .aibui-cards-container { grid-template-columns: 1fr !important; padding: 0 15px; gap: 15px; } .aibui-single-card { padding: 16px; } .aibui-card-image { height: 180px; } .aibui-card-title { font-size: 16px; } .aibui-card-price { font-size: 18px; } } @media (max-width: 480px) { .aibui-cards-container { padding: 0 10px; } .aibui-single-card { padding: 12px; } .aibui-card-image { height: 160px; margin-bottom: 12px; } .aibui-card-title { font-size: 15px; margin-bottom: 6px; } .aibui-card-description { font-size: 13px; margin-bottom: 12px; } .aibui-card-pricing { margin-bottom: 12px; } .aibui-card-price { font-size: 16px; } .aibui-card-button { padding: 10px 12px; font-size: 13px; } } /* Editor specific styles */ .editor-styles-wrapper .aibui-cards-container { padding: 0; } .editor-styles-wrapper .aibui-single-card { background-color: #ffffff; border: 1px solid #e5e7eb; } /* Grid variations */ .aibui-cards-container[style*="grid-template-columns: repeat(1, 1fr)"] { grid-template-columns: 1fr !important; } .aibui-cards-container[style*="grid-template-columns: repeat(2, 1fr)"] { grid-template-columns: repeat(2, 1fr) !important; } .aibui-cards-container[style*="grid-template-columns: repeat(3, 1fr)"] { grid-template-columns: repeat(3, 1fr) !important; } .aibui-cards-container[style*="grid-template-columns: repeat(4, 1fr)"] { grid-template-columns: repeat(4, 1fr) !important; } /* Hover effects for better UX */ .aibui-single-card:hover .aibui-card-button { transform: translateY(-1px); } /* Focus states for accessibility */ .aibui-card-button:focus { outline: 2px solid #4f46e5; outline-offset: 2px; } /* Loading state for images */ .aibui-card-image:empty { background-color: #f3f4f6; display: flex; align-items: center; justify-content: center; color: #9ca3af; font-size: 14px; } .aibui-card-image:empty::before { content: "No image"; } /* Hide "No image" text when background image is present */ .aibui-card-image[style*="background-image"]::before { display: none; }