/** * Copyright © Netable. All rights reserved. * Mix and Match Modal Styles * * Modern, professional styling with glassmorphism effects * matching the Stacoptics website design */ /* Variables - matching website design tokens */ @mixandmatch-primary: #F57F20; @mixandmatch-primary-dark: #e06c10; @mixandmatch-text-dark: #1A1B1D; @mixandmatch-text-gray: #666666; @mixandmatch-border: #E9E9E9; @mixandmatch-bg-light: #F9F9FA; @mixandmatch-shadow: 0px 4px 24px rgba(0, 0, 0, 0.15); @mixandmatch-radius: 20px; @mixandmatch-radius-sm: 12px; /* Badge Wrapper - positioned inline with SKU */ .mixandmatch-badge-wrapper { display: inline-flex; align-items: center; margin-left: 15px; vertical-align: middle; } /* Inline badge for category listing */ .mixandmatch-badge-inline { display: inline-flex; align-items: center; margin-left: 10px; cursor: pointer; .mixandmatch-icon-small { width: auto; height: 22px; object-fit: contain; filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.1)); transition: transform 0.2s ease; &:hover { transform: scale(1.1); } } } /* Trigger Button */ .mixandmatch-trigger-btn { display: inline-flex; align-items: center; justify-content: center; background: transparent; border: none; padding: 0; cursor: pointer; transition: transform 0.3s ease, opacity 0.3s ease; outline: none; &:hover { transform: scale(1.08); } &:focus { outline: 2px solid @mixandmatch-primary; outline-offset: 4px; border-radius: 8px; } &:active { transform: scale(0.98); } } .mixandmatch-icon { width: auto; height: 32px; object-fit: contain; filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.1)); } /* Modal Overlay */ .mixandmatch-modal-overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.6); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); z-index: 9999; display: flex; align-items: center; justify-content: center; padding: 20px; box-sizing: border-box; opacity: 0; visibility: hidden; transition: opacity 0.4s ease, visibility 0.4s ease; &.active { opacity: 1; visibility: visible; .mixandmatch-modal { transform: translateY(0) scale(1); opacity: 1; } } } /* Modal Container */ .mixandmatch-modal { background: #ffffff; border-radius: @mixandmatch-radius; max-width: 700px; width: 100%; max-height: 85vh; overflow: hidden; display: flex; flex-direction: column; box-shadow: @mixandmatch-shadow; transform: translateY(30px) scale(0.95); opacity: 0; transition: transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1), opacity 0.4s ease; } /* Modal Header */ .mixandmatch-modal-header { display: flex; align-items: flex-start; justify-content: space-between; padding: 24px 28px; background: linear-gradient(135deg, @mixandmatch-primary 0%, @mixandmatch-primary-dark 100%); color: #ffffff; } .mixandmatch-modal-title-wrapper { display: flex; flex-direction: column; gap: 4px; } .mixandmatch-modal-title { font-family: 'Montserrat', 'Roboto', sans-serif; font-size: 24px; font-weight: 700; margin: 0; letter-spacing: -0.5px; } .mixandmatch-group-name { font-size: 14px; font-weight: 500; opacity: 0.9; } .mixandmatch-modal-close { background: rgba(255, 255, 255, 0.2); border: none; padding: 0; width: 36px; height: 36px; border-radius: 50%; display: flex; align-items: center; justify-content: center; cursor: pointer; transition: background 0.3s ease, transform 0.3s ease; color: #ffffff; flex-shrink: 0; &:hover { background: rgba(255, 255, 255, 0.35); transform: rotate(90deg); } &:focus { outline: 2px solid #ffffff; outline-offset: 2px; } svg { width: 18px; height: 18px; } } /* Threshold Badge */ .mixandmatch-threshold-badge { display: flex; align-items: center; gap: 16px; padding: 18px 28px; background: linear-gradient(135deg, #e8f5e9 0%, #c8e6c9 100%); border-bottom: 1px solid @mixandmatch-border; } .threshold-icon { display: flex; align-items: center; justify-content: center; width: 52px; height: 52px; background: #4CAF50; border-radius: 50%; color: #ffffff; flex-shrink: 0; box-shadow: 0 4px 12px rgba(76, 175, 80, 0.35); svg { width: 28px; height: 28px; } } .threshold-content { display: flex; flex-direction: column; gap: 4px; } .threshold-label { font-size: 12px; font-weight: 600; color: #2e7d32; text-transform: uppercase; letter-spacing: 0.8px; } .threshold-value { font-size: 16px; font-weight: 600; color: @mixandmatch-text-dark; line-height: 1.4; } /* Modal Body */ .mixandmatch-modal-body { flex: 1; overflow-y: auto; padding: 24px 28px; &::-webkit-scrollbar { width: 6px; } &::-webkit-scrollbar-track { background: @mixandmatch-bg-light; border-radius: 3px; } &::-webkit-scrollbar-thumb { background: #CCCCCC; border-radius: 3px; &:hover { background: #AAAAAA; } } } .mixandmatch-products-heading { font-family: 'Montserrat', 'Roboto', sans-serif; font-size: 18px; font-weight: 600; color: @mixandmatch-text-dark; margin: 0 0 20px 0; display: flex; align-items: center; gap: 8px; .product-count { font-size: 14px; font-weight: 500; color: @mixandmatch-text-gray; } } /* Product Grid */ .mixandmatch-products-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 16px; } /* Product Card */ .mixandmatch-product-card { display: flex; flex-direction: column; background: #ffffff; border: 1px solid @mixandmatch-border; border-radius: @mixandmatch-radius-sm; overflow: hidden; text-decoration: none; transition: transform 0.3s ease, box-shadow 0.3s ease, border-color 0.3s ease; &:hover { transform: translateY(-4px); box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12); border-color: @mixandmatch-primary; .product-image-wrapper { background: @mixandmatch-bg-light; } .product-name { color: @mixandmatch-primary; } } &:focus { outline: 2px solid @mixandmatch-primary; outline-offset: 2px; } } .product-image-wrapper { display: flex; align-items: center; justify-content: center; padding: 12px; background: #ffffff; aspect-ratio: 1; transition: background 0.3s ease; } .product-thumbnail { max-width: 100%; max-height: 100%; object-fit: contain; transition: transform 0.3s ease; .mixandmatch-product-card:hover & { transform: scale(1.05); } } .product-info { display: flex; flex-direction: column; gap: 6px; padding: 12px; border-top: 1px solid @mixandmatch-border; background: @mixandmatch-bg-light; } .product-name { font-size: 13px; font-weight: 500; color: @mixandmatch-text-dark; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; transition: color 0.3s ease; } .product-price { font-size: 14px; font-weight: 700; color: @mixandmatch-primary; } /* Price wrapper for mix and match discount display */ .product-price-wrapper { display: flex; flex-direction: column; gap: 2px; } .product-price-old { font-size: 12px; font-weight: 500; color: @mixandmatch-text-gray; text-decoration: line-through; } /* No Products Message */ .mixandmatch-no-products { padding: 40px 20px; text-align: center; color: @mixandmatch-text-gray; p { margin: 0; font-size: 15px; } } /* Modal Footer */ .mixandmatch-modal-footer { padding: 18px 28px; background: @mixandmatch-bg-light; border-top: 1px solid @mixandmatch-border; } .mixandmatch-offer-note { display: flex; align-items: flex-start; gap: 10px; font-size: 13px; color: @mixandmatch-text-gray; margin: 0; line-height: 1.5; svg { flex-shrink: 0; margin-top: 2px; color: @mixandmatch-primary; } } /* Responsive Styles */ /* Tablet */ @media only screen and (max-width: 768px) { .mixandmatch-modal { max-width: 95%; max-height: 90vh; } .mixandmatch-modal-header { padding: 20px 22px; } .mixandmatch-modal-title { font-size: 20px; } .mixandmatch-threshold-badge { padding: 16px 22px; } .threshold-icon { width: 44px; height: 44px; svg { width: 24px; height: 24px; } } .mixandmatch-modal-body { padding: 20px 22px; } .mixandmatch-products-grid { grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); gap: 12px; } .mixandmatch-modal-footer { padding: 16px 22px; } } /* Mobile */ @media only screen and (max-width: 520px) { .mixandmatch-badge-wrapper { margin-left: 10px; } .mixandmatch-icon { height: 26px; } .mixandmatch-modal-overlay { padding: 10px; align-items: flex-end; } .mixandmatch-modal { max-height: 85vh; border-radius: @mixandmatch-radius @mixandmatch-radius 0 0; } .mixandmatch-modal-header { padding: 18px 18px; } .mixandmatch-modal-title { font-size: 18px; } .mixandmatch-group-name { font-size: 13px; } .mixandmatch-modal-close { width: 32px; height: 32px; svg { width: 16px; height: 16px; } } .mixandmatch-threshold-badge { padding: 14px 18px; gap: 12px; } .threshold-icon { width: 40px; height: 40px; svg { width: 22px; height: 22px; } } .threshold-label { font-size: 11px; } .threshold-value { font-size: 14px; } .mixandmatch-modal-body { padding: 18px 18px; } .mixandmatch-products-heading { font-size: 16px; margin-bottom: 16px; } .mixandmatch-products-grid { grid-template-columns: repeat(2, 1fr); gap: 10px; } .product-info { padding: 10px; } .product-name { font-size: 12px; } .product-price { font-size: 13px; } .mixandmatch-modal-footer { padding: 14px 18px; } .mixandmatch-offer-note { font-size: 12px; } } /* Very Small Mobile */ @media only screen and (max-width: 360px) { .mixandmatch-products-grid { grid-template-columns: repeat(2, 1fr); gap: 8px; } .product-image-wrapper { padding: 8px; } .product-info { padding: 8px; } } /* Prevent body scroll when modal is open */ body.mixandmatch-modal-open { overflow: hidden; }