All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
New modular component widgets: - Discount Ribbon (ribbon/pill/text styles) - Strain Badge (Sativa/Indica/Hybrid colored pills) - THC/CBD Meter (progress bars or badges) - Effects Display (styled chips with icons) - Price Block (original + sale price) - Cart Button (styled CTA linking to menu) - Stock Indicator (in/out of stock badges) - Product Image + Badges (image with overlays) New card template: - Premium Product Card (ready-to-use template) Extended dynamic tags (30+ total): - Discount %, Strain Badge, THC/CBD Badge - Effects Chips, Terpenes, Price Display - Menu URL, Stock Status, and more New files: - assets/css/components.css - includes/effects-icons.php (SVG icons) - 10 new widget files - dynamic-tags-extended.php Branding updated to "CannaiQ" throughout. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
741 lines
17 KiB
CSS
741 lines
17 KiB
CSS
/**
|
|
* CannaIQ Modular Components CSS
|
|
*
|
|
* Styles for the modular component library.
|
|
* Each component is independently styled and composable.
|
|
*
|
|
* @package CannaIQ_Menus
|
|
* @since 2.0.0
|
|
*/
|
|
|
|
/* ==========================================================================
|
|
CSS Variables (Design Tokens)
|
|
========================================================================== */
|
|
|
|
:root {
|
|
/* Strain Colors */
|
|
--cannaiq-sativa: #22c55e;
|
|
--cannaiq-indica: #8b5cf6;
|
|
--cannaiq-hybrid: #f97316;
|
|
|
|
/* UI Colors */
|
|
--cannaiq-discount: #ef4444;
|
|
--cannaiq-discount-bg: #fef2f2;
|
|
--cannaiq-sale: #dc2626;
|
|
--cannaiq-stock-in: #16a34a;
|
|
--cannaiq-stock-out: #9ca3af;
|
|
--cannaiq-price-original: #9ca3af;
|
|
--cannaiq-price-sale: #dc2626;
|
|
|
|
/* Neutrals */
|
|
--cannaiq-text-primary: #1f2937;
|
|
--cannaiq-text-secondary: #6b7280;
|
|
--cannaiq-text-muted: #9ca3af;
|
|
--cannaiq-border: #e5e7eb;
|
|
--cannaiq-bg-light: #f9fafb;
|
|
|
|
/* Spacing */
|
|
--cannaiq-space-xs: 0.25rem;
|
|
--cannaiq-space-sm: 0.5rem;
|
|
--cannaiq-space-md: 0.75rem;
|
|
--cannaiq-space-lg: 1rem;
|
|
--cannaiq-space-xl: 1.5rem;
|
|
|
|
/* Border Radius */
|
|
--cannaiq-radius-sm: 0.25rem;
|
|
--cannaiq-radius-md: 0.375rem;
|
|
--cannaiq-radius-lg: 0.5rem;
|
|
--cannaiq-radius-xl: 0.75rem;
|
|
--cannaiq-radius-full: 9999px;
|
|
|
|
/* Shadows */
|
|
--cannaiq-shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);
|
|
--cannaiq-shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1);
|
|
--cannaiq-shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1);
|
|
}
|
|
|
|
/* ==========================================================================
|
|
Discount Ribbon
|
|
========================================================================== */
|
|
|
|
.cannaiq-discount-ribbon {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
font-weight: 700;
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.025em;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
/* Ribbon Style - Corner positioned */
|
|
.cannaiq-discount-ribbon--ribbon {
|
|
position: absolute;
|
|
top: 0;
|
|
left: 0;
|
|
background: var(--cannaiq-discount);
|
|
color: white;
|
|
padding: var(--cannaiq-space-xs) var(--cannaiq-space-md);
|
|
font-size: 0.75rem;
|
|
border-bottom-right-radius: var(--cannaiq-radius-md);
|
|
z-index: 10;
|
|
}
|
|
|
|
/* Pill Style */
|
|
.cannaiq-discount-ribbon--pill {
|
|
background: var(--cannaiq-discount);
|
|
color: white;
|
|
padding: var(--cannaiq-space-xs) var(--cannaiq-space-sm);
|
|
font-size: 0.75rem;
|
|
border-radius: var(--cannaiq-radius-full);
|
|
}
|
|
|
|
/* Text Style */
|
|
.cannaiq-discount-ribbon--text {
|
|
color: var(--cannaiq-discount);
|
|
font-size: 0.875rem;
|
|
}
|
|
|
|
/* Sizes */
|
|
.cannaiq-discount-ribbon--small {
|
|
font-size: 0.625rem;
|
|
padding: 2px var(--cannaiq-space-xs);
|
|
}
|
|
|
|
.cannaiq-discount-ribbon--large {
|
|
font-size: 0.875rem;
|
|
padding: var(--cannaiq-space-sm) var(--cannaiq-space-lg);
|
|
}
|
|
|
|
/* ==========================================================================
|
|
Strain Badge
|
|
========================================================================== */
|
|
|
|
.cannaiq-strain-badge {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: var(--cannaiq-space-xs);
|
|
font-weight: 600;
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.05em;
|
|
border-radius: var(--cannaiq-radius-full);
|
|
}
|
|
|
|
/* Pill Style */
|
|
.cannaiq-strain-badge--pill {
|
|
padding: var(--cannaiq-space-xs) var(--cannaiq-space-sm);
|
|
font-size: 0.625rem;
|
|
}
|
|
|
|
/* Text Style */
|
|
.cannaiq-strain-badge--text {
|
|
padding: 0;
|
|
font-size: 0.75rem;
|
|
}
|
|
|
|
/* Strain Type Colors */
|
|
.cannaiq-strain-badge--sativa {
|
|
background: var(--cannaiq-sativa);
|
|
color: white;
|
|
}
|
|
|
|
.cannaiq-strain-badge--sativa.cannaiq-strain-badge--text {
|
|
background: transparent;
|
|
color: var(--cannaiq-sativa);
|
|
}
|
|
|
|
.cannaiq-strain-badge--indica {
|
|
background: var(--cannaiq-indica);
|
|
color: white;
|
|
}
|
|
|
|
.cannaiq-strain-badge--indica.cannaiq-strain-badge--text {
|
|
background: transparent;
|
|
color: var(--cannaiq-indica);
|
|
}
|
|
|
|
.cannaiq-strain-badge--hybrid {
|
|
background: var(--cannaiq-hybrid);
|
|
color: white;
|
|
}
|
|
|
|
.cannaiq-strain-badge--hybrid.cannaiq-strain-badge--text {
|
|
background: transparent;
|
|
color: var(--cannaiq-hybrid);
|
|
}
|
|
|
|
/* Sizes */
|
|
.cannaiq-strain-badge--small {
|
|
font-size: 0.5rem;
|
|
padding: 2px var(--cannaiq-space-xs);
|
|
}
|
|
|
|
.cannaiq-strain-badge--large {
|
|
font-size: 0.75rem;
|
|
padding: var(--cannaiq-space-sm) var(--cannaiq-space-md);
|
|
}
|
|
|
|
/* ==========================================================================
|
|
THC/CBD Badge
|
|
========================================================================== */
|
|
|
|
.cannaiq-potency-badge {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: var(--cannaiq-space-xs);
|
|
font-weight: 600;
|
|
}
|
|
|
|
/* Badge Style */
|
|
.cannaiq-potency-badge--badge {
|
|
background: var(--cannaiq-bg-light);
|
|
border: 1px solid var(--cannaiq-border);
|
|
padding: var(--cannaiq-space-xs) var(--cannaiq-space-sm);
|
|
border-radius: var(--cannaiq-radius-md);
|
|
font-size: 0.75rem;
|
|
}
|
|
|
|
/* Pill Style */
|
|
.cannaiq-potency-badge--pill {
|
|
background: var(--cannaiq-text-primary);
|
|
color: white;
|
|
padding: var(--cannaiq-space-xs) var(--cannaiq-space-sm);
|
|
border-radius: var(--cannaiq-radius-full);
|
|
font-size: 0.75rem;
|
|
}
|
|
|
|
/* Text Style */
|
|
.cannaiq-potency-badge--text {
|
|
color: var(--cannaiq-text-secondary);
|
|
font-size: 0.875rem;
|
|
}
|
|
|
|
.cannaiq-potency-badge__label {
|
|
color: var(--cannaiq-text-muted);
|
|
font-size: 0.625rem;
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.05em;
|
|
}
|
|
|
|
.cannaiq-potency-badge__value {
|
|
font-weight: 700;
|
|
}
|
|
|
|
/* ==========================================================================
|
|
THC/CBD Meter (Visual Progress Bar)
|
|
========================================================================== */
|
|
|
|
.cannaiq-potency-meter {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: var(--cannaiq-space-xs);
|
|
}
|
|
|
|
.cannaiq-potency-meter__header {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
font-size: 0.75rem;
|
|
}
|
|
|
|
.cannaiq-potency-meter__label {
|
|
font-weight: 600;
|
|
color: var(--cannaiq-text-secondary);
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.05em;
|
|
}
|
|
|
|
.cannaiq-potency-meter__value {
|
|
font-weight: 700;
|
|
color: var(--cannaiq-text-primary);
|
|
}
|
|
|
|
.cannaiq-potency-meter__bar {
|
|
height: 6px;
|
|
background: var(--cannaiq-border);
|
|
border-radius: var(--cannaiq-radius-full);
|
|
overflow: hidden;
|
|
}
|
|
|
|
.cannaiq-potency-meter__fill {
|
|
height: 100%;
|
|
border-radius: var(--cannaiq-radius-full);
|
|
transition: width 0.3s ease;
|
|
}
|
|
|
|
.cannaiq-potency-meter--thc .cannaiq-potency-meter__fill {
|
|
background: linear-gradient(90deg, #22c55e 0%, #16a34a 100%);
|
|
}
|
|
|
|
.cannaiq-potency-meter--cbd .cannaiq-potency-meter__fill {
|
|
background: linear-gradient(90deg, #3b82f6 0%, #2563eb 100%);
|
|
}
|
|
|
|
/* ==========================================================================
|
|
Effects Display
|
|
========================================================================== */
|
|
|
|
.cannaiq-effects-container {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: var(--cannaiq-space-sm);
|
|
}
|
|
|
|
.cannaiq-effect-chip {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: var(--cannaiq-space-xs);
|
|
background: color-mix(in srgb, var(--effect-color, #6b7280) 15%, white);
|
|
border: 1px solid color-mix(in srgb, var(--effect-color, #6b7280) 30%, white);
|
|
border-radius: var(--cannaiq-radius-full);
|
|
padding: var(--cannaiq-space-xs) var(--cannaiq-space-sm);
|
|
font-size: 0.75rem;
|
|
font-weight: 500;
|
|
color: var(--cannaiq-text-primary);
|
|
transition: transform 0.15s ease, box-shadow 0.15s ease;
|
|
}
|
|
|
|
.cannaiq-effect-chip:hover {
|
|
transform: translateY(-1px);
|
|
box-shadow: var(--cannaiq-shadow-sm);
|
|
}
|
|
|
|
.cannaiq-effect-chip svg {
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.cannaiq-effect-chip__label {
|
|
white-space: nowrap;
|
|
}
|
|
|
|
/* Effect Chip Sizes */
|
|
.cannaiq-effect-chip--small {
|
|
padding: 2px var(--cannaiq-space-xs);
|
|
font-size: 0.625rem;
|
|
gap: 2px;
|
|
}
|
|
|
|
.cannaiq-effect-chip--large {
|
|
padding: var(--cannaiq-space-sm) var(--cannaiq-space-md);
|
|
font-size: 0.875rem;
|
|
}
|
|
|
|
/* ==========================================================================
|
|
Terpene Profile
|
|
========================================================================== */
|
|
|
|
.cannaiq-terpenes {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: var(--cannaiq-space-sm);
|
|
}
|
|
|
|
.cannaiq-terpenes--chips {
|
|
flex-direction: row;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.cannaiq-terpene-chip {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: var(--cannaiq-space-xs);
|
|
background: var(--cannaiq-bg-light);
|
|
border: 1px solid var(--cannaiq-border);
|
|
border-radius: var(--cannaiq-radius-full);
|
|
padding: var(--cannaiq-space-xs) var(--cannaiq-space-sm);
|
|
font-size: 0.75rem;
|
|
}
|
|
|
|
.cannaiq-terpene-chip__name {
|
|
font-weight: 500;
|
|
color: var(--cannaiq-text-primary);
|
|
}
|
|
|
|
.cannaiq-terpene-chip__percent {
|
|
color: var(--cannaiq-text-secondary);
|
|
}
|
|
|
|
/* Terpene List Style */
|
|
.cannaiq-terpenes--list .cannaiq-terpene-item {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
padding: var(--cannaiq-space-xs) 0;
|
|
border-bottom: 1px solid var(--cannaiq-border);
|
|
}
|
|
|
|
.cannaiq-terpenes--list .cannaiq-terpene-item:last-child {
|
|
border-bottom: none;
|
|
}
|
|
|
|
/* ==========================================================================
|
|
Price Block
|
|
========================================================================== */
|
|
|
|
.cannaiq-price-block {
|
|
display: flex;
|
|
align-items: baseline;
|
|
gap: var(--cannaiq-space-sm);
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.cannaiq-price-block--stacked {
|
|
flex-direction: column;
|
|
align-items: flex-start;
|
|
gap: var(--cannaiq-space-xs);
|
|
}
|
|
|
|
.cannaiq-price-block__original {
|
|
color: var(--cannaiq-price-original);
|
|
text-decoration: line-through;
|
|
font-size: 0.875rem;
|
|
}
|
|
|
|
.cannaiq-price-block__sale {
|
|
color: var(--cannaiq-price-sale);
|
|
font-weight: 700;
|
|
font-size: 1.25rem;
|
|
}
|
|
|
|
.cannaiq-price-block__regular {
|
|
color: var(--cannaiq-text-primary);
|
|
font-weight: 700;
|
|
font-size: 1.25rem;
|
|
}
|
|
|
|
.cannaiq-price-block__weight {
|
|
color: var(--cannaiq-text-muted);
|
|
font-size: 0.875rem;
|
|
}
|
|
|
|
/* Price Sizes */
|
|
.cannaiq-price-block--small .cannaiq-price-block__sale,
|
|
.cannaiq-price-block--small .cannaiq-price-block__regular {
|
|
font-size: 1rem;
|
|
}
|
|
|
|
.cannaiq-price-block--small .cannaiq-price-block__original {
|
|
font-size: 0.75rem;
|
|
}
|
|
|
|
.cannaiq-price-block--large .cannaiq-price-block__sale,
|
|
.cannaiq-price-block--large .cannaiq-price-block__regular {
|
|
font-size: 1.5rem;
|
|
}
|
|
|
|
/* ==========================================================================
|
|
Cart Button
|
|
========================================================================== */
|
|
|
|
.cannaiq-cart-button {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
gap: var(--cannaiq-space-sm);
|
|
padding: var(--cannaiq-space-md) var(--cannaiq-space-xl);
|
|
font-weight: 600;
|
|
font-size: 0.875rem;
|
|
text-decoration: none;
|
|
border-radius: var(--cannaiq-radius-md);
|
|
cursor: pointer;
|
|
transition: all 0.15s ease;
|
|
border: 2px solid transparent;
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.025em;
|
|
}
|
|
|
|
/* Solid Style */
|
|
.cannaiq-cart-button--solid {
|
|
background: var(--cannaiq-text-primary);
|
|
color: white;
|
|
border-color: var(--cannaiq-text-primary);
|
|
}
|
|
|
|
.cannaiq-cart-button--solid:hover {
|
|
background: #374151;
|
|
border-color: #374151;
|
|
transform: translateY(-1px);
|
|
box-shadow: var(--cannaiq-shadow-md);
|
|
}
|
|
|
|
/* Outline Style */
|
|
.cannaiq-cart-button--outline {
|
|
background: transparent;
|
|
color: var(--cannaiq-text-primary);
|
|
border-color: var(--cannaiq-text-primary);
|
|
}
|
|
|
|
.cannaiq-cart-button--outline:hover {
|
|
background: var(--cannaiq-text-primary);
|
|
color: white;
|
|
}
|
|
|
|
/* Full Width */
|
|
.cannaiq-cart-button--full {
|
|
width: 100%;
|
|
}
|
|
|
|
/* Sizes */
|
|
.cannaiq-cart-button--small {
|
|
padding: var(--cannaiq-space-sm) var(--cannaiq-space-md);
|
|
font-size: 0.75rem;
|
|
}
|
|
|
|
.cannaiq-cart-button--large {
|
|
padding: var(--cannaiq-space-lg) var(--cannaiq-space-xl);
|
|
font-size: 1rem;
|
|
}
|
|
|
|
/* ==========================================================================
|
|
Stock Indicator
|
|
========================================================================== */
|
|
|
|
.cannaiq-stock-indicator {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: var(--cannaiq-space-xs);
|
|
font-size: 0.75rem;
|
|
font-weight: 500;
|
|
}
|
|
|
|
.cannaiq-stock-indicator--in-stock {
|
|
color: var(--cannaiq-stock-in);
|
|
}
|
|
|
|
.cannaiq-stock-indicator--out-of-stock {
|
|
color: var(--cannaiq-stock-out);
|
|
}
|
|
|
|
/* Badge Style */
|
|
.cannaiq-stock-indicator--badge {
|
|
padding: var(--cannaiq-space-xs) var(--cannaiq-space-sm);
|
|
border-radius: var(--cannaiq-radius-md);
|
|
}
|
|
|
|
.cannaiq-stock-indicator--badge.cannaiq-stock-indicator--in-stock {
|
|
background: #dcfce7;
|
|
}
|
|
|
|
.cannaiq-stock-indicator--badge.cannaiq-stock-indicator--out-of-stock {
|
|
background: #f3f4f6;
|
|
}
|
|
|
|
/* Dot Indicator */
|
|
.cannaiq-stock-indicator__dot {
|
|
width: 8px;
|
|
height: 8px;
|
|
border-radius: 50%;
|
|
background: currentColor;
|
|
}
|
|
|
|
/* ==========================================================================
|
|
Product Image with Overlays
|
|
========================================================================== */
|
|
|
|
.cannaiq-product-image {
|
|
position: relative;
|
|
overflow: hidden;
|
|
border-radius: var(--cannaiq-radius-lg);
|
|
background: var(--cannaiq-bg-light);
|
|
}
|
|
|
|
.cannaiq-product-image img {
|
|
width: 100%;
|
|
height: 100%;
|
|
object-fit: cover;
|
|
transition: transform 0.3s ease;
|
|
}
|
|
|
|
.cannaiq-product-image:hover img {
|
|
transform: scale(1.05);
|
|
}
|
|
|
|
.cannaiq-product-image__overlay {
|
|
position: absolute;
|
|
padding: var(--cannaiq-space-sm);
|
|
}
|
|
|
|
.cannaiq-product-image__overlay--top-left {
|
|
top: 0;
|
|
left: 0;
|
|
}
|
|
|
|
.cannaiq-product-image__overlay--top-right {
|
|
top: 0;
|
|
right: 0;
|
|
}
|
|
|
|
.cannaiq-product-image__overlay--bottom-left {
|
|
bottom: 0;
|
|
left: 0;
|
|
}
|
|
|
|
.cannaiq-product-image__overlay--bottom-right {
|
|
bottom: 0;
|
|
right: 0;
|
|
}
|
|
|
|
/* Badge Stack in Overlays */
|
|
.cannaiq-product-image__badges {
|
|
display: flex;
|
|
gap: var(--cannaiq-space-xs);
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
/* ==========================================================================
|
|
Weight Options Selector
|
|
========================================================================== */
|
|
|
|
.cannaiq-weight-options {
|
|
display: flex;
|
|
gap: var(--cannaiq-space-xs);
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.cannaiq-weight-option {
|
|
padding: var(--cannaiq-space-xs) var(--cannaiq-space-sm);
|
|
border: 1px solid var(--cannaiq-border);
|
|
border-radius: var(--cannaiq-radius-md);
|
|
font-size: 0.75rem;
|
|
font-weight: 500;
|
|
cursor: pointer;
|
|
transition: all 0.15s ease;
|
|
background: white;
|
|
}
|
|
|
|
.cannaiq-weight-option:hover {
|
|
border-color: var(--cannaiq-text-primary);
|
|
}
|
|
|
|
.cannaiq-weight-option--selected {
|
|
background: var(--cannaiq-text-primary);
|
|
color: white;
|
|
border-color: var(--cannaiq-text-primary);
|
|
}
|
|
|
|
.cannaiq-weight-option__price {
|
|
color: var(--cannaiq-text-secondary);
|
|
margin-left: var(--cannaiq-space-xs);
|
|
}
|
|
|
|
.cannaiq-weight-option--selected .cannaiq-weight-option__price {
|
|
color: rgba(255, 255, 255, 0.8);
|
|
}
|
|
|
|
/* Dropdown Style */
|
|
.cannaiq-weight-options--dropdown {
|
|
display: block;
|
|
}
|
|
|
|
.cannaiq-weight-options--dropdown select {
|
|
width: 100%;
|
|
padding: var(--cannaiq-space-sm) var(--cannaiq-space-md);
|
|
border: 1px solid var(--cannaiq-border);
|
|
border-radius: var(--cannaiq-radius-md);
|
|
font-size: 0.875rem;
|
|
background: white;
|
|
cursor: pointer;
|
|
}
|
|
|
|
/* ==========================================================================
|
|
Card Container (for premade templates)
|
|
========================================================================== */
|
|
|
|
.cannaiq-product-card {
|
|
display: flex;
|
|
flex-direction: column;
|
|
background: white;
|
|
border-radius: var(--cannaiq-radius-xl);
|
|
overflow: hidden;
|
|
box-shadow: var(--cannaiq-shadow-sm);
|
|
transition: box-shadow 0.2s ease, transform 0.2s ease;
|
|
}
|
|
|
|
.cannaiq-product-card:hover {
|
|
box-shadow: var(--cannaiq-shadow-lg);
|
|
transform: translateY(-2px);
|
|
}
|
|
|
|
.cannaiq-product-card__image {
|
|
position: relative;
|
|
aspect-ratio: 1;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.cannaiq-product-card__body {
|
|
padding: var(--cannaiq-space-lg);
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: var(--cannaiq-space-sm);
|
|
flex: 1;
|
|
}
|
|
|
|
.cannaiq-product-card__title {
|
|
font-size: 1rem;
|
|
font-weight: 700;
|
|
color: var(--cannaiq-text-primary);
|
|
margin: 0;
|
|
line-height: 1.3;
|
|
}
|
|
|
|
.cannaiq-product-card__brand {
|
|
font-size: 0.875rem;
|
|
color: var(--cannaiq-text-secondary);
|
|
margin: 0;
|
|
}
|
|
|
|
.cannaiq-product-card__footer {
|
|
margin-top: auto;
|
|
padding-top: var(--cannaiq-space-md);
|
|
}
|
|
|
|
/* ==========================================================================
|
|
Utility Classes
|
|
========================================================================== */
|
|
|
|
.cannaiq-flex {
|
|
display: flex;
|
|
}
|
|
|
|
.cannaiq-flex-wrap {
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.cannaiq-items-center {
|
|
align-items: center;
|
|
}
|
|
|
|
.cannaiq-justify-between {
|
|
justify-content: space-between;
|
|
}
|
|
|
|
.cannaiq-gap-xs {
|
|
gap: var(--cannaiq-space-xs);
|
|
}
|
|
|
|
.cannaiq-gap-sm {
|
|
gap: var(--cannaiq-space-sm);
|
|
}
|
|
|
|
.cannaiq-gap-md {
|
|
gap: var(--cannaiq-space-md);
|
|
}
|
|
|
|
.cannaiq-gap-lg {
|
|
gap: var(--cannaiq-space-lg);
|
|
}
|
|
|
|
.cannaiq-mt-auto {
|
|
margin-top: auto;
|
|
}
|
|
|
|
.cannaiq-text-center {
|
|
text-align: center;
|
|
}
|
|
|
|
.cannaiq-truncate {
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|