/* Theme Name: Style Zalvi Theme URI: https://stylezalvi.com Description: A luxurious and trendy child theme for the fashion brand Style Zalvi Author: Style Zalvi Design Team Author URI: https://stylezalvi.com/about Template: astra /* Important: Specifies the parent theme */ Version: 1.0.1 /* Incremented version */ License: GNU General Public License v2 or later License URI: http://www.gnu.org/licenses/gpl-2.0.html Text Domain: style-zalvi Tags: fashion, luxury, responsive, modern, e-commerce, child-theme */ /* ============================== 1. IMPORT PARENT THEME STYLES ============================== */ @import url('../astra/style.css'); /* ============================== 2. FONTS ============================== */ @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&family=Playfair+Display:wght@400;500;600;700&display=swap'); /* ============================== 3. GLOBAL STYLES & VARIABLES ============================== */ :root { /* Color Palette */ --primary-color: #1E1E1E; /* Deep Charcoal Black */ --secondary-color: #C19A6B; /* Bronze Gold */ --secondary-hover-color: #A17C50; /* Darker Bronze */ --bg-color: #F8F8F8; /* Soft Off-White */ --bg-white: #FFFFFF; /* Pure White (for cards, inputs) */ --text-primary: #333333; /* Dark Gray */ --text-secondary: #666666; /* Lighter Gray */ --text-on-dark: #F8F8F8; /* Soft White (for header/footer text) */ --link-color: #C19A6B; /* Bronze Gold */ --link-hover-color: #A17C50; /* Darker Bronze */ --border-color: #DDDDDD; /* Subtle border */ --input-border-color: #C19A6B; /* Bronze for inputs */ --placeholder-color: #999999; /* Soft Gray for placeholders */ /* Shadows & Effects */ --box-shadow: 0 4px 15px rgba(0, 0, 0, 0.08); --premium-shadow: 0 8px 25px rgba(193, 154, 107, 0.3); --transition: all 0.3s ease-in-out; /* Typography */ --font-primary: 'Poppins', sans-serif; --font-secondary: 'Playfair Display', serif; /* Layout */ --border-radius-sm: 4px; --border-radius-lg: 8px; --container-width: 1200px; --container-padding: 20px; } html { scroll-behavior: smooth; /* Enables smooth scrolling for anchor links */ font-size: 16px; /* Base font size */ } body { font-family: var(--font-primary); line-height: 1.7; /* Slightly increased for readability */ color: var(--text-primary); background-color: var(--bg-color); overflow-x: hidden; /* Prevent horizontal scroll */ -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } /* Custom Cursor - Requires JS */ body.custom-cursor-enabled { cursor: none; } .cursor { position: fixed; width: 25px; /* Slightly larger */ height: 25px; border-radius: 50%; background-color: transparent; border: 2px solid var(--secondary-color); pointer-events: none; transform: translate(-50%, -50%); z-index: 9999; transition: transform 0.15s ease, background-color 0.2s ease, border-color 0.2s ease, width 0.2s ease, height 0.2s ease; mix-blend-mode: difference; /* Interesting effect on different backgrounds */ } .cursor.link-hover { transform: translate(-50%, -50%) scale(1.6); background-color: rgba(193, 154, 107, 0.1); border-color: var(--secondary-hover-color); width: 35px; height: 35px; } /* Hide default cursor if JS adds the class */ .custom-cursor-enabled a, .custom-cursor-enabled button, .custom-cursor-enabled input[type="submit"], .custom-cursor-enabled .slick-arrow { /* Example for slider arrows */ cursor: none; } h1, h2, h3, h4, h5, h6 { font-family: var(--font-secondary); font-weight: 700; /* Bold headings */ color: var(--text-primary); margin-top: 0; margin-bottom: 0.75em; /* Consistent spacing */ line-height: 1.3; } h1 { font-size: 2.8rem; } h2 { font-size: 2.2rem; } h3 { font-size: 1.8rem; } h4 { font-size: 1.4rem; } h5 { font-size: 1.2rem; } h6 { font-size: 1rem; } p { margin-bottom: 1.25em; color: var(--text-secondary); /* Use secondary text color for paragraphs */ } a { color: var(--link-color); text-decoration: none; transition: var(--transition); } a:hover, a:focus { color: var(--link-hover-color); text-decoration: none; /* Or underline if preferred */ } img { max-width: 100%; height: auto; display: block; /* Remove bottom space */ } .container { width: 100%; max-width: var(--container-width); margin-left: auto; margin-right: auto; padding-left: var(--container-padding); padding-right: var(--container-padding); } section { padding: 80px 0; /* Increased default section padding */ } /* ============================== 4. HELPER CLASSES ============================== */ .text-center { text-align: center; } .text-left { text-align: left; } .text-right { text-align: right; } .uppercase { text-transform: uppercase; } .no-margin { margin: 0 !important; } .no-padding { padding: 0 !important; } .margin-bottom-sm { margin-bottom: 15px !important; } .margin-bottom-md { margin-bottom: 30px !important; } .margin-bottom-lg { margin-bottom: 60px !important; } /* ============================== 5. SCROLL PROGRESS BAR (Requires JS) ============================== */ .progress-container { position: fixed; top: 0; left: 0; /* Ensure it starts from the left */ width: 100%; height: 4px; /* Slightly thicker */ z-index: 1001; /* Above sticky header */ pointer-events: none; /* Allow clicks through */ } .progress-bar { height: 100%; /* Use container height */ width: 0%; background: linear-gradient(90deg, var(--secondary-color), var(--secondary-hover-color)); transition: width 0.1s linear; /* Smoother transition */ } /* ============================== 6. SCROLL TO TOP BUTTON (Requires JS) ============================== */ .scroll-to-top { position: fixed; bottom: 30px; right: 30px; width: 45px; /* Adjusted size */ height: 45px; border-radius: 50%; background-color: var(--secondary-color); color: var(--text-on-dark); /* Use contrast text color */ display: flex; justify-content: center; align-items: center; cursor: pointer; opacity: 0; visibility: hidden; transform: translateY(30px) scale(0.8); /* Start smaller and lower */ transition: var(--transition), transform 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275); /* Added bouncy transform */ z-index: 999; box-shadow: var(--box-shadow); border: none; } .scroll-to-top.visible { opacity: 1; visibility: visible; transform: translateY(0) scale(1); } .scroll-to-top:hover { background-color: var(--secondary-hover-color); transform: translateY(-5px) scale(1.1); /* Lift and slightly enlarge on hover */ box-shadow: var(--premium-shadow); } .scroll-to-top svg { /* Assuming you use an SVG icon */ width: 20px; height: 20px; fill: currentColor; } /* ============================== 7. HEADER & NAVIGATION (Sticky requires JS) ============================== */ .site-header { background-color: transparent; /* Start transparent */ position: fixed; width: 100%; top: 0; left: 0; z-index: 1000; transition: background-color 0.4s ease, box-shadow 0.4s ease, padding 0.4s ease; /* Added padding transition */ padding: 20px 0; /* Initial padding */ } .site-header.sticky { background-color: var(--primary-color); /* Use primary dark on scroll */ box-shadow: var(--box-shadow); padding: 10px 0; /* Reduced padding when sticky */ } /* Ensure container within header adapts */ .site-header .ast-container { /* Add specific alignment/layout if needed */ } /* Astra Menu Specifics - Adjust selectors if needed */ .main-header-menu .menu-link { font-family: var(--font-primary); font-weight: 500; text-transform: uppercase; letter-spacing: 1px; padding: 10px 15px; /* Adjust padding */ position: relative; color: var(--text-on-dark); /* White text initially */ overflow: hidden; transition: var(--transition); } /* Underline animation */ .main-header-menu .menu-item > .menu-link::after { content: ''; position: absolute; bottom: 5px; /* Position relative to padding */ left: 15px; /* Match padding */ width: calc(100% - 30px); /* Match padding */ height: 2px; background-color: var(--secondary-color); transform: scaleX(0); /* Start hidden */ transform-origin: left; transition: transform 0.4s cubic-bezier(0.19, 1, 0.22, 1); /* Smooth ease out */ } .main-header-menu .menu-item:hover > .menu-link::after, .main-header-menu .current-menu-item > .menu-link::after, .main-header-menu .current-menu-ancestor > .menu-link::after { transform: scaleX(1); /* Reveal on hover/active */ } .main-header-menu .menu-item:hover > .menu-link { color: var(--secondary-color); /* Change text color on hover */ } /* Sticky header text color adjustment if needed */ .site-header.sticky .main-header-menu .menu-link { color: var(--text-on-dark); /* Keep text white/light on dark sticky header */ } .site-header.sticky .main-header-menu .menu-item:hover > .menu-link { color: var(--secondary-color); /* Gold hover remains */ } .site-header.sticky .main-header-menu .menu-item > .menu-link::after { background-color: var(--secondary-color); /* Ensure underline is gold */ } /* CTA Button in Header */ .header-button .ast-custom-button { background-color: var(--cta-color) !important; color: var(--text-on-dark) !important; /* Contrast text */ border-color: var(--cta-color) !important; padding: 10px 25px !important; font-weight: 600; text-transform: uppercase; border-radius: var(--border-radius-sm); transition: var(--transition); } .header-button .ast-custom-button:hover { background-color: var(--cta-hover-color) !important; border-color: var(--cta-hover-color) !important; color: var(--text-on-dark) !important; transform: scale(1.05); box-shadow: var(--premium-shadow); } /* ============================== 8. HERO SECTION ============================== */ .hero-section { position: relative; height: 100vh; /* Full viewport height */ min-height: 600px; /* Minimum height */ display: flex; align-items: center; background-size: cover; background-position: center center; padding: 0; /* Remove default section padding */ color: var(--text-on-dark); /* Default text color for hero */ } /* Gradient Overlay */ .hero-section::before { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: linear-gradient(90deg, rgba(30, 30, 30, 0.7) 0%, rgba(30, 30, 30, 0.3) 100%); /* Dark overlay */ z-index: 1; } .hero-content { position: relative; z-index: 2; max-width: 700px; /* Adjust as needed */ margin-left: 10%; /* Position content */ padding-right: var(--container-padding); /* Ensure padding on right */ } /* Text Fade-In Animation (Requires JS to add 'visible' class) */ .hero-headline, .hero-tagline, .hero-cta { opacity: 0; transform: translateY(30px); transition: opacity 0.8s ease-out, transform 0.8s ease-out; } .hero-headline.visible { opacity: 1; transform: translateY(0); transition-delay: 0.3s; } .hero-tagline.visible { opacity: 1; transform: translateY(0); transition-delay: 0.6s; } .hero-cta.visible { opacity: 1; transform: translateY(0); transition-delay: 0.9s; } .hero-headline { font-size: clamp(2.5rem, 5vw, 4.5rem); /* Responsive font size */ margin-bottom: 0.5em; font-weight: 700; color: var(--bg-white); /* Brighter white for headline */ line-height: 1.2; } .hero-tagline { font-size: clamp(1.1rem, 2vw, 1.5rem); margin-bottom: 2em; font-weight: 300; /* Lighter weight for tagline */ color: var(--text-on-dark); /* Off-white */ } /* Use the general button style for hero CTA */ .hero-cta .btn { padding: 15px 35px; /* Larger button for hero */ font-size: 1.1rem; } /* ============================== 9. BUTTONS ============================== */ .btn { display: inline-block; padding: 12px 30px; background-color: var(--cta-color); color: var(--text-on-dark); /* Use contrast text color */ font-family: var(--font-primary); font-weight: 600; font-size: 0.95rem; border-radius: var(--border-radius-sm); text-transform: uppercase; letter-spacing: 1px; cursor: pointer; transition: var(--transition), transform 0.2s ease; /* Add transform transition */ border: none; box-shadow: var(--box-shadow); text-align: center; /* Ensure text is centered */ } .btn:hover, .btn:focus { background-color: var(--cta-hover-color); transform: translateY(-3px) scale(1.03); /* Lift and slightly scale */ box-shadow: var(--premium-shadow); color: var(--text-on-dark); /* Ensure text color stays */ } /* Secondary Button Style (Optional) */ .btn-secondary { background-color: transparent; color: var(--text-primary); border: 2px solid var(--border-color); box-shadow: none; } .btn-secondary:hover, .btn-secondary:focus { background-color: var(--text-primary); color: var(--bg-white); border-color: var(--text-primary); transform: translateY(-2px); box-shadow: var(--box-shadow); } /* ============================== 10. PRODUCT CARDS (WooCommerce/Custom) ============================== */ .product-card, /* Your custom class */ .woocommerce ul.products li.product /* WooCommerce default */ { position: relative; overflow: hidden; border-radius: var(--border-radius-lg); /* Softer radius */ box-shadow: var(--box-shadow); margin-bottom: 30px; background-color: var(--bg-white); transition: var(--transition), transform 0.3s ease; text-align: left; /* Align text left by default */ } .product-card:hover, .woocommerce ul.products li.product:hover { box-shadow: var(--premium-shadow); transform: translateY(-8px); /* More lift on hover */ } .product-image, /* Your custom class */ .woocommerce ul.products li.product a img /* WooCommerce */ { position: relative; overflow: hidden; /* height: 350px; Set a fixed height or use aspect-ratio */ aspect-ratio: 3 / 4; /* Common aspect ratio for products */ background-color: #eee; /* Placeholder bg */ } .product-image img, .woocommerce ul.products li.product a img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.5s cubic-bezier(0.165, 0.84, 0.44, 1), opacity 0.5s ease; /* Smooth zoom */ } .product-card:hover .product-image img, .woocommerce ul.products li.product:hover a img { transform: scale(1.08); /* Slightly larger zoom */ } .product-info, /* Your custom class */ .woocommerce ul.products li.product .woocommerce-loop-product__link /* WC container */ { padding: 25px; /* More padding */ position: relative; } /* Product Title */ .product-name, .woocommerce-loop-product__title { font-family: var(--font-secondary); /* Playfair for titles */ font-size: 1.3rem; /* Larger title */ margin-bottom: 10px; font-weight: 600; color: var(--primary-color); /* Use primary dark for focus */ transition: color 0.3s ease; } .product-card:hover .product-name, .woocommerce ul.products li.product:hover .woocommerce-loop-product__title { color: var(--link-color); /* Change title color on hover */ } /* Product Price */ .product-price, .woocommerce ul.products li.product .price { font-weight: 700; /* Bolder price */ color: var(--secondary-color); /* Gold price */ margin-bottom: 15px; font-size: 1.1rem; display: block; /* Ensure it takes full width */ } /* Add to Cart Button */ .add-to-cart-button, /* Your class */ .woocommerce ul.products li.product .button /* WC */ { /* Use the main .btn styles */ margin-top: 15px; display: block; /* Make button full width within padding */ width: 100%; } /* Style WC button specifically if needed */ .woocommerce ul.products li.product .button { background-color: var(--cta-color); color: var(--text-on-dark); font-family: var(--font-primary); font-weight: 600; border-radius: var(--border-radius-sm); padding: 12px 20px; transition: var(--transition), transform 0.2s ease; border: none; box-shadow: none; /* Remove default WC shadow if btn has one */ text-align: center; width: auto; /* Override block above if needed */ display: inline-block; } .woocommerce ul.products li.product .button:hover { background-color: var(--cta-hover-color); color: var(--text-on-dark); transform: translateY(-3px) scale(1.03); box-shadow: var(--premium-shadow); } /* ============================== 11. CATEGORY CARDS (Flip Animation) ============================== */ .category-card { position: relative; /* height: 350px; Set height or use aspect-ratio */ aspect-ratio: 1 / 1; /* Square cards */ perspective: 1500px; /* Increase perspective */ margin-bottom: 30px; } .category-inner { position: relative; width: 100%; height: 100%; text-align: center; transition: transform 0.8s cubic-bezier(0.175, 0.885, 0.32, 1.275); /* Bouncier flip */ transform-style: preserve-3d; border-radius: var(--border-radius-lg); /* Apply radius here */ box-shadow: var(--box-shadow); } .category-card:hover .category-inner { transform: rotateY(180deg); box-shadow: var(--premium-shadow); /* Enhance shadow on hover */ } .category-front, .category-back { position: absolute; width: 100%; height: 100%; -webkit-backface-visibility: hidden; backface-visibility: hidden; border-radius: var(--border-radius-lg); /* Match inner radius */ overflow: hidden; display: flex; flex-direction: column; justify-content: center; align-items: center; padding: 30px; } .category-front { background-color: var(--bg-white); /* White front */ color: var(--text-primary); /* Add background image possibility */ background-size: cover; background-position: center; } .category-icon { font-size: 3.5rem; color: var(--secondary-color); margin-bottom: 20px; transition: transform 0.4s ease; } .category-card:hover .category-icon { transform: scale(1.1); } .category-name { font-family: var(--font-secondary); font-size: 1.6rem; font-weight: 600; } .category-back { background-color: var(--secondary-color); /* Gold back */ color: var(--text-on-dark); transform: rotateY(180deg); } .category-description { margin-bottom: 25px; font-size: 0.95rem; line-height: 1.6; } .category-explore { background-color: var(--bg-white); color: var(--secondary-color); padding: 10px 25px; border-radius: var(--border-radius-sm); font-weight: 600; text-transform: uppercase; transition: var(--transition); letter-spacing: 0.5px; } .category-explore:hover { background-color: var(--primary-color); /* Dark hover background */ color: var(--bg-white); transform: scale(1.05); } /* ============================== 12. SCROLL-TRIGGERED ANIMATIONS (Requires JS - e.g., Intersection Observer) ============================== */ .animate-on-scroll { opacity: 0; transition: opacity 0.8s ease-out, transform 0.8s ease-out; } /* Fade In */ .fade-in { transform: translateY(30px); } .fade-in.is-visible { opacity: 1; transform: translateY(0); } /* Slide In Left */ .slide-in-left { transform: translateX(-50px); } .slide-in-left.is-visible { opacity: 1; transform: translateX(0); } /* Slide In Right */ .slide-in-right { transform: translateX(50px); } .slide-in-right.is-visible { opacity: 1; transform: translateX(0); } /* Zoom In */ .zoom-in { transform: scale(0.8); } .zoom-in.is-visible { opacity: 1; transform: scale(1); } /* Add delay helper classes if needed */ .delay-1 { transition-delay: 0.1s !important; } .delay-2 { transition-delay: 0.2s !important; } .delay-3 { transition-delay: 0.3s !important; } .delay-4 { transition-delay: 0.4s !important; } /* ============================== 13. TRENDING COLLECTIONS / FEATURED SECTIONS ============================== */ .section-title { /* Reusable title style */ text-align: center; margin-bottom: 60px; /* More space after title */ position: relative; } .section-title h2 { margin-bottom: 15px; /* Space between h2 and line */ font-size: 2.5rem; /* Larger section titles */ } .section-title::after { content: ''; display: block; width: 80px; /* Longer line */ height: 3px; background-color: var(--secondary-color); margin: 0 auto; /* Centered line */ } .collection-card { /* Similar to product card but maybe different layout */ position: relative; overflow: hidden; border-radius: var(--border-radius-lg); margin-bottom: 30px; box-shadow: var(--box-shadow); transition: var(--transition), transform 0.3s ease; } .collection-card:hover { box-shadow: var(--premium-shadow); transform: translateY(-8px); } .collection-image { /* height: 450px; Or use aspect-ratio */ aspect-ratio: 16 / 9; /* Landscape aspect ratio */ overflow: hidden; background-color: #eee; } .collection-image img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.5s cubic-bezier(0.165, 0.84, 0.44, 1); } .collection-card:hover .collection-image img { transform: scale(1.08); } .collection-overlay { position: absolute; bottom: 0; left: 0; width: 100%; padding: 30px; /* More padding */ background: linear-gradient(to top, rgba(30, 30, 30, 0.85) 0%, rgba(30, 30, 30, 0) 100%); /* Darker gradient */ color: var(--text-on-dark); transform: translateY(100%); /* Start fully hidden */ opacity: 0; transition: transform 0.5s ease-out, opacity 0.5s ease-out; } .collection-card:hover .collection-overlay { transform: translateY(0); opacity: 1; } .collection-title { font-family: var(--font-secondary); margin-bottom: 15px; /* More space */ font-size: 1.8rem; color: var(--bg-white); /* White title */ } .collection-link { color: var(--secondary-color); /* Gold link */ font-weight: 600; /* Bolder link */ position: relative; text-transform: uppercase; letter-spacing: 1px; font-size: 0.9rem; display: inline-block; /* Needed for underline */ } /* Underline animation for collection link */ .collection-link::after { content: ''; position: absolute; bottom: -3px; left: 0; width: 100%; height: 2px; background-color: var(--secondary-color); transform: scaleX(0); transition: transform 0.4s ease; transform-origin: left; } .collection-link:hover::after { transform: scaleX(1); } .collection-link:hover { color: var(--secondary-color); /* Keep color gold */ } /* ============================== 14. PARALLAX SECTIONS ============================== */ .parallax-section { position: relative; padding: 120px 0; /* More padding for visual effect */ background-attachment: fixed; background-position: center center; background-repeat: no-repeat; background-size: cover; color: var(--text-on-dark); text-align: center; } /* Parallax Overlay */ .parallax-section::before { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(30, 30, 30, 0.6); /* Adjust overlay darkness */ z-index: 1; } .parallax-content { position: relative; z-index: 2; max-width: 800px; margin: 0 auto; /* Center content */ padding: 0 var(--container-padding); } .parallax-title { font-size: clamp(2rem, 4vw, 3rem); /* Responsive title */ margin-bottom: 25px; color: var(--bg-white); font-weight: 700; } .parallax-text { font-size: 1.1rem; margin-bottom: 35px; line-height: 1.8; } .parallax-section .btn { /* Style button specifically if needed */ padding: 14px 32px; font-size: 1rem; } /* ============================== 15. LIGHTBOX (Requires JS) ============================== */ .lightbox-overlay { /* Changed class name for clarity */ position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(30, 30, 30, 0.92); /* Darker overlay */ display: flex; align-items: center; justify-content: center; z-index: 10000; /* Highest z-index */ opacity: 0; visibility: hidden; transition: opacity 0.4s ease, visibility 0s 0.4s; /* Delay visibility hide */ } .lightbox-overlay.active { opacity: 1; visibility: visible; transition-delay: 0s; } .lightbox-content { position: relative; /* Needed for close button positioning */ max-width: 90%; max-height: 90%; transform: scale(0.8) translateY(20px); /* Start smaller and slightly lower */ opacity: 0; transition: transform 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275), opacity 0.4s ease; box-shadow: 0 10px 40px rgba(0,0,0,0.5); /* Shadow for the content */ } .lightbox-overlay.active .lightbox-content { transform: scale(1) translateY(0); opacity: 1; } .lightbox-content img { /* Style the image inside */ display: block; max-width: 100%; max-height: calc(90vh - 80px); /* Consider padding/close button */ object-fit: contain; /* Ensure image fits */ border-radius: var(--border-radius-sm); } .lightbox-close { position: absolute; top: -15px; /* Position slightly outside */ right: -15px; width: 40px; height: 40px; background-color: var(--secondary-color); color: var(--text-on-dark); border-radius: 50%; display: flex; align-items: center; justify-content: center; cursor: pointer; transition: var(--transition), transform 0.3s ease; border: none; z-index: 10001; box-shadow: 0 0 15px rgba(0,0,0,0.3); } .lightbox-close:hover { transform: rotate(90deg) scale(1.1); background-color: var(--secondary-hover-color); } .lightbox-close svg { width: 20px; height: 20px; fill: currentColor; } /* ============================== 16. POPUP OFFER (Requires JS) ============================== */ .popup-overlay { /* Shared overlay style with lightbox? */ position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(30, 30, 30, 0.75); /* Slightly less dark than lightbox */ z-index: 9998; opacity: 0; visibility: hidden; transition: opacity 0.4s ease, visibility 0s 0.4s; display: flex; /* Use flex to center popup */ align-items: center; justify-content: center; } .popup-overlay.active { opacity: 1; visibility: visible; transition-delay: 0s; } .popup-container { position: relative; /* Relative for close button */ width: 90%; max-width: 550px; /* Slightly wider */ background-color: var(--bg-white); border-radius: var(--border-radius-lg); box-shadow: var(--premium-shadow); padding: 45px; /* More padding */ text-align: center; transform: scale(0.7) translateY(30px); /* Start smaller */ opacity: 0; transition: transform 0.5s cubic-bezier(0.175, 0.885, 0.32, 1.275), opacity 0.4s ease; } .popup-overlay.active .popup-container { transform: scale(1) translateY(0); opacity: 1; } .popup-close { position: absolute; top: 15px; right: 15px; width: 35px; height: 35px; background-color: var(--bg-color); /* Use page background */ color: var(--text-secondary); border-radius: 50%; display: flex; align-items: center; justify-content: center; cursor: pointer; transition: var(--transition), transform 0.3s ease; border: none; } .popup-close:hover { background-color: var(--secondary-color); color: var(--text-on-dark); transform: rotate(90deg); box-shadow: 0 0 10px rgba(193, 154, 107, 0.5); } .popup-close svg { width: 18px; height: 18px; fill: currentColor; } .popup-title { font-size: 2rem; /* Larger title */ margin-bottom: 15px; color: var(--secondary-color); /* Gold title */ font-family: var(--font-secondary); } .popup-description { margin-bottom: 25px; color: var(--text-secondary); font-size: 1rem; } .popup-form input[type="email"], .popup-form input[type="text"] { /* Style inputs */ width: 100%; padding: 15px; /* More padding */ margin-bottom: 15px; border: 1px solid var(--border-color); border-radius: var(--border-radius-sm); font-family: var(--font-primary); background-color: var(--bg-white); /* Ensure white bg */ color: var(--text-primary); transition: border-color 0.3s ease, box-shadow 0.3s ease; } .popup-form input::placeholder { color: var(--placeholder-color); opacity: 1; /* Ensure placeholder is visible */ } .popup-form input:focus { outline: none; border-color: var(--input-border-color); /* Gold border on focus */ box-shadow: 0 0 8px rgba(193, 154, 107, 0.3); } .popup-submit { /* Style submit button */ /* Inherit from .btn */ width: 100%; padding: 15px 30px; /* Match input padding */ font-size: 1rem; } /* ============================== 17. BLOG SECTION ============================== */ .blog-post { margin-bottom: 50px; /* More space between posts */ background-color: var(--bg-white); border-radius: var(--border-radius-lg); box-shadow: var(--box-shadow); overflow: hidden; /* Contain image zoom */ transition: var(--transition), transform 0.3s ease; } .blog-post:hover { box-shadow: var(--premium-shadow); transform: translateY(-8px); } .blog-image { /* height: 280px; */ aspect-ratio: 16/10; /* Adjust aspect ratio */ overflow: hidden; /* margin-bottom: 0; Removed bottom margin */ } .blog-image img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.5s cubic-bezier(0.165, 0.84, 0.44, 1); } .blog-post:hover .blog-image img { transform: scale(1.08); } .blog-content { padding: 30px; /* Add padding to content area */ } .blog-date { color: var(--secondary-color); /* Gold date */ font-size: 0.85rem; margin-bottom: 10px; text-transform: uppercase; font-weight: 500; letter-spacing: 0.5px; } .blog-title { font-size: 1.6rem; /* Larger title */ margin-bottom: 15px; font-family: var(--font-secondary); font-weight: 600; } .blog-title a { color: var(--text-primary); transition: color 0.3s ease; } .blog-title a:hover { color: var(--link-color); /* Gold on hover */ } .blog-excerpt { margin-bottom: 20px; color: var(--text-secondary); font-size: 0.95rem; line-height: 1.7; } .blog-link { /* Read More Link */ color: var(--link-color); font-weight: 600; position: relative; display: inline-block; text-transform: uppercase; font-size: 0.9rem; letter-spacing: 1px; } .blog-link::after { content: '→'; /* Add arrow */ display: inline-block; margin-left: 8px; transition: transform 0.3s ease; } .blog-link:hover { color: var(--link-hover-color); } .blog-link:hover::after { transform: translateX(5px); /* Move arrow on hover */ } /* ============================== 18. NEWSLETTER SECTION ============================== */ .newsletter-section { background-color: var(--primary-color); /* Use dark primary for contrast */ color: var(--text-on-dark); /* Light text */ text-align: center; padding: 80px 0; } .newsletter-title { margin-bottom: 15px; color: var(--bg-white); /* Brighter white title */ font-size: 2.2rem; } .newsletter-description { max-width: 650px; margin: 0 auto 40px; /* More space after description */ color: var(--text-on-dark); /* Lighter text */ font-size: 1.05rem; opacity: 0.9; } .newsletter-form { display: flex; flex-wrap: wrap; /* Allow wrap on small screens */ justify-content: center; /* Center form items */ max-width: 600px; /* Wider form */ margin: 0 auto; background-color: var(--bg-white); /* White background for the form itself */ border-radius: var(--border-radius-lg); /* Rounded form container */ padding: 10px; /* Padding around input/button */ box-shadow: 0 5px 15px rgba(0,0,0,0.1); } .newsletter-input { flex: 1 1 300px; /* Allow input to grow and shrink */ padding: 15px 20px; border: none; /* Remove border */ border-radius: var(--border-radius-sm); /* Input radius */ font-family: var(--font-primary); font-size: 1rem; margin-right: -1px; /* Overlap slightly with button */ background-color: transparent; /* Transparent inside the white container */ color: var(--text-primary); } .newsletter-input::placeholder { color: var(--placeholder-color); } .newsletter-input:focus { outline: none; /* Optional: Add subtle focus indicator if needed */ /* box-shadow: inset 0 0 0 2px var(--secondary-color); */ } .newsletter-submit { /* Inherit from .btn */ border-radius: var(--border-radius-sm); /* Match input radius */ padding: 15px 30px; flex-shrink: 0; /* Prevent button from shrinking */ margin-left: 10px; /* Space between input and button */ } /* ============================== 19. FOOTER ============================== */ .site-footer { background-color: var(--primary-color); /* Match header dark */ color: var(--text-on-dark); /* Light text */ padding: 80px 0 0; /* More top padding, remove bottom padding */ font-size: 0.95rem; /* Slightly smaller base font */ } /* Footer Widgets Area */ .footer-widgets-area { /* Assuming a container class */ padding-bottom: 50px; /* Use Grid or Flexbox for layout if needed */ /* display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 40px; */ } .footer-widget { margin-bottom: 40px; } .footer-widget-title { position: relative; color: var(--bg-white); /* Brighter white title */ margin-bottom: 30px; /* More space below title */ padding-bottom: 15px; /* Space for underline */ font-family: var(--font-secondary); font-size: 1.3rem; font-weight: 600; display: inline-block; /* Allow underline to fit content */ } .footer-widget-title::after { content: ''; position: absolute; bottom: 0; left: 0; width: 60px; /* Wider underline */ height: 3px; background-color: var(--secondary-color); /* Gold underline */ } /* Footer Menu */ .footer-widget ul { list-style: none; padding: 0; margin: 0; } .footer-widget ul li { margin-bottom: 12px; } .footer-widget ul li a { color: var(--text-on-dark); /* Light gray text */ opacity: 0.8; /* Slightly transparent */ transition: var(--transition), padding-left 0.3s ease, opacity 0.3s ease; position: relative; display: inline-block; /* For hover effect */ } /* Arrow/Bullet effect for menu items */ .footer-widget ul li a::before { content: '›'; /* Use an arrow or bullet */ position: absolute; left: -15px; /* Start hidden */ opacity: 0; color: var(--secondary-color); transition: var(--transition), left 0.3s ease, opacity 0.3s ease; font-weight: bold; } .footer-widget ul li a:hover { color: var(--secondary-color); /* Gold on hover */ padding-left: 5px; /* Push text slightly */ opacity: 1; /* Full opacity */ } .footer-widget ul li a:hover::before { left: -5px; /* Reveal arrow */ opacity: 1; } /* Footer Contact Info */ .footer-contact-item { display: flex; align-items: center; /* Align icon and text */ margin-bottom: 15px; color: var(--text-on-dark); opacity: 0.8; } .contact-icon { color: var(--secondary-color); /* Gold icon */ margin-right: 15px; font-size: 1.2rem; /* Slightly larger icon */ flex-shrink: 0; /* Prevent icon shrinking */ width: 25px; /* Fixed width for alignment */ text-align: center; } .contact-text { /* Text styling is handled by .footer-contact-item */ } .contact-text a { /* Style links within contact text */ color: inherit; /* Inherit light color */ opacity: 1; } .contact-text a:hover { color: var(--secondary-color); } /* Footer Social Icons */ .footer-social { display: flex; gap: 12px; /* Space between icons */ margin-top: 25px; } .social-icon { display: flex; align-items: center; justify-content: center; width: 40px; height: 40px; background-color: rgba(255, 255, 255, 0.1); /* Subtle background */ color: var(--text-on-dark); opacity: 0.8; border-radius: 50%; transition: var(--transition), transform 0.3s ease, opacity 0.3s ease; font-size: 1.1rem; /* Icon size */ } .social-icon:hover { background-color: var(--secondary-color); /* Gold background on hover */ color: var(--primary-color); /* Dark icon on gold */ transform: translateY(-4px) scale(1.1); /* Lift and scale */ opacity: 1; } /* Footer Bottom Bar */ .footer-bottom { border-top: 1px solid rgba(255, 255, 255, 0.15); /* Slightly more visible border */ padding: 25px 0; margin-top: 50px; /* Space above bottom bar */ text-align: center; color: var(--text-on-dark); opacity: 0.7; font-size: 0.9rem; } .footer-bottom a { color: var(--secondary-color); /* Gold links in copyright */ opacity: 1; } .footer-bottom a:hover { color: var(--bg-white); /* White hover */ } /* ============================== 20. LAZY LOADING PLACEHOLDER (Requires JS) ============================== */ .lazy-load { opacity: 0; transition: opacity 0.6s ease-in-out; } .lazy-load.loaded { opacity: 1; } /* Optional: Add a background placeholder */ img[data-src] { /* Target images before JS loads src */ background-color: #eee; /* Light gray placeholder */ min-height: 100px; /* Minimum height to avoid layout shifts */ } /* ============================== 21. WOOCOMMERCE OVERRIDES ============================== */ /* General Typography & Colors */ .woocommerce { font-family: var(--font-primary); color: var(--text-secondary); /* Default text */ } .woocommerce h1, .woocommerce h2, .woocommerce h3, .woocommerce h4, .woocommerce h5, .woocommerce h6 { font-family: var(--font-secondary); color: var(--text-primary); } /* Shop Loop / Product Archives */ .woocommerce ul.products { /* Adjust grid gap if needed */ /* gap: 30px; */ } /* Handled product card styles in section 10 */ /* Sale Badge */ .woocommerce ul.products li.product .onsale, .woocommerce span.onsale { background-color: var(--secondary-color); color: var(--text-on-dark); border-radius: 50%; min-height: 45px; min-width: 45px; line-height: 45px; font-weight: 600; font-size: 0.8rem; box-shadow: var(--premium-shadow); } /* Star Rating */ .woocommerce .star-rating { color: var(--secondary-color); } .woocommerce .star-rating span::before { color: var(--secondary-color); } /* Buttons (General - Add to Cart handled above) */ .woocommerce a.button, .woocommerce button.button, .woocommerce input.button, .woocommerce #respond input#submit, .woocommerce .button /* Catch all */ { /* Apply .btn styles */ display: inline-block; padding: 12px 25px; /* Adjusted padding */ background-color: var(--cta-color); color: var(--text-on-dark); font-family: var(--font-primary); font-weight: 600; font-size: 0.9rem; border-radius: var(--border-radius-sm); text-transform: uppercase; letter-spacing: 1px; cursor: pointer; transition: var(--transition), transform 0.2s ease; border: none; box-shadow: var(--box-shadow); text-align: center; line-height: normal; /* Reset line height */ } .woocommerce a.button:hover, .woocommerce button.button:hover, .woocommerce input.button:hover, .woocommerce #respond input#submit:hover, .woocommerce .button:hover { background-color: var(--cta-hover-color); transform: translateY(-3px) scale(1.03); box-shadow: var(--premium-shadow); color: var(--text-on-dark); } /* Alt button style (e.g., View Cart, Update Cart) */ .woocommerce a.button.alt, .woocommerce button.button.alt, .woocommerce input.button.alt, .woocommerce #respond input#submit.alt { background-color: var(--text-primary); /* Dark button for alt actions */ color: var(--bg-white); box-shadow: none; } .woocommerce a.button.alt:hover, .woocommerce button.button.alt:hover, .woocommerce input.button.alt:hover, .woocommerce #respond input#submit.alt:hover { background-color: #555; /* Slightly lighter dark */ transform: translateY(-2px); box-shadow: var(--box-shadow); } /* Pagination */ .woocommerce nav.woocommerce-pagination ul { border: none; display: flex; justify-content: center; gap: 8px; /* Space between page numbers */ } .woocommerce nav.woocommerce-pagination ul li { border: none; margin: 0; } .woocommerce nav.woocommerce-pagination ul li a, .woocommerce nav.woocommerce-pagination ul li span { padding: 10px 15px; border-radius: var(--border-radius-sm); color: var(--text-primary); background-color: var(--bg-white); border: 1px solid var(--border-color); transition: var(--transition); min-width: 40px; /* Ensure consistent width */ display: inline-block; text-align: center; } .woocommerce nav.woocommerce-pagination ul li a:hover, .woocommerce nav.woocommerce-pagination ul li span.current { background-color: var(--secondary-color); color: var(--text-on-dark); border-color: var(--secondary-color); box-shadow: var(--premium-shadow); } /* Single Product Page */ .woocommerce div.product .product_title { font-family: var(--font-secondary); font-size: 2.5rem; /* Larger title */ color: var(--text-primary); margin-bottom: 15px; } .woocommerce div.product p.price, .woocommerce div.product span.price { color: var(--secondary-color); font-weight: 700; /* Bold price */ font-size: 1.8rem; /* Larger price */ margin-bottom: 20px; } .woocommerce div.product p.price ins, .woocommerce div.product span.price ins { /* Sale price */ color: var(--secondary-color); text-decoration: none; } .woocommerce div.product p.price del, .woocommerce div.product span.price del { /* Regular price */ opacity: 0.6; color: var(--text-secondary); font-size: 1.2rem; /* Smaller original price */ } .woocommerce div.product .woocommerce-product-rating { margin-bottom: 20px; } .woocommerce div.product .woocommerce-product-details__short-description { color: var(--text-secondary); margin-bottom: 25px; font-size: 1.05rem; line-height: 1.7; } /* Add to cart form on single product */ .woocommerce div.product form.cart { margin-bottom: 30px; /* display: flex; Align quantity and button */ /* flex-wrap: wrap; */ /* gap: 15px; */ } .woocommerce div.product form.cart .quantity { margin-right: 15px; /* Space next to button */ } .woocommerce div.product form.cart .qty { /* Quantity input */ padding: 10px; border-radius: var(--border-radius-sm); border: 1px solid var(--border-color); width: 70px; /* Fixed width */ text-align: center; } .woocommerce div.product form.cart .button { /* Use general button styles */ padding: 14px 35px; /* Larger button */ font-size: 1rem; } /* Product Tabs */ .woocommerce-tabs ul.tabs { margin: 0 0 30px 0; padding: 0; border-bottom: 2px solid var(--border-color); display: flex; gap: 5px; /* Space between tabs */ } .woocommerce-tabs ul.tabs::before { display: none; /* Remove default border */ } .woocommerce-tabs ul.tabs li { border: none; background-color: transparent; padding: 0; margin: 0; border-radius: var(--border-radius-sm) var(--border-radius-sm) 0 0; /* Top radius */ position: relative; /* For active indicator */ bottom: -2px; /* Align with bottom border */ } .woocommerce-tabs ul.tabs li::before, .woocommerce-tabs ul.tabs li::after { display: none; /* Remove default borders */ } .woocommerce-tabs ul.tabs li a { font-family: var(--font-primary); font-weight: 600; padding: 15px 25px; display: block; color: var(--text-secondary); transition: var(--transition); border: 2px solid transparent; /* Placeholder for border */ border-bottom: none; /* No bottom border */ border-radius: var(--border-radius-sm) var(--border-radius-sm) 0 0; } .woocommerce-tabs ul.tabs li.active a { color: var(--secondary-color); /* Gold active tab text */ border-color: var(--border-color); /* Match bottom border */ border-bottom-color: var(--bg-white); /* Blend with content area */ background-color: var(--bg-white); /* Match content bg */ } .woocommerce-tabs ul.tabs li a:hover { color: var(--secondary-color); } .woocommerce-tabs .panel { padding: 30px; background-color: var(--bg-white); /* White background for tab content */ border: 2px solid var(--border-color); border-top: none; /* No top border */ border-radius: 0 0 var(--border-radius-sm) var(--border-radius-sm); /* Bottom radius */ box-shadow: var(--box-shadow); margin: 0 0 30px 0; } /* Cart & Checkout */ .woocommerce table.shop_table { border-radius: var(--border-radius-lg); overflow: hidden; /* Contain radius */ border: 1px solid var(--border-color); } .woocommerce table.shop_table th { background-color: var(--bg-color); /* Light bg for header */ color: var(--text-primary); font-weight: 600; padding: 15px; border-bottom: 2px solid var(--border-color); } .woocommerce table.shop_table td { padding: 15px; border-top: 1px solid var(--border-color); vertical-align: middle; } .woocommerce-cart table.cart td.actions .coupon .input-text { padding: 12px 15px; border-radius: var(--border-radius-sm); border: 1px solid var(--border-color); min-width: 180px; } .woocommerce-cart table.cart td.actions .coupon .button { margin-left: 10px; /* Space next to coupon input */ } .woocommerce .cart-collaterals .cart_totals, .woocommerce-checkout #order_review { background-color: var(--bg-white); padding: 30px; border-radius: var(--border-radius-lg); border: 1px solid var(--border-color); box-shadow: var(--box-shadow); } .woocommerce .cart-collaterals .cart_totals h2, .woocommerce-checkout #order_review h3 { font-family: var(--font-secondary); font-size: 1.5rem; margin-bottom: 20px; border-bottom: 1px solid var(--border-color); padding-bottom: 10px; } .woocommerce .cart-collaterals .cart_totals table th, .woocommerce-checkout #order_review table th { text-align: left; font-weight: 500; color: var(--text-secondary); } .woocommerce .cart-collaterals .cart_totals table td, .woocommerce-checkout #order_review table td { text-align: right; font-weight: 600; color: var(--text-primary); } .woocommerce .cart-collaterals .cart_totals .order-total th, .woocommerce-checkout #order_review .order-total th, .woocommerce .cart-collaterals .cart_totals .order-total td, .woocommerce-checkout #order_review .order-total td { font-size: 1.2rem; color: var(--secondary-color); /* Gold total */ font-weight: 700; border-top: 2px solid var(--border-color); padding-top: 15px; } /* Forms (Checkout, My Account) */ .woocommerce form .form-row label { font-weight: 500; color: var(--text-primary); } .woocommerce form .form-row input.input-text, .woocommerce form .form-row textarea { padding: 12px 15px; border-radius: var(--border-radius-sm); border: 1px solid var(--border-color); background-color: var(--bg-white); transition: border-color 0.3s ease, box-shadow 0.3s ease; } .woocommerce form .form-row input.input-text:focus, .woocommerce form .form-row textarea:focus { outline: none; border-color: var(--input-border-color); box-shadow: 0 0 8px rgba(193, 154, 107, 0.3); } .woocommerce form .form-row ::placeholder { color: var(--placeholder-color); opacity: 1; } /* Notices (Success, Error, Info) */ .woocommerce-message, .woocommerce-info, .woocommerce-error { border-top-color: var(--secondary-color) !important; /* Gold top border */ background-color: var(--bg-white); border-radius: var(--border-radius-sm); padding: 1.5em 2em 1.5em 3.5em !important; box-shadow: var(--box-shadow); } .woocommerce-message::before, .woocommerce-info::before, .woocommerce-error::before { color: var(--secondary-color) !important; /* Gold icon */ top: 1.5em !important; left: 1.5em !important; } .woocommerce-error { border-top-color: #e2401c !important; /* Keep error color distinct */ } .woocommerce-error::before { color: #e2401c !important; } /* ============================== 22. RESPONSIVE STYLES (Example Breakpoints) ============================== */ /* Tablet */ @media (max-width: 991px) { h1 { font-size: 2.5rem; } h2 { font-size: 2rem; } h3 { font-size: 1.6rem; } section { padding: 60px 0; } .hero-content { margin-left: 5%; } .hero-headline { font-size: clamp(2rem, 7vw, 3.5rem); } .hero-tagline { font-size: clamp(1rem, 3vw, 1.3rem); } .footer-widgets-area { /* Adjust grid for fewer columns if using grid */ /* grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); */ } .site-footer { padding-top: 60px; } } /* Mobile Large */ @media (max-width: 767px) { html { font-size: 15px; } /* Slightly smaller base */ .container { padding: 0 15px; } section { padding: 50px 0; } /* Stack header items if needed */ .site-header { padding: 15px 0; } .site-header.sticky { padding: 10px 0; } /* Hide custom button in header on mobile? */ /* .header-button { display: none; } */ .hero-section { min-height: 500px; } .hero-content { margin-left: 0; max-width: 90%; text-align: center; } .section-title { margin-bottom: 40px; } .section-title h2 { font-size: 1.8rem; } .newsletter-form { flex-direction: column; gap: 10px; padding: 20px; } .newsletter-input { margin-right: 0; width: 100%; } .newsletter-submit { margin-left: 0; width: 100%; } .footer-widgets-area { /* Stack widgets */ /* grid-template-columns: 1fr; */ } .footer-widget { text-align: center; } .footer-widget-title { display: block; } /* Ensure title takes width */ .footer-widget-title::after { margin: 15px auto 0; } /* Center underline */ .footer-social { justify-content: center; } .footer-bottom { font-size: 0.85rem; } .woocommerce ul.products li.product { /* Adjust product column count via WC settings or theme options */ } .woocommerce div.product .product_title { font-size: 2rem; } .woocommerce div.product p.price { font-size: 1.5rem; } /* Hide custom cursor on touch devices */ .cursor { display: none; } body.custom-cursor-enabled { cursor: auto; } .custom-cursor-enabled a, .custom-cursor-enabled button, .custom-cursor-enabled input[type="submit"] { cursor: pointer; } } /* Mobile Small */ @media (max-width: 480px) { h1 { font-size: 2rem; } h2 { font-size: 1.7rem; } h3 { font-size: 1.4rem; } .btn { padding: 10px 20px; font-size: 0.9rem; } .hero-cta .btn { padding: 12px 25px; font-size: 1rem; } .popup-container { padding: 30px; } .popup-title { font-size: 1.6rem; } .woocommerce-tabs ul.tabs { flex-wrap: wrap; } /* Allow tabs to wrap */ .woocommerce-tabs ul.tabs li a { padding: 12px 18px; } } /* ============================== 23. ANIMATION KEYFRAMES (If not already defined) ============================== */ /* Keyframes for popup bounce (already defined in your original code) */ @keyframes popupBounce { 0% { transform: translate(-50%, 70%) scale(0.8); opacity: 0; } 50% { transform: translate(-50%, 40%) scale(1.05); opacity: 1; } 100% { transform: translate(-50%, 50%) scale(1); opacity: 1; } } /* Placeholder for other keyframes if needed */ /* ============================== 24. UTILITIES / MISC ============================== */ /* Preloader Styles (Placeholder - Requires HTML/JS) */ /* .preloader { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: var(--primary-color); z-index: 10001; display: flex; justify-content: center; align-items: center; opacity: 1; visibility: visible; transition: opacity 0.5s ease, visibility 0s 0.5s; } .preloader.hidden { opacity: 0; visibility: hidden; } .preloader .spinner { width: 50px; height: 50px; border: 4px solid rgba(255, 255, 255, 0.2); border-top-color: var(--secondary-color); border-radius: 50%; animation: spin 1s linear infinite; } @keyframes spin { to { transform: rotate(360deg); } } */ /* Subtle Background Animation (Example - Apply to a specific section) */ /* .animated-background { background: linear-gradient(-45deg, var(--bg-color), var(--secondary-color), var(--bg-color), var(--primary-color)); background-size: 400% 400%; animation: gradientShift 15s ease infinite; } @keyframes gradientShift { 0% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } 100% { background-position: 0% 50%; } } */ /* Dropdown Menu Animation (Often handled by parent theme/JS - Overriding can be complex) */ /* Example basic fade - may conflict with Astra's implementation */ /* .main-header-menu .sub-menu { opacity: 0; visibility: hidden; transform: translateY(10px); transition: opacity 0.3s ease, visibility 0s 0.3s, transform 0.3s ease; } .main-header-menu .menu-item:hover > .sub-menu { opacity: 1; visibility: visible; transform: translateY(0); transition-delay: 0s; } */